Description:
jquery, bootstrap ok
Commit status:
[Not Reviewed]
References:
Comments:
0 Commit comments 0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
Add another comment

r865:8fe37a31b728 - - 139 files changed: 96 inserted, 31940 deleted

@@ -0,0 +1,9
1 + import { Application } from "@hotwired/stimulus"
2 +
3 + const application = Application.start()
4 +
5 + // Configure Stimulus development experience
6 + application.debug = false
7 + window.Stimulus = application
8 +
9 + export { application }
@@ -0,0 +1,7
1 + import { Controller } from "@hotwired/stimulus"
2 +
3 + export default class extends Controller {
4 + connect() {
5 + this.element.textContent = "Hello World!"
6 + }
7 + }
@@ -0,0 +1,11
1 + // Import and register all your controllers from the importmap under controllers/*
2 +
3 + import { application } from "controllers/application"
4 +
5 + // Eager load all controllers defined in the import map under controllers/**/*_controller
6 + import { eagerLoadControllersFrom } from "@hotwired/stimulus-loading"
7 + eagerLoadControllersFrom("controllers", application)
8 +
9 + // Lazy load controllers as they appear in the DOM (remember not to preload controllers in import map!)
10 + // import { lazyLoadControllersFrom } from "@hotwired/stimulus-loading"
11 + // lazyLoadControllersFrom("controllers", application)
@@ -0,0 +1,11
1 + //we need jquery to load first, this is enforced by
2 + // doing
3 + // <%= javascript_import_module_tag('prepen_jquery') %>
4 + // before
5 + // <%= javascript_importmap_tags %>
6 + // (which loads application.js
7 +
8 + import jQuery from "jquery"
9 + window.$ = window.jQuery = jQuery;
10 +
11 + console.log('i am prepend_jquery');
@@ -0,0 +1,7
1 + /*!
2 + * Bootstrap v5.2.1 (https://getbootstrap.com/)
3 + * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
4 + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5 + */
6 + !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap=e()}(this,(function(){"use strict";const t="transitionend",e=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let i=t.getAttribute("href");if(!i||!i.includes("#")&&!i.startsWith("."))return null;i.includes("#")&&!i.startsWith("#")&&(i=`#${i.split("#")[1]}`),e=i&&"#"!==i?i.trim():null}return e},i=t=>{const i=e(t);return i&&document.querySelector(i)?i:null},n=t=>{const i=e(t);return i?document.querySelector(i):null},s=e=>{e.dispatchEvent(new Event(t))},o=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),r=t=>o(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(t):null,a=t=>{if(!o(t)||0===t.getClientRects().length)return!1;const e="visible"===getComputedStyle(t).getPropertyValue("visibility"),i=t.closest("details:not([open])");if(!i)return e;if(i!==t){const e=t.closest("summary");if(e&&e.parentNode!==i)return!1;if(null===e)return!1}return e},l=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")),c=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?c(t.parentNode):null},h=()=>{},d=t=>{t.offsetHeight},u=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,f=[],p=()=>"rtl"===document.documentElement.dir,g=t=>{var e;e=()=>{const e=u();if(e){const i=t.NAME,n=e.fn[i];e.fn[i]=t.jQueryInterface,e.fn[i].Constructor=t,e.fn[i].noConflict=()=>(e.fn[i]=n,t.jQueryInterface)}},"loading"===document.readyState?(f.length||document.addEventListener("DOMContentLoaded",(()=>{for(const t of f)t()})),f.push(e)):e()},m=t=>{"function"==typeof t&&t()},_=(e,i,n=!0)=>{if(!n)return void m(e);const o=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:i}=window.getComputedStyle(t);const n=Number.parseFloat(e),s=Number.parseFloat(i);return n||s?(e=e.split(",")[0],i=i.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(i))):0})(i)+5;let r=!1;const a=({target:n})=>{n===i&&(r=!0,i.removeEventListener(t,a),m(e))};i.addEventListener(t,a),setTimeout((()=>{r||s(i)}),o)},b=(t,e,i,n)=>{const s=t.length;let o=t.indexOf(e);return-1===o?!i&&n?t[s-1]:t[0]:(o+=i?1:-1,n&&(o=(o+s)%s),t[Math.max(0,Math.min(o,s-1))])},v=/[^.]*(?=\..*)\.|.*/,y=/\..*/,w=/::\d+$/,A={};let E=1;const T={mouseenter:"mouseover",mouseleave:"mouseout"},C=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function O(t,e){return e&&`${e}::${E++}`||t.uidEvent||E++}function x(t){const e=O(t);return t.uidEvent=e,A[e]=A[e]||{},A[e]}function k(t,e,i=null){return Object.values(t).find((t=>t.callable===e&&t.delegationSelector===i))}function L(t,e,i){const n="string"==typeof e,s=n?i:e||i;let o=N(t);return C.has(o)||(o=t),[n,s,o]}function D(t,e,i,n,s){if("string"!=typeof e||!t)return;let[o,r,a]=L(e,i,n);if(e in T){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};r=t(r)}const l=x(t),c=l[a]||(l[a]={}),h=k(c,r,o?i:null);if(h)return void(h.oneOff=h.oneOff&&s);const d=O(r,e.replace(v,"")),u=o?function(t,e,i){return function n(s){const o=t.querySelectorAll(e);for(let{target:r}=s;r&&r!==this;r=r.parentNode)for(const a of o)if(a===r)return j(s,{delegateTarget:r}),n.oneOff&&P.off(t,s.type,e,i),i.apply(r,[s])}}(t,i,r):function(t,e){return function i(n){return j(n,{delegateTarget:t}),i.oneOff&&P.off(t,n.type,e),e.apply(t,[n])}}(t,r);u.delegationSelector=o?i:null,u.callable=r,u.oneOff=s,u.uidEvent=d,c[d]=u,t.addEventListener(a,u,o)}function S(t,e,i,n,s){const o=k(e[i],n,s);o&&(t.removeEventListener(i,o,Boolean(s)),delete e[i][o.uidEvent])}function I(t,e,i,n){const s=e[i]||{};for(const o of Object.keys(s))if(o.includes(n)){const n=s[o];S(t,e,i,n.callable,n.delegationSelector)}}function N(t){return t=t.replace(y,""),T[t]||t}const P={on(t,e,i,n){D(t,e,i,n,!1)},one(t,e,i,n){D(t,e,i,n,!0)},off(t,e,i,n){if("string"!=typeof e||!t)return;const[s,o,r]=L(e,i,n),a=r!==e,l=x(t),c=l[r]||{},h=e.startsWith(".");if(void 0===o){if(h)for(const i of Object.keys(l))I(t,l,i,e.slice(1));for(const i of Object.keys(c)){const n=i.replace(w,"");if(!a||e.includes(n)){const e=c[i];S(t,l,r,e.callable,e.delegationSelector)}}}else{if(!Object.keys(c).length)return;S(t,l,r,o,s?i:null)}},trigger(t,e,i){if("string"!=typeof e||!t)return null;const n=u();let s=null,o=!0,r=!0,a=!1;e!==N(e)&&n&&(s=n.Event(e,i),n(t).trigger(s),o=!s.isPropagationStopped(),r=!s.isImmediatePropagationStopped(),a=s.isDefaultPrevented());let l=new Event(e,{bubbles:o,cancelable:!0});return l=j(l,i),a&&l.preventDefault(),r&&t.dispatchEvent(l),l.defaultPrevented&&s&&s.preventDefault(),l}};function j(t,e){for(const[i,n]of Object.entries(e||{}))try{t[i]=n}catch(e){Object.defineProperty(t,i,{configurable:!0,get:()=>n})}return t}const M=new Map,H={set(t,e,i){M.has(t)||M.set(t,new Map);const n=M.get(t);n.has(e)||0===n.size?n.set(e,i):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(n.keys())[0]}.`)},get:(t,e)=>M.has(t)&&M.get(t).get(e)||null,remove(t,e){if(!M.has(t))return;const i=M.get(t);i.delete(e),0===i.size&&M.delete(t)}};function $(t){if("true"===t)return!0;if("false"===t)return!1;if(t===Number(t).toString())return Number(t);if(""===t||"null"===t)return null;if("string"!=typeof t)return t;try{return JSON.parse(decodeURIComponent(t))}catch(e){return t}}function W(t){return t.replace(/[A-Z]/g,(t=>`-${t.toLowerCase()}`))}const B={setDataAttribute(t,e,i){t.setAttribute(`data-bs-${W(e)}`,i)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${W(e)}`)},getDataAttributes(t){if(!t)return{};const e={},i=Object.keys(t.dataset).filter((t=>t.startsWith("bs")&&!t.startsWith("bsConfig")));for(const n of i){let i=n.replace(/^bs/,"");i=i.charAt(0).toLowerCase()+i.slice(1,i.length),e[i]=$(t.dataset[n])}return e},getDataAttribute:(t,e)=>$(t.getAttribute(`data-bs-${W(e)}`))};class F{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,e){const i=o(e)?B.getDataAttribute(e,"config"):{};return{...this.constructor.Default,..."object"==typeof i?i:{},...o(e)?B.getDataAttributes(e):{},..."object"==typeof t?t:{}}}_typeCheckConfig(t,e=this.constructor.DefaultType){for(const n of Object.keys(e)){const s=e[n],r=t[n],a=o(r)?"element":null==(i=r)?`${i}`:Object.prototype.toString.call(i).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(s).test(a))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${a}" but expected type "${s}".`)}var i}}class z extends F{constructor(t,e){super(),(t=r(t))&&(this._element=t,this._config=this._getConfig(e),H.set(this._element,this.constructor.DATA_KEY,this))}dispose(){H.remove(this._element,this.constructor.DATA_KEY),P.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e,i=!0){_(t,e,i)}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return H.get(r(t),this.DATA_KEY)}static getOrCreateInstance(t,e={}){return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.2.1"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(t){return`${t}${this.EVENT_KEY}`}}const q=(t,e="hide")=>{const i=`click.dismiss${t.EVENT_KEY}`,s=t.NAME;P.on(document,i,`[data-bs-dismiss="${s}"]`,(function(i){if(["A","AREA"].includes(this.tagName)&&i.preventDefault(),l(this))return;const o=n(this)||this.closest(`.${s}`);t.getOrCreateInstance(o)[e]()}))};class R extends z{static get NAME(){return"alert"}close(){if(P.trigger(this._element,"close.bs.alert").defaultPrevented)return;this._element.classList.remove("show");const t=this._element.classList.contains("fade");this._queueCallback((()=>this._destroyElement()),this._element,t)}_destroyElement(){this._element.remove(),P.trigger(this._element,"closed.bs.alert"),this.dispose()}static jQueryInterface(t){return this.each((function(){const e=R.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}q(R,"close"),g(R);const V='[data-bs-toggle="button"]';class K extends z{static get NAME(){return"button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(t){return this.each((function(){const e=K.getOrCreateInstance(this);"toggle"===t&&e[t]()}))}}P.on(document,"click.bs.button.data-api",V,(t=>{t.preventDefault();const e=t.target.closest(V);K.getOrCreateInstance(e).toggle()})),g(K);const Q={find:(t,e=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(e,t)),findOne:(t,e=document.documentElement)=>Element.prototype.querySelector.call(e,t),children:(t,e)=>[].concat(...t.children).filter((t=>t.matches(e))),parents(t,e){const i=[];let n=t.parentNode.closest(e);for(;n;)i.push(n),n=n.parentNode.closest(e);return i},prev(t,e){let i=t.previousElementSibling;for(;i;){if(i.matches(e))return[i];i=i.previousElementSibling}return[]},next(t,e){let i=t.nextElementSibling;for(;i;){if(i.matches(e))return[i];i=i.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((t=>`${t}:not([tabindex^="-"])`)).join(",");return this.find(e,t).filter((t=>!l(t)&&a(t)))}},X={endCallback:null,leftCallback:null,rightCallback:null},Y={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"};class U extends F{constructor(t,e){super(),this._element=t,t&&U.isSupported()&&(this._config=this._getConfig(e),this._deltaX=0,this._supportPointerEvents=Boolean(window.PointerEvent),this._initEvents())}static get Default(){return X}static get DefaultType(){return Y}static get NAME(){return"swipe"}dispose(){P.off(this._element,".bs.swipe")}_start(t){this._supportPointerEvents?this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX):this._deltaX=t.touches[0].clientX}_end(t){this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX-this._deltaX),this._handleSwipe(),m(this._config.endCallback)}_move(t){this._deltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this._deltaX}_handleSwipe(){const t=Math.abs(this._deltaX);if(t<=40)return;const e=t/this._deltaX;this._deltaX=0,e&&m(e>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(P.on(this._element,"pointerdown.bs.swipe",(t=>this._start(t))),P.on(this._element,"pointerup.bs.swipe",(t=>this._end(t))),this._element.classList.add("pointer-event")):(P.on(this._element,"touchstart.bs.swipe",(t=>this._start(t))),P.on(this._element,"touchmove.bs.swipe",(t=>this._move(t))),P.on(this._element,"touchend.bs.swipe",(t=>this._end(t))))}_eventIsPointerPenTouch(t){return this._supportPointerEvents&&("pen"===t.pointerType||"touch"===t.pointerType)}static isSupported(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}const G="next",J="prev",Z="left",tt="right",et="slid.bs.carousel",it="carousel",nt="active",st={ArrowLeft:tt,ArrowRight:Z},ot={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},rt={interval:"(number|boolean)",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"};class at extends z{constructor(t,e){super(t,e),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=Q.findOne(".carousel-indicators",this._element),this._addEventListeners(),this._config.ride===it&&this.cycle()}static get Default(){return ot}static get DefaultType(){return rt}static get NAME(){return"carousel"}next(){this._slide(G)}nextWhenVisible(){!document.hidden&&a(this._element)&&this.next()}prev(){this._slide(J)}pause(){this._isSliding&&s(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval((()=>this.nextWhenVisible()),this._config.interval)}_maybeEnableCycle(){this._config.ride&&(this._isSliding?P.one(this._element,et,(()=>this.cycle())):this.cycle())}to(t){const e=this._getItems();if(t>e.length-1||t<0)return;if(this._isSliding)return void P.one(this._element,et,(()=>this.to(t)));const i=this._getItemIndex(this._getActive());if(i===t)return;const n=t>i?G:J;this._slide(n,e[t])}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_configAfterMerge(t){return t.defaultInterval=t.interval,t}_addEventListeners(){this._config.keyboard&&P.on(this._element,"keydown.bs.carousel",(t=>this._keydown(t))),"hover"===this._config.pause&&(P.on(this._element,"mouseenter.bs.carousel",(()=>this.pause())),P.on(this._element,"mouseleave.bs.carousel",(()=>this._maybeEnableCycle()))),this._config.touch&&U.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const t of Q.find(".carousel-item img",this._element))P.on(t,"dragstart.bs.carousel",(t=>t.preventDefault()));const t={leftCallback:()=>this._slide(this._directionToOrder(Z)),rightCallback:()=>this._slide(this._directionToOrder(tt)),endCallback:()=>{"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout((()=>this._maybeEnableCycle()),500+this._config.interval))}};this._swipeHelper=new U(this._element,t)}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const e=st[t.key];e&&(t.preventDefault(),this._slide(this._directionToOrder(e)))}_getItemIndex(t){return this._getItems().indexOf(t)}_setActiveIndicatorElement(t){if(!this._indicatorsElement)return;const e=Q.findOne(".active",this._indicatorsElement);e.classList.remove(nt),e.removeAttribute("aria-current");const i=Q.findOne(`[data-bs-slide-to="${t}"]`,this._indicatorsElement);i&&(i.classList.add(nt),i.setAttribute("aria-current","true"))}_updateInterval(){const t=this._activeElement||this._getActive();if(!t)return;const e=Number.parseInt(t.getAttribute("data-bs-interval"),10);this._config.interval=e||this._config.defaultInterval}_slide(t,e=null){if(this._isSliding)return;const i=this._getActive(),n=t===G,s=e||b(this._getItems(),i,n,this._config.wrap);if(s===i)return;const o=this._getItemIndex(s),r=e=>P.trigger(this._element,e,{relatedTarget:s,direction:this._orderToDirection(t),from:this._getItemIndex(i),to:o});if(r("slide.bs.carousel").defaultPrevented)return;if(!i||!s)return;const a=Boolean(this._interval);this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(o),this._activeElement=s;const l=n?"carousel-item-start":"carousel-item-end",c=n?"carousel-item-next":"carousel-item-prev";s.classList.add(c),d(s),i.classList.add(l),s.classList.add(l),this._queueCallback((()=>{s.classList.remove(l,c),s.classList.add(nt),i.classList.remove(nt,c,l),this._isSliding=!1,r(et)}),i,this._isAnimated()),a&&this.cycle()}_isAnimated(){return this._element.classList.contains("slide")}_getActive(){return Q.findOne(".active.carousel-item",this._element)}_getItems(){return Q.find(".carousel-item",this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(t){return p()?t===Z?J:G:t===Z?G:J}_orderToDirection(t){return p()?t===J?Z:tt:t===J?tt:Z}static jQueryInterface(t){return this.each((function(){const e=at.getOrCreateInstance(this,t);if("number"!=typeof t){if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}else e.to(t)}))}}P.on(document,"click.bs.carousel.data-api","[data-bs-slide], [data-bs-slide-to]",(function(t){const e=n(this);if(!e||!e.classList.contains(it))return;t.preventDefault();const i=at.getOrCreateInstance(e),s=this.getAttribute("data-bs-slide-to");return s?(i.to(s),void i._maybeEnableCycle()):"next"===B.getDataAttribute(this,"slide")?(i.next(),void i._maybeEnableCycle()):(i.prev(),void i._maybeEnableCycle())})),P.on(window,"load.bs.carousel.data-api",(()=>{const t=Q.find('[data-bs-ride="carousel"]');for(const e of t)at.getOrCreateInstance(e)})),g(at);const lt="show",ct="collapse",ht="collapsing",dt='[data-bs-toggle="collapse"]',ut={parent:null,toggle:!0},ft={parent:"(null|element)",toggle:"boolean"};class pt extends z{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const n=Q.find(dt);for(const t of n){const e=i(t),n=Q.find(e).filter((t=>t===this._element));null!==e&&n.length&&this._triggerArray.push(t)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return ut}static get DefaultType(){return ft}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((t=>t!==this._element)).map((t=>pt.getOrCreateInstance(t,{toggle:!1})))),t.length&&t[0]._isTransitioning)return;if(P.trigger(this._element,"show.bs.collapse").defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove(ct),this._element.classList.add(ht),this._element.style[e]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const i=`scroll${e[0].toUpperCase()+e.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(ht),this._element.classList.add(ct,lt),this._element.style[e]="",P.trigger(this._element,"shown.bs.collapse")}),this._element,!0),this._element.style[e]=`${this._element[i]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(P.trigger(this._element,"hide.bs.collapse").defaultPrevented)return;const t=this._getDimension();this._element.style[t]=`${this._element.getBoundingClientRect()[t]}px`,d(this._element),this._element.classList.add(ht),this._element.classList.remove(ct,lt);for(const t of this._triggerArray){const e=n(t);e&&!this._isShown(e)&&this._addAriaAndCollapsedClass([t],!1)}this._isTransitioning=!0,this._element.style[t]="",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(ht),this._element.classList.add(ct),P.trigger(this._element,"hidden.bs.collapse")}),this._element,!0)}_isShown(t=this._element){return t.classList.contains(lt)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=r(t.parent),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(dt);for(const e of t){const t=n(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=Q.find(":scope .collapse .collapse",this._config.parent);return Q.find(t,this._config.parent).filter((t=>!e.includes(t)))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const i of t)i.classList.toggle("collapsed",!e),i.setAttribute("aria-expanded",e)}static jQueryInterface(t){const e={};return"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1),this.each((function(){const i=pt.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t]()}}))}}P.on(document,"click.bs.collapse.data-api",dt,(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();const e=i(this),n=Q.find(e);for(const t of n)pt.getOrCreateInstance(t,{toggle:!1}).toggle()})),g(pt);var gt="top",mt="bottom",_t="right",bt="left",vt="auto",yt=[gt,mt,_t,bt],wt="start",At="end",Et="clippingParents",Tt="viewport",Ct="popper",Ot="reference",xt=yt.reduce((function(t,e){return t.concat([e+"-"+wt,e+"-"+At])}),[]),kt=[].concat(yt,[vt]).reduce((function(t,e){return t.concat([e,e+"-"+wt,e+"-"+At])}),[]),Lt="beforeRead",Dt="read",St="afterRead",It="beforeMain",Nt="main",Pt="afterMain",jt="beforeWrite",Mt="write",Ht="afterWrite",$t=[Lt,Dt,St,It,Nt,Pt,jt,Mt,Ht];function Wt(t){return t?(t.nodeName||"").toLowerCase():null}function Bt(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function Ft(t){return t instanceof Bt(t).Element||t instanceof Element}function zt(t){return t instanceof Bt(t).HTMLElement||t instanceof HTMLElement}function qt(t){return"undefined"!=typeof ShadowRoot&&(t instanceof Bt(t).ShadowRoot||t instanceof ShadowRoot)}const Rt={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach((function(t){var i=e.styles[t]||{},n=e.attributes[t]||{},s=e.elements[t];zt(s)&&Wt(s)&&(Object.assign(s.style,i),Object.keys(n).forEach((function(t){var e=n[t];!1===e?s.removeAttribute(t):s.setAttribute(t,!0===e?"":e)})))}))},effect:function(t){var e=t.state,i={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,i.popper),e.styles=i,e.elements.arrow&&Object.assign(e.elements.arrow.style,i.arrow),function(){Object.keys(e.elements).forEach((function(t){var n=e.elements[t],s=e.attributes[t]||{},o=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:i[t]).reduce((function(t,e){return t[e]="",t}),{});zt(n)&&Wt(n)&&(Object.assign(n.style,o),Object.keys(s).forEach((function(t){n.removeAttribute(t)})))}))}},requires:["computeStyles"]};function Vt(t){return t.split("-")[0]}var Kt=Math.max,Qt=Math.min,Xt=Math.round;function Yt(){var t=navigator.userAgentData;return null!=t&&t.brands?t.brands.map((function(t){return t.brand+"/"+t.version})).join(" "):navigator.userAgent}function Ut(){return!/^((?!chrome|android).)*safari/i.test(Yt())}function Gt(t,e,i){void 0===e&&(e=!1),void 0===i&&(i=!1);var n=t.getBoundingClientRect(),s=1,o=1;e&&zt(t)&&(s=t.offsetWidth>0&&Xt(n.width)/t.offsetWidth||1,o=t.offsetHeight>0&&Xt(n.height)/t.offsetHeight||1);var r=(Ft(t)?Bt(t):window).visualViewport,a=!Ut()&&i,l=(n.left+(a&&r?r.offsetLeft:0))/s,c=(n.top+(a&&r?r.offsetTop:0))/o,h=n.width/s,d=n.height/o;return{width:h,height:d,top:c,right:l+h,bottom:c+d,left:l,x:l,y:c}}function Jt(t){var e=Gt(t),i=t.offsetWidth,n=t.offsetHeight;return Math.abs(e.width-i)<=1&&(i=e.width),Math.abs(e.height-n)<=1&&(n=e.height),{x:t.offsetLeft,y:t.offsetTop,width:i,height:n}}function Zt(t,e){var i=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(i&&qt(i)){var n=e;do{if(n&&t.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function te(t){return Bt(t).getComputedStyle(t)}function ee(t){return["table","td","th"].indexOf(Wt(t))>=0}function ie(t){return((Ft(t)?t.ownerDocument:t.document)||window.document).documentElement}function ne(t){return"html"===Wt(t)?t:t.assignedSlot||t.parentNode||(qt(t)?t.host:null)||ie(t)}function se(t){return zt(t)&&"fixed"!==te(t).position?t.offsetParent:null}function oe(t){for(var e=Bt(t),i=se(t);i&&ee(i)&&"static"===te(i).position;)i=se(i);return i&&("html"===Wt(i)||"body"===Wt(i)&&"static"===te(i).position)?e:i||function(t){var e=/firefox/i.test(Yt());if(/Trident/i.test(Yt())&&zt(t)&&"fixed"===te(t).position)return null;var i=ne(t);for(qt(i)&&(i=i.host);zt(i)&&["html","body"].indexOf(Wt(i))<0;){var n=te(i);if("none"!==n.transform||"none"!==n.perspective||"paint"===n.contain||-1!==["transform","perspective"].indexOf(n.willChange)||e&&"filter"===n.willChange||e&&n.filter&&"none"!==n.filter)return i;i=i.parentNode}return null}(t)||e}function re(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function ae(t,e,i){return Kt(t,Qt(e,i))}function le(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function ce(t,e){return e.reduce((function(e,i){return e[i]=t,e}),{})}const he={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,i=t.state,n=t.name,s=t.options,o=i.elements.arrow,r=i.modifiersData.popperOffsets,a=Vt(i.placement),l=re(a),c=[bt,_t].indexOf(a)>=0?"height":"width";if(o&&r){var h=function(t,e){return le("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:ce(t,yt))}(s.padding,i),d=Jt(o),u="y"===l?gt:bt,f="y"===l?mt:_t,p=i.rects.reference[c]+i.rects.reference[l]-r[l]-i.rects.popper[c],g=r[l]-i.rects.reference[l],m=oe(o),_=m?"y"===l?m.clientHeight||0:m.clientWidth||0:0,b=p/2-g/2,v=h[u],y=_-d[c]-h[f],w=_/2-d[c]/2+b,A=ae(v,w,y),E=l;i.modifiersData[n]=((e={})[E]=A,e.centerOffset=A-w,e)}},effect:function(t){var e=t.state,i=t.options.element,n=void 0===i?"[data-popper-arrow]":i;null!=n&&("string"!=typeof n||(n=e.elements.popper.querySelector(n)))&&Zt(e.elements.popper,n)&&(e.elements.arrow=n)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function de(t){return t.split("-")[1]}var ue={top:"auto",right:"auto",bottom:"auto",left:"auto"};function fe(t){var e,i=t.popper,n=t.popperRect,s=t.placement,o=t.variation,r=t.offsets,a=t.position,l=t.gpuAcceleration,c=t.adaptive,h=t.roundOffsets,d=t.isFixed,u=r.x,f=void 0===u?0:u,p=r.y,g=void 0===p?0:p,m="function"==typeof h?h({x:f,y:g}):{x:f,y:g};f=m.x,g=m.y;var _=r.hasOwnProperty("x"),b=r.hasOwnProperty("y"),v=bt,y=gt,w=window;if(c){var A=oe(i),E="clientHeight",T="clientWidth";A===Bt(i)&&"static"!==te(A=ie(i)).position&&"absolute"===a&&(E="scrollHeight",T="scrollWidth"),(s===gt||(s===bt||s===_t)&&o===At)&&(y=mt,g-=(d&&A===w&&w.visualViewport?w.visualViewport.height:A[E])-n.height,g*=l?1:-1),s!==bt&&(s!==gt&&s!==mt||o!==At)||(v=_t,f-=(d&&A===w&&w.visualViewport?w.visualViewport.width:A[T])-n.width,f*=l?1:-1)}var C,O=Object.assign({position:a},c&&ue),x=!0===h?function(t){var e=t.x,i=t.y,n=window.devicePixelRatio||1;return{x:Xt(e*n)/n||0,y:Xt(i*n)/n||0}}({x:f,y:g}):{x:f,y:g};return f=x.x,g=x.y,l?Object.assign({},O,((C={})[y]=b?"0":"",C[v]=_?"0":"",C.transform=(w.devicePixelRatio||1)<=1?"translate("+f+"px, "+g+"px)":"translate3d("+f+"px, "+g+"px, 0)",C)):Object.assign({},O,((e={})[y]=b?g+"px":"",e[v]=_?f+"px":"",e.transform="",e))}const pe={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,i=t.options,n=i.gpuAcceleration,s=void 0===n||n,o=i.adaptive,r=void 0===o||o,a=i.roundOffsets,l=void 0===a||a,c={placement:Vt(e.placement),variation:de(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:s,isFixed:"fixed"===e.options.strategy};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,fe(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:r,roundOffsets:l})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,fe(Object.assign({},c,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}};var ge={passive:!0};const me={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,i=t.instance,n=t.options,s=n.scroll,o=void 0===s||s,r=n.resize,a=void 0===r||r,l=Bt(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return o&&c.forEach((function(t){t.addEventListener("scroll",i.update,ge)})),a&&l.addEventListener("resize",i.update,ge),function(){o&&c.forEach((function(t){t.removeEventListener("scroll",i.update,ge)})),a&&l.removeEventListener("resize",i.update,ge)}},data:{}};var _e={left:"right",right:"left",bottom:"top",top:"bottom"};function be(t){return t.replace(/left|right|bottom|top/g,(function(t){return _e[t]}))}var ve={start:"end",end:"start"};function ye(t){return t.replace(/start|end/g,(function(t){return ve[t]}))}function we(t){var e=Bt(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function Ae(t){return Gt(ie(t)).left+we(t).scrollLeft}function Ee(t){var e=te(t),i=e.overflow,n=e.overflowX,s=e.overflowY;return/auto|scroll|overlay|hidden/.test(i+s+n)}function Te(t){return["html","body","#document"].indexOf(Wt(t))>=0?t.ownerDocument.body:zt(t)&&Ee(t)?t:Te(ne(t))}function Ce(t,e){var i;void 0===e&&(e=[]);var n=Te(t),s=n===(null==(i=t.ownerDocument)?void 0:i.body),o=Bt(n),r=s?[o].concat(o.visualViewport||[],Ee(n)?n:[]):n,a=e.concat(r);return s?a:a.concat(Ce(ne(r)))}function Oe(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function xe(t,e,i){return e===Tt?Oe(function(t,e){var i=Bt(t),n=ie(t),s=i.visualViewport,o=n.clientWidth,r=n.clientHeight,a=0,l=0;if(s){o=s.width,r=s.height;var c=Ut();(c||!c&&"fixed"===e)&&(a=s.offsetLeft,l=s.offsetTop)}return{width:o,height:r,x:a+Ae(t),y:l}}(t,i)):Ft(e)?function(t,e){var i=Gt(t,!1,"fixed"===e);return i.top=i.top+t.clientTop,i.left=i.left+t.clientLeft,i.bottom=i.top+t.clientHeight,i.right=i.left+t.clientWidth,i.width=t.clientWidth,i.height=t.clientHeight,i.x=i.left,i.y=i.top,i}(e,i):Oe(function(t){var e,i=ie(t),n=we(t),s=null==(e=t.ownerDocument)?void 0:e.body,o=Kt(i.scrollWidth,i.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),r=Kt(i.scrollHeight,i.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0),a=-n.scrollLeft+Ae(t),l=-n.scrollTop;return"rtl"===te(s||i).direction&&(a+=Kt(i.clientWidth,s?s.clientWidth:0)-o),{width:o,height:r,x:a,y:l}}(ie(t)))}function ke(t){var e,i=t.reference,n=t.element,s=t.placement,o=s?Vt(s):null,r=s?de(s):null,a=i.x+i.width/2-n.width/2,l=i.y+i.height/2-n.height/2;switch(o){case gt:e={x:a,y:i.y-n.height};break;case mt:e={x:a,y:i.y+i.height};break;case _t:e={x:i.x+i.width,y:l};break;case bt:e={x:i.x-n.width,y:l};break;default:e={x:i.x,y:i.y}}var c=o?re(o):null;if(null!=c){var h="y"===c?"height":"width";switch(r){case wt:e[c]=e[c]-(i[h]/2-n[h]/2);break;case At:e[c]=e[c]+(i[h]/2-n[h]/2)}}return e}function Le(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=void 0===n?t.placement:n,o=i.strategy,r=void 0===o?t.strategy:o,a=i.boundary,l=void 0===a?Et:a,c=i.rootBoundary,h=void 0===c?Tt:c,d=i.elementContext,u=void 0===d?Ct:d,f=i.altBoundary,p=void 0!==f&&f,g=i.padding,m=void 0===g?0:g,_=le("number"!=typeof m?m:ce(m,yt)),b=u===Ct?Ot:Ct,v=t.rects.popper,y=t.elements[p?b:u],w=function(t,e,i,n){var s="clippingParents"===e?function(t){var e=Ce(ne(t)),i=["absolute","fixed"].indexOf(te(t).position)>=0&&zt(t)?oe(t):t;return Ft(i)?e.filter((function(t){return Ft(t)&&Zt(t,i)&&"body"!==Wt(t)})):[]}(t):[].concat(e),o=[].concat(s,[i]),r=o[0],a=o.reduce((function(e,i){var s=xe(t,i,n);return e.top=Kt(s.top,e.top),e.right=Qt(s.right,e.right),e.bottom=Qt(s.bottom,e.bottom),e.left=Kt(s.left,e.left),e}),xe(t,r,n));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}(Ft(y)?y:y.contextElement||ie(t.elements.popper),l,h,r),A=Gt(t.elements.reference),E=ke({reference:A,element:v,strategy:"absolute",placement:s}),T=Oe(Object.assign({},v,E)),C=u===Ct?T:A,O={top:w.top-C.top+_.top,bottom:C.bottom-w.bottom+_.bottom,left:w.left-C.left+_.left,right:C.right-w.right+_.right},x=t.modifiersData.offset;if(u===Ct&&x){var k=x[s];Object.keys(O).forEach((function(t){var e=[_t,mt].indexOf(t)>=0?1:-1,i=[gt,mt].indexOf(t)>=0?"y":"x";O[t]+=k[i]*e}))}return O}function De(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=i.boundary,o=i.rootBoundary,r=i.padding,a=i.flipVariations,l=i.allowedAutoPlacements,c=void 0===l?kt:l,h=de(n),d=h?a?xt:xt.filter((function(t){return de(t)===h})):yt,u=d.filter((function(t){return c.indexOf(t)>=0}));0===u.length&&(u=d);var f=u.reduce((function(e,i){return e[i]=Le(t,{placement:i,boundary:s,rootBoundary:o,padding:r})[Vt(i)],e}),{});return Object.keys(f).sort((function(t,e){return f[t]-f[e]}))}const Se={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name;if(!e.modifiersData[n]._skip){for(var s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0===r||r,l=i.fallbackPlacements,c=i.padding,h=i.boundary,d=i.rootBoundary,u=i.altBoundary,f=i.flipVariations,p=void 0===f||f,g=i.allowedAutoPlacements,m=e.options.placement,_=Vt(m),b=l||(_!==m&&p?function(t){if(Vt(t)===vt)return[];var e=be(t);return[ye(t),e,ye(e)]}(m):[be(m)]),v=[m].concat(b).reduce((function(t,i){return t.concat(Vt(i)===vt?De(e,{placement:i,boundary:h,rootBoundary:d,padding:c,flipVariations:p,allowedAutoPlacements:g}):i)}),[]),y=e.rects.reference,w=e.rects.popper,A=new Map,E=!0,T=v[0],C=0;C<v.length;C++){var O=v[C],x=Vt(O),k=de(O)===wt,L=[gt,mt].indexOf(x)>=0,D=L?"width":"height",S=Le(e,{placement:O,boundary:h,rootBoundary:d,altBoundary:u,padding:c}),I=L?k?_t:bt:k?mt:gt;y[D]>w[D]&&(I=be(I));var N=be(I),P=[];if(o&&P.push(S[x]<=0),a&&P.push(S[I]<=0,S[N]<=0),P.every((function(t){return t}))){T=O,E=!1;break}A.set(O,P)}if(E)for(var j=function(t){var e=v.find((function(e){var i=A.get(e);if(i)return i.slice(0,t).every((function(t){return t}))}));if(e)return T=e,"break"},M=p?3:1;M>0&&"break"!==j(M);M--);e.placement!==T&&(e.modifiersData[n]._skip=!0,e.placement=T,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function Ie(t,e,i){return void 0===i&&(i={x:0,y:0}),{top:t.top-e.height-i.y,right:t.right-e.width+i.x,bottom:t.bottom-e.height+i.y,left:t.left-e.width-i.x}}function Ne(t){return[gt,_t,mt,bt].some((function(e){return t[e]>=0}))}const Pe={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,i=t.name,n=e.rects.reference,s=e.rects.popper,o=e.modifiersData.preventOverflow,r=Le(e,{elementContext:"reference"}),a=Le(e,{altBoundary:!0}),l=Ie(r,n),c=Ie(a,s,o),h=Ne(l),d=Ne(c);e.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:h,hasPopperEscaped:d},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":h,"data-popper-escaped":d})}},je={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.offset,o=void 0===s?[0,0]:s,r=kt.reduce((function(t,i){return t[i]=function(t,e,i){var n=Vt(t),s=[bt,gt].indexOf(n)>=0?-1:1,o="function"==typeof i?i(Object.assign({},e,{placement:t})):i,r=o[0],a=o[1];return r=r||0,a=(a||0)*s,[bt,_t].indexOf(n)>=0?{x:a,y:r}:{x:r,y:a}}(i,e.rects,o),t}),{}),a=r[e.placement],l=a.x,c=a.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=l,e.modifiersData.popperOffsets.y+=c),e.modifiersData[n]=r}},Me={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,i=t.name;e.modifiersData[i]=ke({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})},data:{}},He={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0!==r&&r,l=i.boundary,c=i.rootBoundary,h=i.altBoundary,d=i.padding,u=i.tether,f=void 0===u||u,p=i.tetherOffset,g=void 0===p?0:p,m=Le(e,{boundary:l,rootBoundary:c,padding:d,altBoundary:h}),_=Vt(e.placement),b=de(e.placement),v=!b,y=re(_),w="x"===y?"y":"x",A=e.modifiersData.popperOffsets,E=e.rects.reference,T=e.rects.popper,C="function"==typeof g?g(Object.assign({},e.rects,{placement:e.placement})):g,O="number"==typeof C?{mainAxis:C,altAxis:C}:Object.assign({mainAxis:0,altAxis:0},C),x=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,k={x:0,y:0};if(A){if(o){var L,D="y"===y?gt:bt,S="y"===y?mt:_t,I="y"===y?"height":"width",N=A[y],P=N+m[D],j=N-m[S],M=f?-T[I]/2:0,H=b===wt?E[I]:T[I],$=b===wt?-T[I]:-E[I],W=e.elements.arrow,B=f&&W?Jt(W):{width:0,height:0},F=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},z=F[D],q=F[S],R=ae(0,E[I],B[I]),V=v?E[I]/2-M-R-z-O.mainAxis:H-R-z-O.mainAxis,K=v?-E[I]/2+M+R+q+O.mainAxis:$+R+q+O.mainAxis,Q=e.elements.arrow&&oe(e.elements.arrow),X=Q?"y"===y?Q.clientTop||0:Q.clientLeft||0:0,Y=null!=(L=null==x?void 0:x[y])?L:0,U=N+K-Y,G=ae(f?Qt(P,N+V-Y-X):P,N,f?Kt(j,U):j);A[y]=G,k[y]=G-N}if(a){var J,Z="x"===y?gt:bt,tt="x"===y?mt:_t,et=A[w],it="y"===w?"height":"width",nt=et+m[Z],st=et-m[tt],ot=-1!==[gt,bt].indexOf(_),rt=null!=(J=null==x?void 0:x[w])?J:0,at=ot?nt:et-E[it]-T[it]-rt+O.altAxis,lt=ot?et+E[it]+T[it]-rt-O.altAxis:st,ct=f&&ot?function(t,e,i){var n=ae(t,e,i);return n>i?i:n}(at,et,lt):ae(f?at:nt,et,f?lt:st);A[w]=ct,k[w]=ct-et}e.modifiersData[n]=k}},requiresIfExists:["offset"]};function $e(t,e,i){void 0===i&&(i=!1);var n,s,o=zt(e),r=zt(e)&&function(t){var e=t.getBoundingClientRect(),i=Xt(e.width)/t.offsetWidth||1,n=Xt(e.height)/t.offsetHeight||1;return 1!==i||1!==n}(e),a=ie(e),l=Gt(t,r,i),c={scrollLeft:0,scrollTop:0},h={x:0,y:0};return(o||!o&&!i)&&(("body"!==Wt(e)||Ee(a))&&(c=(n=e)!==Bt(n)&&zt(n)?{scrollLeft:(s=n).scrollLeft,scrollTop:s.scrollTop}:we(n)),zt(e)?((h=Gt(e,!0)).x+=e.clientLeft,h.y+=e.clientTop):a&&(h.x=Ae(a))),{x:l.left+c.scrollLeft-h.x,y:l.top+c.scrollTop-h.y,width:l.width,height:l.height}}function We(t){var e=new Map,i=new Set,n=[];function s(t){i.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach((function(t){if(!i.has(t)){var n=e.get(t);n&&s(n)}})),n.push(t)}return t.forEach((function(t){e.set(t.name,t)})),t.forEach((function(t){i.has(t.name)||s(t)})),n}var Be={placement:"bottom",modifiers:[],strategy:"absolute"};function Fe(){for(var t=arguments.length,e=new Array(t),i=0;i<t;i++)e[i]=arguments[i];return!e.some((function(t){return!(t&&"function"==typeof t.getBoundingClientRect)}))}function ze(t){void 0===t&&(t={});var e=t,i=e.defaultModifiers,n=void 0===i?[]:i,s=e.defaultOptions,o=void 0===s?Be:s;return function(t,e,i){void 0===i&&(i=o);var s,r,a={placement:"bottom",orderedModifiers:[],options:Object.assign({},Be,o),modifiersData:{},elements:{reference:t,popper:e},attributes:{},styles:{}},l=[],c=!1,h={state:a,setOptions:function(i){var s="function"==typeof i?i(a.options):i;d(),a.options=Object.assign({},o,a.options,s),a.scrollParents={reference:Ft(t)?Ce(t):t.contextElement?Ce(t.contextElement):[],popper:Ce(e)};var r,c,u=function(t){var e=We(t);return $t.reduce((function(t,i){return t.concat(e.filter((function(t){return t.phase===i})))}),[])}((r=[].concat(n,a.options.modifiers),c=r.reduce((function(t,e){var i=t[e.name];return t[e.name]=i?Object.assign({},i,e,{options:Object.assign({},i.options,e.options),data:Object.assign({},i.data,e.data)}):e,t}),{}),Object.keys(c).map((function(t){return c[t]}))));return a.orderedModifiers=u.filter((function(t){return t.enabled})),a.orderedModifiers.forEach((function(t){var e=t.name,i=t.options,n=void 0===i?{}:i,s=t.effect;if("function"==typeof s){var o=s({state:a,name:e,instance:h,options:n});l.push(o||function(){})}})),h.update()},forceUpdate:function(){if(!c){var t=a.elements,e=t.reference,i=t.popper;if(Fe(e,i)){a.rects={reference:$e(e,oe(i),"fixed"===a.options.strategy),popper:Jt(i)},a.reset=!1,a.placement=a.options.placement,a.orderedModifiers.forEach((function(t){return a.modifiersData[t.name]=Object.assign({},t.data)}));for(var n=0;n<a.orderedModifiers.length;n++)if(!0!==a.reset){var s=a.orderedModifiers[n],o=s.fn,r=s.options,l=void 0===r?{}:r,d=s.name;"function"==typeof o&&(a=o({state:a,options:l,name:d,instance:h})||a)}else a.reset=!1,n=-1}}},update:(s=function(){return new Promise((function(t){h.forceUpdate(),t(a)}))},function(){return r||(r=new Promise((function(t){Promise.resolve().then((function(){r=void 0,t(s())}))}))),r}),destroy:function(){d(),c=!0}};if(!Fe(t,e))return h;function d(){l.forEach((function(t){return t()})),l=[]}return h.setOptions(i).then((function(t){!c&&i.onFirstUpdate&&i.onFirstUpdate(t)})),h}}var qe=ze(),Re=ze({defaultModifiers:[me,Me,pe,Rt]}),Ve=ze({defaultModifiers:[me,Me,pe,Rt,je,Se,He,he,Pe]});const Ke=Object.freeze(Object.defineProperty({__proto__:null,popperGenerator:ze,detectOverflow:Le,createPopperBase:qe,createPopper:Ve,createPopperLite:Re,top:gt,bottom:mt,right:_t,left:bt,auto:vt,basePlacements:yt,start:wt,end:At,clippingParents:Et,viewport:Tt,popper:Ct,reference:Ot,variationPlacements:xt,placements:kt,beforeRead:Lt,read:Dt,afterRead:St,beforeMain:It,main:Nt,afterMain:Pt,beforeWrite:jt,write:Mt,afterWrite:Ht,modifierPhases:$t,applyStyles:Rt,arrow:he,computeStyles:pe,eventListeners:me,flip:Se,hide:Pe,offset:je,popperOffsets:Me,preventOverflow:He},Symbol.toStringTag,{value:"Module"})),Qe="dropdown",Xe="ArrowUp",Ye="ArrowDown",Ue="click.bs.dropdown.data-api",Ge="keydown.bs.dropdown.data-api",Je="show",Ze='[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)',ti=`${Ze}.show`,ei=".dropdown-menu",ii=p()?"top-end":"top-start",ni=p()?"top-start":"top-end",si=p()?"bottom-end":"bottom-start",oi=p()?"bottom-start":"bottom-end",ri=p()?"left-start":"right-start",ai=p()?"right-start":"left-start",li={autoClose:!0,boundary:"clippingParents",display:"dynamic",offset:[0,2],popperConfig:null,reference:"toggle"},ci={autoClose:"(boolean|string)",boundary:"(string|element)",display:"string",offset:"(array|string|function)",popperConfig:"(null|object|function)",reference:"(string|element|object)"};class hi extends z{constructor(t,e){super(t,e),this._popper=null,this._parent=this._element.parentNode,this._menu=Q.next(this._element,ei)[0]||Q.prev(this._element,ei)[0],this._inNavbar=this._detectNavbar()}static get Default(){return li}static get DefaultType(){return ci}static get NAME(){return Qe}toggle(){return this._isShown()?this.hide():this.show()}show(){if(l(this._element)||this._isShown())return;const t={relatedTarget:this._element};if(!P.trigger(this._element,"show.bs.dropdown",t).defaultPrevented){if(this._createPopper(),"ontouchstart"in document.documentElement&&!this._parent.closest(".navbar-nav"))for(const t of[].concat(...document.body.children))P.on(t,"mouseover",h);this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.add(Je),this._element.classList.add(Je),P.trigger(this._element,"shown.bs.dropdown",t)}}hide(){if(l(this._element)||!this._isShown())return;const t={relatedTarget:this._element};this._completeHide(t)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_completeHide(t){if(!P.trigger(this._element,"hide.bs.dropdown",t).defaultPrevented){if("ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))P.off(t,"mouseover",h);this._popper&&this._popper.destroy(),this._menu.classList.remove(Je),this._element.classList.remove(Je),this._element.setAttribute("aria-expanded","false"),B.removeDataAttribute(this._menu,"popper"),P.trigger(this._element,"hidden.bs.dropdown",t)}}_getConfig(t){if("object"==typeof(t=super._getConfig(t)).reference&&!o(t.reference)&&"function"!=typeof t.reference.getBoundingClientRect)throw new TypeError(`${Qe.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return t}_createPopper(){if(void 0===Ke)throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let t=this._element;"parent"===this._config.reference?t=this._parent:o(this._config.reference)?t=r(this._config.reference):"object"==typeof this._config.reference&&(t=this._config.reference);const e=this._getPopperConfig();this._popper=Ve(t,this._menu,e)}_isShown(){return this._menu.classList.contains(Je)}_getPlacement(){const t=this._parent;if(t.classList.contains("dropend"))return ri;if(t.classList.contains("dropstart"))return ai;if(t.classList.contains("dropup-center"))return"top";if(t.classList.contains("dropdown-center"))return"bottom";const e="end"===getComputedStyle(this._menu).getPropertyValue("--bs-position").trim();return t.classList.contains("dropup")?e?ni:ii:e?oi:si}_detectNavbar(){return null!==this._element.closest(".navbar")}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return(this._inNavbar||"static"===this._config.display)&&(B.setDataAttribute(this._menu,"popper","static"),t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,..."function"==typeof this._config.popperConfig?this._config.popperConfig(t):this._config.popperConfig}}_selectMenuItem({key:t,target:e}){const i=Q.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter((t=>a(t)));i.length&&b(i,e,t===Ye,!i.includes(e)).focus()}static jQueryInterface(t){return this.each((function(){const e=hi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}static clearMenus(t){if(2===t.button||"keyup"===t.type&&"Tab"!==t.key)return;const e=Q.find(ti);for(const i of e){const e=hi.getInstance(i);if(!e||!1===e._config.autoClose)continue;const n=t.composedPath(),s=n.includes(e._menu);if(n.includes(e._element)||"inside"===e._config.autoClose&&!s||"outside"===e._config.autoClose&&s)continue;if(e._menu.contains(t.target)&&("keyup"===t.type&&"Tab"===t.key||/input|select|option|textarea|form/i.test(t.target.tagName)))continue;const o={relatedTarget:e._element};"click"===t.type&&(o.clickEvent=t),e._completeHide(o)}}static dataApiKeydownHandler(t){const e=/input|textarea/i.test(t.target.tagName),i="Escape"===t.key,n=[Xe,Ye].includes(t.key);if(!n&&!i)return;if(e&&!i)return;t.preventDefault();const s=this.matches(Ze)?this:Q.prev(this,Ze)[0]||Q.next(this,Ze)[0],o=hi.getOrCreateInstance(s);if(n)return t.stopPropagation(),o.show(),void o._selectMenuItem(t);o._isShown()&&(t.stopPropagation(),o.hide(),s.focus())}}P.on(document,Ge,Ze,hi.dataApiKeydownHandler),P.on(document,Ge,ei,hi.dataApiKeydownHandler),P.on(document,Ue,hi.clearMenus),P.on(document,"keyup.bs.dropdown.data-api",hi.clearMenus),P.on(document,Ue,Ze,(function(t){t.preventDefault(),hi.getOrCreateInstance(this).toggle()})),g(hi);const di=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",ui=".sticky-top",fi="padding-right",pi="margin-right";class gi{constructor(){this._element=document.body}getWidth(){const t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}hide(){const t=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,fi,(e=>e+t)),this._setElementAttributes(di,fi,(e=>e+t)),this._setElementAttributes(ui,pi,(e=>e-t))}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,fi),this._resetElementAttributes(di,fi),this._resetElementAttributes(ui,pi)}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,e,i){const n=this.getWidth();this._applyManipulationCallback(t,(t=>{if(t!==this._element&&window.innerWidth>t.clientWidth+n)return;this._saveInitialAttribute(t,e);const s=window.getComputedStyle(t).getPropertyValue(e);t.style.setProperty(e,`${i(Number.parseFloat(s))}px`)}))}_saveInitialAttribute(t,e){const i=t.style.getPropertyValue(e);i&&B.setDataAttribute(t,e,i)}_resetElementAttributes(t,e){this._applyManipulationCallback(t,(t=>{const i=B.getDataAttribute(t,e);null!==i?(B.removeDataAttribute(t,e),t.style.setProperty(e,i)):t.style.removeProperty(e)}))}_applyManipulationCallback(t,e){if(o(t))e(t);else for(const i of Q.find(t,this._element))e(i)}}const mi="show",_i="mousedown.bs.backdrop",bi={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},vi={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"};class yi extends F{constructor(t){super(),this._config=this._getConfig(t),this._isAppended=!1,this._element=null}static get Default(){return bi}static get DefaultType(){return vi}static get NAME(){return"backdrop"}show(t){if(!this._config.isVisible)return void m(t);this._append();const e=this._getElement();this._config.isAnimated&&d(e),e.classList.add(mi),this._emulateAnimation((()=>{m(t)}))}hide(t){this._config.isVisible?(this._getElement().classList.remove(mi),this._emulateAnimation((()=>{this.dispose(),m(t)}))):m(t)}dispose(){this._isAppended&&(P.off(this._element,_i),this._element.remove(),this._isAppended=!1)}_getElement(){if(!this._element){const t=document.createElement("div");t.className=this._config.className,this._config.isAnimated&&t.classList.add("fade"),this._element=t}return this._element}_configAfterMerge(t){return t.rootElement=r(t.rootElement),t}_append(){if(this._isAppended)return;const t=this._getElement();this._config.rootElement.append(t),P.on(t,_i,(()=>{m(this._config.clickCallback)})),this._isAppended=!0}_emulateAnimation(t){_(t,this._getElement(),this._config.isAnimated)}}const wi=".bs.focustrap",Ai="backward",Ei={autofocus:!0,trapElement:null},Ti={autofocus:"boolean",trapElement:"element"};class Ci extends F{constructor(t){super(),this._config=this._getConfig(t),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return Ei}static get DefaultType(){return Ti}static get NAME(){return"focustrap"}activate(){this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),P.off(document,wi),P.on(document,"focusin.bs.focustrap",(t=>this._handleFocusin(t))),P.on(document,"keydown.tab.bs.focustrap",(t=>this._handleKeydown(t))),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,P.off(document,wi))}_handleFocusin(t){const{trapElement:e}=this._config;if(t.target===document||t.target===e||e.contains(t.target))return;const i=Q.focusableChildren(e);0===i.length?e.focus():this._lastTabNavDirection===Ai?i[i.length-1].focus():i[0].focus()}_handleKeydown(t){"Tab"===t.key&&(this._lastTabNavDirection=t.shiftKey?Ai:"forward")}}const Oi="hidden.bs.modal",xi="show.bs.modal",ki="modal-open",Li="show",Di="modal-static",Si={backdrop:!0,focus:!0,keyboard:!0},Ii={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"};class Ni extends z{constructor(t,e){super(t,e),this._dialog=Q.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new gi,this._addEventListeners()}static get Default(){return Si}static get DefaultType(){return Ii}static get NAME(){return"modal"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||P.trigger(this._element,xi,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(ki),this._adjustDialog(),this._backdrop.show((()=>this._showElement(t))))}hide(){this._isShown&&!this._isTransitioning&&(P.trigger(this._element,"hide.bs.modal").defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(Li),this._queueCallback((()=>this._hideModal()),this._element,this._isAnimated())))}dispose(){for(const t of[window,this._dialog])P.off(t,".bs.modal");this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new yi({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new Ci({trapElement:this._element})}_showElement(t){document.body.contains(this._element)||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0;const e=Q.findOne(".modal-body",this._dialog);e&&(e.scrollTop=0),d(this._element),this._element.classList.add(Li),this._queueCallback((()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,P.trigger(this._element,"shown.bs.modal",{relatedTarget:t})}),this._dialog,this._isAnimated())}_addEventListeners(){P.on(this._element,"keydown.dismiss.bs.modal",(t=>{if("Escape"===t.key)return this._config.keyboard?(t.preventDefault(),void this.hide()):void this._triggerBackdropTransition()})),P.on(window,"resize.bs.modal",(()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()})),P.on(this._element,"mousedown.dismiss.bs.modal",(t=>{P.one(this._element,"click.dismiss.bs.modal",(e=>{this._dialog.contains(t.target)||this._dialog.contains(e.target)||("static"!==this._config.backdrop?this._config.backdrop&&this.hide():this._triggerBackdropTransition())}))}))}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide((()=>{document.body.classList.remove(ki),this._resetAdjustments(),this._scrollBar.reset(),P.trigger(this._element,Oi)}))}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(P.trigger(this._element,"hidePrevented.bs.modal").defaultPrevented)return;const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._element.style.overflowY;"hidden"===e||this._element.classList.contains(Di)||(t||(this._element.style.overflowY="hidden"),this._element.classList.add(Di),this._queueCallback((()=>{this._element.classList.remove(Di),this._queueCallback((()=>{this._element.style.overflowY=e}),this._dialog)}),this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._scrollBar.getWidth(),i=e>0;if(i&&!t){const t=p()?"paddingLeft":"paddingRight";this._element.style[t]=`${e}px`}if(!i&&t){const t=p()?"paddingRight":"paddingLeft";this._element.style[t]=`${e}px`}}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(t,e){return this.each((function(){const i=Ni.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t](e)}}))}}P.on(document,"click.bs.modal.data-api",'[data-bs-toggle="modal"]',(function(t){const e=n(this);["A","AREA"].includes(this.tagName)&&t.preventDefault(),P.one(e,xi,(t=>{t.defaultPrevented||P.one(e,Oi,(()=>{a(this)&&this.focus()}))}));const i=Q.findOne(".modal.show");i&&Ni.getInstance(i).hide(),Ni.getOrCreateInstance(e).toggle(this)})),q(Ni),g(Ni);const Pi="show",ji="showing",Mi="hiding",Hi=".offcanvas.show",$i="hidePrevented.bs.offcanvas",Wi="hidden.bs.offcanvas",Bi={backdrop:!0,keyboard:!0,scroll:!1},Fi={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class zi extends z{constructor(t,e){super(t,e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return Bi}static get DefaultType(){return Fi}static get NAME(){return"offcanvas"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||P.trigger(this._element,"show.bs.offcanvas",{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._backdrop.show(),this._config.scroll||(new gi).hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(ji),this._queueCallback((()=>{this._config.scroll&&!this._config.backdrop||this._focustrap.activate(),this._element.classList.add(Pi),this._element.classList.remove(ji),P.trigger(this._element,"shown.bs.offcanvas",{relatedTarget:t})}),this._element,!0))}hide(){this._isShown&&(P.trigger(this._element,"hide.bs.offcanvas").defaultPrevented||(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add(Mi),this._backdrop.hide(),this._queueCallback((()=>{this._element.classList.remove(Pi,Mi),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||(new gi).reset(),P.trigger(this._element,Wi)}),this._element,!0)))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){const t=Boolean(this._config.backdrop);return new yi({className:"offcanvas-backdrop",isVisible:t,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:t?()=>{"static"!==this._config.backdrop?this.hide():P.trigger(this._element,$i)}:null})}_initializeFocusTrap(){return new Ci({trapElement:this._element})}_addEventListeners(){P.on(this._element,"keydown.dismiss.bs.offcanvas",(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():P.trigger(this._element,$i))}))}static jQueryInterface(t){return this.each((function(){const e=zi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}P.on(document,"click.bs.offcanvas.data-api",'[data-bs-toggle="offcanvas"]',(function(t){const e=n(this);if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),l(this))return;P.one(e,Wi,(()=>{a(this)&&this.focus()}));const i=Q.findOne(Hi);i&&i!==e&&zi.getInstance(i).hide(),zi.getOrCreateInstance(e).toggle(this)})),P.on(window,"load.bs.offcanvas.data-api",(()=>{for(const t of Q.find(Hi))zi.getOrCreateInstance(t).show()})),P.on(window,"resize.bs.offcanvas",(()=>{for(const t of Q.find("[aria-modal][class*=show][class*=offcanvas-]"))"fixed"!==getComputedStyle(t).position&&zi.getOrCreateInstance(t).hide()})),q(zi),g(zi);const qi=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),Ri=/^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i,Vi=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i,Ki=(t,e)=>{const i=t.nodeName.toLowerCase();return e.includes(i)?!qi.has(i)||Boolean(Ri.test(t.nodeValue)||Vi.test(t.nodeValue)):e.filter((t=>t instanceof RegExp)).some((t=>t.test(i)))},Qi={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},Xi={allowList:Qi,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"<div></div>"},Yi={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},Ui={entry:"(string|element|function|null)",selector:"(string|element)"};class Gi extends F{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return Xi}static get DefaultType(){return Yi}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map((t=>this._resolvePossibleFunction(t))).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content={...this._config.content,...t},this}toHtml(){const t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(const[e,i]of Object.entries(this._config.content))this._setContent(t,i,e);const e=t.children[0],i=this._resolvePossibleFunction(this._config.extraClass);return i&&e.classList.add(...i.split(" ")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,i]of Object.entries(t))super._typeCheckConfig({selector:e,entry:i},Ui)}_setContent(t,e,i){const n=Q.findOne(i,t);n&&((e=this._resolvePossibleFunction(e))?o(e)?this._putElementInTemplate(r(e),n):this._config.html?n.innerHTML=this._maybeSanitize(e):n.textContent=e:n.remove())}_maybeSanitize(t){return this._config.sanitize?function(t,e,i){if(!t.length)return t;if(i&&"function"==typeof i)return i(t);const n=(new window.DOMParser).parseFromString(t,"text/html"),s=[].concat(...n.body.querySelectorAll("*"));for(const t of s){const i=t.nodeName.toLowerCase();if(!Object.keys(e).includes(i)){t.remove();continue}const n=[].concat(...t.attributes),s=[].concat(e["*"]||[],e[i]||[]);for(const e of n)Ki(e,s)||t.removeAttribute(e.nodeName)}return n.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return"function"==typeof t?t(this):t}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML="",void e.append(t);e.textContent=t.textContent}}const Ji=new Set(["sanitize","allowList","sanitizeFn"]),Zi="fade",tn="show",en=".modal",nn="hide.bs.modal",sn="hover",on="focus",rn={AUTO:"auto",TOP:"top",RIGHT:p()?"left":"right",BOTTOM:"bottom",LEFT:p()?"right":"left"},an={allowList:Qi,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,0],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',title:"",trigger:"hover focus"},ln={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class cn extends z{constructor(t,e){if(void 0===Ke)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t,e),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners()}static get Default(){return an}static get DefaultType(){return ln}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(t){if(this._isEnabled){if(t){const e=this._initializeOnDelegatedTarget(t);return e._activeTrigger.click=!e._activeTrigger.click,void(e._isWithActiveTrigger()?e._enter():e._leave())}this._isShown()?this._leave():this._enter()}}dispose(){clearTimeout(this._timeout),P.off(this._element.closest(en),nn,this._hideModalHandler),this.tip&&this.tip.remove(),this._config.originalTitle&&this._element.setAttribute("title",this._config.originalTitle),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const t=P.trigger(this._element,this.constructor.eventName("show")),e=(c(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!e)return;this.tip&&(this.tip.remove(),this.tip=null);const i=this._getTipElement();this._element.setAttribute("aria-describedby",i.getAttribute("id"));const{container:n}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(n.append(i),P.trigger(this._element,this.constructor.eventName("inserted"))),this._popper?this._popper.update():this._popper=this._createPopper(i),i.classList.add(tn),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))P.on(t,"mouseover",h);this._queueCallback((()=>{P.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(!this._isShown())return;if(P.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented)return;const t=this._getTipElement();if(t.classList.remove(tn),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))P.off(t,"mouseover",h);this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1,this._isHovered=null,this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||t.remove(),this._element.removeAttribute("aria-describedby"),P.trigger(this._element,this.constructor.eventName("hidden")),this._disposePopper())}),this.tip,this._isAnimated())}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){const e=this._getTemplateFactory(t).toHtml();if(!e)return null;e.classList.remove(Zi,tn),e.classList.add(`bs-${this.constructor.NAME}-auto`);const i=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME).toString();return e.setAttribute("id",i),this._isAnimated()&&e.classList.add(Zi),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new Gi({...this._config,content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{".tooltip-inner":this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._config.originalTitle}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(Zi)}_isShown(){return this.tip&&this.tip.classList.contains(tn)}_createPopper(t){const e="function"==typeof this._config.placement?this._config.placement.call(this,t,this._element):this._config.placement,i=rn[e.toUpperCase()];return Ve(this._element,t,this._getPopperConfig(i))}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_resolvePossibleFunction(t){return"function"==typeof t?t.call(this._element):t}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:t=>{this._getTipElement().setAttribute("data-popper-placement",t.state.placement)}}]};return{...e,..."function"==typeof this._config.popperConfig?this._config.popperConfig(e):this._config.popperConfig}}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if("click"===e)P.on(this._element,this.constructor.eventName("click"),this._config.selector,(t=>this.toggle(t)));else if("manual"!==e){const t=e===sn?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),i=e===sn?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");P.on(this._element,t,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusin"===t.type?on:sn]=!0,e._enter()})),P.on(this._element,i,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?on:sn]=e._element.contains(t.relatedTarget),e._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},P.on(this._element.closest(en),nn,this._hideModalHandler),this._config.selector?this._config={...this._config,trigger:"manual",selector:""}:this._fixTitle()}_fixTitle(){const t=this._config.originalTitle;t&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",t),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=>{this._isHovered&&this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=>{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(t,e){clearTimeout(this._timeout),this._timeout=setTimeout(t,e)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){const e=B.getDataAttributes(this._element);for(const t of Object.keys(e))Ji.has(t)&&delete e[t];return t={...e,..."object"==typeof t&&t?t:{}},t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=!1===t.container?document.body:r(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),t.originalTitle=this._element.getAttribute("title")||"","number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),t}_getDelegateConfig(){const t={};for(const e in this._config)this.constructor.Default[e]!==this._config[e]&&(t[e]=this._config[e]);return t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null)}static jQueryInterface(t){return this.each((function(){const e=cn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}g(cn);const hn={...cn.Default,content:"",offset:[0,8],placement:"right",template:'<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>',trigger:"click"},dn={...cn.DefaultType,content:"(null|string|element|function)"};class un extends cn{static get Default(){return hn}static get DefaultType(){return dn}static get NAME(){return"popover"}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return{".popover-header":this._getTitle(),".popover-body":this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}static jQueryInterface(t){return this.each((function(){const e=un.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}g(un);const fn="click.bs.scrollspy",pn="active",gn="[href]",mn={offset:null,rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},_n={offset:"(number|null)",rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"};class bn extends z{constructor(t,e){super(t,e),this._targetLinks=new Map,this._observableSections=new Map,this._rootElement="visible"===getComputedStyle(this._element).overflowY?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh()}static get Default(){return mn}static get DefaultType(){return _n}static get NAME(){return"scrollspy"}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(const t of this._observableSections.values())this._observer.observe(t)}dispose(){this._observer.disconnect(),super.dispose()}_configAfterMerge(t){return t.target=r(t.target)||document.body,t.rootMargin=t.offset?`${t.offset}px 0px -30%`:t.rootMargin,"string"==typeof t.threshold&&(t.threshold=t.threshold.split(",").map((t=>Number.parseFloat(t)))),t}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(P.off(this._config.target,fn),P.on(this._config.target,fn,gn,(t=>{const e=this._observableSections.get(t.target.hash);if(e){t.preventDefault();const i=this._rootElement||window,n=e.offsetTop-this._element.offsetTop;if(i.scrollTo)return void i.scrollTo({top:n,behavior:"smooth"});i.scrollTop=n}})))}_getNewObserver(){const t={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver((t=>this._observerCallback(t)),t)}_observerCallback(t){const e=t=>this._targetLinks.get(`#${t.target.id}`),i=t=>{this._previousScrollData.visibleEntryTop=t.target.offsetTop,this._process(e(t))},n=(this._rootElement||document.documentElement).scrollTop,s=n>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=n;for(const o of t){if(!o.isIntersecting){this._activeTarget=null,this._clearActiveClass(e(o));continue}const t=o.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(s&&t){if(i(o),!n)return}else s||t||i(o)}}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;const t=Q.find(gn,this._config.target);for(const e of t){if(!e.hash||l(e))continue;const t=Q.findOne(e.hash,this._element);a(t)&&(this._targetLinks.set(e.hash,e),this._observableSections.set(e.hash,t))}}_process(t){this._activeTarget!==t&&(this._clearActiveClass(this._config.target),this._activeTarget=t,t.classList.add(pn),this._activateParents(t),P.trigger(this._element,"activate.bs.scrollspy",{relatedTarget:t}))}_activateParents(t){if(t.classList.contains("dropdown-item"))Q.findOne(".dropdown-toggle",t.closest(".dropdown")).classList.add(pn);else for(const e of Q.parents(t,".nav, .list-group"))for(const t of Q.prev(e,".nav-link, .nav-item > .nav-link, .list-group-item"))t.classList.add(pn)}_clearActiveClass(t){t.classList.remove(pn);const e=Q.find("[href].active",t);for(const t of e)t.classList.remove(pn)}static jQueryInterface(t){return this.each((function(){const e=bn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}P.on(window,"load.bs.scrollspy.data-api",(()=>{for(const t of Q.find('[data-bs-spy="scroll"]'))bn.getOrCreateInstance(t)})),g(bn);const vn="ArrowLeft",yn="ArrowRight",wn="ArrowUp",An="ArrowDown",En="active",Tn="fade",Cn="show",On='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',xn=`.nav-link:not(.dropdown-toggle), .list-group-item:not(.dropdown-toggle), [role="tab"]:not(.dropdown-toggle), ${On}`;class kn extends z{constructor(t){super(t),this._parent=this._element.closest('.list-group, .nav, [role="tablist"]'),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),P.on(this._element,"keydown.bs.tab",(t=>this._keydown(t))))}static get NAME(){return"tab"}show(){const t=this._element;if(this._elemIsActive(t))return;const e=this._getActiveElem(),i=e?P.trigger(e,"hide.bs.tab",{relatedTarget:t}):null;P.trigger(t,"show.bs.tab",{relatedTarget:e}).defaultPrevented||i&&i.defaultPrevented||(this._deactivate(e,t),this._activate(t,e))}_activate(t,e){t&&(t.classList.add(En),this._activate(n(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.focus(),t.removeAttribute("tabindex"),t.setAttribute("aria-selected",!0),this._toggleDropDown(t,!0),P.trigger(t,"shown.bs.tab",{relatedTarget:e})):t.classList.add(Cn)}),t,t.classList.contains(Tn)))}_deactivate(t,e){t&&(t.classList.remove(En),t.blur(),this._deactivate(n(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.setAttribute("aria-selected",!1),t.setAttribute("tabindex","-1"),this._toggleDropDown(t,!1),P.trigger(t,"hidden.bs.tab",{relatedTarget:e})):t.classList.remove(Cn)}),t,t.classList.contains(Tn)))}_keydown(t){if(![vn,yn,wn,An].includes(t.key))return;t.stopPropagation(),t.preventDefault();const e=[yn,An].includes(t.key),i=b(this._getChildren().filter((t=>!l(t))),t.target,e,!0);i&&kn.getOrCreateInstance(i).show()}_getChildren(){return Q.find(xn,this._parent)}_getActiveElem(){return this._getChildren().find((t=>this._elemIsActive(t)))||null}_setInitialAttributes(t,e){this._setAttributeIfNotExists(t,"role","tablist");for(const t of e)this._setInitialAttributesOnChild(t)}_setInitialAttributesOnChild(t){t=this._getInnerElement(t);const e=this._elemIsActive(t),i=this._getOuterElement(t);t.setAttribute("aria-selected",e),i!==t&&this._setAttributeIfNotExists(i,"role","presentation"),e||t.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(t,"role","tab"),this._setInitialAttributesOnTargetPanel(t)}_setInitialAttributesOnTargetPanel(t){const e=n(t);e&&(this._setAttributeIfNotExists(e,"role","tabpanel"),t.id&&this._setAttributeIfNotExists(e,"aria-labelledby",`#${t.id}`))}_toggleDropDown(t,e){const i=this._getOuterElement(t);if(!i.classList.contains("dropdown"))return;const n=(t,n)=>{const s=Q.findOne(t,i);s&&s.classList.toggle(n,e)};n(".dropdown-toggle",En),n(".dropdown-menu",Cn),n(".dropdown-item",En),i.setAttribute("aria-expanded",e)}_setAttributeIfNotExists(t,e,i){t.hasAttribute(e)||t.setAttribute(e,i)}_elemIsActive(t){return t.classList.contains(En)}_getInnerElement(t){return t.matches(xn)?t:Q.findOne(xn,t)}_getOuterElement(t){return t.closest(".nav-item, .list-group-item")||t}static jQueryInterface(t){return this.each((function(){const e=kn.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}P.on(document,"click.bs.tab",On,(function(t){["A","AREA"].includes(this.tagName)&&t.preventDefault(),l(this)||kn.getOrCreateInstance(this).show()})),P.on(window,"load.bs.tab",(()=>{for(const t of Q.find('.active[data-bs-toggle="tab"], .active[data-bs-toggle="pill"], .active[data-bs-toggle="list"]'))kn.getOrCreateInstance(t)})),g(kn);const Ln="hide",Dn="show",Sn="showing",In={animation:"boolean",autohide:"boolean",delay:"number"},Nn={animation:!0,autohide:!0,delay:5e3};class Pn extends z{constructor(t,e){super(t,e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return Nn}static get DefaultType(){return In}static get NAME(){return"toast"}show(){P.trigger(this._element,"show.bs.toast").defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove(Ln),d(this._element),this._element.classList.add(Dn,Sn),this._queueCallback((()=>{this._element.classList.remove(Sn),P.trigger(this._element,"shown.bs.toast"),this._maybeScheduleHide()}),this._element,this._config.animation))}hide(){this.isShown()&&(P.trigger(this._element,"hide.bs.toast").defaultPrevented||(this._element.classList.add(Sn),this._queueCallback((()=>{this._element.classList.add(Ln),this._element.classList.remove(Sn,Dn),P.trigger(this._element,"hidden.bs.toast")}),this._element,this._config.animation)))}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(Dn),super.dispose()}isShown(){return this._element.classList.contains(Dn)}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout((()=>{this.hide()}),this._config.delay)))}_onInteraction(t,e){switch(t.type){case"mouseover":case"mouseout":this._hasMouseInteraction=e;break;case"focusin":case"focusout":this._hasKeyboardInteraction=e}if(e)return void this._clearTimeout();const i=t.relatedTarget;this._element===i||this._element.contains(i)||this._maybeScheduleHide()}_setListeners(){P.on(this._element,"mouseover.bs.toast",(t=>this._onInteraction(t,!0))),P.on(this._element,"mouseout.bs.toast",(t=>this._onInteraction(t,!1))),P.on(this._element,"focusin.bs.toast",(t=>this._onInteraction(t,!0))),P.on(this._element,"focusout.bs.toast",(t=>this._onInteraction(t,!1)))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each((function(){const e=Pn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}return q(Pn),g(Pn),{Alert:R,Button:K,Carousel:at,Collapse:pt,Dropdown:hi,Modal:Ni,Offcanvas:zi,Popover:un,ScrollSpy:bn,Tab:kn,Toast:Pn,Tooltip:cn}}));
7 + //# sourceMappingURL=bootstrap.bundle.min.js.map No newline at end of file
@@ -1,125 +1,126
1 1 source 'https://rubygems.org'
2 2 git_source(:github) { |repo| "https://github.com/#{repo}.git" }
3 3
4 4 ruby '3.1.2'
5 5
6 6 #rails
7 7 gem 'rails', '~>7.0'
8 8
9 9 # The original asset pipeline for Rails [https://github.com/rails/sprockets-rails]
10 10 gem "sprockets-rails"
11 11
12 12 gem 'activerecord-session_store'
13 13 gem 'puma'
14 14
15 15 # Reduces boot times through caching; required in config/boot.rb
16 16 gem 'bootsnap', require: false
17 17
18 18 # Bundle edge Rails instead:
19 19 # gem 'rails', :git => 'git://github.com/rails/rails.git'
20 20
21 21 #---------------- database ---------------------
22 22 #the database
23 23 gem 'mysql2'
24 24 #for testing
25 25 gem 'sqlite3'
26 26 gem 'rails-controller-testing'
27 27 #for dumping database into yaml
28 28 gem 'yaml_db'
29 29
30 30
31 31 #------------- assset pipeline -----------------
32 32 # Gems used only for assets and not required
33 33 # in production environments by default.
34 34 #sass-rails is depricated
35 35 #gem 'sass-rails'
36 36 gem 'sassc-rails'
37 37 gem 'coffee-rails'
38 38
39 39 # See https://github.com/sstephenson/execjs#readme for more supported runtimes
40 40 # gem 'therubyracer', :platforms => :ruby
41 41
42 42 gem 'uglifier'
43 43
44 44 gem 'haml'
45 45 gem 'haml-rails'
46 46
47 47 # Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks
48 48 #gem 'turbolinks', '~> 5'
49 49 # Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
50 50 gem 'jbuilder'
51 51
52 52
53 53 #in-place editor
54 54 gem 'best_in_place', git: "https://github.com/mmotherwell/best_in_place"
55 55
56 56 # jquery addition
57 - gem 'jquery-rails'
58 - gem 'jquery-ui-rails'
57 + #gem 'jquery-rails'
58 + #gem 'jquery-ui-rails'
59 59 #gem 'jquery-timepicker-addon-rails'
60 - gem 'jquery-tablesorter'
61 - gem 'jquery-countdown-rails'
60 + #gem 'jquery-tablesorter'
61 + #gem 'jquery-countdown-rails'
62 62
63 63 #syntax highlighter
64 64 gem 'rouge'
65 65
66 66 #bootstrap add-ons
67 - gem 'bootstrap-sass', '~> 3.4.1'
68 - gem 'bootstrap-switch-rails'
69 - gem 'bootstrap-toggle-rails'
70 - gem 'autoprefixer-rails'
71 - gem 'momentjs-rails', '>= 2.9.0'
72 - gem 'rails_bootstrap_sortable'
67 + #gem 'bootstrap-sass', '~> 3.4.1'
68 + gem 'bootstrap', '~> 5.2'
69 + #gem 'bootstrap-switch-rails'
70 + #gem 'bootstrap-toggle-rails'
71 + #gem 'autoprefixer-rails'
72 + #gem 'momentjs-rails', '>= 2.9.0'
73 + #gem 'rails_bootstrap_sortable'
73 74 #gem 'bootstrap-datepicker-rails'
74 - gem 'bootstrap3-datetimepicker-rails', '~> 4.17.47'
75 + #gem 'bootstrap3-datetimepicker-rails', '~> 4.17.47'
75 76 #gem 'jquery-datatables-rails'
76 77
77 78 #----------- user interface -----------------
78 79 gem 'simple_form'
79 80 #select 2
80 81 gem 'select2-rails'
81 82 #ace editor
82 83 gem 'ace-rails-ap'
83 84 #paginator
84 85 #gem 'will_paginate', '~> 3.0.7'
85 86
86 87 gem 'mail'
87 88 gem 'rdiscount'
88 89 gem 'dynamic_form'
89 90 gem 'in_place_editing'
90 91 #gem 'verification', :git => 'https://github.com/sikachu/verification.git'
91 92
92 93
93 94 #---------------- testiing -----------------------
94 95 gem 'minitest-reporters'
95 96
96 97 #---------------- for console --------------------
97 98 gem 'fuzzy-string-match'
98 99
99 100
100 101 group :development, :test do
101 102 # Call 'byebug' anywhere in the code to stop execution and get a debugger console
102 103 gem 'debug', platforms: [:mri, :mingw, :x64_mingw]
103 104 end
104 105
105 106 group :development do
106 107 # Access an interactive console on exception pages or by calling 'console' anywhere in the code.
107 108 gem 'web-console', '>= 3.3.0'
108 109 gem 'listen', '>= 3.0.5', '< 3.2'
109 110 # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
110 111 gem 'spring'
111 112 gem 'spring-watcher-listen', '~> 2.0.0'
112 113
113 114 # Add speed badges [https://github.com/MiniProfiler/rack-mini-profiler]
114 115 # gem "rack-mini-profiler"
115 116 end
116 117
117 118 group :test do
118 119 # Adds support for Capybara system testing and selenium driver
119 120 gem 'capybara'
120 121 gem 'selenium-webdriver'
121 122 gem 'webdrivers'
122 123 end
123 124
124 125
125 126 gem "importmap-rails", "~> 1.1"
@@ -1,377 +1,352
1 1 GIT
2 2 remote: https://github.com/mmotherwell/best_in_place
3 3 revision: 88eb3052623a9a6cd346864d2aca05021c2f80d0
4 4 specs:
5 5 best_in_place (3.1.1)
6 6 actionpack (>= 3.2)
7 7 railties (>= 3.2)
8 8
9 9 GEM
10 10 remote: https://rubygems.org/
11 11 specs:
12 12 RubyInline (3.12.6)
13 13 ZenTest (~> 4.3)
14 14 ZenTest (4.12.1)
15 15 ace-rails-ap (4.4)
16 16 actioncable (7.0.4)
17 17 actionpack (= 7.0.4)
18 18 activesupport (= 7.0.4)
19 19 nio4r (~> 2.0)
20 20 websocket-driver (>= 0.6.1)
21 21 actionmailbox (7.0.4)
22 22 actionpack (= 7.0.4)
23 23 activejob (= 7.0.4)
24 24 activerecord (= 7.0.4)
25 25 activestorage (= 7.0.4)
26 26 activesupport (= 7.0.4)
27 27 mail (>= 2.7.1)
28 28 net-imap
29 29 net-pop
30 30 net-smtp
31 31 actionmailer (7.0.4)
32 32 actionpack (= 7.0.4)
33 33 actionview (= 7.0.4)
34 34 activejob (= 7.0.4)
35 35 activesupport (= 7.0.4)
36 36 mail (~> 2.5, >= 2.5.4)
37 37 net-imap
38 38 net-pop
39 39 net-smtp
40 40 rails-dom-testing (~> 2.0)
41 41 actionpack (7.0.4)
42 42 actionview (= 7.0.4)
43 43 activesupport (= 7.0.4)
44 44 rack (~> 2.0, >= 2.2.0)
45 45 rack-test (>= 0.6.3)
46 46 rails-dom-testing (~> 2.0)
47 47 rails-html-sanitizer (~> 1.0, >= 1.2.0)
48 48 actiontext (7.0.4)
49 49 actionpack (= 7.0.4)
50 50 activerecord (= 7.0.4)
51 51 activestorage (= 7.0.4)
52 52 activesupport (= 7.0.4)
53 53 globalid (>= 0.6.0)
54 54 nokogiri (>= 1.8.5)
55 55 actionview (7.0.4)
56 56 activesupport (= 7.0.4)
57 57 builder (~> 3.1)
58 58 erubi (~> 1.4)
59 59 rails-dom-testing (~> 2.0)
60 60 rails-html-sanitizer (~> 1.1, >= 1.2.0)
61 61 activejob (7.0.4)
62 62 activesupport (= 7.0.4)
63 63 globalid (>= 0.3.6)
64 64 activemodel (7.0.4)
65 65 activesupport (= 7.0.4)
66 66 activerecord (7.0.4)
67 67 activemodel (= 7.0.4)
68 68 activesupport (= 7.0.4)
69 69 activerecord-session_store (2.0.0)
70 70 actionpack (>= 5.2.4.1)
71 71 activerecord (>= 5.2.4.1)
72 72 multi_json (~> 1.11, >= 1.11.2)
73 73 rack (>= 2.0.8, < 3)
74 74 railties (>= 5.2.4.1)
75 75 activestorage (7.0.4)
76 76 actionpack (= 7.0.4)
77 77 activejob (= 7.0.4)
78 78 activerecord (= 7.0.4)
79 79 activesupport (= 7.0.4)
80 80 marcel (~> 1.0)
81 81 mini_mime (>= 1.1.0)
82 82 activesupport (7.0.4)
83 83 concurrent-ruby (~> 1.0, >= 1.0.2)
84 84 i18n (>= 1.6, < 2)
85 85 minitest (>= 5.1)
86 86 tzinfo (~> 2.0)
87 87 addressable (2.8.1)
88 88 public_suffix (>= 2.0.2, < 6.0)
89 89 ansi (1.5.0)
90 90 autoprefixer-rails (10.4.7.0)
91 91 execjs (~> 2)
92 92 bindex (0.8.1)
93 93 bootsnap (1.13.0)
94 94 msgpack (~> 1.2)
95 - bootstrap-sass (3.4.1)
96 - autoprefixer-rails (>= 5.2.1)
97 - sassc (>= 2.0.0)
98 - bootstrap-switch-rails (3.3.5)
99 - bootstrap-toggle-rails (2.2.1.0)
100 - bootstrap3-datetimepicker-rails (4.17.47)
101 - momentjs-rails (>= 2.8.1)
95 + bootstrap (5.2.0)
96 + autoprefixer-rails (>= 9.1.0)
97 + popper_js (>= 2.11.5, < 3)
98 + sassc-rails (>= 2.0.0)
102 99 builder (3.2.4)
103 100 capybara (3.37.1)
104 101 addressable
105 102 matrix
106 103 mini_mime (>= 0.1.3)
107 104 nokogiri (~> 1.8)
108 105 rack (>= 1.6.0)
109 106 rack-test (>= 0.6.3)
110 107 regexp_parser (>= 1.5, < 3.0)
111 108 xpath (~> 3.2)
112 109 childprocess (4.1.0)
113 110 coffee-rails (5.0.0)
114 111 coffee-script (>= 2.2.0)
115 112 railties (>= 5.2.0)
116 113 coffee-script (2.4.1)
117 114 coffee-script-source
118 115 execjs
119 116 coffee-script-source (1.12.2)
120 117 concurrent-ruby (1.1.10)
121 118 crass (1.0.6)
122 119 debug (1.6.2)
123 120 irb (>= 1.3.6)
124 121 reline (>= 0.3.1)
125 122 digest (3.1.0)
126 123 dynamic_form (1.1.4)
127 124 erubi (1.11.0)
128 125 erubis (2.7.0)
129 126 execjs (2.8.1)
130 127 ffi (1.15.5)
131 128 fuzzy-string-match (1.0.1)
132 129 RubyInline (>= 3.8.6)
133 130 globalid (1.0.0)
134 131 activesupport (>= 5.0)
135 132 haml (5.2.2)
136 133 temple (>= 0.8.0)
137 134 tilt
138 135 haml-rails (2.0.1)
139 136 actionpack (>= 5.1)
140 137 activesupport (>= 5.1)
141 138 haml (>= 4.0.6, < 6.0)
142 139 html2haml (>= 1.0.1)
143 140 railties (>= 5.1)
144 141 html2haml (2.2.0)
145 142 erubis (~> 2.7.0)
146 143 haml (>= 4.0, < 6)
147 144 nokogiri (>= 1.6.0)
148 145 ruby_parser (~> 3.5)
149 146 i18n (1.12.0)
150 147 concurrent-ruby (~> 1.0)
151 148 importmap-rails (1.1.5)
152 149 actionpack (>= 6.0.0)
153 150 railties (>= 6.0.0)
154 151 in_place_editing (1.2.0)
155 152 io-console (0.5.11)
156 153 irb (1.4.1)
157 154 reline (>= 0.3.0)
158 155 jbuilder (2.11.5)
159 156 actionview (>= 5.0.0)
160 157 activesupport (>= 5.0.0)
161 - jquery-countdown-rails (2.0.2)
162 - jquery-rails (4.5.0)
163 - rails-dom-testing (>= 1, < 3)
164 - railties (>= 4.2.0)
165 - thor (>= 0.14, < 2.0)
166 - jquery-tablesorter (1.27.2)
167 - railties (>= 3.2)
168 - jquery-ui-rails (6.0.1)
169 - railties (>= 3.2.16)
170 158 listen (3.0.8)
171 159 rb-fsevent (~> 0.9, >= 0.9.4)
172 160 rb-inotify (~> 0.9, >= 0.9.7)
173 161 loofah (2.18.0)
174 162 crass (~> 1.0.2)
175 163 nokogiri (>= 1.5.9)
176 164 mail (2.7.1)
177 165 mini_mime (>= 0.1.1)
178 166 marcel (1.0.2)
179 167 matrix (0.4.2)
180 168 method_source (1.0.0)
181 169 mini_mime (1.1.2)
182 170 minitest (5.16.3)
183 171 minitest-reporters (1.5.0)
184 172 ansi
185 173 builder
186 174 minitest (>= 5.0)
187 175 ruby-progressbar
188 - momentjs-rails (2.29.4.1)
189 - railties (>= 3.1)
190 176 msgpack (1.5.6)
191 177 multi_json (1.15.0)
192 178 mysql2 (0.5.4)
193 179 net-imap (0.2.3)
194 180 digest
195 181 net-protocol
196 182 strscan
197 183 net-pop (0.1.1)
198 184 digest
199 185 net-protocol
200 186 timeout
201 187 net-protocol (0.1.3)
202 188 timeout
203 189 net-smtp (0.3.1)
204 190 digest
205 191 net-protocol
206 192 timeout
207 193 nio4r (2.5.8)
208 194 nokogiri (1.13.8-x86_64-linux)
209 195 racc (~> 1.4)
196 + popper_js (2.11.5)
210 197 public_suffix (5.0.0)
211 198 puma (5.6.5)
212 199 nio4r (~> 2.0)
213 200 racc (1.6.0)
214 201 rack (2.2.4)
215 202 rack-test (2.0.2)
216 203 rack (>= 1.3)
217 204 rails (7.0.4)
218 205 actioncable (= 7.0.4)
219 206 actionmailbox (= 7.0.4)
220 207 actionmailer (= 7.0.4)
221 208 actionpack (= 7.0.4)
222 209 actiontext (= 7.0.4)
223 210 actionview (= 7.0.4)
224 211 activejob (= 7.0.4)
225 212 activemodel (= 7.0.4)
226 213 activerecord (= 7.0.4)
227 214 activestorage (= 7.0.4)
228 215 activesupport (= 7.0.4)
229 216 bundler (>= 1.15.0)
230 217 railties (= 7.0.4)
231 218 rails-controller-testing (1.0.5)
232 219 actionpack (>= 5.0.1.rc1)
233 220 actionview (>= 5.0.1.rc1)
234 221 activesupport (>= 5.0.1.rc1)
235 222 rails-dom-testing (2.0.3)
236 223 activesupport (>= 4.2.0)
237 224 nokogiri (>= 1.6)
238 225 rails-html-sanitizer (1.4.3)
239 226 loofah (~> 2.3)
240 - rails_bootstrap_sortable (2.0.7)
241 - momentjs-rails (>= 2.8.3)
242 227 railties (7.0.4)
243 228 actionpack (= 7.0.4)
244 229 activesupport (= 7.0.4)
245 230 method_source
246 231 rake (>= 12.2)
247 232 thor (~> 1.0)
248 233 zeitwerk (~> 2.5)
249 234 rake (13.0.6)
250 235 rb-fsevent (0.11.2)
251 236 rb-inotify (0.10.1)
252 237 ffi (~> 1.0)
253 238 rdiscount (2.2.0.2)
254 239 regexp_parser (2.5.0)
255 240 reline (0.3.1)
256 241 io-console (~> 0.5)
257 242 rexml (3.2.5)
258 243 rouge (4.0.0)
259 244 ruby-progressbar (1.11.0)
260 245 ruby_parser (3.19.1)
261 246 sexp_processor (~> 4.16)
262 247 rubyzip (2.3.2)
263 248 sassc (2.4.0)
264 249 ffi (~> 1.9)
265 250 sassc-rails (2.1.2)
266 251 railties (>= 4.0.0)
267 252 sassc (>= 2.0)
268 253 sprockets (> 3.0)
269 254 sprockets-rails
270 255 tilt
271 256 select2-rails (4.0.13)
272 257 selenium-webdriver (4.4.0)
273 258 childprocess (>= 0.5, < 5.0)
274 259 rexml (~> 3.2, >= 3.2.5)
275 260 rubyzip (>= 1.2.2, < 3.0)
276 261 websocket (~> 1.0)
277 262 sexp_processor (4.16.1)
278 263 simple_form (5.1.0)
279 264 actionpack (>= 5.2)
280 265 activemodel (>= 5.2)
281 266 spring (2.1.1)
282 267 spring-watcher-listen (2.0.1)
283 268 listen (>= 2.7, < 4.0)
284 269 spring (>= 1.2, < 3.0)
285 270 sprockets (4.1.1)
286 271 concurrent-ruby (~> 1.0)
287 272 rack (> 1, < 3)
288 273 sprockets-rails (3.4.2)
289 274 actionpack (>= 5.2)
290 275 activesupport (>= 5.2)
291 276 sprockets (>= 3.0.0)
292 277 sqlite3 (1.5.0-x86_64-linux)
293 278 strscan (3.0.4)
294 279 temple (0.8.2)
295 280 thor (1.2.1)
296 281 tilt (2.0.11)
297 282 timeout (0.3.0)
298 283 tzinfo (2.0.5)
299 284 concurrent-ruby (~> 1.0)
300 285 uglifier (4.2.0)
301 286 execjs (>= 0.3.0, < 3)
302 287 web-console (4.2.0)
303 288 actionview (>= 6.0.0)
304 289 activemodel (>= 6.0.0)
305 290 bindex (>= 0.4.0)
306 291 railties (>= 6.0.0)
307 292 webdrivers (5.0.0)
308 293 nokogiri (~> 1.6)
309 294 rubyzip (>= 1.3.0)
310 295 selenium-webdriver (~> 4.0)
311 296 websocket (1.2.9)
312 297 websocket-driver (0.7.5)
313 298 websocket-extensions (>= 0.1.0)
314 299 websocket-extensions (0.1.5)
315 300 xpath (3.2.0)
316 301 nokogiri (~> 1.8)
317 302 yaml_db (0.7.0)
318 303 rails (>= 3.0)
319 304 rake (>= 0.8.7)
320 305 zeitwerk (2.6.0)
321 306
322 307 PLATFORMS
323 308 x86_64-linux
324 309
325 310 DEPENDENCIES
326 311 ace-rails-ap
327 312 activerecord-session_store
328 - autoprefixer-rails
329 313 best_in_place!
330 314 bootsnap
331 - bootstrap-sass (~> 3.4.1)
332 - bootstrap-switch-rails
333 - bootstrap-toggle-rails
334 - bootstrap3-datetimepicker-rails (~> 4.17.47)
315 + bootstrap (~> 5.2)
335 316 capybara
336 317 coffee-rails
337 318 debug
338 319 dynamic_form
339 320 fuzzy-string-match
340 321 haml
341 322 haml-rails
342 323 importmap-rails (~> 1.1)
343 324 in_place_editing
344 325 jbuilder
345 - jquery-countdown-rails
346 - jquery-rails
347 - jquery-tablesorter
348 - jquery-ui-rails
349 326 listen (>= 3.0.5, < 3.2)
350 327 mail
351 328 minitest-reporters
352 - momentjs-rails (>= 2.9.0)
353 329 mysql2
354 330 puma
355 331 rails (~> 7.0)
356 332 rails-controller-testing
357 - rails_bootstrap_sortable
358 333 rdiscount
359 334 rouge
360 335 sassc-rails
361 336 select2-rails
362 337 selenium-webdriver
363 338 simple_form
364 339 spring
365 340 spring-watcher-listen (~> 2.0.0)
366 341 sprockets-rails
367 342 sqlite3
368 343 uglifier
369 344 web-console (>= 3.3.0)
370 345 webdrivers
371 346 yaml_db
372 347
373 348 RUBY VERSION
374 349 ruby 3.1.2p20
375 350
376 351 BUNDLED WITH
377 352 2.3.22
@@ -1,6 +1,5
1 1 //= link_tree ../images
2 - // x= link_directory ../javascripts .js
3 2 //= link_directory ../stylesheets .css
4 3 //= link_tree ../../javascript .js
5 4 //= link_tree ../../../vendor/javascript .js
6 5
@@ -1,594 +1,594
1 1 /* This is a manifest file that'll be compiled into application.css, which will include all the files
2 2 * listed below.
3 3 *
4 4 * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
5 5 * or any plugin's vendor/assets/stylesheets directory can be referenced here using a relative path.
6 6 *
7 7 * You're free to add application-wide styles to this file and they'll appear at the bottom of the
8 8 * compiled file so the styles you add here take precedence over styles defined in any styles
9 9 * defined in the other CSS/SCSS files in this directory. It is generally better to create a new
10 10 * file per style scope.
11 11 *
12 12 * // bootstrap says that we should not do this, but @import each file instead
13 13 * # *= require_tree .
14 14 * # *= require_self
15 15 */
16 16
17 - @import "jquery-ui";
17 + //@import "jquery-ui";
18 18 //@import "jquery.ui.core";
19 19 //@import "jquery.ui.theme";
20 20 //@import "jquery.ui.datepicker";
21 21 //@import "jquery.ui.slider";
22 22 //@import "jquery-ui-timepicker-addon";
23 23 //@import "jquery-tablesorter/theme.metro-dark";
24 - @import "jquery.countdown";
25 - @import "tablesorter-theme.cafe";
24 + //@import "jquery.countdown";
25 + //@import "tablesorter-theme.cafe";
26 26
27 27 //bootstrap
28 - @import "bootstrap-sprockets";
28 + //@import "bootstrap-sprockets";
29 29 @import "bootstrap";
30 30 @import "select2";
31 31 @import "select2-bootstrap";
32 32
33 33 //@import bootstrap3-switch
34 - @import "bootstrap-toggle";
35 - @import "bootstrap-sortable";
34 + //@import "bootstrap-toggle";
35 + //@import "bootstrap-sortable";
36 36 //@import "bootstrap-datepicker3";
37 - @import "bootstrap-datetimepicker";
37 + //@import "bootstrap-datetimepicker";
38 38 @import "datatables.net-bs/css/dataTables.bootstrap.min";
39 39 @import "datatables.net-buttons-bs/css/buttons.bootstrap.min";
40 40
41 41 //bootstrap navbar color (from)
42 42 $bgDefault: #19197b;
43 43 $bgHighlight: #06064b;
44 44 $colDefault: #8e8eb4;
45 45 $colHighlight: #ffffff;
46 46 $dropDown: false;
47 47
48 48 @font-face {
49 49 font-family: 'Glyphicons Halflings';
50 50 src: font-path('bootstrap/glyphicons-halflings-regular.eot');
51 51 src: font-path('bootstrap/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),
52 52 font-path('bootstrap/glyphicons-halflings-regular.woff') format('woff'),
53 53 font-path('bootstrap/glyphicons-halflings-regular.ttf') format('truetype'),
54 54 font-path('bootstrap/glyphicons-halflings-regular.svg#glyphicons-halflingsregular') format('svg');
55 55 }
56 56
57 57
58 58 .navbar-default {
59 59 background-color: $bgDefault;
60 60 border-color: $bgHighlight;
61 61
62 62 .navbar-brand {
63 63 color: $colDefault;
64 64
65 65 &:hover, &:focus {
66 66 color: $colHighlight;
67 67 }
68 68 }
69 69
70 70 .navbar-text {
71 71 color: $colDefault;
72 72 }
73 73
74 74 .navbar-nav {
75 75 > li {
76 76 > a {
77 77 color: $colDefault;
78 78
79 79 &:hover, &:focus {
80 80 color: $colHighlight;
81 81 }
82 82 }
83 83
84 84 @if $dropDown {
85 85 > .dropdown-menu {
86 86 background-color: $bgDefault;
87 87
88 88 > li {
89 89 > a {
90 90 color: $colDefault;
91 91
92 92 &:hover, &:focus {
93 93 color: $colHighlight;
94 94 background-color: $bgHighlight;
95 95 }
96 96 }
97 97
98 98 > .divider {
99 99 background-color: $bgHighlight;
100 100 }
101 101 }
102 102 }
103 103 }
104 104 }
105 105
106 106 @if $dropDown {
107 107 .open .dropdown-menu > .active {
108 108 > a, > a:hover, > a:focus {
109 109 color: $colHighlight;
110 110 background-color: $bgHighlight;
111 111 }
112 112 }
113 113 }
114 114
115 115 > .active {
116 116 > a, > a:hover, > a:focus {
117 117 color: $colHighlight;
118 118 background-color: $bgHighlight;
119 119 }
120 120 }
121 121
122 122 > .open {
123 123 > a, > a:hover, > a:focus {
124 124 color: $colHighlight;
125 125 background-color: $bgHighlight;
126 126 }
127 127 }
128 128 }
129 129
130 130 .navbar-toggle {
131 131 border-color: $bgHighlight;
132 132
133 133 &:hover, &:focus {
134 134 background-color: $bgHighlight;
135 135 }
136 136
137 137 .icon-bar {
138 138 background-color: $colDefault;
139 139 }
140 140 }
141 141
142 142 .navbar-collapse,
143 143 .navbar-form {
144 144 border-color: $colDefault;
145 145 }
146 146
147 147 .navbar-link {
148 148 color: $colDefault;
149 149
150 150 &:hover {
151 151 color: $colHighlight;
152 152 }
153 153 }
154 154 }
155 155
156 156 @media (max-width: 767px) {
157 157 .navbar-default .navbar-nav .open .dropdown-menu {
158 158 > li > a {
159 159 color: $colDefault;
160 160
161 161 &:hover, &:focus {
162 162 color: $colHighlight;
163 163 }
164 164 }
165 165
166 166 > .active {
167 167 > a, > a:hover, > a:focus {
168 168 color: $colHighlight;
169 169 background-color: $bgHighlight;
170 170 }
171 171 }
172 172 }
173 173 }
174 174
175 175 .secondnavbar {
176 176 top: 50px;
177 177 }
178 178
179 179 // --------------- bootstrap file upload ----------------------
180 180 .btn-file {
181 181 position: relative;
182 182 overflow: hidden;
183 183 }
184 184
185 185 .btn-file input[type=file] {
186 186 position: absolute;
187 187 top: 0;
188 188 right: 0;
189 189 min-width: 100%;
190 190 min-height: 100%;
191 191 font-size: 100px;
192 192 text-align: right;
193 193 filter: alpha(opacity = 0);
194 194 opacity: 0;
195 195 outline: none;
196 196 background: white;
197 197 cursor: inherit;
198 198 display: block;
199 199 }
200 200
201 201 body {
202 202 background: white image-url("topbg.jpg") repeat-x top center;
203 203
204 204 //font-size: 13px
205 205 //font-family: Tahoma, "sans-serif"
206 206 margin: 10px;
207 207 padding: 10px;
208 208 padding-top: 60px;
209 209 }
210 210
211 211 // ------------------ bootstrap sortable --------------------
212 212 table.sortable th {
213 213 padding-right: 20px !important;
214 214
215 215 span.sign {
216 216 right: (-15px) !important;
217 217 }
218 218
219 219 &.text-right {
220 220 padding-left: 20px !important;
221 221 padding-right: 8px !important;
222 222
223 223 &:after, span.sign {
224 224 left: (-15px) !important;
225 225 }
226 226 }
227 227 }
228 228
229 229 input {
230 230 font-family: Tahoma, "sans-serif";
231 231 }
232 232
233 233 h1 {
234 234 font-size: 24px;
235 235 color: #334488;
236 236 line-height: 2em;
237 237 }
238 238
239 239 h2 {
240 240 font-size: 18px;
241 241 color: #5566bb;
242 242 line-height: 1.5em;
243 243 }
244 244
245 245 hr {
246 246 border-top: 1px solid #dddddd;
247 247 border-bottom: 1px solid #eeeeee;
248 248 }
249 249
250 250 //#a
251 251 // color: #6666cc
252 252 // text-decoration: none
253 253 //
254 254 // &:link, &:visited
255 255 // color: #6666cc
256 256 // text-decoration: none
257 257 //
258 258 // &:hover, &:focus
259 259 // color: #111166
260 260 // text-decoration: none
261 261
262 262 div {
263 263 &.userbar {
264 264 line-height: 1.5em;
265 265 text-align: right;
266 266 font-size: 12px;
267 267 }
268 268
269 269 &.title {
270 270 padding: 10px 0px;
271 271 line-height: 1.5em;
272 272 font-size: 13px;
273 273
274 274 span.contest-over-msg {
275 275 font-size: 15px;
276 276 color: red;
277 277 }
278 278
279 279 table {
280 280 width: 100%;
281 281 font-weight: bold;
282 282 }
283 283
284 284 td {
285 285 &.left-col {
286 286 text-align: left;
287 287 vertical-align: top;
288 288 color: #444444;
289 289 }
290 290
291 291 &.right-col {
292 292 text-align: right;
293 293 vertical-align: top;
294 294 font-size: 18px;
295 295 color: #116699;
296 296 }
297 297 }
298 298 }
299 299 }
300 300
301 301 table.info {
302 302 margin: 10px 0;
303 303 border: 1px solid #666666;
304 304 border-collapse: collapse;
305 305 font-size: 12px;
306 306
307 307 th {
308 308 border: 1px solid #666666;
309 309 line-height: 1.5em;
310 310 padding: 0 0.5em;
311 311 }
312 312
313 313 td {
314 314 border-left: 1px solid #666666;
315 315 border-right: 1px solid #666666;
316 316 line-height: 1.5em;
317 317 padding: 0 0.5em;
318 318 }
319 319 }
320 320
321 321 tr {
322 322 &.info-head {
323 323 background: #777777;
324 324 color: white;
325 325 }
326 326
327 327 &.info-odd {
328 328 background: #eeeeee;
329 329 }
330 330
331 331 &.info-even {
332 332 background: #fcfcfc;
333 333 }
334 334 }
335 335
336 336 @mixin basicbox {
337 337 background: #eeeeff;
338 338 border: 1px dotted #99aaee;
339 339 padding: 5px;
340 340 margin: 10px 0px;
341 341 color: black;
342 342 font-size: 13px;
343 343 }
344 344
345 345 .infobox {
346 346 @include basicbox;
347 347 }
348 348
349 349 .submitbox {
350 350 @include basicbox;
351 351 }
352 352
353 353 .errorExplanation {
354 354 border: 1px dotted gray;
355 355 color: #bb2222;
356 356 padding: 5px 15px 5px 15px;
357 357 margin-bottom: 5px;
358 358 background-color: white;
359 359 font-weight: normal;
360 360
361 361 h2 {
362 362 color: #cc1111;
363 363 font-weight: bold;
364 364 }
365 365 }
366 366
367 367 table.uinfo {
368 368 border-collapse: collapse;
369 369 border: 1px solid black;
370 370 font-size: 13px;
371 371 }
372 372
373 373 td.uinfo {
374 374 vertical-align: top;
375 375 border: 1px solid black;
376 376 padding: 5px;
377 377 }
378 378
379 379 th.uinfo {
380 380 background: lightgreen;
381 381 vertical-align: top;
382 382 text-align: right;
383 383 border: 1px solid black;
384 384 padding: 5px;
385 385 }
386 386
387 387 div {
388 388 &.compilermsgbody {
389 389 font-family: monospace;
390 390 }
391 391
392 392 &.task-menu {
393 393 text-align: center;
394 394 font-size: 13px;
395 395 line-height: 1.75em;
396 396 font-weight: bold;
397 397 border-top: 1px dashed gray;
398 398 border-bottom: 1px dashed gray;
399 399 margin-top: 2px;
400 400 margin-bottom: 4px;
401 401 }
402 402 }
403 403
404 404 table.taskdesc {
405 405 border: 2px solid #dddddd;
406 406 border-collapse: collapse;
407 407 margin: 10px auto;
408 408 width: 90%;
409 409 font-size: 13px;
410 410
411 411 p {
412 412 font-size: 13px;
413 413 }
414 414
415 415 tr.name {
416 416 border: 2px solid #dddddd;
417 417 background: #dddddd;
418 418 color: #333333;
419 419 font-weight: bold;
420 420 font-size: 14px;
421 421 line-height: 1.5em;
422 422 text-align: center;
423 423 }
424 424
425 425 td {
426 426 &.desc-odd {
427 427 padding: 5px;
428 428 padding-left: 20px;
429 429 background: #fefeee;
430 430 }
431 431
432 432 &.desc-even {
433 433 padding: 5px;
434 434 padding-left: 20px;
435 435 background: #feeefe;
436 436 }
437 437 }
438 438 }
439 439
440 440 .announcementbox {
441 441 margin: 10px 0px;
442 442 background: #bbddee;
443 443 padding: 1px;
444 444
445 445 span.title {
446 446 font-weight: bold;
447 447 color: #224455;
448 448 padding-left: 10px;
449 449 line-height: 1.6em;
450 450 }
451 451 }
452 452
453 453 .announcement {
454 454 margin: 2px;
455 455 background: white;
456 456 padding: 1px;
457 457 padding-left: 10px;
458 458 padding-right: 10px;
459 459 padding-top: 5px;
460 460 padding-bottom: 5px;
461 461 }
462 462
463 463 .announcement p {
464 464 font-size: 12px;
465 465 margin: 2px;
466 466 }
467 467
468 468 .pub-info {
469 469 text-align: right;
470 470 font-style: italic;
471 471 font-size: 9px;
472 472
473 473 p {
474 474 text-align: right;
475 475 font-style: italic;
476 476 font-size: 9px;
477 477 }
478 478 }
479 479
480 480 .announcement {
481 481 .toggles {
482 482 font-weight: normal;
483 483 float: right;
484 484 font-size: 80%;
485 485 }
486 486
487 487 .announcement-title {
488 488 font-weight: bold;
489 489 }
490 490 }
491 491
492 492 div {
493 493 &.message {
494 494 margin: 10px 0 0;
495 495
496 496 div {
497 497 &.message {
498 498 margin: 0 0 0 30px;
499 499 }
500 500
501 501 &.body {
502 502 border: 2px solid #dddddd;
503 503 background: #fff8f8;
504 504 padding-left: 5px;
505 505 }
506 506
507 507 &.reply-body {
508 508 border: 2px solid #bbbbbb;
509 509 background: #fffff8;
510 510 padding-left: 5px;
511 511 }
512 512
513 513 &.stat {
514 514 font-size: 10px;
515 515 line-height: 1.75em;
516 516 padding: 0 5px;
517 517 color: #333333;
518 518 background: #dddddd;
519 519 font-weight: bold;
520 520 }
521 521
522 522 &.message div.stat {
523 523 font-size: 10px;
524 524 line-height: 1.75em;
525 525 padding: 0 5px;
526 526 color: #444444;
527 527 background: #bbbbbb;
528 528 font-weight: bold;
529 529 }
530 530 }
531 531 }
532 532
533 533 &.contest-title {
534 534 color: white;
535 535 text-align: center;
536 536 line-height: 2em;
537 537 }
538 538
539 539 &.registration-desc, &.test-desc {
540 540 border: 1px dotted gray;
541 541 background: #f5f5f5;
542 542 padding: 5px;
543 543 margin: 10px 0;
544 544 font-size: 12px;
545 545 line-height: 1.5em;
546 546 }
547 547 }
548 548
549 549 h2.contest-title {
550 550 margin-top: 5px;
551 551 margin-bottom: 5px;
552 552 }
553 553
554 554
555 555
556 556 .grader-comment {
557 557 word-wrap: break-word;
558 558 }
559 559
560 560
561 561 golden-btn + .golden-btn { margin-top: 1em; }
562 562
563 563 .golden-btn {
564 564 display: inline-block;
565 565 outline: none;
566 566 font-family: inherit;
567 567 box-sizing: border-box;
568 568 border: none;
569 569 box-shadow: 0 3px 6px rgba(0,0,0,.16), 0 3px 6px rgba(110,80,20,.4),
570 570 inset 0 -2px 5px 1px rgba(139,66,8,1),
571 571 inset 0 -1px 1px 3px rgba(250,227,133,1);
572 572 background-image: linear-gradient(160deg, #a54e07, #b47e11, #fef1a2, #bc881b, #a54e07) !important;
573 573 border: 1px solid #a55d07;
574 574 color: rgb(120,50,5);
575 575 text-shadow: 0 2px 2px rgba(250, 227, 133, 1);
576 576 cursor: pointer;
577 577 transition: all .2s ease-in-out;
578 578 background-size: 100% 100%;
579 579 background-position:center;
580 580 }
581 581 .golden-btn:focus,
582 582 .golden-btn:hover {
583 583 background-size: 150% 150%;
584 584 box-shadow: 0 10px 20px rgba(0,0,0,0.19), 0 6px 6px rgba(0,0,0,0.23),
585 585 inset 0 -2px 5px 1px #b17d10,
586 586 inset 0 -1px 1px 3px rgba(250,227,133,1);
587 587 border: 1px solid rgba(165,93,7,.6);
588 588 color: rgba(120,50,5,.8);
589 589 }
590 590 .golden-btn:active {
591 591 box-shadow: 0 3px 6px rgba(0,0,0,.16), 0 3px 6px rgba(110,80,20,.4),
592 592 inset 0 -2px 5px 1px #b17d10,
593 593 inset 0 -1px 1px 3px rgba(250,227,133,1);
594 594 }
@@ -1,17 +1,20
1 1 // Configure your import map in config/importmap.rb. Read more: https://github.com/rails/importmap-rails
2 2 //import "@hotwired/turbo-rails"
3 3 //import "controllers"
4 4 //
5 - console.log('xxxxx')
6 - import jQuery from "jquery"
7 - //import pdfmake from "pdfmake"
5 +
6 + import pdfmake from "pdfmake"
8 7 //import jszip from "jszip"
9 8 //import DataTable from "datatables.net-bs5"
10 - //
11 - window.$ = window.jQuery = jQuery;
12 9 //window.DataTable = DataTable();
13 - //
10 +
11 + //bootstrap
12 + //import * as bootstrap from "bootstrap"
13 + import "bootstrap"
14 + window.bootstrap = bootstrap
14 15 console.log($); // ok
15 - ////console.log(jszip);
16 + console.log(bootstrap)
17 + console.log(jszip);
18 +
16 19 console.log('application.js ready')
17 20
@@ -1,18 +1,24
1 1 <!DOCTYPE html>
2 2 %html
3 3 %head
4 4 %title= GraderConfiguration['contest.name']
5 5 = stylesheet_link_tag "application", params[:controller], :media => "all"
6 6 = csrf_meta_tags
7 7 = csp_meta_tag
8 + = javascript_import_module_tag('prepend_jquery')
8 9 = javascript_importmap_tags
9 10 = content_for :header
10 11 = yield :head
12 + -# %link{href:"https://cdn.jsdelivr.net/npm/bootstrap@5.2.1/dist/css/bootstrap.min.css",rel:"stylesheet",integrity:"sha384-iYQeCzEYFbKjA/T2uDLTpkwGzCiq6soy8tYaI1GyVh/UjpbCx/TYkiZhlZB6+fzT",crossorigin:"anonymous"}
13 + -# %script{src:"https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.6/dist/umd/popper.min.js",integrity:"sha384-oBqDVmMz9ATKxIep9tiCxS/Z9fNfEXiDAYTujMAeBAsjFuCZSmKbSSUnQlmh/jp3",crossorigin:"anonymous"}
14 + -# %script{src:"https://cdn.jsdelivr.net/npm/bootstrap@5.2.1/dist/js/bootstrap.bundle.min.js",integrity:"sha384-7VPbUDkoPSGFnVtYi0QogXtr74QeVeeIs99Qfg5YCF+TidwNdjvaKZX19NZ/e6oz",crossorigin:"anonymous"}
15 +
16 +
11 17
12 18 %body
13 19 - unless local_assigns[:skip_header]
14 20 = render 'layouts/header'
15 21
16 22 /= content_tag(:p,flash[:notice],class: 'alert alert-success') if flash[:notice]!=nil
17 23 = flash_messages
18 24 = yield
@@ -1,8 +1,12
1 1 # Pin npm packages by running ./bin/importmap
2 2
3 + #entry point
3 4 pin "application", preload: true
4 - #pin_all_from "app/javascript/controllers", under: "controllers"
5 + pin "prepend_jquery", preload: true
6 + pin_all_from "app/javascript/controllers", under: "controllers"
5 7
6 - #pin "jquery" # @3.6.1
7 - #pin "pdfmake", to: "https://ga.jspm.io/npm:pdfmake@0.2.5/build/pdfmake.js"
8 - pin "jquery", to: 'jquery-local.js'
8 + pin "pdfmake", to: "https://ga.jspm.io/npm:pdfmake@0.2.5/build/pdfmake.js"
9 + pin "jquery", to: 'jquery.js'
10 + pin "bootstrap", to: "bootstrap.bundle.min.js"
11 + #no need popper, because bundled already in bootstrap
12 + #pin "@popperjs/core", to: "https://ga.jspm.io/npm:@popperjs/core@2.11.6/lib/index.js"
@@ -1,22 +1,24
1 1 # Be sure to restart your server when you modify this file.
2 2
3 3 # Version of your assets, change this if you want to expire all your assets.
4 4 Rails.application.config.assets.version = "1.0"
5 5
6 6 # Add additional assets to the asset load path.
7 7 # Rails.application.config.assets.paths << Emoji.images_path
8 8 # Add Yarn node_modules folder to the asset load path.
9 9 Rails.application.config.assets.paths << Rails.root.join('node_modules')
10 10
11 11 # Precompile additional assets.
12 12 # application.js, application.css, and all non-JS/CSS in the app/assets
13 13 # folder are already added.
14 14 # Rails.application.config.assets.precompile += %w( admin.js admin.css )
15 + Rails.application.config.assets.precompile += %w(bootstrap.min.js popper.js)
16 +
15 17 Rails.application.config.assets.precompile += ['announcement_refresh.js','effects.js','site_update.js']
16 18 Rails.application.config.assets.precompile += ['local_jquery.js','tablesorter-theme.cafe.css']
17 19 %w( announcements submissions configurations contests contest_management graders heartbeat
18 20 login main messages problems report site sites sources tasks groups
19 21 test user_admin users tags testcases).each do |controller|
20 22 Rails.application.config.assets.precompile += ["#{controller}.js", "#{controller}.css"]
21 23 end
22 24
file renamed from vendor/javascript/jquery-local.js to vendor/javascript/jquery.js
@@ -1,321 +0,0
1 - Authors ordered by first contribution.
2 -
3 - John Resig <jeresig@gmail.com>
4 - Gilles van den Hoven <gilles0181@gmail.com>
5 - Michael Geary <mike@geary.com>
6 - Stefan Petre <stefan.petre@gmail.com>
7 - Yehuda Katz <wycats@gmail.com>
8 - Corey Jewett <cj@syntheticplayground.com>
9 - Klaus Hartl <klaus.hartl@gmail.com>
10 - Franck Marcia <franck.marcia@gmail.com>
11 - Jörn Zaefferer <joern.zaefferer@gmail.com>
12 - Paul Bakaus <paul.bakaus@gmail.com>
13 - Brandon Aaron <brandon.aaron@gmail.com>
14 - Mike Alsup <malsup@gmail.com>
15 - Dave Methvin <dave.methvin@gmail.com>
16 - Ed Engelhardt <edengelhardt@gmail.com>
17 - Sean Catchpole <littlecooldude@gmail.com>
18 - Paul Mclanahan <pmclanahan@gmail.com>
19 - David Serduke <davidserduke@gmail.com>
20 - Richard D. Worth <rdworth@gmail.com>
21 - Scott González <scott.gonzalez@gmail.com>
22 - Ariel Flesler <aflesler@gmail.com>
23 - Jon Evans <jon@springyweb.com>
24 - TJ Holowaychuk <tj@vision-media.ca>
25 - Michael Bensoussan <mickey@seesmic.com>
26 - Robert Katić <robert.katic@gmail.com>
27 - Louis-Rémi Babé <lrbabe@gmail.com>
28 - Earle Castledine <mrspeaker@gmail.com>
29 - Damian Janowski <damian.janowski@gmail.com>
30 - Rich Dougherty <rich@rd.gen.nz>
31 - Kim Dalsgaard <kim@kimdalsgaard.com>
32 - Andrea Giammarchi <andrea.giammarchi@gmail.com>
33 - Mark Gibson <jollytoad@gmail.com>
34 - Karl Swedberg <kswedberg@gmail.com>
35 - Justin Meyer <justinbmeyer@gmail.com>
36 - Ben Alman <cowboy@rj3.net>
37 - James Padolsey <cla@padolsey.net>
38 - David Petersen <public@petersendidit.com>
39 - Batiste Bieler <batiste.bieler@gmail.com>
40 - Alexander Farkas <info@corrupt-system.de>
41 - Rick Waldron <waldron.rick@gmail.com>
42 - Filipe Fortes <filipe@fortes.com>
43 - Neeraj Singh <neerajdotname@gmail.com>
44 - Paul Irish <paul.irish@gmail.com>
45 - Iraê Carvalho <irae@irae.pro.br>
46 - Matt Curry <matt@pseudocoder.com>
47 - Michael Monteleone <michael@michaelmonteleone.net>
48 - Noah Sloan <noah.sloan@gmail.com>
49 - Tom Viner <github@viner.tv>
50 - Douglas Neiner <doug@dougneiner.com>
51 - Adam J. Sontag <ajpiano@ajpiano.com>
52 - Dave Reed <dareed@microsoft.com>
53 - Ralph Whitbeck <ralph.whitbeck@gmail.com>
54 - Carl Fürstenberg <azatoth@gmail.com>
55 - Jacob Wright <jacwright@gmail.com>
56 - J. Ryan Stinnett <jryans@gmail.com>
57 - unknown <Igen005@.upcorp.ad.uprr.com>
58 - temp01 <temp01irc@gmail.com>
59 - Heungsub Lee <h@subl.ee>
60 - Colin Snover <github.com@zetafleet.com>
61 - Ryan W Tenney <ryan@10e.us>
62 - Pinhook <contact@pinhooklabs.com>
63 - Ron Otten <r.j.g.otten@gmail.com>
64 - Jephte Clain <Jephte.Clain@univ-reunion.fr>
65 - Anton Matzneller <obhvsbypqghgc@gmail.com>
66 - Alex Sexton <AlexSexton@gmail.com>
67 - Dan Heberden <danheberden@gmail.com>
68 - Henri Wiechers <hwiechers@gmail.com>
69 - Russell Holbrook <russell.holbrook@patch.com>
70 - Julian Aubourg <aubourg.julian@gmail.com>
71 - Gianni Alessandro Chiappetta <gianni@runlevel6.org>
72 - Scott Jehl <scottjehl@gmail.com>
73 - James Burke <jrburke@gmail.com>
74 - Jonas Pfenniger <jonas@pfenniger.name>
75 - Xavi Ramirez <xavi.rmz@gmail.com>
76 - Jared Grippe <jared@deadlyicon.com>
77 - Sylvester Keil <sylvester@keil.or.at>
78 - Brandon Sterne <bsterne@mozilla.com>
79 - Mathias Bynens <mathias@qiwi.be>
80 - Timmy Willison <4timmywil@gmail.com>
81 - Corey Frang <gnarf37@gmail.com>
82 - Digitalxero <digitalxero>
83 - Anton Kovalyov <anton@kovalyov.net>
84 - David Murdoch <david@davidmurdoch.com>
85 - Josh Varner <josh.varner@gmail.com>
86 - Charles McNulty <cmcnulty@kznf.com>
87 - Jordan Boesch <jboesch26@gmail.com>
88 - Jess Thrysoee <jess@thrysoee.dk>
89 - Michael Murray <m@murz.net>
90 - Lee Carpenter <elcarpie@gmail.com>
91 - Alexis Abril <me@alexisabril.com>
92 - Rob Morgan <robbym@gmail.com>
93 - John Firebaugh <john_firebaugh@bigfix.com>
94 - Sam Bisbee <sam@sbisbee.com>
95 - Gilmore Davidson <gilmoreorless@gmail.com>
96 - Brian Brennan <me@brianlovesthings.com>
97 - Xavier Montillet <xavierm02.net@gmail.com>
98 - Daniel Pihlstrom <sciolist.se@gmail.com>
99 - Sahab Yazdani <sahab.yazdani+github@gmail.com>
100 - avaly <github-com@agachi.name>
101 - Scott Hughes <hi@scott-hughes.me>
102 - Mike Sherov <mike.sherov@gmail.com>
103 - Greg Hazel <ghazel@gmail.com>
104 - Schalk Neethling <schalk@ossreleasefeed.com>
105 - Denis Knauf <Denis.Knauf@gmail.com>
106 - Timo Tijhof <krinklemail@gmail.com>
107 - Steen Nielsen <swinedk@gmail.com>
108 - Anton Ryzhov <anton@ryzhov.me>
109 - Shi Chuan <shichuanr@gmail.com>
110 - Berker Peksag <berker.peksag@gmail.com>
111 - Toby Brain <tobyb@freshview.com>
112 - Matt Mueller <mattmuelle@gmail.com>
113 - Justin <drakefjustin@gmail.com>
114 - Daniel Herman <daniel.c.herman@gmail.com>
115 - Oleg Gaidarenko <markelog@gmail.com>
116 - Richard Gibson <richard.gibson@gmail.com>
117 - Rafaël Blais Masson <rafbmasson@gmail.com>
118 - cmc3cn <59194618@qq.com>
119 - Joe Presbrey <presbrey@gmail.com>
120 - Sindre Sorhus <sindresorhus@gmail.com>
121 - Arne de Bree <arne@bukkie.nl>
122 - Vladislav Zarakovsky <vlad.zar@gmail.com>
123 - Andrew E Monat <amonat@gmail.com>
124 - Oskari <admin@o-programs.com>
125 - Joao Henrique de Andrade Bruni <joaohbruni@yahoo.com.br>
126 - tsinha <tsinha@Anthonys-MacBook-Pro.local>
127 - Matt Farmer <matt@frmr.me>
128 - Trey Hunner <treyhunner@gmail.com>
129 - Jason Moon <jmoon@socialcast.com>
130 - Jeffery To <jeffery.to@gmail.com>
131 - Kris Borchers <kris.borchers@gmail.com>
132 - Vladimir Zhuravlev <private.face@gmail.com>
133 - Jacob Thornton <jacobthornton@gmail.com>
134 - Chad Killingsworth <chadkillingsworth@missouristate.edu>
135 - Nowres Rafid <nowres.rafed@gmail.com>
136 - David Benjamin <davidben@mit.edu>
137 - Uri Gilad <antishok@gmail.com>
138 - Chris Faulkner <thefaulkner@gmail.com>
139 - Elijah Manor <elijah.manor@gmail.com>
140 - Daniel Chatfield <chatfielddaniel@gmail.com>
141 - Nikita Govorov <nikita.govorov@gmail.com>
142 - Wesley Walser <waw325@gmail.com>
143 - Mike Pennisi <mike@mikepennisi.com>
144 - Markus Staab <markus.staab@redaxo.de>
145 - Dave Riddle <david@joyvuu.com>
146 - Callum Macrae <callum@lynxphp.com>
147 - Benjamin Truyman <bentruyman@gmail.com>
148 - James Huston <james@jameshuston.net>
149 - Erick Ruiz de Chávez <erickrdch@gmail.com>
150 - David Bonner <dbonner@cogolabs.com>
151 - Akintayo Akinwunmi <aakinwunmi@judge.com>
152 - MORGAN <morgan@morgangraphics.com>
153 - Ismail Khair <ismail.khair@gmail.com>
154 - Carl Danley <carldanley@gmail.com>
155 - Mike Petrovich <michael.c.petrovich@gmail.com>
156 - Greg Lavallee <greglavallee@wapolabs.com>
157 - Daniel Gálvez <dgalvez@editablething.com>
158 - Sai Lung Wong <sai.wong@huffingtonpost.com>
159 - Tom H Fuertes <TomFuertes@gmail.com>
160 - Roland Eckl <eckl.roland@googlemail.com>
161 - Jay Merrifield <fracmak@gmail.com>
162 - Allen J Schmidt Jr <cobrasoft@gmail.com>
163 - Jonathan Sampson <jjdsampson@gmail.com>
164 - Marcel Greter <marcel.greter@ocbnet.ch>
165 - Matthias Jäggli <matthias.jaeggli@gmail.com>
166 - David Fox <dfoxinator@gmail.com>
167 - Yiming He <yiminghe@gmail.com>
168 - Devin Cooper <cooper.semantics@gmail.com>
169 - Paul Ramos <paul.b.ramos@gmail.com>
170 - Rod Vagg <rod@vagg.org>
171 - Bennett Sorbo <bsorbo@gmail.com>
172 - Sebastian Burkhard <sebi.burkhard@gmail.com>
173 - Zachary Adam Kaplan <razic@viralkitty.com>
174 - nanto_vi <nanto@moon.email.ne.jp>
175 - nanto <nanto@moon.email.ne.jp>
176 - Danil Somsikov <danilasomsikov@gmail.com>
177 - Ryunosuke SATO <tricknotes.rs@gmail.com>
178 - Jean Boussier <jean.boussier@gmail.com>
179 - Adam Coulombe <me@adam.co>
180 - Andrew Plummer <plummer.andrew@gmail.com>
181 - Mark Raddatz <mraddatz@gmail.com>
182 - Isaac Z. Schlueter <i@izs.me>
183 - Karl Sieburg <ksieburg@yahoo.com>
184 - Pascal Borreli <pascal@borreli.com>
185 - Nguyen Phuc Lam <ruado1987@gmail.com>
186 - Dmitry Gusev <dmitry.gusev@gmail.com>
187 - Michał Gołębiowski-Owczarek <m.goleb@gmail.com>
188 - Li Xudong <istonelee@gmail.com>
189 - Steven Benner <admin@stevenbenner.com>
190 - Tom H Fuertes <tomfuertes@gmail.com>
191 - Renato Oliveira dos Santos <ros3@cin.ufpe.br>
192 - ros3cin <ros3@cin.ufpe.br>
193 - Jason Bedard <jason+jquery@jbedard.ca>
194 - Kyle Robinson Young <kyle@dontkry.com>
195 - Chris Talkington <chris@talkingtontech.com>
196 - Eddie Monge <eddie@eddiemonge.com>
197 - Terry Jones <terry@jon.es>
198 - Jason Merino <jasonmerino@gmail.com>
199 - Jeremy Dunck <jdunck@gmail.com>
200 - Chris Price <price.c@gmail.com>
201 - Guy Bedford <guybedford@gmail.com>
202 - Amey Sakhadeo <me@ameyms.com>
203 - Mike Sidorov <mikes.ekb@gmail.com>
204 - Anthony Ryan <anthonyryan1@gmail.com>
205 - Dominik D. Geyer <dominik.geyer@gmail.com>
206 - George Kats <katsgeorgeek@gmail.com>
207 - Lihan Li <frankieteardrop@gmail.com>
208 - Ronny Springer <springer.ronny@gmail.com>
209 - Chris Antaki <ChrisAntaki@gmail.com>
210 - Marian Sollmann <marian.sollmann@cargomedia.ch>
211 - njhamann <njhamann@gmail.com>
212 - Ilya Kantor <iliakan@gmail.com>
213 - David Hong <d.hong@me.com>
214 - John Paul <john@johnkpaul.com>
215 - Jakob Stoeck <jakob@pokermania.de>
216 - Christopher Jones <chris@cjqed.com>
217 - Forbes Lindesay <forbes@lindesay.co.uk>
218 - S. Andrew Sheppard <andrew@wq.io>
219 - Leonardo Balter <leonardo.balter@gmail.com>
220 - Roman Reiß <me@silverwind.io>
221 - Benjy Cui <benjytrys@gmail.com>
222 - Rodrigo Rosenfeld Rosas <rr.rosas@gmail.com>
223 - John Hoven <hovenj@gmail.com>
224 - Philip Jägenstedt <philip@foolip.org>
225 - Christian Kosmowski <ksmwsk@gmail.com>
226 - Liang Peng <poppinlp@gmail.com>
227 - TJ VanToll <tj.vantoll@gmail.com>
228 - Senya Pugach <upisfree@outlook.com>
229 - Aurelio De Rosa <aurelioderosa@gmail.com>
230 - Nazar Mokrynskyi <nazar@mokrynskyi.com>
231 - Amit Merchant <bullredeyes@gmail.com>
232 - Jason Bedard <jason+github@jbedard.ca>
233 - Arthur Verschaeve <contact@arthurverschaeve.be>
234 - Dan Hart <danhart@notonthehighstreet.com>
235 - Bin Xin <rhyzix@gmail.com>
236 - David Corbacho <davidcorbacho@gmail.com>
237 - Veaceslav Grimalschi <grimalschi@yandex.ru>
238 - Daniel Husar <dano.husar@gmail.com>
239 - Frederic Hemberger <mail@frederic-hemberger.de>
240 - Ben Toews <mastahyeti@gmail.com>
241 - Aditya Raghavan <araghavan3@gmail.com>
242 - Victor Homyakov <vkhomyackov@gmail.com>
243 - Shivaji Varma <contact@shivajivarma.com>
244 - Nicolas HENRY <icewil@gmail.com>
245 - Anne-Gaelle Colom <coloma@westminster.ac.uk>
246 - George Mauer <gmauer@gmail.com>
247 - Leonardo Braga <leonardo.braga@gmail.com>
248 - Stephen Edgar <stephen@netweb.com.au>
249 - Thomas Tortorini <thomastortorini@gmail.com>
250 - Winston Howes <winstonhowes@gmail.com>
251 - Jon Hester <jon.d.hester@gmail.com>
252 - Alexander O'Mara <me@alexomara.com>
253 - Bastian Buchholz <buchholz.bastian@googlemail.com>
254 - Arthur Stolyar <nekr.fabula@gmail.com>
255 - Calvin Metcalf <calvin.metcalf@gmail.com>
256 - Mu Haibao <mhbseal@163.com>
257 - Richard McDaniel <rm0026@uah.edu>
258 - Chris Rebert <github@rebertia.com>
259 - Gabriel Schulhof <gabriel.schulhof@intel.com>
260 - Gilad Peleg <giladp007@gmail.com>
261 - Martin Naumann <martin@geekonaut.de>
262 - Marek Lewandowski <m.lewandowski@cksource.com>
263 - Bruno Pérel <brunoperel@gmail.com>
264 - Reed Loden <reed@reedloden.com>
265 - Daniel Nill <daniellnill@gmail.com>
266 - Yongwoo Jeon <yongwoo.jeon@navercorp.com>
267 - Sean Henderson <seanh.za@gmail.com>
268 - Richard Kraaijenhagen <stdin+git@riichard.com>
269 - Connor Atherton <c.liam.atherton@gmail.com>
270 - Gary Ye <garysye@gmail.com>
271 - Christian Grete <webmaster@christiangrete.com>
272 - Liza Ramo <liza.h.ramo@gmail.com>
273 - Julian Alexander Murillo <julian.alexander.murillo@gmail.com>
274 - Joelle Fleurantin <joasqueeniebee@gmail.com>
275 - Jae Sung Park <alberto.park@gmail.com>
276 - Jun Sun <klsforever@gmail.com>
277 - Josh Soref <apache@soref.com>
278 - Henry Wong <henryw4k@gmail.com>
279 - Jon Dufresne <jon.dufresne@gmail.com>
280 - Martijn W. van der Lee <martijn@vanderlee.com>
281 - Devin Wilson <dwilson6.github@gmail.com>
282 - Steve Mao <maochenyan@gmail.com>
283 - Zack Hall <zackhall@outlook.com>
284 - Bernhard M. Wiedemann <jquerybmw@lsmod.de>
285 - Todor Prikumov <tono_pr@abv.bg>
286 - Jha Naman <createnaman@gmail.com>
287 - William Robinet <william.robinet@conostix.com>
288 - Alexander Lisianoi <all3fox@gmail.com>
289 - Vitaliy Terziev <vitaliyterziev@gmail.com>
290 - Joe Trumbull <trumbull.j@gmail.com>
291 - Alexander K <xpyro@ya.ru>
292 - Damian Senn <jquery@topaxi.codes>
293 - Ralin Chimev <ralin.chimev@gmail.com>
294 - Felipe Sateler <fsateler@gmail.com>
295 - Christophe Tafani-Dereeper <christophetd@hotmail.fr>
296 - Manoj Kumar <nithmanoj@gmail.com>
297 - David Broder-Rodgers <broder93@gmail.com>
298 - Alex Louden <alex@louden.com>
299 - Alex Padilla <alexonezero@outlook.com>
300 - 南漂一卒 <shiy007@qq.com>
301 - karan-96 <karanbatra96@gmail.com>
302 - Boom Lee <teabyii@gmail.com>
303 - Andreas Solleder <asol@num42.de>
304 - CDAGaming <cstack2011@yahoo.com>
305 - Pierre Spring <pierre@nelm.io>
306 - Shashanka Nataraj <shashankan.10@gmail.com>
307 - Erik Lax <erik@datahack.se>
308 - Matan Kotler-Berkowitz <205matan@gmail.com>
309 - Jordan Beland <jordan.beland@gmail.com>
310 - Henry Zhu <hi@henryzoo.com>
311 - Saptak Sengupta <saptak013@gmail.com>
312 - Nilton Cesar <niltoncms@gmail.com>
313 - basil.belokon <basil.belokon@gmail.com>
314 - tmybr11 <tomas.perone@gmail.com>
315 - Luis Emilio Velasco Sanchez <emibloque@gmail.com>
316 - Ed S <ejsanders@gmail.com>
317 - Bert Zhang <enbo@users.noreply.github.com>
318 - Andrei Fangli <andrei_fangli@outlook.com>
319 - Marja Hölttä <marja.holtta@gmail.com>
320 - abnud1 <ahmad13932013@hotmail.com>
321 - buddh4 <mail@jharrer.de>
@@ -1,20 +0,0
1 - Copyright JS Foundation and other contributors, https://js.foundation/
2 -
3 - Permission is hereby granted, free of charge, to any person obtaining
4 - a copy of this software and associated documentation files (the
5 - "Software"), to deal in the Software without restriction, including
6 - without limitation the rights to use, copy, modify, merge, publish,
7 - distribute, sublicense, and/or sell copies of the Software, and to
8 - permit persons to whom the Software is furnished to do so, subject to
9 - the following conditions:
10 -
11 - The above copyright notice and this permission notice shall be
12 - included in all copies or substantial portions of the Software.
13 -
14 - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15 - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16 - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17 - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18 - LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19 - OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20 - WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -1,67 +0,0
1 - # jQuery
2 -
3 - > jQuery is a fast, small, and feature-rich JavaScript library.
4 -
5 - For information on how to get started and how to use jQuery, please see [jQuery's documentation](http://api.jquery.com/).
6 - For source files and issues, please visit the [jQuery repo](https://github.com/jquery/jquery).
7 -
8 - If upgrading, please see the [blog post for 3.4.1](https://blog.jquery.com/2019/05/01/jquery-3-4-1-triggering-focus-events-in-ie-and-finding-root-elements-in-ios-10/). This includes notable differences from the previous version and a more readable changelog.
9 -
10 - ## Including jQuery
11 -
12 - Below are some of the most common ways to include jQuery.
13 -
14 - ### Browser
15 -
16 - #### Script tag
17 -
18 - ```html
19 - <script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
20 - ```
21 -
22 - #### Babel
23 -
24 - [Babel](http://babeljs.io/) is a next generation JavaScript compiler. One of the features is the ability to use ES6/ES2015 modules now, even though browsers do not yet support this feature natively.
25 -
26 - ```js
27 - import $ from "jquery";
28 - ```
29 -
30 - #### Browserify/Webpack
31 -
32 - There are several ways to use [Browserify](http://browserify.org/) and [Webpack](https://webpack.github.io/). For more information on using these tools, please refer to the corresponding project's documention. In the script, including jQuery will usually look like this...
33 -
34 - ```js
35 - var $ = require("jquery");
36 - ```
37 -
38 - #### AMD (Asynchronous Module Definition)
39 -
40 - AMD is a module format built for the browser. For more information, we recommend [require.js' documentation](http://requirejs.org/docs/whyamd.html).
41 -
42 - ```js
43 - define(["jquery"], function($) {
44 -
45 - });
46 - ```
47 -
48 - ### Node
49 -
50 - To include jQuery in [Node](nodejs.org), first install with npm.
51 -
52 - ```sh
53 - npm install jquery
54 - ```
55 -
56 - For jQuery to work in Node, a window with a document is required. Since no such window exists natively in Node, one can be mocked by tools such as [jsdom](https://github.com/tmpvar/jsdom). This can be useful for testing purposes.
57 -
58 - ```js
59 - require("jsdom").env("", function(err, window) {
60 - if (err) {
61 - console.error(err);
62 - return;
63 - }
64 -
65 - var $ = require("jquery")(window);
66 - });
67 - ```
@@ -1,14 +0,0
1 - {
2 - "name": "jquery",
3 - "main": "dist/jquery.js",
4 - "license": "MIT",
5 - "ignore": [
6 - "package.json"
7 - ],
8 - "keywords": [
9 - "jquery",
10 - "javascript",
11 - "browser",
12 - "library"
13 - ]
14 - } No newline at end of file
@@ -1,399 +0,0
1 - /* global Symbol */
2 - // Defining this global in .eslintrc.json would create a danger of using the global
3 - // unguarded in another place, it seems safer to define global only for this module
4 -
5 - define( [
6 - "./var/arr",
7 - "./var/document",
8 - "./var/getProto",
9 - "./var/slice",
10 - "./var/concat",
11 - "./var/push",
12 - "./var/indexOf",
13 - "./var/class2type",
14 - "./var/toString",
15 - "./var/hasOwn",
16 - "./var/fnToString",
17 - "./var/ObjectFunctionString",
18 - "./var/support",
19 - "./var/isFunction",
20 - "./var/isWindow",
21 - "./core/DOMEval",
22 - "./core/toType"
23 - ], function( arr, document, getProto, slice, concat, push, indexOf,
24 - class2type, toString, hasOwn, fnToString, ObjectFunctionString,
25 - support, isFunction, isWindow, DOMEval, toType ) {
26 -
27 - "use strict";
28 -
29 - var
30 - version = "3.4.1",
31 -
32 - // Define a local copy of jQuery
33 - jQuery = function( selector, context ) {
34 -
35 - // The jQuery object is actually just the init constructor 'enhanced'
36 - // Need init if jQuery is called (just allow error to be thrown if not included)
37 - return new jQuery.fn.init( selector, context );
38 - },
39 -
40 - // Support: Android <=4.0 only
41 - // Make sure we trim BOM and NBSP
42 - rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
43 -
44 - jQuery.fn = jQuery.prototype = {
45 -
46 - // The current version of jQuery being used
47 - jquery: version,
48 -
49 - constructor: jQuery,
50 -
51 - // The default length of a jQuery object is 0
52 - length: 0,
53 -
54 - toArray: function() {
55 - return slice.call( this );
56 - },
57 -
58 - // Get the Nth element in the matched element set OR
59 - // Get the whole matched element set as a clean array
60 - get: function( num ) {
61 -
62 - // Return all the elements in a clean array
63 - if ( num == null ) {
64 - return slice.call( this );
65 - }
66 -
67 - // Return just the one element from the set
68 - return num < 0 ? this[ num + this.length ] : this[ num ];
69 - },
70 -
71 - // Take an array of elements and push it onto the stack
72 - // (returning the new matched element set)
73 - pushStack: function( elems ) {
74 -
75 - // Build a new jQuery matched element set
76 - var ret = jQuery.merge( this.constructor(), elems );
77 -
78 - // Add the old object onto the stack (as a reference)
79 - ret.prevObject = this;
80 -
81 - // Return the newly-formed element set
82 - return ret;
83 - },
84 -
85 - // Execute a callback for every element in the matched set.
86 - each: function( callback ) {
87 - return jQuery.each( this, callback );
88 - },
89 -
90 - map: function( callback ) {
91 - return this.pushStack( jQuery.map( this, function( elem, i ) {
92 - return callback.call( elem, i, elem );
93 - } ) );
94 - },
95 -
96 - slice: function() {
97 - return this.pushStack( slice.apply( this, arguments ) );
98 - },
99 -
100 - first: function() {
101 - return this.eq( 0 );
102 - },
103 -
104 - last: function() {
105 - return this.eq( -1 );
106 - },
107 -
108 - eq: function( i ) {
109 - var len = this.length,
110 - j = +i + ( i < 0 ? len : 0 );
111 - return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );
112 - },
113 -
114 - end: function() {
115 - return this.prevObject || this.constructor();
116 - },
117 -
118 - // For internal use only.
119 - // Behaves like an Array's method, not like a jQuery method.
120 - push: push,
121 - sort: arr.sort,
122 - splice: arr.splice
123 - };
124 -
125 - jQuery.extend = jQuery.fn.extend = function() {
126 - var options, name, src, copy, copyIsArray, clone,
127 - target = arguments[ 0 ] || {},
128 - i = 1,
129 - length = arguments.length,
130 - deep = false;
131 -
132 - // Handle a deep copy situation
133 - if ( typeof target === "boolean" ) {
134 - deep = target;
135 -
136 - // Skip the boolean and the target
137 - target = arguments[ i ] || {};
138 - i++;
139 - }
140 -
141 - // Handle case when target is a string or something (possible in deep copy)
142 - if ( typeof target !== "object" && !isFunction( target ) ) {
143 - target = {};
144 - }
145 -
146 - // Extend jQuery itself if only one argument is passed
147 - if ( i === length ) {
148 - target = this;
149 - i--;
150 - }
151 -
152 - for ( ; i < length; i++ ) {
153 -
154 - // Only deal with non-null/undefined values
155 - if ( ( options = arguments[ i ] ) != null ) {
156 -
157 - // Extend the base object
158 - for ( name in options ) {
159 - copy = options[ name ];
160 -
161 - // Prevent Object.prototype pollution
162 - // Prevent never-ending loop
163 - if ( name === "__proto__" || target === copy ) {
164 - continue;
165 - }
166 -
167 - // Recurse if we're merging plain objects or arrays
168 - if ( deep && copy && ( jQuery.isPlainObject( copy ) ||
169 - ( copyIsArray = Array.isArray( copy ) ) ) ) {
170 - src = target[ name ];
171 -
172 - // Ensure proper type for the source value
173 - if ( copyIsArray && !Array.isArray( src ) ) {
174 - clone = [];
175 - } else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {
176 - clone = {};
177 - } else {
178 - clone = src;
179 - }
180 - copyIsArray = false;
181 -
182 - // Never move original objects, clone them
183 - target[ name ] = jQuery.extend( deep, clone, copy );
184 -
185 - // Don't bring in undefined values
186 - } else if ( copy !== undefined ) {
187 - target[ name ] = copy;
188 - }
189 - }
190 - }
191 - }
192 -
193 - // Return the modified object
194 - return target;
195 - };
196 -
197 - jQuery.extend( {
198 -
199 - // Unique for each copy of jQuery on the page
200 - expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
201 -
202 - // Assume jQuery is ready without the ready module
203 - isReady: true,
204 -
205 - error: function( msg ) {
206 - throw new Error( msg );
207 - },
208 -
209 - noop: function() {},
210 -
211 - isPlainObject: function( obj ) {
212 - var proto, Ctor;
213 -
214 - // Detect obvious negatives
215 - // Use toString instead of jQuery.type to catch host objects
216 - if ( !obj || toString.call( obj ) !== "[object Object]" ) {
217 - return false;
218 - }
219 -
220 - proto = getProto( obj );
221 -
222 - // Objects with no prototype (e.g., `Object.create( null )`) are plain
223 - if ( !proto ) {
224 - return true;
225 - }
226 -
227 - // Objects with prototype are plain iff they were constructed by a global Object function
228 - Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor;
229 - return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString;
230 - },
231 -
232 - isEmptyObject: function( obj ) {
233 - var name;
234 -
235 - for ( name in obj ) {
236 - return false;
237 - }
238 - return true;
239 - },
240 -
241 - // Evaluates a script in a global context
242 - globalEval: function( code, options ) {
243 - DOMEval( code, { nonce: options && options.nonce } );
244 - },
245 -
246 - each: function( obj, callback ) {
247 - var length, i = 0;
248 -
249 - if ( isArrayLike( obj ) ) {
250 - length = obj.length;
251 - for ( ; i < length; i++ ) {
252 - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
253 - break;
254 - }
255 - }
256 - } else {
257 - for ( i in obj ) {
258 - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
259 - break;
260 - }
261 - }
262 - }
263 -
264 - return obj;
265 - },
266 -
267 - // Support: Android <=4.0 only
268 - trim: function( text ) {
269 - return text == null ?
270 - "" :
271 - ( text + "" ).replace( rtrim, "" );
272 - },
273 -
274 - // results is for internal usage only
275 - makeArray: function( arr, results ) {
276 - var ret = results || [];
277 -
278 - if ( arr != null ) {
279 - if ( isArrayLike( Object( arr ) ) ) {
280 - jQuery.merge( ret,
281 - typeof arr === "string" ?
282 - [ arr ] : arr
283 - );
284 - } else {
285 - push.call( ret, arr );
286 - }
287 - }
288 -
289 - return ret;
290 - },
291 -
292 - inArray: function( elem, arr, i ) {
293 - return arr == null ? -1 : indexOf.call( arr, elem, i );
294 - },
295 -
296 - // Support: Android <=4.0 only, PhantomJS 1 only
297 - // push.apply(_, arraylike) throws on ancient WebKit
298 - merge: function( first, second ) {
299 - var len = +second.length,
300 - j = 0,
301 - i = first.length;
302 -
303 - for ( ; j < len; j++ ) {
304 - first[ i++ ] = second[ j ];
305 - }
306 -
307 - first.length = i;
308 -
309 - return first;
310 - },
311 -
312 - grep: function( elems, callback, invert ) {
313 - var callbackInverse,
314 - matches = [],
315 - i = 0,
316 - length = elems.length,
317 - callbackExpect = !invert;
318 -
319 - // Go through the array, only saving the items
320 - // that pass the validator function
321 - for ( ; i < length; i++ ) {
322 - callbackInverse = !callback( elems[ i ], i );
323 - if ( callbackInverse !== callbackExpect ) {
324 - matches.push( elems[ i ] );
325 - }
326 - }
327 -
328 - return matches;
329 - },
330 -
331 - // arg is for internal usage only
332 - map: function( elems, callback, arg ) {
333 - var length, value,
334 - i = 0,
335 - ret = [];
336 -
337 - // Go through the array, translating each of the items to their new values
338 - if ( isArrayLike( elems ) ) {
339 - length = elems.length;
340 - for ( ; i < length; i++ ) {
341 - value = callback( elems[ i ], i, arg );
342 -
343 - if ( value != null ) {
344 - ret.push( value );
345 - }
346 - }
347 -
348 - // Go through every key on the object,
349 - } else {
350 - for ( i in elems ) {
351 - value = callback( elems[ i ], i, arg );
352 -
353 - if ( value != null ) {
354 - ret.push( value );
355 - }
356 - }
357 - }
358 -
359 - // Flatten any nested arrays
360 - return concat.apply( [], ret );
361 - },
362 -
363 - // A global GUID counter for objects
364 - guid: 1,
365 -
366 - // jQuery.support is not used in Core but other projects attach their
367 - // properties to it so it needs to exist.
368 - support: support
369 - } );
370 -
371 - if ( typeof Symbol === "function" ) {
372 - jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];
373 - }
374 -
375 - // Populate the class2type map
376 - jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
377 - function( i, name ) {
378 - class2type[ "[object " + name + "]" ] = name.toLowerCase();
379 - } );
380 -
381 - function isArrayLike( obj ) {
382 -
383 - // Support: real iOS 8.2 only (not reproducible in simulator)
384 - // `in` check used to prevent JIT error (gh-2145)
385 - // hasOwn isn't used here due to false negatives
386 - // regarding Nodelist length in IE
387 - var length = !!obj && "length" in obj && obj.length,
388 - type = toType( obj );
389 -
390 - if ( isFunction( obj ) || isWindow( obj ) ) {
391 - return false;
392 - }
393 -
394 - return type === "array" || length === 0 ||
395 - typeof length === "number" && length > 0 && ( length - 1 ) in obj;
396 - }
397 -
398 - return jQuery;
399 - } );
This diff has been collapsed as it changes many lines, (10598 lines changed) Show them Hide them
@@ -1,10598 +0,0
1 - /*!
2 - * jQuery JavaScript Library v3.4.1
3 - * https://jquery.com/
4 - *
5 - * Includes Sizzle.js
6 - * https://sizzlejs.com/
7 - *
8 - * Copyright JS Foundation and other contributors
9 - * Released under the MIT license
10 - * https://jquery.org/license
11 - *
12 - * Date: 2019-05-01T21:04Z
13 - */
14 - ( function( global, factory ) {
15 -
16 - "use strict";
17 -
18 - if ( typeof module === "object" && typeof module.exports === "object" ) {
19 -
20 - // For CommonJS and CommonJS-like environments where a proper `window`
21 - // is present, execute the factory and get jQuery.
22 - // For environments that do not have a `window` with a `document`
23 - // (such as Node.js), expose a factory as module.exports.
24 - // This accentuates the need for the creation of a real `window`.
25 - // e.g. var jQuery = require("jquery")(window);
26 - // See ticket #14549 for more info.
27 - module.exports = global.document ?
28 - factory( global, true ) :
29 - function( w ) {
30 - if ( !w.document ) {
31 - throw new Error( "jQuery requires a window with a document" );
32 - }
33 - return factory( w );
34 - };
35 - } else {
36 - factory( global );
37 - }
38 -
39 - // Pass this if window is not defined yet
40 - } )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
41 -
42 - // Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1
43 - // throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode
44 - // arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common
45 - // enough that all such attempts are guarded in a try block.
46 - "use strict";
47 -
48 - var arr = [];
49 -
50 - var document = window.document;
51 -
52 - var getProto = Object.getPrototypeOf;
53 -
54 - var slice = arr.slice;
55 -
56 - var concat = arr.concat;
57 -
58 - var push = arr.push;
59 -
60 - var indexOf = arr.indexOf;
61 -
62 - var class2type = {};
63 -
64 - var toString = class2type.toString;
65 -
66 - var hasOwn = class2type.hasOwnProperty;
67 -
68 - var fnToString = hasOwn.toString;
69 -
70 - var ObjectFunctionString = fnToString.call( Object );
71 -
72 - var support = {};
73 -
74 - var isFunction = function isFunction( obj ) {
75 -
76 - // Support: Chrome <=57, Firefox <=52
77 - // In some browsers, typeof returns "function" for HTML <object> elements
78 - // (i.e., `typeof document.createElement( "object" ) === "function"`).
79 - // We don't want to classify *any* DOM node as a function.
80 - return typeof obj === "function" && typeof obj.nodeType !== "number";
81 - };
82 -
83 -
84 - var isWindow = function isWindow( obj ) {
85 - return obj != null && obj === obj.window;
86 - };
87 -
88 -
89 -
90 -
91 - var preservedScriptAttributes = {
92 - type: true,
93 - src: true,
94 - nonce: true,
95 - noModule: true
96 - };
97 -
98 - function DOMEval( code, node, doc ) {
99 - doc = doc || document;
100 -
101 - var i, val,
102 - script = doc.createElement( "script" );
103 -
104 - script.text = code;
105 - if ( node ) {
106 - for ( i in preservedScriptAttributes ) {
107 -
108 - // Support: Firefox 64+, Edge 18+
109 - // Some browsers don't support the "nonce" property on scripts.
110 - // On the other hand, just using `getAttribute` is not enough as
111 - // the `nonce` attribute is reset to an empty string whenever it
112 - // becomes browsing-context connected.
113 - // See https://github.com/whatwg/html/issues/2369
114 - // See https://html.spec.whatwg.org/#nonce-attributes
115 - // The `node.getAttribute` check was added for the sake of
116 - // `jQuery.globalEval` so that it can fake a nonce-containing node
117 - // via an object.
118 - val = node[ i ] || node.getAttribute && node.getAttribute( i );
119 - if ( val ) {
120 - script.setAttribute( i, val );
121 - }
122 - }
123 - }
124 - doc.head.appendChild( script ).parentNode.removeChild( script );
125 - }
126 -
127 -
128 - function toType( obj ) {
129 - if ( obj == null ) {
130 - return obj + "";
131 - }
132 -
133 - // Support: Android <=2.3 only (functionish RegExp)
134 - return typeof obj === "object" || typeof obj === "function" ?
135 - class2type[ toString.call( obj ) ] || "object" :
136 - typeof obj;
137 - }
138 - /* global Symbol */
139 - // Defining this global in .eslintrc.json would create a danger of using the global
140 - // unguarded in another place, it seems safer to define global only for this module
141 -
142 -
143 -
144 - var
145 - version = "3.4.1",
146 -
147 - // Define a local copy of jQuery
148 - jQuery = function( selector, context ) {
149 -
150 - // The jQuery object is actually just the init constructor 'enhanced'
151 - // Need init if jQuery is called (just allow error to be thrown if not included)
152 - return new jQuery.fn.init( selector, context );
153 - },
154 -
155 - // Support: Android <=4.0 only
156 - // Make sure we trim BOM and NBSP
157 - rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
158 -
159 - jQuery.fn = jQuery.prototype = {
160 -
161 - // The current version of jQuery being used
162 - jquery: version,
163 -
164 - constructor: jQuery,
165 -
166 - // The default length of a jQuery object is 0
167 - length: 0,
168 -
169 - toArray: function() {
170 - return slice.call( this );
171 - },
172 -
173 - // Get the Nth element in the matched element set OR
174 - // Get the whole matched element set as a clean array
175 - get: function( num ) {
176 -
177 - // Return all the elements in a clean array
178 - if ( num == null ) {
179 - return slice.call( this );
180 - }
181 -
182 - // Return just the one element from the set
183 - return num < 0 ? this[ num + this.length ] : this[ num ];
184 - },
185 -
186 - // Take an array of elements and push it onto the stack
187 - // (returning the new matched element set)
188 - pushStack: function( elems ) {
189 -
190 - // Build a new jQuery matched element set
191 - var ret = jQuery.merge( this.constructor(), elems );
192 -
193 - // Add the old object onto the stack (as a reference)
194 - ret.prevObject = this;
195 -
196 - // Return the newly-formed element set
197 - return ret;
198 - },
199 -
200 - // Execute a callback for every element in the matched set.
201 - each: function( callback ) {
202 - return jQuery.each( this, callback );
203 - },
204 -
205 - map: function( callback ) {
206 - return this.pushStack( jQuery.map( this, function( elem, i ) {
207 - return callback.call( elem, i, elem );
208 - } ) );
209 - },
210 -
211 - slice: function() {
212 - return this.pushStack( slice.apply( this, arguments ) );
213 - },
214 -
215 - first: function() {
216 - return this.eq( 0 );
217 - },
218 -
219 - last: function() {
220 - return this.eq( -1 );
221 - },
222 -
223 - eq: function( i ) {
224 - var len = this.length,
225 - j = +i + ( i < 0 ? len : 0 );
226 - return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );
227 - },
228 -
229 - end: function() {
230 - return this.prevObject || this.constructor();
231 - },
232 -
233 - // For internal use only.
234 - // Behaves like an Array's method, not like a jQuery method.
235 - push: push,
236 - sort: arr.sort,
237 - splice: arr.splice
238 - };
239 -
240 - jQuery.extend = jQuery.fn.extend = function() {
241 - var options, name, src, copy, copyIsArray, clone,
242 - target = arguments[ 0 ] || {},
243 - i = 1,
244 - length = arguments.length,
245 - deep = false;
246 -
247 - // Handle a deep copy situation
248 - if ( typeof target === "boolean" ) {
249 - deep = target;
250 -
251 - // Skip the boolean and the target
252 - target = arguments[ i ] || {};
253 - i++;
254 - }
255 -
256 - // Handle case when target is a string or something (possible in deep copy)
257 - if ( typeof target !== "object" && !isFunction( target ) ) {
258 - target = {};
259 - }
260 -
261 - // Extend jQuery itself if only one argument is passed
262 - if ( i === length ) {
263 - target = this;
264 - i--;
265 - }
266 -
267 - for ( ; i < length; i++ ) {
268 -
269 - // Only deal with non-null/undefined values
270 - if ( ( options = arguments[ i ] ) != null ) {
271 -
272 - // Extend the base object
273 - for ( name in options ) {
274 - copy = options[ name ];
275 -
276 - // Prevent Object.prototype pollution
277 - // Prevent never-ending loop
278 - if ( name === "__proto__" || target === copy ) {
279 - continue;
280 - }
281 -
282 - // Recurse if we're merging plain objects or arrays
283 - if ( deep && copy && ( jQuery.isPlainObject( copy ) ||
284 - ( copyIsArray = Array.isArray( copy ) ) ) ) {
285 - src = target[ name ];
286 -
287 - // Ensure proper type for the source value
288 - if ( copyIsArray && !Array.isArray( src ) ) {
289 - clone = [];
290 - } else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {
291 - clone = {};
292 - } else {
293 - clone = src;
294 - }
295 - copyIsArray = false;
296 -
297 - // Never move original objects, clone them
298 - target[ name ] = jQuery.extend( deep, clone, copy );
299 -
300 - // Don't bring in undefined values
301 - } else if ( copy !== undefined ) {
302 - target[ name ] = copy;
303 - }
304 - }
305 - }
306 - }
307 -
308 - // Return the modified object
309 - return target;
310 - };
311 -
312 - jQuery.extend( {
313 -
314 - // Unique for each copy of jQuery on the page
315 - expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
316 -
317 - // Assume jQuery is ready without the ready module
318 - isReady: true,
319 -
320 - error: function( msg ) {
321 - throw new Error( msg );
322 - },
323 -
324 - noop: function() {},
325 -
326 - isPlainObject: function( obj ) {
327 - var proto, Ctor;
328 -
329 - // Detect obvious negatives
330 - // Use toString instead of jQuery.type to catch host objects
331 - if ( !obj || toString.call( obj ) !== "[object Object]" ) {
332 - return false;
333 - }
334 -
335 - proto = getProto( obj );
336 -
337 - // Objects with no prototype (e.g., `Object.create( null )`) are plain
338 - if ( !proto ) {
339 - return true;
340 - }
341 -
342 - // Objects with prototype are plain iff they were constructed by a global Object function
343 - Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor;
344 - return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString;
345 - },
346 -
347 - isEmptyObject: function( obj ) {
348 - var name;
349 -
350 - for ( name in obj ) {
351 - return false;
352 - }
353 - return true;
354 - },
355 -
356 - // Evaluates a script in a global context
357 - globalEval: function( code, options ) {
358 - DOMEval( code, { nonce: options && options.nonce } );
359 - },
360 -
361 - each: function( obj, callback ) {
362 - var length, i = 0;
363 -
364 - if ( isArrayLike( obj ) ) {
365 - length = obj.length;
366 - for ( ; i < length; i++ ) {
367 - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
368 - break;
369 - }
370 - }
371 - } else {
372 - for ( i in obj ) {
373 - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
374 - break;
375 - }
376 - }
377 - }
378 -
379 - return obj;
380 - },
381 -
382 - // Support: Android <=4.0 only
383 - trim: function( text ) {
384 - return text == null ?
385 - "" :
386 - ( text + "" ).replace( rtrim, "" );
387 - },
388 -
389 - // results is for internal usage only
390 - makeArray: function( arr, results ) {
391 - var ret = results || [];
392 -
393 - if ( arr != null ) {
394 - if ( isArrayLike( Object( arr ) ) ) {
395 - jQuery.merge( ret,
396 - typeof arr === "string" ?
397 - [ arr ] : arr
398 - );
399 - } else {
400 - push.call( ret, arr );
401 - }
402 - }
403 -
404 - return ret;
405 - },
406 -
407 - inArray: function( elem, arr, i ) {
408 - return arr == null ? -1 : indexOf.call( arr, elem, i );
409 - },
410 -
411 - // Support: Android <=4.0 only, PhantomJS 1 only
412 - // push.apply(_, arraylike) throws on ancient WebKit
413 - merge: function( first, second ) {
414 - var len = +second.length,
415 - j = 0,
416 - i = first.length;
417 -
418 - for ( ; j < len; j++ ) {
419 - first[ i++ ] = second[ j ];
420 - }
421 -
422 - first.length = i;
423 -
424 - return first;
425 - },
426 -
427 - grep: function( elems, callback, invert ) {
428 - var callbackInverse,
429 - matches = [],
430 - i = 0,
431 - length = elems.length,
432 - callbackExpect = !invert;
433 -
434 - // Go through the array, only saving the items
435 - // that pass the validator function
436 - for ( ; i < length; i++ ) {
437 - callbackInverse = !callback( elems[ i ], i );
438 - if ( callbackInverse !== callbackExpect ) {
439 - matches.push( elems[ i ] );
440 - }
441 - }
442 -
443 - return matches;
444 - },
445 -
446 - // arg is for internal usage only
447 - map: function( elems, callback, arg ) {
448 - var length, value,
449 - i = 0,
450 - ret = [];
451 -
452 - // Go through the array, translating each of the items to their new values
453 - if ( isArrayLike( elems ) ) {
454 - length = elems.length;
455 - for ( ; i < length; i++ ) {
456 - value = callback( elems[ i ], i, arg );
457 -
458 - if ( value != null ) {
459 - ret.push( value );
460 - }
461 - }
462 -
463 - // Go through every key on the object,
464 - } else {
465 - for ( i in elems ) {
466 - value = callback( elems[ i ], i, arg );
467 -
468 - if ( value != null ) {
469 - ret.push( value );
470 - }
471 - }
472 - }
473 -
474 - // Flatten any nested arrays
475 - return concat.apply( [], ret );
476 - },
477 -
478 - // A global GUID counter for objects
479 - guid: 1,
480 -
481 - // jQuery.support is not used in Core but other projects attach their
482 - // properties to it so it needs to exist.
483 - support: support
484 - } );
485 -
486 - if ( typeof Symbol === "function" ) {
487 - jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];
488 - }
489 -
490 - // Populate the class2type map
491 - jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
492 - function( i, name ) {
493 - class2type[ "[object " + name + "]" ] = name.toLowerCase();
494 - } );
495 -
496 - function isArrayLike( obj ) {
497 -
498 - // Support: real iOS 8.2 only (not reproducible in simulator)
499 - // `in` check used to prevent JIT error (gh-2145)
500 - // hasOwn isn't used here due to false negatives
501 - // regarding Nodelist length in IE
502 - var length = !!obj && "length" in obj && obj.length,
503 - type = toType( obj );
504 -
505 - if ( isFunction( obj ) || isWindow( obj ) ) {
506 - return false;
507 - }
508 -
509 - return type === "array" || length === 0 ||
510 - typeof length === "number" && length > 0 && ( length - 1 ) in obj;
511 - }
512 - var Sizzle =
513 - /*!
514 - * Sizzle CSS Selector Engine v2.3.4
515 - * https://sizzlejs.com/
516 - *
517 - * Copyright JS Foundation and other contributors
518 - * Released under the MIT license
519 - * https://js.foundation/
520 - *
521 - * Date: 2019-04-08
522 - */
523 - (function( window ) {
524 -
525 - var i,
526 - support,
527 - Expr,
528 - getText,
529 - isXML,
530 - tokenize,
531 - compile,
532 - select,
533 - outermostContext,
534 - sortInput,
535 - hasDuplicate,
536 -
537 - // Local document vars
538 - setDocument,
539 - document,
540 - docElem,
541 - documentIsHTML,
542 - rbuggyQSA,
543 - rbuggyMatches,
544 - matches,
545 - contains,
546 -
547 - // Instance-specific data
548 - expando = "sizzle" + 1 * new Date(),
549 - preferredDoc = window.document,
550 - dirruns = 0,
551 - done = 0,
552 - classCache = createCache(),
553 - tokenCache = createCache(),
554 - compilerCache = createCache(),
555 - nonnativeSelectorCache = createCache(),
556 - sortOrder = function( a, b ) {
557 - if ( a === b ) {
558 - hasDuplicate = true;
559 - }
560 - return 0;
561 - },
562 -
563 - // Instance methods
564 - hasOwn = ({}).hasOwnProperty,
565 - arr = [],
566 - pop = arr.pop,
567 - push_native = arr.push,
568 - push = arr.push,
569 - slice = arr.slice,
570 - // Use a stripped-down indexOf as it's faster than native
571 - // https://jsperf.com/thor-indexof-vs-for/5
572 - indexOf = function( list, elem ) {
573 - var i = 0,
574 - len = list.length;
575 - for ( ; i < len; i++ ) {
576 - if ( list[i] === elem ) {
577 - return i;
578 - }
579 - }
580 - return -1;
581 - },
582 -
583 - booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
584 -
585 - // Regular expressions
586 -
587 - // http://www.w3.org/TR/css3-selectors/#whitespace
588 - whitespace = "[\\x20\\t\\r\\n\\f]",
589 -
590 - // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
591 - identifier = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+",
592 -
593 - // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
594 - attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace +
595 - // Operator (capture 2)
596 - "*([*^$|!~]?=)" + whitespace +
597 - // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
598 - "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace +
599 - "*\\]",
600 -
601 - pseudos = ":(" + identifier + ")(?:\\((" +
602 - // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
603 - // 1. quoted (capture 3; capture 4 or capture 5)
604 - "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
605 - // 2. simple (capture 6)
606 - "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
607 - // 3. anything else (capture 2)
608 - ".*" +
609 - ")\\)|)",
610 -
611 - // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
612 - rwhitespace = new RegExp( whitespace + "+", "g" ),
613 - rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
614 -
615 - rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
616 - rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
617 - rdescend = new RegExp( whitespace + "|>" ),
618 -
619 - rpseudo = new RegExp( pseudos ),
620 - ridentifier = new RegExp( "^" + identifier + "$" ),
621 -
622 - matchExpr = {
623 - "ID": new RegExp( "^#(" + identifier + ")" ),
624 - "CLASS": new RegExp( "^\\.(" + identifier + ")" ),
625 - "TAG": new RegExp( "^(" + identifier + "|[*])" ),
626 - "ATTR": new RegExp( "^" + attributes ),
627 - "PSEUDO": new RegExp( "^" + pseudos ),
628 - "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
629 - "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
630 - "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
631 - "bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
632 - // For use in libraries implementing .is()
633 - // We use this for POS matching in `select`
634 - "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
635 - whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
636 - },
637 -
638 - rhtml = /HTML$/i,
639 - rinputs = /^(?:input|select|textarea|button)$/i,
640 - rheader = /^h\d$/i,
641 -
642 - rnative = /^[^{]+\{\s*\[native \w/,
643 -
644 - // Easily-parseable/retrievable ID or TAG or CLASS selectors
645 - rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
646 -
647 - rsibling = /[+~]/,
648 -
649 - // CSS escapes
650 - // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
651 - runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
652 - funescape = function( _, escaped, escapedWhitespace ) {
653 - var high = "0x" + escaped - 0x10000;
654 - // NaN means non-codepoint
655 - // Support: Firefox<24
656 - // Workaround erroneous numeric interpretation of +"0x"
657 - return high !== high || escapedWhitespace ?
658 - escaped :
659 - high < 0 ?
660 - // BMP codepoint
661 - String.fromCharCode( high + 0x10000 ) :
662 - // Supplemental Plane codepoint (surrogate pair)
663 - String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
664 - },
665 -
666 - // CSS string/identifier serialization
667 - // https://drafts.csswg.org/cssom/#common-serializing-idioms
668 - rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,
669 - fcssescape = function( ch, asCodePoint ) {
670 - if ( asCodePoint ) {
671 -
672 - // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
673 - if ( ch === "\0" ) {
674 - return "\uFFFD";
675 - }
676 -
677 - // Control characters and (dependent upon position) numbers get escaped as code points
678 - return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
679 - }
680 -
681 - // Other potentially-special ASCII characters get backslash-escaped
682 - return "\\" + ch;
683 - },
684 -
685 - // Used for iframes
686 - // See setDocument()
687 - // Removing the function wrapper causes a "Permission Denied"
688 - // error in IE
689 - unloadHandler = function() {
690 - setDocument();
691 - },
692 -
693 - inDisabledFieldset = addCombinator(
694 - function( elem ) {
695 - return elem.disabled === true && elem.nodeName.toLowerCase() === "fieldset";
696 - },
697 - { dir: "parentNode", next: "legend" }
698 - );
699 -
700 - // Optimize for push.apply( _, NodeList )
701 - try {
702 - push.apply(
703 - (arr = slice.call( preferredDoc.childNodes )),
704 - preferredDoc.childNodes
705 - );
706 - // Support: Android<4.0
707 - // Detect silently failing push.apply
708 - arr[ preferredDoc.childNodes.length ].nodeType;
709 - } catch ( e ) {
710 - push = { apply: arr.length ?
711 -
712 - // Leverage slice if possible
713 - function( target, els ) {
714 - push_native.apply( target, slice.call(els) );
715 - } :
716 -
717 - // Support: IE<9
718 - // Otherwise append directly
719 - function( target, els ) {
720 - var j = target.length,
721 - i = 0;
722 - // Can't trust NodeList.length
723 - while ( (target[j++] = els[i++]) ) {}
724 - target.length = j - 1;
725 - }
726 - };
727 - }
728 -
729 - function Sizzle( selector, context, results, seed ) {
730 - var m, i, elem, nid, match, groups, newSelector,
731 - newContext = context && context.ownerDocument,
732 -
733 - // nodeType defaults to 9, since context defaults to document
734 - nodeType = context ? context.nodeType : 9;
735 -
736 - results = results || [];
737 -
738 - // Return early from calls with invalid selector or context
739 - if ( typeof selector !== "string" || !selector ||
740 - nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {
741 -
742 - return results;
743 - }
744 -
745 - // Try to shortcut find operations (as opposed to filters) in HTML documents
746 - if ( !seed ) {
747 -
748 - if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
749 - setDocument( context );
750 - }
751 - context = context || document;
752 -
753 - if ( documentIsHTML ) {
754 -
755 - // If the selector is sufficiently simple, try using a "get*By*" DOM method
756 - // (excepting DocumentFragment context, where the methods don't exist)
757 - if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {
758 -
759 - // ID selector
760 - if ( (m = match[1]) ) {
761 -
762 - // Document context
763 - if ( nodeType === 9 ) {
764 - if ( (elem = context.getElementById( m )) ) {
765 -
766 - // Support: IE, Opera, Webkit
767 - // TODO: identify versions
768 - // getElementById can match elements by name instead of ID
769 - if ( elem.id === m ) {
770 - results.push( elem );
771 - return results;
772 - }
773 - } else {
774 - return results;
775 - }
776 -
777 - // Element context
778 - } else {
779 -
780 - // Support: IE, Opera, Webkit
781 - // TODO: identify versions
782 - // getElementById can match elements by name instead of ID
783 - if ( newContext && (elem = newContext.getElementById( m )) &&
784 - contains( context, elem ) &&
785 - elem.id === m ) {
786 -
787 - results.push( elem );
788 - return results;
789 - }
790 - }
791 -
792 - // Type selector
793 - } else if ( match[2] ) {
794 - push.apply( results, context.getElementsByTagName( selector ) );
795 - return results;
796 -
797 - // Class selector
798 - } else if ( (m = match[3]) && support.getElementsByClassName &&
799 - context.getElementsByClassName ) {
800 -
801 - push.apply( results, context.getElementsByClassName( m ) );
802 - return results;
803 - }
804 - }
805 -
806 - // Take advantage of querySelectorAll
807 - if ( support.qsa &&
808 - !nonnativeSelectorCache[ selector + " " ] &&
809 - (!rbuggyQSA || !rbuggyQSA.test( selector )) &&
810 -
811 - // Support: IE 8 only
812 - // Exclude object elements
813 - (nodeType !== 1 || context.nodeName.toLowerCase() !== "object") ) {
814 -
815 - newSelector = selector;
816 - newContext = context;
817 -
818 - // qSA considers elements outside a scoping root when evaluating child or
819 - // descendant combinators, which is not what we want.
820 - // In such cases, we work around the behavior by prefixing every selector in the
821 - // list with an ID selector referencing the scope context.
822 - // Thanks to Andrew Dupont for this technique.
823 - if ( nodeType === 1 && rdescend.test( selector ) ) {
824 -
825 - // Capture the context ID, setting it first if necessary
826 - if ( (nid = context.getAttribute( "id" )) ) {
827 - nid = nid.replace( rcssescape, fcssescape );
828 - } else {
829 - context.setAttribute( "id", (nid = expando) );
830 - }
831 -
832 - // Prefix every selector in the list
833 - groups = tokenize( selector );
834 - i = groups.length;
835 - while ( i-- ) {
836 - groups[i] = "#" + nid + " " + toSelector( groups[i] );
837 - }
838 - newSelector = groups.join( "," );
839 -
840 - // Expand context for sibling selectors
841 - newContext = rsibling.test( selector ) && testContext( context.parentNode ) ||
842 - context;
843 - }
844 -
845 - try {
846 - push.apply( results,
847 - newContext.querySelectorAll( newSelector )
848 - );
849 - return results;
850 - } catch ( qsaError ) {
851 - nonnativeSelectorCache( selector, true );
852 - } finally {
853 - if ( nid === expando ) {
854 - context.removeAttribute( "id" );
855 - }
856 - }
857 - }
858 - }
859 - }
860 -
861 - // All others
862 - return select( selector.replace( rtrim, "$1" ), context, results, seed );
863 - }
864 -
865 - /**
866 - * Create key-value caches of limited size
867 - * @returns {function(string, object)} Returns the Object data after storing it on itself with
868 - * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
869 - * deleting the oldest entry
870 - */
871 - function createCache() {
872 - var keys = [];
873 -
874 - function cache( key, value ) {
875 - // Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
876 - if ( keys.push( key + " " ) > Expr.cacheLength ) {
877 - // Only keep the most recent entries
878 - delete cache[ keys.shift() ];
879 - }
880 - return (cache[ key + " " ] = value);
881 - }
882 - return cache;
883 - }
884 -
885 - /**
886 - * Mark a function for special use by Sizzle
887 - * @param {Function} fn The function to mark
888 - */
889 - function markFunction( fn ) {
890 - fn[ expando ] = true;
891 - return fn;
892 - }
893 -
894 - /**
895 - * Support testing using an element
896 - * @param {Function} fn Passed the created element and returns a boolean result
897 - */
898 - function assert( fn ) {
899 - var el = document.createElement("fieldset");
900 -
901 - try {
902 - return !!fn( el );
903 - } catch (e) {
904 - return false;
905 - } finally {
906 - // Remove from its parent by default
907 - if ( el.parentNode ) {
908 - el.parentNode.removeChild( el );
909 - }
910 - // release memory in IE
911 - el = null;
912 - }
913 - }
914 -
915 - /**
916 - * Adds the same handler for all of the specified attrs
917 - * @param {String} attrs Pipe-separated list of attributes
918 - * @param {Function} handler The method that will be applied
919 - */
920 - function addHandle( attrs, handler ) {
921 - var arr = attrs.split("|"),
922 - i = arr.length;
923 -
924 - while ( i-- ) {
925 - Expr.attrHandle[ arr[i] ] = handler;
926 - }
927 - }
928 -
929 - /**
930 - * Checks document order of two siblings
931 - * @param {Element} a
932 - * @param {Element} b
933 - * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
934 - */
935 - function siblingCheck( a, b ) {
936 - var cur = b && a,
937 - diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
938 - a.sourceIndex - b.sourceIndex;
939 -
940 - // Use IE sourceIndex if available on both nodes
941 - if ( diff ) {
942 - return diff;
943 - }
944 -
945 - // Check if b follows a
946 - if ( cur ) {
947 - while ( (cur = cur.nextSibling) ) {
948 - if ( cur === b ) {
949 - return -1;
950 - }
951 - }
952 - }
953 -
954 - return a ? 1 : -1;
955 - }
956 -
957 - /**
958 - * Returns a function to use in pseudos for input types
959 - * @param {String} type
960 - */
961 - function createInputPseudo( type ) {
962 - return function( elem ) {
963 - var name = elem.nodeName.toLowerCase();
964 - return name === "input" && elem.type === type;
965 - };
966 - }
967 -
968 - /**
969 - * Returns a function to use in pseudos for buttons
970 - * @param {String} type
971 - */
972 - function createButtonPseudo( type ) {
973 - return function( elem ) {
974 - var name = elem.nodeName.toLowerCase();
975 - return (name === "input" || name === "button") && elem.type === type;
976 - };
977 - }
978 -
979 - /**
980 - * Returns a function to use in pseudos for :enabled/:disabled
981 - * @param {Boolean} disabled true for :disabled; false for :enabled
982 - */
983 - function createDisabledPseudo( disabled ) {
984 -
985 - // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable
986 - return function( elem ) {
987 -
988 - // Only certain elements can match :enabled or :disabled
989 - // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled
990 - // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled
991 - if ( "form" in elem ) {
992 -
993 - // Check for inherited disabledness on relevant non-disabled elements:
994 - // * listed form-associated elements in a disabled fieldset
995 - // https://html.spec.whatwg.org/multipage/forms.html#category-listed
996 - // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled
997 - // * option elements in a disabled optgroup
998 - // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled
999 - // All such elements have a "form" property.
1000 - if ( elem.parentNode && elem.disabled === false ) {
1001 -
1002 - // Option elements defer to a parent optgroup if present
1003 - if ( "label" in elem ) {
1004 - if ( "label" in elem.parentNode ) {
1005 - return elem.parentNode.disabled === disabled;
1006 - } else {
1007 - return elem.disabled === disabled;
1008 - }
1009 - }
1010 -
1011 - // Support: IE 6 - 11
1012 - // Use the isDisabled shortcut property to check for disabled fieldset ancestors
1013 - return elem.isDisabled === disabled ||
1014 -
1015 - // Where there is no isDisabled, check manually
1016 - /* jshint -W018 */
1017 - elem.isDisabled !== !disabled &&
1018 - inDisabledFieldset( elem ) === disabled;
1019 - }
1020 -
1021 - return elem.disabled === disabled;
1022 -
1023 - // Try to winnow out elements that can't be disabled before trusting the disabled property.
1024 - // Some victims get caught in our net (label, legend, menu, track), but it shouldn't
1025 - // even exist on them, let alone have a boolean value.
1026 - } else if ( "label" in elem ) {
1027 - return elem.disabled === disabled;
1028 - }
1029 -
1030 - // Remaining elements are neither :enabled nor :disabled
1031 - return false;
1032 - };
1033 - }
1034 -
1035 - /**
1036 - * Returns a function to use in pseudos for positionals
1037 - * @param {Function} fn
1038 - */
1039 - function createPositionalPseudo( fn ) {
1040 - return markFunction(function( argument ) {
1041 - argument = +argument;
1042 - return markFunction(function( seed, matches ) {
1043 - var j,
1044 - matchIndexes = fn( [], seed.length, argument ),
1045 - i = matchIndexes.length;
1046 -
1047 - // Match elements found at the specified indexes
1048 - while ( i-- ) {
1049 - if ( seed[ (j = matchIndexes[i]) ] ) {
1050 - seed[j] = !(matches[j] = seed[j]);
1051 - }
1052 - }
1053 - });
1054 - });
1055 - }
1056 -
1057 - /**
1058 - * Checks a node for validity as a Sizzle context
1059 - * @param {Element|Object=} context
1060 - * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
1061 - */
1062 - function testContext( context ) {
1063 - return context && typeof context.getElementsByTagName !== "undefined" && context;
1064 - }
1065 -
1066 - // Expose support vars for convenience
1067 - support = Sizzle.support = {};
1068 -
1069 - /**
1070 - * Detects XML nodes
1071 - * @param {Element|Object} elem An element or a document
1072 - * @returns {Boolean} True iff elem is a non-HTML XML node
1073 - */
1074 - isXML = Sizzle.isXML = function( elem ) {
1075 - var namespace = elem.namespaceURI,
1076 - docElem = (elem.ownerDocument || elem).documentElement;
1077 -
1078 - // Support: IE <=8
1079 - // Assume HTML when documentElement doesn't yet exist, such as inside loading iframes
1080 - // https://bugs.jquery.com/ticket/4833
1081 - return !rhtml.test( namespace || docElem && docElem.nodeName || "HTML" );
1082 - };
1083 -
1084 - /**
1085 - * Sets document-related variables once based on the current document
1086 - * @param {Element|Object} [doc] An element or document object to use to set the document
1087 - * @returns {Object} Returns the current document
1088 - */
1089 - setDocument = Sizzle.setDocument = function( node ) {
1090 - var hasCompare, subWindow,
1091 - doc = node ? node.ownerDocument || node : preferredDoc;
1092 -
1093 - // Return early if doc is invalid or already selected
1094 - if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
1095 - return document;
1096 - }
1097 -
1098 - // Update global variables
1099 - document = doc;
1100 - docElem = document.documentElement;
1101 - documentIsHTML = !isXML( document );
1102 -
1103 - // Support: IE 9-11, Edge
1104 - // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936)
1105 - if ( preferredDoc !== document &&
1106 - (subWindow = document.defaultView) && subWindow.top !== subWindow ) {
1107 -
1108 - // Support: IE 11, Edge
1109 - if ( subWindow.addEventListener ) {
1110 - subWindow.addEventListener( "unload", unloadHandler, false );
1111 -
1112 - // Support: IE 9 - 10 only
1113 - } else if ( subWindow.attachEvent ) {
1114 - subWindow.attachEvent( "onunload", unloadHandler );
1115 - }
1116 - }
1117 -
1118 - /* Attributes
1119 - ---------------------------------------------------------------------- */
1120 -
1121 - // Support: IE<8
1122 - // Verify that getAttribute really returns attributes and not properties
1123 - // (excepting IE8 booleans)
1124 - support.attributes = assert(function( el ) {
1125 - el.className = "i";
1126 - return !el.getAttribute("className");
1127 - });
1128 -
1129 - /* getElement(s)By*
1130 - ---------------------------------------------------------------------- */
1131 -
1132 - // Check if getElementsByTagName("*") returns only elements
1133 - support.getElementsByTagName = assert(function( el ) {
1134 - el.appendChild( document.createComment("") );
1135 - return !el.getElementsByTagName("*").length;
1136 - });
1137 -
1138 - // Support: IE<9
1139 - support.getElementsByClassName = rnative.test( document.getElementsByClassName );
1140 -
1141 - // Support: IE<10
1142 - // Check if getElementById returns elements by name
1143 - // The broken getElementById methods don't pick up programmatically-set names,
1144 - // so use a roundabout getElementsByName test
1145 - support.getById = assert(function( el ) {
1146 - docElem.appendChild( el ).id = expando;
1147 - return !document.getElementsByName || !document.getElementsByName( expando ).length;
1148 - });
1149 -
1150 - // ID filter and find
1151 - if ( support.getById ) {
1152 - Expr.filter["ID"] = function( id ) {
1153 - var attrId = id.replace( runescape, funescape );
1154 - return function( elem ) {
1155 - return elem.getAttribute("id") === attrId;
1156 - };
1157 - };
1158 - Expr.find["ID"] = function( id, context ) {
1159 - if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
1160 - var elem = context.getElementById( id );
1161 - return elem ? [ elem ] : [];
1162 - }
1163 - };
1164 - } else {
1165 - Expr.filter["ID"] = function( id ) {
1166 - var attrId = id.replace( runescape, funescape );
1167 - return function( elem ) {
1168 - var node = typeof elem.getAttributeNode !== "undefined" &&
1169 - elem.getAttributeNode("id");
1170 - return node && node.value === attrId;
1171 - };
1172 - };
1173 -
1174 - // Support: IE 6 - 7 only
1175 - // getElementById is not reliable as a find shortcut
1176 - Expr.find["ID"] = function( id, context ) {
1177 - if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
1178 - var node, i, elems,
1179 - elem = context.getElementById( id );
1180 -
1181 - if ( elem ) {
1182 -
1183 - // Verify the id attribute
1184 - node = elem.getAttributeNode("id");
1185 - if ( node && node.value === id ) {
1186 - return [ elem ];
1187 - }
1188 -
1189 - // Fall back on getElementsByName
1190 - elems = context.getElementsByName( id );
1191 - i = 0;
1192 - while ( (elem = elems[i++]) ) {
1193 - node = elem.getAttributeNode("id");
1194 - if ( node && node.value === id ) {
1195 - return [ elem ];
1196 - }
1197 - }
1198 - }
1199 -
1200 - return [];
1201 - }
1202 - };
1203 - }
1204 -
1205 - // Tag
1206 - Expr.find["TAG"] = support.getElementsByTagName ?
1207 - function( tag, context ) {
1208 - if ( typeof context.getElementsByTagName !== "undefined" ) {
1209 - return context.getElementsByTagName( tag );
1210 -
1211 - // DocumentFragment nodes don't have gEBTN
1212 - } else if ( support.qsa ) {
1213 - return context.querySelectorAll( tag );
1214 - }
1215 - } :
1216 -
1217 - function( tag, context ) {
1218 - var elem,
1219 - tmp = [],
1220 - i = 0,
1221 - // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too
1222 - results = context.getElementsByTagName( tag );
1223 -
1224 - // Filter out possible comments
1225 - if ( tag === "*" ) {
1226 - while ( (elem = results[i++]) ) {
1227 - if ( elem.nodeType === 1 ) {
1228 - tmp.push( elem );
1229 - }
1230 - }
1231 -
1232 - return tmp;
1233 - }
1234 - return results;
1235 - };
1236 -
1237 - // Class
1238 - Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
1239 - if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) {
1240 - return context.getElementsByClassName( className );
1241 - }
1242 - };
1243 -
1244 - /* QSA/matchesSelector
1245 - ---------------------------------------------------------------------- */
1246 -
1247 - // QSA and matchesSelector support
1248 -
1249 - // matchesSelector(:active) reports false when true (IE9/Opera 11.5)
1250 - rbuggyMatches = [];
1251 -
1252 - // qSa(:focus) reports false when true (Chrome 21)
1253 - // We allow this because of a bug in IE8/9 that throws an error
1254 - // whenever `document.activeElement` is accessed on an iframe
1255 - // So, we allow :focus to pass through QSA all the time to avoid the IE error
1256 - // See https://bugs.jquery.com/ticket/13378
1257 - rbuggyQSA = [];
1258 -
1259 - if ( (support.qsa = rnative.test( document.querySelectorAll )) ) {
1260 - // Build QSA regex
1261 - // Regex strategy adopted from Diego Perini
1262 - assert(function( el ) {
1263 - // Select is set to empty string on purpose
1264 - // This is to test IE's treatment of not explicitly
1265 - // setting a boolean content attribute,
1266 - // since its presence should be enough
1267 - // https://bugs.jquery.com/ticket/12359
1268 - docElem.appendChild( el ).innerHTML = "<a id='" + expando + "'></a>" +
1269 - "<select id='" + expando + "-\r\\' msallowcapture=''>" +
1270 - "<option selected=''></option></select>";
1271 -
1272 - // Support: IE8, Opera 11-12.16
1273 - // Nothing should be selected when empty strings follow ^= or $= or *=
1274 - // The test attribute must be unknown in Opera but "safe" for WinRT
1275 - // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
1276 - if ( el.querySelectorAll("[msallowcapture^='']").length ) {
1277 - rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
1278 - }
1279 -
1280 - // Support: IE8
1281 - // Boolean attributes and "value" are not treated correctly
1282 - if ( !el.querySelectorAll("[selected]").length ) {
1283 - rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
1284 - }
1285 -
1286 - // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+
1287 - if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
1288 - rbuggyQSA.push("~=");
1289 - }
1290 -
1291 - // Webkit/Opera - :checked should return selected option elements
1292 - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
1293 - // IE8 throws error here and will not see later tests
1294 - if ( !el.querySelectorAll(":checked").length ) {
1295 - rbuggyQSA.push(":checked");
1296 - }
1297 -
1298 - // Support: Safari 8+, iOS 8+
1299 - // https://bugs.webkit.org/show_bug.cgi?id=136851
1300 - // In-page `selector#id sibling-combinator selector` fails
1301 - if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) {
1302 - rbuggyQSA.push(".#.+[+~]");
1303 - }
1304 - });
1305 -
1306 - assert(function( el ) {
1307 - el.innerHTML = "<a href='' disabled='disabled'></a>" +
1308 - "<select disabled='disabled'><option/></select>";
1309 -
1310 - // Support: Windows 8 Native Apps
1311 - // The type and name attributes are restricted during .innerHTML assignment
1312 - var input = document.createElement("input");
1313 - input.setAttribute( "type", "hidden" );
1314 - el.appendChild( input ).setAttribute( "name", "D" );
1315 -
1316 - // Support: IE8
1317 - // Enforce case-sensitivity of name attribute
1318 - if ( el.querySelectorAll("[name=d]").length ) {
1319 - rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
1320 - }
1321 -
1322 - // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
1323 - // IE8 throws error here and will not see later tests
1324 - if ( el.querySelectorAll(":enabled").length !== 2 ) {
1325 - rbuggyQSA.push( ":enabled", ":disabled" );
1326 - }
1327 -
1328 - // Support: IE9-11+
1329 - // IE's :disabled selector does not pick up the children of disabled fieldsets
1330 - docElem.appendChild( el ).disabled = true;
1331 - if ( el.querySelectorAll(":disabled").length !== 2 ) {
1332 - rbuggyQSA.push( ":enabled", ":disabled" );
1333 - }
1334 -
1335 - // Opera 10-11 does not throw on post-comma invalid pseudos
1336 - el.querySelectorAll("*,:x");
1337 - rbuggyQSA.push(",.*:");
1338 - });
1339 - }
1340 -
1341 - if ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||
1342 - docElem.webkitMatchesSelector ||
1343 - docElem.mozMatchesSelector ||
1344 - docElem.oMatchesSelector ||
1345 - docElem.msMatchesSelector) )) ) {
1346 -
1347 - assert(function( el ) {
1348 - // Check to see if it's possible to do matchesSelector
1349 - // on a disconnected node (IE 9)
1350 - support.disconnectedMatch = matches.call( el, "*" );
1351 -
1352 - // This should fail with an exception
1353 - // Gecko does not error, returns false instead
1354 - matches.call( el, "[s!='']:x" );
1355 - rbuggyMatches.push( "!=", pseudos );
1356 - });
1357 - }
1358 -
1359 - rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
1360 - rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
1361 -
1362 - /* Contains
1363 - ---------------------------------------------------------------------- */
1364 - hasCompare = rnative.test( docElem.compareDocumentPosition );
1365 -
1366 - // Element contains another
1367 - // Purposefully self-exclusive
1368 - // As in, an element does not contain itself
1369 - contains = hasCompare || rnative.test( docElem.contains ) ?
1370 - function( a, b ) {
1371 - var adown = a.nodeType === 9 ? a.documentElement : a,
1372 - bup = b && b.parentNode;
1373 - return a === bup || !!( bup && bup.nodeType === 1 && (
1374 - adown.contains ?
1375 - adown.contains( bup ) :
1376 - a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
1377 - ));
1378 - } :
1379 - function( a, b ) {
1380 - if ( b ) {
1381 - while ( (b = b.parentNode) ) {
1382 - if ( b === a ) {
1383 - return true;
1384 - }
1385 - }
1386 - }
1387 - return false;
1388 - };
1389 -
1390 - /* Sorting
1391 - ---------------------------------------------------------------------- */
1392 -
1393 - // Document order sorting
1394 - sortOrder = hasCompare ?
1395 - function( a, b ) {
1396 -
1397 - // Flag for duplicate removal
1398 - if ( a === b ) {
1399 - hasDuplicate = true;
1400 - return 0;
1401 - }
1402 -
1403 - // Sort on method existence if only one input has compareDocumentPosition
1404 - var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
1405 - if ( compare ) {
1406 - return compare;
1407 - }
1408 -
1409 - // Calculate position if both inputs belong to the same document
1410 - compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
1411 - a.compareDocumentPosition( b ) :
1412 -
1413 - // Otherwise we know they are disconnected
1414 - 1;
1415 -
1416 - // Disconnected nodes
1417 - if ( compare & 1 ||
1418 - (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
1419 -
1420 - // Choose the first element that is related to our preferred document
1421 - if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {
1422 - return -1;
1423 - }
1424 - if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {
1425 - return 1;
1426 - }
1427 -
1428 - // Maintain original order
1429 - return sortInput ?
1430 - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
1431 - 0;
1432 - }
1433 -
1434 - return compare & 4 ? -1 : 1;
1435 - } :
1436 - function( a, b ) {
1437 - // Exit early if the nodes are identical
1438 - if ( a === b ) {
1439 - hasDuplicate = true;
1440 - return 0;
1441 - }
1442 -
1443 - var cur,
1444 - i = 0,
1445 - aup = a.parentNode,
1446 - bup = b.parentNode,
1447 - ap = [ a ],
1448 - bp = [ b ];
1449 -
1450 - // Parentless nodes are either documents or disconnected
1451 - if ( !aup || !bup ) {
1452 - return a === document ? -1 :
1453 - b === document ? 1 :
1454 - aup ? -1 :
1455 - bup ? 1 :
1456 - sortInput ?
1457 - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
1458 - 0;
1459 -
1460 - // If the nodes are siblings, we can do a quick check
1461 - } else if ( aup === bup ) {
1462 - return siblingCheck( a, b );
1463 - }
1464 -
1465 - // Otherwise we need full lists of their ancestors for comparison
1466 - cur = a;
1467 - while ( (cur = cur.parentNode) ) {
1468 - ap.unshift( cur );
1469 - }
1470 - cur = b;
1471 - while ( (cur = cur.parentNode) ) {
1472 - bp.unshift( cur );
1473 - }
1474 -
1475 - // Walk down the tree looking for a discrepancy
1476 - while ( ap[i] === bp[i] ) {
1477 - i++;
1478 - }
1479 -
1480 - return i ?
1481 - // Do a sibling check if the nodes have a common ancestor
1482 - siblingCheck( ap[i], bp[i] ) :
1483 -
1484 - // Otherwise nodes in our document sort first
1485 - ap[i] === preferredDoc ? -1 :
1486 - bp[i] === preferredDoc ? 1 :
1487 - 0;
1488 - };
1489 -
1490 - return document;
1491 - };
1492 -
1493 - Sizzle.matches = function( expr, elements ) {
1494 - return Sizzle( expr, null, null, elements );
1495 - };
1496 -
1497 - Sizzle.matchesSelector = function( elem, expr ) {
1498 - // Set document vars if needed
1499 - if ( ( elem.ownerDocument || elem ) !== document ) {
1500 - setDocument( elem );
1501 - }
1502 -
1503 - if ( support.matchesSelector && documentIsHTML &&
1504 - !nonnativeSelectorCache[ expr + " " ] &&
1505 - ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
1506 - ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {
1507 -
1508 - try {
1509 - var ret = matches.call( elem, expr );
1510 -
1511 - // IE 9's matchesSelector returns false on disconnected nodes
1512 - if ( ret || support.disconnectedMatch ||
1513 - // As well, disconnected nodes are said to be in a document
1514 - // fragment in IE 9
1515 - elem.document && elem.document.nodeType !== 11 ) {
1516 - return ret;
1517 - }
1518 - } catch (e) {
1519 - nonnativeSelectorCache( expr, true );
1520 - }
1521 - }
1522 -
1523 - return Sizzle( expr, document, null, [ elem ] ).length > 0;
1524 - };
1525 -
1526 - Sizzle.contains = function( context, elem ) {
1527 - // Set document vars if needed
1528 - if ( ( context.ownerDocument || context ) !== document ) {
1529 - setDocument( context );
1530 - }
1531 - return contains( context, elem );
1532 - };
1533 -
1534 - Sizzle.attr = function( elem, name ) {
1535 - // Set document vars if needed
1536 - if ( ( elem.ownerDocument || elem ) !== document ) {
1537 - setDocument( elem );
1538 - }
1539 -
1540 - var fn = Expr.attrHandle[ name.toLowerCase() ],
1541 - // Don't get fooled by Object.prototype properties (jQuery #13807)
1542 - val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
1543 - fn( elem, name, !documentIsHTML ) :
1544 - undefined;
1545 -
1546 - return val !== undefined ?
1547 - val :
1548 - support.attributes || !documentIsHTML ?
1549 - elem.getAttribute( name ) :
1550 - (val = elem.getAttributeNode(name)) && val.specified ?
1551 - val.value :
1552 - null;
1553 - };
1554 -
1555 - Sizzle.escape = function( sel ) {
1556 - return (sel + "").replace( rcssescape, fcssescape );
1557 - };
1558 -
1559 - Sizzle.error = function( msg ) {
1560 - throw new Error( "Syntax error, unrecognized expression: " + msg );
1561 - };
1562 -
1563 - /**
1564 - * Document sorting and removing duplicates
1565 - * @param {ArrayLike} results
1566 - */
1567 - Sizzle.uniqueSort = function( results ) {
1568 - var elem,
1569 - duplicates = [],
1570 - j = 0,
1571 - i = 0;
1572 -
1573 - // Unless we *know* we can detect duplicates, assume their presence
1574 - hasDuplicate = !support.detectDuplicates;
1575 - sortInput = !support.sortStable && results.slice( 0 );
1576 - results.sort( sortOrder );
1577 -
1578 - if ( hasDuplicate ) {
1579 - while ( (elem = results[i++]) ) {
1580 - if ( elem === results[ i ] ) {
1581 - j = duplicates.push( i );
1582 - }
1583 - }
1584 - while ( j-- ) {
1585 - results.splice( duplicates[ j ], 1 );
1586 - }
1587 - }
1588 -
1589 - // Clear input after sorting to release objects
1590 - // See https://github.com/jquery/sizzle/pull/225
1591 - sortInput = null;
1592 -
1593 - return results;
1594 - };
1595 -
1596 - /**
1597 - * Utility function for retrieving the text value of an array of DOM nodes
1598 - * @param {Array|Element} elem
1599 - */
1600 - getText = Sizzle.getText = function( elem ) {
1601 - var node,
1602 - ret = "",
1603 - i = 0,
1604 - nodeType = elem.nodeType;
1605 -
1606 - if ( !nodeType ) {
1607 - // If no nodeType, this is expected to be an array
1608 - while ( (node = elem[i++]) ) {
1609 - // Do not traverse comment nodes
1610 - ret += getText( node );
1611 - }
1612 - } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
1613 - // Use textContent for elements
1614 - // innerText usage removed for consistency of new lines (jQuery #11153)
1615 - if ( typeof elem.textContent === "string" ) {
1616 - return elem.textContent;
1617 - } else {
1618 - // Traverse its children
1619 - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
1620 - ret += getText( elem );
1621 - }
1622 - }
1623 - } else if ( nodeType === 3 || nodeType === 4 ) {
1624 - return elem.nodeValue;
1625 - }
1626 - // Do not include comment or processing instruction nodes
1627 -
1628 - return ret;
1629 - };
1630 -
1631 - Expr = Sizzle.selectors = {
1632 -
1633 - // Can be adjusted by the user
1634 - cacheLength: 50,
1635 -
1636 - createPseudo: markFunction,
1637 -
1638 - match: matchExpr,
1639 -
1640 - attrHandle: {},
1641 -
1642 - find: {},
1643 -
1644 - relative: {
1645 - ">": { dir: "parentNode", first: true },
1646 - " ": { dir: "parentNode" },
1647 - "+": { dir: "previousSibling", first: true },
1648 - "~": { dir: "previousSibling" }
1649 - },
1650 -
1651 - preFilter: {
1652 - "ATTR": function( match ) {
1653 - match[1] = match[1].replace( runescape, funescape );
1654 -
1655 - // Move the given value to match[3] whether quoted or unquoted
1656 - match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape );
1657 -
1658 - if ( match[2] === "~=" ) {
1659 - match[3] = " " + match[3] + " ";
1660 - }
1661 -
1662 - return match.slice( 0, 4 );
1663 - },
1664 -
1665 - "CHILD": function( match ) {
1666 - /* matches from matchExpr["CHILD"]
1667 - 1 type (only|nth|...)
1668 - 2 what (child|of-type)
1669 - 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
1670 - 4 xn-component of xn+y argument ([+-]?\d*n|)
1671 - 5 sign of xn-component
1672 - 6 x of xn-component
1673 - 7 sign of y-component
1674 - 8 y of y-component
1675 - */
1676 - match[1] = match[1].toLowerCase();
1677 -
1678 - if ( match[1].slice( 0, 3 ) === "nth" ) {
1679 - // nth-* requires argument
1680 - if ( !match[3] ) {
1681 - Sizzle.error( match[0] );
1682 - }
1683 -
1684 - // numeric x and y parameters for Expr.filter.CHILD
1685 - // remember that false/true cast respectively to 0/1
1686 - match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
1687 - match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
1688 -
1689 - // other types prohibit arguments
1690 - } else if ( match[3] ) {
1691 - Sizzle.error( match[0] );
1692 - }
1693 -
1694 - return match;
1695 - },
1696 -
1697 - "PSEUDO": function( match ) {
1698 - var excess,
1699 - unquoted = !match[6] && match[2];
1700 -
1701 - if ( matchExpr["CHILD"].test( match[0] ) ) {
1702 - return null;
1703 - }
1704 -
1705 - // Accept quoted arguments as-is
1706 - if ( match[3] ) {
1707 - match[2] = match[4] || match[5] || "";
1708 -
1709 - // Strip excess characters from unquoted arguments
1710 - } else if ( unquoted && rpseudo.test( unquoted ) &&
1711 - // Get excess from tokenize (recursively)
1712 - (excess = tokenize( unquoted, true )) &&
1713 - // advance to the next closing parenthesis
1714 - (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
1715 -
1716 - // excess is a negative index
1717 - match[0] = match[0].slice( 0, excess );
1718 - match[2] = unquoted.slice( 0, excess );
1719 - }
1720 -
1721 - // Return only captures needed by the pseudo filter method (type and argument)
1722 - return match.slice( 0, 3 );
1723 - }
1724 - },
1725 -
1726 - filter: {
1727 -
1728 - "TAG": function( nodeNameSelector ) {
1729 - var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
1730 - return nodeNameSelector === "*" ?
1731 - function() { return true; } :
1732 - function( elem ) {
1733 - return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
1734 - };
1735 - },
1736 -
1737 - "CLASS": function( className ) {
1738 - var pattern = classCache[ className + " " ];
1739 -
1740 - return pattern ||
1741 - (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
1742 - classCache( className, function( elem ) {
1743 - return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" );
1744 - });
1745 - },
1746 -
1747 - "ATTR": function( name, operator, check ) {
1748 - return function( elem ) {
1749 - var result = Sizzle.attr( elem, name );
1750 -
1751 - if ( result == null ) {
1752 - return operator === "!=";
1753 - }
1754 - if ( !operator ) {
1755 - return true;
1756 - }
1757 -
1758 - result += "";
1759 -
1760 - return operator === "=" ? result === check :
1761 - operator === "!=" ? result !== check :
1762 - operator === "^=" ? check && result.indexOf( check ) === 0 :
1763 - operator === "*=" ? check && result.indexOf( check ) > -1 :
1764 - operator === "$=" ? check && result.slice( -check.length ) === check :
1765 - operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 :
1766 - operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
1767 - false;
1768 - };
1769 - },
1770 -
1771 - "CHILD": function( type, what, argument, first, last ) {
1772 - var simple = type.slice( 0, 3 ) !== "nth",
1773 - forward = type.slice( -4 ) !== "last",
1774 - ofType = what === "of-type";
1775 -
1776 - return first === 1 && last === 0 ?
1777 -
1778 - // Shortcut for :nth-*(n)
1779 - function( elem ) {
1780 - return !!elem.parentNode;
1781 - } :
1782 -
1783 - function( elem, context, xml ) {
1784 - var cache, uniqueCache, outerCache, node, nodeIndex, start,
1785 - dir = simple !== forward ? "nextSibling" : "previousSibling",
1786 - parent = elem.parentNode,
1787 - name = ofType && elem.nodeName.toLowerCase(),
1788 - useCache = !xml && !ofType,
1789 - diff = false;
1790 -
1791 - if ( parent ) {
1792 -
1793 - // :(first|last|only)-(child|of-type)
1794 - if ( simple ) {
1795 - while ( dir ) {
1796 - node = elem;
1797 - while ( (node = node[ dir ]) ) {
1798 - if ( ofType ?
1799 - node.nodeName.toLowerCase() === name :
1800 - node.nodeType === 1 ) {
1801 -
1802 - return false;
1803 - }
1804 - }
1805 - // Reverse direction for :only-* (if we haven't yet done so)
1806 - start = dir = type === "only" && !start && "nextSibling";
1807 - }
1808 - return true;
1809 - }
1810 -
1811 - start = [ forward ? parent.firstChild : parent.lastChild ];
1812 -
1813 - // non-xml :nth-child(...) stores cache data on `parent`
1814 - if ( forward && useCache ) {
1815 -
1816 - // Seek `elem` from a previously-cached index
1817 -
1818 - // ...in a gzip-friendly way
1819 - node = parent;
1820 - outerCache = node[ expando ] || (node[ expando ] = {});
1821 -
1822 - // Support: IE <9 only
1823 - // Defend against cloned attroperties (jQuery gh-1709)
1824 - uniqueCache = outerCache[ node.uniqueID ] ||
1825 - (outerCache[ node.uniqueID ] = {});
1826 -
1827 - cache = uniqueCache[ type ] || [];
1828 - nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
1829 - diff = nodeIndex && cache[ 2 ];
1830 - node = nodeIndex && parent.childNodes[ nodeIndex ];
1831 -
1832 - while ( (node = ++nodeIndex && node && node[ dir ] ||
1833 -
1834 - // Fallback to seeking `elem` from the start
1835 - (diff = nodeIndex = 0) || start.pop()) ) {
1836 -
1837 - // When found, cache indexes on `parent` and break
1838 - if ( node.nodeType === 1 && ++diff && node === elem ) {
1839 - uniqueCache[ type ] = [ dirruns, nodeIndex, diff ];
1840 - break;
1841 - }
1842 - }
1843 -
1844 - } else {
1845 - // Use previously-cached element index if available
1846 - if ( useCache ) {
1847 - // ...in a gzip-friendly way
1848 - node = elem;
1849 - outerCache = node[ expando ] || (node[ expando ] = {});
1850 -
1851 - // Support: IE <9 only
1852 - // Defend against cloned attroperties (jQuery gh-1709)
1853 - uniqueCache = outerCache[ node.uniqueID ] ||
1854 - (outerCache[ node.uniqueID ] = {});
1855 -
1856 - cache = uniqueCache[ type ] || [];
1857 - nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
1858 - diff = nodeIndex;
1859 - }
1860 -
1861 - // xml :nth-child(...)
1862 - // or :nth-last-child(...) or :nth(-last)?-of-type(...)
1863 - if ( diff === false ) {
1864 - // Use the same loop as above to seek `elem` from the start
1865 - while ( (node = ++nodeIndex && node && node[ dir ] ||
1866 - (diff = nodeIndex = 0) || start.pop()) ) {
1867 -
1868 - if ( ( ofType ?
1869 - node.nodeName.toLowerCase() === name :
1870 - node.nodeType === 1 ) &&
1871 - ++diff ) {
1872 -
1873 - // Cache the index of each encountered element
1874 - if ( useCache ) {
1875 - outerCache = node[ expando ] || (node[ expando ] = {});
1876 -
1877 - // Support: IE <9 only
1878 - // Defend against cloned attroperties (jQuery gh-1709)
1879 - uniqueCache = outerCache[ node.uniqueID ] ||
1880 - (outerCache[ node.uniqueID ] = {});
1881 -
1882 - uniqueCache[ type ] = [ dirruns, diff ];
1883 - }
1884 -
1885 - if ( node === elem ) {
1886 - break;
1887 - }
1888 - }
1889 - }
1890 - }
1891 - }
1892 -
1893 - // Incorporate the offset, then check against cycle size
1894 - diff -= last;
1895 - return diff === first || ( diff % first === 0 && diff / first >= 0 );
1896 - }
1897 - };
1898 - },
1899 -
1900 - "PSEUDO": function( pseudo, argument ) {
1901 - // pseudo-class names are case-insensitive
1902 - // http://www.w3.org/TR/selectors/#pseudo-classes
1903 - // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
1904 - // Remember that setFilters inherits from pseudos
1905 - var args,
1906 - fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
1907 - Sizzle.error( "unsupported pseudo: " + pseudo );
1908 -
1909 - // The user may use createPseudo to indicate that
1910 - // arguments are needed to create the filter function
1911 - // just as Sizzle does
1912 - if ( fn[ expando ] ) {
1913 - return fn( argument );
1914 - }
1915 -
1916 - // But maintain support for old signatures
1917 - if ( fn.length > 1 ) {
1918 - args = [ pseudo, pseudo, "", argument ];
1919 - return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
1920 - markFunction(function( seed, matches ) {
1921 - var idx,
1922 - matched = fn( seed, argument ),
1923 - i = matched.length;
1924 - while ( i-- ) {
1925 - idx = indexOf( seed, matched[i] );
1926 - seed[ idx ] = !( matches[ idx ] = matched[i] );
1927 - }
1928 - }) :
1929 - function( elem ) {
1930 - return fn( elem, 0, args );
1931 - };
1932 - }
1933 -
1934 - return fn;
1935 - }
1936 - },
1937 -
1938 - pseudos: {
1939 - // Potentially complex pseudos
1940 - "not": markFunction(function( selector ) {
1941 - // Trim the selector passed to compile
1942 - // to avoid treating leading and trailing
1943 - // spaces as combinators
1944 - var input = [],
1945 - results = [],
1946 - matcher = compile( selector.replace( rtrim, "$1" ) );
1947 -
1948 - return matcher[ expando ] ?
1949 - markFunction(function( seed, matches, context, xml ) {
1950 - var elem,
1951 - unmatched = matcher( seed, null, xml, [] ),
1952 - i = seed.length;
1953 -
1954 - // Match elements unmatched by `matcher`
1955 - while ( i-- ) {
1956 - if ( (elem = unmatched[i]) ) {
1957 - seed[i] = !(matches[i] = elem);
1958 - }
1959 - }
1960 - }) :
1961 - function( elem, context, xml ) {
1962 - input[0] = elem;
1963 - matcher( input, null, xml, results );
1964 - // Don't keep the element (issue #299)
1965 - input[0] = null;
1966 - return !results.pop();
1967 - };
1968 - }),
1969 -
1970 - "has": markFunction(function( selector ) {
1971 - return function( elem ) {
1972 - return Sizzle( selector, elem ).length > 0;
1973 - };
1974 - }),
1975 -
1976 - "contains": markFunction(function( text ) {
1977 - text = text.replace( runescape, funescape );
1978 - return function( elem ) {
1979 - return ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;
1980 - };
1981 - }),
1982 -
1983 - // "Whether an element is represented by a :lang() selector
1984 - // is based solely on the element's language value
1985 - // being equal to the identifier C,
1986 - // or beginning with the identifier C immediately followed by "-".
1987 - // The matching of C against the element's language value is performed case-insensitively.
1988 - // The identifier C does not have to be a valid language name."
1989 - // http://www.w3.org/TR/selectors/#lang-pseudo
1990 - "lang": markFunction( function( lang ) {
1991 - // lang value must be a valid identifier
1992 - if ( !ridentifier.test(lang || "") ) {
1993 - Sizzle.error( "unsupported lang: " + lang );
1994 - }
1995 - lang = lang.replace( runescape, funescape ).toLowerCase();
1996 - return function( elem ) {
1997 - var elemLang;
1998 - do {
1999 - if ( (elemLang = documentIsHTML ?
2000 - elem.lang :
2001 - elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {
2002 -
2003 - elemLang = elemLang.toLowerCase();
2004 - return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
2005 - }
2006 - } while ( (elem = elem.parentNode) && elem.nodeType === 1 );
2007 - return false;
2008 - };
2009 - }),
2010 -
2011 - // Miscellaneous
2012 - "target": function( elem ) {
2013 - var hash = window.location && window.location.hash;
2014 - return hash && hash.slice( 1 ) === elem.id;
2015 - },
2016 -
2017 - "root": function( elem ) {
2018 - return elem === docElem;
2019 - },
2020 -
2021 - "focus": function( elem ) {
2022 - return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
2023 - },
2024 -
2025 - // Boolean properties
2026 - "enabled": createDisabledPseudo( false ),
2027 - "disabled": createDisabledPseudo( true ),
2028 -
2029 - "checked": function( elem ) {
2030 - // In CSS3, :checked should return both checked and selected elements
2031 - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
2032 - var nodeName = elem.nodeName.toLowerCase();
2033 - return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
2034 - },
2035 -
2036 - "selected": function( elem ) {
2037 - // Accessing this property makes selected-by-default
2038 - // options in Safari work properly
2039 - if ( elem.parentNode ) {
2040 - elem.parentNode.selectedIndex;
2041 - }
2042 -
2043 - return elem.selected === true;
2044 - },
2045 -
2046 - // Contents
2047 - "empty": function( elem ) {
2048 - // http://www.w3.org/TR/selectors/#empty-pseudo
2049 - // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
2050 - // but not by others (comment: 8; processing instruction: 7; etc.)
2051 - // nodeType < 6 works because attributes (2) do not appear as children
2052 - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
2053 - if ( elem.nodeType < 6 ) {
2054 - return false;
2055 - }
2056 - }
2057 - return true;
2058 - },
2059 -
2060 - "parent": function( elem ) {
2061 - return !Expr.pseudos["empty"]( elem );
2062 - },
2063 -
2064 - // Element/input types
2065 - "header": function( elem ) {
2066 - return rheader.test( elem.nodeName );
2067 - },
2068 -
2069 - "input": function( elem ) {
2070 - return rinputs.test( elem.nodeName );
2071 - },
2072 -
2073 - "button": function( elem ) {
2074 - var name = elem.nodeName.toLowerCase();
2075 - return name === "input" && elem.type === "button" || name === "button";
2076 - },
2077 -
2078 - "text": function( elem ) {
2079 - var attr;
2080 - return elem.nodeName.toLowerCase() === "input" &&
2081 - elem.type === "text" &&
2082 -
2083 - // Support: IE<8
2084 - // New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
2085 - ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" );
2086 - },
2087 -
2088 - // Position-in-collection
2089 - "first": createPositionalPseudo(function() {
2090 - return [ 0 ];
2091 - }),
2092 -
2093 - "last": createPositionalPseudo(function( matchIndexes, length ) {
2094 - return [ length - 1 ];
2095 - }),
2096 -
2097 - "eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
2098 - return [ argument < 0 ? argument + length : argument ];
2099 - }),
2100 -
2101 - "even": createPositionalPseudo(function( matchIndexes, length ) {
2102 - var i = 0;
2103 - for ( ; i < length; i += 2 ) {
2104 - matchIndexes.push( i );
2105 - }
2106 - return matchIndexes;
2107 - }),
2108 -
2109 - "odd": createPositionalPseudo(function( matchIndexes, length ) {
2110 - var i = 1;
2111 - for ( ; i < length; i += 2 ) {
2112 - matchIndexes.push( i );
2113 - }
2114 - return matchIndexes;
2115 - }),
2116 -
2117 - "lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
2118 - var i = argument < 0 ?
2119 - argument + length :
2120 - argument > length ?
2121 - length :
2122 - argument;
2123 - for ( ; --i >= 0; ) {
2124 - matchIndexes.push( i );
2125 - }
2126 - return matchIndexes;
2127 - }),
2128 -
2129 - "gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
2130 - var i = argument < 0 ? argument + length : argument;
2131 - for ( ; ++i < length; ) {
2132 - matchIndexes.push( i );
2133 - }
2134 - return matchIndexes;
2135 - })
2136 - }
2137 - };
2138 -
2139 - Expr.pseudos["nth"] = Expr.pseudos["eq"];
2140 -
2141 - // Add button/input type pseudos
2142 - for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
2143 - Expr.pseudos[ i ] = createInputPseudo( i );
2144 - }
2145 - for ( i in { submit: true, reset: true } ) {
2146 - Expr.pseudos[ i ] = createButtonPseudo( i );
2147 - }
2148 -
2149 - // Easy API for creating new setFilters
2150 - function setFilters() {}
2151 - setFilters.prototype = Expr.filters = Expr.pseudos;
2152 - Expr.setFilters = new setFilters();
2153 -
2154 - tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
2155 - var matched, match, tokens, type,
2156 - soFar, groups, preFilters,
2157 - cached = tokenCache[ selector + " " ];
2158 -
2159 - if ( cached ) {
2160 - return parseOnly ? 0 : cached.slice( 0 );
2161 - }
2162 -
2163 - soFar = selector;
2164 - groups = [];
2165 - preFilters = Expr.preFilter;
2166 -
2167 - while ( soFar ) {
2168 -
2169 - // Comma and first run
2170 - if ( !matched || (match = rcomma.exec( soFar )) ) {
2171 - if ( match ) {
2172 - // Don't consume trailing commas as valid
2173 - soFar = soFar.slice( match[0].length ) || soFar;
2174 - }
2175 - groups.push( (tokens = []) );
2176 - }
2177 -
2178 - matched = false;
2179 -
2180 - // Combinators
2181 - if ( (match = rcombinators.exec( soFar )) ) {
2182 - matched = match.shift();
2183 - tokens.push({
2184 - value: matched,
2185 - // Cast descendant combinators to space
2186 - type: match[0].replace( rtrim, " " )
2187 - });
2188 - soFar = soFar.slice( matched.length );
2189 - }
2190 -
2191 - // Filters
2192 - for ( type in Expr.filter ) {
2193 - if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
2194 - (match = preFilters[ type ]( match ))) ) {
2195 - matched = match.shift();
2196 - tokens.push({
2197 - value: matched,
2198 - type: type,
2199 - matches: match
2200 - });
2201 - soFar = soFar.slice( matched.length );
2202 - }
2203 - }
2204 -
2205 - if ( !matched ) {
2206 - break;
2207 - }
2208 - }
2209 -
2210 - // Return the length of the invalid excess
2211 - // if we're just parsing
2212 - // Otherwise, throw an error or return tokens
2213 - return parseOnly ?
2214 - soFar.length :
2215 - soFar ?
2216 - Sizzle.error( selector ) :
2217 - // Cache the tokens
2218 - tokenCache( selector, groups ).slice( 0 );
2219 - };
2220 -
2221 - function toSelector( tokens ) {
2222 - var i = 0,
2223 - len = tokens.length,
2224 - selector = "";
2225 - for ( ; i < len; i++ ) {
2226 - selector += tokens[i].value;
2227 - }
2228 - return selector;
2229 - }
2230 -
2231 - function addCombinator( matcher, combinator, base ) {
2232 - var dir = combinator.dir,
2233 - skip = combinator.next,
2234 - key = skip || dir,
2235 - checkNonElements = base && key === "parentNode",
2236 - doneName = done++;
2237 -
2238 - return combinator.first ?
2239 - // Check against closest ancestor/preceding element
2240 - function( elem, context, xml ) {
2241 - while ( (elem = elem[ dir ]) ) {
2242 - if ( elem.nodeType === 1 || checkNonElements ) {
2243 - return matcher( elem, context, xml );
2244 - }
2245 - }
2246 - return false;
2247 - } :
2248 -
2249 - // Check against all ancestor/preceding elements
2250 - function( elem, context, xml ) {
2251 - var oldCache, uniqueCache, outerCache,
2252 - newCache = [ dirruns, doneName ];
2253 -
2254 - // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching
2255 - if ( xml ) {
2256 - while ( (elem = elem[ dir ]) ) {
2257 - if ( elem.nodeType === 1 || checkNonElements ) {
2258 - if ( matcher( elem, context, xml ) ) {
2259 - return true;
2260 - }
2261 - }
2262 - }
2263 - } else {
2264 - while ( (elem = elem[ dir ]) ) {
2265 - if ( elem.nodeType === 1 || checkNonElements ) {
2266 - outerCache = elem[ expando ] || (elem[ expando ] = {});
2267 -
2268 - // Support: IE <9 only
2269 - // Defend against cloned attroperties (jQuery gh-1709)
2270 - uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});
2271 -
2272 - if ( skip && skip === elem.nodeName.toLowerCase() ) {
2273 - elem = elem[ dir ] || elem;
2274 - } else if ( (oldCache = uniqueCache[ key ]) &&
2275 - oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
2276 -
2277 - // Assign to newCache so results back-propagate to previous elements
2278 - return (newCache[ 2 ] = oldCache[ 2 ]);
2279 - } else {
2280 - // Reuse newcache so results back-propagate to previous elements
2281 - uniqueCache[ key ] = newCache;
2282 -
2283 - // A match means we're done; a fail means we have to keep checking
2284 - if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {
2285 - return true;
2286 - }
2287 - }
2288 - }
2289 - }
2290 - }
2291 - return false;
2292 - };
2293 - }
2294 -
2295 - function elementMatcher( matchers ) {
2296 - return matchers.length > 1 ?
2297 - function( elem, context, xml ) {
2298 - var i = matchers.length;
2299 - while ( i-- ) {
2300 - if ( !matchers[i]( elem, context, xml ) ) {
2301 - return false;
2302 - }
2303 - }
2304 - return true;
2305 - } :
2306 - matchers[0];
2307 - }
2308 -
2309 - function multipleContexts( selector, contexts, results ) {
2310 - var i = 0,
2311 - len = contexts.length;
2312 - for ( ; i < len; i++ ) {
2313 - Sizzle( selector, contexts[i], results );
2314 - }
2315 - return results;
2316 - }
2317 -
2318 - function condense( unmatched, map, filter, context, xml ) {
2319 - var elem,
2320 - newUnmatched = [],
2321 - i = 0,
2322 - len = unmatched.length,
2323 - mapped = map != null;
2324 -
2325 - for ( ; i < len; i++ ) {
2326 - if ( (elem = unmatched[i]) ) {
2327 - if ( !filter || filter( elem, context, xml ) ) {
2328 - newUnmatched.push( elem );
2329 - if ( mapped ) {
2330 - map.push( i );
2331 - }
2332 - }
2333 - }
2334 - }
2335 -
2336 - return newUnmatched;
2337 - }
2338 -
2339 - function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
2340 - if ( postFilter && !postFilter[ expando ] ) {
2341 - postFilter = setMatcher( postFilter );
2342 - }
2343 - if ( postFinder && !postFinder[ expando ] ) {
2344 - postFinder = setMatcher( postFinder, postSelector );
2345 - }
2346 - return markFunction(function( seed, results, context, xml ) {
2347 - var temp, i, elem,
2348 - preMap = [],
2349 - postMap = [],
2350 - preexisting = results.length,
2351 -
2352 - // Get initial elements from seed or context
2353 - elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
2354 -
2355 - // Prefilter to get matcher input, preserving a map for seed-results synchronization
2356 - matcherIn = preFilter && ( seed || !selector ) ?
2357 - condense( elems, preMap, preFilter, context, xml ) :
2358 - elems,
2359 -
2360 - matcherOut = matcher ?
2361 - // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
2362 - postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
2363 -
2364 - // ...intermediate processing is necessary
2365 - [] :
2366 -
2367 - // ...otherwise use results directly
2368 - results :
2369 - matcherIn;
2370 -
2371 - // Find primary matches
2372 - if ( matcher ) {
2373 - matcher( matcherIn, matcherOut, context, xml );
2374 - }
2375 -
2376 - // Apply postFilter
2377 - if ( postFilter ) {
2378 - temp = condense( matcherOut, postMap );
2379 - postFilter( temp, [], context, xml );
2380 -
2381 - // Un-match failing elements by moving them back to matcherIn
2382 - i = temp.length;
2383 - while ( i-- ) {
2384 - if ( (elem = temp[i]) ) {
2385 - matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
2386 - }
2387 - }
2388 - }
2389 -
2390 - if ( seed ) {
2391 - if ( postFinder || preFilter ) {
2392 - if ( postFinder ) {
2393 - // Get the final matcherOut by condensing this intermediate into postFinder contexts
2394 - temp = [];
2395 - i = matcherOut.length;
2396 - while ( i-- ) {
2397 - if ( (elem = matcherOut[i]) ) {
2398 - // Restore matcherIn since elem is not yet a final match
2399 - temp.push( (matcherIn[i] = elem) );
2400 - }
2401 - }
2402 - postFinder( null, (matcherOut = []), temp, xml );
2403 - }
2404 -
2405 - // Move matched elements from seed to results to keep them synchronized
2406 - i = matcherOut.length;
2407 - while ( i-- ) {
2408 - if ( (elem = matcherOut[i]) &&
2409 - (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {
2410 -
2411 - seed[temp] = !(results[temp] = elem);
2412 - }
2413 - }
2414 - }
2415 -
2416 - // Add elements to results, through postFinder if defined
2417 - } else {
2418 - matcherOut = condense(
2419 - matcherOut === results ?
2420 - matcherOut.splice( preexisting, matcherOut.length ) :
2421 - matcherOut
2422 - );
2423 - if ( postFinder ) {
2424 - postFinder( null, results, matcherOut, xml );
2425 - } else {
2426 - push.apply( results, matcherOut );
2427 - }
2428 - }
2429 - });
2430 - }
2431 -
2432 - function matcherFromTokens( tokens ) {
2433 - var checkContext, matcher, j,
2434 - len = tokens.length,
2435 - leadingRelative = Expr.relative[ tokens[0].type ],
2436 - implicitRelative = leadingRelative || Expr.relative[" "],
2437 - i = leadingRelative ? 1 : 0,
2438 -
2439 - // The foundational matcher ensures that elements are reachable from top-level context(s)
2440 - matchContext = addCombinator( function( elem ) {
2441 - return elem === checkContext;
2442 - }, implicitRelative, true ),
2443 - matchAnyContext = addCombinator( function( elem ) {
2444 - return indexOf( checkContext, elem ) > -1;
2445 - }, implicitRelative, true ),
2446 - matchers = [ function( elem, context, xml ) {
2447 - var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
2448 - (checkContext = context).nodeType ?
2449 - matchContext( elem, context, xml ) :
2450 - matchAnyContext( elem, context, xml ) );
2451 - // Avoid hanging onto element (issue #299)
2452 - checkContext = null;
2453 - return ret;
2454 - } ];
2455 -
2456 - for ( ; i < len; i++ ) {
2457 - if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
2458 - matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
2459 - } else {
2460 - matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
2461 -
2462 - // Return special upon seeing a positional matcher
2463 - if ( matcher[ expando ] ) {
2464 - // Find the next relative operator (if any) for proper handling
2465 - j = ++i;
2466 - for ( ; j < len; j++ ) {
2467 - if ( Expr.relative[ tokens[j].type ] ) {
2468 - break;
2469 - }
2470 - }
2471 - return setMatcher(
2472 - i > 1 && elementMatcher( matchers ),
2473 - i > 1 && toSelector(
2474 - // If the preceding token was a descendant combinator, insert an implicit any-element `*`
2475 - tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })
2476 - ).replace( rtrim, "$1" ),
2477 - matcher,
2478 - i < j && matcherFromTokens( tokens.slice( i, j ) ),
2479 - j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
2480 - j < len && toSelector( tokens )
2481 - );
2482 - }
2483 - matchers.push( matcher );
2484 - }
2485 - }
2486 -
2487 - return elementMatcher( matchers );
2488 - }
2489 -
2490 - function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
2491 - var bySet = setMatchers.length > 0,
2492 - byElement = elementMatchers.length > 0,
2493 - superMatcher = function( seed, context, xml, results, outermost ) {
2494 - var elem, j, matcher,
2495 - matchedCount = 0,
2496 - i = "0",
2497 - unmatched = seed && [],
2498 - setMatched = [],
2499 - contextBackup = outermostContext,
2500 - // We must always have either seed elements or outermost context
2501 - elems = seed || byElement && Expr.find["TAG"]( "*", outermost ),
2502 - // Use integer dirruns iff this is the outermost matcher
2503 - dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),
2504 - len = elems.length;
2505 -
2506 - if ( outermost ) {
2507 - outermostContext = context === document || context || outermost;
2508 - }
2509 -
2510 - // Add elements passing elementMatchers directly to results
2511 - // Support: IE<9, Safari
2512 - // Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
2513 - for ( ; i !== len && (elem = elems[i]) != null; i++ ) {
2514 - if ( byElement && elem ) {
2515 - j = 0;
2516 - if ( !context && elem.ownerDocument !== document ) {
2517 - setDocument( elem );
2518 - xml = !documentIsHTML;
2519 - }
2520 - while ( (matcher = elementMatchers[j++]) ) {
2521 - if ( matcher( elem, context || document, xml) ) {
2522 - results.push( elem );
2523 - break;
2524 - }
2525 - }
2526 - if ( outermost ) {
2527 - dirruns = dirrunsUnique;
2528 - }
2529 - }
2530 -
2531 - // Track unmatched elements for set filters
2532 - if ( bySet ) {
2533 - // They will have gone through all possible matchers
2534 - if ( (elem = !matcher && elem) ) {
2535 - matchedCount--;
2536 - }
2537 -
2538 - // Lengthen the array for every element, matched or not
2539 - if ( seed ) {
2540 - unmatched.push( elem );
2541 - }
2542 - }
2543 - }
2544 -
2545 - // `i` is now the count of elements visited above, and adding it to `matchedCount`
2546 - // makes the latter nonnegative.
2547 - matchedCount += i;
2548 -
2549 - // Apply set filters to unmatched elements
2550 - // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`
2551 - // equals `i`), unless we didn't visit _any_ elements in the above loop because we have
2552 - // no element matchers and no seed.
2553 - // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that
2554 - // case, which will result in a "00" `matchedCount` that differs from `i` but is also
2555 - // numerically zero.
2556 - if ( bySet && i !== matchedCount ) {
2557 - j = 0;
2558 - while ( (matcher = setMatchers[j++]) ) {
2559 - matcher( unmatched, setMatched, context, xml );
2560 - }
2561 -
2562 - if ( seed ) {
2563 - // Reintegrate element matches to eliminate the need for sorting
2564 - if ( matchedCount > 0 ) {
2565 - while ( i-- ) {
2566 - if ( !(unmatched[i] || setMatched[i]) ) {
2567 - setMatched[i] = pop.call( results );
2568 - }
2569 - }
2570 - }
2571 -
2572 - // Discard index placeholder values to get only actual matches
2573 - setMatched = condense( setMatched );
2574 - }
2575 -
2576 - // Add matches to results
2577 - push.apply( results, setMatched );
2578 -
2579 - // Seedless set matches succeeding multiple successful matchers stipulate sorting
2580 - if ( outermost && !seed && setMatched.length > 0 &&
2581 - ( matchedCount + setMatchers.length ) > 1 ) {
2582 -
2583 - Sizzle.uniqueSort( results );
2584 - }
2585 - }
2586 -
2587 - // Override manipulation of globals by nested matchers
2588 - if ( outermost ) {
2589 - dirruns = dirrunsUnique;
2590 - outermostContext = contextBackup;
2591 - }
2592 -
2593 - return unmatched;
2594 - };
2595 -
2596 - return bySet ?
2597 - markFunction( superMatcher ) :
2598 - superMatcher;
2599 - }
2600 -
2601 - compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
2602 - var i,
2603 - setMatchers = [],
2604 - elementMatchers = [],
2605 - cached = compilerCache[ selector + " " ];
2606 -
2607 - if ( !cached ) {
2608 - // Generate a function of recursive functions that can be used to check each element
2609 - if ( !match ) {
2610 - match = tokenize( selector );
2611 - }
2612 - i = match.length;
2613 - while ( i-- ) {
2614 - cached = matcherFromTokens( match[i] );
2615 - if ( cached[ expando ] ) {
2616 - setMatchers.push( cached );
2617 - } else {
2618 - elementMatchers.push( cached );
2619 - }
2620 - }
2621 -
2622 - // Cache the compiled function
2623 - cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
2624 -
2625 - // Save selector and tokenization
2626 - cached.selector = selector;
2627 - }
2628 - return cached;
2629 - };
2630 -
2631 - /**
2632 - * A low-level selection function that works with Sizzle's compiled
2633 - * selector functions
2634 - * @param {String|Function} selector A selector or a pre-compiled
2635 - * selector function built with Sizzle.compile
2636 - * @param {Element} context
2637 - * @param {Array} [results]
2638 - * @param {Array} [seed] A set of elements to match against
2639 - */
2640 - select = Sizzle.select = function( selector, context, results, seed ) {
2641 - var i, tokens, token, type, find,
2642 - compiled = typeof selector === "function" && selector,
2643 - match = !seed && tokenize( (selector = compiled.selector || selector) );
2644 -
2645 - results = results || [];
2646 -
2647 - // Try to minimize operations if there is only one selector in the list and no seed
2648 - // (the latter of which guarantees us context)
2649 - if ( match.length === 1 ) {
2650 -
2651 - // Reduce context if the leading compound selector is an ID
2652 - tokens = match[0] = match[0].slice( 0 );
2653 - if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
2654 - context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) {
2655 -
2656 - context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
2657 - if ( !context ) {
2658 - return results;
2659 -
2660 - // Precompiled matchers will still verify ancestry, so step up a level
2661 - } else if ( compiled ) {
2662 - context = context.parentNode;
2663 - }
2664 -
2665 - selector = selector.slice( tokens.shift().value.length );
2666 - }
2667 -
2668 - // Fetch a seed set for right-to-left matching
2669 - i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
2670 - while ( i-- ) {
2671 - token = tokens[i];
2672 -
2673 - // Abort if we hit a combinator
2674 - if ( Expr.relative[ (type = token.type) ] ) {
2675 - break;
2676 - }
2677 - if ( (find = Expr.find[ type ]) ) {
2678 - // Search, expanding context for leading sibling combinators
2679 - if ( (seed = find(
2680 - token.matches[0].replace( runescape, funescape ),
2681 - rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context
2682 - )) ) {
2683 -
2684 - // If seed is empty or no tokens remain, we can return early
2685 - tokens.splice( i, 1 );
2686 - selector = seed.length && toSelector( tokens );
2687 - if ( !selector ) {
2688 - push.apply( results, seed );
2689 - return results;
2690 - }
2691 -
2692 - break;
2693 - }
2694 - }
2695 - }
2696 - }
2697 -
2698 - // Compile and execute a filtering function if one is not provided
2699 - // Provide `match` to avoid retokenization if we modified the selector above
2700 - ( compiled || compile( selector, match ) )(
2701 - seed,
2702 - context,
2703 - !documentIsHTML,
2704 - results,
2705 - !context || rsibling.test( selector ) && testContext( context.parentNode ) || context
2706 - );
2707 - return results;
2708 - };
2709 -
2710 - // One-time assignments
2711 -
2712 - // Sort stability
2713 - support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
2714 -
2715 - // Support: Chrome 14-35+
2716 - // Always assume duplicates if they aren't passed to the comparison function
2717 - support.detectDuplicates = !!hasDuplicate;
2718 -
2719 - // Initialize against the default document
2720 - setDocument();
2721 -
2722 - // Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
2723 - // Detached nodes confoundingly follow *each other*
2724 - support.sortDetached = assert(function( el ) {
2725 - // Should return 1, but returns 4 (following)
2726 - return el.compareDocumentPosition( document.createElement("fieldset") ) & 1;
2727 - });
2728 -
2729 - // Support: IE<8
2730 - // Prevent attribute/property "interpolation"
2731 - // https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
2732 - if ( !assert(function( el ) {
2733 - el.innerHTML = "<a href='#'></a>";
2734 - return el.firstChild.getAttribute("href") === "#" ;
2735 - }) ) {
2736 - addHandle( "type|href|height|width", function( elem, name, isXML ) {
2737 - if ( !isXML ) {
2738 - return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
2739 - }
2740 - });
2741 - }
2742 -
2743 - // Support: IE<9
2744 - // Use defaultValue in place of getAttribute("value")
2745 - if ( !support.attributes || !assert(function( el ) {
2746 - el.innerHTML = "<input/>";
2747 - el.firstChild.setAttribute( "value", "" );
2748 - return el.firstChild.getAttribute( "value" ) === "";
2749 - }) ) {
2750 - addHandle( "value", function( elem, name, isXML ) {
2751 - if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
2752 - return elem.defaultValue;
2753 - }
2754 - });
2755 - }
2756 -
2757 - // Support: IE<9
2758 - // Use getAttributeNode to fetch booleans when getAttribute lies
2759 - if ( !assert(function( el ) {
2760 - return el.getAttribute("disabled") == null;
2761 - }) ) {
2762 - addHandle( booleans, function( elem, name, isXML ) {
2763 - var val;
2764 - if ( !isXML ) {
2765 - return elem[ name ] === true ? name.toLowerCase() :
2766 - (val = elem.getAttributeNode( name )) && val.specified ?
2767 - val.value :
2768 - null;
2769 - }
2770 - });
2771 - }
2772 -
2773 - return Sizzle;
2774 -
2775 - })( window );
2776 -
2777 -
2778 -
2779 - jQuery.find = Sizzle;
2780 - jQuery.expr = Sizzle.selectors;
2781 -
2782 - // Deprecated
2783 - jQuery.expr[ ":" ] = jQuery.expr.pseudos;
2784 - jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;
2785 - jQuery.text = Sizzle.getText;
2786 - jQuery.isXMLDoc = Sizzle.isXML;
2787 - jQuery.contains = Sizzle.contains;
2788 - jQuery.escapeSelector = Sizzle.escape;
2789 -
2790 -
2791 -
2792 -
2793 - var dir = function( elem, dir, until ) {
2794 - var matched = [],
2795 - truncate = until !== undefined;
2796 -
2797 - while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {
2798 - if ( elem.nodeType === 1 ) {
2799 - if ( truncate && jQuery( elem ).is( until ) ) {
2800 - break;
2801 - }
2802 - matched.push( elem );
2803 - }
2804 - }
2805 - return matched;
2806 - };
2807 -
2808 -
2809 - var siblings = function( n, elem ) {
2810 - var matched = [];
2811 -
2812 - for ( ; n; n = n.nextSibling ) {
2813 - if ( n.nodeType === 1 && n !== elem ) {
2814 - matched.push( n );
2815 - }
2816 - }
2817 -
2818 - return matched;
2819 - };
2820 -
2821 -
2822 - var rneedsContext = jQuery.expr.match.needsContext;
2823 -
2824 -
2825 -
2826 - function nodeName( elem, name ) {
2827 -
2828 - return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
2829 -
2830 - };
2831 - var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i );
2832 -
2833 -
2834 -
2835 - // Implement the identical functionality for filter and not
2836 - function winnow( elements, qualifier, not ) {
2837 - if ( isFunction( qualifier ) ) {
2838 - return jQuery.grep( elements, function( elem, i ) {
2839 - return !!qualifier.call( elem, i, elem ) !== not;
2840 - } );
2841 - }
2842 -
2843 - // Single element
2844 - if ( qualifier.nodeType ) {
2845 - return jQuery.grep( elements, function( elem ) {
2846 - return ( elem === qualifier ) !== not;
2847 - } );
2848 - }
2849 -
2850 - // Arraylike of elements (jQuery, arguments, Array)
2851 - if ( typeof qualifier !== "string" ) {
2852 - return jQuery.grep( elements, function( elem ) {
2853 - return ( indexOf.call( qualifier, elem ) > -1 ) !== not;
2854 - } );
2855 - }
2856 -
2857 - // Filtered directly for both simple and complex selectors
2858 - return jQuery.filter( qualifier, elements, not );
2859 - }
2860 -
2861 - jQuery.filter = function( expr, elems, not ) {
2862 - var elem = elems[ 0 ];
2863 -
2864 - if ( not ) {
2865 - expr = ":not(" + expr + ")";
2866 - }
2867 -
2868 - if ( elems.length === 1 && elem.nodeType === 1 ) {
2869 - return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];
2870 - }
2871 -
2872 - return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
2873 - return elem.nodeType === 1;
2874 - } ) );
2875 - };
2876 -
2877 - jQuery.fn.extend( {
2878 - find: function( selector ) {
2879 - var i, ret,
2880 - len = this.length,
2881 - self = this;
2882 -
2883 - if ( typeof selector !== "string" ) {
2884 - return this.pushStack( jQuery( selector ).filter( function() {
2885 - for ( i = 0; i < len; i++ ) {
2886 - if ( jQuery.contains( self[ i ], this ) ) {
2887 - return true;
2888 - }
2889 - }
2890 - } ) );
2891 - }
2892 -
2893 - ret = this.pushStack( [] );
2894 -
2895 - for ( i = 0; i < len; i++ ) {
2896 - jQuery.find( selector, self[ i ], ret );
2897 - }
2898 -
2899 - return len > 1 ? jQuery.uniqueSort( ret ) : ret;
2900 - },
2901 - filter: function( selector ) {
2902 - return this.pushStack( winnow( this, selector || [], false ) );
2903 - },
2904 - not: function( selector ) {
2905 - return this.pushStack( winnow( this, selector || [], true ) );
2906 - },
2907 - is: function( selector ) {
2908 - return !!winnow(
2909 - this,
2910 -
2911 - // If this is a positional/relative selector, check membership in the returned set
2912 - // so $("p:first").is("p:last") won't return true for a doc with two "p".
2913 - typeof selector === "string" && rneedsContext.test( selector ) ?
2914 - jQuery( selector ) :
2915 - selector || [],
2916 - false
2917 - ).length;
2918 - }
2919 - } );
2920 -
2921 -
2922 - // Initialize a jQuery object
2923 -
2924 -
2925 - // A central reference to the root jQuery(document)
2926 - var rootjQuery,
2927 -
2928 - // A simple way to check for HTML strings
2929 - // Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
2930 - // Strict HTML recognition (#11290: must start with <)
2931 - // Shortcut simple #id case for speed
2932 - rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,
2933 -
2934 - init = jQuery.fn.init = function( selector, context, root ) {
2935 - var match, elem;
2936 -
2937 - // HANDLE: $(""), $(null), $(undefined), $(false)
2938 - if ( !selector ) {
2939 - return this;
2940 - }
2941 -
2942 - // Method init() accepts an alternate rootjQuery
2943 - // so migrate can support jQuery.sub (gh-2101)
2944 - root = root || rootjQuery;
2945 -
2946 - // Handle HTML strings
2947 - if ( typeof selector === "string" ) {
2948 - if ( selector[ 0 ] === "<" &&
2949 - selector[ selector.length - 1 ] === ">" &&
2950 - selector.length >= 3 ) {
2951 -
2952 - // Assume that strings that start and end with <> are HTML and skip the regex check
2953 - match = [ null, selector, null ];
2954 -
2955 - } else {
2956 - match = rquickExpr.exec( selector );
2957 - }
2958 -
2959 - // Match html or make sure no context is specified for #id
2960 - if ( match && ( match[ 1 ] || !context ) ) {
2961 -
2962 - // HANDLE: $(html) -> $(array)
2963 - if ( match[ 1 ] ) {
2964 - context = context instanceof jQuery ? context[ 0 ] : context;
2965 -
2966 - // Option to run scripts is true for back-compat
2967 - // Intentionally let the error be thrown if parseHTML is not present
2968 - jQuery.merge( this, jQuery.parseHTML(
2969 - match[ 1 ],
2970 - context && context.nodeType ? context.ownerDocument || context : document,
2971 - true
2972 - ) );
2973 -
2974 - // HANDLE: $(html, props)
2975 - if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {
2976 - for ( match in context ) {
2977 -
2978 - // Properties of context are called as methods if possible
2979 - if ( isFunction( this[ match ] ) ) {
2980 - this[ match ]( context[ match ] );
2981 -
2982 - // ...and otherwise set as attributes
2983 - } else {
2984 - this.attr( match, context[ match ] );
2985 - }
2986 - }
2987 - }
2988 -
2989 - return this;
2990 -
2991 - // HANDLE: $(#id)
2992 - } else {
2993 - elem = document.getElementById( match[ 2 ] );
2994 -
2995 - if ( elem ) {
2996 -
2997 - // Inject the element directly into the jQuery object
2998 - this[ 0 ] = elem;
2999 - this.length = 1;
3000 - }
3001 - return this;
3002 - }
3003 -
3004 - // HANDLE: $(expr, $(...))
3005 - } else if ( !context || context.jquery ) {
3006 - return ( context || root ).find( selector );
3007 -
3008 - // HANDLE: $(expr, context)
3009 - // (which is just equivalent to: $(context).find(expr)
3010 - } else {
3011 - return this.constructor( context ).find( selector );
3012 - }
3013 -
3014 - // HANDLE: $(DOMElement)
3015 - } else if ( selector.nodeType ) {
3016 - this[ 0 ] = selector;
3017 - this.length = 1;
3018 - return this;
3019 -
3020 - // HANDLE: $(function)
3021 - // Shortcut for document ready
3022 - } else if ( isFunction( selector ) ) {
3023 - return root.ready !== undefined ?
3024 - root.ready( selector ) :
3025 -
3026 - // Execute immediately if ready is not present
3027 - selector( jQuery );
3028 - }
3029 -
3030 - return jQuery.makeArray( selector, this );
3031 - };
3032 -
3033 - // Give the init function the jQuery prototype for later instantiation
3034 - init.prototype = jQuery.fn;
3035 -
3036 - // Initialize central reference
3037 - rootjQuery = jQuery( document );
3038 -
3039 -
3040 - var rparentsprev = /^(?:parents|prev(?:Until|All))/,
3041 -
3042 - // Methods guaranteed to produce a unique set when starting from a unique set
3043 - guaranteedUnique = {
3044 - children: true,
3045 - contents: true,
3046 - next: true,
3047 - prev: true
3048 - };
3049 -
3050 - jQuery.fn.extend( {
3051 - has: function( target ) {
3052 - var targets = jQuery( target, this ),
3053 - l = targets.length;
3054 -
3055 - return this.filter( function() {
3056 - var i = 0;
3057 - for ( ; i < l; i++ ) {
3058 - if ( jQuery.contains( this, targets[ i ] ) ) {
3059 - return true;
3060 - }
3061 - }
3062 - } );
3063 - },
3064 -
3065 - closest: function( selectors, context ) {
3066 - var cur,
3067 - i = 0,
3068 - l = this.length,
3069 - matched = [],
3070 - targets = typeof selectors !== "string" && jQuery( selectors );
3071 -
3072 - // Positional selectors never match, since there's no _selection_ context
3073 - if ( !rneedsContext.test( selectors ) ) {
3074 - for ( ; i < l; i++ ) {
3075 - for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {
3076 -
3077 - // Always skip document fragments
3078 - if ( cur.nodeType < 11 && ( targets ?
3079 - targets.index( cur ) > -1 :
3080 -
3081 - // Don't pass non-elements to Sizzle
3082 - cur.nodeType === 1 &&
3083 - jQuery.find.matchesSelector( cur, selectors ) ) ) {
3084 -
3085 - matched.push( cur );
3086 - break;
3087 - }
3088 - }
3089 - }
3090 - }
3091 -
3092 - return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );
3093 - },
3094 -
3095 - // Determine the position of an element within the set
3096 - index: function( elem ) {
3097 -
3098 - // No argument, return index in parent
3099 - if ( !elem ) {
3100 - return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;
3101 - }
3102 -
3103 - // Index in selector
3104 - if ( typeof elem === "string" ) {
3105 - return indexOf.call( jQuery( elem ), this[ 0 ] );
3106 - }
3107 -
3108 - // Locate the position of the desired element
3109 - return indexOf.call( this,
3110 -
3111 - // If it receives a jQuery object, the first element is used
3112 - elem.jquery ? elem[ 0 ] : elem
3113 - );
3114 - },
3115 -
3116 - add: function( selector, context ) {
3117 - return this.pushStack(
3118 - jQuery.uniqueSort(
3119 - jQuery.merge( this.get(), jQuery( selector, context ) )
3120 - )
3121 - );
3122 - },
3123 -
3124 - addBack: function( selector ) {
3125 - return this.add( selector == null ?
3126 - this.prevObject : this.prevObject.filter( selector )
3127 - );
3128 - }
3129 - } );
3130 -
3131 - function sibling( cur, dir ) {
3132 - while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}
3133 - return cur;
3134 - }
3135 -
3136 - jQuery.each( {
3137 - parent: function( elem ) {
3138 - var parent = elem.parentNode;
3139 - return parent && parent.nodeType !== 11 ? parent : null;
3140 - },
3141 - parents: function( elem ) {
3142 - return dir( elem, "parentNode" );
3143 - },
3144 - parentsUntil: function( elem, i, until ) {
3145 - return dir( elem, "parentNode", until );
3146 - },
3147 - next: function( elem ) {
3148 - return sibling( elem, "nextSibling" );
3149 - },
3150 - prev: function( elem ) {
3151 - return sibling( elem, "previousSibling" );
3152 - },
3153 - nextAll: function( elem ) {
3154 - return dir( elem, "nextSibling" );
3155 - },
3156 - prevAll: function( elem ) {
3157 - return dir( elem, "previousSibling" );
3158 - },
3159 - nextUntil: function( elem, i, until ) {
3160 - return dir( elem, "nextSibling", until );
3161 - },
3162 - prevUntil: function( elem, i, until ) {
3163 - return dir( elem, "previousSibling", until );
3164 - },
3165 - siblings: function( elem ) {
3166 - return siblings( ( elem.parentNode || {} ).firstChild, elem );
3167 - },
3168 - children: function( elem ) {
3169 - return siblings( elem.firstChild );
3170 - },
3171 - contents: function( elem ) {
3172 - if ( typeof elem.contentDocument !== "undefined" ) {
3173 - return elem.contentDocument;
3174 - }
3175 -
3176 - // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only
3177 - // Treat the template element as a regular one in browsers that
3178 - // don't support it.
3179 - if ( nodeName( elem, "template" ) ) {
3180 - elem = elem.content || elem;
3181 - }
3182 -
3183 - return jQuery.merge( [], elem.childNodes );
3184 - }
3185 - }, function( name, fn ) {
3186 - jQuery.fn[ name ] = function( until, selector ) {
3187 - var matched = jQuery.map( this, fn, until );
3188 -
3189 - if ( name.slice( -5 ) !== "Until" ) {
3190 - selector = until;
3191 - }
3192 -
3193 - if ( selector && typeof selector === "string" ) {
3194 - matched = jQuery.filter( selector, matched );
3195 - }
3196 -
3197 - if ( this.length > 1 ) {
3198 -
3199 - // Remove duplicates
3200 - if ( !guaranteedUnique[ name ] ) {
3201 - jQuery.uniqueSort( matched );
3202 - }
3203 -
3204 - // Reverse order for parents* and prev-derivatives
3205 - if ( rparentsprev.test( name ) ) {
3206 - matched.reverse();
3207 - }
3208 - }
3209 -
3210 - return this.pushStack( matched );
3211 - };
3212 - } );
3213 - var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g );
3214 -
3215 -
3216 -
3217 - // Convert String-formatted options into Object-formatted ones
3218 - function createOptions( options ) {
3219 - var object = {};
3220 - jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {
3221 - object[ flag ] = true;
3222 - } );
3223 - return object;
3224 - }
3225 -
3226 - /*
3227 - * Create a callback list using the following parameters:
3228 - *
3229 - * options: an optional list of space-separated options that will change how
3230 - * the callback list behaves or a more traditional option object
3231 - *
3232 - * By default a callback list will act like an event callback list and can be
3233 - * "fired" multiple times.
3234 - *
3235 - * Possible options:
3236 - *
3237 - * once: will ensure the callback list can only be fired once (like a Deferred)
3238 - *
3239 - * memory: will keep track of previous values and will call any callback added
3240 - * after the list has been fired right away with the latest "memorized"
3241 - * values (like a Deferred)
3242 - *
3243 - * unique: will ensure a callback can only be added once (no duplicate in the list)
3244 - *
3245 - * stopOnFalse: interrupt callings when a callback returns false
3246 - *
3247 - */
3248 - jQuery.Callbacks = function( options ) {
3249 -
3250 - // Convert options from String-formatted to Object-formatted if needed
3251 - // (we check in cache first)
3252 - options = typeof options === "string" ?
3253 - createOptions( options ) :
3254 - jQuery.extend( {}, options );
3255 -
3256 - var // Flag to know if list is currently firing
3257 - firing,
3258 -
3259 - // Last fire value for non-forgettable lists
3260 - memory,
3261 -
3262 - // Flag to know if list was already fired
3263 - fired,
3264 -
3265 - // Flag to prevent firing
3266 - locked,
3267 -
3268 - // Actual callback list
3269 - list = [],
3270 -
3271 - // Queue of execution data for repeatable lists
3272 - queue = [],
3273 -
3274 - // Index of currently firing callback (modified by add/remove as needed)
3275 - firingIndex = -1,
3276 -
3277 - // Fire callbacks
3278 - fire = function() {
3279 -
3280 - // Enforce single-firing
3281 - locked = locked || options.once;
3282 -
3283 - // Execute callbacks for all pending executions,
3284 - // respecting firingIndex overrides and runtime changes
3285 - fired = firing = true;
3286 - for ( ; queue.length; firingIndex = -1 ) {
3287 - memory = queue.shift();
3288 - while ( ++firingIndex < list.length ) {
3289 -
3290 - // Run callback and check for early termination
3291 - if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&
3292 - options.stopOnFalse ) {
3293 -
3294 - // Jump to end and forget the data so .add doesn't re-fire
3295 - firingIndex = list.length;
3296 - memory = false;
3297 - }
3298 - }
3299 - }
3300 -
3301 - // Forget the data if we're done with it
3302 - if ( !options.memory ) {
3303 - memory = false;
3304 - }
3305 -
3306 - firing = false;
3307 -
3308 - // Clean up if we're done firing for good
3309 - if ( locked ) {
3310 -
3311 - // Keep an empty list if we have data for future add calls
3312 - if ( memory ) {
3313 - list = [];
3314 -
3315 - // Otherwise, this object is spent
3316 - } else {
3317 - list = "";
3318 - }
3319 - }
3320 - },
3321 -
3322 - // Actual Callbacks object
3323 - self = {
3324 -
3325 - // Add a callback or a collection of callbacks to the list
3326 - add: function() {
3327 - if ( list ) {
3328 -
3329 - // If we have memory from a past run, we should fire after adding
3330 - if ( memory && !firing ) {
3331 - firingIndex = list.length - 1;
3332 - queue.push( memory );
3333 - }
3334 -
3335 - ( function add( args ) {
3336 - jQuery.each( args, function( _, arg ) {
3337 - if ( isFunction( arg ) ) {
3338 - if ( !options.unique || !self.has( arg ) ) {
3339 - list.push( arg );
3340 - }
3341 - } else if ( arg && arg.length && toType( arg ) !== "string" ) {
3342 -
3343 - // Inspect recursively
3344 - add( arg );
3345 - }
3346 - } );
3347 - } )( arguments );
3348 -
3349 - if ( memory && !firing ) {
3350 - fire();
3351 - }
3352 - }
3353 - return this;
3354 - },
3355 -
3356 - // Remove a callback from the list
3357 - remove: function() {
3358 - jQuery.each( arguments, function( _, arg ) {
3359 - var index;
3360 - while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
3361 - list.splice( index, 1 );
3362 -
3363 - // Handle firing indexes
3364 - if ( index <= firingIndex ) {
3365 - firingIndex--;
3366 - }
3367 - }
3368 - } );
3369 - return this;
3370 - },
3371 -
3372 - // Check if a given callback is in the list.
3373 - // If no argument is given, return whether or not list has callbacks attached.
3374 - has: function( fn ) {
3375 - return fn ?
3376 - jQuery.inArray( fn, list ) > -1 :
3377 - list.length > 0;
3378 - },
3379 -
3380 - // Remove all callbacks from the list
3381 - empty: function() {
3382 - if ( list ) {
3383 - list = [];
3384 - }
3385 - return this;
3386 - },
3387 -
3388 - // Disable .fire and .add
3389 - // Abort any current/pending executions
3390 - // Clear all callbacks and values
3391 - disable: function() {
3392 - locked = queue = [];
3393 - list = memory = "";
3394 - return this;
3395 - },
3396 - disabled: function() {
3397 - return !list;
3398 - },
3399 -
3400 - // Disable .fire
3401 - // Also disable .add unless we have memory (since it would have no effect)
3402 - // Abort any pending executions
3403 - lock: function() {
3404 - locked = queue = [];
3405 - if ( !memory && !firing ) {
3406 - list = memory = "";
3407 - }
3408 - return this;
3409 - },
3410 - locked: function() {
3411 - return !!locked;
3412 - },
3413 -
3414 - // Call all callbacks with the given context and arguments
3415 - fireWith: function( context, args ) {
3416 - if ( !locked ) {
3417 - args = args || [];
3418 - args = [ context, args.slice ? args.slice() : args ];
3419 - queue.push( args );
3420 - if ( !firing ) {
3421 - fire();
3422 - }
3423 - }
3424 - return this;
3425 - },
3426 -
3427 - // Call all the callbacks with the given arguments
3428 - fire: function() {
3429 - self.fireWith( this, arguments );
3430 - return this;
3431 - },
3432 -
3433 - // To know if the callbacks have already been called at least once
3434 - fired: function() {
3435 - return !!fired;
3436 - }
3437 - };
3438 -
3439 - return self;
3440 - };
3441 -
3442 -
3443 - function Identity( v ) {
3444 - return v;
3445 - }
3446 - function Thrower( ex ) {
3447 - throw ex;
3448 - }
3449 -
3450 - function adoptValue( value, resolve, reject, noValue ) {
3451 - var method;
3452 -
3453 - try {
3454 -
3455 - // Check for promise aspect first to privilege synchronous behavior
3456 - if ( value && isFunction( ( method = value.promise ) ) ) {
3457 - method.call( value ).done( resolve ).fail( reject );
3458 -
3459 - // Other thenables
3460 - } else if ( value && isFunction( ( method = value.then ) ) ) {
3461 - method.call( value, resolve, reject );
3462 -
3463 - // Other non-thenables
3464 - } else {
3465 -
3466 - // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:
3467 - // * false: [ value ].slice( 0 ) => resolve( value )
3468 - // * true: [ value ].slice( 1 ) => resolve()
3469 - resolve.apply( undefined, [ value ].slice( noValue ) );
3470 - }
3471 -
3472 - // For Promises/A+, convert exceptions into rejections
3473 - // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in
3474 - // Deferred#then to conditionally suppress rejection.
3475 - } catch ( value ) {
3476 -
3477 - // Support: Android 4.0 only
3478 - // Strict mode functions invoked without .call/.apply get global-object context
3479 - reject.apply( undefined, [ value ] );
3480 - }
3481 - }
3482 -
3483 - jQuery.extend( {
3484 -
3485 - Deferred: function( func ) {
3486 - var tuples = [
3487 -
3488 - // action, add listener, callbacks,
3489 - // ... .then handlers, argument index, [final state]
3490 - [ "notify", "progress", jQuery.Callbacks( "memory" ),
3491 - jQuery.Callbacks( "memory" ), 2 ],
3492 - [ "resolve", "done", jQuery.Callbacks( "once memory" ),
3493 - jQuery.Callbacks( "once memory" ), 0, "resolved" ],
3494 - [ "reject", "fail", jQuery.Callbacks( "once memory" ),
3495 - jQuery.Callbacks( "once memory" ), 1, "rejected" ]
3496 - ],
3497 - state = "pending",
3498 - promise = {
3499 - state: function() {
3500 - return state;
3501 - },
3502 - always: function() {
3503 - deferred.done( arguments ).fail( arguments );
3504 - return this;
3505 - },
3506 - "catch": function( fn ) {
3507 - return promise.then( null, fn );
3508 - },
3509 -
3510 - // Keep pipe for back-compat
3511 - pipe: function( /* fnDone, fnFail, fnProgress */ ) {
3512 - var fns = arguments;
3513 -
3514 - return jQuery.Deferred( function( newDefer ) {
3515 - jQuery.each( tuples, function( i, tuple ) {
3516 -
3517 - // Map tuples (progress, done, fail) to arguments (done, fail, progress)
3518 - var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];
3519 -
3520 - // deferred.progress(function() { bind to newDefer or newDefer.notify })
3521 - // deferred.done(function() { bind to newDefer or newDefer.resolve })
3522 - // deferred.fail(function() { bind to newDefer or newDefer.reject })
3523 - deferred[ tuple[ 1 ] ]( function() {
3524 - var returned = fn && fn.apply( this, arguments );
3525 - if ( returned && isFunction( returned.promise ) ) {
3526 - returned.promise()
3527 - .progress( newDefer.notify )
3528 - .done( newDefer.resolve )
3529 - .fail( newDefer.reject );
3530 - } else {
3531 - newDefer[ tuple[ 0 ] + "With" ](
3532 - this,
3533 - fn ? [ returned ] : arguments
3534 - );
3535 - }
3536 - } );
3537 - } );
3538 - fns = null;
3539 - } ).promise();
3540 - },
3541 - then: function( onFulfilled, onRejected, onProgress ) {
3542 - var maxDepth = 0;
3543 - function resolve( depth, deferred, handler, special ) {
3544 - return function() {
3545 - var that = this,
3546 - args = arguments,
3547 - mightThrow = function() {
3548 - var returned, then;
3549 -
3550 - // Support: Promises/A+ section 2.3.3.3.3
3551 - // https://promisesaplus.com/#point-59
3552 - // Ignore double-resolution attempts
3553 - if ( depth < maxDepth ) {
3554 - return;
3555 - }
3556 -
3557 - returned = handler.apply( that, args );
3558 -
3559 - // Support: Promises/A+ section 2.3.1
3560 - // https://promisesaplus.com/#point-48
3561 - if ( returned === deferred.promise() ) {
3562 - throw new TypeError( "Thenable self-resolution" );
3563 - }
3564 -
3565 - // Support: Promises/A+ sections 2.3.3.1, 3.5
3566 - // https://promisesaplus.com/#point-54
3567 - // https://promisesaplus.com/#point-75
3568 - // Retrieve `then` only once
3569 - then = returned &&
3570 -
3571 - // Support: Promises/A+ section 2.3.4
3572 - // https://promisesaplus.com/#point-64
3573 - // Only check objects and functions for thenability
3574 - ( typeof returned === "object" ||
3575 - typeof returned === "function" ) &&
3576 - returned.then;
3577 -
3578 - // Handle a returned thenable
3579 - if ( isFunction( then ) ) {
3580 -
3581 - // Special processors (notify) just wait for resolution
3582 - if ( special ) {
3583 - then.call(
3584 - returned,
3585 - resolve( maxDepth, deferred, Identity, special ),
3586 - resolve( maxDepth, deferred, Thrower, special )
3587 - );
3588 -
3589 - // Normal processors (resolve) also hook into progress
3590 - } else {
3591 -
3592 - // ...and disregard older resolution values
3593 - maxDepth++;
3594 -
3595 - then.call(
3596 - returned,
3597 - resolve( maxDepth, deferred, Identity, special ),
3598 - resolve( maxDepth, deferred, Thrower, special ),
3599 - resolve( maxDepth, deferred, Identity,
3600 - deferred.notifyWith )
3601 - );
3602 - }
3603 -
3604 - // Handle all other returned values
3605 - } else {
3606 -
3607 - // Only substitute handlers pass on context
3608 - // and multiple values (non-spec behavior)
3609 - if ( handler !== Identity ) {
3610 - that = undefined;
3611 - args = [ returned ];
3612 - }
3613 -
3614 - // Process the value(s)
3615 - // Default process is resolve
3616 - ( special || deferred.resolveWith )( that, args );
3617 - }
3618 - },
3619 -
3620 - // Only normal processors (resolve) catch and reject exceptions
3621 - process = special ?
3622 - mightThrow :
3623 - function() {
3624 - try {
3625 - mightThrow();
3626 - } catch ( e ) {
3627 -
3628 - if ( jQuery.Deferred.exceptionHook ) {
3629 - jQuery.Deferred.exceptionHook( e,
3630 - process.stackTrace );
3631 - }
3632 -
3633 - // Support: Promises/A+ section 2.3.3.3.4.1
3634 - // https://promisesaplus.com/#point-61
3635 - // Ignore post-resolution exceptions
3636 - if ( depth + 1 >= maxDepth ) {
3637 -
3638 - // Only substitute handlers pass on context
3639 - // and multiple values (non-spec behavior)
3640 - if ( handler !== Thrower ) {
3641 - that = undefined;
3642 - args = [ e ];
3643 - }
3644 -
3645 - deferred.rejectWith( that, args );
3646 - }
3647 - }
3648 - };
3649 -
3650 - // Support: Promises/A+ section 2.3.3.3.1
3651 - // https://promisesaplus.com/#point-57
3652 - // Re-resolve promises immediately to dodge false rejection from
3653 - // subsequent errors
3654 - if ( depth ) {
3655 - process();
3656 - } else {
3657 -
3658 - // Call an optional hook to record the stack, in case of exception
3659 - // since it's otherwise lost when execution goes async
3660 - if ( jQuery.Deferred.getStackHook ) {
3661 - process.stackTrace = jQuery.Deferred.getStackHook();
3662 - }
3663 - window.setTimeout( process );
3664 - }
3665 - };
3666 - }
3667 -
3668 - return jQuery.Deferred( function( newDefer ) {
3669 -
3670 - // progress_handlers.add( ... )
3671 - tuples[ 0 ][ 3 ].add(
3672 - resolve(
3673 - 0,
3674 - newDefer,
3675 - isFunction( onProgress ) ?
3676 - onProgress :
3677 - Identity,
3678 - newDefer.notifyWith
3679 - )
3680 - );
3681 -
3682 - // fulfilled_handlers.add( ... )
3683 - tuples[ 1 ][ 3 ].add(
3684 - resolve(
3685 - 0,
3686 - newDefer,
3687 - isFunction( onFulfilled ) ?
3688 - onFulfilled :
3689 - Identity
3690 - )
3691 - );
3692 -
3693 - // rejected_handlers.add( ... )
3694 - tuples[ 2 ][ 3 ].add(
3695 - resolve(
3696 - 0,
3697 - newDefer,
3698 - isFunction( onRejected ) ?
3699 - onRejected :
3700 - Thrower
3701 - )
3702 - );
3703 - } ).promise();
3704 - },
3705 -
3706 - // Get a promise for this deferred
3707 - // If obj is provided, the promise aspect is added to the object
3708 - promise: function( obj ) {
3709 - return obj != null ? jQuery.extend( obj, promise ) : promise;
3710 - }
3711 - },
3712 - deferred = {};
3713 -
3714 - // Add list-specific methods
3715 - jQuery.each( tuples, function( i, tuple ) {
3716 - var list = tuple[ 2 ],
3717 - stateString = tuple[ 5 ];
3718 -
3719 - // promise.progress = list.add
3720 - // promise.done = list.add
3721 - // promise.fail = list.add
3722 - promise[ tuple[ 1 ] ] = list.add;
3723 -
3724 - // Handle state
3725 - if ( stateString ) {
3726 - list.add(
3727 - function() {
3728 -
3729 - // state = "resolved" (i.e., fulfilled)
3730 - // state = "rejected"
3731 - state = stateString;
3732 - },
3733 -
3734 - // rejected_callbacks.disable
3735 - // fulfilled_callbacks.disable
3736 - tuples[ 3 - i ][ 2 ].disable,
3737 -
3738 - // rejected_handlers.disable
3739 - // fulfilled_handlers.disable
3740 - tuples[ 3 - i ][ 3 ].disable,
3741 -
3742 - // progress_callbacks.lock
3743 - tuples[ 0 ][ 2 ].lock,
3744 -
3745 - // progress_handlers.lock
3746 - tuples[ 0 ][ 3 ].lock
3747 - );
3748 - }
3749 -
3750 - // progress_handlers.fire
3751 - // fulfilled_handlers.fire
3752 - // rejected_handlers.fire
3753 - list.add( tuple[ 3 ].fire );
3754 -
3755 - // deferred.notify = function() { deferred.notifyWith(...) }
3756 - // deferred.resolve = function() { deferred.resolveWith(...) }
3757 - // deferred.reject = function() { deferred.rejectWith(...) }
3758 - deferred[ tuple[ 0 ] ] = function() {
3759 - deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments );
3760 - return this;
3761 - };
3762 -
3763 - // deferred.notifyWith = list.fireWith
3764 - // deferred.resolveWith = list.fireWith
3765 - // deferred.rejectWith = list.fireWith
3766 - deferred[ tuple[ 0 ] + "With" ] = list.fireWith;
3767 - } );
3768 -
3769 - // Make the deferred a promise
3770 - promise.promise( deferred );
3771 -
3772 - // Call given func if any
3773 - if ( func ) {
3774 - func.call( deferred, deferred );
3775 - }
3776 -
3777 - // All done!
3778 - return deferred;
3779 - },
3780 -
3781 - // Deferred helper
3782 - when: function( singleValue ) {
3783 - var
3784 -
3785 - // count of uncompleted subordinates
3786 - remaining = arguments.length,
3787 -
3788 - // count of unprocessed arguments
3789 - i = remaining,
3790 -
3791 - // subordinate fulfillment data
3792 - resolveContexts = Array( i ),
3793 - resolveValues = slice.call( arguments ),
3794 -
3795 - // the master Deferred
3796 - master = jQuery.Deferred(),
3797 -
3798 - // subordinate callback factory
3799 - updateFunc = function( i ) {
3800 - return function( value ) {
3801 - resolveContexts[ i ] = this;
3802 - resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
3803 - if ( !( --remaining ) ) {
3804 - master.resolveWith( resolveContexts, resolveValues );
3805 - }
3806 - };
3807 - };
3808 -
3809 - // Single- and empty arguments are adopted like Promise.resolve
3810 - if ( remaining <= 1 ) {
3811 - adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject,
3812 - !remaining );
3813 -
3814 - // Use .then() to unwrap secondary thenables (cf. gh-3000)
3815 - if ( master.state() === "pending" ||
3816 - isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {
3817 -
3818 - return master.then();
3819 - }
3820 - }
3821 -
3822 - // Multiple arguments are aggregated like Promise.all array elements
3823 - while ( i-- ) {
3824 - adoptValue( resolveValues[ i ], updateFunc( i ), master.reject );
3825 - }
3826 -
3827 - return master.promise();
3828 - }
3829 - } );
3830 -
3831 -
3832 - // These usually indicate a programmer mistake during development,
3833 - // warn about them ASAP rather than swallowing them by default.
3834 - var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
3835 -
3836 - jQuery.Deferred.exceptionHook = function( error, stack ) {
3837 -
3838 - // Support: IE 8 - 9 only
3839 - // Console exists when dev tools are open, which can happen at any time
3840 - if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {
3841 - window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack );
3842 - }
3843 - };
3844 -
3845 -
3846 -
3847 -
3848 - jQuery.readyException = function( error ) {
3849 - window.setTimeout( function() {
3850 - throw error;
3851 - } );
3852 - };
3853 -
3854 -
3855 -
3856 -
3857 - // The deferred used on DOM ready
3858 - var readyList = jQuery.Deferred();
3859 -
3860 - jQuery.fn.ready = function( fn ) {
3861 -
3862 - readyList
3863 - .then( fn )
3864 -
3865 - // Wrap jQuery.readyException in a function so that the lookup
3866 - // happens at the time of error handling instead of callback
3867 - // registration.
3868 - .catch( function( error ) {
3869 - jQuery.readyException( error );
3870 - } );
3871 -
3872 - return this;
3873 - };
3874 -
3875 - jQuery.extend( {
3876 -
3877 - // Is the DOM ready to be used? Set to true once it occurs.
3878 - isReady: false,
3879 -
3880 - // A counter to track how many items to wait for before
3881 - // the ready event fires. See #6781
3882 - readyWait: 1,
3883 -
3884 - // Handle when the DOM is ready
3885 - ready: function( wait ) {
3886 -
3887 - // Abort if there are pending holds or we're already ready
3888 - if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
3889 - return;
3890 - }
3891 -
3892 - // Remember that the DOM is ready
3893 - jQuery.isReady = true;
3894 -
3895 - // If a normal DOM Ready event fired, decrement, and wait if need be
3896 - if ( wait !== true && --jQuery.readyWait > 0 ) {
3897 - return;
3898 - }
3899 -
3900 - // If there are functions bound, to execute
3901 - readyList.resolveWith( document, [ jQuery ] );
3902 - }
3903 - } );
3904 -
3905 - jQuery.ready.then = readyList.then;
3906 -
3907 - // The ready event handler and self cleanup method
3908 - function completed() {
3909 - document.removeEventListener( "DOMContentLoaded", completed );
3910 - window.removeEventListener( "load", completed );
3911 - jQuery.ready();
3912 - }
3913 -
3914 - // Catch cases where $(document).ready() is called
3915 - // after the browser event has already occurred.
3916 - // Support: IE <=9 - 10 only
3917 - // Older IE sometimes signals "interactive" too soon
3918 - if ( document.readyState === "complete" ||
3919 - ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) {
3920 -
3921 - // Handle it asynchronously to allow scripts the opportunity to delay ready
3922 - window.setTimeout( jQuery.ready );
3923 -
3924 - } else {
3925 -
3926 - // Use the handy event callback
3927 - document.addEventListener( "DOMContentLoaded", completed );
3928 -
3929 - // A fallback to window.onload, that will always work
3930 - window.addEventListener( "load", completed );
3931 - }
3932 -
3933 -
3934 -
3935 -
3936 - // Multifunctional method to get and set values of a collection
3937 - // The value/s can optionally be executed if it's a function
3938 - var access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
3939 - var i = 0,
3940 - len = elems.length,
3941 - bulk = key == null;
3942 -
3943 - // Sets many values
3944 - if ( toType( key ) === "object" ) {
3945 - chainable = true;
3946 - for ( i in key ) {
3947 - access( elems, fn, i, key[ i ], true, emptyGet, raw );
3948 - }
3949 -
3950 - // Sets one value
3951 - } else if ( value !== undefined ) {
3952 - chainable = true;
3953 -
3954 - if ( !isFunction( value ) ) {
3955 - raw = true;
3956 - }
3957 -
3958 - if ( bulk ) {
3959 -
3960 - // Bulk operations run against the entire set
3961 - if ( raw ) {
3962 - fn.call( elems, value );
3963 - fn = null;
3964 -
3965 - // ...except when executing function values
3966 - } else {
3967 - bulk = fn;
3968 - fn = function( elem, key, value ) {
3969 - return bulk.call( jQuery( elem ), value );
3970 - };
3971 - }
3972 - }
3973 -
3974 - if ( fn ) {
3975 - for ( ; i < len; i++ ) {
3976 - fn(
3977 - elems[ i ], key, raw ?
3978 - value :
3979 - value.call( elems[ i ], i, fn( elems[ i ], key ) )
3980 - );
3981 - }
3982 - }
3983 - }
3984 -
3985 - if ( chainable ) {
3986 - return elems;
3987 - }
3988 -
3989 - // Gets
3990 - if ( bulk ) {
3991 - return fn.call( elems );
3992 - }
3993 -
3994 - return len ? fn( elems[ 0 ], key ) : emptyGet;
3995 - };
3996 -
3997 -
3998 - // Matches dashed string for camelizing
3999 - var rmsPrefix = /^-ms-/,
4000 - rdashAlpha = /-([a-z])/g;
4001 -
4002 - // Used by camelCase as callback to replace()
4003 - function fcamelCase( all, letter ) {
4004 - return letter.toUpperCase();
4005 - }
4006 -
4007 - // Convert dashed to camelCase; used by the css and data modules
4008 - // Support: IE <=9 - 11, Edge 12 - 15
4009 - // Microsoft forgot to hump their vendor prefix (#9572)
4010 - function camelCase( string ) {
4011 - return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
4012 - }
4013 - var acceptData = function( owner ) {
4014 -
4015 - // Accepts only:
4016 - // - Node
4017 - // - Node.ELEMENT_NODE
4018 - // - Node.DOCUMENT_NODE
4019 - // - Object
4020 - // - Any
4021 - return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );
4022 - };
4023 -
4024 -
4025 -
4026 -
4027 - function Data() {
4028 - this.expando = jQuery.expando + Data.uid++;
4029 - }
4030 -
4031 - Data.uid = 1;
4032 -
4033 - Data.prototype = {
4034 -
4035 - cache: function( owner ) {
4036 -
4037 - // Check if the owner object already has a cache
4038 - var value = owner[ this.expando ];
4039 -
4040 - // If not, create one
4041 - if ( !value ) {
4042 - value = {};
4043 -
4044 - // We can accept data for non-element nodes in modern browsers,
4045 - // but we should not, see #8335.
4046 - // Always return an empty object.
4047 - if ( acceptData( owner ) ) {
4048 -
4049 - // If it is a node unlikely to be stringify-ed or looped over
4050 - // use plain assignment
4051 - if ( owner.nodeType ) {
4052 - owner[ this.expando ] = value;
4053 -
4054 - // Otherwise secure it in a non-enumerable property
4055 - // configurable must be true to allow the property to be
4056 - // deleted when data is removed
4057 - } else {
4058 - Object.defineProperty( owner, this.expando, {
4059 - value: value,
4060 - configurable: true
4061 - } );
4062 - }
4063 - }
4064 - }
4065 -
4066 - return value;
4067 - },
4068 - set: function( owner, data, value ) {
4069 - var prop,
4070 - cache = this.cache( owner );
4071 -
4072 - // Handle: [ owner, key, value ] args
4073 - // Always use camelCase key (gh-2257)
4074 - if ( typeof data === "string" ) {
4075 - cache[ camelCase( data ) ] = value;
4076 -
4077 - // Handle: [ owner, { properties } ] args
4078 - } else {
4079 -
4080 - // Copy the properties one-by-one to the cache object
4081 - for ( prop in data ) {
4082 - cache[ camelCase( prop ) ] = data[ prop ];
4083 - }
4084 - }
4085 - return cache;
4086 - },
4087 - get: function( owner, key ) {
4088 - return key === undefined ?
4089 - this.cache( owner ) :
4090 -
4091 - // Always use camelCase key (gh-2257)
4092 - owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];
4093 - },
4094 - access: function( owner, key, value ) {
4095 -
4096 - // In cases where either:
4097 - //
4098 - // 1. No key was specified
4099 - // 2. A string key was specified, but no value provided
4100 - //
4101 - // Take the "read" path and allow the get method to determine
4102 - // which value to return, respectively either:
4103 - //
4104 - // 1. The entire cache object
4105 - // 2. The data stored at the key
4106 - //
4107 - if ( key === undefined ||
4108 - ( ( key && typeof key === "string" ) && value === undefined ) ) {
4109 -
4110 - return this.get( owner, key );
4111 - }
4112 -
4113 - // When the key is not a string, or both a key and value
4114 - // are specified, set or extend (existing objects) with either:
4115 - //
4116 - // 1. An object of properties
4117 - // 2. A key and value
4118 - //
4119 - this.set( owner, key, value );
4120 -
4121 - // Since the "set" path can have two possible entry points
4122 - // return the expected data based on which path was taken[*]
4123 - return value !== undefined ? value : key;
4124 - },
4125 - remove: function( owner, key ) {
4126 - var i,
4127 - cache = owner[ this.expando ];
4128 -
4129 - if ( cache === undefined ) {
4130 - return;
4131 - }
4132 -
4133 - if ( key !== undefined ) {
4134 -
4135 - // Support array or space separated string of keys
4136 - if ( Array.isArray( key ) ) {
4137 -
4138 - // If key is an array of keys...
4139 - // We always set camelCase keys, so remove that.
4140 - key = key.map( camelCase );
4141 - } else {
4142 - key = camelCase( key );
4143 -
4144 - // If a key with the spaces exists, use it.
4145 - // Otherwise, create an array by matching non-whitespace
4146 - key = key in cache ?
4147 - [ key ] :
4148 - ( key.match( rnothtmlwhite ) || [] );
4149 - }
4150 -
4151 - i = key.length;
4152 -
4153 - while ( i-- ) {
4154 - delete cache[ key[ i ] ];
4155 - }
4156 - }
4157 -
4158 - // Remove the expando if there's no more data
4159 - if ( key === undefined || jQuery.isEmptyObject( cache ) ) {
4160 -
4161 - // Support: Chrome <=35 - 45
4162 - // Webkit & Blink performance suffers when deleting properties
4163 - // from DOM nodes, so set to undefined instead
4164 - // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)
4165 - if ( owner.nodeType ) {
4166 - owner[ this.expando ] = undefined;
4167 - } else {
4168 - delete owner[ this.expando ];
4169 - }
4170 - }
4171 - },
4172 - hasData: function( owner ) {
4173 - var cache = owner[ this.expando ];
4174 - return cache !== undefined && !jQuery.isEmptyObject( cache );
4175 - }
4176 - };
4177 - var dataPriv = new Data();
4178 -
4179 - var dataUser = new Data();
4180 -
4181 -
4182 -
4183 - // Implementation Summary
4184 - //
4185 - // 1. Enforce API surface and semantic compatibility with 1.9.x branch
4186 - // 2. Improve the module's maintainability by reducing the storage
4187 - // paths to a single mechanism.
4188 - // 3. Use the same single mechanism to support "private" and "user" data.
4189 - // 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
4190 - // 5. Avoid exposing implementation details on user objects (eg. expando properties)
4191 - // 6. Provide a clear path for implementation upgrade to WeakMap in 2014
4192 -
4193 - var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
4194 - rmultiDash = /[A-Z]/g;
4195 -
4196 - function getData( data ) {
4197 - if ( data === "true" ) {
4198 - return true;
4199 - }
4200 -
4201 - if ( data === "false" ) {
4202 - return false;
4203 - }
4204 -
4205 - if ( data === "null" ) {
4206 - return null;
4207 - }
4208 -
4209 - // Only convert to a number if it doesn't change the string
4210 - if ( data === +data + "" ) {
4211 - return +data;
4212 - }
4213 -
4214 - if ( rbrace.test( data ) ) {
4215 - return JSON.parse( data );
4216 - }
4217 -
4218 - return data;
4219 - }
4220 -
4221 - function dataAttr( elem, key, data ) {
4222 - var name;
4223 -
4224 - // If nothing was found internally, try to fetch any
4225 - // data from the HTML5 data-* attribute
4226 - if ( data === undefined && elem.nodeType === 1 ) {
4227 - name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase();
4228 - data = elem.getAttribute( name );
4229 -
4230 - if ( typeof data === "string" ) {
4231 - try {
4232 - data = getData( data );
4233 - } catch ( e ) {}
4234 -
4235 - // Make sure we set the data so it isn't changed later
4236 - dataUser.set( elem, key, data );
4237 - } else {
4238 - data = undefined;
4239 - }
4240 - }
4241 - return data;
4242 - }
4243 -
4244 - jQuery.extend( {
4245 - hasData: function( elem ) {
4246 - return dataUser.hasData( elem ) || dataPriv.hasData( elem );
4247 - },
4248 -
4249 - data: function( elem, name, data ) {
4250 - return dataUser.access( elem, name, data );
4251 - },
4252 -
4253 - removeData: function( elem, name ) {
4254 - dataUser.remove( elem, name );
4255 - },
4256 -
4257 - // TODO: Now that all calls to _data and _removeData have been replaced
4258 - // with direct calls to dataPriv methods, these can be deprecated.
4259 - _data: function( elem, name, data ) {
4260 - return dataPriv.access( elem, name, data );
4261 - },
4262 -
4263 - _removeData: function( elem, name ) {
4264 - dataPriv.remove( elem, name );
4265 - }
4266 - } );
4267 -
4268 - jQuery.fn.extend( {
4269 - data: function( key, value ) {
4270 - var i, name, data,
4271 - elem = this[ 0 ],
4272 - attrs = elem && elem.attributes;
4273 -
4274 - // Gets all values
4275 - if ( key === undefined ) {
4276 - if ( this.length ) {
4277 - data = dataUser.get( elem );
4278 -
4279 - if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) {
4280 - i = attrs.length;
4281 - while ( i-- ) {
4282 -
4283 - // Support: IE 11 only
4284 - // The attrs elements can be null (#14894)
4285 - if ( attrs[ i ] ) {
4286 - name = attrs[ i ].name;
4287 - if ( name.indexOf( "data-" ) === 0 ) {
4288 - name = camelCase( name.slice( 5 ) );
4289 - dataAttr( elem, name, data[ name ] );
4290 - }
4291 - }
4292 - }
4293 - dataPriv.set( elem, "hasDataAttrs", true );
4294 - }
4295 - }
4296 -
4297 - return data;
4298 - }
4299 -
4300 - // Sets multiple values
4301 - if ( typeof key === "object" ) {
4302 - return this.each( function() {
4303 - dataUser.set( this, key );
4304 - } );
4305 - }
4306 -
4307 - return access( this, function( value ) {
4308 - var data;
4309 -
4310 - // The calling jQuery object (element matches) is not empty
4311 - // (and therefore has an element appears at this[ 0 ]) and the
4312 - // `value` parameter was not undefined. An empty jQuery object
4313 - // will result in `undefined` for elem = this[ 0 ] which will
4314 - // throw an exception if an attempt to read a data cache is made.
4315 - if ( elem && value === undefined ) {
4316 -
4317 - // Attempt to get data from the cache
4318 - // The key will always be camelCased in Data
4319 - data = dataUser.get( elem, key );
4320 - if ( data !== undefined ) {
4321 - return data;
4322 - }
4323 -
4324 - // Attempt to "discover" the data in
4325 - // HTML5 custom data-* attrs
4326 - data = dataAttr( elem, key );
4327 - if ( data !== undefined ) {
4328 - return data;
4329 - }
4330 -
4331 - // We tried really hard, but the data doesn't exist.
4332 - return;
4333 - }
4334 -
4335 - // Set the data...
4336 - this.each( function() {
4337 -
4338 - // We always store the camelCased key
4339 - dataUser.set( this, key, value );
4340 - } );
4341 - }, null, value, arguments.length > 1, null, true );
4342 - },
4343 -
4344 - removeData: function( key ) {
4345 - return this.each( function() {
4346 - dataUser.remove( this, key );
4347 - } );
4348 - }
4349 - } );
4350 -
4351 -
4352 - jQuery.extend( {
4353 - queue: function( elem, type, data ) {
4354 - var queue;
4355 -
4356 - if ( elem ) {
4357 - type = ( type || "fx" ) + "queue";
4358 - queue = dataPriv.get( elem, type );
4359 -
4360 - // Speed up dequeue by getting out quickly if this is just a lookup
4361 - if ( data ) {
4362 - if ( !queue || Array.isArray( data ) ) {
4363 - queue = dataPriv.access( elem, type, jQuery.makeArray( data ) );
4364 - } else {
4365 - queue.push( data );
4366 - }
4367 - }
4368 - return queue || [];
4369 - }
4370 - },
4371 -
4372 - dequeue: function( elem, type ) {
4373 - type = type || "fx";
4374 -
4375 - var queue = jQuery.queue( elem, type ),
4376 - startLength = queue.length,
4377 - fn = queue.shift(),
4378 - hooks = jQuery._queueHooks( elem, type ),
4379 - next = function() {
4380 - jQuery.dequeue( elem, type );
4381 - };
4382 -
4383 - // If the fx queue is dequeued, always remove the progress sentinel
4384 - if ( fn === "inprogress" ) {
4385 - fn = queue.shift();
4386 - startLength--;
4387 - }
4388 -
4389 - if ( fn ) {
4390 -
4391 - // Add a progress sentinel to prevent the fx queue from being
4392 - // automatically dequeued
4393 - if ( type === "fx" ) {
4394 - queue.unshift( "inprogress" );
4395 - }
4396 -
4397 - // Clear up the last queue stop function
4398 - delete hooks.stop;
4399 - fn.call( elem, next, hooks );
4400 - }
4401 -
4402 - if ( !startLength && hooks ) {
4403 - hooks.empty.fire();
4404 - }
4405 - },
4406 -
4407 - // Not public - generate a queueHooks object, or return the current one
4408 - _queueHooks: function( elem, type ) {
4409 - var key = type + "queueHooks";
4410 - return dataPriv.get( elem, key ) || dataPriv.access( elem, key, {
4411 - empty: jQuery.Callbacks( "once memory" ).add( function() {
4412 - dataPriv.remove( elem, [ type + "queue", key ] );
4413 - } )
4414 - } );
4415 - }
4416 - } );
4417 -
4418 - jQuery.fn.extend( {
4419 - queue: function( type, data ) {
4420 - var setter = 2;
4421 -
4422 - if ( typeof type !== "string" ) {
4423 - data = type;
4424 - type = "fx";
4425 - setter--;
4426 - }
4427 -
4428 - if ( arguments.length < setter ) {
4429 - return jQuery.queue( this[ 0 ], type );
4430 - }
4431 -
4432 - return data === undefined ?
4433 - this :
4434 - this.each( function() {
4435 - var queue = jQuery.queue( this, type, data );
4436 -
4437 - // Ensure a hooks for this queue
4438 - jQuery._queueHooks( this, type );
4439 -
4440 - if ( type === "fx" && queue[ 0 ] !== "inprogress" ) {
4441 - jQuery.dequeue( this, type );
4442 - }
4443 - } );
4444 - },
4445 - dequeue: function( type ) {
4446 - return this.each( function() {
4447 - jQuery.dequeue( this, type );
4448 - } );
4449 - },
4450 - clearQueue: function( type ) {
4451 - return this.queue( type || "fx", [] );
4452 - },
4453 -
4454 - // Get a promise resolved when queues of a certain type
4455 - // are emptied (fx is the type by default)
4456 - promise: function( type, obj ) {
4457 - var tmp,
4458 - count = 1,
4459 - defer = jQuery.Deferred(),
4460 - elements = this,
4461 - i = this.length,
4462 - resolve = function() {
4463 - if ( !( --count ) ) {
4464 - defer.resolveWith( elements, [ elements ] );
4465 - }
4466 - };
4467 -
4468 - if ( typeof type !== "string" ) {
4469 - obj = type;
4470 - type = undefined;
4471 - }
4472 - type = type || "fx";
4473 -
4474 - while ( i-- ) {
4475 - tmp = dataPriv.get( elements[ i ], type + "queueHooks" );
4476 - if ( tmp && tmp.empty ) {
4477 - count++;
4478 - tmp.empty.add( resolve );
4479 - }
4480 - }
4481 - resolve();
4482 - return defer.promise( obj );
4483 - }
4484 - } );
4485 - var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source;
4486 -
4487 - var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" );
4488 -
4489 -
4490 - var cssExpand = [ "Top", "Right", "Bottom", "Left" ];
4491 -
4492 - var documentElement = document.documentElement;
4493 -
4494 -
4495 -
4496 - var isAttached = function( elem ) {
4497 - return jQuery.contains( elem.ownerDocument, elem );
4498 - },
4499 - composed = { composed: true };
4500 -
4501 - // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only
4502 - // Check attachment across shadow DOM boundaries when possible (gh-3504)
4503 - // Support: iOS 10.0-10.2 only
4504 - // Early iOS 10 versions support `attachShadow` but not `getRootNode`,
4505 - // leading to errors. We need to check for `getRootNode`.
4506 - if ( documentElement.getRootNode ) {
4507 - isAttached = function( elem ) {
4508 - return jQuery.contains( elem.ownerDocument, elem ) ||
4509 - elem.getRootNode( composed ) === elem.ownerDocument;
4510 - };
4511 - }
4512 - var isHiddenWithinTree = function( elem, el ) {
4513 -
4514 - // isHiddenWithinTree might be called from jQuery#filter function;
4515 - // in that case, element will be second argument
4516 - elem = el || elem;
4517 -
4518 - // Inline style trumps all
4519 - return elem.style.display === "none" ||
4520 - elem.style.display === "" &&
4521 -
4522 - // Otherwise, check computed style
4523 - // Support: Firefox <=43 - 45
4524 - // Disconnected elements can have computed display: none, so first confirm that elem is
4525 - // in the document.
4526 - isAttached( elem ) &&
4527 -
4528 - jQuery.css( elem, "display" ) === "none";
4529 - };
4530 -
4531 - var swap = function( elem, options, callback, args ) {
4532 - var ret, name,
4533 - old = {};
4534 -
4535 - // Remember the old values, and insert the new ones
4536 - for ( name in options ) {
4537 - old[ name ] = elem.style[ name ];
4538 - elem.style[ name ] = options[ name ];
4539 - }
4540 -
4541 - ret = callback.apply( elem, args || [] );
4542 -
4543 - // Revert the old values
4544 - for ( name in options ) {
4545 - elem.style[ name ] = old[ name ];
4546 - }
4547 -
4548 - return ret;
4549 - };
4550 -
4551 -
4552 -
4553 -
4554 - function adjustCSS( elem, prop, valueParts, tween ) {
4555 - var adjusted, scale,
4556 - maxIterations = 20,
4557 - currentValue = tween ?
4558 - function() {
4559 - return tween.cur();
4560 - } :
4561 - function() {
4562 - return jQuery.css( elem, prop, "" );
4563 - },
4564 - initial = currentValue(),
4565 - unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
4566 -
4567 - // Starting value computation is required for potential unit mismatches
4568 - initialInUnit = elem.nodeType &&
4569 - ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) &&
4570 - rcssNum.exec( jQuery.css( elem, prop ) );
4571 -
4572 - if ( initialInUnit && initialInUnit[ 3 ] !== unit ) {
4573 -
4574 - // Support: Firefox <=54
4575 - // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)
4576 - initial = initial / 2;
4577 -
4578 - // Trust units reported by jQuery.css
4579 - unit = unit || initialInUnit[ 3 ];
4580 -
4581 - // Iteratively approximate from a nonzero starting point
4582 - initialInUnit = +initial || 1;
4583 -
4584 - while ( maxIterations-- ) {
4585 -
4586 - // Evaluate and update our best guess (doubling guesses that zero out).
4587 - // Finish if the scale equals or crosses 1 (making the old*new product non-positive).
4588 - jQuery.style( elem, prop, initialInUnit + unit );
4589 - if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {
4590 - maxIterations = 0;
4591 - }
4592 - initialInUnit = initialInUnit / scale;
4593 -
4594 - }
4595 -
4596 - initialInUnit = initialInUnit * 2;
4597 - jQuery.style( elem, prop, initialInUnit + unit );
4598 -
4599 - // Make sure we update the tween properties later on
4600 - valueParts = valueParts || [];
4601 - }
4602 -
4603 - if ( valueParts ) {
4604 - initialInUnit = +initialInUnit || +initial || 0;
4605 -
4606 - // Apply relative offset (+=/-=) if specified
4607 - adjusted = valueParts[ 1 ] ?
4608 - initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :
4609 - +valueParts[ 2 ];
4610 - if ( tween ) {
4611 - tween.unit = unit;
4612 - tween.start = initialInUnit;
4613 - tween.end = adjusted;
4614 - }
4615 - }
4616 - return adjusted;
4617 - }
4618 -
4619 -
4620 - var defaultDisplayMap = {};
4621 -
4622 - function getDefaultDisplay( elem ) {
4623 - var temp,
4624 - doc = elem.ownerDocument,
4625 - nodeName = elem.nodeName,
4626 - display = defaultDisplayMap[ nodeName ];
4627 -
4628 - if ( display ) {
4629 - return display;
4630 - }
4631 -
4632 - temp = doc.body.appendChild( doc.createElement( nodeName ) );
4633 - display = jQuery.css( temp, "display" );
4634 -
4635 - temp.parentNode.removeChild( temp );
4636 -
4637 - if ( display === "none" ) {
4638 - display = "block";
4639 - }
4640 - defaultDisplayMap[ nodeName ] = display;
4641 -
4642 - return display;
4643 - }
4644 -
4645 - function showHide( elements, show ) {
4646 - var display, elem,
4647 - values = [],
4648 - index = 0,
4649 - length = elements.length;
4650 -
4651 - // Determine new display value for elements that need to change
4652 - for ( ; index < length; index++ ) {
4653 - elem = elements[ index ];
4654 - if ( !elem.style ) {
4655 - continue;
4656 - }
4657 -
4658 - display = elem.style.display;
4659 - if ( show ) {
4660 -
4661 - // Since we force visibility upon cascade-hidden elements, an immediate (and slow)
4662 - // check is required in this first loop unless we have a nonempty display value (either
4663 - // inline or about-to-be-restored)
4664 - if ( display === "none" ) {
4665 - values[ index ] = dataPriv.get( elem, "display" ) || null;
4666 - if ( !values[ index ] ) {
4667 - elem.style.display = "";
4668 - }
4669 - }
4670 - if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) {
4671 - values[ index ] = getDefaultDisplay( elem );
4672 - }
4673 - } else {
4674 - if ( display !== "none" ) {
4675 - values[ index ] = "none";
4676 -
4677 - // Remember what we're overwriting
4678 - dataPriv.set( elem, "display", display );
4679 - }
4680 - }
4681 - }
4682 -
4683 - // Set the display of the elements in a second loop to avoid constant reflow
4684 - for ( index = 0; index < length; index++ ) {
4685 - if ( values[ index ] != null ) {
4686 - elements[ index ].style.display = values[ index ];
4687 - }
4688 - }
4689 -
4690 - return elements;
4691 - }
4692 -
4693 - jQuery.fn.extend( {
4694 - show: function() {
4695 - return showHide( this, true );
4696 - },
4697 - hide: function() {
4698 - return showHide( this );
4699 - },
4700 - toggle: function( state ) {
4701 - if ( typeof state === "boolean" ) {
4702 - return state ? this.show() : this.hide();
4703 - }
4704 -
4705 - return this.each( function() {
4706 - if ( isHiddenWithinTree( this ) ) {
4707 - jQuery( this ).show();
4708 - } else {
4709 - jQuery( this ).hide();
4710 - }
4711 - } );
4712 - }
4713 - } );
4714 - var rcheckableType = ( /^(?:checkbox|radio)$/i );
4715 -
4716 - var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]*)/i );
4717 -
4718 - var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i );
4719 -
4720 -
4721 -
4722 - // We have to close these tags to support XHTML (#13200)
4723 - var wrapMap = {
4724 -
4725 - // Support: IE <=9 only
4726 - option: [ 1, "<select multiple='multiple'>", "</select>" ],
4727 -
4728 - // XHTML parsers do not magically insert elements in the
4729 - // same way that tag soup parsers do. So we cannot shorten
4730 - // this by omitting <tbody> or other required elements.
4731 - thead: [ 1, "<table>", "</table>" ],
4732 - col: [ 2, "<table><colgroup>", "</colgroup></table>" ],
4733 - tr: [ 2, "<table><tbody>", "</tbody></table>" ],
4734 - td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
4735 -
4736 - _default: [ 0, "", "" ]
4737 - };
4738 -
4739 - // Support: IE <=9 only
4740 - wrapMap.optgroup = wrapMap.option;
4741 -
4742 - wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
4743 - wrapMap.th = wrapMap.td;
4744 -
4745 -
4746 - function getAll( context, tag ) {
4747 -
4748 - // Support: IE <=9 - 11 only
4749 - // Use typeof to avoid zero-argument method invocation on host objects (#15151)
4750 - var ret;
4751 -
4752 - if ( typeof context.getElementsByTagName !== "undefined" ) {
4753 - ret = context.getElementsByTagName( tag || "*" );
4754 -
4755 - } else if ( typeof context.querySelectorAll !== "undefined" ) {
4756 - ret = context.querySelectorAll( tag || "*" );
4757 -
4758 - } else {
4759 - ret = [];
4760 - }
4761 -
4762 - if ( tag === undefined || tag && nodeName( context, tag ) ) {
4763 - return jQuery.merge( [ context ], ret );
4764 - }
4765 -
4766 - return ret;
4767 - }
4768 -
4769 -
4770 - // Mark scripts as having already been evaluated
4771 - function setGlobalEval( elems, refElements ) {
4772 - var i = 0,
4773 - l = elems.length;
4774 -
4775 - for ( ; i < l; i++ ) {
4776 - dataPriv.set(
4777 - elems[ i ],
4778 - "globalEval",
4779 - !refElements || dataPriv.get( refElements[ i ], "globalEval" )
4780 - );
4781 - }
4782 - }
4783 -
4784 -
4785 - var rhtml = /<|&#?\w+;/;
4786 -
4787 - function buildFragment( elems, context, scripts, selection, ignored ) {
4788 - var elem, tmp, tag, wrap, attached, j,
4789 - fragment = context.createDocumentFragment(),
4790 - nodes = [],
4791 - i = 0,
4792 - l = elems.length;
4793 -
4794 - for ( ; i < l; i++ ) {
4795 - elem = elems[ i ];
4796 -
4797 - if ( elem || elem === 0 ) {
4798 -
4799 - // Add nodes directly
4800 - if ( toType( elem ) === "object" ) {
4801 -
4802 - // Support: Android <=4.0 only, PhantomJS 1 only
4803 - // push.apply(_, arraylike) throws on ancient WebKit
4804 - jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
4805 -
4806 - // Convert non-html into a text node
4807 - } else if ( !rhtml.test( elem ) ) {
4808 - nodes.push( context.createTextNode( elem ) );
4809 -
4810 - // Convert html into DOM nodes
4811 - } else {
4812 - tmp = tmp || fragment.appendChild( context.createElement( "div" ) );
4813 -
4814 - // Deserialize a standard representation
4815 - tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();
4816 - wrap = wrapMap[ tag ] || wrapMap._default;
4817 - tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];
4818 -
4819 - // Descend through wrappers to the right content
4820 - j = wrap[ 0 ];
4821 - while ( j-- ) {
4822 - tmp = tmp.lastChild;
4823 - }
4824 -
4825 - // Support: Android <=4.0 only, PhantomJS 1 only
4826 - // push.apply(_, arraylike) throws on ancient WebKit
4827 - jQuery.merge( nodes, tmp.childNodes );
4828 -
4829 - // Remember the top-level container
4830 - tmp = fragment.firstChild;
4831 -
4832 - // Ensure the created nodes are orphaned (#12392)
4833 - tmp.textContent = "";
4834 - }
4835 - }
4836 - }
4837 -
4838 - // Remove wrapper from fragment
4839 - fragment.textContent = "";
4840 -
4841 - i = 0;
4842 - while ( ( elem = nodes[ i++ ] ) ) {
4843 -
4844 - // Skip elements already in the context collection (trac-4087)
4845 - if ( selection && jQuery.inArray( elem, selection ) > -1 ) {
4846 - if ( ignored ) {
4847 - ignored.push( elem );
4848 - }
4849 - continue;
4850 - }
4851 -
4852 - attached = isAttached( elem );
4853 -
4854 - // Append to fragment
4855 - tmp = getAll( fragment.appendChild( elem ), "script" );
4856 -
4857 - // Preserve script evaluation history
4858 - if ( attached ) {
4859 - setGlobalEval( tmp );
4860 - }
4861 -
4862 - // Capture executables
4863 - if ( scripts ) {
4864 - j = 0;
4865 - while ( ( elem = tmp[ j++ ] ) ) {
4866 - if ( rscriptType.test( elem.type || "" ) ) {
4867 - scripts.push( elem );
4868 - }
4869 - }
4870 - }
4871 - }
4872 -
4873 - return fragment;
4874 - }
4875 -
4876 -
4877 - ( function() {
4878 - var fragment = document.createDocumentFragment(),
4879 - div = fragment.appendChild( document.createElement( "div" ) ),
4880 - input = document.createElement( "input" );
4881 -
4882 - // Support: Android 4.0 - 4.3 only
4883 - // Check state lost if the name is set (#11217)
4884 - // Support: Windows Web Apps (WWA)
4885 - // `name` and `type` must use .setAttribute for WWA (#14901)
4886 - input.setAttribute( "type", "radio" );
4887 - input.setAttribute( "checked", "checked" );
4888 - input.setAttribute( "name", "t" );
4889 -
4890 - div.appendChild( input );
4891 -
4892 - // Support: Android <=4.1 only
4893 - // Older WebKit doesn't clone checked state correctly in fragments
4894 - support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
4895 -
4896 - // Support: IE <=11 only
4897 - // Make sure textarea (and checkbox) defaultValue is properly cloned
4898 - div.innerHTML = "<textarea>x</textarea>";
4899 - support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
4900 - } )();
4901 -
4902 -
4903 - var
4904 - rkeyEvent = /^key/,
4905 - rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,
4906 - rtypenamespace = /^([^.]*)(?:\.(.+)|)/;
4907 -
4908 - function returnTrue() {
4909 - return true;
4910 - }
4911 -
4912 - function returnFalse() {
4913 - return false;
4914 - }
4915 -
4916 - // Support: IE <=9 - 11+
4917 - // focus() and blur() are asynchronous, except when they are no-op.
4918 - // So expect focus to be synchronous when the element is already active,
4919 - // and blur to be synchronous when the element is not already active.
4920 - // (focus and blur are always synchronous in other supported browsers,
4921 - // this just defines when we can count on it).
4922 - function expectSync( elem, type ) {
4923 - return ( elem === safeActiveElement() ) === ( type === "focus" );
4924 - }
4925 -
4926 - // Support: IE <=9 only
4927 - // Accessing document.activeElement can throw unexpectedly
4928 - // https://bugs.jquery.com/ticket/13393
4929 - function safeActiveElement() {
4930 - try {
4931 - return document.activeElement;
4932 - } catch ( err ) { }
4933 - }
4934 -
4935 - function on( elem, types, selector, data, fn, one ) {
4936 - var origFn, type;
4937 -
4938 - // Types can be a map of types/handlers
4939 - if ( typeof types === "object" ) {
4940 -
4941 - // ( types-Object, selector, data )
4942 - if ( typeof selector !== "string" ) {
4943 -
4944 - // ( types-Object, data )
4945 - data = data || selector;
4946 - selector = undefined;
4947 - }
4948 - for ( type in types ) {
4949 - on( elem, type, selector, data, types[ type ], one );
4950 - }
4951 - return elem;
4952 - }
4953 -
4954 - if ( data == null && fn == null ) {
4955 -
4956 - // ( types, fn )
4957 - fn = selector;
4958 - data = selector = undefined;
4959 - } else if ( fn == null ) {
4960 - if ( typeof selector === "string" ) {
4961 -
4962 - // ( types, selector, fn )
4963 - fn = data;
4964 - data = undefined;
4965 - } else {
4966 -
4967 - // ( types, data, fn )
4968 - fn = data;
4969 - data = selector;
4970 - selector = undefined;
4971 - }
4972 - }
4973 - if ( fn === false ) {
4974 - fn = returnFalse;
4975 - } else if ( !fn ) {
4976 - return elem;
4977 - }
4978 -
4979 - if ( one === 1 ) {
4980 - origFn = fn;
4981 - fn = function( event ) {
4982 -
4983 - // Can use an empty set, since event contains the info
4984 - jQuery().off( event );
4985 - return origFn.apply( this, arguments );
4986 - };
4987 -
4988 - // Use same guid so caller can remove using origFn
4989 - fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
4990 - }
4991 - return elem.each( function() {
4992 - jQuery.event.add( this, types, fn, data, selector );
4993 - } );
4994 - }
4995 -
4996 - /*
4997 - * Helper functions for managing events -- not part of the public interface.
4998 - * Props to Dean Edwards' addEvent library for many of the ideas.
4999 - */
5000 - jQuery.event = {
5001 -
5002 - global: {},
5003 -
5004 - add: function( elem, types, handler, data, selector ) {
5005 -
5006 - var handleObjIn, eventHandle, tmp,
5007 - events, t, handleObj,
5008 - special, handlers, type, namespaces, origType,
5009 - elemData = dataPriv.get( elem );
5010 -
5011 - // Don't attach events to noData or text/comment nodes (but allow plain objects)
5012 - if ( !elemData ) {
5013 - return;
5014 - }
5015 -
5016 - // Caller can pass in an object of custom data in lieu of the handler
5017 - if ( handler.handler ) {
5018 - handleObjIn = handler;
5019 - handler = handleObjIn.handler;
5020 - selector = handleObjIn.selector;
5021 - }
5022 -
5023 - // Ensure that invalid selectors throw exceptions at attach time
5024 - // Evaluate against documentElement in case elem is a non-element node (e.g., document)
5025 - if ( selector ) {
5026 - jQuery.find.matchesSelector( documentElement, selector );
5027 - }
5028 -
5029 - // Make sure that the handler has a unique ID, used to find/remove it later
5030 - if ( !handler.guid ) {
5031 - handler.guid = jQuery.guid++;
5032 - }
5033 -
5034 - // Init the element's event structure and main handler, if this is the first
5035 - if ( !( events = elemData.events ) ) {
5036 - events = elemData.events = {};
5037 - }
5038 - if ( !( eventHandle = elemData.handle ) ) {
5039 - eventHandle = elemData.handle = function( e ) {
5040 -
5041 - // Discard the second event of a jQuery.event.trigger() and
5042 - // when an event is called after a page has unloaded
5043 - return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ?
5044 - jQuery.event.dispatch.apply( elem, arguments ) : undefined;
5045 - };
5046 - }
5047 -
5048 - // Handle multiple events separated by a space
5049 - types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
5050 - t = types.length;
5051 - while ( t-- ) {
5052 - tmp = rtypenamespace.exec( types[ t ] ) || [];
5053 - type = origType = tmp[ 1 ];
5054 - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
5055 -
5056 - // There *must* be a type, no attaching namespace-only handlers
5057 - if ( !type ) {
5058 - continue;
5059 - }
5060 -
5061 - // If event changes its type, use the special event handlers for the changed type
5062 - special = jQuery.event.special[ type ] || {};
5063 -
5064 - // If selector defined, determine special event api type, otherwise given type
5065 - type = ( selector ? special.delegateType : special.bindType ) || type;
5066 -
5067 - // Update special based on newly reset type
5068 - special = jQuery.event.special[ type ] || {};
5069 -
5070 - // handleObj is passed to all event handlers
5071 - handleObj = jQuery.extend( {
5072 - type: type,
5073 - origType: origType,
5074 - data: data,
5075 - handler: handler,
5076 - guid: handler.guid,
5077 - selector: selector,
5078 - needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
5079 - namespace: namespaces.join( "." )
5080 - }, handleObjIn );
5081 -
5082 - // Init the event handler queue if we're the first
5083 - if ( !( handlers = events[ type ] ) ) {
5084 - handlers = events[ type ] = [];
5085 - handlers.delegateCount = 0;
5086 -
5087 - // Only use addEventListener if the special events handler returns false
5088 - if ( !special.setup ||
5089 - special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
5090 -
5091 - if ( elem.addEventListener ) {
5092 - elem.addEventListener( type, eventHandle );
5093 - }
5094 - }
5095 - }
5096 -
5097 - if ( special.add ) {
5098 - special.add.call( elem, handleObj );
5099 -
5100 - if ( !handleObj.handler.guid ) {
5101 - handleObj.handler.guid = handler.guid;
5102 - }
5103 - }
5104 -
5105 - // Add to the element's handler list, delegates in front
5106 - if ( selector ) {
5107 - handlers.splice( handlers.delegateCount++, 0, handleObj );
5108 - } else {
5109 - handlers.push( handleObj );
5110 - }
5111 -
5112 - // Keep track of which events have ever been used, for event optimization
5113 - jQuery.event.global[ type ] = true;
5114 - }
5115 -
5116 - },
5117 -
5118 - // Detach an event or set of events from an element
5119 - remove: function( elem, types, handler, selector, mappedTypes ) {
5120 -
5121 - var j, origCount, tmp,
5122 - events, t, handleObj,
5123 - special, handlers, type, namespaces, origType,
5124 - elemData = dataPriv.hasData( elem ) && dataPriv.get( elem );
5125 -
5126 - if ( !elemData || !( events = elemData.events ) ) {
5127 - return;
5128 - }
5129 -
5130 - // Once for each type.namespace in types; type may be omitted
5131 - types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
5132 - t = types.length;
5133 - while ( t-- ) {
5134 - tmp = rtypenamespace.exec( types[ t ] ) || [];
5135 - type = origType = tmp[ 1 ];
5136 - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
5137 -
5138 - // Unbind all events (on this namespace, if provided) for the element
5139 - if ( !type ) {
5140 - for ( type in events ) {
5141 - jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
5142 - }
5143 - continue;
5144 - }
5145 -
5146 - special = jQuery.event.special[ type ] || {};
5147 - type = ( selector ? special.delegateType : special.bindType ) || type;
5148 - handlers = events[ type ] || [];
5149 - tmp = tmp[ 2 ] &&
5150 - new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" );
5151 -
5152 - // Remove matching events
5153 - origCount = j = handlers.length;
5154 - while ( j-- ) {
5155 - handleObj = handlers[ j ];
5156 -
5157 - if ( ( mappedTypes || origType === handleObj.origType ) &&
5158 - ( !handler || handler.guid === handleObj.guid ) &&
5159 - ( !tmp || tmp.test( handleObj.namespace ) ) &&
5160 - ( !selector || selector === handleObj.selector ||
5161 - selector === "**" && handleObj.selector ) ) {
5162 - handlers.splice( j, 1 );
5163 -
5164 - if ( handleObj.selector ) {
5165 - handlers.delegateCount--;
5166 - }
5167 - if ( special.remove ) {
5168 - special.remove.call( elem, handleObj );
5169 - }
5170 - }
5171 - }
5172 -
5173 - // Remove generic event handler if we removed something and no more handlers exist
5174 - // (avoids potential for endless recursion during removal of special event handlers)
5175 - if ( origCount && !handlers.length ) {
5176 - if ( !special.teardown ||
5177 - special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
5178 -
5179 - jQuery.removeEvent( elem, type, elemData.handle );
5180 - }
5181 -
5182 - delete events[ type ];
5183 - }
5184 - }
5185 -
5186 - // Remove data and the expando if it's no longer used
5187 - if ( jQuery.isEmptyObject( events ) ) {
5188 - dataPriv.remove( elem, "handle events" );
5189 - }
5190 - },
5191 -
5192 - dispatch: function( nativeEvent ) {
5193 -
5194 - // Make a writable jQuery.Event from the native event object
5195 - var event = jQuery.event.fix( nativeEvent );
5196 -
5197 - var i, j, ret, matched, handleObj, handlerQueue,
5198 - args = new Array( arguments.length ),
5199 - handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [],
5200 - special = jQuery.event.special[ event.type ] || {};
5201 -
5202 - // Use the fix-ed jQuery.Event rather than the (read-only) native event
5203 - args[ 0 ] = event;
5204 -
5205 - for ( i = 1; i < arguments.length; i++ ) {
5206 - args[ i ] = arguments[ i ];
5207 - }
5208 -
5209 - event.delegateTarget = this;
5210 -
5211 - // Call the preDispatch hook for the mapped type, and let it bail if desired
5212 - if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
5213 - return;
5214 - }
5215 -
5216 - // Determine handlers
5217 - handlerQueue = jQuery.event.handlers.call( this, event, handlers );
5218 -
5219 - // Run delegates first; they may want to stop propagation beneath us
5220 - i = 0;
5221 - while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {
5222 - event.currentTarget = matched.elem;
5223 -
5224 - j = 0;
5225 - while ( ( handleObj = matched.handlers[ j++ ] ) &&
5226 - !event.isImmediatePropagationStopped() ) {
5227 -
5228 - // If the event is namespaced, then each handler is only invoked if it is
5229 - // specially universal or its namespaces are a superset of the event's.
5230 - if ( !event.rnamespace || handleObj.namespace === false ||
5231 - event.rnamespace.test( handleObj.namespace ) ) {
5232 -
5233 - event.handleObj = handleObj;
5234 - event.data = handleObj.data;
5235 -
5236 - ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||
5237 - handleObj.handler ).apply( matched.elem, args );
5238 -
5239 - if ( ret !== undefined ) {
5240 - if ( ( event.result = ret ) === false ) {
5241 - event.preventDefault();
5242 - event.stopPropagation();
5243 - }
5244 - }
5245 - }
5246 - }
5247 - }
5248 -
5249 - // Call the postDispatch hook for the mapped type
5250 - if ( special.postDispatch ) {
5251 - special.postDispatch.call( this, event );
5252 - }
5253 -
5254 - return event.result;
5255 - },
5256 -
5257 - handlers: function( event, handlers ) {
5258 - var i, handleObj, sel, matchedHandlers, matchedSelectors,
5259 - handlerQueue = [],
5260 - delegateCount = handlers.delegateCount,
5261 - cur = event.target;
5262 -
5263 - // Find delegate handlers
5264 - if ( delegateCount &&
5265 -
5266 - // Support: IE <=9
5267 - // Black-hole SVG <use> instance trees (trac-13180)
5268 - cur.nodeType &&
5269 -
5270 - // Support: Firefox <=42
5271 - // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)
5272 - // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click
5273 - // Support: IE 11 only
5274 - // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343)
5275 - !( event.type === "click" && event.button >= 1 ) ) {
5276 -
5277 - for ( ; cur !== this; cur = cur.parentNode || this ) {
5278 -
5279 - // Don't check non-elements (#13208)
5280 - // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
5281 - if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) {
5282 - matchedHandlers = [];
5283 - matchedSelectors = {};
5284 - for ( i = 0; i < delegateCount; i++ ) {
5285 - handleObj = handlers[ i ];
5286 -
5287 - // Don't conflict with Object.prototype properties (#13203)
5288 - sel = handleObj.selector + " ";
5289 -
5290 - if ( matchedSelectors[ sel ] === undefined ) {
5291 - matchedSelectors[ sel ] = handleObj.needsContext ?
5292 - jQuery( sel, this ).index( cur ) > -1 :
5293 - jQuery.find( sel, this, null, [ cur ] ).length;
5294 - }
5295 - if ( matchedSelectors[ sel ] ) {
5296 - matchedHandlers.push( handleObj );
5297 - }
5298 - }
5299 - if ( matchedHandlers.length ) {
5300 - handlerQueue.push( { elem: cur, handlers: matchedHandlers } );
5301 - }
5302 - }
5303 - }
5304 - }
5305 -
5306 - // Add the remaining (directly-bound) handlers
5307 - cur = this;
5308 - if ( delegateCount < handlers.length ) {
5309 - handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );
5310 - }
5311 -
5312 - return handlerQueue;
5313 - },
5314 -
5315 - addProp: function( name, hook ) {
5316 - Object.defineProperty( jQuery.Event.prototype, name, {
5317 - enumerable: true,
5318 - configurable: true,
5319 -
5320 - get: isFunction( hook ) ?
5321 - function() {
5322 - if ( this.originalEvent ) {
5323 - return hook( this.originalEvent );
5324 - }
5325 - } :
5326 - function() {
5327 - if ( this.originalEvent ) {
5328 - return this.originalEvent[ name ];
5329 - }
5330 - },
5331 -
5332 - set: function( value ) {
5333 - Object.defineProperty( this, name, {
5334 - enumerable: true,
5335 - configurable: true,
5336 - writable: true,
5337 - value: value
5338 - } );
5339 - }
5340 - } );
5341 - },
5342 -
5343 - fix: function( originalEvent ) {
5344 - return originalEvent[ jQuery.expando ] ?
5345 - originalEvent :
5346 - new jQuery.Event( originalEvent );
5347 - },
5348 -
5349 - special: {
5350 - load: {
5351 -
5352 - // Prevent triggered image.load events from bubbling to window.load
5353 - noBubble: true
5354 - },
5355 - click: {
5356 -
5357 - // Utilize native event to ensure correct state for checkable inputs
5358 - setup: function( data ) {
5359 -
5360 - // For mutual compressibility with _default, replace `this` access with a local var.
5361 - // `|| data` is dead code meant only to preserve the variable through minification.
5362 - var el = this || data;
5363 -
5364 - // Claim the first handler
5365 - if ( rcheckableType.test( el.type ) &&
5366 - el.click && nodeName( el, "input" ) ) {
5367 -
5368 - // dataPriv.set( el, "click", ... )
5369 - leverageNative( el, "click", returnTrue );
5370 - }
5371 -
5372 - // Return false to allow normal processing in the caller
5373 - return false;
5374 - },
5375 - trigger: function( data ) {
5376 -
5377 - // For mutual compressibility with _default, replace `this` access with a local var.
5378 - // `|| data` is dead code meant only to preserve the variable through minification.
5379 - var el = this || data;
5380 -
5381 - // Force setup before triggering a click
5382 - if ( rcheckableType.test( el.type ) &&
5383 - el.click && nodeName( el, "input" ) ) {
5384 -
5385 - leverageNative( el, "click" );
5386 - }
5387 -
5388 - // Return non-false to allow normal event-path propagation
5389 - return true;
5390 - },
5391 -
5392 - // For cross-browser consistency, suppress native .click() on links
5393 - // Also prevent it if we're currently inside a leveraged native-event stack
5394 - _default: function( event ) {
5395 - var target = event.target;
5396 - return rcheckableType.test( target.type ) &&
5397 - target.click && nodeName( target, "input" ) &&
5398 - dataPriv.get( target, "click" ) ||
5399 - nodeName( target, "a" );
5400 - }
5401 - },
5402 -
5403 - beforeunload: {
5404 - postDispatch: function( event ) {
5405 -
5406 - // Support: Firefox 20+
5407 - // Firefox doesn't alert if the returnValue field is not set.
5408 - if ( event.result !== undefined && event.originalEvent ) {
5409 - event.originalEvent.returnValue = event.result;
5410 - }
5411 - }
5412 - }
5413 - }
5414 - };
5415 -
5416 - // Ensure the presence of an event listener that handles manually-triggered
5417 - // synthetic events by interrupting progress until reinvoked in response to
5418 - // *native* events that it fires directly, ensuring that state changes have
5419 - // already occurred before other listeners are invoked.
5420 - function leverageNative( el, type, expectSync ) {
5421 -
5422 - // Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add
5423 - if ( !expectSync ) {
5424 - if ( dataPriv.get( el, type ) === undefined ) {
5425 - jQuery.event.add( el, type, returnTrue );
5426 - }
5427 - return;
5428 - }
5429 -
5430 - // Register the controller as a special universal handler for all event namespaces
5431 - dataPriv.set( el, type, false );
5432 - jQuery.event.add( el, type, {
5433 - namespace: false,
5434 - handler: function( event ) {
5435 - var notAsync, result,
5436 - saved = dataPriv.get( this, type );
5437 -
5438 - if ( ( event.isTrigger & 1 ) && this[ type ] ) {
5439 -
5440 - // Interrupt processing of the outer synthetic .trigger()ed event
5441 - // Saved data should be false in such cases, but might be a leftover capture object
5442 - // from an async native handler (gh-4350)
5443 - if ( !saved.length ) {
5444 -
5445 - // Store arguments for use when handling the inner native event
5446 - // There will always be at least one argument (an event object), so this array
5447 - // will not be confused with a leftover capture object.
5448 - saved = slice.call( arguments );
5449 - dataPriv.set( this, type, saved );
5450 -
5451 - // Trigger the native event and capture its result
5452 - // Support: IE <=9 - 11+
5453 - // focus() and blur() are asynchronous
5454 - notAsync = expectSync( this, type );
5455 - this[ type ]();
5456 - result = dataPriv.get( this, type );
5457 - if ( saved !== result || notAsync ) {
5458 - dataPriv.set( this, type, false );
5459 - } else {
5460 - result = {};
5461 - }
5462 - if ( saved !== result ) {
5463 -
5464 - // Cancel the outer synthetic event
5465 - event.stopImmediatePropagation();
5466 - event.preventDefault();
5467 - return result.value;
5468 - }
5469 -
5470 - // If this is an inner synthetic event for an event with a bubbling surrogate
5471 - // (focus or blur), assume that the surrogate already propagated from triggering the
5472 - // native event and prevent that from happening again here.
5473 - // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the
5474 - // bubbling surrogate propagates *after* the non-bubbling base), but that seems
5475 - // less bad than duplication.
5476 - } else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {
5477 - event.stopPropagation();
5478 - }
5479 -
5480 - // If this is a native event triggered above, everything is now in order
5481 - // Fire an inner synthetic event with the original arguments
5482 - } else if ( saved.length ) {
5483 -
5484 - // ...and capture the result
5485 - dataPriv.set( this, type, {
5486 - value: jQuery.event.trigger(
5487 -
5488 - // Support: IE <=9 - 11+
5489 - // Extend with the prototype to reset the above stopImmediatePropagation()
5490 - jQuery.extend( saved[ 0 ], jQuery.Event.prototype ),
5491 - saved.slice( 1 ),
5492 - this
5493 - )
5494 - } );
5495 -
5496 - // Abort handling of the native event
5497 - event.stopImmediatePropagation();
5498 - }
5499 - }
5500 - } );
5501 - }
5502 -
5503 - jQuery.removeEvent = function( elem, type, handle ) {
5504 -
5505 - // This "if" is needed for plain objects
5506 - if ( elem.removeEventListener ) {
5507 - elem.removeEventListener( type, handle );
5508 - }
5509 - };
5510 -
5511 - jQuery.Event = function( src, props ) {
5512 -
5513 - // Allow instantiation without the 'new' keyword
5514 - if ( !( this instanceof jQuery.Event ) ) {
5515 - return new jQuery.Event( src, props );
5516 - }
5517 -
5518 - // Event object
5519 - if ( src && src.type ) {
5520 - this.originalEvent = src;
5521 - this.type = src.type;
5522 -
5523 - // Events bubbling up the document may have been marked as prevented
5524 - // by a handler lower down the tree; reflect the correct value.
5525 - this.isDefaultPrevented = src.defaultPrevented ||
5526 - src.defaultPrevented === undefined &&
5527 -
5528 - // Support: Android <=2.3 only
5529 - src.returnValue === false ?
5530 - returnTrue :
5531 - returnFalse;
5532 -
5533 - // Create target properties
5534 - // Support: Safari <=6 - 7 only
5535 - // Target should not be a text node (#504, #13143)
5536 - this.target = ( src.target && src.target.nodeType === 3 ) ?
5537 - src.target.parentNode :
5538 - src.target;
5539 -
5540 - this.currentTarget = src.currentTarget;
5541 - this.relatedTarget = src.relatedTarget;
5542 -
5543 - // Event type
5544 - } else {
5545 - this.type = src;
5546 - }
5547 -
5548 - // Put explicitly provided properties onto the event object
5549 - if ( props ) {
5550 - jQuery.extend( this, props );
5551 - }
5552 -
5553 - // Create a timestamp if incoming event doesn't have one
5554 - this.timeStamp = src && src.timeStamp || Date.now();
5555 -
5556 - // Mark it as fixed
5557 - this[ jQuery.expando ] = true;
5558 - };
5559 -
5560 - // jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
5561 - // https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
5562 - jQuery.Event.prototype = {
5563 - constructor: jQuery.Event,
5564 - isDefaultPrevented: returnFalse,
5565 - isPropagationStopped: returnFalse,
5566 - isImmediatePropagationStopped: returnFalse,
5567 - isSimulated: false,
5568 -
5569 - preventDefault: function() {
5570 - var e = this.originalEvent;
5571 -
5572 - this.isDefaultPrevented = returnTrue;
5573 -
5574 - if ( e && !this.isSimulated ) {
5575 - e.preventDefault();
5576 - }
5577 - },
5578 - stopPropagation: function() {
5579 - var e = this.originalEvent;
5580 -
5581 - this.isPropagationStopped = returnTrue;
5582 -
5583 - if ( e && !this.isSimulated ) {
5584 - e.stopPropagation();
5585 - }
5586 - },
5587 - stopImmediatePropagation: function() {
5588 - var e = this.originalEvent;
5589 -
5590 - this.isImmediatePropagationStopped = returnTrue;
5591 -
5592 - if ( e && !this.isSimulated ) {
5593 - e.stopImmediatePropagation();
5594 - }
5595 -
5596 - this.stopPropagation();
5597 - }
5598 - };
5599 -
5600 - // Includes all common event props including KeyEvent and MouseEvent specific props
5601 - jQuery.each( {
5602 - altKey: true,
5603 - bubbles: true,
5604 - cancelable: true,
5605 - changedTouches: true,
5606 - ctrlKey: true,
5607 - detail: true,
5608 - eventPhase: true,
5609 - metaKey: true,
5610 - pageX: true,
5611 - pageY: true,
5612 - shiftKey: true,
5613 - view: true,
5614 - "char": true,
5615 - code: true,
5616 - charCode: true,
5617 - key: true,
5618 - keyCode: true,
5619 - button: true,
5620 - buttons: true,
5621 - clientX: true,
5622 - clientY: true,
5623 - offsetX: true,
5624 - offsetY: true,
5625 - pointerId: true,
5626 - pointerType: true,
5627 - screenX: true,
5628 - screenY: true,
5629 - targetTouches: true,
5630 - toElement: true,
5631 - touches: true,
5632 -
5633 - which: function( event ) {
5634 - var button = event.button;
5635 -
5636 - // Add which for key events
5637 - if ( event.which == null && rkeyEvent.test( event.type ) ) {
5638 - return event.charCode != null ? event.charCode : event.keyCode;
5639 - }
5640 -
5641 - // Add which for click: 1 === left; 2 === middle; 3 === right
5642 - if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {
5643 - if ( button & 1 ) {
5644 - return 1;
5645 - }
5646 -
5647 - if ( button & 2 ) {
5648 - return 3;
5649 - }
5650 -
5651 - if ( button & 4 ) {
5652 - return 2;
5653 - }
5654 -
5655 - return 0;
5656 - }
5657 -
5658 - return event.which;
5659 - }
5660 - }, jQuery.event.addProp );
5661 -
5662 - jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) {
5663 - jQuery.event.special[ type ] = {
5664 -
5665 - // Utilize native event if possible so blur/focus sequence is correct
5666 - setup: function() {
5667 -
5668 - // Claim the first handler
5669 - // dataPriv.set( this, "focus", ... )
5670 - // dataPriv.set( this, "blur", ... )
5671 - leverageNative( this, type, expectSync );
5672 -
5673 - // Return false to allow normal processing in the caller
5674 - return false;
5675 - },
5676 - trigger: function() {
5677 -
5678 - // Force setup before trigger
5679 - leverageNative( this, type );
5680 -
5681 - // Return non-false to allow normal event-path propagation
5682 - return true;
5683 - },
5684 -
5685 - delegateType: delegateType
5686 - };
5687 - } );
5688 -
5689 - // Create mouseenter/leave events using mouseover/out and event-time checks
5690 - // so that event delegation works in jQuery.
5691 - // Do the same for pointerenter/pointerleave and pointerover/pointerout
5692 - //
5693 - // Support: Safari 7 only
5694 - // Safari sends mouseenter too often; see:
5695 - // https://bugs.chromium.org/p/chromium/issues/detail?id=470258
5696 - // for the description of the bug (it existed in older Chrome versions as well).
5697 - jQuery.each( {
5698 - mouseenter: "mouseover",
5699 - mouseleave: "mouseout",
5700 - pointerenter: "pointerover",
5701 - pointerleave: "pointerout"
5702 - }, function( orig, fix ) {
5703 - jQuery.event.special[ orig ] = {
5704 - delegateType: fix,
5705 - bindType: fix,
5706 -
5707 - handle: function( event ) {
5708 - var ret,
5709 - target = this,
5710 - related = event.relatedTarget,
5711 - handleObj = event.handleObj;
5712 -
5713 - // For mouseenter/leave call the handler if related is outside the target.
5714 - // NB: No relatedTarget if the mouse left/entered the browser window
5715 - if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {
5716 - event.type = handleObj.origType;
5717 - ret = handleObj.handler.apply( this, arguments );
5718 - event.type = fix;
5719 - }
5720 - return ret;
5721 - }
5722 - };
5723 - } );
5724 -
5725 - jQuery.fn.extend( {
5726 -
5727 - on: function( types, selector, data, fn ) {
5728 - return on( this, types, selector, data, fn );
5729 - },
5730 - one: function( types, selector, data, fn ) {
5731 - return on( this, types, selector, data, fn, 1 );
5732 - },
5733 - off: function( types, selector, fn ) {
5734 - var handleObj, type;
5735 - if ( types && types.preventDefault && types.handleObj ) {
5736 -
5737 - // ( event ) dispatched jQuery.Event
5738 - handleObj = types.handleObj;
5739 - jQuery( types.delegateTarget ).off(
5740 - handleObj.namespace ?
5741 - handleObj.origType + "." + handleObj.namespace :
5742 - handleObj.origType,
5743 - handleObj.selector,
5744 - handleObj.handler
5745 - );
5746 - return this;
5747 - }
5748 - if ( typeof types === "object" ) {
5749 -
5750 - // ( types-object [, selector] )
5751 - for ( type in types ) {
5752 - this.off( type, selector, types[ type ] );
5753 - }
5754 - return this;
5755 - }
5756 - if ( selector === false || typeof selector === "function" ) {
5757 -
5758 - // ( types [, fn] )
5759 - fn = selector;
5760 - selector = undefined;
5761 - }
5762 - if ( fn === false ) {
5763 - fn = returnFalse;
5764 - }
5765 - return this.each( function() {
5766 - jQuery.event.remove( this, types, fn, selector );
5767 - } );
5768 - }
5769 - } );
5770 -
5771 -
5772 - var
5773 -
5774 - /* eslint-disable max-len */
5775 -
5776 - // See https://github.com/eslint/eslint/issues/3229
5777 - rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,
5778 -
5779 - /* eslint-enable */
5780 -
5781 - // Support: IE <=10 - 11, Edge 12 - 13 only
5782 - // In IE/Edge using regex groups here causes severe slowdowns.
5783 - // See https://connect.microsoft.com/IE/feedback/details/1736512/
5784 - rnoInnerhtml = /<script|<style|<link/i,
5785 -
5786 - // checked="checked" or checked
5787 - rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
5788 - rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;
5789 -
5790 - // Prefer a tbody over its parent table for containing new rows
5791 - function manipulationTarget( elem, content ) {
5792 - if ( nodeName( elem, "table" ) &&
5793 - nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) {
5794 -
5795 - return jQuery( elem ).children( "tbody" )[ 0 ] || elem;
5796 - }
5797 -
5798 - return elem;
5799 - }
5800 -
5801 - // Replace/restore the type attribute of script elements for safe DOM manipulation
5802 - function disableScript( elem ) {
5803 - elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type;
5804 - return elem;
5805 - }
5806 - function restoreScript( elem ) {
5807 - if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) {
5808 - elem.type = elem.type.slice( 5 );
5809 - } else {
5810 - elem.removeAttribute( "type" );
5811 - }
5812 -
5813 - return elem;
5814 - }
5815 -
5816 - function cloneCopyEvent( src, dest ) {
5817 - var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;
5818 -
5819 - if ( dest.nodeType !== 1 ) {
5820 - return;
5821 - }
5822 -
5823 - // 1. Copy private data: events, handlers, etc.
5824 - if ( dataPriv.hasData( src ) ) {
5825 - pdataOld = dataPriv.access( src );
5826 - pdataCur = dataPriv.set( dest, pdataOld );
5827 - events = pdataOld.events;
5828 -
5829 - if ( events ) {
5830 - delete pdataCur.handle;
5831 - pdataCur.events = {};
5832 -
5833 - for ( type in events ) {
5834 - for ( i = 0, l = events[ type ].length; i < l; i++ ) {
5835 - jQuery.event.add( dest, type, events[ type ][ i ] );
5836 - }
5837 - }
5838 - }
5839 - }
5840 -
5841 - // 2. Copy user data
5842 - if ( dataUser.hasData( src ) ) {
5843 - udataOld = dataUser.access( src );
5844 - udataCur = jQuery.extend( {}, udataOld );
5845 -
5846 - dataUser.set( dest, udataCur );
5847 - }
5848 - }
5849 -
5850 - // Fix IE bugs, see support tests
5851 - function fixInput( src, dest ) {
5852 - var nodeName = dest.nodeName.toLowerCase();
5853 -
5854 - // Fails to persist the checked state of a cloned checkbox or radio button.
5855 - if ( nodeName === "input" && rcheckableType.test( src.type ) ) {
5856 - dest.checked = src.checked;
5857 -
5858 - // Fails to return the selected option to the default selected state when cloning options
5859 - } else if ( nodeName === "input" || nodeName === "textarea" ) {
5860 - dest.defaultValue = src.defaultValue;
5861 - }
5862 - }
5863 -
5864 - function domManip( collection, args, callback, ignored ) {
5865 -
5866 - // Flatten any nested arrays
5867 - args = concat.apply( [], args );
5868 -
5869 - var fragment, first, scripts, hasScripts, node, doc,
5870 - i = 0,
5871 - l = collection.length,
5872 - iNoClone = l - 1,
5873 - value = args[ 0 ],
5874 - valueIsFunction = isFunction( value );
5875 -
5876 - // We can't cloneNode fragments that contain checked, in WebKit
5877 - if ( valueIsFunction ||
5878 - ( l > 1 && typeof value === "string" &&
5879 - !support.checkClone && rchecked.test( value ) ) ) {
5880 - return collection.each( function( index ) {
5881 - var self = collection.eq( index );
5882 - if ( valueIsFunction ) {
5883 - args[ 0 ] = value.call( this, index, self.html() );
5884 - }
5885 - domManip( self, args, callback, ignored );
5886 - } );
5887 - }
5888 -
5889 - if ( l ) {
5890 - fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );
5891 - first = fragment.firstChild;
5892 -
5893 - if ( fragment.childNodes.length === 1 ) {
5894 - fragment = first;
5895 - }
5896 -
5897 - // Require either new content or an interest in ignored elements to invoke the callback
5898 - if ( first || ignored ) {
5899 - scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
5900 - hasScripts = scripts.length;
5901 -
5902 - // Use the original fragment for the last item
5903 - // instead of the first because it can end up
5904 - // being emptied incorrectly in certain situations (#8070).
5905 - for ( ; i < l; i++ ) {
5906 - node = fragment;
5907 -
5908 - if ( i !== iNoClone ) {
5909 - node = jQuery.clone( node, true, true );
5910 -
5911 - // Keep references to cloned scripts for later restoration
5912 - if ( hasScripts ) {
5913 -
5914 - // Support: Android <=4.0 only, PhantomJS 1 only
5915 - // push.apply(_, arraylike) throws on ancient WebKit
5916 - jQuery.merge( scripts, getAll( node, "script" ) );
5917 - }
5918 - }
5919 -
5920 - callback.call( collection[ i ], node, i );
5921 - }
5922 -
5923 - if ( hasScripts ) {
5924 - doc = scripts[ scripts.length - 1 ].ownerDocument;
5925 -
5926 - // Reenable scripts
5927 - jQuery.map( scripts, restoreScript );
5928 -
5929 - // Evaluate executable scripts on first document insertion
5930 - for ( i = 0; i < hasScripts; i++ ) {
5931 - node = scripts[ i ];
5932 - if ( rscriptType.test( node.type || "" ) &&
5933 - !dataPriv.access( node, "globalEval" ) &&
5934 - jQuery.contains( doc, node ) ) {
5935 -
5936 - if ( node.src && ( node.type || "" ).toLowerCase() !== "module" ) {
5937 -
5938 - // Optional AJAX dependency, but won't run scripts if not present
5939 - if ( jQuery._evalUrl && !node.noModule ) {
5940 - jQuery._evalUrl( node.src, {
5941 - nonce: node.nonce || node.getAttribute( "nonce" )
5942 - } );
5943 - }
5944 - } else {
5945 - DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc );
5946 - }
5947 - }
5948 - }
5949 - }
5950 - }
5951 - }
5952 -
5953 - return collection;
5954 - }
5955 -
5956 - function remove( elem, selector, keepData ) {
5957 - var node,
5958 - nodes = selector ? jQuery.filter( selector, elem ) : elem,
5959 - i = 0;
5960 -
5961 - for ( ; ( node = nodes[ i ] ) != null; i++ ) {
5962 - if ( !keepData && node.nodeType === 1 ) {
5963 - jQuery.cleanData( getAll( node ) );
5964 - }
5965 -
5966 - if ( node.parentNode ) {
5967 - if ( keepData && isAttached( node ) ) {
5968 - setGlobalEval( getAll( node, "script" ) );
5969 - }
5970 - node.parentNode.removeChild( node );
5971 - }
5972 - }
5973 -
5974 - return elem;
5975 - }
5976 -
5977 - jQuery.extend( {
5978 - htmlPrefilter: function( html ) {
5979 - return html.replace( rxhtmlTag, "<$1></$2>" );
5980 - },
5981 -
5982 - clone: function( elem, dataAndEvents, deepDataAndEvents ) {
5983 - var i, l, srcElements, destElements,
5984 - clone = elem.cloneNode( true ),
5985 - inPage = isAttached( elem );
5986 -
5987 - // Fix IE cloning issues
5988 - if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&
5989 - !jQuery.isXMLDoc( elem ) ) {
5990 -
5991 - // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2
5992 - destElements = getAll( clone );
5993 - srcElements = getAll( elem );
5994 -
5995 - for ( i = 0, l = srcElements.length; i < l; i++ ) {
5996 - fixInput( srcElements[ i ], destElements[ i ] );
5997 - }
5998 - }
5999 -
6000 - // Copy the events from the original to the clone
6001 - if ( dataAndEvents ) {
6002 - if ( deepDataAndEvents ) {
6003 - srcElements = srcElements || getAll( elem );
6004 - destElements = destElements || getAll( clone );
6005 -
6006 - for ( i = 0, l = srcElements.length; i < l; i++ ) {
6007 - cloneCopyEvent( srcElements[ i ], destElements[ i ] );
6008 - }
6009 - } else {
6010 - cloneCopyEvent( elem, clone );
6011 - }
6012 - }
6013 -
6014 - // Preserve script evaluation history
6015 - destElements = getAll( clone, "script" );
6016 - if ( destElements.length > 0 ) {
6017 - setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
6018 - }
6019 -
6020 - // Return the cloned set
6021 - return clone;
6022 - },
6023 -
6024 - cleanData: function( elems ) {
6025 - var data, elem, type,
6026 - special = jQuery.event.special,
6027 - i = 0;
6028 -
6029 - for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {
6030 - if ( acceptData( elem ) ) {
6031 - if ( ( data = elem[ dataPriv.expando ] ) ) {
6032 - if ( data.events ) {
6033 - for ( type in data.events ) {
6034 - if ( special[ type ] ) {
6035 - jQuery.event.remove( elem, type );
6036 -
6037 - // This is a shortcut to avoid jQuery.event.remove's overhead
6038 - } else {
6039 - jQuery.removeEvent( elem, type, data.handle );
6040 - }
6041 - }
6042 - }
6043 -
6044 - // Support: Chrome <=35 - 45+
6045 - // Assign undefined instead of using delete, see Data#remove
6046 - elem[ dataPriv.expando ] = undefined;
6047 - }
6048 - if ( elem[ dataUser.expando ] ) {
6049 -
6050 - // Support: Chrome <=35 - 45+
6051 - // Assign undefined instead of using delete, see Data#remove
6052 - elem[ dataUser.expando ] = undefined;
6053 - }
6054 - }
6055 - }
6056 - }
6057 - } );
6058 -
6059 - jQuery.fn.extend( {
6060 - detach: function( selector ) {
6061 - return remove( this, selector, true );
6062 - },
6063 -
6064 - remove: function( selector ) {
6065 - return remove( this, selector );
6066 - },
6067 -
6068 - text: function( value ) {
6069 - return access( this, function( value ) {
6070 - return value === undefined ?
6071 - jQuery.text( this ) :
6072 - this.empty().each( function() {
6073 - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
6074 - this.textContent = value;
6075 - }
6076 - } );
6077 - }, null, value, arguments.length );
6078 - },
6079 -
6080 - append: function() {
6081 - return domManip( this, arguments, function( elem ) {
6082 - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
6083 - var target = manipulationTarget( this, elem );
6084 - target.appendChild( elem );
6085 - }
6086 - } );
6087 - },
6088 -
6089 - prepend: function() {
6090 - return domManip( this, arguments, function( elem ) {
6091 - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
6092 - var target = manipulationTarget( this, elem );
6093 - target.insertBefore( elem, target.firstChild );
6094 - }
6095 - } );
6096 - },
6097 -
6098 - before: function() {
6099 - return domManip( this, arguments, function( elem ) {
6100 - if ( this.parentNode ) {
6101 - this.parentNode.insertBefore( elem, this );
6102 - }
6103 - } );
6104 - },
6105 -
6106 - after: function() {
6107 - return domManip( this, arguments, function( elem ) {
6108 - if ( this.parentNode ) {
6109 - this.parentNode.insertBefore( elem, this.nextSibling );
6110 - }
6111 - } );
6112 - },
6113 -
6114 - empty: function() {
6115 - var elem,
6116 - i = 0;
6117 -
6118 - for ( ; ( elem = this[ i ] ) != null; i++ ) {
6119 - if ( elem.nodeType === 1 ) {
6120 -
6121 - // Prevent memory leaks
6122 - jQuery.cleanData( getAll( elem, false ) );
6123 -
6124 - // Remove any remaining nodes
6125 - elem.textContent = "";
6126 - }
6127 - }
6128 -
6129 - return this;
6130 - },
6131 -
6132 - clone: function( dataAndEvents, deepDataAndEvents ) {
6133 - dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
6134 - deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
6135 -
6136 - return this.map( function() {
6137 - return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
6138 - } );
6139 - },
6140 -
6141 - html: function( value ) {
6142 - return access( this, function( value ) {
6143 - var elem = this[ 0 ] || {},
6144 - i = 0,
6145 - l = this.length;
6146 -
6147 - if ( value === undefined && elem.nodeType === 1 ) {
6148 - return elem.innerHTML;
6149 - }
6150 -
6151 - // See if we can take a shortcut and just use innerHTML
6152 - if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
6153 - !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) {
6154 -
6155 - value = jQuery.htmlPrefilter( value );
6156 -
6157 - try {
6158 - for ( ; i < l; i++ ) {
6159 - elem = this[ i ] || {};
6160 -
6161 - // Remove element nodes and prevent memory leaks
6162 - if ( elem.nodeType === 1 ) {
6163 - jQuery.cleanData( getAll( elem, false ) );
6164 - elem.innerHTML = value;
6165 - }
6166 - }
6167 -
6168 - elem = 0;
6169 -
6170 - // If using innerHTML throws an exception, use the fallback method
6171 - } catch ( e ) {}
6172 - }
6173 -
6174 - if ( elem ) {
6175 - this.empty().append( value );
6176 - }
6177 - }, null, value, arguments.length );
6178 - },
6179 -
6180 - replaceWith: function() {
6181 - var ignored = [];
6182 -
6183 - // Make the changes, replacing each non-ignored context element with the new content
6184 - return domManip( this, arguments, function( elem ) {
6185 - var parent = this.parentNode;
6186 -
6187 - if ( jQuery.inArray( this, ignored ) < 0 ) {
6188 - jQuery.cleanData( getAll( this ) );
6189 - if ( parent ) {
6190 - parent.replaceChild( elem, this );
6191 - }
6192 - }
6193 -
6194 - // Force callback invocation
6195 - }, ignored );
6196 - }
6197 - } );
6198 -
6199 - jQuery.each( {
6200 - appendTo: "append",
6201 - prependTo: "prepend",
6202 - insertBefore: "before",
6203 - insertAfter: "after",
6204 - replaceAll: "replaceWith"
6205 - }, function( name, original ) {
6206 - jQuery.fn[ name ] = function( selector ) {
6207 - var elems,
6208 - ret = [],
6209 - insert = jQuery( selector ),
6210 - last = insert.length - 1,
6211 - i = 0;
6212 -
6213 - for ( ; i <= last; i++ ) {
6214 - elems = i === last ? this : this.clone( true );
6215 - jQuery( insert[ i ] )[ original ]( elems );
6216 -
6217 - // Support: Android <=4.0 only, PhantomJS 1 only
6218 - // .get() because push.apply(_, arraylike) throws on ancient WebKit
6219 - push.apply( ret, elems.get() );
6220 - }
6221 -
6222 - return this.pushStack( ret );
6223 - };
6224 - } );
6225 - var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
6226 -
6227 - var getStyles = function( elem ) {
6228 -
6229 - // Support: IE <=11 only, Firefox <=30 (#15098, #14150)
6230 - // IE throws on elements created in popups
6231 - // FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
6232 - var view = elem.ownerDocument.defaultView;
6233 -
6234 - if ( !view || !view.opener ) {
6235 - view = window;
6236 - }
6237 -
6238 - return view.getComputedStyle( elem );
6239 - };
6240 -
6241 - var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" );
6242 -
6243 -
6244 -
6245 - ( function() {
6246 -
6247 - // Executing both pixelPosition & boxSizingReliable tests require only one layout
6248 - // so they're executed at the same time to save the second computation.
6249 - function computeStyleTests() {
6250 -
6251 - // This is a singleton, we need to execute it only once
6252 - if ( !div ) {
6253 - return;
6254 - }
6255 -
6256 - container.style.cssText = "position:absolute;left:-11111px;width:60px;" +
6257 - "margin-top:1px;padding:0;border:0";
6258 - div.style.cssText =
6259 - "position:relative;display:block;box-sizing:border-box;overflow:scroll;" +
6260 - "margin:auto;border:1px;padding:1px;" +
6261 - "width:60%;top:1%";
6262 - documentElement.appendChild( container ).appendChild( div );
6263 -
6264 - var divStyle = window.getComputedStyle( div );
6265 - pixelPositionVal = divStyle.top !== "1%";
6266 -
6267 - // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44
6268 - reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;
6269 -
6270 - // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3
6271 - // Some styles come back with percentage values, even though they shouldn't
6272 - div.style.right = "60%";
6273 - pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;
6274 -
6275 - // Support: IE 9 - 11 only
6276 - // Detect misreporting of content dimensions for box-sizing:border-box elements
6277 - boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;
6278 -
6279 - // Support: IE 9 only
6280 - // Detect overflow:scroll screwiness (gh-3699)
6281 - // Support: Chrome <=64
6282 - // Don't get tricked when zoom affects offsetWidth (gh-4029)
6283 - div.style.position = "absolute";
6284 - scrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;
6285 -
6286 - documentElement.removeChild( container );
6287 -
6288 - // Nullify the div so it wouldn't be stored in the memory and
6289 - // it will also be a sign that checks already performed
6290 - div = null;
6291 - }
6292 -
6293 - function roundPixelMeasures( measure ) {
6294 - return Math.round( parseFloat( measure ) );
6295 - }
6296 -
6297 - var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,
6298 - reliableMarginLeftVal,
6299 - container = document.createElement( "div" ),
6300 - div = document.createElement( "div" );
6301 -
6302 - // Finish early in limited (non-browser) environments
6303 - if ( !div.style ) {
6304 - return;
6305 - }
6306 -
6307 - // Support: IE <=9 - 11 only
6308 - // Style of cloned element affects source element cloned (#8908)
6309 - div.style.backgroundClip = "content-box";
6310 - div.cloneNode( true ).style.backgroundClip = "";
6311 - support.clearCloneStyle = div.style.backgroundClip === "content-box";
6312 -
6313 - jQuery.extend( support, {
6314 - boxSizingReliable: function() {
6315 - computeStyleTests();
6316 - return boxSizingReliableVal;
6317 - },
6318 - pixelBoxStyles: function() {
6319 - computeStyleTests();
6320 - return pixelBoxStylesVal;
6321 - },
6322 - pixelPosition: function() {
6323 - computeStyleTests();
6324 - return pixelPositionVal;
6325 - },
6326 - reliableMarginLeft: function() {
6327 - computeStyleTests();
6328 - return reliableMarginLeftVal;
6329 - },
6330 - scrollboxSize: function() {
6331 - computeStyleTests();
6332 - return scrollboxSizeVal;
6333 - }
6334 - } );
6335 - } )();
6336 -
6337 -
6338 - function curCSS( elem, name, computed ) {
6339 - var width, minWidth, maxWidth, ret,
6340 -
6341 - // Support: Firefox 51+
6342 - // Retrieving style before computed somehow
6343 - // fixes an issue with getting wrong values
6344 - // on detached elements
6345 - style = elem.style;
6346 -
6347 - computed = computed || getStyles( elem );
6348 -
6349 - // getPropertyValue is needed for:
6350 - // .css('filter') (IE 9 only, #12537)
6351 - // .css('--customProperty) (#3144)
6352 - if ( computed ) {
6353 - ret = computed.getPropertyValue( name ) || computed[ name ];
6354 -
6355 - if ( ret === "" && !isAttached( elem ) ) {
6356 - ret = jQuery.style( elem, name );
6357 - }
6358 -
6359 - // A tribute to the "awesome hack by Dean Edwards"
6360 - // Android Browser returns percentage for some values,
6361 - // but width seems to be reliably pixels.
6362 - // This is against the CSSOM draft spec:
6363 - // https://drafts.csswg.org/cssom/#resolved-values
6364 - if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {
6365 -
6366 - // Remember the original values
6367 - width = style.width;
6368 - minWidth = style.minWidth;
6369 - maxWidth = style.maxWidth;
6370 -
6371 - // Put in the new values to get a computed value out
6372 - style.minWidth = style.maxWidth = style.width = ret;
6373 - ret = computed.width;
6374 -
6375 - // Revert the changed values
6376 - style.width = width;
6377 - style.minWidth = minWidth;
6378 - style.maxWidth = maxWidth;
6379 - }
6380 - }
6381 -
6382 - return ret !== undefined ?
6383 -
6384 - // Support: IE <=9 - 11 only
6385 - // IE returns zIndex value as an integer.
6386 - ret + "" :
6387 - ret;
6388 - }
6389 -
6390 -
6391 - function addGetHookIf( conditionFn, hookFn ) {
6392 -
6393 - // Define the hook, we'll check on the first run if it's really needed.
6394 - return {
6395 - get: function() {
6396 - if ( conditionFn() ) {
6397 -
6398 - // Hook not needed (or it's not possible to use it due
6399 - // to missing dependency), remove it.
6400 - delete this.get;
6401 - return;
6402 - }
6403 -
6404 - // Hook needed; redefine it so that the support test is not executed again.
6405 - return ( this.get = hookFn ).apply( this, arguments );
6406 - }
6407 - };
6408 - }
6409 -
6410 -
6411 - var cssPrefixes = [ "Webkit", "Moz", "ms" ],
6412 - emptyStyle = document.createElement( "div" ).style,
6413 - vendorProps = {};
6414 -
6415 - // Return a vendor-prefixed property or undefined
6416 - function vendorPropName( name ) {
6417 -
6418 - // Check for vendor prefixed names
6419 - var capName = name[ 0 ].toUpperCase() + name.slice( 1 ),
6420 - i = cssPrefixes.length;
6421 -
6422 - while ( i-- ) {
6423 - name = cssPrefixes[ i ] + capName;
6424 - if ( name in emptyStyle ) {
6425 - return name;
6426 - }
6427 - }
6428 - }
6429 -
6430 - // Return a potentially-mapped jQuery.cssProps or vendor prefixed property
6431 - function finalPropName( name ) {
6432 - var final = jQuery.cssProps[ name ] || vendorProps[ name ];
6433 -
6434 - if ( final ) {
6435 - return final;
6436 - }
6437 - if ( name in emptyStyle ) {
6438 - return name;
6439 - }
6440 - return vendorProps[ name ] = vendorPropName( name ) || name;
6441 - }
6442 -
6443 -
6444 - var
6445 -
6446 - // Swappable if display is none or starts with table
6447 - // except "table", "table-cell", or "table-caption"
6448 - // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
6449 - rdisplayswap = /^(none|table(?!-c[ea]).+)/,
6450 - rcustomProp = /^--/,
6451 - cssShow = { position: "absolute", visibility: "hidden", display: "block" },
6452 - cssNormalTransform = {
6453 - letterSpacing: "0",
6454 - fontWeight: "400"
6455 - };
6456 -
6457 - function setPositiveNumber( elem, value, subtract ) {
6458 -
6459 - // Any relative (+/-) values have already been
6460 - // normalized at this point
6461 - var matches = rcssNum.exec( value );
6462 - return matches ?
6463 -
6464 - // Guard against undefined "subtract", e.g., when used as in cssHooks
6465 - Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) :
6466 - value;
6467 - }
6468 -
6469 - function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {
6470 - var i = dimension === "width" ? 1 : 0,
6471 - extra = 0,
6472 - delta = 0;
6473 -
6474 - // Adjustment may not be necessary
6475 - if ( box === ( isBorderBox ? "border" : "content" ) ) {
6476 - return 0;
6477 - }
6478 -
6479 - for ( ; i < 4; i += 2 ) {
6480 -
6481 - // Both box models exclude margin
6482 - if ( box === "margin" ) {
6483 - delta += jQuery.css( elem, box + cssExpand[ i ], true, styles );
6484 - }
6485 -
6486 - // If we get here with a content-box, we're seeking "padding" or "border" or "margin"
6487 - if ( !isBorderBox ) {
6488 -
6489 - // Add padding
6490 - delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
6491 -
6492 - // For "border" or "margin", add border
6493 - if ( box !== "padding" ) {
6494 - delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
6495 -
6496 - // But still keep track of it otherwise
6497 - } else {
6498 - extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
6499 - }
6500 -
6501 - // If we get here with a border-box (content + padding + border), we're seeking "content" or
6502 - // "padding" or "margin"
6503 - } else {
6504 -
6505 - // For "content", subtract padding
6506 - if ( box === "content" ) {
6507 - delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
6508 - }
6509 -
6510 - // For "content" or "padding", subtract border
6511 - if ( box !== "margin" ) {
6512 - delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
6513 - }
6514 - }
6515 - }
6516 -
6517 - // Account for positive content-box scroll gutter when requested by providing computedVal
6518 - if ( !isBorderBox && computedVal >= 0 ) {
6519 -
6520 - // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border
6521 - // Assuming integer scroll gutter, subtract the rest and round down
6522 - delta += Math.max( 0, Math.ceil(
6523 - elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -
6524 - computedVal -
6525 - delta -
6526 - extra -
6527 - 0.5
6528 -
6529 - // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter
6530 - // Use an explicit zero to avoid NaN (gh-3964)
6531 - ) ) || 0;
6532 - }
6533 -
6534 - return delta;
6535 - }
6536 -
6537 - function getWidthOrHeight( elem, dimension, extra ) {
6538 -
6539 - // Start with computed style
6540 - var styles = getStyles( elem ),
6541 -
6542 - // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).
6543 - // Fake content-box until we know it's needed to know the true value.
6544 - boxSizingNeeded = !support.boxSizingReliable() || extra,
6545 - isBorderBox = boxSizingNeeded &&
6546 - jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
6547 - valueIsBorderBox = isBorderBox,
6548 -
6549 - val = curCSS( elem, dimension, styles ),
6550 - offsetProp = "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );
6551 -
6552 - // Support: Firefox <=54
6553 - // Return a confounding non-pixel value or feign ignorance, as appropriate.
6554 - if ( rnumnonpx.test( val ) ) {
6555 - if ( !extra ) {
6556 - return val;
6557 - }
6558 - val = "auto";
6559 - }
6560 -
6561 -
6562 - // Fall back to offsetWidth/offsetHeight when value is "auto"
6563 - // This happens for inline elements with no explicit setting (gh-3571)
6564 - // Support: Android <=4.1 - 4.3 only
6565 - // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)
6566 - // Support: IE 9-11 only
6567 - // Also use offsetWidth/offsetHeight for when box sizing is unreliable
6568 - // We use getClientRects() to check for hidden/disconnected.
6569 - // In those cases, the computed value can be trusted to be border-box
6570 - if ( ( !support.boxSizingReliable() && isBorderBox ||
6571 - val === "auto" ||
6572 - !parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) &&
6573 - elem.getClientRects().length ) {
6574 -
6575 - isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
6576 -
6577 - // Where available, offsetWidth/offsetHeight approximate border box dimensions.
6578 - // Where not available (e.g., SVG), assume unreliable box-sizing and interpret the
6579 - // retrieved value as a content box dimension.
6580 - valueIsBorderBox = offsetProp in elem;
6581 - if ( valueIsBorderBox ) {
6582 - val = elem[ offsetProp ];
6583 - }
6584 - }
6585 -
6586 - // Normalize "" and auto
6587 - val = parseFloat( val ) || 0;
6588 -
6589 - // Adjust for the element's box model
6590 - return ( val +
6591 - boxModelAdjustment(
6592 - elem,
6593 - dimension,
6594 - extra || ( isBorderBox ? "border" : "content" ),
6595 - valueIsBorderBox,
6596 - styles,
6597 -
6598 - // Provide the current computed size to request scroll gutter calculation (gh-3589)
6599 - val
6600 - )
6601 - ) + "px";
6602 - }
6603 -
6604 - jQuery.extend( {
6605 -
6606 - // Add in style property hooks for overriding the default
6607 - // behavior of getting and setting a style property
6608 - cssHooks: {
6609 - opacity: {
6610 - get: function( elem, computed ) {
6611 - if ( computed ) {
6612 -
6613 - // We should always get a number back from opacity
6614 - var ret = curCSS( elem, "opacity" );
6615 - return ret === "" ? "1" : ret;
6616 - }
6617 - }
6618 - }
6619 - },
6620 -
6621 - // Don't automatically add "px" to these possibly-unitless properties
6622 - cssNumber: {
6623 - "animationIterationCount": true,
6624 - "columnCount": true,
6625 - "fillOpacity": true,
6626 - "flexGrow": true,
6627 - "flexShrink": true,
6628 - "fontWeight": true,
6629 - "gridArea": true,
6630 - "gridColumn": true,
6631 - "gridColumnEnd": true,
6632 - "gridColumnStart": true,
6633 - "gridRow": true,
6634 - "gridRowEnd": true,
6635 - "gridRowStart": true,
6636 - "lineHeight": true,
6637 - "opacity": true,
6638 - "order": true,
6639 - "orphans": true,
6640 - "widows": true,
6641 - "zIndex": true,
6642 - "zoom": true
6643 - },
6644 -
6645 - // Add in properties whose names you wish to fix before
6646 - // setting or getting the value
6647 - cssProps: {},
6648 -
6649 - // Get and set the style property on a DOM Node
6650 - style: function( elem, name, value, extra ) {
6651 -
6652 - // Don't set styles on text and comment nodes
6653 - if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
6654 - return;
6655 - }
6656 -
6657 - // Make sure that we're working with the right name
6658 - var ret, type, hooks,
6659 - origName = camelCase( name ),
6660 - isCustomProp = rcustomProp.test( name ),
6661 - style = elem.style;
6662 -
6663 - // Make sure that we're working with the right name. We don't
6664 - // want to query the value if it is a CSS custom property
6665 - // since they are user-defined.
6666 - if ( !isCustomProp ) {
6667 - name = finalPropName( origName );
6668 - }
6669 -
6670 - // Gets hook for the prefixed version, then unprefixed version
6671 - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
6672 -
6673 - // Check if we're setting a value
6674 - if ( value !== undefined ) {
6675 - type = typeof value;
6676 -
6677 - // Convert "+=" or "-=" to relative numbers (#7345)
6678 - if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {
6679 - value = adjustCSS( elem, name, ret );
6680 -
6681 - // Fixes bug #9237
6682 - type = "number";
6683 - }
6684 -
6685 - // Make sure that null and NaN values aren't set (#7116)
6686 - if ( value == null || value !== value ) {
6687 - return;
6688 - }
6689 -
6690 - // If a number was passed in, add the unit (except for certain CSS properties)
6691 - // The isCustomProp check can be removed in jQuery 4.0 when we only auto-append
6692 - // "px" to a few hardcoded values.
6693 - if ( type === "number" && !isCustomProp ) {
6694 - value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" );
6695 - }
6696 -
6697 - // background-* props affect original clone's values
6698 - if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) {
6699 - style[ name ] = "inherit";
6700 - }
6701 -
6702 - // If a hook was provided, use that value, otherwise just set the specified value
6703 - if ( !hooks || !( "set" in hooks ) ||
6704 - ( value = hooks.set( elem, value, extra ) ) !== undefined ) {
6705 -
6706 - if ( isCustomProp ) {
6707 - style.setProperty( name, value );
6708 - } else {
6709 - style[ name ] = value;
6710 - }
6711 - }
6712 -
6713 - } else {
6714 -
6715 - // If a hook was provided get the non-computed value from there
6716 - if ( hooks && "get" in hooks &&
6717 - ( ret = hooks.get( elem, false, extra ) ) !== undefined ) {
6718 -
6719 - return ret;
6720 - }
6721 -
6722 - // Otherwise just get the value from the style object
6723 - return style[ name ];
6724 - }
6725 - },
6726 -
6727 - css: function( elem, name, extra, styles ) {
6728 - var val, num, hooks,
6729 - origName = camelCase( name ),
6730 - isCustomProp = rcustomProp.test( name );
6731 -
6732 - // Make sure that we're working with the right name. We don't
6733 - // want to modify the value if it is a CSS custom property
6734 - // since they are user-defined.
6735 - if ( !isCustomProp ) {
6736 - name = finalPropName( origName );
6737 - }
6738 -
6739 - // Try prefixed name followed by the unprefixed name
6740 - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
6741 -
6742 - // If a hook was provided get the computed value from there
6743 - if ( hooks && "get" in hooks ) {
6744 - val = hooks.get( elem, true, extra );
6745 - }
6746 -
6747 - // Otherwise, if a way to get the computed value exists, use that
6748 - if ( val === undefined ) {
6749 - val = curCSS( elem, name, styles );
6750 - }
6751 -
6752 - // Convert "normal" to computed value
6753 - if ( val === "normal" && name in cssNormalTransform ) {
6754 - val = cssNormalTransform[ name ];
6755 - }
6756 -
6757 - // Make numeric if forced or a qualifier was provided and val looks numeric
6758 - if ( extra === "" || extra ) {
6759 - num = parseFloat( val );
6760 - return extra === true || isFinite( num ) ? num || 0 : val;
6761 - }
6762 -
6763 - return val;
6764 - }
6765 - } );
6766 -
6767 - jQuery.each( [ "height", "width" ], function( i, dimension ) {
6768 - jQuery.cssHooks[ dimension ] = {
6769 - get: function( elem, computed, extra ) {
6770 - if ( computed ) {
6771 -
6772 - // Certain elements can have dimension info if we invisibly show them
6773 - // but it must have a current display style that would benefit
6774 - return rdisplayswap.test( jQuery.css( elem, "display" ) ) &&
6775 -
6776 - // Support: Safari 8+
6777 - // Table columns in Safari have non-zero offsetWidth & zero
6778 - // getBoundingClientRect().width unless display is changed.
6779 - // Support: IE <=11 only
6780 - // Running getBoundingClientRect on a disconnected node
6781 - // in IE throws an error.
6782 - ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?
6783 - swap( elem, cssShow, function() {
6784 - return getWidthOrHeight( elem, dimension, extra );
6785 - } ) :
6786 - getWidthOrHeight( elem, dimension, extra );
6787 - }
6788 - },
6789 -
6790 - set: function( elem, value, extra ) {
6791 - var matches,
6792 - styles = getStyles( elem ),
6793 -
6794 - // Only read styles.position if the test has a chance to fail
6795 - // to avoid forcing a reflow.
6796 - scrollboxSizeBuggy = !support.scrollboxSize() &&
6797 - styles.position === "absolute",
6798 -
6799 - // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)
6800 - boxSizingNeeded = scrollboxSizeBuggy || extra,
6801 - isBorderBox = boxSizingNeeded &&
6802 - jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
6803 - subtract = extra ?
6804 - boxModelAdjustment(
6805 - elem,
6806 - dimension,
6807 - extra,
6808 - isBorderBox,
6809 - styles
6810 - ) :
6811 - 0;
6812 -
6813 - // Account for unreliable border-box dimensions by comparing offset* to computed and
6814 - // faking a content-box to get border and padding (gh-3699)
6815 - if ( isBorderBox && scrollboxSizeBuggy ) {
6816 - subtract -= Math.ceil(
6817 - elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -
6818 - parseFloat( styles[ dimension ] ) -
6819 - boxModelAdjustment( elem, dimension, "border", false, styles ) -
6820 - 0.5
6821 - );
6822 - }
6823 -
6824 - // Convert to pixels if value adjustment is needed
6825 - if ( subtract && ( matches = rcssNum.exec( value ) ) &&
6826 - ( matches[ 3 ] || "px" ) !== "px" ) {
6827 -
6828 - elem.style[ dimension ] = value;
6829 - value = jQuery.css( elem, dimension );
6830 - }
6831 -
6832 - return setPositiveNumber( elem, value, subtract );
6833 - }
6834 - };
6835 - } );
6836 -
6837 - jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,
6838 - function( elem, computed ) {
6839 - if ( computed ) {
6840 - return ( parseFloat( curCSS( elem, "marginLeft" ) ) ||
6841 - elem.getBoundingClientRect().left -
6842 - swap( elem, { marginLeft: 0 }, function() {
6843 - return elem.getBoundingClientRect().left;
6844 - } )
6845 - ) + "px";
6846 - }
6847 - }
6848 - );
6849 -
6850 - // These hooks are used by animate to expand properties
6851 - jQuery.each( {
6852 - margin: "",
6853 - padding: "",
6854 - border: "Width"
6855 - }, function( prefix, suffix ) {
6856 - jQuery.cssHooks[ prefix + suffix ] = {
6857 - expand: function( value ) {
6858 - var i = 0,
6859 - expanded = {},
6860 -
6861 - // Assumes a single number if not a string
6862 - parts = typeof value === "string" ? value.split( " " ) : [ value ];
6863 -
6864 - for ( ; i < 4; i++ ) {
6865 - expanded[ prefix + cssExpand[ i ] + suffix ] =
6866 - parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
6867 - }
6868 -
6869 - return expanded;
6870 - }
6871 - };
6872 -
6873 - if ( prefix !== "margin" ) {
6874 - jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
6875 - }
6876 - } );
6877 -
6878 - jQuery.fn.extend( {
6879 - css: function( name, value ) {
6880 - return access( this, function( elem, name, value ) {
6881 - var styles, len,
6882 - map = {},
6883 - i = 0;
6884 -
6885 - if ( Array.isArray( name ) ) {
6886 - styles = getStyles( elem );
6887 - len = name.length;
6888 -
6889 - for ( ; i < len; i++ ) {
6890 - map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
6891 - }
6892 -
6893 - return map;
6894 - }
6895 -
6896 - return value !== undefined ?
6897 - jQuery.style( elem, name, value ) :
6898 - jQuery.css( elem, name );
6899 - }, name, value, arguments.length > 1 );
6900 - }
6901 - } );
6902 -
6903 -
6904 - function Tween( elem, options, prop, end, easing ) {
6905 - return new Tween.prototype.init( elem, options, prop, end, easing );
6906 - }
6907 - jQuery.Tween = Tween;
6908 -
6909 - Tween.prototype = {
6910 - constructor: Tween,
6911 - init: function( elem, options, prop, end, easing, unit ) {
6912 - this.elem = elem;
6913 - this.prop = prop;
6914 - this.easing = easing || jQuery.easing._default;
6915 - this.options = options;
6916 - this.start = this.now = this.cur();
6917 - this.end = end;
6918 - this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
6919 - },
6920 - cur: function() {
6921 - var hooks = Tween.propHooks[ this.prop ];
6922 -
6923 - return hooks && hooks.get ?
6924 - hooks.get( this ) :
6925 - Tween.propHooks._default.get( this );
6926 - },
6927 - run: function( percent ) {
6928 - var eased,
6929 - hooks = Tween.propHooks[ this.prop ];
6930 -
6931 - if ( this.options.duration ) {
6932 - this.pos = eased = jQuery.easing[ this.easing ](
6933 - percent, this.options.duration * percent, 0, 1, this.options.duration
6934 - );
6935 - } else {
6936 - this.pos = eased = percent;
6937 - }
6938 - this.now = ( this.end - this.start ) * eased + this.start;
6939 -
6940 - if ( this.options.step ) {
6941 - this.options.step.call( this.elem, this.now, this );
6942 - }
6943 -
6944 - if ( hooks && hooks.set ) {
6945 - hooks.set( this );
6946 - } else {
6947 - Tween.propHooks._default.set( this );
6948 - }
6949 - return this;
6950 - }
6951 - };
6952 -
6953 - Tween.prototype.init.prototype = Tween.prototype;
6954 -
6955 - Tween.propHooks = {
6956 - _default: {
6957 - get: function( tween ) {
6958 - var result;
6959 -
6960 - // Use a property on the element directly when it is not a DOM element,
6961 - // or when there is no matching style property that exists.
6962 - if ( tween.elem.nodeType !== 1 ||
6963 - tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {
6964 - return tween.elem[ tween.prop ];
6965 - }
6966 -
6967 - // Passing an empty string as a 3rd parameter to .css will automatically
6968 - // attempt a parseFloat and fallback to a string if the parse fails.
6969 - // Simple values such as "10px" are parsed to Float;
6970 - // complex values such as "rotate(1rad)" are returned as-is.
6971 - result = jQuery.css( tween.elem, tween.prop, "" );
6972 -
6973 - // Empty strings, null, undefined and "auto" are converted to 0.
6974 - return !result || result === "auto" ? 0 : result;
6975 - },
6976 - set: function( tween ) {
6977 -
6978 - // Use step hook for back compat.
6979 - // Use cssHook if its there.
6980 - // Use .style if available and use plain properties where available.
6981 - if ( jQuery.fx.step[ tween.prop ] ) {
6982 - jQuery.fx.step[ tween.prop ]( tween );
6983 - } else if ( tween.elem.nodeType === 1 && (
6984 - jQuery.cssHooks[ tween.prop ] ||
6985 - tween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {
6986 - jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
6987 - } else {
6988 - tween.elem[ tween.prop ] = tween.now;
6989 - }
6990 - }
6991 - }
6992 - };
6993 -
6994 - // Support: IE <=9 only
6995 - // Panic based approach to setting things on disconnected nodes
6996 - Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
6997 - set: function( tween ) {
6998 - if ( tween.elem.nodeType && tween.elem.parentNode ) {
6999 - tween.elem[ tween.prop ] = tween.now;
7000 - }
7001 - }
7002 - };
7003 -
7004 - jQuery.easing = {
7005 - linear: function( p ) {
7006 - return p;
7007 - },
7008 - swing: function( p ) {
7009 - return 0.5 - Math.cos( p * Math.PI ) / 2;
7010 - },
7011 - _default: "swing"
7012 - };
7013 -
7014 - jQuery.fx = Tween.prototype.init;
7015 -
7016 - // Back compat <1.8 extension point
7017 - jQuery.fx.step = {};
7018 -
7019 -
7020 -
7021 -
7022 - var
7023 - fxNow, inProgress,
7024 - rfxtypes = /^(?:toggle|show|hide)$/,
7025 - rrun = /queueHooks$/;
7026 -
7027 - function schedule() {
7028 - if ( inProgress ) {
7029 - if ( document.hidden === false && window.requestAnimationFrame ) {
7030 - window.requestAnimationFrame( schedule );
7031 - } else {
7032 - window.setTimeout( schedule, jQuery.fx.interval );
7033 - }
7034 -
7035 - jQuery.fx.tick();
7036 - }
7037 - }
7038 -
7039 - // Animations created synchronously will run synchronously
7040 - function createFxNow() {
7041 - window.setTimeout( function() {
7042 - fxNow = undefined;
7043 - } );
7044 - return ( fxNow = Date.now() );
7045 - }
7046 -
7047 - // Generate parameters to create a standard animation
7048 - function genFx( type, includeWidth ) {
7049 - var which,
7050 - i = 0,
7051 - attrs = { height: type };
7052 -
7053 - // If we include width, step value is 1 to do all cssExpand values,
7054 - // otherwise step value is 2 to skip over Left and Right
7055 - includeWidth = includeWidth ? 1 : 0;
7056 - for ( ; i < 4; i += 2 - includeWidth ) {
7057 - which = cssExpand[ i ];
7058 - attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
7059 - }
7060 -
7061 - if ( includeWidth ) {
7062 - attrs.opacity = attrs.width = type;
7063 - }
7064 -
7065 - return attrs;
7066 - }
7067 -
7068 - function createTween( value, prop, animation ) {
7069 - var tween,
7070 - collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ),
7071 - index = 0,
7072 - length = collection.length;
7073 - for ( ; index < length; index++ ) {
7074 - if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {
7075 -
7076 - // We're done with this property
7077 - return tween;
7078 - }
7079 - }
7080 - }
7081 -
7082 - function defaultPrefilter( elem, props, opts ) {
7083 - var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,
7084 - isBox = "width" in props || "height" in props,
7085 - anim = this,
7086 - orig = {},
7087 - style = elem.style,
7088 - hidden = elem.nodeType && isHiddenWithinTree( elem ),
7089 - dataShow = dataPriv.get( elem, "fxshow" );
7090 -
7091 - // Queue-skipping animations hijack the fx hooks
7092 - if ( !opts.queue ) {
7093 - hooks = jQuery._queueHooks( elem, "fx" );
7094 - if ( hooks.unqueued == null ) {
7095 - hooks.unqueued = 0;
7096 - oldfire = hooks.empty.fire;
7097 - hooks.empty.fire = function() {
7098 - if ( !hooks.unqueued ) {
7099 - oldfire();
7100 - }
7101 - };
7102 - }
7103 - hooks.unqueued++;
7104 -
7105 - anim.always( function() {
7106 -
7107 - // Ensure the complete handler is called before this completes
7108 - anim.always( function() {
7109 - hooks.unqueued--;
7110 - if ( !jQuery.queue( elem, "fx" ).length ) {
7111 - hooks.empty.fire();
7112 - }
7113 - } );
7114 - } );
7115 - }
7116 -
7117 - // Detect show/hide animations
7118 - for ( prop in props ) {
7119 - value = props[ prop ];
7120 - if ( rfxtypes.test( value ) ) {
7121 - delete props[ prop ];
7122 - toggle = toggle || value === "toggle";
7123 - if ( value === ( hidden ? "hide" : "show" ) ) {
7124 -
7125 - // Pretend to be hidden if this is a "show" and
7126 - // there is still data from a stopped show/hide
7127 - if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) {
7128 - hidden = true;
7129 -
7130 - // Ignore all other no-op show/hide data
7131 - } else {
7132 - continue;
7133 - }
7134 - }
7135 - orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
7136 - }
7137 - }
7138 -
7139 - // Bail out if this is a no-op like .hide().hide()
7140 - propTween = !jQuery.isEmptyObject( props );
7141 - if ( !propTween && jQuery.isEmptyObject( orig ) ) {
7142 - return;
7143 - }
7144 -
7145 - // Restrict "overflow" and "display" styles during box animations
7146 - if ( isBox && elem.nodeType === 1 ) {
7147 -
7148 - // Support: IE <=9 - 11, Edge 12 - 15
7149 - // Record all 3 overflow attributes because IE does not infer the shorthand
7150 - // from identically-valued overflowX and overflowY and Edge just mirrors
7151 - // the overflowX value there.
7152 - opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
7153 -
7154 - // Identify a display type, preferring old show/hide data over the CSS cascade
7155 - restoreDisplay = dataShow && dataShow.display;
7156 - if ( restoreDisplay == null ) {
7157 - restoreDisplay = dataPriv.get( elem, "display" );
7158 - }
7159 - display = jQuery.css( elem, "display" );
7160 - if ( display === "none" ) {
7161 - if ( restoreDisplay ) {
7162 - display = restoreDisplay;
7163 - } else {
7164 -
7165 - // Get nonempty value(s) by temporarily forcing visibility
7166 - showHide( [ elem ], true );
7167 - restoreDisplay = elem.style.display || restoreDisplay;
7168 - display = jQuery.css( elem, "display" );
7169 - showHide( [ elem ] );
7170 - }
7171 - }
7172 -
7173 - // Animate inline elements as inline-block
7174 - if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) {
7175 - if ( jQuery.css( elem, "float" ) === "none" ) {
7176 -
7177 - // Restore the original display value at the end of pure show/hide animations
7178 - if ( !propTween ) {
7179 - anim.done( function() {
7180 - style.display = restoreDisplay;
7181 - } );
7182 - if ( restoreDisplay == null ) {
7183 - display = style.display;
7184 - restoreDisplay = display === "none" ? "" : display;
7185 - }
7186 - }
7187 - style.display = "inline-block";
7188 - }
7189 - }
7190 - }
7191 -
7192 - if ( opts.overflow ) {
7193 - style.overflow = "hidden";
7194 - anim.always( function() {
7195 - style.overflow = opts.overflow[ 0 ];
7196 - style.overflowX = opts.overflow[ 1 ];
7197 - style.overflowY = opts.overflow[ 2 ];
7198 - } );
7199 - }
7200 -
7201 - // Implement show/hide animations
7202 - propTween = false;
7203 - for ( prop in orig ) {
7204 -
7205 - // General show/hide setup for this element animation
7206 - if ( !propTween ) {
7207 - if ( dataShow ) {
7208 - if ( "hidden" in dataShow ) {
7209 - hidden = dataShow.hidden;
7210 - }
7211 - } else {
7212 - dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } );
7213 - }
7214 -
7215 - // Store hidden/visible for toggle so `.stop().toggle()` "reverses"
7216 - if ( toggle ) {
7217 - dataShow.hidden = !hidden;
7218 - }
7219 -
7220 - // Show elements before animating them
7221 - if ( hidden ) {
7222 - showHide( [ elem ], true );
7223 - }
7224 -
7225 - /* eslint-disable no-loop-func */
7226 -
7227 - anim.done( function() {
7228 -
7229 - /* eslint-enable no-loop-func */
7230 -
7231 - // The final step of a "hide" animation is actually hiding the element
7232 - if ( !hidden ) {
7233 - showHide( [ elem ] );
7234 - }
7235 - dataPriv.remove( elem, "fxshow" );
7236 - for ( prop in orig ) {
7237 - jQuery.style( elem, prop, orig[ prop ] );
7238 - }
7239 - } );
7240 - }
7241 -
7242 - // Per-property setup
7243 - propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
7244 - if ( !( prop in dataShow ) ) {
7245 - dataShow[ prop ] = propTween.start;
7246 - if ( hidden ) {
7247 - propTween.end = propTween.start;
7248 - propTween.start = 0;
7249 - }
7250 - }
7251 - }
7252 - }
7253 -
7254 - function propFilter( props, specialEasing ) {
7255 - var index, name, easing, value, hooks;
7256 -
7257 - // camelCase, specialEasing and expand cssHook pass
7258 - for ( index in props ) {
7259 - name = camelCase( index );
7260 - easing = specialEasing[ name ];
7261 - value = props[ index ];
7262 - if ( Array.isArray( value ) ) {
7263 - easing = value[ 1 ];
7264 - value = props[ index ] = value[ 0 ];
7265 - }
7266 -
7267 - if ( index !== name ) {
7268 - props[ name ] = value;
7269 - delete props[ index ];
7270 - }
7271 -
7272 - hooks = jQuery.cssHooks[ name ];
7273 - if ( hooks && "expand" in hooks ) {
7274 - value = hooks.expand( value );
7275 - delete props[ name ];
7276 -
7277 - // Not quite $.extend, this won't overwrite existing keys.
7278 - // Reusing 'index' because we have the correct "name"
7279 - for ( index in value ) {
7280 - if ( !( index in props ) ) {
7281 - props[ index ] = value[ index ];
7282 - specialEasing[ index ] = easing;
7283 - }
7284 - }
7285 - } else {
7286 - specialEasing[ name ] = easing;
7287 - }
7288 - }
7289 - }
7290 -
7291 - function Animation( elem, properties, options ) {
7292 - var result,
7293 - stopped,
7294 - index = 0,
7295 - length = Animation.prefilters.length,
7296 - deferred = jQuery.Deferred().always( function() {
7297 -
7298 - // Don't match elem in the :animated selector
7299 - delete tick.elem;
7300 - } ),
7301 - tick = function() {
7302 - if ( stopped ) {
7303 - return false;
7304 - }
7305 - var currentTime = fxNow || createFxNow(),
7306 - remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
7307 -
7308 - // Support: Android 2.3 only
7309 - // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)
7310 - temp = remaining / animation.duration || 0,
7311 - percent = 1 - temp,
7312 - index = 0,
7313 - length = animation.tweens.length;
7314 -
7315 - for ( ; index < length; index++ ) {
7316 - animation.tweens[ index ].run( percent );
7317 - }
7318 -
7319 - deferred.notifyWith( elem, [ animation, percent, remaining ] );
7320 -
7321 - // If there's more to do, yield
7322 - if ( percent < 1 && length ) {
7323 - return remaining;
7324 - }
7325 -
7326 - // If this was an empty animation, synthesize a final progress notification
7327 - if ( !length ) {
7328 - deferred.notifyWith( elem, [ animation, 1, 0 ] );
7329 - }
7330 -
7331 - // Resolve the animation and report its conclusion
7332 - deferred.resolveWith( elem, [ animation ] );
7333 - return false;
7334 - },
7335 - animation = deferred.promise( {
7336 - elem: elem,
7337 - props: jQuery.extend( {}, properties ),
7338 - opts: jQuery.extend( true, {
7339 - specialEasing: {},
7340 - easing: jQuery.easing._default
7341 - }, options ),
7342 - originalProperties: properties,
7343 - originalOptions: options,
7344 - startTime: fxNow || createFxNow(),
7345 - duration: options.duration,
7346 - tweens: [],
7347 - createTween: function( prop, end ) {
7348 - var tween = jQuery.Tween( elem, animation.opts, prop, end,
7349 - animation.opts.specialEasing[ prop ] || animation.opts.easing );
7350 - animation.tweens.push( tween );
7351 - return tween;
7352 - },
7353 - stop: function( gotoEnd ) {
7354 - var index = 0,
7355 -
7356 - // If we are going to the end, we want to run all the tweens
7357 - // otherwise we skip this part
7358 - length = gotoEnd ? animation.tweens.length : 0;
7359 - if ( stopped ) {
7360 - return this;
7361 - }
7362 - stopped = true;
7363 - for ( ; index < length; index++ ) {
7364 - animation.tweens[ index ].run( 1 );
7365 - }
7366 -
7367 - // Resolve when we played the last frame; otherwise, reject
7368 - if ( gotoEnd ) {
7369 - deferred.notifyWith( elem, [ animation, 1, 0 ] );
7370 - deferred.resolveWith( elem, [ animation, gotoEnd ] );
7371 - } else {
7372 - deferred.rejectWith( elem, [ animation, gotoEnd ] );
7373 - }
7374 - return this;
7375 - }
7376 - } ),
7377 - props = animation.props;
7378 -
7379 - propFilter( props, animation.opts.specialEasing );
7380 -
7381 - for ( ; index < length; index++ ) {
7382 - result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );
7383 - if ( result ) {
7384 - if ( isFunction( result.stop ) ) {
7385 - jQuery._queueHooks( animation.elem, animation.opts.queue ).stop =
7386 - result.stop.bind( result );
7387 - }
7388 - return result;
7389 - }
7390 - }
7391 -
7392 - jQuery.map( props, createTween, animation );
7393 -
7394 - if ( isFunction( animation.opts.start ) ) {
7395 - animation.opts.start.call( elem, animation );
7396 - }
7397 -
7398 - // Attach callbacks from options
7399 - animation
7400 - .progress( animation.opts.progress )
7401 - .done( animation.opts.done, animation.opts.complete )
7402 - .fail( animation.opts.fail )
7403 - .always( animation.opts.always );
7404 -
7405 - jQuery.fx.timer(
7406 - jQuery.extend( tick, {
7407 - elem: elem,
7408 - anim: animation,
7409 - queue: animation.opts.queue
7410 - } )
7411 - );
7412 -
7413 - return animation;
7414 - }
7415 -
7416 - jQuery.Animation = jQuery.extend( Animation, {
7417 -
7418 - tweeners: {
7419 - "*": [ function( prop, value ) {
7420 - var tween = this.createTween( prop, value );
7421 - adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );
7422 - return tween;
7423 - } ]
7424 - },
7425 -
7426 - tweener: function( props, callback ) {
7427 - if ( isFunction( props ) ) {
7428 - callback = props;
7429 - props = [ "*" ];
7430 - } else {
7431 - props = props.match( rnothtmlwhite );
7432 - }
7433 -
7434 - var prop,
7435 - index = 0,
7436 - length = props.length;
7437 -
7438 - for ( ; index < length; index++ ) {
7439 - prop = props[ index ];
7440 - Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];
7441 - Animation.tweeners[ prop ].unshift( callback );
7442 - }
7443 - },
7444 -
7445 - prefilters: [ defaultPrefilter ],
7446 -
7447 - prefilter: function( callback, prepend ) {
7448 - if ( prepend ) {
7449 - Animation.prefilters.unshift( callback );
7450 - } else {
7451 - Animation.prefilters.push( callback );
7452 - }
7453 - }
7454 - } );
7455 -
7456 - jQuery.speed = function( speed, easing, fn ) {
7457 - var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
7458 - complete: fn || !fn && easing ||
7459 - isFunction( speed ) && speed,
7460 - duration: speed,
7461 - easing: fn && easing || easing && !isFunction( easing ) && easing
7462 - };
7463 -
7464 - // Go to the end state if fx are off
7465 - if ( jQuery.fx.off ) {
7466 - opt.duration = 0;
7467 -
7468 - } else {
7469 - if ( typeof opt.duration !== "number" ) {
7470 - if ( opt.duration in jQuery.fx.speeds ) {
7471 - opt.duration = jQuery.fx.speeds[ opt.duration ];
7472 -
7473 - } else {
7474 - opt.duration = jQuery.fx.speeds._default;
7475 - }
7476 - }
7477 - }
7478 -
7479 - // Normalize opt.queue - true/undefined/null -> "fx"
7480 - if ( opt.queue == null || opt.queue === true ) {
7481 - opt.queue = "fx";
7482 - }
7483 -
7484 - // Queueing
7485 - opt.old = opt.complete;
7486 -
7487 - opt.complete = function() {
7488 - if ( isFunction( opt.old ) ) {
7489 - opt.old.call( this );
7490 - }
7491 -
7492 - if ( opt.queue ) {
7493 - jQuery.dequeue( this, opt.queue );
7494 - }
7495 - };
7496 -
7497 - return opt;
7498 - };
7499 -
7500 - jQuery.fn.extend( {
7501 - fadeTo: function( speed, to, easing, callback ) {
7502 -
7503 - // Show any hidden elements after setting opacity to 0
7504 - return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show()
7505 -
7506 - // Animate to the value specified
7507 - .end().animate( { opacity: to }, speed, easing, callback );
7508 - },
7509 - animate: function( prop, speed, easing, callback ) {
7510 - var empty = jQuery.isEmptyObject( prop ),
7511 - optall = jQuery.speed( speed, easing, callback ),
7512 - doAnimation = function() {
7513 -
7514 - // Operate on a copy of prop so per-property easing won't be lost
7515 - var anim = Animation( this, jQuery.extend( {}, prop ), optall );
7516 -
7517 - // Empty animations, or finishing resolves immediately
7518 - if ( empty || dataPriv.get( this, "finish" ) ) {
7519 - anim.stop( true );
7520 - }
7521 - };
7522 - doAnimation.finish = doAnimation;
7523 -
7524 - return empty || optall.queue === false ?
7525 - this.each( doAnimation ) :
7526 - this.queue( optall.queue, doAnimation );
7527 - },
7528 - stop: function( type, clearQueue, gotoEnd ) {
7529 - var stopQueue = function( hooks ) {
7530 - var stop = hooks.stop;
7531 - delete hooks.stop;
7532 - stop( gotoEnd );
7533 - };
7534 -
7535 - if ( typeof type !== "string" ) {
7536 - gotoEnd = clearQueue;
7537 - clearQueue = type;
7538 - type = undefined;
7539 - }
7540 - if ( clearQueue && type !== false ) {
7541 - this.queue( type || "fx", [] );
7542 - }
7543 -
7544 - return this.each( function() {
7545 - var dequeue = true,
7546 - index = type != null && type + "queueHooks",
7547 - timers = jQuery.timers,
7548 - data = dataPriv.get( this );
7549 -
7550 - if ( index ) {
7551 - if ( data[ index ] && data[ index ].stop ) {
7552 - stopQueue( data[ index ] );
7553 - }
7554 - } else {
7555 - for ( index in data ) {
7556 - if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
7557 - stopQueue( data[ index ] );
7558 - }
7559 - }
7560 - }
7561 -
7562 - for ( index = timers.length; index--; ) {
7563 - if ( timers[ index ].elem === this &&
7564 - ( type == null || timers[ index ].queue === type ) ) {
7565 -
7566 - timers[ index ].anim.stop( gotoEnd );
7567 - dequeue = false;
7568 - timers.splice( index, 1 );
7569 - }
7570 - }
7571 -
7572 - // Start the next in the queue if the last step wasn't forced.
7573 - // Timers currently will call their complete callbacks, which
7574 - // will dequeue but only if they were gotoEnd.
7575 - if ( dequeue || !gotoEnd ) {
7576 - jQuery.dequeue( this, type );
7577 - }
7578 - } );
7579 - },
7580 - finish: function( type ) {
7581 - if ( type !== false ) {
7582 - type = type || "fx";
7583 - }
7584 - return this.each( function() {
7585 - var index,
7586 - data = dataPriv.get( this ),
7587 - queue = data[ type + "queue" ],
7588 - hooks = data[ type + "queueHooks" ],
7589 - timers = jQuery.timers,
7590 - length = queue ? queue.length : 0;
7591 -
7592 - // Enable finishing flag on private data
7593 - data.finish = true;
7594 -
7595 - // Empty the queue first
7596 - jQuery.queue( this, type, [] );
7597 -
7598 - if ( hooks && hooks.stop ) {
7599 - hooks.stop.call( this, true );
7600 - }
7601 -
7602 - // Look for any active animations, and finish them
7603 - for ( index = timers.length; index--; ) {
7604 - if ( timers[ index ].elem === this && timers[ index ].queue === type ) {
7605 - timers[ index ].anim.stop( true );
7606 - timers.splice( index, 1 );
7607 - }
7608 - }
7609 -
7610 - // Look for any animations in the old queue and finish them
7611 - for ( index = 0; index < length; index++ ) {
7612 - if ( queue[ index ] && queue[ index ].finish ) {
7613 - queue[ index ].finish.call( this );
7614 - }
7615 - }
7616 -
7617 - // Turn off finishing flag
7618 - delete data.finish;
7619 - } );
7620 - }
7621 - } );
7622 -
7623 - jQuery.each( [ "toggle", "show", "hide" ], function( i, name ) {
7624 - var cssFn = jQuery.fn[ name ];
7625 - jQuery.fn[ name ] = function( speed, easing, callback ) {
7626 - return speed == null || typeof speed === "boolean" ?
7627 - cssFn.apply( this, arguments ) :
7628 - this.animate( genFx( name, true ), speed, easing, callback );
7629 - };
7630 - } );
7631 -
7632 - // Generate shortcuts for custom animations
7633 - jQuery.each( {
7634 - slideDown: genFx( "show" ),
7635 - slideUp: genFx( "hide" ),
7636 - slideToggle: genFx( "toggle" ),
7637 - fadeIn: { opacity: "show" },
7638 - fadeOut: { opacity: "hide" },
7639 - fadeToggle: { opacity: "toggle" }
7640 - }, function( name, props ) {
7641 - jQuery.fn[ name ] = function( speed, easing, callback ) {
7642 - return this.animate( props, speed, easing, callback );
7643 - };
7644 - } );
7645 -
7646 - jQuery.timers = [];
7647 - jQuery.fx.tick = function() {
7648 - var timer,
7649 - i = 0,
7650 - timers = jQuery.timers;
7651 -
7652 - fxNow = Date.now();
7653 -
7654 - for ( ; i < timers.length; i++ ) {
7655 - timer = timers[ i ];
7656 -
7657 - // Run the timer and safely remove it when done (allowing for external removal)
7658 - if ( !timer() && timers[ i ] === timer ) {
7659 - timers.splice( i--, 1 );
7660 - }
7661 - }
7662 -
7663 - if ( !timers.length ) {
7664 - jQuery.fx.stop();
7665 - }
7666 - fxNow = undefined;
7667 - };
7668 -
7669 - jQuery.fx.timer = function( timer ) {
7670 - jQuery.timers.push( timer );
7671 - jQuery.fx.start();
7672 - };
7673 -
7674 - jQuery.fx.interval = 13;
7675 - jQuery.fx.start = function() {
7676 - if ( inProgress ) {
7677 - return;
7678 - }
7679 -
7680 - inProgress = true;
7681 - schedule();
7682 - };
7683 -
7684 - jQuery.fx.stop = function() {
7685 - inProgress = null;
7686 - };
7687 -
7688 - jQuery.fx.speeds = {
7689 - slow: 600,
7690 - fast: 200,
7691 -
7692 - // Default speed
7693 - _default: 400
7694 - };
7695 -
7696 -
7697 - // Based off of the plugin by Clint Helfers, with permission.
7698 - // https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/
7699 - jQuery.fn.delay = function( time, type ) {
7700 - time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
7701 - type = type || "fx";
7702 -
7703 - return this.queue( type, function( next, hooks ) {
7704 - var timeout = window.setTimeout( next, time );
7705 - hooks.stop = function() {
7706 - window.clearTimeout( timeout );
7707 - };
7708 - } );
7709 - };
7710 -
7711 -
7712 - ( function() {
7713 - var input = document.createElement( "input" ),
7714 - select = document.createElement( "select" ),
7715 - opt = select.appendChild( document.createElement( "option" ) );
7716 -
7717 - input.type = "checkbox";
7718 -
7719 - // Support: Android <=4.3 only
7720 - // Default value for a checkbox should be "on"
7721 - support.checkOn = input.value !== "";
7722 -
7723 - // Support: IE <=11 only
7724 - // Must access selectedIndex to make default options select
7725 - support.optSelected = opt.selected;
7726 -
7727 - // Support: IE <=11 only
7728 - // An input loses its value after becoming a radio
7729 - input = document.createElement( "input" );
7730 - input.value = "t";
7731 - input.type = "radio";
7732 - support.radioValue = input.value === "t";
7733 - } )();
7734 -
7735 -
7736 - var boolHook,
7737 - attrHandle = jQuery.expr.attrHandle;
7738 -
7739 - jQuery.fn.extend( {
7740 - attr: function( name, value ) {
7741 - return access( this, jQuery.attr, name, value, arguments.length > 1 );
7742 - },
7743 -
7744 - removeAttr: function( name ) {
7745 - return this.each( function() {
7746 - jQuery.removeAttr( this, name );
7747 - } );
7748 - }
7749 - } );
7750 -
7751 - jQuery.extend( {
7752 - attr: function( elem, name, value ) {
7753 - var ret, hooks,
7754 - nType = elem.nodeType;
7755 -
7756 - // Don't get/set attributes on text, comment and attribute nodes
7757 - if ( nType === 3 || nType === 8 || nType === 2 ) {
7758 - return;
7759 - }
7760 -
7761 - // Fallback to prop when attributes are not supported
7762 - if ( typeof elem.getAttribute === "undefined" ) {
7763 - return jQuery.prop( elem, name, value );
7764 - }
7765 -
7766 - // Attribute hooks are determined by the lowercase version
7767 - // Grab necessary hook if one is defined
7768 - if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
7769 - hooks = jQuery.attrHooks[ name.toLowerCase() ] ||
7770 - ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );
7771 - }
7772 -
7773 - if ( value !== undefined ) {
7774 - if ( value === null ) {
7775 - jQuery.removeAttr( elem, name );
7776 - return;
7777 - }
7778 -
7779 - if ( hooks && "set" in hooks &&
7780 - ( ret = hooks.set( elem, value, name ) ) !== undefined ) {
7781 - return ret;
7782 - }
7783 -
7784 - elem.setAttribute( name, value + "" );
7785 - return value;
7786 - }
7787 -
7788 - if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
7789 - return ret;
7790 - }
7791 -
7792 - ret = jQuery.find.attr( elem, name );
7793 -
7794 - // Non-existent attributes return null, we normalize to undefined
7795 - return ret == null ? undefined : ret;
7796 - },
7797 -
7798 - attrHooks: {
7799 - type: {
7800 - set: function( elem, value ) {
7801 - if ( !support.radioValue && value === "radio" &&
7802 - nodeName( elem, "input" ) ) {
7803 - var val = elem.value;
7804 - elem.setAttribute( "type", value );
7805 - if ( val ) {
7806 - elem.value = val;
7807 - }
7808 - return value;
7809 - }
7810 - }
7811 - }
7812 - },
7813 -
7814 - removeAttr: function( elem, value ) {
7815 - var name,
7816 - i = 0,
7817 -
7818 - // Attribute names can contain non-HTML whitespace characters
7819 - // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2
7820 - attrNames = value && value.match( rnothtmlwhite );
7821 -
7822 - if ( attrNames && elem.nodeType === 1 ) {
7823 - while ( ( name = attrNames[ i++ ] ) ) {
7824 - elem.removeAttribute( name );
7825 - }
7826 - }
7827 - }
7828 - } );
7829 -
7830 - // Hooks for boolean attributes
7831 - boolHook = {
7832 - set: function( elem, value, name ) {
7833 - if ( value === false ) {
7834 -
7835 - // Remove boolean attributes when set to false
7836 - jQuery.removeAttr( elem, name );
7837 - } else {
7838 - elem.setAttribute( name, name );
7839 - }
7840 - return name;
7841 - }
7842 - };
7843 -
7844 - jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) {
7845 - var getter = attrHandle[ name ] || jQuery.find.attr;
7846 -
7847 - attrHandle[ name ] = function( elem, name, isXML ) {
7848 - var ret, handle,
7849 - lowercaseName = name.toLowerCase();
7850 -
7851 - if ( !isXML ) {
7852 -
7853 - // Avoid an infinite loop by temporarily removing this function from the getter
7854 - handle = attrHandle[ lowercaseName ];
7855 - attrHandle[ lowercaseName ] = ret;
7856 - ret = getter( elem, name, isXML ) != null ?
7857 - lowercaseName :
7858 - null;
7859 - attrHandle[ lowercaseName ] = handle;
7860 - }
7861 - return ret;
7862 - };
7863 - } );
7864 -
7865 -
7866 -
7867 -
7868 - var rfocusable = /^(?:input|select|textarea|button)$/i,
7869 - rclickable = /^(?:a|area)$/i;
7870 -
7871 - jQuery.fn.extend( {
7872 - prop: function( name, value ) {
7873 - return access( this, jQuery.prop, name, value, arguments.length > 1 );
7874 - },
7875 -
7876 - removeProp: function( name ) {
7877 - return this.each( function() {
7878 - delete this[ jQuery.propFix[ name ] || name ];
7879 - } );
7880 - }
7881 - } );
7882 -
7883 - jQuery.extend( {
7884 - prop: function( elem, name, value ) {
7885 - var ret, hooks,
7886 - nType = elem.nodeType;
7887 -
7888 - // Don't get/set properties on text, comment and attribute nodes
7889 - if ( nType === 3 || nType === 8 || nType === 2 ) {
7890 - return;
7891 - }
7892 -
7893 - if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
7894 -
7895 - // Fix name and attach hooks
7896 - name = jQuery.propFix[ name ] || name;
7897 - hooks = jQuery.propHooks[ name ];
7898 - }
7899 -
7900 - if ( value !== undefined ) {
7901 - if ( hooks && "set" in hooks &&
7902 - ( ret = hooks.set( elem, value, name ) ) !== undefined ) {
7903 - return ret;
7904 - }
7905 -
7906 - return ( elem[ name ] = value );
7907 - }
7908 -
7909 - if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
7910 - return ret;
7911 - }
7912 -
7913 - return elem[ name ];
7914 - },
7915 -
7916 - propHooks: {
7917 - tabIndex: {
7918 - get: function( elem ) {
7919 -
7920 - // Support: IE <=9 - 11 only
7921 - // elem.tabIndex doesn't always return the
7922 - // correct value when it hasn't been explicitly set
7923 - // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
7924 - // Use proper attribute retrieval(#12072)
7925 - var tabindex = jQuery.find.attr( elem, "tabindex" );
7926 -
7927 - if ( tabindex ) {
7928 - return parseInt( tabindex, 10 );
7929 - }
7930 -
7931 - if (
7932 - rfocusable.test( elem.nodeName ) ||
7933 - rclickable.test( elem.nodeName ) &&
7934 - elem.href
7935 - ) {
7936 - return 0;
7937 - }
7938 -
7939 - return -1;
7940 - }
7941 - }
7942 - },
7943 -
7944 - propFix: {
7945 - "for": "htmlFor",
7946 - "class": "className"
7947 - }
7948 - } );
7949 -
7950 - // Support: IE <=11 only
7951 - // Accessing the selectedIndex property
7952 - // forces the browser to respect setting selected
7953 - // on the option
7954 - // The getter ensures a default option is selected
7955 - // when in an optgroup
7956 - // eslint rule "no-unused-expressions" is disabled for this code
7957 - // since it considers such accessions noop
7958 - if ( !support.optSelected ) {
7959 - jQuery.propHooks.selected = {
7960 - get: function( elem ) {
7961 -
7962 - /* eslint no-unused-expressions: "off" */
7963 -
7964 - var parent = elem.parentNode;
7965 - if ( parent && parent.parentNode ) {
7966 - parent.parentNode.selectedIndex;
7967 - }
7968 - return null;
7969 - },
7970 - set: function( elem ) {
7971 -
7972 - /* eslint no-unused-expressions: "off" */
7973 -
7974 - var parent = elem.parentNode;
7975 - if ( parent ) {
7976 - parent.selectedIndex;
7977 -
7978 - if ( parent.parentNode ) {
7979 - parent.parentNode.selectedIndex;
7980 - }
7981 - }
7982 - }
7983 - };
7984 - }
7985 -
7986 - jQuery.each( [
7987 - "tabIndex",
7988 - "readOnly",
7989 - "maxLength",
7990 - "cellSpacing",
7991 - "cellPadding",
7992 - "rowSpan",
7993 - "colSpan",
7994 - "useMap",
7995 - "frameBorder",
7996 - "contentEditable"
7997 - ], function() {
7998 - jQuery.propFix[ this.toLowerCase() ] = this;
7999 - } );
8000 -
8001 -
8002 -
8003 -
8004 - // Strip and collapse whitespace according to HTML spec
8005 - // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace
8006 - function stripAndCollapse( value ) {
8007 - var tokens = value.match( rnothtmlwhite ) || [];
8008 - return tokens.join( " " );
8009 - }
8010 -
8011 -
8012 - function getClass( elem ) {
8013 - return elem.getAttribute && elem.getAttribute( "class" ) || "";
8014 - }
8015 -
8016 - function classesToArray( value ) {
8017 - if ( Array.isArray( value ) ) {
8018 - return value;
8019 - }
8020 - if ( typeof value === "string" ) {
8021 - return value.match( rnothtmlwhite ) || [];
8022 - }
8023 - return [];
8024 - }
8025 -
8026 - jQuery.fn.extend( {
8027 - addClass: function( value ) {
8028 - var classes, elem, cur, curValue, clazz, j, finalValue,
8029 - i = 0;
8030 -
8031 - if ( isFunction( value ) ) {
8032 - return this.each( function( j ) {
8033 - jQuery( this ).addClass( value.call( this, j, getClass( this ) ) );
8034 - } );
8035 - }
8036 -
8037 - classes = classesToArray( value );
8038 -
8039 - if ( classes.length ) {
8040 - while ( ( elem = this[ i++ ] ) ) {
8041 - curValue = getClass( elem );
8042 - cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
8043 -
8044 - if ( cur ) {
8045 - j = 0;
8046 - while ( ( clazz = classes[ j++ ] ) ) {
8047 - if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
8048 - cur += clazz + " ";
8049 - }
8050 - }
8051 -
8052 - // Only assign if different to avoid unneeded rendering.
8053 - finalValue = stripAndCollapse( cur );
8054 - if ( curValue !== finalValue ) {
8055 - elem.setAttribute( "class", finalValue );
8056 - }
8057 - }
8058 - }
8059 - }
8060 -
8061 - return this;
8062 - },
8063 -
8064 - removeClass: function( value ) {
8065 - var classes, elem, cur, curValue, clazz, j, finalValue,
8066 - i = 0;
8067 -
8068 - if ( isFunction( value ) ) {
8069 - return this.each( function( j ) {
8070 - jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );
8071 - } );
8072 - }
8073 -
8074 - if ( !arguments.length ) {
8075 - return this.attr( "class", "" );
8076 - }
8077 -
8078 - classes = classesToArray( value );
8079 -
8080 - if ( classes.length ) {
8081 - while ( ( elem = this[ i++ ] ) ) {
8082 - curValue = getClass( elem );
8083 -
8084 - // This expression is here for better compressibility (see addClass)
8085 - cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
8086 -
8087 - if ( cur ) {
8088 - j = 0;
8089 - while ( ( clazz = classes[ j++ ] ) ) {
8090 -
8091 - // Remove *all* instances
8092 - while ( cur.indexOf( " " + clazz + " " ) > -1 ) {
8093 - cur = cur.replace( " " + clazz + " ", " " );
8094 - }
8095 - }
8096 -
8097 - // Only assign if different to avoid unneeded rendering.
8098 - finalValue = stripAndCollapse( cur );
8099 - if ( curValue !== finalValue ) {
8100 - elem.setAttribute( "class", finalValue );
8101 - }
8102 - }
8103 - }
8104 - }
8105 -
8106 - return this;
8107 - },
8108 -
8109 - toggleClass: function( value, stateVal ) {
8110 - var type = typeof value,
8111 - isValidValue = type === "string" || Array.isArray( value );
8112 -
8113 - if ( typeof stateVal === "boolean" && isValidValue ) {
8114 - return stateVal ? this.addClass( value ) : this.removeClass( value );
8115 - }
8116 -
8117 - if ( isFunction( value ) ) {
8118 - return this.each( function( i ) {
8119 - jQuery( this ).toggleClass(
8120 - value.call( this, i, getClass( this ), stateVal ),
8121 - stateVal
8122 - );
8123 - } );
8124 - }
8125 -
8126 - return this.each( function() {
8127 - var className, i, self, classNames;
8128 -
8129 - if ( isValidValue ) {
8130 -
8131 - // Toggle individual class names
8132 - i = 0;
8133 - self = jQuery( this );
8134 - classNames = classesToArray( value );
8135 -
8136 - while ( ( className = classNames[ i++ ] ) ) {
8137 -
8138 - // Check each className given, space separated list
8139 - if ( self.hasClass( className ) ) {
8140 - self.removeClass( className );
8141 - } else {
8142 - self.addClass( className );
8143 - }
8144 - }
8145 -
8146 - // Toggle whole class name
8147 - } else if ( value === undefined || type === "boolean" ) {
8148 - className = getClass( this );
8149 - if ( className ) {
8150 -
8151 - // Store className if set
8152 - dataPriv.set( this, "__className__", className );
8153 - }
8154 -
8155 - // If the element has a class name or if we're passed `false`,
8156 - // then remove the whole classname (if there was one, the above saved it).
8157 - // Otherwise bring back whatever was previously saved (if anything),
8158 - // falling back to the empty string if nothing was stored.
8159 - if ( this.setAttribute ) {
8160 - this.setAttribute( "class",
8161 - className || value === false ?
8162 - "" :
8163 - dataPriv.get( this, "__className__" ) || ""
8164 - );
8165 - }
8166 - }
8167 - } );
8168 - },
8169 -
8170 - hasClass: function( selector ) {
8171 - var className, elem,
8172 - i = 0;
8173 -
8174 - className = " " + selector + " ";
8175 - while ( ( elem = this[ i++ ] ) ) {
8176 - if ( elem.nodeType === 1 &&
8177 - ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) {
8178 - return true;
8179 - }
8180 - }
8181 -
8182 - return false;
8183 - }
8184 - } );
8185 -
8186 -
8187 -
8188 -
8189 - var rreturn = /\r/g;
8190 -
8191 - jQuery.fn.extend( {
8192 - val: function( value ) {
8193 - var hooks, ret, valueIsFunction,
8194 - elem = this[ 0 ];
8195 -
8196 - if ( !arguments.length ) {
8197 - if ( elem ) {
8198 - hooks = jQuery.valHooks[ elem.type ] ||
8199 - jQuery.valHooks[ elem.nodeName.toLowerCase() ];
8200 -
8201 - if ( hooks &&
8202 - "get" in hooks &&
8203 - ( ret = hooks.get( elem, "value" ) ) !== undefined
8204 - ) {
8205 - return ret;
8206 - }
8207 -
8208 - ret = elem.value;
8209 -
8210 - // Handle most common string cases
8211 - if ( typeof ret === "string" ) {
8212 - return ret.replace( rreturn, "" );
8213 - }
8214 -
8215 - // Handle cases where value is null/undef or number
8216 - return ret == null ? "" : ret;
8217 - }
8218 -
8219 - return;
8220 - }
8221 -
8222 - valueIsFunction = isFunction( value );
8223 -
8224 - return this.each( function( i ) {
8225 - var val;
8226 -
8227 - if ( this.nodeType !== 1 ) {
8228 - return;
8229 - }
8230 -
8231 - if ( valueIsFunction ) {
8232 - val = value.call( this, i, jQuery( this ).val() );
8233 - } else {
8234 - val = value;
8235 - }
8236 -
8237 - // Treat null/undefined as ""; convert numbers to string
8238 - if ( val == null ) {
8239 - val = "";
8240 -
8241 - } else if ( typeof val === "number" ) {
8242 - val += "";
8243 -
8244 - } else if ( Array.isArray( val ) ) {
8245 - val = jQuery.map( val, function( value ) {
8246 - return value == null ? "" : value + "";
8247 - } );
8248 - }
8249 -
8250 - hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
8251 -
8252 - // If set returns undefined, fall back to normal setting
8253 - if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) {
8254 - this.value = val;
8255 - }
8256 - } );
8257 - }
8258 - } );
8259 -
8260 - jQuery.extend( {
8261 - valHooks: {
8262 - option: {
8263 - get: function( elem ) {
8264 -
8265 - var val = jQuery.find.attr( elem, "value" );
8266 - return val != null ?
8267 - val :
8268 -
8269 - // Support: IE <=10 - 11 only
8270 - // option.text throws exceptions (#14686, #14858)
8271 - // Strip and collapse whitespace
8272 - // https://html.spec.whatwg.org/#strip-and-collapse-whitespace
8273 - stripAndCollapse( jQuery.text( elem ) );
8274 - }
8275 - },
8276 - select: {
8277 - get: function( elem ) {
8278 - var value, option, i,
8279 - options = elem.options,
8280 - index = elem.selectedIndex,
8281 - one = elem.type === "select-one",
8282 - values = one ? null : [],
8283 - max = one ? index + 1 : options.length;
8284 -
8285 - if ( index < 0 ) {
8286 - i = max;
8287 -
8288 - } else {
8289 - i = one ? index : 0;
8290 - }
8291 -
8292 - // Loop through all the selected options
8293 - for ( ; i < max; i++ ) {
8294 - option = options[ i ];
8295 -
8296 - // Support: IE <=9 only
8297 - // IE8-9 doesn't update selected after form reset (#2551)
8298 - if ( ( option.selected || i === index ) &&
8299 -
8300 - // Don't return options that are disabled or in a disabled optgroup
8301 - !option.disabled &&
8302 - ( !option.parentNode.disabled ||
8303 - !nodeName( option.parentNode, "optgroup" ) ) ) {
8304 -
8305 - // Get the specific value for the option
8306 - value = jQuery( option ).val();
8307 -
8308 - // We don't need an array for one selects
8309 - if ( one ) {
8310 - return value;
8311 - }
8312 -
8313 - // Multi-Selects return an array
8314 - values.push( value );
8315 - }
8316 - }
8317 -
8318 - return values;
8319 - },
8320 -
8321 - set: function( elem, value ) {
8322 - var optionSet, option,
8323 - options = elem.options,
8324 - values = jQuery.makeArray( value ),
8325 - i = options.length;
8326 -
8327 - while ( i-- ) {
8328 - option = options[ i ];
8329 -
8330 - /* eslint-disable no-cond-assign */
8331 -
8332 - if ( option.selected =
8333 - jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1
8334 - ) {
8335 - optionSet = true;
8336 - }
8337 -
8338 - /* eslint-enable no-cond-assign */
8339 - }
8340 -
8341 - // Force browsers to behave consistently when non-matching value is set
8342 - if ( !optionSet ) {
8343 - elem.selectedIndex = -1;
8344 - }
8345 - return values;
8346 - }
8347 - }
8348 - }
8349 - } );
8350 -
8351 - // Radios and checkboxes getter/setter
8352 - jQuery.each( [ "radio", "checkbox" ], function() {
8353 - jQuery.valHooks[ this ] = {
8354 - set: function( elem, value ) {
8355 - if ( Array.isArray( value ) ) {
8356 - return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );
8357 - }
8358 - }
8359 - };
8360 - if ( !support.checkOn ) {
8361 - jQuery.valHooks[ this ].get = function( elem ) {
8362 - return elem.getAttribute( "value" ) === null ? "on" : elem.value;
8363 - };
8364 - }
8365 - } );
8366 -
8367 -
8368 -
8369 -
8370 - // Return jQuery for attributes-only inclusion
8371 -
8372 -
8373 - support.focusin = "onfocusin" in window;
8374 -
8375 -
8376 - var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
8377 - stopPropagationCallback = function( e ) {
8378 - e.stopPropagation();
8379 - };
8380 -
8381 - jQuery.extend( jQuery.event, {
8382 -
8383 - trigger: function( event, data, elem, onlyHandlers ) {
8384 -
8385 - var i, cur, tmp, bubbleType, ontype, handle, special, lastElement,
8386 - eventPath = [ elem || document ],
8387 - type = hasOwn.call( event, "type" ) ? event.type : event,
8388 - namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : [];
8389 -
8390 - cur = lastElement = tmp = elem = elem || document;
8391 -
8392 - // Don't do events on text and comment nodes
8393 - if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
8394 - return;
8395 - }
8396 -
8397 - // focus/blur morphs to focusin/out; ensure we're not firing them right now
8398 - if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
8399 - return;
8400 - }
8401 -
8402 - if ( type.indexOf( "." ) > -1 ) {
8403 -
8404 - // Namespaced trigger; create a regexp to match event type in handle()
8405 - namespaces = type.split( "." );
8406 - type = namespaces.shift();
8407 - namespaces.sort();
8408 - }
8409 - ontype = type.indexOf( ":" ) < 0 && "on" + type;
8410 -
8411 - // Caller can pass in a jQuery.Event object, Object, or just an event type string
8412 - event = event[ jQuery.expando ] ?
8413 - event :
8414 - new jQuery.Event( type, typeof event === "object" && event );
8415 -
8416 - // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
8417 - event.isTrigger = onlyHandlers ? 2 : 3;
8418 - event.namespace = namespaces.join( "." );
8419 - event.rnamespace = event.namespace ?
8420 - new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) :
8421 - null;
8422 -
8423 - // Clean up the event in case it is being reused
8424 - event.result = undefined;
8425 - if ( !event.target ) {
8426 - event.target = elem;
8427 - }
8428 -
8429 - // Clone any incoming data and prepend the event, creating the handler arg list
8430 - data = data == null ?
8431 - [ event ] :
8432 - jQuery.makeArray( data, [ event ] );
8433 -
8434 - // Allow special events to draw outside the lines
8435 - special = jQuery.event.special[ type ] || {};
8436 - if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
8437 - return;
8438 - }
8439 -
8440 - // Determine event propagation path in advance, per W3C events spec (#9951)
8441 - // Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
8442 - if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {
8443 -
8444 - bubbleType = special.delegateType || type;
8445 - if ( !rfocusMorph.test( bubbleType + type ) ) {
8446 - cur = cur.parentNode;
8447 - }
8448 - for ( ; cur; cur = cur.parentNode ) {
8449 - eventPath.push( cur );
8450 - tmp = cur;
8451 - }
8452 -
8453 - // Only add window if we got to document (e.g., not plain obj or detached DOM)
8454 - if ( tmp === ( elem.ownerDocument || document ) ) {
8455 - eventPath.push( tmp.defaultView || tmp.parentWindow || window );
8456 - }
8457 - }
8458 -
8459 - // Fire handlers on the event path
8460 - i = 0;
8461 - while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {
8462 - lastElement = cur;
8463 - event.type = i > 1 ?
8464 - bubbleType :
8465 - special.bindType || type;
8466 -
8467 - // jQuery handler
8468 - handle = ( dataPriv.get( cur, "events" ) || {} )[ event.type ] &&
8469 - dataPriv.get( cur, "handle" );
8470 - if ( handle ) {
8471 - handle.apply( cur, data );
8472 - }
8473 -
8474 - // Native handler
8475 - handle = ontype && cur[ ontype ];
8476 - if ( handle && handle.apply && acceptData( cur ) ) {
8477 - event.result = handle.apply( cur, data );
8478 - if ( event.result === false ) {
8479 - event.preventDefault();
8480 - }
8481 - }
8482 - }
8483 - event.type = type;
8484 -
8485 - // If nobody prevented the default action, do it now
8486 - if ( !onlyHandlers && !event.isDefaultPrevented() ) {
8487 -
8488 - if ( ( !special._default ||
8489 - special._default.apply( eventPath.pop(), data ) === false ) &&
8490 - acceptData( elem ) ) {
8491 -
8492 - // Call a native DOM method on the target with the same name as the event.
8493 - // Don't do default actions on window, that's where global variables be (#6170)
8494 - if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {
8495 -
8496 - // Don't re-trigger an onFOO event when we call its FOO() method
8497 - tmp = elem[ ontype ];
8498 -
8499 - if ( tmp ) {
8500 - elem[ ontype ] = null;
8501 - }
8502 -
8503 - // Prevent re-triggering of the same event, since we already bubbled it above
8504 - jQuery.event.triggered = type;
8505 -
8506 - if ( event.isPropagationStopped() ) {
8507 - lastElement.addEventListener( type, stopPropagationCallback );
8508 - }
8509 -
8510 - elem[ type ]();
8511 -
8512 - if ( event.isPropagationStopped() ) {
8513 - lastElement.removeEventListener( type, stopPropagationCallback );
8514 - }
8515 -
8516 - jQuery.event.triggered = undefined;
8517 -
8518 - if ( tmp ) {
8519 - elem[ ontype ] = tmp;
8520 - }
8521 - }
8522 - }
8523 - }
8524 -
8525 - return event.result;
8526 - },
8527 -
8528 - // Piggyback on a donor event to simulate a different one
8529 - // Used only for `focus(in | out)` events
8530 - simulate: function( type, elem, event ) {
8531 - var e = jQuery.extend(
8532 - new jQuery.Event(),
8533 - event,
8534 - {
8535 - type: type,
8536 - isSimulated: true
8537 - }
8538 - );
8539 -
8540 - jQuery.event.trigger( e, null, elem );
8541 - }
8542 -
8543 - } );
8544 -
8545 - jQuery.fn.extend( {
8546 -
8547 - trigger: function( type, data ) {
8548 - return this.each( function() {
8549 - jQuery.event.trigger( type, data, this );
8550 - } );
8551 - },
8552 - triggerHandler: function( type, data ) {
8553 - var elem = this[ 0 ];
8554 - if ( elem ) {
8555 - return jQuery.event.trigger( type, data, elem, true );
8556 - }
8557 - }
8558 - } );
8559 -
8560 -
8561 - // Support: Firefox <=44
8562 - // Firefox doesn't have focus(in | out) events
8563 - // Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787
8564 - //
8565 - // Support: Chrome <=48 - 49, Safari <=9.0 - 9.1
8566 - // focus(in | out) events fire after focus & blur events,
8567 - // which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order
8568 - // Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857
8569 - if ( !support.focusin ) {
8570 - jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) {
8571 -
8572 - // Attach a single capturing handler on the document while someone wants focusin/focusout
8573 - var handler = function( event ) {
8574 - jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );
8575 - };
8576 -
8577 - jQuery.event.special[ fix ] = {
8578 - setup: function() {
8579 - var doc = this.ownerDocument || this,
8580 - attaches = dataPriv.access( doc, fix );
8581 -
8582 - if ( !attaches ) {
8583 - doc.addEventListener( orig, handler, true );
8584 - }
8585 - dataPriv.access( doc, fix, ( attaches || 0 ) + 1 );
8586 - },
8587 - teardown: function() {
8588 - var doc = this.ownerDocument || this,
8589 - attaches = dataPriv.access( doc, fix ) - 1;
8590 -
8591 - if ( !attaches ) {
8592 - doc.removeEventListener( orig, handler, true );
8593 - dataPriv.remove( doc, fix );
8594 -
8595 - } else {
8596 - dataPriv.access( doc, fix, attaches );
8597 - }
8598 - }
8599 - };
8600 - } );
8601 - }
8602 - var location = window.location;
8603 -
8604 - var nonce = Date.now();
8605 -
8606 - var rquery = ( /\?/ );
8607 -
8608 -
8609 -
8610 - // Cross-browser xml parsing
8611 - jQuery.parseXML = function( data ) {
8612 - var xml;
8613 - if ( !data || typeof data !== "string" ) {
8614 - return null;
8615 - }
8616 -
8617 - // Support: IE 9 - 11 only
8618 - // IE throws on parseFromString with invalid input.
8619 - try {
8620 - xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" );
8621 - } catch ( e ) {
8622 - xml = undefined;
8623 - }
8624 -
8625 - if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) {
8626 - jQuery.error( "Invalid XML: " + data );
8627 - }
8628 - return xml;
8629 - };
8630 -
8631 -
8632 - var
8633 - rbracket = /\[\]$/,
8634 - rCRLF = /\r?\n/g,
8635 - rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
8636 - rsubmittable = /^(?:input|select|textarea|keygen)/i;
8637 -
8638 - function buildParams( prefix, obj, traditional, add ) {
8639 - var name;
8640 -
8641 - if ( Array.isArray( obj ) ) {
8642 -
8643 - // Serialize array item.
8644 - jQuery.each( obj, function( i, v ) {
8645 - if ( traditional || rbracket.test( prefix ) ) {
8646 -
8647 - // Treat each array item as a scalar.
8648 - add( prefix, v );
8649 -
8650 - } else {
8651 -
8652 - // Item is non-scalar (array or object), encode its numeric index.
8653 - buildParams(
8654 - prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]",
8655 - v,
8656 - traditional,
8657 - add
8658 - );
8659 - }
8660 - } );
8661 -
8662 - } else if ( !traditional && toType( obj ) === "object" ) {
8663 -
8664 - // Serialize object item.
8665 - for ( name in obj ) {
8666 - buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
8667 - }
8668 -
8669 - } else {
8670 -
8671 - // Serialize scalar item.
8672 - add( prefix, obj );
8673 - }
8674 - }
8675 -
8676 - // Serialize an array of form elements or a set of
8677 - // key/values into a query string
8678 - jQuery.param = function( a, traditional ) {
8679 - var prefix,
8680 - s = [],
8681 - add = function( key, valueOrFunction ) {
8682 -
8683 - // If value is a function, invoke it and use its return value
8684 - var value = isFunction( valueOrFunction ) ?
8685 - valueOrFunction() :
8686 - valueOrFunction;
8687 -
8688 - s[ s.length ] = encodeURIComponent( key ) + "=" +
8689 - encodeURIComponent( value == null ? "" : value );
8690 - };
8691 -
8692 - if ( a == null ) {
8693 - return "";
8694 - }
8695 -
8696 - // If an array was passed in, assume that it is an array of form elements.
8697 - if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
8698 -
8699 - // Serialize the form elements
8700 - jQuery.each( a, function() {
8701 - add( this.name, this.value );
8702 - } );
8703 -
8704 - } else {
8705 -
8706 - // If traditional, encode the "old" way (the way 1.3.2 or older
8707 - // did it), otherwise encode params recursively.
8708 - for ( prefix in a ) {
8709 - buildParams( prefix, a[ prefix ], traditional, add );
8710 - }
8711 - }
8712 -
8713 - // Return the resulting serialization
8714 - return s.join( "&" );
8715 - };
8716 -
8717 - jQuery.fn.extend( {
8718 - serialize: function() {
8719 - return jQuery.param( this.serializeArray() );
8720 - },
8721 - serializeArray: function() {
8722 - return this.map( function() {
8723 -
8724 - // Can add propHook for "elements" to filter or add form elements
8725 - var elements = jQuery.prop( this, "elements" );
8726 - return elements ? jQuery.makeArray( elements ) : this;
8727 - } )
8728 - .filter( function() {
8729 - var type = this.type;
8730 -
8731 - // Use .is( ":disabled" ) so that fieldset[disabled] works
8732 - return this.name && !jQuery( this ).is( ":disabled" ) &&
8733 - rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
8734 - ( this.checked || !rcheckableType.test( type ) );
8735 - } )
8736 - .map( function( i, elem ) {
8737 - var val = jQuery( this ).val();
8738 -
8739 - if ( val == null ) {
8740 - return null;
8741 - }
8742 -
8743 - if ( Array.isArray( val ) ) {
8744 - return jQuery.map( val, function( val ) {
8745 - return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
8746 - } );
8747 - }
8748 -
8749 - return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
8750 - } ).get();
8751 - }
8752 - } );
8753 -
8754 -
8755 - var
8756 - r20 = /%20/g,
8757 - rhash = /#.*$/,
8758 - rantiCache = /([?&])_=[^&]*/,
8759 - rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,
8760 -
8761 - // #7653, #8125, #8152: local protocol detection
8762 - rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
8763 - rnoContent = /^(?:GET|HEAD)$/,
8764 - rprotocol = /^\/\//,
8765 -
8766 - /* Prefilters
8767 - * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
8768 - * 2) These are called:
8769 - * - BEFORE asking for a transport
8770 - * - AFTER param serialization (s.data is a string if s.processData is true)
8771 - * 3) key is the dataType
8772 - * 4) the catchall symbol "*" can be used
8773 - * 5) execution will start with transport dataType and THEN continue down to "*" if needed
8774 - */
8775 - prefilters = {},
8776 -
8777 - /* Transports bindings
8778 - * 1) key is the dataType
8779 - * 2) the catchall symbol "*" can be used
8780 - * 3) selection will start with transport dataType and THEN go to "*" if needed
8781 - */
8782 - transports = {},
8783 -
8784 - // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
8785 - allTypes = "*/".concat( "*" ),
8786 -
8787 - // Anchor tag for parsing the document origin
8788 - originAnchor = document.createElement( "a" );
8789 - originAnchor.href = location.href;
8790 -
8791 - // Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
8792 - function addToPrefiltersOrTransports( structure ) {
8793 -
8794 - // dataTypeExpression is optional and defaults to "*"
8795 - return function( dataTypeExpression, func ) {
8796 -
8797 - if ( typeof dataTypeExpression !== "string" ) {
8798 - func = dataTypeExpression;
8799 - dataTypeExpression = "*";
8800 - }
8801 -
8802 - var dataType,
8803 - i = 0,
8804 - dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];
8805 -
8806 - if ( isFunction( func ) ) {
8807 -
8808 - // For each dataType in the dataTypeExpression
8809 - while ( ( dataType = dataTypes[ i++ ] ) ) {
8810 -
8811 - // Prepend if requested
8812 - if ( dataType[ 0 ] === "+" ) {
8813 - dataType = dataType.slice( 1 ) || "*";
8814 - ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );
8815 -
8816 - // Otherwise append
8817 - } else {
8818 - ( structure[ dataType ] = structure[ dataType ] || [] ).push( func );
8819 - }
8820 - }
8821 - }
8822 - };
8823 - }
8824 -
8825 - // Base inspection function for prefilters and transports
8826 - function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {
8827 -
8828 - var inspected = {},
8829 - seekingTransport = ( structure === transports );
8830 -
8831 - function inspect( dataType ) {
8832 - var selected;
8833 - inspected[ dataType ] = true;
8834 - jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {
8835 - var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );
8836 - if ( typeof dataTypeOrTransport === "string" &&
8837 - !seekingTransport && !inspected[ dataTypeOrTransport ] ) {
8838 -
8839 - options.dataTypes.unshift( dataTypeOrTransport );
8840 - inspect( dataTypeOrTransport );
8841 - return false;
8842 - } else if ( seekingTransport ) {
8843 - return !( selected = dataTypeOrTransport );
8844 - }
8845 - } );
8846 - return selected;
8847 - }
8848 -
8849 - return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );
8850 - }
8851 -
8852 - // A special extend for ajax options
8853 - // that takes "flat" options (not to be deep extended)
8854 - // Fixes #9887
8855 - function ajaxExtend( target, src ) {
8856 - var key, deep,
8857 - flatOptions = jQuery.ajaxSettings.flatOptions || {};
8858 -
8859 - for ( key in src ) {
8860 - if ( src[ key ] !== undefined ) {
8861 - ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];
8862 - }
8863 - }
8864 - if ( deep ) {
8865 - jQuery.extend( true, target, deep );
8866 - }
8867 -
8868 - return target;
8869 - }
8870 -
8871 - /* Handles responses to an ajax request:
8872 - * - finds the right dataType (mediates between content-type and expected dataType)
8873 - * - returns the corresponding response
8874 - */
8875 - function ajaxHandleResponses( s, jqXHR, responses ) {
8876 -
8877 - var ct, type, finalDataType, firstDataType,
8878 - contents = s.contents,
8879 - dataTypes = s.dataTypes;
8880 -
8881 - // Remove auto dataType and get content-type in the process
8882 - while ( dataTypes[ 0 ] === "*" ) {
8883 - dataTypes.shift();
8884 - if ( ct === undefined ) {
8885 - ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" );
8886 - }
8887 - }
8888 -
8889 - // Check if we're dealing with a known content-type
8890 - if ( ct ) {
8891 - for ( type in contents ) {
8892 - if ( contents[ type ] && contents[ type ].test( ct ) ) {
8893 - dataTypes.unshift( type );
8894 - break;
8895 - }
8896 - }
8897 - }
8898 -
8899 - // Check to see if we have a response for the expected dataType
8900 - if ( dataTypes[ 0 ] in responses ) {
8901 - finalDataType = dataTypes[ 0 ];
8902 - } else {
8903 -
8904 - // Try convertible dataTypes
8905 - for ( type in responses ) {
8906 - if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) {
8907 - finalDataType = type;
8908 - break;
8909 - }
8910 - if ( !firstDataType ) {
8911 - firstDataType = type;
8912 - }
8913 - }
8914 -
8915 - // Or just use first one
8916 - finalDataType = finalDataType || firstDataType;
8917 - }
8918 -
8919 - // If we found a dataType
8920 - // We add the dataType to the list if needed
8921 - // and return the corresponding response
8922 - if ( finalDataType ) {
8923 - if ( finalDataType !== dataTypes[ 0 ] ) {
8924 - dataTypes.unshift( finalDataType );
8925 - }
8926 - return responses[ finalDataType ];
8927 - }
8928 - }
8929 -
8930 - /* Chain conversions given the request and the original response
8931 - * Also sets the responseXXX fields on the jqXHR instance
8932 - */
8933 - function ajaxConvert( s, response, jqXHR, isSuccess ) {
8934 - var conv2, current, conv, tmp, prev,
8935 - converters = {},
8936 -
8937 - // Work with a copy of dataTypes in case we need to modify it for conversion
8938 - dataTypes = s.dataTypes.slice();
8939 -
8940 - // Create converters map with lowercased keys
8941 - if ( dataTypes[ 1 ] ) {
8942 - for ( conv in s.converters ) {
8943 - converters[ conv.toLowerCase() ] = s.converters[ conv ];
8944 - }
8945 - }
8946 -
8947 - current = dataTypes.shift();
8948 -
8949 - // Convert to each sequential dataType
8950 - while ( current ) {
8951 -
8952 - if ( s.responseFields[ current ] ) {
8953 - jqXHR[ s.responseFields[ current ] ] = response;
8954 - }
8955 -
8956 - // Apply the dataFilter if provided
8957 - if ( !prev && isSuccess && s.dataFilter ) {
8958 - response = s.dataFilter( response, s.dataType );
8959 - }
8960 -
8961 - prev = current;
8962 - current = dataTypes.shift();
8963 -
8964 - if ( current ) {
8965 -
8966 - // There's only work to do if current dataType is non-auto
8967 - if ( current === "*" ) {
8968 -
8969 - current = prev;
8970 -
8971 - // Convert response if prev dataType is non-auto and differs from current
8972 - } else if ( prev !== "*" && prev !== current ) {
8973 -
8974 - // Seek a direct converter
8975 - conv = converters[ prev + " " + current ] || converters[ "* " + current ];
8976 -
8977 - // If none found, seek a pair
8978 - if ( !conv ) {
8979 - for ( conv2 in converters ) {
8980 -
8981 - // If conv2 outputs current
8982 - tmp = conv2.split( " " );
8983 - if ( tmp[ 1 ] === current ) {
8984 -
8985 - // If prev can be converted to accepted input
8986 - conv = converters[ prev + " " + tmp[ 0 ] ] ||
8987 - converters[ "* " + tmp[ 0 ] ];
8988 - if ( conv ) {
8989 -
8990 - // Condense equivalence converters
8991 - if ( conv === true ) {
8992 - conv = converters[ conv2 ];
8993 -
8994 - // Otherwise, insert the intermediate dataType
8995 - } else if ( converters[ conv2 ] !== true ) {
8996 - current = tmp[ 0 ];
8997 - dataTypes.unshift( tmp[ 1 ] );
8998 - }
8999 - break;
9000 - }
9001 - }
9002 - }
9003 - }
9004 -
9005 - // Apply converter (if not an equivalence)
9006 - if ( conv !== true ) {
9007 -
9008 - // Unless errors are allowed to bubble, catch and return them
9009 - if ( conv && s.throws ) {
9010 - response = conv( response );
9011 - } else {
9012 - try {
9013 - response = conv( response );
9014 - } catch ( e ) {
9015 - return {
9016 - state: "parsererror",
9017 - error: conv ? e : "No conversion from " + prev + " to " + current
9018 - };
9019 - }
9020 - }
9021 - }
9022 - }
9023 - }
9024 - }
9025 -
9026 - return { state: "success", data: response };
9027 - }
9028 -
9029 - jQuery.extend( {
9030 -
9031 - // Counter for holding the number of active queries
9032 - active: 0,
9033 -
9034 - // Last-Modified header cache for next request
9035 - lastModified: {},
9036 - etag: {},
9037 -
9038 - ajaxSettings: {
9039 - url: location.href,
9040 - type: "GET",
9041 - isLocal: rlocalProtocol.test( location.protocol ),
9042 - global: true,
9043 - processData: true,
9044 - async: true,
9045 - contentType: "application/x-www-form-urlencoded; charset=UTF-8",
9046 -
9047 - /*
9048 - timeout: 0,
9049 - data: null,
9050 - dataType: null,
9051 - username: null,
9052 - password: null,
9053 - cache: null,
9054 - throws: false,
9055 - traditional: false,
9056 - headers: {},
9057 - */
9058 -
9059 - accepts: {
9060 - "*": allTypes,
9061 - text: "text/plain",
9062 - html: "text/html",
9063 - xml: "application/xml, text/xml",
9064 - json: "application/json, text/javascript"
9065 - },
9066 -
9067 - contents: {
9068 - xml: /\bxml\b/,
9069 - html: /\bhtml/,
9070 - json: /\bjson\b/
9071 - },
9072 -
9073 - responseFields: {
9074 - xml: "responseXML",
9075 - text: "responseText",
9076 - json: "responseJSON"
9077 - },
9078 -
9079 - // Data converters
9080 - // Keys separate source (or catchall "*") and destination types with a single space
9081 - converters: {
9082 -
9083 - // Convert anything to text
9084 - "* text": String,
9085 -
9086 - // Text to html (true = no transformation)
9087 - "text html": true,
9088 -
9089 - // Evaluate text as a json expression
9090 - "text json": JSON.parse,
9091 -
9092 - // Parse text as xml
9093 - "text xml": jQuery.parseXML
9094 - },
9095 -
9096 - // For options that shouldn't be deep extended:
9097 - // you can add your own custom options here if
9098 - // and when you create one that shouldn't be
9099 - // deep extended (see ajaxExtend)
9100 - flatOptions: {
9101 - url: true,
9102 - context: true
9103 - }
9104 - },
9105 -
9106 - // Creates a full fledged settings object into target
9107 - // with both ajaxSettings and settings fields.
9108 - // If target is omitted, writes into ajaxSettings.
9109 - ajaxSetup: function( target, settings ) {
9110 - return settings ?
9111 -
9112 - // Building a settings object
9113 - ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :
9114 -
9115 - // Extending ajaxSettings
9116 - ajaxExtend( jQuery.ajaxSettings, target );
9117 - },
9118 -
9119 - ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
9120 - ajaxTransport: addToPrefiltersOrTransports( transports ),
9121 -
9122 - // Main method
9123 - ajax: function( url, options ) {
9124 -
9125 - // If url is an object, simulate pre-1.5 signature
9126 - if ( typeof url === "object" ) {
9127 - options = url;
9128 - url = undefined;
9129 - }
9130 -
9131 - // Force options to be an object
9132 - options = options || {};
9133 -
9134 - var transport,
9135 -
9136 - // URL without anti-cache param
9137 - cacheURL,
9138 -
9139 - // Response headers
9140 - responseHeadersString,
9141 - responseHeaders,
9142 -
9143 - // timeout handle
9144 - timeoutTimer,
9145 -
9146 - // Url cleanup var
9147 - urlAnchor,
9148 -
9149 - // Request state (becomes false upon send and true upon completion)
9150 - completed,
9151 -
9152 - // To know if global events are to be dispatched
9153 - fireGlobals,
9154 -
9155 - // Loop variable
9156 - i,
9157 -
9158 - // uncached part of the url
9159 - uncached,
9160 -
9161 - // Create the final options object
9162 - s = jQuery.ajaxSetup( {}, options ),
9163 -
9164 - // Callbacks context
9165 - callbackContext = s.context || s,
9166 -
9167 - // Context for global events is callbackContext if it is a DOM node or jQuery collection
9168 - globalEventContext = s.context &&
9169 - ( callbackContext.nodeType || callbackContext.jquery ) ?
9170 - jQuery( callbackContext ) :
9171 - jQuery.event,
9172 -
9173 - // Deferreds
9174 - deferred = jQuery.Deferred(),
9175 - completeDeferred = jQuery.Callbacks( "once memory" ),
9176 -
9177 - // Status-dependent callbacks
9178 - statusCode = s.statusCode || {},
9179 -
9180 - // Headers (they are sent all at once)
9181 - requestHeaders = {},
9182 - requestHeadersNames = {},
9183 -
9184 - // Default abort message
9185 - strAbort = "canceled",
9186 -
9187 - // Fake xhr
9188 - jqXHR = {
9189 - readyState: 0,
9190 -
9191 - // Builds headers hashtable if needed
9192 - getResponseHeader: function( key ) {
9193 - var match;
9194 - if ( completed ) {
9195 - if ( !responseHeaders ) {
9196 - responseHeaders = {};
9197 - while ( ( match = rheaders.exec( responseHeadersString ) ) ) {
9198 - responseHeaders[ match[ 1 ].toLowerCase() + " " ] =
9199 - ( responseHeaders[ match[ 1 ].toLowerCase() + " " ] || [] )
9200 - .concat( match[ 2 ] );
9201 - }
9202 - }
9203 - match = responseHeaders[ key.toLowerCase() + " " ];
9204 - }
9205 - return match == null ? null : match.join( ", " );
9206 - },
9207 -
9208 - // Raw string
9209 - getAllResponseHeaders: function() {
9210 - return completed ? responseHeadersString : null;
9211 - },
9212 -
9213 - // Caches the header
9214 - setRequestHeader: function( name, value ) {
9215 - if ( completed == null ) {
9216 - name = requestHeadersNames[ name.toLowerCase() ] =
9217 - requestHeadersNames[ name.toLowerCase() ] || name;
9218 - requestHeaders[ name ] = value;
9219 - }
9220 - return this;
9221 - },
9222 -
9223 - // Overrides response content-type header
9224 - overrideMimeType: function( type ) {
9225 - if ( completed == null ) {
9226 - s.mimeType = type;
9227 - }
9228 - return this;
9229 - },
9230 -
9231 - // Status-dependent callbacks
9232 - statusCode: function( map ) {
9233 - var code;
9234 - if ( map ) {
9235 - if ( completed ) {
9236 -
9237 - // Execute the appropriate callbacks
9238 - jqXHR.always( map[ jqXHR.status ] );
9239 - } else {
9240 -
9241 - // Lazy-add the new callbacks in a way that preserves old ones
9242 - for ( code in map ) {
9243 - statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
9244 - }
9245 - }
9246 - }
9247 - return this;
9248 - },
9249 -
9250 - // Cancel the request
9251 - abort: function( statusText ) {
9252 - var finalText = statusText || strAbort;
9253 - if ( transport ) {
9254 - transport.abort( finalText );
9255 - }
9256 - done( 0, finalText );
9257 - return this;
9258 - }
9259 - };
9260 -
9261 - // Attach deferreds
9262 - deferred.promise( jqXHR );
9263 -
9264 - // Add protocol if not provided (prefilters might expect it)
9265 - // Handle falsy url in the settings object (#10093: consistency with old signature)
9266 - // We also use the url parameter if available
9267 - s.url = ( ( url || s.url || location.href ) + "" )
9268 - .replace( rprotocol, location.protocol + "//" );
9269 -
9270 - // Alias method option to type as per ticket #12004
9271 - s.type = options.method || options.type || s.method || s.type;
9272 -
9273 - // Extract dataTypes list
9274 - s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ];
9275 -
9276 - // A cross-domain request is in order when the origin doesn't match the current origin.
9277 - if ( s.crossDomain == null ) {
9278 - urlAnchor = document.createElement( "a" );
9279 -
9280 - // Support: IE <=8 - 11, Edge 12 - 15
9281 - // IE throws exception on accessing the href property if url is malformed,
9282 - // e.g. http://example.com:80x/
9283 - try {
9284 - urlAnchor.href = s.url;
9285 -
9286 - // Support: IE <=8 - 11 only
9287 - // Anchor's host property isn't correctly set when s.url is relative
9288 - urlAnchor.href = urlAnchor.href;
9289 - s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !==
9290 - urlAnchor.protocol + "//" + urlAnchor.host;
9291 - } catch ( e ) {
9292 -
9293 - // If there is an error parsing the URL, assume it is crossDomain,
9294 - // it can be rejected by the transport if it is invalid
9295 - s.crossDomain = true;
9296 - }
9297 - }
9298 -
9299 - // Convert data if not already a string
9300 - if ( s.data && s.processData && typeof s.data !== "string" ) {
9301 - s.data = jQuery.param( s.data, s.traditional );
9302 - }
9303 -
9304 - // Apply prefilters
9305 - inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
9306 -
9307 - // If request was aborted inside a prefilter, stop there
9308 - if ( completed ) {
9309 - return jqXHR;
9310 - }
9311 -
9312 - // We can fire global events as of now if asked to
9313 - // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)
9314 - fireGlobals = jQuery.event && s.global;
9315 -
9316 - // Watch for a new set of requests
9317 - if ( fireGlobals && jQuery.active++ === 0 ) {
9318 - jQuery.event.trigger( "ajaxStart" );
9319 - }
9320 -
9321 - // Uppercase the type
9322 - s.type = s.type.toUpperCase();
9323 -
9324 - // Determine if request has content
9325 - s.hasContent = !rnoContent.test( s.type );
9326 -
9327 - // Save the URL in case we're toying with the If-Modified-Since
9328 - // and/or If-None-Match header later on
9329 - // Remove hash to simplify url manipulation
9330 - cacheURL = s.url.replace( rhash, "" );
9331 -
9332 - // More options handling for requests with no content
9333 - if ( !s.hasContent ) {
9334 -
9335 - // Remember the hash so we can put it back
9336 - uncached = s.url.slice( cacheURL.length );
9337 -
9338 - // If data is available and should be processed, append data to url
9339 - if ( s.data && ( s.processData || typeof s.data === "string" ) ) {
9340 - cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data;
9341 -
9342 - // #9682: remove data so that it's not used in an eventual retry
9343 - delete s.data;
9344 - }
9345 -
9346 - // Add or update anti-cache param if needed
9347 - if ( s.cache === false ) {
9348 - cacheURL = cacheURL.replace( rantiCache, "$1" );
9349 - uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce++ ) + uncached;
9350 - }
9351 -
9352 - // Put hash and anti-cache on the URL that will be requested (gh-1732)
9353 - s.url = cacheURL + uncached;
9354 -
9355 - // Change '%20' to '+' if this is encoded form body content (gh-2658)
9356 - } else if ( s.data && s.processData &&
9357 - ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) {
9358 - s.data = s.data.replace( r20, "+" );
9359 - }
9360 -
9361 - // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
9362 - if ( s.ifModified ) {
9363 - if ( jQuery.lastModified[ cacheURL ] ) {
9364 - jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
9365 - }
9366 - if ( jQuery.etag[ cacheURL ] ) {
9367 - jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
9368 - }
9369 - }
9370 -
9371 - // Set the correct header, if data is being sent
9372 - if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
9373 - jqXHR.setRequestHeader( "Content-Type", s.contentType );
9374 - }
9375 -
9376 - // Set the Accepts header for the server, depending on the dataType
9377 - jqXHR.setRequestHeader(
9378 - "Accept",
9379 - s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?
9380 - s.accepts[ s.dataTypes[ 0 ] ] +
9381 - ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
9382 - s.accepts[ "*" ]
9383 - );
9384 -
9385 - // Check for headers option
9386 - for ( i in s.headers ) {
9387 - jqXHR.setRequestHeader( i, s.headers[ i ] );
9388 - }
9389 -
9390 - // Allow custom headers/mimetypes and early abort
9391 - if ( s.beforeSend &&
9392 - ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {
9393 -
9394 - // Abort if not done already and return
9395 - return jqXHR.abort();
9396 - }
9397 -
9398 - // Aborting is no longer a cancellation
9399 - strAbort = "abort";
9400 -
9401 - // Install callbacks on deferreds
9402 - completeDeferred.add( s.complete );
9403 - jqXHR.done( s.success );
9404 - jqXHR.fail( s.error );
9405 -
9406 - // Get transport
9407 - transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
9408 -
9409 - // If no transport, we auto-abort
9410 - if ( !transport ) {
9411 - done( -1, "No Transport" );
9412 - } else {
9413 - jqXHR.readyState = 1;
9414 -
9415 - // Send global event
9416 - if ( fireGlobals ) {
9417 - globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
9418 - }
9419 -
9420 - // If request was aborted inside ajaxSend, stop there
9421 - if ( completed ) {
9422 - return jqXHR;
9423 - }
9424 -
9425 - // Timeout
9426 - if ( s.async && s.timeout > 0 ) {
9427 - timeoutTimer = window.setTimeout( function() {
9428 - jqXHR.abort( "timeout" );
9429 - }, s.timeout );
9430 - }
9431 -
9432 - try {
9433 - completed = false;
9434 - transport.send( requestHeaders, done );
9435 - } catch ( e ) {
9436 -
9437 - // Rethrow post-completion exceptions
9438 - if ( completed ) {
9439 - throw e;
9440 - }
9441 -
9442 - // Propagate others as results
9443 - done( -1, e );
9444 - }
9445 - }
9446 -
9447 - // Callback for when everything is done
9448 - function done( status, nativeStatusText, responses, headers ) {
9449 - var isSuccess, success, error, response, modified,
9450 - statusText = nativeStatusText;
9451 -
9452 - // Ignore repeat invocations
9453 - if ( completed ) {
9454 - return;
9455 - }
9456 -
9457 - completed = true;
9458 -
9459 - // Clear timeout if it exists
9460 - if ( timeoutTimer ) {
9461 - window.clearTimeout( timeoutTimer );
9462 - }
9463 -
9464 - // Dereference transport for early garbage collection
9465 - // (no matter how long the jqXHR object will be used)
9466 - transport = undefined;
9467 -
9468 - // Cache response headers
9469 - responseHeadersString = headers || "";
9470 -
9471 - // Set readyState
9472 - jqXHR.readyState = status > 0 ? 4 : 0;
9473 -
9474 - // Determine if successful
9475 - isSuccess = status >= 200 && status < 300 || status === 304;
9476 -
9477 - // Get response data
9478 - if ( responses ) {
9479 - response = ajaxHandleResponses( s, jqXHR, responses );
9480 - }
9481 -
9482 - // Convert no matter what (that way responseXXX fields are always set)
9483 - response = ajaxConvert( s, response, jqXHR, isSuccess );
9484 -
9485 - // If successful, handle type chaining
9486 - if ( isSuccess ) {
9487 -
9488 - // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
9489 - if ( s.ifModified ) {
9490 - modified = jqXHR.getResponseHeader( "Last-Modified" );
9491 - if ( modified ) {
9492 - jQuery.lastModified[ cacheURL ] = modified;
9493 - }
9494 - modified = jqXHR.getResponseHeader( "etag" );
9495 - if ( modified ) {
9496 - jQuery.etag[ cacheURL ] = modified;
9497 - }
9498 - }
9499 -
9500 - // if no content
9501 - if ( status === 204 || s.type === "HEAD" ) {
9502 - statusText = "nocontent";
9503 -
9504 - // if not modified
9505 - } else if ( status === 304 ) {
9506 - statusText = "notmodified";
9507 -
9508 - // If we have data, let's convert it
9509 - } else {
9510 - statusText = response.state;
9511 - success = response.data;
9512 - error = response.error;
9513 - isSuccess = !error;
9514 - }
9515 - } else {
9516 -
9517 - // Extract error from statusText and normalize for non-aborts
9518 - error = statusText;
9519 - if ( status || !statusText ) {
9520 - statusText = "error";
9521 - if ( status < 0 ) {
9522 - status = 0;
9523 - }
9524 - }
9525 - }
9526 -
9527 - // Set data for the fake xhr object
9528 - jqXHR.status = status;
9529 - jqXHR.statusText = ( nativeStatusText || statusText ) + "";
9530 -
9531 - // Success/Error
9532 - if ( isSuccess ) {
9533 - deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
9534 - } else {
9535 - deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
9536 - }
9537 -
9538 - // Status-dependent callbacks
9539 - jqXHR.statusCode( statusCode );
9540 - statusCode = undefined;
9541 -
9542 - if ( fireGlobals ) {
9543 - globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",
9544 - [ jqXHR, s, isSuccess ? success : error ] );
9545 - }
9546 -
9547 - // Complete
9548 - completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
9549 -
9550 - if ( fireGlobals ) {
9551 - globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
9552 -
9553 - // Handle the global AJAX counter
9554 - if ( !( --jQuery.active ) ) {
9555 - jQuery.event.trigger( "ajaxStop" );
9556 - }
9557 - }
9558 - }
9559 -
9560 - return jqXHR;
9561 - },
9562 -
9563 - getJSON: function( url, data, callback ) {
9564 - return jQuery.get( url, data, callback, "json" );
9565 - },
9566 -
9567 - getScript: function( url, callback ) {
9568 - return jQuery.get( url, undefined, callback, "script" );
9569 - }
9570 - } );
9571 -
9572 - jQuery.each( [ "get", "post" ], function( i, method ) {
9573 - jQuery[ method ] = function( url, data, callback, type ) {
9574 -
9575 - // Shift arguments if data argument was omitted
9576 - if ( isFunction( data ) ) {
9577 - type = type || callback;
9578 - callback = data;
9579 - data = undefined;
9580 - }
9581 -
9582 - // The url can be an options object (which then must have .url)
9583 - return jQuery.ajax( jQuery.extend( {
9584 - url: url,
9585 - type: method,
9586 - dataType: type,
9587 - data: data,
9588 - success: callback
9589 - }, jQuery.isPlainObject( url ) && url ) );
9590 - };
9591 - } );
9592 -
9593 -
9594 - jQuery._evalUrl = function( url, options ) {
9595 - return jQuery.ajax( {
9596 - url: url,
9597 -
9598 - // Make this explicit, since user can override this through ajaxSetup (#11264)
9599 - type: "GET",
9600 - dataType: "script",
9601 - cache: true,
9602 - async: false,
9603 - global: false,
9604 -
9605 - // Only evaluate the response if it is successful (gh-4126)
9606 - // dataFilter is not invoked for failure responses, so using it instead
9607 - // of the default converter is kludgy but it works.
9608 - converters: {
9609 - "text script": function() {}
9610 - },
9611 - dataFilter: function( response ) {
9612 - jQuery.globalEval( response, options );
9613 - }
9614 - } );
9615 - };
9616 -
9617 -
9618 - jQuery.fn.extend( {
9619 - wrapAll: function( html ) {
9620 - var wrap;
9621 -
9622 - if ( this[ 0 ] ) {
9623 - if ( isFunction( html ) ) {
9624 - html = html.call( this[ 0 ] );
9625 - }
9626 -
9627 - // The elements to wrap the target around
9628 - wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );
9629 -
9630 - if ( this[ 0 ].parentNode ) {
9631 - wrap.insertBefore( this[ 0 ] );
9632 - }
9633 -
9634 - wrap.map( function() {
9635 - var elem = this;
9636 -
9637 - while ( elem.firstElementChild ) {
9638 - elem = elem.firstElementChild;
9639 - }
9640 -
9641 - return elem;
9642 - } ).append( this );
9643 - }
9644 -
9645 - return this;
9646 - },
9647 -
9648 - wrapInner: function( html ) {
9649 - if ( isFunction( html ) ) {
9650 - return this.each( function( i ) {
9651 - jQuery( this ).wrapInner( html.call( this, i ) );
9652 - } );
9653 - }
9654 -
9655 - return this.each( function() {
9656 - var self = jQuery( this ),
9657 - contents = self.contents();
9658 -
9659 - if ( contents.length ) {
9660 - contents.wrapAll( html );
9661 -
9662 - } else {
9663 - self.append( html );
9664 - }
9665 - } );
9666 - },
9667 -
9668 - wrap: function( html ) {
9669 - var htmlIsFunction = isFunction( html );
9670 -
9671 - return this.each( function( i ) {
9672 - jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );
9673 - } );
9674 - },
9675 -
9676 - unwrap: function( selector ) {
9677 - this.parent( selector ).not( "body" ).each( function() {
9678 - jQuery( this ).replaceWith( this.childNodes );
9679 - } );
9680 - return this;
9681 - }
9682 - } );
9683 -
9684 -
9685 - jQuery.expr.pseudos.hidden = function( elem ) {
9686 - return !jQuery.expr.pseudos.visible( elem );
9687 - };
9688 - jQuery.expr.pseudos.visible = function( elem ) {
9689 - return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );
9690 - };
9691 -
9692 -
9693 -
9694 -
9695 - jQuery.ajaxSettings.xhr = function() {
9696 - try {
9697 - return new window.XMLHttpRequest();
9698 - } catch ( e ) {}
9699 - };
9700 -
9701 - var xhrSuccessStatus = {
9702 -
9703 - // File protocol always yields status code 0, assume 200
9704 - 0: 200,
9705 -
9706 - // Support: IE <=9 only
9707 - // #1450: sometimes IE returns 1223 when it should be 204
9708 - 1223: 204
9709 - },
9710 - xhrSupported = jQuery.ajaxSettings.xhr();
9711 -
9712 - support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );
9713 - support.ajax = xhrSupported = !!xhrSupported;
9714 -
9715 - jQuery.ajaxTransport( function( options ) {
9716 - var callback, errorCallback;
9717 -
9718 - // Cross domain only allowed if supported through XMLHttpRequest
9719 - if ( support.cors || xhrSupported && !options.crossDomain ) {
9720 - return {
9721 - send: function( headers, complete ) {
9722 - var i,
9723 - xhr = options.xhr();
9724 -
9725 - xhr.open(
9726 - options.type,
9727 - options.url,
9728 - options.async,
9729 - options.username,
9730 - options.password
9731 - );
9732 -
9733 - // Apply custom fields if provided
9734 - if ( options.xhrFields ) {
9735 - for ( i in options.xhrFields ) {
9736 - xhr[ i ] = options.xhrFields[ i ];
9737 - }
9738 - }
9739 -
9740 - // Override mime type if needed
9741 - if ( options.mimeType && xhr.overrideMimeType ) {
9742 - xhr.overrideMimeType( options.mimeType );
9743 - }
9744 -
9745 - // X-Requested-With header
9746 - // For cross-domain requests, seeing as conditions for a preflight are
9747 - // akin to a jigsaw puzzle, we simply never set it to be sure.
9748 - // (it can always be set on a per-request basis or even using ajaxSetup)
9749 - // For same-domain requests, won't change header if already provided.
9750 - if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) {
9751 - headers[ "X-Requested-With" ] = "XMLHttpRequest";
9752 - }
9753 -
9754 - // Set headers
9755 - for ( i in headers ) {
9756 - xhr.setRequestHeader( i, headers[ i ] );
9757 - }
9758 -
9759 - // Callback
9760 - callback = function( type ) {
9761 - return function() {
9762 - if ( callback ) {
9763 - callback = errorCallback = xhr.onload =
9764 - xhr.onerror = xhr.onabort = xhr.ontimeout =
9765 - xhr.onreadystatechange = null;
9766 -
9767 - if ( type === "abort" ) {
9768 - xhr.abort();
9769 - } else if ( type === "error" ) {
9770 -
9771 - // Support: IE <=9 only
9772 - // On a manual native abort, IE9 throws
9773 - // errors on any property access that is not readyState
9774 - if ( typeof xhr.status !== "number" ) {
9775 - complete( 0, "error" );
9776 - } else {
9777 - complete(
9778 -
9779 - // File: protocol always yields status 0; see #8605, #14207
9780 - xhr.status,
9781 - xhr.statusText
9782 - );
9783 - }
9784 - } else {
9785 - complete(
9786 - xhrSuccessStatus[ xhr.status ] || xhr.status,
9787 - xhr.statusText,
9788 -
9789 - // Support: IE <=9 only
9790 - // IE9 has no XHR2 but throws on binary (trac-11426)
9791 - // For XHR2 non-text, let the caller handle it (gh-2498)
9792 - ( xhr.responseType || "text" ) !== "text" ||
9793 - typeof xhr.responseText !== "string" ?
9794 - { binary: xhr.response } :
9795 - { text: xhr.responseText },
9796 - xhr.getAllResponseHeaders()
9797 - );
9798 - }
9799 - }
9800 - };
9801 - };
9802 -
9803 - // Listen to events
9804 - xhr.onload = callback();
9805 - errorCallback = xhr.onerror = xhr.ontimeout = callback( "error" );
9806 -
9807 - // Support: IE 9 only
9808 - // Use onreadystatechange to replace onabort
9809 - // to handle uncaught aborts
9810 - if ( xhr.onabort !== undefined ) {
9811 - xhr.onabort = errorCallback;
9812 - } else {
9813 - xhr.onreadystatechange = function() {
9814 -
9815 - // Check readyState before timeout as it changes
9816 - if ( xhr.readyState === 4 ) {
9817 -
9818 - // Allow onerror to be called first,
9819 - // but that will not handle a native abort
9820 - // Also, save errorCallback to a variable
9821 - // as xhr.onerror cannot be accessed
9822 - window.setTimeout( function() {
9823 - if ( callback ) {
9824 - errorCallback();
9825 - }
9826 - } );
9827 - }
9828 - };
9829 - }
9830 -
9831 - // Create the abort callback
9832 - callback = callback( "abort" );
9833 -
9834 - try {
9835 -
9836 - // Do send the request (this may raise an exception)
9837 - xhr.send( options.hasContent && options.data || null );
9838 - } catch ( e ) {
9839 -
9840 - // #14683: Only rethrow if this hasn't been notified as an error yet
9841 - if ( callback ) {
9842 - throw e;
9843 - }
9844 - }
9845 - },
9846 -
9847 - abort: function() {
9848 - if ( callback ) {
9849 - callback();
9850 - }
9851 - }
9852 - };
9853 - }
9854 - } );
9855 -
9856 -
9857 -
9858 -
9859 - // Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)
9860 - jQuery.ajaxPrefilter( function( s ) {
9861 - if ( s.crossDomain ) {
9862 - s.contents.script = false;
9863 - }
9864 - } );
9865 -
9866 - // Install script dataType
9867 - jQuery.ajaxSetup( {
9868 - accepts: {
9869 - script: "text/javascript, application/javascript, " +
9870 - "application/ecmascript, application/x-ecmascript"
9871 - },
9872 - contents: {
9873 - script: /\b(?:java|ecma)script\b/
9874 - },
9875 - converters: {
9876 - "text script": function( text ) {
9877 - jQuery.globalEval( text );
9878 - return text;
9879 - }
9880 - }
9881 - } );
9882 -
9883 - // Handle cache's special case and crossDomain
9884 - jQuery.ajaxPrefilter( "script", function( s ) {
9885 - if ( s.cache === undefined ) {
9886 - s.cache = false;
9887 - }
9888 - if ( s.crossDomain ) {
9889 - s.type = "GET";
9890 - }
9891 - } );
9892 -
9893 - // Bind script tag hack transport
9894 - jQuery.ajaxTransport( "script", function( s ) {
9895 -
9896 - // This transport only deals with cross domain or forced-by-attrs requests
9897 - if ( s.crossDomain || s.scriptAttrs ) {
9898 - var script, callback;
9899 - return {
9900 - send: function( _, complete ) {
9901 - script = jQuery( "<script>" )
9902 - .attr( s.scriptAttrs || {} )
9903 - .prop( { charset: s.scriptCharset, src: s.url } )
9904 - .on( "load error", callback = function( evt ) {
9905 - script.remove();
9906 - callback = null;
9907 - if ( evt ) {
9908 - complete( evt.type === "error" ? 404 : 200, evt.type );
9909 - }
9910 - } );
9911 -
9912 - // Use native DOM manipulation to avoid our domManip AJAX trickery
9913 - document.head.appendChild( script[ 0 ] );
9914 - },
9915 - abort: function() {
9916 - if ( callback ) {
9917 - callback();
9918 - }
9919 - }
9920 - };
9921 - }
9922 - } );
9923 -
9924 -
9925 -
9926 -
9927 - var oldCallbacks = [],
9928 - rjsonp = /(=)\?(?=&|$)|\?\?/;
9929 -
9930 - // Default jsonp settings
9931 - jQuery.ajaxSetup( {
9932 - jsonp: "callback",
9933 - jsonpCallback: function() {
9934 - var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) );
9935 - this[ callback ] = true;
9936 - return callback;
9937 - }
9938 - } );
9939 -
9940 - // Detect, normalize options and install callbacks for jsonp requests
9941 - jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
9942 -
9943 - var callbackName, overwritten, responseContainer,
9944 - jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
9945 - "url" :
9946 - typeof s.data === "string" &&
9947 - ( s.contentType || "" )
9948 - .indexOf( "application/x-www-form-urlencoded" ) === 0 &&
9949 - rjsonp.test( s.data ) && "data"
9950 - );
9951 -
9952 - // Handle iff the expected data type is "jsonp" or we have a parameter to set
9953 - if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {
9954 -
9955 - // Get callback name, remembering preexisting value associated with it
9956 - callbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ?
9957 - s.jsonpCallback() :
9958 - s.jsonpCallback;
9959 -
9960 - // Insert callback into url or form data
9961 - if ( jsonProp ) {
9962 - s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );
9963 - } else if ( s.jsonp !== false ) {
9964 - s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
9965 - }
9966 -
9967 - // Use data converter to retrieve json after script execution
9968 - s.converters[ "script json" ] = function() {
9969 - if ( !responseContainer ) {
9970 - jQuery.error( callbackName + " was not called" );
9971 - }
9972 - return responseContainer[ 0 ];
9973 - };
9974 -
9975 - // Force json dataType
9976 - s.dataTypes[ 0 ] = "json";
9977 -
9978 - // Install callback
9979 - overwritten = window[ callbackName ];
9980 - window[ callbackName ] = function() {
9981 - responseContainer = arguments;
9982 - };
9983 -
9984 - // Clean-up function (fires after converters)
9985 - jqXHR.always( function() {
9986 -
9987 - // If previous value didn't exist - remove it
9988 - if ( overwritten === undefined ) {
9989 - jQuery( window ).removeProp( callbackName );
9990 -
9991 - // Otherwise restore preexisting value
9992 - } else {
9993 - window[ callbackName ] = overwritten;
9994 - }
9995 -
9996 - // Save back as free
9997 - if ( s[ callbackName ] ) {
9998 -
9999 - // Make sure that re-using the options doesn't screw things around
10000 - s.jsonpCallback = originalSettings.jsonpCallback;
10001 -
10002 - // Save the callback name for future use
10003 - oldCallbacks.push( callbackName );
10004 - }
10005 -
10006 - // Call if it was a function and we have a response
10007 - if ( responseContainer && isFunction( overwritten ) ) {
10008 - overwritten( responseContainer[ 0 ] );
10009 - }
10010 -
10011 - responseContainer = overwritten = undefined;
10012 - } );
10013 -
10014 - // Delegate to script
10015 - return "script";
10016 - }
10017 - } );
10018 -
10019 -
10020 -
10021 -
10022 - // Support: Safari 8 only
10023 - // In Safari 8 documents created via document.implementation.createHTMLDocument
10024 - // collapse sibling forms: the second one becomes a child of the first one.
10025 - // Because of that, this security measure has to be disabled in Safari 8.
10026 - // https://bugs.webkit.org/show_bug.cgi?id=137337
10027 - support.createHTMLDocument = ( function() {
10028 - var body = document.implementation.createHTMLDocument( "" ).body;
10029 - body.innerHTML = "<form></form><form></form>";
10030 - return body.childNodes.length === 2;
10031 - } )();
10032 -
10033 -
10034 - // Argument "data" should be string of html
10035 - // context (optional): If specified, the fragment will be created in this context,
10036 - // defaults to document
10037 - // keepScripts (optional): If true, will include scripts passed in the html string
10038 - jQuery.parseHTML = function( data, context, keepScripts ) {
10039 - if ( typeof data !== "string" ) {
10040 - return [];
10041 - }
10042 - if ( typeof context === "boolean" ) {
10043 - keepScripts = context;
10044 - context = false;
10045 - }
10046 -
10047 - var base, parsed, scripts;
10048 -
10049 - if ( !context ) {
10050 -
10051 - // Stop scripts or inline event handlers from being executed immediately
10052 - // by using document.implementation
10053 - if ( support.createHTMLDocument ) {
10054 - context = document.implementation.createHTMLDocument( "" );
10055 -
10056 - // Set the base href for the created document
10057 - // so any parsed elements with URLs
10058 - // are based on the document's URL (gh-2965)
10059 - base = context.createElement( "base" );
10060 - base.href = document.location.href;
10061 - context.head.appendChild( base );
10062 - } else {
10063 - context = document;
10064 - }
10065 - }
10066 -
10067 - parsed = rsingleTag.exec( data );
10068 - scripts = !keepScripts && [];
10069 -
10070 - // Single tag
10071 - if ( parsed ) {
10072 - return [ context.createElement( parsed[ 1 ] ) ];
10073 - }
10074 -
10075 - parsed = buildFragment( [ data ], context, scripts );
10076 -
10077 - if ( scripts && scripts.length ) {
10078 - jQuery( scripts ).remove();
10079 - }
10080 -
10081 - return jQuery.merge( [], parsed.childNodes );
10082 - };
10083 -
10084 -
10085 - /**
10086 - * Load a url into a page
10087 - */
10088 - jQuery.fn.load = function( url, params, callback ) {
10089 - var selector, type, response,
10090 - self = this,
10091 - off = url.indexOf( " " );
10092 -
10093 - if ( off > -1 ) {
10094 - selector = stripAndCollapse( url.slice( off ) );
10095 - url = url.slice( 0, off );
10096 - }
10097 -
10098 - // If it's a function
10099 - if ( isFunction( params ) ) {
10100 -
10101 - // We assume that it's the callback
10102 - callback = params;
10103 - params = undefined;
10104 -
10105 - // Otherwise, build a param string
10106 - } else if ( params && typeof params === "object" ) {
10107 - type = "POST";
10108 - }
10109 -
10110 - // If we have elements to modify, make the request
10111 - if ( self.length > 0 ) {
10112 - jQuery.ajax( {
10113 - url: url,
10114 -
10115 - // If "type" variable is undefined, then "GET" method will be used.
10116 - // Make value of this field explicit since
10117 - // user can override it through ajaxSetup method
10118 - type: type || "GET",
10119 - dataType: "html",
10120 - data: params
10121 - } ).done( function( responseText ) {
10122 -
10123 - // Save response for use in complete callback
10124 - response = arguments;
10125 -
10126 - self.html( selector ?
10127 -
10128 - // If a selector was specified, locate the right elements in a dummy div
10129 - // Exclude scripts to avoid IE 'Permission Denied' errors
10130 - jQuery( "<div>" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :
10131 -
10132 - // Otherwise use the full result
10133 - responseText );
10134 -
10135 - // If the request succeeds, this function gets "data", "status", "jqXHR"
10136 - // but they are ignored because response was set above.
10137 - // If it fails, this function gets "jqXHR", "status", "error"
10138 - } ).always( callback && function( jqXHR, status ) {
10139 - self.each( function() {
10140 - callback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );
10141 - } );
10142 - } );
10143 - }
10144 -
10145 - return this;
10146 - };
10147 -
10148 -
10149 -
10150 -
10151 - // Attach a bunch of functions for handling common AJAX events
10152 - jQuery.each( [
10153 - "ajaxStart",
10154 - "ajaxStop",
10155 - "ajaxComplete",
10156 - "ajaxError",
10157 - "ajaxSuccess",
10158 - "ajaxSend"
10159 - ], function( i, type ) {
10160 - jQuery.fn[ type ] = function( fn ) {
10161 - return this.on( type, fn );
10162 - };
10163 - } );
10164 -
10165 -
10166 -
10167 -
10168 - jQuery.expr.pseudos.animated = function( elem ) {
10169 - return jQuery.grep( jQuery.timers, function( fn ) {
10170 - return elem === fn.elem;
10171 - } ).length;
10172 - };
10173 -
10174 -
10175 -
10176 -
10177 - jQuery.offset = {
10178 - setOffset: function( elem, options, i ) {
10179 - var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,
10180 - position = jQuery.css( elem, "position" ),
10181 - curElem = jQuery( elem ),
10182 - props = {};
10183 -
10184 - // Set position first, in-case top/left are set even on static elem
10185 - if ( position === "static" ) {
10186 - elem.style.position = "relative";
10187 - }
10188 -
10189 - curOffset = curElem.offset();
10190 - curCSSTop = jQuery.css( elem, "top" );
10191 - curCSSLeft = jQuery.css( elem, "left" );
10192 - calculatePosition = ( position === "absolute" || position === "fixed" ) &&
10193 - ( curCSSTop + curCSSLeft ).indexOf( "auto" ) > -1;
10194 -
10195 - // Need to be able to calculate position if either
10196 - // top or left is auto and position is either absolute or fixed
10197 - if ( calculatePosition ) {
10198 - curPosition = curElem.position();
10199 - curTop = curPosition.top;
10200 - curLeft = curPosition.left;
10201 -
10202 - } else {
10203 - curTop = parseFloat( curCSSTop ) || 0;
10204 - curLeft = parseFloat( curCSSLeft ) || 0;
10205 - }
10206 -
10207 - if ( isFunction( options ) ) {
10208 -
10209 - // Use jQuery.extend here to allow modification of coordinates argument (gh-1848)
10210 - options = options.call( elem, i, jQuery.extend( {}, curOffset ) );
10211 - }
10212 -
10213 - if ( options.top != null ) {
10214 - props.top = ( options.top - curOffset.top ) + curTop;
10215 - }
10216 - if ( options.left != null ) {
10217 - props.left = ( options.left - curOffset.left ) + curLeft;
10218 - }
10219 -
10220 - if ( "using" in options ) {
10221 - options.using.call( elem, props );
10222 -
10223 - } else {
10224 - curElem.css( props );
10225 - }
10226 - }
10227 - };
10228 -
10229 - jQuery.fn.extend( {
10230 -
10231 - // offset() relates an element's border box to the document origin
10232 - offset: function( options ) {
10233 -
10234 - // Preserve chaining for setter
10235 - if ( arguments.length ) {
10236 - return options === undefined ?
10237 - this :
10238 - this.each( function( i ) {
10239 - jQuery.offset.setOffset( this, options, i );
10240 - } );
10241 - }
10242 -
10243 - var rect, win,
10244 - elem = this[ 0 ];
10245 -
10246 - if ( !elem ) {
10247 - return;
10248 - }
10249 -
10250 - // Return zeros for disconnected and hidden (display: none) elements (gh-2310)
10251 - // Support: IE <=11 only
10252 - // Running getBoundingClientRect on a
10253 - // disconnected node in IE throws an error
10254 - if ( !elem.getClientRects().length ) {
10255 - return { top: 0, left: 0 };
10256 - }
10257 -
10258 - // Get document-relative position by adding viewport scroll to viewport-relative gBCR
10259 - rect = elem.getBoundingClientRect();
10260 - win = elem.ownerDocument.defaultView;
10261 - return {
10262 - top: rect.top + win.pageYOffset,
10263 - left: rect.left + win.pageXOffset
10264 - };
10265 - },
10266 -
10267 - // position() relates an element's margin box to its offset parent's padding box
10268 - // This corresponds to the behavior of CSS absolute positioning
10269 - position: function() {
10270 - if ( !this[ 0 ] ) {
10271 - return;
10272 - }
10273 -
10274 - var offsetParent, offset, doc,
10275 - elem = this[ 0 ],
10276 - parentOffset = { top: 0, left: 0 };
10277 -
10278 - // position:fixed elements are offset from the viewport, which itself always has zero offset
10279 - if ( jQuery.css( elem, "position" ) === "fixed" ) {
10280 -
10281 - // Assume position:fixed implies availability of getBoundingClientRect
10282 - offset = elem.getBoundingClientRect();
10283 -
10284 - } else {
10285 - offset = this.offset();
10286 -
10287 - // Account for the *real* offset parent, which can be the document or its root element
10288 - // when a statically positioned element is identified
10289 - doc = elem.ownerDocument;
10290 - offsetParent = elem.offsetParent || doc.documentElement;
10291 - while ( offsetParent &&
10292 - ( offsetParent === doc.body || offsetParent === doc.documentElement ) &&
10293 - jQuery.css( offsetParent, "position" ) === "static" ) {
10294 -
10295 - offsetParent = offsetParent.parentNode;
10296 - }
10297 - if ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) {
10298 -
10299 - // Incorporate borders into its offset, since they are outside its content origin
10300 - parentOffset = jQuery( offsetParent ).offset();
10301 - parentOffset.top += jQuery.css( offsetParent, "borderTopWidth", true );
10302 - parentOffset.left += jQuery.css( offsetParent, "borderLeftWidth", true );
10303 - }
10304 - }
10305 -
10306 - // Subtract parent offsets and element margins
10307 - return {
10308 - top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),
10309 - left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true )
10310 - };
10311 - },
10312 -
10313 - // This method will return documentElement in the following cases:
10314 - // 1) For the element inside the iframe without offsetParent, this method will return
10315 - // documentElement of the parent window
10316 - // 2) For the hidden or detached element
10317 - // 3) For body or html element, i.e. in case of the html node - it will return itself
10318 - //
10319 - // but those exceptions were never presented as a real life use-cases
10320 - // and might be considered as more preferable results.
10321 - //
10322 - // This logic, however, is not guaranteed and can change at any point in the future
10323 - offsetParent: function() {
10324 - return this.map( function() {
10325 - var offsetParent = this.offsetParent;
10326 -
10327 - while ( offsetParent && jQuery.css( offsetParent, "position" ) === "static" ) {
10328 - offsetParent = offsetParent.offsetParent;
10329 - }
10330 -
10331 - return offsetParent || documentElement;
10332 - } );
10333 - }
10334 - } );
10335 -
10336 - // Create scrollLeft and scrollTop methods
10337 - jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) {
10338 - var top = "pageYOffset" === prop;
10339 -
10340 - jQuery.fn[ method ] = function( val ) {
10341 - return access( this, function( elem, method, val ) {
10342 -
10343 - // Coalesce documents and windows
10344 - var win;
10345 - if ( isWindow( elem ) ) {
10346 - win = elem;
10347 - } else if ( elem.nodeType === 9 ) {
10348 - win = elem.defaultView;
10349 - }
10350 -
10351 - if ( val === undefined ) {
10352 - return win ? win[ prop ] : elem[ method ];
10353 - }
10354 -
10355 - if ( win ) {
10356 - win.scrollTo(
10357 - !top ? val : win.pageXOffset,
10358 - top ? val : win.pageYOffset
10359 - );
10360 -
10361 - } else {
10362 - elem[ method ] = val;
10363 - }
10364 - }, method, val, arguments.length );
10365 - };
10366 - } );
10367 -
10368 - // Support: Safari <=7 - 9.1, Chrome <=37 - 49
10369 - // Add the top/left cssHooks using jQuery.fn.position
10370 - // Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
10371 - // Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347
10372 - // getComputedStyle returns percent when specified for top/left/bottom/right;
10373 - // rather than make the css module depend on the offset module, just check for it here
10374 - jQuery.each( [ "top", "left" ], function( i, prop ) {
10375 - jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,
10376 - function( elem, computed ) {
10377 - if ( computed ) {
10378 - computed = curCSS( elem, prop );
10379 -
10380 - // If curCSS returns percentage, fallback to offset
10381 - return rnumnonpx.test( computed ) ?
10382 - jQuery( elem ).position()[ prop ] + "px" :
10383 - computed;
10384 - }
10385 - }
10386 - );
10387 - } );
10388 -
10389 -
10390 - // Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
10391 - jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
10392 - jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name },
10393 - function( defaultExtra, funcName ) {
10394 -
10395 - // Margin is only for outerHeight, outerWidth
10396 - jQuery.fn[ funcName ] = function( margin, value ) {
10397 - var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
10398 - extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
10399 -
10400 - return access( this, function( elem, type, value ) {
10401 - var doc;
10402 -
10403 - if ( isWindow( elem ) ) {
10404 -
10405 - // $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)
10406 - return funcName.indexOf( "outer" ) === 0 ?
10407 - elem[ "inner" + name ] :
10408 - elem.document.documentElement[ "client" + name ];
10409 - }
10410 -
10411 - // Get document width or height
10412 - if ( elem.nodeType === 9 ) {
10413 - doc = elem.documentElement;
10414 -
10415 - // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],
10416 - // whichever is greatest
10417 - return Math.max(
10418 - elem.body[ "scroll" + name ], doc[ "scroll" + name ],
10419 - elem.body[ "offset" + name ], doc[ "offset" + name ],
10420 - doc[ "client" + name ]
10421 - );
10422 - }
10423 -
10424 - return value === undefined ?
10425 -
10426 - // Get width or height on the element, requesting but not forcing parseFloat
10427 - jQuery.css( elem, type, extra ) :
10428 -
10429 - // Set width or height on the element
10430 - jQuery.style( elem, type, value, extra );
10431 - }, type, chainable ? margin : undefined, chainable );
10432 - };
10433 - } );
10434 - } );
10435 -
10436 -
10437 - jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " +
10438 - "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
10439 - "change select submit keydown keypress keyup contextmenu" ).split( " " ),
10440 - function( i, name ) {
10441 -
10442 - // Handle event binding
10443 - jQuery.fn[ name ] = function( data, fn ) {
10444 - return arguments.length > 0 ?
10445 - this.on( name, null, data, fn ) :
10446 - this.trigger( name );
10447 - };
10448 - } );
10449 -
10450 - jQuery.fn.extend( {
10451 - hover: function( fnOver, fnOut ) {
10452 - return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
10453 - }
10454 - } );
10455 -
10456 -
10457 -
10458 -
10459 - jQuery.fn.extend( {
10460 -
10461 - bind: function( types, data, fn ) {
10462 - return this.on( types, null, data, fn );
10463 - },
10464 - unbind: function( types, fn ) {
10465 - return this.off( types, null, fn );
10466 - },
10467 -
10468 - delegate: function( selector, types, data, fn ) {
10469 - return this.on( types, selector, data, fn );
10470 - },
10471 - undelegate: function( selector, types, fn ) {
10472 -
10473 - // ( namespace ) or ( selector, types [, fn] )
10474 - return arguments.length === 1 ?
10475 - this.off( selector, "**" ) :
10476 - this.off( types, selector || "**", fn );
10477 - }
10478 - } );
10479 -
10480 - // Bind a function to a context, optionally partially applying any
10481 - // arguments.
10482 - // jQuery.proxy is deprecated to promote standards (specifically Function#bind)
10483 - // However, it is not slated for removal any time soon
10484 - jQuery.proxy = function( fn, context ) {
10485 - var tmp, args, proxy;
10486 -
10487 - if ( typeof context === "string" ) {
10488 - tmp = fn[ context ];
10489 - context = fn;
10490 - fn = tmp;
10491 - }
10492 -
10493 - // Quick check to determine if target is callable, in the spec
10494 - // this throws a TypeError, but we will just return undefined.
10495 - if ( !isFunction( fn ) ) {
10496 - return undefined;
10497 - }
10498 -
10499 - // Simulated bind
10500 - args = slice.call( arguments, 2 );
10501 - proxy = function() {
10502 - return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
10503 - };
10504 -
10505 - // Set the guid of unique handler to the same of original handler, so it can be removed
10506 - proxy.guid = fn.guid = fn.guid || jQuery.guid++;
10507 -
10508 - return proxy;
10509 - };
10510 -
10511 - jQuery.holdReady = function( hold ) {
10512 - if ( hold ) {
10513 - jQuery.readyWait++;
10514 - } else {
10515 - jQuery.ready( true );
10516 - }
10517 - };
10518 - jQuery.isArray = Array.isArray;
10519 - jQuery.parseJSON = JSON.parse;
10520 - jQuery.nodeName = nodeName;
10521 - jQuery.isFunction = isFunction;
10522 - jQuery.isWindow = isWindow;
10523 - jQuery.camelCase = camelCase;
10524 - jQuery.type = toType;
10525 -
10526 - jQuery.now = Date.now;
10527 -
10528 - jQuery.isNumeric = function( obj ) {
10529 -
10530 - // As of jQuery 3.0, isNumeric is limited to
10531 - // strings and numbers (primitives or objects)
10532 - // that can be coerced to finite numbers (gh-2662)
10533 - var type = jQuery.type( obj );
10534 - return ( type === "number" || type === "string" ) &&
10535 -
10536 - // parseFloat NaNs numeric-cast false positives ("")
10537 - // ...but misinterprets leading-number strings, particularly hex literals ("0x...")
10538 - // subtraction forces infinities to NaN
10539 - !isNaN( obj - parseFloat( obj ) );
10540 - };
10541 -
10542 -
10543 -
10544 -
10545 - // Register as a named AMD module, since jQuery can be concatenated with other
10546 - // files that may use define, but not via a proper concatenation script that
10547 - // understands anonymous AMD modules. A named AMD is safest and most robust
10548 - // way to register. Lowercase jquery is used because AMD module names are
10549 - // derived from file names, and jQuery is normally delivered in a lowercase
10550 - // file name. Do this after creating the global so that if an AMD module wants
10551 - // to call noConflict to hide this version of jQuery, it will work.
10552 -
10553 - // Note that for maximum portability, libraries that are not jQuery should
10554 - // declare themselves as anonymous modules, and avoid setting a global if an
10555 - // AMD loader is present. jQuery is a special case. For more information, see
10556 - // https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon
10557 -
10558 - if ( typeof define === "function" && define.amd ) {
10559 - define( "jquery", [], function() {
10560 - return jQuery;
10561 - } );
10562 - }
10563 -
10564 -
10565 -
10566 -
10567 - var
10568 -
10569 - // Map over jQuery in case of overwrite
10570 - _jQuery = window.jQuery,
10571 -
10572 - // Map over the $ in case of overwrite
10573 - _$ = window.$;
10574 -
10575 - jQuery.noConflict = function( deep ) {
10576 - if ( window.$ === jQuery ) {
10577 - window.$ = _$;
10578 - }
10579 -
10580 - if ( deep && window.jQuery === jQuery ) {
10581 - window.jQuery = _jQuery;
10582 - }
10583 -
10584 - return jQuery;
10585 - };
10586 -
10587 - // Expose jQuery and $ identifiers, even in AMD
10588 - // (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
10589 - // and CommonJS for browser emulators (#13566)
10590 - if ( !noGlobal ) {
10591 - window.jQuery = window.$ = jQuery;
10592 - }
10593 -
10594 -
10595 -
10596 -
10597 - return jQuery;
10598 - } );
@@ -1,2 +0,0
1 - /*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */
2 - !function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}k.fn=k.prototype={jquery:f,constructor:k,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=k.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return k.each(this,e)},map:function(n){return this.pushStack(k.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},k.extend=k.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(k.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||k.isPlainObject(n)?n:{},i=!1,a[t]=k.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},k.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t){b(e,{nonce:t&&t.nonce})},each:function(e,t){var n,r=0;if(d(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(p,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(d(Object(e))?k.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(d(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g.apply([],a)},guid:1,support:y}),"function"==typeof Symbol&&(k.fn[Symbol.iterator]=t[Symbol.iterator]),k.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var h=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,k="sizzle"+1*new Date,m=n.document,S=0,r=0,p=ue(),x=ue(),N=ue(),A=ue(),D=function(e,t){return e===t&&(l=!0),0},j={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",$=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",F=new RegExp(M+"+","g"),B=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}: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},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="<a id='"+k+"'></a><select id='"+k+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?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},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!==C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!==C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&j.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(D),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.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+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,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(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===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]||se.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]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(F," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[S,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[S,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[k]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace(B,"$1"));return s[k]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!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,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.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"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[S,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[k]||(e[k]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===S&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[k]&&(v=Ce(v)),y&&!y[k]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[k]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(B,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace(B," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=N[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[k]?i.push(a):o.push(a);(a=N(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=S+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t===C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument===C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(S=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(S=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=k.split("").sort(D).join("")===k,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);k.find=h,k.expr=h.selectors,k.expr[":"]=k.expr.pseudos,k.uniqueSort=k.unique=h.uniqueSort,k.text=h.getText,k.isXMLDoc=h.isXML,k.contains=h.contains,k.escapeSelector=h.escape;var T=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&k(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},N=k.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var D=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1<i.call(n,e)!==r}):k.filter(n,e,r)}k.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?k.find.matchesSelector(r,e)?[r]:[]:k.find.matches(e,k.grep(t,function(e){return 1===e.nodeType}))},k.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(k(e).filter(function(){for(t=0;t<r;t++)if(k.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)k.find(e,i[t],n);return 1<r?k.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&N.test(e)?k(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(k.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&k(e);if(!N.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&k.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?k.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(k(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(k.uniqueSort(k.merge(this.get(),k(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),k.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return T(e,"parentNode")},parentsUntil:function(e,t,n){return T(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return T(e,"nextSibling")},prevAll:function(e){return T(e,"previousSibling")},nextUntil:function(e,t,n){return T(e,"nextSibling",n)},prevUntil:function(e,t,n){return T(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return"undefined"!=typeof e.contentDocument?e.contentDocument:(A(e,"template")&&(e=e.content||e),k.merge([],e.childNodes))}},function(r,i){k.fn[r]=function(e,t){var n=k.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=k.filter(t,n)),1<this.length&&(O[r]||k.uniqueSort(n),H.test(r)&&n.reverse()),this.pushStack(n)}});var R=/[^\x20\t\r\n\f]+/g;function M(e){return e}function I(e){throw e}function W(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}k.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},k.each(e.match(R)||[],function(e,t){n[t]=!0}),n):k.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){k.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return k.each(arguments,function(e,t){var n;while(-1<(n=k.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<k.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},k.extend({Deferred:function(e){var o=[["notify","progress",k.Callbacks("memory"),k.Callbacks("memory"),2],["resolve","done",k.Callbacks("once memory"),k.Callbacks("once memory"),0,"resolved"],["reject","fail",k.Callbacks("once memory"),k.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return k.Deferred(function(r){k.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,M,s),l(u,o,I,s)):(u++,t.call(e,l(u,o,M,s),l(u,o,I,s),l(u,o,M,o.notifyWith))):(a!==M&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){k.Deferred.exceptionHook&&k.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==I&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(k.Deferred.getStackHook&&(t.stackTrace=k.Deferred.getStackHook()),C.setTimeout(t))}}return k.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:M,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:M)),o[2][3].add(l(0,e,m(n)?n:I))}).promise()},promise:function(e){return null!=e?k.extend(e,a):a}},s={};return k.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=k.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(W(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)W(i[t],a(t),o.reject);return o.promise()}});var $=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;k.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&$.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},k.readyException=function(e){C.setTimeout(function(){throw e})};var F=k.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),k.ready()}k.fn.ready=function(e){return F.then(e)["catch"](function(e){k.readyException(e)}),this},k.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--k.readyWait:k.isReady)||(k.isReady=!0)!==e&&0<--k.readyWait||F.resolveWith(E,[k])}}),k.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(k.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var _=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)_(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(k(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},z=/^-ms-/,U=/-([a-z])/g;function X(e,t){return t.toUpperCase()}function V(e){return e.replace(z,"ms-").replace(U,X)}var G=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Y(){this.expando=k.expando+Y.uid++}Y.uid=1,Y.prototype={cache:function(e){var t=e[this.expando];return t||(t={},G(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[V(t)]=n;else for(r in t)i[V(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][V(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(V):(t=V(t))in r?[t]:t.match(R)||[]).length;while(n--)delete r[t[n]]}(void 0===t||k.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!k.isEmptyObject(t)}};var Q=new Y,J=new Y,K=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Z=/[A-Z]/g;function ee(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(Z,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:K.test(i)?JSON.parse(i):i)}catch(e){}J.set(e,t,n)}else n=void 0;return n}k.extend({hasData:function(e){return J.hasData(e)||Q.hasData(e)},data:function(e,t,n){return J.access(e,t,n)},removeData:function(e,t){J.remove(e,t)},_data:function(e,t,n){return Q.access(e,t,n)},_removeData:function(e,t){Q.remove(e,t)}}),k.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=J.get(o),1===o.nodeType&&!Q.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=V(r.slice(5)),ee(o,r,i[r]));Q.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){J.set(this,n)}):_(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=J.get(o,n))?t:void 0!==(t=ee(o,n))?t:void 0;this.each(function(){J.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){J.remove(this,e)})}}),k.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Q.get(e,t),n&&(!r||Array.isArray(n)?r=Q.access(e,t,k.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=k.queue(e,t),r=n.length,i=n.shift(),o=k._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){k.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Q.get(e,n)||Q.access(e,n,{empty:k.Callbacks("once memory").add(function(){Q.remove(e,[t+"queue",n])})})}}),k.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?k.queue(this[0],t):void 0===n?this:this.each(function(){var e=k.queue(this,t,n);k._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&k.dequeue(this,t)})},dequeue:function(e){return this.each(function(){k.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=k.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Q.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var te=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ne=new RegExp("^(?:([+-])=|)("+te+")([a-z%]*)$","i"),re=["Top","Right","Bottom","Left"],ie=E.documentElement,oe=function(e){return k.contains(e.ownerDocument,e)},ae={composed:!0};ie.getRootNode&&(oe=function(e){return k.contains(e.ownerDocument,e)||e.getRootNode(ae)===e.ownerDocument});var se=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&oe(e)&&"none"===k.css(e,"display")},ue=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];for(o in i=n.apply(e,r||[]),t)e.style[o]=a[o];return i};function le(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return k.css(e,t,"")},u=s(),l=n&&n[3]||(k.cssNumber[t]?"":"px"),c=e.nodeType&&(k.cssNumber[t]||"px"!==l&&+u)&&ne.exec(k.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)k.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,k.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ce={};function fe(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Q.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&se(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ce[s])||(o=a.body.appendChild(a.createElement(s)),u=k.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ce[s]=u)))):"none"!==n&&(l[c]="none",Q.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}k.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){se(this)?k(this).show():k(this).hide()})}});var pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Q.set(e[n],"globalEval",!t||Q.get(t[n],"globalEval"))}ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;var me,xe,be=/<|&#?\w+;/;function we(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))k.merge(p,o.nodeType?[o]:o);else if(be.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+k.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;k.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<k.inArray(o,r))i&&i.push(o);else if(l=oe(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}me=E.createDocumentFragment().appendChild(E.createElement("div")),(xe=E.createElement("input")).setAttribute("type","radio"),xe.setAttribute("checked","checked"),xe.setAttribute("name","t"),me.appendChild(xe),y.checkClone=me.cloneNode(!0).cloneNode(!0).lastChild.checked,me.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t<arguments.length;t++)u[t]=arguments[t];if(s.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,s)){a=k.event.handlers.call(this,s,l),t=0;while((i=a[t++])&&!s.isPropagationStopped()){s.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!s.isImmediatePropagationStopped())s.rnamespace&&!1!==o.namespace&&!s.rnamespace.test(o.namespace)||(s.handleObj=o,s.data=o.data,void 0!==(r=((k.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,u))&&!1===(s.result=r)&&(s.preventDefault(),s.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,s),s.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<k(i,this).index(l):k.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(k.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[k.expando]?e:new k.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click",ke),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Q.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},k.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},k.Event=function(e,t){if(!(this instanceof k.Event))return new k.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?ke:Se,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&k.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[k.expando]=!0},k.Event.prototype={constructor:k.Event,isDefaultPrevented:Se,isPropagationStopped:Se,isImmediatePropagationStopped:Se,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=ke,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=ke,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=ke,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},k.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&Te.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Ce.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},k.event.addProp),k.each({focus:"focusin",blur:"focusout"},function(e,t){k.event.special[e]={setup:function(){return De(this,e,Ne),!1},trigger:function(){return De(this,e),!0},delegateType:t}}),k.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){k.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||k.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),k.fn.extend({on:function(e,t,n,r){return Ae(this,e,t,n,r)},one:function(e,t,n,r){return Ae(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,k(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Se),this.each(function(){k.event.remove(this,e,n,t)})}});var je=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/<script|<style|<link/i,Le=/checked\s*(?:[^=]|=\s*.checked.)/i,He=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n<r;n++)k.event.add(t,i,l[i][n]);J.hasData(e)&&(s=J.access(e),u=k.extend({},s),J.set(t,u))}}function Ie(n,r,i,o){r=g.apply([],r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&Le.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),Ie(t,r,i,o)});if(f&&(t=(e=we(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=k.map(ve(e,"script"),Pe)).length;c<f;c++)u=e,c!==p&&(u=k.clone(u,!0,!0),s&&k.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,k.map(a,Re),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Q.access(u,"globalEval")&&k.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?k._evalUrl&&!u.noModule&&k._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")}):b(u.textContent.replace(He,""),u,l))}return n}function We(e,t,n){for(var r,i=t?k.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||k.cleanData(ve(r)),r.parentNode&&(n&&oe(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}k.extend({htmlPrefilter:function(e){return e.replace(je,"<$1></$2>")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Me(o[r],a[r]);else Me(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=k.event.special,o=0;void 0!==(n=e[o]);o++)if(G(n)){if(t=n[Q.expando]){if(t.events)for(r in t.events)i[r]?k.event.remove(n,r):k.removeEvent(n,r,t.handle);n[Q.expando]=void 0}n[J.expando]&&(n[J.expando]=void 0)}}}),k.fn.extend({detach:function(e){return We(this,e,!0)},remove:function(e){return We(this,e)},text:function(e){return _(this,function(e){return void 0===e?k.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Ie(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Oe(this,e).appendChild(e)})},prepend:function(){return Ie(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Oe(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(k.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return k.clone(this,e,t)})},html:function(e){return _(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!qe.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=k.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(k.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return Ie(this,arguments,function(e){var t=this.parentNode;k.inArray(this,n)<0&&(k.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),k.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){k.fn[e]=function(e){for(var t,n=[],r=k(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),k(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var $e=new RegExp("^("+te+")(?!px)[a-z%]+$","i"),Fe=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Be=new RegExp(re.join("|"),"i");function _e(e,t,n){var r,i,o,a,s=e.style;return(n=n||Fe(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||oe(e)||(a=k.style(e,t)),!y.pixelBoxStyles()&&$e.test(a)&&Be.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function ze(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(u){s.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",u.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",ie.appendChild(s).appendChild(u);var e=C.getComputedStyle(u);n="1%"!==e.top,a=12===t(e.marginLeft),u.style.right="60%",o=36===t(e.right),r=36===t(e.width),u.style.position="absolute",i=12===t(u.offsetWidth/3),ie.removeChild(s),u=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s=E.createElement("div"),u=E.createElement("div");u.style&&(u.style.backgroundClip="content-box",u.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===u.style.backgroundClip,k.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),a},scrollboxSize:function(){return e(),i}}))}();var Ue=["Webkit","Moz","ms"],Xe=E.createElement("div").style,Ve={};function Ge(e){var t=k.cssProps[e]||Ve[e];return t||(e in Xe?e:Ve[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Ue.length;while(n--)if((e=Ue[n]+t)in Xe)return e}(e)||e)}var Ye=/^(none|table(?!-c[ea]).+)/,Qe=/^--/,Je={position:"absolute",visibility:"hidden",display:"block"},Ke={letterSpacing:"0",fontWeight:"400"};function Ze(e,t,n){var r=ne.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function et(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=k.css(e,n+re[a],!0,i)),r?("content"===n&&(u-=k.css(e,"padding"+re[a],!0,i)),"margin"!==n&&(u-=k.css(e,"border"+re[a]+"Width",!0,i))):(u+=k.css(e,"padding"+re[a],!0,i),"padding"!==n?u+=k.css(e,"border"+re[a]+"Width",!0,i):s+=k.css(e,"border"+re[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function tt(e,t,n){var r=Fe(e),i=(!y.boxSizingReliable()||n)&&"border-box"===k.css(e,"boxSizing",!1,r),o=i,a=_e(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if($e.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||"auto"===a||!parseFloat(a)&&"inline"===k.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===k.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+et(e,t,n||(i?"border":"content"),o,r,a)+"px"}function nt(e,t,n,r,i){return new nt.prototype.init(e,t,n,r,i)}k.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=_e(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=V(t),u=Qe.test(t),l=e.style;if(u||(t=Ge(s)),a=k.cssHooks[t]||k.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=ne.exec(n))&&i[1]&&(n=le(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(k.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=V(t);return Qe.test(t)||(t=Ge(s)),(a=k.cssHooks[t]||k.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=_e(e,t,r)),"normal"===i&&t in Ke&&(i=Ke[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),k.each(["height","width"],function(e,u){k.cssHooks[u]={get:function(e,t,n){if(t)return!Ye.test(k.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?tt(e,u,n):ue(e,Je,function(){return tt(e,u,n)})},set:function(e,t,n){var r,i=Fe(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===k.css(e,"boxSizing",!1,i),s=n?et(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-et(e,u,"border",!1,i)-.5)),s&&(r=ne.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=k.css(e,u)),Ze(0,t,s)}}}),k.cssHooks.marginLeft=ze(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(_e(e,"marginLeft"))||e.getBoundingClientRect().left-ue(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),k.each({margin:"",padding:"",border:"Width"},function(i,o){k.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+re[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(k.cssHooks[i+o].set=Ze)}),k.fn.extend({css:function(e,t){return _(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Fe(e),i=t.length;a<i;a++)o[t[a]]=k.css(e,t[a],!1,r);return o}return void 0!==n?k.style(e,t,n):k.css(e,t)},e,t,1<arguments.length)}}),((k.Tween=nt).prototype={constructor:nt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||k.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(k.cssNumber[n]?"":"px")},cur:function(){var e=nt.propHooks[this.prop];return e&&e.get?e.get(this):nt.propHooks._default.get(this)},run:function(e){var t,n=nt.propHooks[this.prop];return this.options.duration?this.pos=t=k.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=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):nt.propHooks._default.set(this),this}}).init.prototype=nt.prototype,(nt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=k.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){k.fx.step[e.prop]?k.fx.step[e.prop](e):1!==e.elem.nodeType||!k.cssHooks[e.prop]&&null==e.elem.style[Ge(e.prop)]?e.elem[e.prop]=e.now:k.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=nt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},k.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},k.fx=nt.prototype.init,k.fx.step={};var rt,it,ot,at,st=/^(?:toggle|show|hide)$/,ut=/queueHooks$/;function lt(){it&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(lt):C.setTimeout(lt,k.fx.interval),k.fx.tick())}function ct(){return C.setTimeout(function(){rt=void 0}),rt=Date.now()}function ft(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=re[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function pt(e,t,n){for(var r,i=(dt.tweeners[t]||[]).concat(dt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function dt(o,e,t){var n,a,r=0,i=dt.prefilters.length,s=k.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=rt||ct(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:k.extend({},e),opts:k.extend(!0,{specialEasing:{},easing:k.easing._default},t),originalProperties:e,originalOptions:t,startTime:rt||ct(),duration:t.duration,tweens:[],createTween:function(e,t){var n=k.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=V(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=k.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=dt.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(k._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return k.map(c,pt,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),k.fx.timer(k.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}k.Animation=k.extend(dt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return le(n.elem,e,ne.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(R);for(var n,r=0,i=e.length;r<i;r++)n=e[r],dt.tweeners[n]=dt.tweeners[n]||[],dt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&se(e),v=Q.get(e,"fxshow");for(r in n.queue||(null==(a=k._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,k.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],st.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||k.style(e,r)}if((u=!k.isEmptyObject(t))||!k.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Q.get(e,"display")),"none"===(c=k.css(e,"display"))&&(l?c=l:(fe([e],!0),l=e.style.display||l,c=k.css(e,"display"),fe([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===k.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Q.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&fe([e],!0),p.done(function(){for(r in g||fe([e]),Q.remove(e,"fxshow"),d)k.style(e,r,d[r])})),u=pt(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?dt.prefilters.unshift(e):dt.prefilters.push(e)}}),k.speed=function(e,t,n){var r=e&&"object"==typeof e?k.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return k.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in k.fx.speeds?r.duration=k.fx.speeds[r.duration]:r.duration=k.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&k.dequeue(this,r.queue)},r},k.fn.extend({fadeTo:function(e,t,n,r){return this.filter(se).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=k.isEmptyObject(t),o=k.speed(e,n,r),a=function(){var e=dt(this,k.extend({},t),o);(i||Q.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&!1!==i&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=k.timers,r=Q.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&ut.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||k.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Q.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=k.timers,o=n?n.length:0;for(t.finish=!0,k.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),k.each(["toggle","show","hide"],function(e,r){var i=k.fn[r];k.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(ft(r,!0),e,t,n)}}),k.each({slideDown:ft("show"),slideUp:ft("hide"),slideToggle:ft("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){k.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),k.timers=[],k.fx.tick=function(){var e,t=0,n=k.timers;for(rt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||k.fx.stop(),rt=void 0},k.fx.timer=function(e){k.timers.push(e),k.fx.start()},k.fx.interval=13,k.fx.start=function(){it||(it=!0,lt())},k.fx.stop=function(){it=null},k.fx.speeds={slow:600,fast:200,_default:400},k.fn.delay=function(r,e){return r=k.fx&&k.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},ot=E.createElement("input"),at=E.createElement("select").appendChild(E.createElement("option")),ot.type="checkbox",y.checkOn=""!==ot.value,y.optSelected=at.selected,(ot=E.createElement("input")).value="t",ot.type="radio",y.radioValue="t"===ot.value;var ht,gt=k.expr.attrHandle;k.fn.extend({attr:function(e,t){return _(this,k.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){k.removeAttr(this,e)})}}),k.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?k.prop(e,t,n):(1===o&&k.isXMLDoc(e)||(i=k.attrHooks[t.toLowerCase()]||(k.expr.match.bool.test(t)?ht:void 0)),void 0!==n?null===n?void k.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=k.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(R);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),ht={set:function(e,t,n){return!1===t?k.removeAttr(e,n):e.setAttribute(n,n),n}},k.each(k.expr.match.bool.source.match(/\w+/g),function(e,t){var a=gt[t]||k.find.attr;gt[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=gt[o],gt[o]=r,r=null!=a(e,t,n)?o:null,gt[o]=i),r}});var vt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;function mt(e){return(e.match(R)||[]).join(" ")}function xt(e){return e.getAttribute&&e.getAttribute("class")||""}function bt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(R)||[]}k.fn.extend({prop:function(e,t){return _(this,k.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[k.propFix[e]||e]})}}),k.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&k.isXMLDoc(e)||(t=k.propFix[t]||t,i=k.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=k.find.attr(e,"tabindex");return t?parseInt(t,10):vt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(k.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),k.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){k.propFix[this.toLowerCase()]=this}),k.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).addClass(t.call(this,e,xt(this)))});if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).removeClass(t.call(this,e,xt(this)))});if(!arguments.length)return this.attr("class","");if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){k(this).toggleClass(i.call(this,e,xt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=k(this),r=bt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=xt(this))&&Q.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Q.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+mt(xt(n))+" ").indexOf(t))return!0;return!1}});var wt=/\r/g;k.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,k(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=k.map(t,function(e){return null==e?"":e+""})),(r=k.valHooks[this.type]||k.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=k.valHooks[t.type]||k.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(wt,""):null==e?"":e:void 0}}),k.extend({valHooks:{option:{get:function(e){var t=k.find.attr(e,"value");return null!=t?t:mt(k.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=k(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=k.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<k.inArray(k.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),k.each(["radio","checkbox"],function(){k.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<k.inArray(k(e).val(),t)}},y.checkOn||(k.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var Tt=/^(?:focusinfocus|focusoutblur)$/,Ct=function(e){e.stopPropagation()};k.extend(k.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!Tt.test(d+k.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[k.expando]?e:new k.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:k.makeArray(t,[e]),c=k.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,Tt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Q.get(o,"events")||{})[e.type]&&Q.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&G(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!G(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),k.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,Ct),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,Ct),k.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=k.extend(new k.Event,n,{type:e,isSimulated:!0});k.event.trigger(r,null,t)}}),k.fn.extend({trigger:function(e,t){return this.each(function(){k.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return k.event.trigger(e,t,n,!0)}}),y.focusin||k.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){k.event.simulate(r,e.target,k.event.fix(e))};k.event.special[r]={setup:function(){var e=this.ownerDocument||this,t=Q.access(e,r);t||e.addEventListener(n,i,!0),Q.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this,t=Q.access(e,r)-1;t?Q.access(e,r,t):(e.removeEventListener(n,i,!0),Q.remove(e,r))}}});var Et=C.location,kt=Date.now(),St=/\?/;k.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||k.error("Invalid XML: "+e),t};var Nt=/\[\]$/,At=/\r?\n/g,Dt=/^(?:submit|button|image|reset|file)$/i,jt=/^(?:input|select|textarea|keygen)/i;function qt(n,e,r,i){var t;if(Array.isArray(e))k.each(e,function(e,t){r||Nt.test(n)?i(n,t):qt(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)qt(n+"["+t+"]",e[t],r,i)}k.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!k.isPlainObject(e))k.each(e,function(){i(this.name,this.value)});else for(n in e)qt(n,e[n],t,i);return r.join("&")},k.fn.extend({serialize:function(){return k.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=k.prop(this,"elements");return e?k.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!k(this).is(":disabled")&&jt.test(this.nodeName)&&!Dt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=k(this).val();return null==n?null:Array.isArray(n)?k.map(n,function(e){return{name:t.name,value:e.replace(At,"\r\n")}}):{name:t.name,value:n.replace(At,"\r\n")}}).get()}});var Lt=/%20/g,Ht=/#.*$/,Ot=/([?&])_=[^&]*/,Pt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Rt=/^(?:GET|HEAD)$/,Mt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Ft=E.createElement("a");function Bt(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(R)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function _t(t,i,o,a){var s={},u=t===Wt;function l(e){var r;return s[e]=!0,k.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function zt(e,t){var n,r,i=k.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&k.extend(!0,e,r),e}Ft.href=Et.href,k.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Et.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Et.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":k.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,k.ajaxSettings),t):zt(k.ajaxSettings,e)},ajaxPrefilter:Bt(It),ajaxTransport:Bt(Wt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=k.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?k(y):k.event,x=k.Deferred(),b=k.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=Pt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||Et.href)+"").replace(Mt,Et.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(R)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Ft.protocol+"//"+Ft.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=k.param(v.data,v.traditional)),_t(It,v,t,T),h)return T;for(i in(g=k.event&&v.global)&&0==k.active++&&k.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Rt.test(v.type),f=v.url.replace(Ht,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Lt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(St.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Ot,"$1"),o=(St.test(f)?"&":"?")+"_="+kt+++o),v.url=f+o),v.ifModified&&(k.lastModified[f]&&T.setRequestHeader("If-Modified-Since",k.lastModified[f]),k.etag[f]&&T.setRequestHeader("If-None-Match",k.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+$t+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=_t(Wt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(k.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(k.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--k.active||k.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return k.get(e,t,n,"json")},getScript:function(e,t){return k.get(e,void 0,t,"script")}}),k.each(["get","post"],function(e,i){k[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),k.ajax(k.extend({url:e,type:i,dataType:r,data:t,success:n},k.isPlainObject(e)&&e))}}),k._evalUrl=function(e,t){return k.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){k.globalEval(e,t)}})},k.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=k(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){k(this).wrapInner(n.call(this,e))}):this.each(function(){var e=k(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){k(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){k(this).replaceWith(this.childNodes)}),this}}),k.expr.pseudos.hidden=function(e){return!k.expr.pseudos.visible(e)},k.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},k.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var Ut={0:200,1223:204},Xt=k.ajaxSettings.xhr();y.cors=!!Xt&&"withCredentials"in Xt,y.ajax=Xt=!!Xt,k.ajaxTransport(function(i){var o,a;if(y.cors||Xt&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Ut[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),k.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),k.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return k.globalEval(e),e}}}),k.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),k.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=k("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=mt(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&k.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?k("<div>").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}}),k.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),k.fn.extend({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)}}),k.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||k.guid++,i},k.holdReady=function(e){e?k.readyWait++:k.ready(!0)},k.isArray=Array.isArray,k.parseJSON=JSON.parse,k.nodeName=A,k.isFunction=m,k.isWindow=x,k.camelCase=V,k.type=w,k.now=Date.now,k.isNumeric=function(e){var t=k.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return k});var Qt=C.jQuery,Jt=C.$;return k.noConflict=function(e){return C.$===k&&(C.$=Jt),e&&C.jQuery===k&&(C.jQuery=Qt),k},e||(C.jQuery=C.$=k),k});
@@ -1,1 +0,0
1 - {"version":3,"sources":["jquery.js"],"names":["global","factory","module","exports","document","w","Error","window","this","noGlobal","arr","getProto","Object","getPrototypeOf","slice","concat","push","indexOf","class2type","toString","hasOwn","hasOwnProperty","fnToString","ObjectFunctionString","call","support","isFunction","obj","nodeType","isWindow","preservedScriptAttributes","type","src","nonce","noModule","DOMEval","code","node","doc","i","val","script","createElement","text","getAttribute","setAttribute","head","appendChild","parentNode","removeChild","toType","version","jQuery","selector","context","fn","init","rtrim","isArrayLike","length","prototype","jquery","constructor","toArray","get","num","pushStack","elems","ret","merge","prevObject","each","callback","map","elem","apply","arguments","first","eq","last","len","j","end","sort","splice","extend","options","name","copy","copyIsArray","clone","target","deep","isPlainObject","Array","isArray","undefined","expando","Math","random","replace","isReady","error","msg","noop","proto","Ctor","isEmptyObject","globalEval","trim","makeArray","results","inArray","second","grep","invert","matches","callbackExpect","arg","value","guid","Symbol","iterator","split","toLowerCase","Sizzle","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","contains","Date","preferredDoc","dirruns","done","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","a","b","pop","push_native","list","booleans","whitespace","identifier","attributes","pseudos","rwhitespace","RegExp","rcomma","rcombinators","rdescend","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rhtml","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","_","escaped","escapedWhitespace","high","String","fromCharCode","rcssescape","fcssescape","ch","asCodePoint","charCodeAt","unloadHandler","inDisabledFieldset","addCombinator","disabled","nodeName","dir","next","childNodes","e","els","seed","m","nid","match","groups","newSelector","newContext","ownerDocument","exec","getElementById","id","getElementsByTagName","getElementsByClassName","qsa","test","toSelector","join","testContext","querySelectorAll","qsaError","removeAttribute","keys","cache","key","cacheLength","shift","markFunction","assert","el","addHandle","attrs","handler","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","namespace","namespaceURI","documentElement","hasCompare","subWindow","defaultView","top","addEventListener","attachEvent","className","createComment","getById","getElementsByName","filter","attrId","find","getAttributeNode","tag","tmp","innerHTML","input","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","expr","elements","attr","specified","escape","sel","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","firstChild","nodeValue","selectors","createPseudo","relative",">"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","result","what","simple","forward","ofType","xml","uniqueCache","outerCache","nodeIndex","start","parent","useCache","lastChild","uniqueID","pseudo","args","setFilters","idx","matched","not","matcher","unmatched","has","lang","elemLang","hash","location","root","focus","activeElement","hasFocus","href","tabIndex","enabled","checked","selected","selectedIndex","empty","header","button","even","odd","lt","gt","radio","checkbox","file","password","image","submit","reset","tokens","combinator","base","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","contexts","multipleContexts","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","filters","parseOnly","soFar","preFilters","cached","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","token","compiled","defaultValue","unique","isXMLDoc","escapeSelector","until","truncate","is","siblings","n","rneedsContext","rsingleTag","winnow","qualifier","self","rootjQuery","parseHTML","ready","rparentsprev","guaranteedUnique","children","contents","prev","sibling","targets","l","closest","index","prevAll","add","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","content","reverse","rnothtmlwhite","Identity","v","Thrower","ex","adoptValue","resolve","reject","noValue","method","promise","fail","then","Callbacks","object","flag","firing","memory","fired","locked","queue","firingIndex","fire","once","stopOnFalse","remove","disable","lock","fireWith","Deferred","func","tuples","state","always","deferred","catch","pipe","fns","newDefer","tuple","returned","progress","notify","onFulfilled","onRejected","onProgress","maxDepth","depth","special","that","mightThrow","TypeError","notifyWith","resolveWith","process","exceptionHook","stackTrace","rejectWith","getStackHook","setTimeout","stateString","when","singleValue","remaining","resolveContexts","resolveValues","master","updateFunc","rerrorNames","stack","console","warn","message","readyException","readyList","completed","removeEventListener","readyWait","wait","readyState","doScroll","access","chainable","emptyGet","raw","bulk","rmsPrefix","rdashAlpha","fcamelCase","all","letter","toUpperCase","camelCase","string","acceptData","owner","Data","uid","defineProperty","configurable","set","data","prop","hasData","dataPriv","dataUser","rbrace","rmultiDash","dataAttr","JSON","parse","removeData","_data","_removeData","dequeue","startLength","hooks","_queueHooks","stop","setter","clearQueue","count","defer","pnum","source","rcssNum","cssExpand","isAttached","composed","getRootNode","isHiddenWithinTree","style","display","css","swap","old","adjustCSS","valueParts","tween","adjusted","scale","maxIterations","currentValue","initial","unit","cssNumber","initialInUnit","defaultDisplayMap","showHide","show","values","body","hide","toggle","rcheckableType","rtagName","rscriptType","wrapMap","option","thead","col","tr","td","_default","getAll","setGlobalEval","refElements","optgroup","tbody","tfoot","colgroup","caption","th","div","buildFragment","scripts","selection","ignored","wrap","attached","fragment","createDocumentFragment","nodes","htmlPrefilter","createTextNode","checkClone","cloneNode","noCloneChecked","rkeyEvent","rmouseEvent","rtypenamespace","returnTrue","returnFalse","expectSync","err","safeActiveElement","on","types","one","origFn","event","off","leverageNative","notAsync","saved","isTrigger","delegateType","stopPropagation","stopImmediatePropagation","preventDefault","trigger","Event","handleObjIn","eventHandle","events","t","handleObj","handlers","namespaces","origType","elemData","handle","triggered","dispatch","bindType","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","currentTarget","isImmediatePropagationStopped","rnamespace","postDispatch","matchedHandlers","matchedSelectors","addProp","hook","enumerable","originalEvent","writable","load","noBubble","click","beforeunload","returnValue","props","isDefaultPrevented","defaultPrevented","relatedTarget","timeStamp","now","isSimulated","altKey","bubbles","cancelable","changedTouches","ctrlKey","detail","eventPhase","metaKey","pageX","pageY","shiftKey","view","char","charCode","keyCode","buttons","clientX","clientY","offsetX","offsetY","pointerId","pointerType","screenX","screenY","targetTouches","toElement","touches","which","blur","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rxhtmlTag","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","pdataOld","pdataCur","udataOld","udataCur","domManip","collection","hasScripts","iNoClone","valueIsFunction","html","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","detach","append","prepend","insertBefore","before","after","replaceWith","replaceChild","appendTo","prependTo","insertAfter","replaceAll","original","insert","rnumnonpx","getStyles","opener","getComputedStyle","rboxStyle","curCSS","computed","width","minWidth","maxWidth","getPropertyValue","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","container","cssText","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","marginLeft","right","pixelBoxStylesVal","boxSizingReliableVal","position","scrollboxSizeVal","offsetWidth","measure","round","parseFloat","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","cssPrefixes","emptyStyle","vendorProps","finalPropName","final","cssProps","capName","vendorPropName","rdisplayswap","rcustomProp","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","setPositiveNumber","subtract","max","boxModelAdjustment","dimension","box","isBorderBox","styles","computedVal","extra","delta","ceil","getWidthOrHeight","valueIsBorderBox","offsetProp","getClientRects","Tween","easing","cssHooks","opacity","animationIterationCount","columnCount","fillOpacity","flexGrow","flexShrink","gridArea","gridColumn","gridColumnEnd","gridColumnStart","gridRow","gridRowEnd","gridRowStart","lineHeight","order","orphans","widows","zIndex","zoom","origName","isCustomProp","setProperty","isFinite","getBoundingClientRect","scrollboxSizeBuggy","left","margin","padding","border","prefix","suffix","expand","expanded","parts","propHooks","run","percent","eased","duration","pos","step","fx","scrollTop","scrollLeft","linear","p","swing","cos","PI","fxNow","inProgress","opt","rfxtypes","rrun","schedule","hidden","requestAnimationFrame","interval","tick","createFxNow","genFx","includeWidth","height","createTween","animation","Animation","tweeners","properties","stopped","prefilters","currentTime","startTime","tweens","opts","specialEasing","originalProperties","originalOptions","gotoEnd","propFilter","bind","complete","timer","anim","*","tweener","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","overflow","overflowX","overflowY","prefilter","speed","speeds","fadeTo","to","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","delay","time","timeout","clearTimeout","checkOn","optSelected","radioValue","boolHook","removeAttr","nType","attrHooks","attrNames","getter","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","tabindex","parseInt","for","class","addClass","classes","curValue","clazz","finalValue","removeClass","toggleClass","stateVal","isValidValue","classNames","hasClass","rreturn","valHooks","optionSet","focusin","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","parentWindow","simulate","triggerHandler","attaches","rquery","parseXML","DOMParser","parseFromString","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","param","s","valueOrFunction","encodeURIComponent","serialize","serializeArray","r20","rhash","rantiCache","rheaders","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","active","lastModified","etag","url","isLocal","protocol","processData","async","contentType","accepts","json","responseFields","converters","* text","text html","text json","text xml","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getResponseHeader","getAllResponseHeaders","setRequestHeader","overrideMimeType","mimeType","status","abort","statusText","finalText","crossDomain","host","hasContent","ifModified","headers","beforeSend","success","send","nativeStatusText","responses","isSuccess","response","modified","ct","finalDataType","firstDataType","ajaxHandleResponses","conv2","current","conv","dataFilter","throws","ajaxConvert","getJSON","getScript","text script","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","visible","offsetHeight","xhr","XMLHttpRequest","xhrSuccessStatus","0","1223","xhrSupported","cors","errorCallback","open","username","xhrFields","onload","onerror","onabort","ontimeout","onreadystatechange","responseType","responseText","binary","scriptAttrs","charset","scriptCharset","evt","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","createHTMLDocument","implementation","keepScripts","parsed","params","animated","offset","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","using","rect","win","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","","defaultExtra","funcName","hover","fnOver","fnOut","unbind","delegate","undelegate","proxy","holdReady","hold","parseJSON","isNumeric","isNaN","define","amd","_jQuery","_$","$","noConflict"],"mappings":"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","file":"jquery.min.js"} No newline at end of file
This diff has been collapsed as it changes many lines, (8495 lines changed) Show them Hide them
@@ -1,8495 +0,0
1 - /*!
2 - * jQuery JavaScript Library v3.4.1 -ajax,-ajax/jsonp,-ajax/load,-ajax/parseXML,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-event/ajax,-effects,-effects/Tween,-effects/animatedSelector
3 - * https://jquery.com/
4 - *
5 - * Includes Sizzle.js
6 - * https://sizzlejs.com/
7 - *
8 - * Copyright JS Foundation and other contributors
9 - * Released under the MIT license
10 - * https://jquery.org/license
11 - *
12 - * Date: 2019-05-01T21:04Z
13 - */
14 - ( function( global, factory ) {
15 -
16 - "use strict";
17 -
18 - if ( typeof module === "object" && typeof module.exports === "object" ) {
19 -
20 - // For CommonJS and CommonJS-like environments where a proper `window`
21 - // is present, execute the factory and get jQuery.
22 - // For environments that do not have a `window` with a `document`
23 - // (such as Node.js), expose a factory as module.exports.
24 - // This accentuates the need for the creation of a real `window`.
25 - // e.g. var jQuery = require("jquery")(window);
26 - // See ticket #14549 for more info.
27 - module.exports = global.document ?
28 - factory( global, true ) :
29 - function( w ) {
30 - if ( !w.document ) {
31 - throw new Error( "jQuery requires a window with a document" );
32 - }
33 - return factory( w );
34 - };
35 - } else {
36 - factory( global );
37 - }
38 -
39 - // Pass this if window is not defined yet
40 - } )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
41 -
42 - // Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1
43 - // throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode
44 - // arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common
45 - // enough that all such attempts are guarded in a try block.
46 - "use strict";
47 -
48 - var arr = [];
49 -
50 - var document = window.document;
51 -
52 - var getProto = Object.getPrototypeOf;
53 -
54 - var slice = arr.slice;
55 -
56 - var concat = arr.concat;
57 -
58 - var push = arr.push;
59 -
60 - var indexOf = arr.indexOf;
61 -
62 - var class2type = {};
63 -
64 - var toString = class2type.toString;
65 -
66 - var hasOwn = class2type.hasOwnProperty;
67 -
68 - var fnToString = hasOwn.toString;
69 -
70 - var ObjectFunctionString = fnToString.call( Object );
71 -
72 - var support = {};
73 -
74 - var isFunction = function isFunction( obj ) {
75 -
76 - // Support: Chrome <=57, Firefox <=52
77 - // In some browsers, typeof returns "function" for HTML <object> elements
78 - // (i.e., `typeof document.createElement( "object" ) === "function"`).
79 - // We don't want to classify *any* DOM node as a function.
80 - return typeof obj === "function" && typeof obj.nodeType !== "number";
81 - };
82 -
83 -
84 - var isWindow = function isWindow( obj ) {
85 - return obj != null && obj === obj.window;
86 - };
87 -
88 -
89 -
90 -
91 - var preservedScriptAttributes = {
92 - type: true,
93 - src: true,
94 - nonce: true,
95 - noModule: true
96 - };
97 -
98 - function DOMEval( code, node, doc ) {
99 - doc = doc || document;
100 -
101 - var i, val,
102 - script = doc.createElement( "script" );
103 -
104 - script.text = code;
105 - if ( node ) {
106 - for ( i in preservedScriptAttributes ) {
107 -
108 - // Support: Firefox 64+, Edge 18+
109 - // Some browsers don't support the "nonce" property on scripts.
110 - // On the other hand, just using `getAttribute` is not enough as
111 - // the `nonce` attribute is reset to an empty string whenever it
112 - // becomes browsing-context connected.
113 - // See https://github.com/whatwg/html/issues/2369
114 - // See https://html.spec.whatwg.org/#nonce-attributes
115 - // The `node.getAttribute` check was added for the sake of
116 - // `jQuery.globalEval` so that it can fake a nonce-containing node
117 - // via an object.
118 - val = node[ i ] || node.getAttribute && node.getAttribute( i );
119 - if ( val ) {
120 - script.setAttribute( i, val );
121 - }
122 - }
123 - }
124 - doc.head.appendChild( script ).parentNode.removeChild( script );
125 - }
126 -
127 -
128 - function toType( obj ) {
129 - if ( obj == null ) {
130 - return obj + "";
131 - }
132 -
133 - // Support: Android <=2.3 only (functionish RegExp)
134 - return typeof obj === "object" || typeof obj === "function" ?
135 - class2type[ toString.call( obj ) ] || "object" :
136 - typeof obj;
137 - }
138 - /* global Symbol */
139 - // Defining this global in .eslintrc.json would create a danger of using the global
140 - // unguarded in another place, it seems safer to define global only for this module
141 -
142 -
143 -
144 - var
145 - version = "3.4.1 -ajax,-ajax/jsonp,-ajax/load,-ajax/parseXML,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-event/ajax,-effects,-effects/Tween,-effects/animatedSelector",
146 -
147 - // Define a local copy of jQuery
148 - jQuery = function( selector, context ) {
149 -
150 - // The jQuery object is actually just the init constructor 'enhanced'
151 - // Need init if jQuery is called (just allow error to be thrown if not included)
152 - return new jQuery.fn.init( selector, context );
153 - },
154 -
155 - // Support: Android <=4.0 only
156 - // Make sure we trim BOM and NBSP
157 - rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
158 -
159 - jQuery.fn = jQuery.prototype = {
160 -
161 - // The current version of jQuery being used
162 - jquery: version,
163 -
164 - constructor: jQuery,
165 -
166 - // The default length of a jQuery object is 0
167 - length: 0,
168 -
169 - toArray: function() {
170 - return slice.call( this );
171 - },
172 -
173 - // Get the Nth element in the matched element set OR
174 - // Get the whole matched element set as a clean array
175 - get: function( num ) {
176 -
177 - // Return all the elements in a clean array
178 - if ( num == null ) {
179 - return slice.call( this );
180 - }
181 -
182 - // Return just the one element from the set
183 - return num < 0 ? this[ num + this.length ] : this[ num ];
184 - },
185 -
186 - // Take an array of elements and push it onto the stack
187 - // (returning the new matched element set)
188 - pushStack: function( elems ) {
189 -
190 - // Build a new jQuery matched element set
191 - var ret = jQuery.merge( this.constructor(), elems );
192 -
193 - // Add the old object onto the stack (as a reference)
194 - ret.prevObject = this;
195 -
196 - // Return the newly-formed element set
197 - return ret;
198 - },
199 -
200 - // Execute a callback for every element in the matched set.
201 - each: function( callback ) {
202 - return jQuery.each( this, callback );
203 - },
204 -
205 - map: function( callback ) {
206 - return this.pushStack( jQuery.map( this, function( elem, i ) {
207 - return callback.call( elem, i, elem );
208 - } ) );
209 - },
210 -
211 - slice: function() {
212 - return this.pushStack( slice.apply( this, arguments ) );
213 - },
214 -
215 - first: function() {
216 - return this.eq( 0 );
217 - },
218 -
219 - last: function() {
220 - return this.eq( -1 );
221 - },
222 -
223 - eq: function( i ) {
224 - var len = this.length,
225 - j = +i + ( i < 0 ? len : 0 );
226 - return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );
227 - },
228 -
229 - end: function() {
230 - return this.prevObject || this.constructor();
231 - },
232 -
233 - // For internal use only.
234 - // Behaves like an Array's method, not like a jQuery method.
235 - push: push,
236 - sort: arr.sort,
237 - splice: arr.splice
238 - };
239 -
240 - jQuery.extend = jQuery.fn.extend = function() {
241 - var options, name, src, copy, copyIsArray, clone,
242 - target = arguments[ 0 ] || {},
243 - i = 1,
244 - length = arguments.length,
245 - deep = false;
246 -
247 - // Handle a deep copy situation
248 - if ( typeof target === "boolean" ) {
249 - deep = target;
250 -
251 - // Skip the boolean and the target
252 - target = arguments[ i ] || {};
253 - i++;
254 - }
255 -
256 - // Handle case when target is a string or something (possible in deep copy)
257 - if ( typeof target !== "object" && !isFunction( target ) ) {
258 - target = {};
259 - }
260 -
261 - // Extend jQuery itself if only one argument is passed
262 - if ( i === length ) {
263 - target = this;
264 - i--;
265 - }
266 -
267 - for ( ; i < length; i++ ) {
268 -
269 - // Only deal with non-null/undefined values
270 - if ( ( options = arguments[ i ] ) != null ) {
271 -
272 - // Extend the base object
273 - for ( name in options ) {
274 - copy = options[ name ];
275 -
276 - // Prevent Object.prototype pollution
277 - // Prevent never-ending loop
278 - if ( name === "__proto__" || target === copy ) {
279 - continue;
280 - }
281 -
282 - // Recurse if we're merging plain objects or arrays
283 - if ( deep && copy && ( jQuery.isPlainObject( copy ) ||
284 - ( copyIsArray = Array.isArray( copy ) ) ) ) {
285 - src = target[ name ];
286 -
287 - // Ensure proper type for the source value
288 - if ( copyIsArray && !Array.isArray( src ) ) {
289 - clone = [];
290 - } else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {
291 - clone = {};
292 - } else {
293 - clone = src;
294 - }
295 - copyIsArray = false;
296 -
297 - // Never move original objects, clone them
298 - target[ name ] = jQuery.extend( deep, clone, copy );
299 -
300 - // Don't bring in undefined values
301 - } else if ( copy !== undefined ) {
302 - target[ name ] = copy;
303 - }
304 - }
305 - }
306 - }
307 -
308 - // Return the modified object
309 - return target;
310 - };
311 -
312 - jQuery.extend( {
313 -
314 - // Unique for each copy of jQuery on the page
315 - expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
316 -
317 - // Assume jQuery is ready without the ready module
318 - isReady: true,
319 -
320 - error: function( msg ) {
321 - throw new Error( msg );
322 - },
323 -
324 - noop: function() {},
325 -
326 - isPlainObject: function( obj ) {
327 - var proto, Ctor;
328 -
329 - // Detect obvious negatives
330 - // Use toString instead of jQuery.type to catch host objects
331 - if ( !obj || toString.call( obj ) !== "[object Object]" ) {
332 - return false;
333 - }
334 -
335 - proto = getProto( obj );
336 -
337 - // Objects with no prototype (e.g., `Object.create( null )`) are plain
338 - if ( !proto ) {
339 - return true;
340 - }
341 -
342 - // Objects with prototype are plain iff they were constructed by a global Object function
343 - Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor;
344 - return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString;
345 - },
346 -
347 - isEmptyObject: function( obj ) {
348 - var name;
349 -
350 - for ( name in obj ) {
351 - return false;
352 - }
353 - return true;
354 - },
355 -
356 - // Evaluates a script in a global context
357 - globalEval: function( code, options ) {
358 - DOMEval( code, { nonce: options && options.nonce } );
359 - },
360 -
361 - each: function( obj, callback ) {
362 - var length, i = 0;
363 -
364 - if ( isArrayLike( obj ) ) {
365 - length = obj.length;
366 - for ( ; i < length; i++ ) {
367 - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
368 - break;
369 - }
370 - }
371 - } else {
372 - for ( i in obj ) {
373 - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
374 - break;
375 - }
376 - }
377 - }
378 -
379 - return obj;
380 - },
381 -
382 - // Support: Android <=4.0 only
383 - trim: function( text ) {
384 - return text == null ?
385 - "" :
386 - ( text + "" ).replace( rtrim, "" );
387 - },
388 -
389 - // results is for internal usage only
390 - makeArray: function( arr, results ) {
391 - var ret = results || [];
392 -
393 - if ( arr != null ) {
394 - if ( isArrayLike( Object( arr ) ) ) {
395 - jQuery.merge( ret,
396 - typeof arr === "string" ?
397 - [ arr ] : arr
398 - );
399 - } else {
400 - push.call( ret, arr );
401 - }
402 - }
403 -
404 - return ret;
405 - },
406 -
407 - inArray: function( elem, arr, i ) {
408 - return arr == null ? -1 : indexOf.call( arr, elem, i );
409 - },
410 -
411 - // Support: Android <=4.0 only, PhantomJS 1 only
412 - // push.apply(_, arraylike) throws on ancient WebKit
413 - merge: function( first, second ) {
414 - var len = +second.length,
415 - j = 0,
416 - i = first.length;
417 -
418 - for ( ; j < len; j++ ) {
419 - first[ i++ ] = second[ j ];
420 - }
421 -
422 - first.length = i;
423 -
424 - return first;
425 - },
426 -
427 - grep: function( elems, callback, invert ) {
428 - var callbackInverse,
429 - matches = [],
430 - i = 0,
431 - length = elems.length,
432 - callbackExpect = !invert;
433 -
434 - // Go through the array, only saving the items
435 - // that pass the validator function
436 - for ( ; i < length; i++ ) {
437 - callbackInverse = !callback( elems[ i ], i );
438 - if ( callbackInverse !== callbackExpect ) {
439 - matches.push( elems[ i ] );
440 - }
441 - }
442 -
443 - return matches;
444 - },
445 -
446 - // arg is for internal usage only
447 - map: function( elems, callback, arg ) {
448 - var length, value,
449 - i = 0,
450 - ret = [];
451 -
452 - // Go through the array, translating each of the items to their new values
453 - if ( isArrayLike( elems ) ) {
454 - length = elems.length;
455 - for ( ; i < length; i++ ) {
456 - value = callback( elems[ i ], i, arg );
457 -
458 - if ( value != null ) {
459 - ret.push( value );
460 - }
461 - }
462 -
463 - // Go through every key on the object,
464 - } else {
465 - for ( i in elems ) {
466 - value = callback( elems[ i ], i, arg );
467 -
468 - if ( value != null ) {
469 - ret.push( value );
470 - }
471 - }
472 - }
473 -
474 - // Flatten any nested arrays
475 - return concat.apply( [], ret );
476 - },
477 -
478 - // A global GUID counter for objects
479 - guid: 1,
480 -
481 - // jQuery.support is not used in Core but other projects attach their
482 - // properties to it so it needs to exist.
483 - support: support
484 - } );
485 -
486 - if ( typeof Symbol === "function" ) {
487 - jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];
488 - }
489 -
490 - // Populate the class2type map
491 - jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
492 - function( i, name ) {
493 - class2type[ "[object " + name + "]" ] = name.toLowerCase();
494 - } );
495 -
496 - function isArrayLike( obj ) {
497 -
498 - // Support: real iOS 8.2 only (not reproducible in simulator)
499 - // `in` check used to prevent JIT error (gh-2145)
500 - // hasOwn isn't used here due to false negatives
501 - // regarding Nodelist length in IE
502 - var length = !!obj && "length" in obj && obj.length,
503 - type = toType( obj );
504 -
505 - if ( isFunction( obj ) || isWindow( obj ) ) {
506 - return false;
507 - }
508 -
509 - return type === "array" || length === 0 ||
510 - typeof length === "number" && length > 0 && ( length - 1 ) in obj;
511 - }
512 - var Sizzle =
513 - /*!
514 - * Sizzle CSS Selector Engine v2.3.4
515 - * https://sizzlejs.com/
516 - *
517 - * Copyright JS Foundation and other contributors
518 - * Released under the MIT license
519 - * https://js.foundation/
520 - *
521 - * Date: 2019-04-08
522 - */
523 - (function( window ) {
524 -
525 - var i,
526 - support,
527 - Expr,
528 - getText,
529 - isXML,
530 - tokenize,
531 - compile,
532 - select,
533 - outermostContext,
534 - sortInput,
535 - hasDuplicate,
536 -
537 - // Local document vars
538 - setDocument,
539 - document,
540 - docElem,
541 - documentIsHTML,
542 - rbuggyQSA,
543 - rbuggyMatches,
544 - matches,
545 - contains,
546 -
547 - // Instance-specific data
548 - expando = "sizzle" + 1 * new Date(),
549 - preferredDoc = window.document,
550 - dirruns = 0,
551 - done = 0,
552 - classCache = createCache(),
553 - tokenCache = createCache(),
554 - compilerCache = createCache(),
555 - nonnativeSelectorCache = createCache(),
556 - sortOrder = function( a, b ) {
557 - if ( a === b ) {
558 - hasDuplicate = true;
559 - }
560 - return 0;
561 - },
562 -
563 - // Instance methods
564 - hasOwn = ({}).hasOwnProperty,
565 - arr = [],
566 - pop = arr.pop,
567 - push_native = arr.push,
568 - push = arr.push,
569 - slice = arr.slice,
570 - // Use a stripped-down indexOf as it's faster than native
571 - // https://jsperf.com/thor-indexof-vs-for/5
572 - indexOf = function( list, elem ) {
573 - var i = 0,
574 - len = list.length;
575 - for ( ; i < len; i++ ) {
576 - if ( list[i] === elem ) {
577 - return i;
578 - }
579 - }
580 - return -1;
581 - },
582 -
583 - booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
584 -
585 - // Regular expressions
586 -
587 - // http://www.w3.org/TR/css3-selectors/#whitespace
588 - whitespace = "[\\x20\\t\\r\\n\\f]",
589 -
590 - // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
591 - identifier = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+",
592 -
593 - // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
594 - attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace +
595 - // Operator (capture 2)
596 - "*([*^$|!~]?=)" + whitespace +
597 - // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
598 - "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace +
599 - "*\\]",
600 -
601 - pseudos = ":(" + identifier + ")(?:\\((" +
602 - // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
603 - // 1. quoted (capture 3; capture 4 or capture 5)
604 - "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
605 - // 2. simple (capture 6)
606 - "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
607 - // 3. anything else (capture 2)
608 - ".*" +
609 - ")\\)|)",
610 -
611 - // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
612 - rwhitespace = new RegExp( whitespace + "+", "g" ),
613 - rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
614 -
615 - rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
616 - rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
617 - rdescend = new RegExp( whitespace + "|>" ),
618 -
619 - rpseudo = new RegExp( pseudos ),
620 - ridentifier = new RegExp( "^" + identifier + "$" ),
621 -
622 - matchExpr = {
623 - "ID": new RegExp( "^#(" + identifier + ")" ),
624 - "CLASS": new RegExp( "^\\.(" + identifier + ")" ),
625 - "TAG": new RegExp( "^(" + identifier + "|[*])" ),
626 - "ATTR": new RegExp( "^" + attributes ),
627 - "PSEUDO": new RegExp( "^" + pseudos ),
628 - "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
629 - "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
630 - "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
631 - "bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
632 - // For use in libraries implementing .is()
633 - // We use this for POS matching in `select`
634 - "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
635 - whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
636 - },
637 -
638 - rhtml = /HTML$/i,
639 - rinputs = /^(?:input|select|textarea|button)$/i,
640 - rheader = /^h\d$/i,
641 -
642 - rnative = /^[^{]+\{\s*\[native \w/,
643 -
644 - // Easily-parseable/retrievable ID or TAG or CLASS selectors
645 - rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
646 -
647 - rsibling = /[+~]/,
648 -
649 - // CSS escapes
650 - // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
651 - runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
652 - funescape = function( _, escaped, escapedWhitespace ) {
653 - var high = "0x" + escaped - 0x10000;
654 - // NaN means non-codepoint
655 - // Support: Firefox<24
656 - // Workaround erroneous numeric interpretation of +"0x"
657 - return high !== high || escapedWhitespace ?
658 - escaped :
659 - high < 0 ?
660 - // BMP codepoint
661 - String.fromCharCode( high + 0x10000 ) :
662 - // Supplemental Plane codepoint (surrogate pair)
663 - String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
664 - },
665 -
666 - // CSS string/identifier serialization
667 - // https://drafts.csswg.org/cssom/#common-serializing-idioms
668 - rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,
669 - fcssescape = function( ch, asCodePoint ) {
670 - if ( asCodePoint ) {
671 -
672 - // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
673 - if ( ch === "\0" ) {
674 - return "\uFFFD";
675 - }
676 -
677 - // Control characters and (dependent upon position) numbers get escaped as code points
678 - return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
679 - }
680 -
681 - // Other potentially-special ASCII characters get backslash-escaped
682 - return "\\" + ch;
683 - },
684 -
685 - // Used for iframes
686 - // See setDocument()
687 - // Removing the function wrapper causes a "Permission Denied"
688 - // error in IE
689 - unloadHandler = function() {
690 - setDocument();
691 - },
692 -
693 - inDisabledFieldset = addCombinator(
694 - function( elem ) {
695 - return elem.disabled === true && elem.nodeName.toLowerCase() === "fieldset";
696 - },
697 - { dir: "parentNode", next: "legend" }
698 - );
699 -
700 - // Optimize for push.apply( _, NodeList )
701 - try {
702 - push.apply(
703 - (arr = slice.call( preferredDoc.childNodes )),
704 - preferredDoc.childNodes
705 - );
706 - // Support: Android<4.0
707 - // Detect silently failing push.apply
708 - arr[ preferredDoc.childNodes.length ].nodeType;
709 - } catch ( e ) {
710 - push = { apply: arr.length ?
711 -
712 - // Leverage slice if possible
713 - function( target, els ) {
714 - push_native.apply( target, slice.call(els) );
715 - } :
716 -
717 - // Support: IE<9
718 - // Otherwise append directly
719 - function( target, els ) {
720 - var j = target.length,
721 - i = 0;
722 - // Can't trust NodeList.length
723 - while ( (target[j++] = els[i++]) ) {}
724 - target.length = j - 1;
725 - }
726 - };
727 - }
728 -
729 - function Sizzle( selector, context, results, seed ) {
730 - var m, i, elem, nid, match, groups, newSelector,
731 - newContext = context && context.ownerDocument,
732 -
733 - // nodeType defaults to 9, since context defaults to document
734 - nodeType = context ? context.nodeType : 9;
735 -
736 - results = results || [];
737 -
738 - // Return early from calls with invalid selector or context
739 - if ( typeof selector !== "string" || !selector ||
740 - nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {
741 -
742 - return results;
743 - }
744 -
745 - // Try to shortcut find operations (as opposed to filters) in HTML documents
746 - if ( !seed ) {
747 -
748 - if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
749 - setDocument( context );
750 - }
751 - context = context || document;
752 -
753 - if ( documentIsHTML ) {
754 -
755 - // If the selector is sufficiently simple, try using a "get*By*" DOM method
756 - // (excepting DocumentFragment context, where the methods don't exist)
757 - if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {
758 -
759 - // ID selector
760 - if ( (m = match[1]) ) {
761 -
762 - // Document context
763 - if ( nodeType === 9 ) {
764 - if ( (elem = context.getElementById( m )) ) {
765 -
766 - // Support: IE, Opera, Webkit
767 - // TODO: identify versions
768 - // getElementById can match elements by name instead of ID
769 - if ( elem.id === m ) {
770 - results.push( elem );
771 - return results;
772 - }
773 - } else {
774 - return results;
775 - }
776 -
777 - // Element context
778 - } else {
779 -
780 - // Support: IE, Opera, Webkit
781 - // TODO: identify versions
782 - // getElementById can match elements by name instead of ID
783 - if ( newContext && (elem = newContext.getElementById( m )) &&
784 - contains( context, elem ) &&
785 - elem.id === m ) {
786 -
787 - results.push( elem );
788 - return results;
789 - }
790 - }
791 -
792 - // Type selector
793 - } else if ( match[2] ) {
794 - push.apply( results, context.getElementsByTagName( selector ) );
795 - return results;
796 -
797 - // Class selector
798 - } else if ( (m = match[3]) && support.getElementsByClassName &&
799 - context.getElementsByClassName ) {
800 -
801 - push.apply( results, context.getElementsByClassName( m ) );
802 - return results;
803 - }
804 - }
805 -
806 - // Take advantage of querySelectorAll
807 - if ( support.qsa &&
808 - !nonnativeSelectorCache[ selector + " " ] &&
809 - (!rbuggyQSA || !rbuggyQSA.test( selector )) &&
810 -
811 - // Support: IE 8 only
812 - // Exclude object elements
813 - (nodeType !== 1 || context.nodeName.toLowerCase() !== "object") ) {
814 -
815 - newSelector = selector;
816 - newContext = context;
817 -
818 - // qSA considers elements outside a scoping root when evaluating child or
819 - // descendant combinators, which is not what we want.
820 - // In such cases, we work around the behavior by prefixing every selector in the
821 - // list with an ID selector referencing the scope context.
822 - // Thanks to Andrew Dupont for this technique.
823 - if ( nodeType === 1 && rdescend.test( selector ) ) {
824 -
825 - // Capture the context ID, setting it first if necessary
826 - if ( (nid = context.getAttribute( "id" )) ) {
827 - nid = nid.replace( rcssescape, fcssescape );
828 - } else {
829 - context.setAttribute( "id", (nid = expando) );
830 - }
831 -
832 - // Prefix every selector in the list
833 - groups = tokenize( selector );
834 - i = groups.length;
835 - while ( i-- ) {
836 - groups[i] = "#" + nid + " " + toSelector( groups[i] );
837 - }
838 - newSelector = groups.join( "," );
839 -
840 - // Expand context for sibling selectors
841 - newContext = rsibling.test( selector ) && testContext( context.parentNode ) ||
842 - context;
843 - }
844 -
845 - try {
846 - push.apply( results,
847 - newContext.querySelectorAll( newSelector )
848 - );
849 - return results;
850 - } catch ( qsaError ) {
851 - nonnativeSelectorCache( selector, true );
852 - } finally {
853 - if ( nid === expando ) {
854 - context.removeAttribute( "id" );
855 - }
856 - }
857 - }
858 - }
859 - }
860 -
861 - // All others
862 - return select( selector.replace( rtrim, "$1" ), context, results, seed );
863 - }
864 -
865 - /**
866 - * Create key-value caches of limited size
867 - * @returns {function(string, object)} Returns the Object data after storing it on itself with
868 - * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
869 - * deleting the oldest entry
870 - */
871 - function createCache() {
872 - var keys = [];
873 -
874 - function cache( key, value ) {
875 - // Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
876 - if ( keys.push( key + " " ) > Expr.cacheLength ) {
877 - // Only keep the most recent entries
878 - delete cache[ keys.shift() ];
879 - }
880 - return (cache[ key + " " ] = value);
881 - }
882 - return cache;
883 - }
884 -
885 - /**
886 - * Mark a function for special use by Sizzle
887 - * @param {Function} fn The function to mark
888 - */
889 - function markFunction( fn ) {
890 - fn[ expando ] = true;
891 - return fn;
892 - }
893 -
894 - /**
895 - * Support testing using an element
896 - * @param {Function} fn Passed the created element and returns a boolean result
897 - */
898 - function assert( fn ) {
899 - var el = document.createElement("fieldset");
900 -
901 - try {
902 - return !!fn( el );
903 - } catch (e) {
904 - return false;
905 - } finally {
906 - // Remove from its parent by default
907 - if ( el.parentNode ) {
908 - el.parentNode.removeChild( el );
909 - }
910 - // release memory in IE
911 - el = null;
912 - }
913 - }
914 -
915 - /**
916 - * Adds the same handler for all of the specified attrs
917 - * @param {String} attrs Pipe-separated list of attributes
918 - * @param {Function} handler The method that will be applied
919 - */
920 - function addHandle( attrs, handler ) {
921 - var arr = attrs.split("|"),
922 - i = arr.length;
923 -
924 - while ( i-- ) {
925 - Expr.attrHandle[ arr[i] ] = handler;
926 - }
927 - }
928 -
929 - /**
930 - * Checks document order of two siblings
931 - * @param {Element} a
932 - * @param {Element} b
933 - * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
934 - */
935 - function siblingCheck( a, b ) {
936 - var cur = b && a,
937 - diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
938 - a.sourceIndex - b.sourceIndex;
939 -
940 - // Use IE sourceIndex if available on both nodes
941 - if ( diff ) {
942 - return diff;
943 - }
944 -
945 - // Check if b follows a
946 - if ( cur ) {
947 - while ( (cur = cur.nextSibling) ) {
948 - if ( cur === b ) {
949 - return -1;
950 - }
951 - }
952 - }
953 -
954 - return a ? 1 : -1;
955 - }
956 -
957 - /**
958 - * Returns a function to use in pseudos for input types
959 - * @param {String} type
960 - */
961 - function createInputPseudo( type ) {
962 - return function( elem ) {
963 - var name = elem.nodeName.toLowerCase();
964 - return name === "input" && elem.type === type;
965 - };
966 - }
967 -
968 - /**
969 - * Returns a function to use in pseudos for buttons
970 - * @param {String} type
971 - */
972 - function createButtonPseudo( type ) {
973 - return function( elem ) {
974 - var name = elem.nodeName.toLowerCase();
975 - return (name === "input" || name === "button") && elem.type === type;
976 - };
977 - }
978 -
979 - /**
980 - * Returns a function to use in pseudos for :enabled/:disabled
981 - * @param {Boolean} disabled true for :disabled; false for :enabled
982 - */
983 - function createDisabledPseudo( disabled ) {
984 -
985 - // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable
986 - return function( elem ) {
987 -
988 - // Only certain elements can match :enabled or :disabled
989 - // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled
990 - // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled
991 - if ( "form" in elem ) {
992 -
993 - // Check for inherited disabledness on relevant non-disabled elements:
994 - // * listed form-associated elements in a disabled fieldset
995 - // https://html.spec.whatwg.org/multipage/forms.html#category-listed
996 - // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled
997 - // * option elements in a disabled optgroup
998 - // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled
999 - // All such elements have a "form" property.
1000 - if ( elem.parentNode && elem.disabled === false ) {
1001 -
1002 - // Option elements defer to a parent optgroup if present
1003 - if ( "label" in elem ) {
1004 - if ( "label" in elem.parentNode ) {
1005 - return elem.parentNode.disabled === disabled;
1006 - } else {
1007 - return elem.disabled === disabled;
1008 - }
1009 - }
1010 -
1011 - // Support: IE 6 - 11
1012 - // Use the isDisabled shortcut property to check for disabled fieldset ancestors
1013 - return elem.isDisabled === disabled ||
1014 -
1015 - // Where there is no isDisabled, check manually
1016 - /* jshint -W018 */
1017 - elem.isDisabled !== !disabled &&
1018 - inDisabledFieldset( elem ) === disabled;
1019 - }
1020 -
1021 - return elem.disabled === disabled;
1022 -
1023 - // Try to winnow out elements that can't be disabled before trusting the disabled property.
1024 - // Some victims get caught in our net (label, legend, menu, track), but it shouldn't
1025 - // even exist on them, let alone have a boolean value.
1026 - } else if ( "label" in elem ) {
1027 - return elem.disabled === disabled;
1028 - }
1029 -
1030 - // Remaining elements are neither :enabled nor :disabled
1031 - return false;
1032 - };
1033 - }
1034 -
1035 - /**
1036 - * Returns a function to use in pseudos for positionals
1037 - * @param {Function} fn
1038 - */
1039 - function createPositionalPseudo( fn ) {
1040 - return markFunction(function( argument ) {
1041 - argument = +argument;
1042 - return markFunction(function( seed, matches ) {
1043 - var j,
1044 - matchIndexes = fn( [], seed.length, argument ),
1045 - i = matchIndexes.length;
1046 -
1047 - // Match elements found at the specified indexes
1048 - while ( i-- ) {
1049 - if ( seed[ (j = matchIndexes[i]) ] ) {
1050 - seed[j] = !(matches[j] = seed[j]);
1051 - }
1052 - }
1053 - });
1054 - });
1055 - }
1056 -
1057 - /**
1058 - * Checks a node for validity as a Sizzle context
1059 - * @param {Element|Object=} context
1060 - * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
1061 - */
1062 - function testContext( context ) {
1063 - return context && typeof context.getElementsByTagName !== "undefined" && context;
1064 - }
1065 -
1066 - // Expose support vars for convenience
1067 - support = Sizzle.support = {};
1068 -
1069 - /**
1070 - * Detects XML nodes
1071 - * @param {Element|Object} elem An element or a document
1072 - * @returns {Boolean} True iff elem is a non-HTML XML node
1073 - */
1074 - isXML = Sizzle.isXML = function( elem ) {
1075 - var namespace = elem.namespaceURI,
1076 - docElem = (elem.ownerDocument || elem).documentElement;
1077 -
1078 - // Support: IE <=8
1079 - // Assume HTML when documentElement doesn't yet exist, such as inside loading iframes
1080 - // https://bugs.jquery.com/ticket/4833
1081 - return !rhtml.test( namespace || docElem && docElem.nodeName || "HTML" );
1082 - };
1083 -
1084 - /**
1085 - * Sets document-related variables once based on the current document
1086 - * @param {Element|Object} [doc] An element or document object to use to set the document
1087 - * @returns {Object} Returns the current document
1088 - */
1089 - setDocument = Sizzle.setDocument = function( node ) {
1090 - var hasCompare, subWindow,
1091 - doc = node ? node.ownerDocument || node : preferredDoc;
1092 -
1093 - // Return early if doc is invalid or already selected
1094 - if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
1095 - return document;
1096 - }
1097 -
1098 - // Update global variables
1099 - document = doc;
1100 - docElem = document.documentElement;
1101 - documentIsHTML = !isXML( document );
1102 -
1103 - // Support: IE 9-11, Edge
1104 - // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936)
1105 - if ( preferredDoc !== document &&
1106 - (subWindow = document.defaultView) && subWindow.top !== subWindow ) {
1107 -
1108 - // Support: IE 11, Edge
1109 - if ( subWindow.addEventListener ) {
1110 - subWindow.addEventListener( "unload", unloadHandler, false );
1111 -
1112 - // Support: IE 9 - 10 only
1113 - } else if ( subWindow.attachEvent ) {
1114 - subWindow.attachEvent( "onunload", unloadHandler );
1115 - }
1116 - }
1117 -
1118 - /* Attributes
1119 - ---------------------------------------------------------------------- */
1120 -
1121 - // Support: IE<8
1122 - // Verify that getAttribute really returns attributes and not properties
1123 - // (excepting IE8 booleans)
1124 - support.attributes = assert(function( el ) {
1125 - el.className = "i";
1126 - return !el.getAttribute("className");
1127 - });
1128 -
1129 - /* getElement(s)By*
1130 - ---------------------------------------------------------------------- */
1131 -
1132 - // Check if getElementsByTagName("*") returns only elements
1133 - support.getElementsByTagName = assert(function( el ) {
1134 - el.appendChild( document.createComment("") );
1135 - return !el.getElementsByTagName("*").length;
1136 - });
1137 -
1138 - // Support: IE<9
1139 - support.getElementsByClassName = rnative.test( document.getElementsByClassName );
1140 -
1141 - // Support: IE<10
1142 - // Check if getElementById returns elements by name
1143 - // The broken getElementById methods don't pick up programmatically-set names,
1144 - // so use a roundabout getElementsByName test
1145 - support.getById = assert(function( el ) {
1146 - docElem.appendChild( el ).id = expando;
1147 - return !document.getElementsByName || !document.getElementsByName( expando ).length;
1148 - });
1149 -
1150 - // ID filter and find
1151 - if ( support.getById ) {
1152 - Expr.filter["ID"] = function( id ) {
1153 - var attrId = id.replace( runescape, funescape );
1154 - return function( elem ) {
1155 - return elem.getAttribute("id") === attrId;
1156 - };
1157 - };
1158 - Expr.find["ID"] = function( id, context ) {
1159 - if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
1160 - var elem = context.getElementById( id );
1161 - return elem ? [ elem ] : [];
1162 - }
1163 - };
1164 - } else {
1165 - Expr.filter["ID"] = function( id ) {
1166 - var attrId = id.replace( runescape, funescape );
1167 - return function( elem ) {
1168 - var node = typeof elem.getAttributeNode !== "undefined" &&
1169 - elem.getAttributeNode("id");
1170 - return node && node.value === attrId;
1171 - };
1172 - };
1173 -
1174 - // Support: IE 6 - 7 only
1175 - // getElementById is not reliable as a find shortcut
1176 - Expr.find["ID"] = function( id, context ) {
1177 - if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
1178 - var node, i, elems,
1179 - elem = context.getElementById( id );
1180 -
1181 - if ( elem ) {
1182 -
1183 - // Verify the id attribute
1184 - node = elem.getAttributeNode("id");
1185 - if ( node && node.value === id ) {
1186 - return [ elem ];
1187 - }
1188 -
1189 - // Fall back on getElementsByName
1190 - elems = context.getElementsByName( id );
1191 - i = 0;
1192 - while ( (elem = elems[i++]) ) {
1193 - node = elem.getAttributeNode("id");
1194 - if ( node && node.value === id ) {
1195 - return [ elem ];
1196 - }
1197 - }
1198 - }
1199 -
1200 - return [];
1201 - }
1202 - };
1203 - }
1204 -
1205 - // Tag
1206 - Expr.find["TAG"] = support.getElementsByTagName ?
1207 - function( tag, context ) {
1208 - if ( typeof context.getElementsByTagName !== "undefined" ) {
1209 - return context.getElementsByTagName( tag );
1210 -
1211 - // DocumentFragment nodes don't have gEBTN
1212 - } else if ( support.qsa ) {
1213 - return context.querySelectorAll( tag );
1214 - }
1215 - } :
1216 -
1217 - function( tag, context ) {
1218 - var elem,
1219 - tmp = [],
1220 - i = 0,
1221 - // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too
1222 - results = context.getElementsByTagName( tag );
1223 -
1224 - // Filter out possible comments
1225 - if ( tag === "*" ) {
1226 - while ( (elem = results[i++]) ) {
1227 - if ( elem.nodeType === 1 ) {
1228 - tmp.push( elem );
1229 - }
1230 - }
1231 -
1232 - return tmp;
1233 - }
1234 - return results;
1235 - };
1236 -
1237 - // Class
1238 - Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
1239 - if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) {
1240 - return context.getElementsByClassName( className );
1241 - }
1242 - };
1243 -
1244 - /* QSA/matchesSelector
1245 - ---------------------------------------------------------------------- */
1246 -
1247 - // QSA and matchesSelector support
1248 -
1249 - // matchesSelector(:active) reports false when true (IE9/Opera 11.5)
1250 - rbuggyMatches = [];
1251 -
1252 - // qSa(:focus) reports false when true (Chrome 21)
1253 - // We allow this because of a bug in IE8/9 that throws an error
1254 - // whenever `document.activeElement` is accessed on an iframe
1255 - // So, we allow :focus to pass through QSA all the time to avoid the IE error
1256 - // See https://bugs.jquery.com/ticket/13378
1257 - rbuggyQSA = [];
1258 -
1259 - if ( (support.qsa = rnative.test( document.querySelectorAll )) ) {
1260 - // Build QSA regex
1261 - // Regex strategy adopted from Diego Perini
1262 - assert(function( el ) {
1263 - // Select is set to empty string on purpose
1264 - // This is to test IE's treatment of not explicitly
1265 - // setting a boolean content attribute,
1266 - // since its presence should be enough
1267 - // https://bugs.jquery.com/ticket/12359
1268 - docElem.appendChild( el ).innerHTML = "<a id='" + expando + "'></a>" +
1269 - "<select id='" + expando + "-\r\\' msallowcapture=''>" +
1270 - "<option selected=''></option></select>";
1271 -
1272 - // Support: IE8, Opera 11-12.16
1273 - // Nothing should be selected when empty strings follow ^= or $= or *=
1274 - // The test attribute must be unknown in Opera but "safe" for WinRT
1275 - // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
1276 - if ( el.querySelectorAll("[msallowcapture^='']").length ) {
1277 - rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
1278 - }
1279 -
1280 - // Support: IE8
1281 - // Boolean attributes and "value" are not treated correctly
1282 - if ( !el.querySelectorAll("[selected]").length ) {
1283 - rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
1284 - }
1285 -
1286 - // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+
1287 - if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
1288 - rbuggyQSA.push("~=");
1289 - }
1290 -
1291 - // Webkit/Opera - :checked should return selected option elements
1292 - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
1293 - // IE8 throws error here and will not see later tests
1294 - if ( !el.querySelectorAll(":checked").length ) {
1295 - rbuggyQSA.push(":checked");
1296 - }
1297 -
1298 - // Support: Safari 8+, iOS 8+
1299 - // https://bugs.webkit.org/show_bug.cgi?id=136851
1300 - // In-page `selector#id sibling-combinator selector` fails
1301 - if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) {
1302 - rbuggyQSA.push(".#.+[+~]");
1303 - }
1304 - });
1305 -
1306 - assert(function( el ) {
1307 - el.innerHTML = "<a href='' disabled='disabled'></a>" +
1308 - "<select disabled='disabled'><option/></select>";
1309 -
1310 - // Support: Windows 8 Native Apps
1311 - // The type and name attributes are restricted during .innerHTML assignment
1312 - var input = document.createElement("input");
1313 - input.setAttribute( "type", "hidden" );
1314 - el.appendChild( input ).setAttribute( "name", "D" );
1315 -
1316 - // Support: IE8
1317 - // Enforce case-sensitivity of name attribute
1318 - if ( el.querySelectorAll("[name=d]").length ) {
1319 - rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
1320 - }
1321 -
1322 - // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
1323 - // IE8 throws error here and will not see later tests
1324 - if ( el.querySelectorAll(":enabled").length !== 2 ) {
1325 - rbuggyQSA.push( ":enabled", ":disabled" );
1326 - }
1327 -
1328 - // Support: IE9-11+
1329 - // IE's :disabled selector does not pick up the children of disabled fieldsets
1330 - docElem.appendChild( el ).disabled = true;
1331 - if ( el.querySelectorAll(":disabled").length !== 2 ) {
1332 - rbuggyQSA.push( ":enabled", ":disabled" );
1333 - }
1334 -
1335 - // Opera 10-11 does not throw on post-comma invalid pseudos
1336 - el.querySelectorAll("*,:x");
1337 - rbuggyQSA.push(",.*:");
1338 - });
1339 - }
1340 -
1341 - if ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||
1342 - docElem.webkitMatchesSelector ||
1343 - docElem.mozMatchesSelector ||
1344 - docElem.oMatchesSelector ||
1345 - docElem.msMatchesSelector) )) ) {
1346 -
1347 - assert(function( el ) {
1348 - // Check to see if it's possible to do matchesSelector
1349 - // on a disconnected node (IE 9)
1350 - support.disconnectedMatch = matches.call( el, "*" );
1351 -
1352 - // This should fail with an exception
1353 - // Gecko does not error, returns false instead
1354 - matches.call( el, "[s!='']:x" );
1355 - rbuggyMatches.push( "!=", pseudos );
1356 - });
1357 - }
1358 -
1359 - rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
1360 - rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
1361 -
1362 - /* Contains
1363 - ---------------------------------------------------------------------- */
1364 - hasCompare = rnative.test( docElem.compareDocumentPosition );
1365 -
1366 - // Element contains another
1367 - // Purposefully self-exclusive
1368 - // As in, an element does not contain itself
1369 - contains = hasCompare || rnative.test( docElem.contains ) ?
1370 - function( a, b ) {
1371 - var adown = a.nodeType === 9 ? a.documentElement : a,
1372 - bup = b && b.parentNode;
1373 - return a === bup || !!( bup && bup.nodeType === 1 && (
1374 - adown.contains ?
1375 - adown.contains( bup ) :
1376 - a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
1377 - ));
1378 - } :
1379 - function( a, b ) {
1380 - if ( b ) {
1381 - while ( (b = b.parentNode) ) {
1382 - if ( b === a ) {
1383 - return true;
1384 - }
1385 - }
1386 - }
1387 - return false;
1388 - };
1389 -
1390 - /* Sorting
1391 - ---------------------------------------------------------------------- */
1392 -
1393 - // Document order sorting
1394 - sortOrder = hasCompare ?
1395 - function( a, b ) {
1396 -
1397 - // Flag for duplicate removal
1398 - if ( a === b ) {
1399 - hasDuplicate = true;
1400 - return 0;
1401 - }
1402 -
1403 - // Sort on method existence if only one input has compareDocumentPosition
1404 - var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
1405 - if ( compare ) {
1406 - return compare;
1407 - }
1408 -
1409 - // Calculate position if both inputs belong to the same document
1410 - compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
1411 - a.compareDocumentPosition( b ) :
1412 -
1413 - // Otherwise we know they are disconnected
1414 - 1;
1415 -
1416 - // Disconnected nodes
1417 - if ( compare & 1 ||
1418 - (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
1419 -
1420 - // Choose the first element that is related to our preferred document
1421 - if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {
1422 - return -1;
1423 - }
1424 - if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {
1425 - return 1;
1426 - }
1427 -
1428 - // Maintain original order
1429 - return sortInput ?
1430 - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
1431 - 0;
1432 - }
1433 -
1434 - return compare & 4 ? -1 : 1;
1435 - } :
1436 - function( a, b ) {
1437 - // Exit early if the nodes are identical
1438 - if ( a === b ) {
1439 - hasDuplicate = true;
1440 - return 0;
1441 - }
1442 -
1443 - var cur,
1444 - i = 0,
1445 - aup = a.parentNode,
1446 - bup = b.parentNode,
1447 - ap = [ a ],
1448 - bp = [ b ];
1449 -
1450 - // Parentless nodes are either documents or disconnected
1451 - if ( !aup || !bup ) {
1452 - return a === document ? -1 :
1453 - b === document ? 1 :
1454 - aup ? -1 :
1455 - bup ? 1 :
1456 - sortInput ?
1457 - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
1458 - 0;
1459 -
1460 - // If the nodes are siblings, we can do a quick check
1461 - } else if ( aup === bup ) {
1462 - return siblingCheck( a, b );
1463 - }
1464 -
1465 - // Otherwise we need full lists of their ancestors for comparison
1466 - cur = a;
1467 - while ( (cur = cur.parentNode) ) {
1468 - ap.unshift( cur );
1469 - }
1470 - cur = b;
1471 - while ( (cur = cur.parentNode) ) {
1472 - bp.unshift( cur );
1473 - }
1474 -
1475 - // Walk down the tree looking for a discrepancy
1476 - while ( ap[i] === bp[i] ) {
1477 - i++;
1478 - }
1479 -
1480 - return i ?
1481 - // Do a sibling check if the nodes have a common ancestor
1482 - siblingCheck( ap[i], bp[i] ) :
1483 -
1484 - // Otherwise nodes in our document sort first
1485 - ap[i] === preferredDoc ? -1 :
1486 - bp[i] === preferredDoc ? 1 :
1487 - 0;
1488 - };
1489 -
1490 - return document;
1491 - };
1492 -
1493 - Sizzle.matches = function( expr, elements ) {
1494 - return Sizzle( expr, null, null, elements );
1495 - };
1496 -
1497 - Sizzle.matchesSelector = function( elem, expr ) {
1498 - // Set document vars if needed
1499 - if ( ( elem.ownerDocument || elem ) !== document ) {
1500 - setDocument( elem );
1501 - }
1502 -
1503 - if ( support.matchesSelector && documentIsHTML &&
1504 - !nonnativeSelectorCache[ expr + " " ] &&
1505 - ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
1506 - ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {
1507 -
1508 - try {
1509 - var ret = matches.call( elem, expr );
1510 -
1511 - // IE 9's matchesSelector returns false on disconnected nodes
1512 - if ( ret || support.disconnectedMatch ||
1513 - // As well, disconnected nodes are said to be in a document
1514 - // fragment in IE 9
1515 - elem.document && elem.document.nodeType !== 11 ) {
1516 - return ret;
1517 - }
1518 - } catch (e) {
1519 - nonnativeSelectorCache( expr, true );
1520 - }
1521 - }
1522 -
1523 - return Sizzle( expr, document, null, [ elem ] ).length > 0;
1524 - };
1525 -
1526 - Sizzle.contains = function( context, elem ) {
1527 - // Set document vars if needed
1528 - if ( ( context.ownerDocument || context ) !== document ) {
1529 - setDocument( context );
1530 - }
1531 - return contains( context, elem );
1532 - };
1533 -
1534 - Sizzle.attr = function( elem, name ) {
1535 - // Set document vars if needed
1536 - if ( ( elem.ownerDocument || elem ) !== document ) {
1537 - setDocument( elem );
1538 - }
1539 -
1540 - var fn = Expr.attrHandle[ name.toLowerCase() ],
1541 - // Don't get fooled by Object.prototype properties (jQuery #13807)
1542 - val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
1543 - fn( elem, name, !documentIsHTML ) :
1544 - undefined;
1545 -
1546 - return val !== undefined ?
1547 - val :
1548 - support.attributes || !documentIsHTML ?
1549 - elem.getAttribute( name ) :
1550 - (val = elem.getAttributeNode(name)) && val.specified ?
1551 - val.value :
1552 - null;
1553 - };
1554 -
1555 - Sizzle.escape = function( sel ) {
1556 - return (sel + "").replace( rcssescape, fcssescape );
1557 - };
1558 -
1559 - Sizzle.error = function( msg ) {
1560 - throw new Error( "Syntax error, unrecognized expression: " + msg );
1561 - };
1562 -
1563 - /**
1564 - * Document sorting and removing duplicates
1565 - * @param {ArrayLike} results
1566 - */
1567 - Sizzle.uniqueSort = function( results ) {
1568 - var elem,
1569 - duplicates = [],
1570 - j = 0,
1571 - i = 0;
1572 -
1573 - // Unless we *know* we can detect duplicates, assume their presence
1574 - hasDuplicate = !support.detectDuplicates;
1575 - sortInput = !support.sortStable && results.slice( 0 );
1576 - results.sort( sortOrder );
1577 -
1578 - if ( hasDuplicate ) {
1579 - while ( (elem = results[i++]) ) {
1580 - if ( elem === results[ i ] ) {
1581 - j = duplicates.push( i );
1582 - }
1583 - }
1584 - while ( j-- ) {
1585 - results.splice( duplicates[ j ], 1 );
1586 - }
1587 - }
1588 -
1589 - // Clear input after sorting to release objects
1590 - // See https://github.com/jquery/sizzle/pull/225
1591 - sortInput = null;
1592 -
1593 - return results;
1594 - };
1595 -
1596 - /**
1597 - * Utility function for retrieving the text value of an array of DOM nodes
1598 - * @param {Array|Element} elem
1599 - */
1600 - getText = Sizzle.getText = function( elem ) {
1601 - var node,
1602 - ret = "",
1603 - i = 0,
1604 - nodeType = elem.nodeType;
1605 -
1606 - if ( !nodeType ) {
1607 - // If no nodeType, this is expected to be an array
1608 - while ( (node = elem[i++]) ) {
1609 - // Do not traverse comment nodes
1610 - ret += getText( node );
1611 - }
1612 - } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
1613 - // Use textContent for elements
1614 - // innerText usage removed for consistency of new lines (jQuery #11153)
1615 - if ( typeof elem.textContent === "string" ) {
1616 - return elem.textContent;
1617 - } else {
1618 - // Traverse its children
1619 - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
1620 - ret += getText( elem );
1621 - }
1622 - }
1623 - } else if ( nodeType === 3 || nodeType === 4 ) {
1624 - return elem.nodeValue;
1625 - }
1626 - // Do not include comment or processing instruction nodes
1627 -
1628 - return ret;
1629 - };
1630 -
1631 - Expr = Sizzle.selectors = {
1632 -
1633 - // Can be adjusted by the user
1634 - cacheLength: 50,
1635 -
1636 - createPseudo: markFunction,
1637 -
1638 - match: matchExpr,
1639 -
1640 - attrHandle: {},
1641 -
1642 - find: {},
1643 -
1644 - relative: {
1645 - ">": { dir: "parentNode", first: true },
1646 - " ": { dir: "parentNode" },
1647 - "+": { dir: "previousSibling", first: true },
1648 - "~": { dir: "previousSibling" }
1649 - },
1650 -
1651 - preFilter: {
1652 - "ATTR": function( match ) {
1653 - match[1] = match[1].replace( runescape, funescape );
1654 -
1655 - // Move the given value to match[3] whether quoted or unquoted
1656 - match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape );
1657 -
1658 - if ( match[2] === "~=" ) {
1659 - match[3] = " " + match[3] + " ";
1660 - }
1661 -
1662 - return match.slice( 0, 4 );
1663 - },
1664 -
1665 - "CHILD": function( match ) {
1666 - /* matches from matchExpr["CHILD"]
1667 - 1 type (only|nth|...)
1668 - 2 what (child|of-type)
1669 - 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
1670 - 4 xn-component of xn+y argument ([+-]?\d*n|)
1671 - 5 sign of xn-component
1672 - 6 x of xn-component
1673 - 7 sign of y-component
1674 - 8 y of y-component
1675 - */
1676 - match[1] = match[1].toLowerCase();
1677 -
1678 - if ( match[1].slice( 0, 3 ) === "nth" ) {
1679 - // nth-* requires argument
1680 - if ( !match[3] ) {
1681 - Sizzle.error( match[0] );
1682 - }
1683 -
1684 - // numeric x and y parameters for Expr.filter.CHILD
1685 - // remember that false/true cast respectively to 0/1
1686 - match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
1687 - match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
1688 -
1689 - // other types prohibit arguments
1690 - } else if ( match[3] ) {
1691 - Sizzle.error( match[0] );
1692 - }
1693 -
1694 - return match;
1695 - },
1696 -
1697 - "PSEUDO": function( match ) {
1698 - var excess,
1699 - unquoted = !match[6] && match[2];
1700 -
1701 - if ( matchExpr["CHILD"].test( match[0] ) ) {
1702 - return null;
1703 - }
1704 -
1705 - // Accept quoted arguments as-is
1706 - if ( match[3] ) {
1707 - match[2] = match[4] || match[5] || "";
1708 -
1709 - // Strip excess characters from unquoted arguments
1710 - } else if ( unquoted && rpseudo.test( unquoted ) &&
1711 - // Get excess from tokenize (recursively)
1712 - (excess = tokenize( unquoted, true )) &&
1713 - // advance to the next closing parenthesis
1714 - (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
1715 -
1716 - // excess is a negative index
1717 - match[0] = match[0].slice( 0, excess );
1718 - match[2] = unquoted.slice( 0, excess );
1719 - }
1720 -
1721 - // Return only captures needed by the pseudo filter method (type and argument)
1722 - return match.slice( 0, 3 );
1723 - }
1724 - },
1725 -
1726 - filter: {
1727 -
1728 - "TAG": function( nodeNameSelector ) {
1729 - var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
1730 - return nodeNameSelector === "*" ?
1731 - function() { return true; } :
1732 - function( elem ) {
1733 - return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
1734 - };
1735 - },
1736 -
1737 - "CLASS": function( className ) {
1738 - var pattern = classCache[ className + " " ];
1739 -
1740 - return pattern ||
1741 - (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
1742 - classCache( className, function( elem ) {
1743 - return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" );
1744 - });
1745 - },
1746 -
1747 - "ATTR": function( name, operator, check ) {
1748 - return function( elem ) {
1749 - var result = Sizzle.attr( elem, name );
1750 -
1751 - if ( result == null ) {
1752 - return operator === "!=";
1753 - }
1754 - if ( !operator ) {
1755 - return true;
1756 - }
1757 -
1758 - result += "";
1759 -
1760 - return operator === "=" ? result === check :
1761 - operator === "!=" ? result !== check :
1762 - operator === "^=" ? check && result.indexOf( check ) === 0 :
1763 - operator === "*=" ? check && result.indexOf( check ) > -1 :
1764 - operator === "$=" ? check && result.slice( -check.length ) === check :
1765 - operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 :
1766 - operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
1767 - false;
1768 - };
1769 - },
1770 -
1771 - "CHILD": function( type, what, argument, first, last ) {
1772 - var simple = type.slice( 0, 3 ) !== "nth",
1773 - forward = type.slice( -4 ) !== "last",
1774 - ofType = what === "of-type";
1775 -
1776 - return first === 1 && last === 0 ?
1777 -
1778 - // Shortcut for :nth-*(n)
1779 - function( elem ) {
1780 - return !!elem.parentNode;
1781 - } :
1782 -
1783 - function( elem, context, xml ) {
1784 - var cache, uniqueCache, outerCache, node, nodeIndex, start,
1785 - dir = simple !== forward ? "nextSibling" : "previousSibling",
1786 - parent = elem.parentNode,
1787 - name = ofType && elem.nodeName.toLowerCase(),
1788 - useCache = !xml && !ofType,
1789 - diff = false;
1790 -
1791 - if ( parent ) {
1792 -
1793 - // :(first|last|only)-(child|of-type)
1794 - if ( simple ) {
1795 - while ( dir ) {
1796 - node = elem;
1797 - while ( (node = node[ dir ]) ) {
1798 - if ( ofType ?
1799 - node.nodeName.toLowerCase() === name :
1800 - node.nodeType === 1 ) {
1801 -
1802 - return false;
1803 - }
1804 - }
1805 - // Reverse direction for :only-* (if we haven't yet done so)
1806 - start = dir = type === "only" && !start && "nextSibling";
1807 - }
1808 - return true;
1809 - }
1810 -
1811 - start = [ forward ? parent.firstChild : parent.lastChild ];
1812 -
1813 - // non-xml :nth-child(...) stores cache data on `parent`
1814 - if ( forward && useCache ) {
1815 -
1816 - // Seek `elem` from a previously-cached index
1817 -
1818 - // ...in a gzip-friendly way
1819 - node = parent;
1820 - outerCache = node[ expando ] || (node[ expando ] = {});
1821 -
1822 - // Support: IE <9 only
1823 - // Defend against cloned attroperties (jQuery gh-1709)
1824 - uniqueCache = outerCache[ node.uniqueID ] ||
1825 - (outerCache[ node.uniqueID ] = {});
1826 -
1827 - cache = uniqueCache[ type ] || [];
1828 - nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
1829 - diff = nodeIndex && cache[ 2 ];
1830 - node = nodeIndex && parent.childNodes[ nodeIndex ];
1831 -
1832 - while ( (node = ++nodeIndex && node && node[ dir ] ||
1833 -
1834 - // Fallback to seeking `elem` from the start
1835 - (diff = nodeIndex = 0) || start.pop()) ) {
1836 -
1837 - // When found, cache indexes on `parent` and break
1838 - if ( node.nodeType === 1 && ++diff && node === elem ) {
1839 - uniqueCache[ type ] = [ dirruns, nodeIndex, diff ];
1840 - break;
1841 - }
1842 - }
1843 -
1844 - } else {
1845 - // Use previously-cached element index if available
1846 - if ( useCache ) {
1847 - // ...in a gzip-friendly way
1848 - node = elem;
1849 - outerCache = node[ expando ] || (node[ expando ] = {});
1850 -
1851 - // Support: IE <9 only
1852 - // Defend against cloned attroperties (jQuery gh-1709)
1853 - uniqueCache = outerCache[ node.uniqueID ] ||
1854 - (outerCache[ node.uniqueID ] = {});
1855 -
1856 - cache = uniqueCache[ type ] || [];
1857 - nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
1858 - diff = nodeIndex;
1859 - }
1860 -
1861 - // xml :nth-child(...)
1862 - // or :nth-last-child(...) or :nth(-last)?-of-type(...)
1863 - if ( diff === false ) {
1864 - // Use the same loop as above to seek `elem` from the start
1865 - while ( (node = ++nodeIndex && node && node[ dir ] ||
1866 - (diff = nodeIndex = 0) || start.pop()) ) {
1867 -
1868 - if ( ( ofType ?
1869 - node.nodeName.toLowerCase() === name :
1870 - node.nodeType === 1 ) &&
1871 - ++diff ) {
1872 -
1873 - // Cache the index of each encountered element
1874 - if ( useCache ) {
1875 - outerCache = node[ expando ] || (node[ expando ] = {});
1876 -
1877 - // Support: IE <9 only
1878 - // Defend against cloned attroperties (jQuery gh-1709)
1879 - uniqueCache = outerCache[ node.uniqueID ] ||
1880 - (outerCache[ node.uniqueID ] = {});
1881 -
1882 - uniqueCache[ type ] = [ dirruns, diff ];
1883 - }
1884 -
1885 - if ( node === elem ) {
1886 - break;
1887 - }
1888 - }
1889 - }
1890 - }
1891 - }
1892 -
1893 - // Incorporate the offset, then check against cycle size
1894 - diff -= last;
1895 - return diff === first || ( diff % first === 0 && diff / first >= 0 );
1896 - }
1897 - };
1898 - },
1899 -
1900 - "PSEUDO": function( pseudo, argument ) {
1901 - // pseudo-class names are case-insensitive
1902 - // http://www.w3.org/TR/selectors/#pseudo-classes
1903 - // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
1904 - // Remember that setFilters inherits from pseudos
1905 - var args,
1906 - fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
1907 - Sizzle.error( "unsupported pseudo: " + pseudo );
1908 -
1909 - // The user may use createPseudo to indicate that
1910 - // arguments are needed to create the filter function
1911 - // just as Sizzle does
1912 - if ( fn[ expando ] ) {
1913 - return fn( argument );
1914 - }
1915 -
1916 - // But maintain support for old signatures
1917 - if ( fn.length > 1 ) {
1918 - args = [ pseudo, pseudo, "", argument ];
1919 - return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
1920 - markFunction(function( seed, matches ) {
1921 - var idx,
1922 - matched = fn( seed, argument ),
1923 - i = matched.length;
1924 - while ( i-- ) {
1925 - idx = indexOf( seed, matched[i] );
1926 - seed[ idx ] = !( matches[ idx ] = matched[i] );
1927 - }
1928 - }) :
1929 - function( elem ) {
1930 - return fn( elem, 0, args );
1931 - };
1932 - }
1933 -
1934 - return fn;
1935 - }
1936 - },
1937 -
1938 - pseudos: {
1939 - // Potentially complex pseudos
1940 - "not": markFunction(function( selector ) {
1941 - // Trim the selector passed to compile
1942 - // to avoid treating leading and trailing
1943 - // spaces as combinators
1944 - var input = [],
1945 - results = [],
1946 - matcher = compile( selector.replace( rtrim, "$1" ) );
1947 -
1948 - return matcher[ expando ] ?
1949 - markFunction(function( seed, matches, context, xml ) {
1950 - var elem,
1951 - unmatched = matcher( seed, null, xml, [] ),
1952 - i = seed.length;
1953 -
1954 - // Match elements unmatched by `matcher`
1955 - while ( i-- ) {
1956 - if ( (elem = unmatched[i]) ) {
1957 - seed[i] = !(matches[i] = elem);
1958 - }
1959 - }
1960 - }) :
1961 - function( elem, context, xml ) {
1962 - input[0] = elem;
1963 - matcher( input, null, xml, results );
1964 - // Don't keep the element (issue #299)
1965 - input[0] = null;
1966 - return !results.pop();
1967 - };
1968 - }),
1969 -
1970 - "has": markFunction(function( selector ) {
1971 - return function( elem ) {
1972 - return Sizzle( selector, elem ).length > 0;
1973 - };
1974 - }),
1975 -
1976 - "contains": markFunction(function( text ) {
1977 - text = text.replace( runescape, funescape );
1978 - return function( elem ) {
1979 - return ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;
1980 - };
1981 - }),
1982 -
1983 - // "Whether an element is represented by a :lang() selector
1984 - // is based solely on the element's language value
1985 - // being equal to the identifier C,
1986 - // or beginning with the identifier C immediately followed by "-".
1987 - // The matching of C against the element's language value is performed case-insensitively.
1988 - // The identifier C does not have to be a valid language name."
1989 - // http://www.w3.org/TR/selectors/#lang-pseudo
1990 - "lang": markFunction( function( lang ) {
1991 - // lang value must be a valid identifier
1992 - if ( !ridentifier.test(lang || "") ) {
1993 - Sizzle.error( "unsupported lang: " + lang );
1994 - }
1995 - lang = lang.replace( runescape, funescape ).toLowerCase();
1996 - return function( elem ) {
1997 - var elemLang;
1998 - do {
1999 - if ( (elemLang = documentIsHTML ?
2000 - elem.lang :
2001 - elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {
2002 -
2003 - elemLang = elemLang.toLowerCase();
2004 - return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
2005 - }
2006 - } while ( (elem = elem.parentNode) && elem.nodeType === 1 );
2007 - return false;
2008 - };
2009 - }),
2010 -
2011 - // Miscellaneous
2012 - "target": function( elem ) {
2013 - var hash = window.location && window.location.hash;
2014 - return hash && hash.slice( 1 ) === elem.id;
2015 - },
2016 -
2017 - "root": function( elem ) {
2018 - return elem === docElem;
2019 - },
2020 -
2021 - "focus": function( elem ) {
2022 - return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
2023 - },
2024 -
2025 - // Boolean properties
2026 - "enabled": createDisabledPseudo( false ),
2027 - "disabled": createDisabledPseudo( true ),
2028 -
2029 - "checked": function( elem ) {
2030 - // In CSS3, :checked should return both checked and selected elements
2031 - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
2032 - var nodeName = elem.nodeName.toLowerCase();
2033 - return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
2034 - },
2035 -
2036 - "selected": function( elem ) {
2037 - // Accessing this property makes selected-by-default
2038 - // options in Safari work properly
2039 - if ( elem.parentNode ) {
2040 - elem.parentNode.selectedIndex;
2041 - }
2042 -
2043 - return elem.selected === true;
2044 - },
2045 -
2046 - // Contents
2047 - "empty": function( elem ) {
2048 - // http://www.w3.org/TR/selectors/#empty-pseudo
2049 - // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
2050 - // but not by others (comment: 8; processing instruction: 7; etc.)
2051 - // nodeType < 6 works because attributes (2) do not appear as children
2052 - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
2053 - if ( elem.nodeType < 6 ) {
2054 - return false;
2055 - }
2056 - }
2057 - return true;
2058 - },
2059 -
2060 - "parent": function( elem ) {
2061 - return !Expr.pseudos["empty"]( elem );
2062 - },
2063 -
2064 - // Element/input types
2065 - "header": function( elem ) {
2066 - return rheader.test( elem.nodeName );
2067 - },
2068 -
2069 - "input": function( elem ) {
2070 - return rinputs.test( elem.nodeName );
2071 - },
2072 -
2073 - "button": function( elem ) {
2074 - var name = elem.nodeName.toLowerCase();
2075 - return name === "input" && elem.type === "button" || name === "button";
2076 - },
2077 -
2078 - "text": function( elem ) {
2079 - var attr;
2080 - return elem.nodeName.toLowerCase() === "input" &&
2081 - elem.type === "text" &&
2082 -
2083 - // Support: IE<8
2084 - // New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
2085 - ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" );
2086 - },
2087 -
2088 - // Position-in-collection
2089 - "first": createPositionalPseudo(function() {
2090 - return [ 0 ];
2091 - }),
2092 -
2093 - "last": createPositionalPseudo(function( matchIndexes, length ) {
2094 - return [ length - 1 ];
2095 - }),
2096 -
2097 - "eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
2098 - return [ argument < 0 ? argument + length : argument ];
2099 - }),
2100 -
2101 - "even": createPositionalPseudo(function( matchIndexes, length ) {
2102 - var i = 0;
2103 - for ( ; i < length; i += 2 ) {
2104 - matchIndexes.push( i );
2105 - }
2106 - return matchIndexes;
2107 - }),
2108 -
2109 - "odd": createPositionalPseudo(function( matchIndexes, length ) {
2110 - var i = 1;
2111 - for ( ; i < length; i += 2 ) {
2112 - matchIndexes.push( i );
2113 - }
2114 - return matchIndexes;
2115 - }),
2116 -
2117 - "lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
2118 - var i = argument < 0 ?
2119 - argument + length :
2120 - argument > length ?
2121 - length :
2122 - argument;
2123 - for ( ; --i >= 0; ) {
2124 - matchIndexes.push( i );
2125 - }
2126 - return matchIndexes;
2127 - }),
2128 -
2129 - "gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
2130 - var i = argument < 0 ? argument + length : argument;
2131 - for ( ; ++i < length; ) {
2132 - matchIndexes.push( i );
2133 - }
2134 - return matchIndexes;
2135 - })
2136 - }
2137 - };
2138 -
2139 - Expr.pseudos["nth"] = Expr.pseudos["eq"];
2140 -
2141 - // Add button/input type pseudos
2142 - for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
2143 - Expr.pseudos[ i ] = createInputPseudo( i );
2144 - }
2145 - for ( i in { submit: true, reset: true } ) {
2146 - Expr.pseudos[ i ] = createButtonPseudo( i );
2147 - }
2148 -
2149 - // Easy API for creating new setFilters
2150 - function setFilters() {}
2151 - setFilters.prototype = Expr.filters = Expr.pseudos;
2152 - Expr.setFilters = new setFilters();
2153 -
2154 - tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
2155 - var matched, match, tokens, type,
2156 - soFar, groups, preFilters,
2157 - cached = tokenCache[ selector + " " ];
2158 -
2159 - if ( cached ) {
2160 - return parseOnly ? 0 : cached.slice( 0 );
2161 - }
2162 -
2163 - soFar = selector;
2164 - groups = [];
2165 - preFilters = Expr.preFilter;
2166 -
2167 - while ( soFar ) {
2168 -
2169 - // Comma and first run
2170 - if ( !matched || (match = rcomma.exec( soFar )) ) {
2171 - if ( match ) {
2172 - // Don't consume trailing commas as valid
2173 - soFar = soFar.slice( match[0].length ) || soFar;
2174 - }
2175 - groups.push( (tokens = []) );
2176 - }
2177 -
2178 - matched = false;
2179 -
2180 - // Combinators
2181 - if ( (match = rcombinators.exec( soFar )) ) {
2182 - matched = match.shift();
2183 - tokens.push({
2184 - value: matched,
2185 - // Cast descendant combinators to space
2186 - type: match[0].replace( rtrim, " " )
2187 - });
2188 - soFar = soFar.slice( matched.length );
2189 - }
2190 -
2191 - // Filters
2192 - for ( type in Expr.filter ) {
2193 - if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
2194 - (match = preFilters[ type ]( match ))) ) {
2195 - matched = match.shift();
2196 - tokens.push({
2197 - value: matched,
2198 - type: type,
2199 - matches: match
2200 - });
2201 - soFar = soFar.slice( matched.length );
2202 - }
2203 - }
2204 -
2205 - if ( !matched ) {
2206 - break;
2207 - }
2208 - }
2209 -
2210 - // Return the length of the invalid excess
2211 - // if we're just parsing
2212 - // Otherwise, throw an error or return tokens
2213 - return parseOnly ?
2214 - soFar.length :
2215 - soFar ?
2216 - Sizzle.error( selector ) :
2217 - // Cache the tokens
2218 - tokenCache( selector, groups ).slice( 0 );
2219 - };
2220 -
2221 - function toSelector( tokens ) {
2222 - var i = 0,
2223 - len = tokens.length,
2224 - selector = "";
2225 - for ( ; i < len; i++ ) {
2226 - selector += tokens[i].value;
2227 - }
2228 - return selector;
2229 - }
2230 -
2231 - function addCombinator( matcher, combinator, base ) {
2232 - var dir = combinator.dir,
2233 - skip = combinator.next,
2234 - key = skip || dir,
2235 - checkNonElements = base && key === "parentNode",
2236 - doneName = done++;
2237 -
2238 - return combinator.first ?
2239 - // Check against closest ancestor/preceding element
2240 - function( elem, context, xml ) {
2241 - while ( (elem = elem[ dir ]) ) {
2242 - if ( elem.nodeType === 1 || checkNonElements ) {
2243 - return matcher( elem, context, xml );
2244 - }
2245 - }
2246 - return false;
2247 - } :
2248 -
2249 - // Check against all ancestor/preceding elements
2250 - function( elem, context, xml ) {
2251 - var oldCache, uniqueCache, outerCache,
2252 - newCache = [ dirruns, doneName ];
2253 -
2254 - // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching
2255 - if ( xml ) {
2256 - while ( (elem = elem[ dir ]) ) {
2257 - if ( elem.nodeType === 1 || checkNonElements ) {
2258 - if ( matcher( elem, context, xml ) ) {
2259 - return true;
2260 - }
2261 - }
2262 - }
2263 - } else {
2264 - while ( (elem = elem[ dir ]) ) {
2265 - if ( elem.nodeType === 1 || checkNonElements ) {
2266 - outerCache = elem[ expando ] || (elem[ expando ] = {});
2267 -
2268 - // Support: IE <9 only
2269 - // Defend against cloned attroperties (jQuery gh-1709)
2270 - uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});
2271 -
2272 - if ( skip && skip === elem.nodeName.toLowerCase() ) {
2273 - elem = elem[ dir ] || elem;
2274 - } else if ( (oldCache = uniqueCache[ key ]) &&
2275 - oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
2276 -
2277 - // Assign to newCache so results back-propagate to previous elements
2278 - return (newCache[ 2 ] = oldCache[ 2 ]);
2279 - } else {
2280 - // Reuse newcache so results back-propagate to previous elements
2281 - uniqueCache[ key ] = newCache;
2282 -
2283 - // A match means we're done; a fail means we have to keep checking
2284 - if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {
2285 - return true;
2286 - }
2287 - }
2288 - }
2289 - }
2290 - }
2291 - return false;
2292 - };
2293 - }
2294 -
2295 - function elementMatcher( matchers ) {
2296 - return matchers.length > 1 ?
2297 - function( elem, context, xml ) {
2298 - var i = matchers.length;
2299 - while ( i-- ) {
2300 - if ( !matchers[i]( elem, context, xml ) ) {
2301 - return false;
2302 - }
2303 - }
2304 - return true;
2305 - } :
2306 - matchers[0];
2307 - }
2308 -
2309 - function multipleContexts( selector, contexts, results ) {
2310 - var i = 0,
2311 - len = contexts.length;
2312 - for ( ; i < len; i++ ) {
2313 - Sizzle( selector, contexts[i], results );
2314 - }
2315 - return results;
2316 - }
2317 -
2318 - function condense( unmatched, map, filter, context, xml ) {
2319 - var elem,
2320 - newUnmatched = [],
2321 - i = 0,
2322 - len = unmatched.length,
2323 - mapped = map != null;
2324 -
2325 - for ( ; i < len; i++ ) {
2326 - if ( (elem = unmatched[i]) ) {
2327 - if ( !filter || filter( elem, context, xml ) ) {
2328 - newUnmatched.push( elem );
2329 - if ( mapped ) {
2330 - map.push( i );
2331 - }
2332 - }
2333 - }
2334 - }
2335 -
2336 - return newUnmatched;
2337 - }
2338 -
2339 - function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
2340 - if ( postFilter && !postFilter[ expando ] ) {
2341 - postFilter = setMatcher( postFilter );
2342 - }
2343 - if ( postFinder && !postFinder[ expando ] ) {
2344 - postFinder = setMatcher( postFinder, postSelector );
2345 - }
2346 - return markFunction(function( seed, results, context, xml ) {
2347 - var temp, i, elem,
2348 - preMap = [],
2349 - postMap = [],
2350 - preexisting = results.length,
2351 -
2352 - // Get initial elements from seed or context
2353 - elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
2354 -
2355 - // Prefilter to get matcher input, preserving a map for seed-results synchronization
2356 - matcherIn = preFilter && ( seed || !selector ) ?
2357 - condense( elems, preMap, preFilter, context, xml ) :
2358 - elems,
2359 -
2360 - matcherOut = matcher ?
2361 - // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
2362 - postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
2363 -
2364 - // ...intermediate processing is necessary
2365 - [] :
2366 -
2367 - // ...otherwise use results directly
2368 - results :
2369 - matcherIn;
2370 -
2371 - // Find primary matches
2372 - if ( matcher ) {
2373 - matcher( matcherIn, matcherOut, context, xml );
2374 - }
2375 -
2376 - // Apply postFilter
2377 - if ( postFilter ) {
2378 - temp = condense( matcherOut, postMap );
2379 - postFilter( temp, [], context, xml );
2380 -
2381 - // Un-match failing elements by moving them back to matcherIn
2382 - i = temp.length;
2383 - while ( i-- ) {
2384 - if ( (elem = temp[i]) ) {
2385 - matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
2386 - }
2387 - }
2388 - }
2389 -
2390 - if ( seed ) {
2391 - if ( postFinder || preFilter ) {
2392 - if ( postFinder ) {
2393 - // Get the final matcherOut by condensing this intermediate into postFinder contexts
2394 - temp = [];
2395 - i = matcherOut.length;
2396 - while ( i-- ) {
2397 - if ( (elem = matcherOut[i]) ) {
2398 - // Restore matcherIn since elem is not yet a final match
2399 - temp.push( (matcherIn[i] = elem) );
2400 - }
2401 - }
2402 - postFinder( null, (matcherOut = []), temp, xml );
2403 - }
2404 -
2405 - // Move matched elements from seed to results to keep them synchronized
2406 - i = matcherOut.length;
2407 - while ( i-- ) {
2408 - if ( (elem = matcherOut[i]) &&
2409 - (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {
2410 -
2411 - seed[temp] = !(results[temp] = elem);
2412 - }
2413 - }
2414 - }
2415 -
2416 - // Add elements to results, through postFinder if defined
2417 - } else {
2418 - matcherOut = condense(
2419 - matcherOut === results ?
2420 - matcherOut.splice( preexisting, matcherOut.length ) :
2421 - matcherOut
2422 - );
2423 - if ( postFinder ) {
2424 - postFinder( null, results, matcherOut, xml );
2425 - } else {
2426 - push.apply( results, matcherOut );
2427 - }
2428 - }
2429 - });
2430 - }
2431 -
2432 - function matcherFromTokens( tokens ) {
2433 - var checkContext, matcher, j,
2434 - len = tokens.length,
2435 - leadingRelative = Expr.relative[ tokens[0].type ],
2436 - implicitRelative = leadingRelative || Expr.relative[" "],
2437 - i = leadingRelative ? 1 : 0,
2438 -
2439 - // The foundational matcher ensures that elements are reachable from top-level context(s)
2440 - matchContext = addCombinator( function( elem ) {
2441 - return elem === checkContext;
2442 - }, implicitRelative, true ),
2443 - matchAnyContext = addCombinator( function( elem ) {
2444 - return indexOf( checkContext, elem ) > -1;
2445 - }, implicitRelative, true ),
2446 - matchers = [ function( elem, context, xml ) {
2447 - var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
2448 - (checkContext = context).nodeType ?
2449 - matchContext( elem, context, xml ) :
2450 - matchAnyContext( elem, context, xml ) );
2451 - // Avoid hanging onto element (issue #299)
2452 - checkContext = null;
2453 - return ret;
2454 - } ];
2455 -
2456 - for ( ; i < len; i++ ) {
2457 - if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
2458 - matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
2459 - } else {
2460 - matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
2461 -
2462 - // Return special upon seeing a positional matcher
2463 - if ( matcher[ expando ] ) {
2464 - // Find the next relative operator (if any) for proper handling
2465 - j = ++i;
2466 - for ( ; j < len; j++ ) {
2467 - if ( Expr.relative[ tokens[j].type ] ) {
2468 - break;
2469 - }
2470 - }
2471 - return setMatcher(
2472 - i > 1 && elementMatcher( matchers ),
2473 - i > 1 && toSelector(
2474 - // If the preceding token was a descendant combinator, insert an implicit any-element `*`
2475 - tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })
2476 - ).replace( rtrim, "$1" ),
2477 - matcher,
2478 - i < j && matcherFromTokens( tokens.slice( i, j ) ),
2479 - j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
2480 - j < len && toSelector( tokens )
2481 - );
2482 - }
2483 - matchers.push( matcher );
2484 - }
2485 - }
2486 -
2487 - return elementMatcher( matchers );
2488 - }
2489 -
2490 - function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
2491 - var bySet = setMatchers.length > 0,
2492 - byElement = elementMatchers.length > 0,
2493 - superMatcher = function( seed, context, xml, results, outermost ) {
2494 - var elem, j, matcher,
2495 - matchedCount = 0,
2496 - i = "0",
2497 - unmatched = seed && [],
2498 - setMatched = [],
2499 - contextBackup = outermostContext,
2500 - // We must always have either seed elements or outermost context
2501 - elems = seed || byElement && Expr.find["TAG"]( "*", outermost ),
2502 - // Use integer dirruns iff this is the outermost matcher
2503 - dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),
2504 - len = elems.length;
2505 -
2506 - if ( outermost ) {
2507 - outermostContext = context === document || context || outermost;
2508 - }
2509 -
2510 - // Add elements passing elementMatchers directly to results
2511 - // Support: IE<9, Safari
2512 - // Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
2513 - for ( ; i !== len && (elem = elems[i]) != null; i++ ) {
2514 - if ( byElement && elem ) {
2515 - j = 0;
2516 - if ( !context && elem.ownerDocument !== document ) {
2517 - setDocument( elem );
2518 - xml = !documentIsHTML;
2519 - }
2520 - while ( (matcher = elementMatchers[j++]) ) {
2521 - if ( matcher( elem, context || document, xml) ) {
2522 - results.push( elem );
2523 - break;
2524 - }
2525 - }
2526 - if ( outermost ) {
2527 - dirruns = dirrunsUnique;
2528 - }
2529 - }
2530 -
2531 - // Track unmatched elements for set filters
2532 - if ( bySet ) {
2533 - // They will have gone through all possible matchers
2534 - if ( (elem = !matcher && elem) ) {
2535 - matchedCount--;
2536 - }
2537 -
2538 - // Lengthen the array for every element, matched or not
2539 - if ( seed ) {
2540 - unmatched.push( elem );
2541 - }
2542 - }
2543 - }
2544 -
2545 - // `i` is now the count of elements visited above, and adding it to `matchedCount`
2546 - // makes the latter nonnegative.
2547 - matchedCount += i;
2548 -
2549 - // Apply set filters to unmatched elements
2550 - // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`
2551 - // equals `i`), unless we didn't visit _any_ elements in the above loop because we have
2552 - // no element matchers and no seed.
2553 - // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that
2554 - // case, which will result in a "00" `matchedCount` that differs from `i` but is also
2555 - // numerically zero.
2556 - if ( bySet && i !== matchedCount ) {
2557 - j = 0;
2558 - while ( (matcher = setMatchers[j++]) ) {
2559 - matcher( unmatched, setMatched, context, xml );
2560 - }
2561 -
2562 - if ( seed ) {
2563 - // Reintegrate element matches to eliminate the need for sorting
2564 - if ( matchedCount > 0 ) {
2565 - while ( i-- ) {
2566 - if ( !(unmatched[i] || setMatched[i]) ) {
2567 - setMatched[i] = pop.call( results );
2568 - }
2569 - }
2570 - }
2571 -
2572 - // Discard index placeholder values to get only actual matches
2573 - setMatched = condense( setMatched );
2574 - }
2575 -
2576 - // Add matches to results
2577 - push.apply( results, setMatched );
2578 -
2579 - // Seedless set matches succeeding multiple successful matchers stipulate sorting
2580 - if ( outermost && !seed && setMatched.length > 0 &&
2581 - ( matchedCount + setMatchers.length ) > 1 ) {
2582 -
2583 - Sizzle.uniqueSort( results );
2584 - }
2585 - }
2586 -
2587 - // Override manipulation of globals by nested matchers
2588 - if ( outermost ) {
2589 - dirruns = dirrunsUnique;
2590 - outermostContext = contextBackup;
2591 - }
2592 -
2593 - return unmatched;
2594 - };
2595 -
2596 - return bySet ?
2597 - markFunction( superMatcher ) :
2598 - superMatcher;
2599 - }
2600 -
2601 - compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
2602 - var i,
2603 - setMatchers = [],
2604 - elementMatchers = [],
2605 - cached = compilerCache[ selector + " " ];
2606 -
2607 - if ( !cached ) {
2608 - // Generate a function of recursive functions that can be used to check each element
2609 - if ( !match ) {
2610 - match = tokenize( selector );
2611 - }
2612 - i = match.length;
2613 - while ( i-- ) {
2614 - cached = matcherFromTokens( match[i] );
2615 - if ( cached[ expando ] ) {
2616 - setMatchers.push( cached );
2617 - } else {
2618 - elementMatchers.push( cached );
2619 - }
2620 - }
2621 -
2622 - // Cache the compiled function
2623 - cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
2624 -
2625 - // Save selector and tokenization
2626 - cached.selector = selector;
2627 - }
2628 - return cached;
2629 - };
2630 -
2631 - /**
2632 - * A low-level selection function that works with Sizzle's compiled
2633 - * selector functions
2634 - * @param {String|Function} selector A selector or a pre-compiled
2635 - * selector function built with Sizzle.compile
2636 - * @param {Element} context
2637 - * @param {Array} [results]
2638 - * @param {Array} [seed] A set of elements to match against
2639 - */
2640 - select = Sizzle.select = function( selector, context, results, seed ) {
2641 - var i, tokens, token, type, find,
2642 - compiled = typeof selector === "function" && selector,
2643 - match = !seed && tokenize( (selector = compiled.selector || selector) );
2644 -
2645 - results = results || [];
2646 -
2647 - // Try to minimize operations if there is only one selector in the list and no seed
2648 - // (the latter of which guarantees us context)
2649 - if ( match.length === 1 ) {
2650 -
2651 - // Reduce context if the leading compound selector is an ID
2652 - tokens = match[0] = match[0].slice( 0 );
2653 - if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
2654 - context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) {
2655 -
2656 - context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
2657 - if ( !context ) {
2658 - return results;
2659 -
2660 - // Precompiled matchers will still verify ancestry, so step up a level
2661 - } else if ( compiled ) {
2662 - context = context.parentNode;
2663 - }
2664 -
2665 - selector = selector.slice( tokens.shift().value.length );
2666 - }
2667 -
2668 - // Fetch a seed set for right-to-left matching
2669 - i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
2670 - while ( i-- ) {
2671 - token = tokens[i];
2672 -
2673 - // Abort if we hit a combinator
2674 - if ( Expr.relative[ (type = token.type) ] ) {
2675 - break;
2676 - }
2677 - if ( (find = Expr.find[ type ]) ) {
2678 - // Search, expanding context for leading sibling combinators
2679 - if ( (seed = find(
2680 - token.matches[0].replace( runescape, funescape ),
2681 - rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context
2682 - )) ) {
2683 -
2684 - // If seed is empty or no tokens remain, we can return early
2685 - tokens.splice( i, 1 );
2686 - selector = seed.length && toSelector( tokens );
2687 - if ( !selector ) {
2688 - push.apply( results, seed );
2689 - return results;
2690 - }
2691 -
2692 - break;
2693 - }
2694 - }
2695 - }
2696 - }
2697 -
2698 - // Compile and execute a filtering function if one is not provided
2699 - // Provide `match` to avoid retokenization if we modified the selector above
2700 - ( compiled || compile( selector, match ) )(
2701 - seed,
2702 - context,
2703 - !documentIsHTML,
2704 - results,
2705 - !context || rsibling.test( selector ) && testContext( context.parentNode ) || context
2706 - );
2707 - return results;
2708 - };
2709 -
2710 - // One-time assignments
2711 -
2712 - // Sort stability
2713 - support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
2714 -
2715 - // Support: Chrome 14-35+
2716 - // Always assume duplicates if they aren't passed to the comparison function
2717 - support.detectDuplicates = !!hasDuplicate;
2718 -
2719 - // Initialize against the default document
2720 - setDocument();
2721 -
2722 - // Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
2723 - // Detached nodes confoundingly follow *each other*
2724 - support.sortDetached = assert(function( el ) {
2725 - // Should return 1, but returns 4 (following)
2726 - return el.compareDocumentPosition( document.createElement("fieldset") ) & 1;
2727 - });
2728 -
2729 - // Support: IE<8
2730 - // Prevent attribute/property "interpolation"
2731 - // https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
2732 - if ( !assert(function( el ) {
2733 - el.innerHTML = "<a href='#'></a>";
2734 - return el.firstChild.getAttribute("href") === "#" ;
2735 - }) ) {
2736 - addHandle( "type|href|height|width", function( elem, name, isXML ) {
2737 - if ( !isXML ) {
2738 - return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
2739 - }
2740 - });
2741 - }
2742 -
2743 - // Support: IE<9
2744 - // Use defaultValue in place of getAttribute("value")
2745 - if ( !support.attributes || !assert(function( el ) {
2746 - el.innerHTML = "<input/>";
2747 - el.firstChild.setAttribute( "value", "" );
2748 - return el.firstChild.getAttribute( "value" ) === "";
2749 - }) ) {
2750 - addHandle( "value", function( elem, name, isXML ) {
2751 - if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
2752 - return elem.defaultValue;
2753 - }
2754 - });
2755 - }
2756 -
2757 - // Support: IE<9
2758 - // Use getAttributeNode to fetch booleans when getAttribute lies
2759 - if ( !assert(function( el ) {
2760 - return el.getAttribute("disabled") == null;
2761 - }) ) {
2762 - addHandle( booleans, function( elem, name, isXML ) {
2763 - var val;
2764 - if ( !isXML ) {
2765 - return elem[ name ] === true ? name.toLowerCase() :
2766 - (val = elem.getAttributeNode( name )) && val.specified ?
2767 - val.value :
2768 - null;
2769 - }
2770 - });
2771 - }
2772 -
2773 - return Sizzle;
2774 -
2775 - })( window );
2776 -
2777 -
2778 -
2779 - jQuery.find = Sizzle;
2780 - jQuery.expr = Sizzle.selectors;
2781 -
2782 - // Deprecated
2783 - jQuery.expr[ ":" ] = jQuery.expr.pseudos;
2784 - jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;
2785 - jQuery.text = Sizzle.getText;
2786 - jQuery.isXMLDoc = Sizzle.isXML;
2787 - jQuery.contains = Sizzle.contains;
2788 - jQuery.escapeSelector = Sizzle.escape;
2789 -
2790 -
2791 -
2792 -
2793 - var dir = function( elem, dir, until ) {
2794 - var matched = [],
2795 - truncate = until !== undefined;
2796 -
2797 - while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {
2798 - if ( elem.nodeType === 1 ) {
2799 - if ( truncate && jQuery( elem ).is( until ) ) {
2800 - break;
2801 - }
2802 - matched.push( elem );
2803 - }
2804 - }
2805 - return matched;
2806 - };
2807 -
2808 -
2809 - var siblings = function( n, elem ) {
2810 - var matched = [];
2811 -
2812 - for ( ; n; n = n.nextSibling ) {
2813 - if ( n.nodeType === 1 && n !== elem ) {
2814 - matched.push( n );
2815 - }
2816 - }
2817 -
2818 - return matched;
2819 - };
2820 -
2821 -
2822 - var rneedsContext = jQuery.expr.match.needsContext;
2823 -
2824 -
2825 -
2826 - function nodeName( elem, name ) {
2827 -
2828 - return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
2829 -
2830 - };
2831 - var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i );
2832 -
2833 -
2834 -
2835 - // Implement the identical functionality for filter and not
2836 - function winnow( elements, qualifier, not ) {
2837 - if ( isFunction( qualifier ) ) {
2838 - return jQuery.grep( elements, function( elem, i ) {
2839 - return !!qualifier.call( elem, i, elem ) !== not;
2840 - } );
2841 - }
2842 -
2843 - // Single element
2844 - if ( qualifier.nodeType ) {
2845 - return jQuery.grep( elements, function( elem ) {
2846 - return ( elem === qualifier ) !== not;
2847 - } );
2848 - }
2849 -
2850 - // Arraylike of elements (jQuery, arguments, Array)
2851 - if ( typeof qualifier !== "string" ) {
2852 - return jQuery.grep( elements, function( elem ) {
2853 - return ( indexOf.call( qualifier, elem ) > -1 ) !== not;
2854 - } );
2855 - }
2856 -
2857 - // Filtered directly for both simple and complex selectors
2858 - return jQuery.filter( qualifier, elements, not );
2859 - }
2860 -
2861 - jQuery.filter = function( expr, elems, not ) {
2862 - var elem = elems[ 0 ];
2863 -
2864 - if ( not ) {
2865 - expr = ":not(" + expr + ")";
2866 - }
2867 -
2868 - if ( elems.length === 1 && elem.nodeType === 1 ) {
2869 - return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];
2870 - }
2871 -
2872 - return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
2873 - return elem.nodeType === 1;
2874 - } ) );
2875 - };
2876 -
2877 - jQuery.fn.extend( {
2878 - find: function( selector ) {
2879 - var i, ret,
2880 - len = this.length,
2881 - self = this;
2882 -
2883 - if ( typeof selector !== "string" ) {
2884 - return this.pushStack( jQuery( selector ).filter( function() {
2885 - for ( i = 0; i < len; i++ ) {
2886 - if ( jQuery.contains( self[ i ], this ) ) {
2887 - return true;
2888 - }
2889 - }
2890 - } ) );
2891 - }
2892 -
2893 - ret = this.pushStack( [] );
2894 -
2895 - for ( i = 0; i < len; i++ ) {
2896 - jQuery.find( selector, self[ i ], ret );
2897 - }
2898 -
2899 - return len > 1 ? jQuery.uniqueSort( ret ) : ret;
2900 - },
2901 - filter: function( selector ) {
2902 - return this.pushStack( winnow( this, selector || [], false ) );
2903 - },
2904 - not: function( selector ) {
2905 - return this.pushStack( winnow( this, selector || [], true ) );
2906 - },
2907 - is: function( selector ) {
2908 - return !!winnow(
2909 - this,
2910 -
2911 - // If this is a positional/relative selector, check membership in the returned set
2912 - // so $("p:first").is("p:last") won't return true for a doc with two "p".
2913 - typeof selector === "string" && rneedsContext.test( selector ) ?
2914 - jQuery( selector ) :
2915 - selector || [],
2916 - false
2917 - ).length;
2918 - }
2919 - } );
2920 -
2921 -
2922 - // Initialize a jQuery object
2923 -
2924 -
2925 - // A central reference to the root jQuery(document)
2926 - var rootjQuery,
2927 -
2928 - // A simple way to check for HTML strings
2929 - // Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
2930 - // Strict HTML recognition (#11290: must start with <)
2931 - // Shortcut simple #id case for speed
2932 - rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,
2933 -
2934 - init = jQuery.fn.init = function( selector, context, root ) {
2935 - var match, elem;
2936 -
2937 - // HANDLE: $(""), $(null), $(undefined), $(false)
2938 - if ( !selector ) {
2939 - return this;
2940 - }
2941 -
2942 - // Method init() accepts an alternate rootjQuery
2943 - // so migrate can support jQuery.sub (gh-2101)
2944 - root = root || rootjQuery;
2945 -
2946 - // Handle HTML strings
2947 - if ( typeof selector === "string" ) {
2948 - if ( selector[ 0 ] === "<" &&
2949 - selector[ selector.length - 1 ] === ">" &&
2950 - selector.length >= 3 ) {
2951 -
2952 - // Assume that strings that start and end with <> are HTML and skip the regex check
2953 - match = [ null, selector, null ];
2954 -
2955 - } else {
2956 - match = rquickExpr.exec( selector );
2957 - }
2958 -
2959 - // Match html or make sure no context is specified for #id
2960 - if ( match && ( match[ 1 ] || !context ) ) {
2961 -
2962 - // HANDLE: $(html) -> $(array)
2963 - if ( match[ 1 ] ) {
2964 - context = context instanceof jQuery ? context[ 0 ] : context;
2965 -
2966 - // Option to run scripts is true for back-compat
2967 - // Intentionally let the error be thrown if parseHTML is not present
2968 - jQuery.merge( this, jQuery.parseHTML(
2969 - match[ 1 ],
2970 - context && context.nodeType ? context.ownerDocument || context : document,
2971 - true
2972 - ) );
2973 -
2974 - // HANDLE: $(html, props)
2975 - if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {
2976 - for ( match in context ) {
2977 -
2978 - // Properties of context are called as methods if possible
2979 - if ( isFunction( this[ match ] ) ) {
2980 - this[ match ]( context[ match ] );
2981 -
2982 - // ...and otherwise set as attributes
2983 - } else {
2984 - this.attr( match, context[ match ] );
2985 - }
2986 - }
2987 - }
2988 -
2989 - return this;
2990 -
2991 - // HANDLE: $(#id)
2992 - } else {
2993 - elem = document.getElementById( match[ 2 ] );
2994 -
2995 - if ( elem ) {
2996 -
2997 - // Inject the element directly into the jQuery object
2998 - this[ 0 ] = elem;
2999 - this.length = 1;
3000 - }
3001 - return this;
3002 - }
3003 -
3004 - // HANDLE: $(expr, $(...))
3005 - } else if ( !context || context.jquery ) {
3006 - return ( context || root ).find( selector );
3007 -
3008 - // HANDLE: $(expr, context)
3009 - // (which is just equivalent to: $(context).find(expr)
3010 - } else {
3011 - return this.constructor( context ).find( selector );
3012 - }
3013 -
3014 - // HANDLE: $(DOMElement)
3015 - } else if ( selector.nodeType ) {
3016 - this[ 0 ] = selector;
3017 - this.length = 1;
3018 - return this;
3019 -
3020 - // HANDLE: $(function)
3021 - // Shortcut for document ready
3022 - } else if ( isFunction( selector ) ) {
3023 - return root.ready !== undefined ?
3024 - root.ready( selector ) :
3025 -
3026 - // Execute immediately if ready is not present
3027 - selector( jQuery );
3028 - }
3029 -
3030 - return jQuery.makeArray( selector, this );
3031 - };
3032 -
3033 - // Give the init function the jQuery prototype for later instantiation
3034 - init.prototype = jQuery.fn;
3035 -
3036 - // Initialize central reference
3037 - rootjQuery = jQuery( document );
3038 -
3039 -
3040 - var rparentsprev = /^(?:parents|prev(?:Until|All))/,
3041 -
3042 - // Methods guaranteed to produce a unique set when starting from a unique set
3043 - guaranteedUnique = {
3044 - children: true,
3045 - contents: true,
3046 - next: true,
3047 - prev: true
3048 - };
3049 -
3050 - jQuery.fn.extend( {
3051 - has: function( target ) {
3052 - var targets = jQuery( target, this ),
3053 - l = targets.length;
3054 -
3055 - return this.filter( function() {
3056 - var i = 0;
3057 - for ( ; i < l; i++ ) {
3058 - if ( jQuery.contains( this, targets[ i ] ) ) {
3059 - return true;
3060 - }
3061 - }
3062 - } );
3063 - },
3064 -
3065 - closest: function( selectors, context ) {
3066 - var cur,
3067 - i = 0,
3068 - l = this.length,
3069 - matched = [],
3070 - targets = typeof selectors !== "string" && jQuery( selectors );
3071 -
3072 - // Positional selectors never match, since there's no _selection_ context
3073 - if ( !rneedsContext.test( selectors ) ) {
3074 - for ( ; i < l; i++ ) {
3075 - for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {
3076 -
3077 - // Always skip document fragments
3078 - if ( cur.nodeType < 11 && ( targets ?
3079 - targets.index( cur ) > -1 :
3080 -
3081 - // Don't pass non-elements to Sizzle
3082 - cur.nodeType === 1 &&
3083 - jQuery.find.matchesSelector( cur, selectors ) ) ) {
3084 -
3085 - matched.push( cur );
3086 - break;
3087 - }
3088 - }
3089 - }
3090 - }
3091 -
3092 - return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );
3093 - },
3094 -
3095 - // Determine the position of an element within the set
3096 - index: function( elem ) {
3097 -
3098 - // No argument, return index in parent
3099 - if ( !elem ) {
3100 - return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;
3101 - }
3102 -
3103 - // Index in selector
3104 - if ( typeof elem === "string" ) {
3105 - return indexOf.call( jQuery( elem ), this[ 0 ] );
3106 - }
3107 -
3108 - // Locate the position of the desired element
3109 - return indexOf.call( this,
3110 -
3111 - // If it receives a jQuery object, the first element is used
3112 - elem.jquery ? elem[ 0 ] : elem
3113 - );
3114 - },
3115 -
3116 - add: function( selector, context ) {
3117 - return this.pushStack(
3118 - jQuery.uniqueSort(
3119 - jQuery.merge( this.get(), jQuery( selector, context ) )
3120 - )
3121 - );
3122 - },
3123 -
3124 - addBack: function( selector ) {
3125 - return this.add( selector == null ?
3126 - this.prevObject : this.prevObject.filter( selector )
3127 - );
3128 - }
3129 - } );
3130 -
3131 - function sibling( cur, dir ) {
3132 - while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}
3133 - return cur;
3134 - }
3135 -
3136 - jQuery.each( {
3137 - parent: function( elem ) {
3138 - var parent = elem.parentNode;
3139 - return parent && parent.nodeType !== 11 ? parent : null;
3140 - },
3141 - parents: function( elem ) {
3142 - return dir( elem, "parentNode" );
3143 - },
3144 - parentsUntil: function( elem, i, until ) {
3145 - return dir( elem, "parentNode", until );
3146 - },
3147 - next: function( elem ) {
3148 - return sibling( elem, "nextSibling" );
3149 - },
3150 - prev: function( elem ) {
3151 - return sibling( elem, "previousSibling" );
3152 - },
3153 - nextAll: function( elem ) {
3154 - return dir( elem, "nextSibling" );
3155 - },
3156 - prevAll: function( elem ) {
3157 - return dir( elem, "previousSibling" );
3158 - },
3159 - nextUntil: function( elem, i, until ) {
3160 - return dir( elem, "nextSibling", until );
3161 - },
3162 - prevUntil: function( elem, i, until ) {
3163 - return dir( elem, "previousSibling", until );
3164 - },
3165 - siblings: function( elem ) {
3166 - return siblings( ( elem.parentNode || {} ).firstChild, elem );
3167 - },
3168 - children: function( elem ) {
3169 - return siblings( elem.firstChild );
3170 - },
3171 - contents: function( elem ) {
3172 - if ( typeof elem.contentDocument !== "undefined" ) {
3173 - return elem.contentDocument;
3174 - }
3175 -
3176 - // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only
3177 - // Treat the template element as a regular one in browsers that
3178 - // don't support it.
3179 - if ( nodeName( elem, "template" ) ) {
3180 - elem = elem.content || elem;
3181 - }
3182 -
3183 - return jQuery.merge( [], elem.childNodes );
3184 - }
3185 - }, function( name, fn ) {
3186 - jQuery.fn[ name ] = function( until, selector ) {
3187 - var matched = jQuery.map( this, fn, until );
3188 -
3189 - if ( name.slice( -5 ) !== "Until" ) {
3190 - selector = until;
3191 - }
3192 -
3193 - if ( selector && typeof selector === "string" ) {
3194 - matched = jQuery.filter( selector, matched );
3195 - }
3196 -
3197 - if ( this.length > 1 ) {
3198 -
3199 - // Remove duplicates
3200 - if ( !guaranteedUnique[ name ] ) {
3201 - jQuery.uniqueSort( matched );
3202 - }
3203 -
3204 - // Reverse order for parents* and prev-derivatives
3205 - if ( rparentsprev.test( name ) ) {
3206 - matched.reverse();
3207 - }
3208 - }
3209 -
3210 - return this.pushStack( matched );
3211 - };
3212 - } );
3213 - var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g );
3214 -
3215 -
3216 -
3217 - // Convert String-formatted options into Object-formatted ones
3218 - function createOptions( options ) {
3219 - var object = {};
3220 - jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {
3221 - object[ flag ] = true;
3222 - } );
3223 - return object;
3224 - }
3225 -
3226 - /*
3227 - * Create a callback list using the following parameters:
3228 - *
3229 - * options: an optional list of space-separated options that will change how
3230 - * the callback list behaves or a more traditional option object
3231 - *
3232 - * By default a callback list will act like an event callback list and can be
3233 - * "fired" multiple times.
3234 - *
3235 - * Possible options:
3236 - *
3237 - * once: will ensure the callback list can only be fired once (like a Deferred)
3238 - *
3239 - * memory: will keep track of previous values and will call any callback added
3240 - * after the list has been fired right away with the latest "memorized"
3241 - * values (like a Deferred)
3242 - *
3243 - * unique: will ensure a callback can only be added once (no duplicate in the list)
3244 - *
3245 - * stopOnFalse: interrupt callings when a callback returns false
3246 - *
3247 - */
3248 - jQuery.Callbacks = function( options ) {
3249 -
3250 - // Convert options from String-formatted to Object-formatted if needed
3251 - // (we check in cache first)
3252 - options = typeof options === "string" ?
3253 - createOptions( options ) :
3254 - jQuery.extend( {}, options );
3255 -
3256 - var // Flag to know if list is currently firing
3257 - firing,
3258 -
3259 - // Last fire value for non-forgettable lists
3260 - memory,
3261 -
3262 - // Flag to know if list was already fired
3263 - fired,
3264 -
3265 - // Flag to prevent firing
3266 - locked,
3267 -
3268 - // Actual callback list
3269 - list = [],
3270 -
3271 - // Queue of execution data for repeatable lists
3272 - queue = [],
3273 -
3274 - // Index of currently firing callback (modified by add/remove as needed)
3275 - firingIndex = -1,
3276 -
3277 - // Fire callbacks
3278 - fire = function() {
3279 -
3280 - // Enforce single-firing
3281 - locked = locked || options.once;
3282 -
3283 - // Execute callbacks for all pending executions,
3284 - // respecting firingIndex overrides and runtime changes
3285 - fired = firing = true;
3286 - for ( ; queue.length; firingIndex = -1 ) {
3287 - memory = queue.shift();
3288 - while ( ++firingIndex < list.length ) {
3289 -
3290 - // Run callback and check for early termination
3291 - if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&
3292 - options.stopOnFalse ) {
3293 -
3294 - // Jump to end and forget the data so .add doesn't re-fire
3295 - firingIndex = list.length;
3296 - memory = false;
3297 - }
3298 - }
3299 - }
3300 -
3301 - // Forget the data if we're done with it
3302 - if ( !options.memory ) {
3303 - memory = false;
3304 - }
3305 -
3306 - firing = false;
3307 -
3308 - // Clean up if we're done firing for good
3309 - if ( locked ) {
3310 -
3311 - // Keep an empty list if we have data for future add calls
3312 - if ( memory ) {
3313 - list = [];
3314 -
3315 - // Otherwise, this object is spent
3316 - } else {
3317 - list = "";
3318 - }
3319 - }
3320 - },
3321 -
3322 - // Actual Callbacks object
3323 - self = {
3324 -
3325 - // Add a callback or a collection of callbacks to the list
3326 - add: function() {
3327 - if ( list ) {
3328 -
3329 - // If we have memory from a past run, we should fire after adding
3330 - if ( memory && !firing ) {
3331 - firingIndex = list.length - 1;
3332 - queue.push( memory );
3333 - }
3334 -
3335 - ( function add( args ) {
3336 - jQuery.each( args, function( _, arg ) {
3337 - if ( isFunction( arg ) ) {
3338 - if ( !options.unique || !self.has( arg ) ) {
3339 - list.push( arg );
3340 - }
3341 - } else if ( arg && arg.length && toType( arg ) !== "string" ) {
3342 -
3343 - // Inspect recursively
3344 - add( arg );
3345 - }
3346 - } );
3347 - } )( arguments );
3348 -
3349 - if ( memory && !firing ) {
3350 - fire();
3351 - }
3352 - }
3353 - return this;
3354 - },
3355 -
3356 - // Remove a callback from the list
3357 - remove: function() {
3358 - jQuery.each( arguments, function( _, arg ) {
3359 - var index;
3360 - while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
3361 - list.splice( index, 1 );
3362 -
3363 - // Handle firing indexes
3364 - if ( index <= firingIndex ) {
3365 - firingIndex--;
3366 - }
3367 - }
3368 - } );
3369 - return this;
3370 - },
3371 -
3372 - // Check if a given callback is in the list.
3373 - // If no argument is given, return whether or not list has callbacks attached.
3374 - has: function( fn ) {
3375 - return fn ?
3376 - jQuery.inArray( fn, list ) > -1 :
3377 - list.length > 0;
3378 - },
3379 -
3380 - // Remove all callbacks from the list
3381 - empty: function() {
3382 - if ( list ) {
3383 - list = [];
3384 - }
3385 - return this;
3386 - },
3387 -
3388 - // Disable .fire and .add
3389 - // Abort any current/pending executions
3390 - // Clear all callbacks and values
3391 - disable: function() {
3392 - locked = queue = [];
3393 - list = memory = "";
3394 - return this;
3395 - },
3396 - disabled: function() {
3397 - return !list;
3398 - },
3399 -
3400 - // Disable .fire
3401 - // Also disable .add unless we have memory (since it would have no effect)
3402 - // Abort any pending executions
3403 - lock: function() {
3404 - locked = queue = [];
3405 - if ( !memory && !firing ) {
3406 - list = memory = "";
3407 - }
3408 - return this;
3409 - },
3410 - locked: function() {
3411 - return !!locked;
3412 - },
3413 -
3414 - // Call all callbacks with the given context and arguments
3415 - fireWith: function( context, args ) {
3416 - if ( !locked ) {
3417 - args = args || [];
3418 - args = [ context, args.slice ? args.slice() : args ];
3419 - queue.push( args );
3420 - if ( !firing ) {
3421 - fire();
3422 - }
3423 - }
3424 - return this;
3425 - },
3426 -
3427 - // Call all the callbacks with the given arguments
3428 - fire: function() {
3429 - self.fireWith( this, arguments );
3430 - return this;
3431 - },
3432 -
3433 - // To know if the callbacks have already been called at least once
3434 - fired: function() {
3435 - return !!fired;
3436 - }
3437 - };
3438 -
3439 - return self;
3440 - };
3441 -
3442 -
3443 - function Identity( v ) {
3444 - return v;
3445 - }
3446 - function Thrower( ex ) {
3447 - throw ex;
3448 - }
3449 -
3450 - function adoptValue( value, resolve, reject, noValue ) {
3451 - var method;
3452 -
3453 - try {
3454 -
3455 - // Check for promise aspect first to privilege synchronous behavior
3456 - if ( value && isFunction( ( method = value.promise ) ) ) {
3457 - method.call( value ).done( resolve ).fail( reject );
3458 -
3459 - // Other thenables
3460 - } else if ( value && isFunction( ( method = value.then ) ) ) {
3461 - method.call( value, resolve, reject );
3462 -
3463 - // Other non-thenables
3464 - } else {
3465 -
3466 - // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:
3467 - // * false: [ value ].slice( 0 ) => resolve( value )
3468 - // * true: [ value ].slice( 1 ) => resolve()
3469 - resolve.apply( undefined, [ value ].slice( noValue ) );
3470 - }
3471 -
3472 - // For Promises/A+, convert exceptions into rejections
3473 - // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in
3474 - // Deferred#then to conditionally suppress rejection.
3475 - } catch ( value ) {
3476 -
3477 - // Support: Android 4.0 only
3478 - // Strict mode functions invoked without .call/.apply get global-object context
3479 - reject.apply( undefined, [ value ] );
3480 - }
3481 - }
3482 -
3483 - jQuery.extend( {
3484 -
3485 - Deferred: function( func ) {
3486 - var tuples = [
3487 -
3488 - // action, add listener, callbacks,
3489 - // ... .then handlers, argument index, [final state]
3490 - [ "notify", "progress", jQuery.Callbacks( "memory" ),
3491 - jQuery.Callbacks( "memory" ), 2 ],
3492 - [ "resolve", "done", jQuery.Callbacks( "once memory" ),
3493 - jQuery.Callbacks( "once memory" ), 0, "resolved" ],
3494 - [ "reject", "fail", jQuery.Callbacks( "once memory" ),
3495 - jQuery.Callbacks( "once memory" ), 1, "rejected" ]
3496 - ],
3497 - state = "pending",
3498 - promise = {
3499 - state: function() {
3500 - return state;
3501 - },
3502 - always: function() {
3503 - deferred.done( arguments ).fail( arguments );
3504 - return this;
3505 - },
3506 - "catch": function( fn ) {
3507 - return promise.then( null, fn );
3508 - },
3509 -
3510 - // Keep pipe for back-compat
3511 - pipe: function( /* fnDone, fnFail, fnProgress */ ) {
3512 - var fns = arguments;
3513 -
3514 - return jQuery.Deferred( function( newDefer ) {
3515 - jQuery.each( tuples, function( i, tuple ) {
3516 -
3517 - // Map tuples (progress, done, fail) to arguments (done, fail, progress)
3518 - var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];
3519 -
3520 - // deferred.progress(function() { bind to newDefer or newDefer.notify })
3521 - // deferred.done(function() { bind to newDefer or newDefer.resolve })
3522 - // deferred.fail(function() { bind to newDefer or newDefer.reject })
3523 - deferred[ tuple[ 1 ] ]( function() {
3524 - var returned = fn && fn.apply( this, arguments );
3525 - if ( returned && isFunction( returned.promise ) ) {
3526 - returned.promise()
3527 - .progress( newDefer.notify )
3528 - .done( newDefer.resolve )
3529 - .fail( newDefer.reject );
3530 - } else {
3531 - newDefer[ tuple[ 0 ] + "With" ](
3532 - this,
3533 - fn ? [ returned ] : arguments
3534 - );
3535 - }
3536 - } );
3537 - } );
3538 - fns = null;
3539 - } ).promise();
3540 - },
3541 - then: function( onFulfilled, onRejected, onProgress ) {
3542 - var maxDepth = 0;
3543 - function resolve( depth, deferred, handler, special ) {
3544 - return function() {
3545 - var that = this,
3546 - args = arguments,
3547 - mightThrow = function() {
3548 - var returned, then;
3549 -
3550 - // Support: Promises/A+ section 2.3.3.3.3
3551 - // https://promisesaplus.com/#point-59
3552 - // Ignore double-resolution attempts
3553 - if ( depth < maxDepth ) {
3554 - return;
3555 - }
3556 -
3557 - returned = handler.apply( that, args );
3558 -
3559 - // Support: Promises/A+ section 2.3.1
3560 - // https://promisesaplus.com/#point-48
3561 - if ( returned === deferred.promise() ) {
3562 - throw new TypeError( "Thenable self-resolution" );
3563 - }
3564 -
3565 - // Support: Promises/A+ sections 2.3.3.1, 3.5
3566 - // https://promisesaplus.com/#point-54
3567 - // https://promisesaplus.com/#point-75
3568 - // Retrieve `then` only once
3569 - then = returned &&
3570 -
3571 - // Support: Promises/A+ section 2.3.4
3572 - // https://promisesaplus.com/#point-64
3573 - // Only check objects and functions for thenability
3574 - ( typeof returned === "object" ||
3575 - typeof returned === "function" ) &&
3576 - returned.then;
3577 -
3578 - // Handle a returned thenable
3579 - if ( isFunction( then ) ) {
3580 -
3581 - // Special processors (notify) just wait for resolution
3582 - if ( special ) {
3583 - then.call(
3584 - returned,
3585 - resolve( maxDepth, deferred, Identity, special ),
3586 - resolve( maxDepth, deferred, Thrower, special )
3587 - );
3588 -
3589 - // Normal processors (resolve) also hook into progress
3590 - } else {
3591 -
3592 - // ...and disregard older resolution values
3593 - maxDepth++;
3594 -
3595 - then.call(
3596 - returned,
3597 - resolve( maxDepth, deferred, Identity, special ),
3598 - resolve( maxDepth, deferred, Thrower, special ),
3599 - resolve( maxDepth, deferred, Identity,
3600 - deferred.notifyWith )
3601 - );
3602 - }
3603 -
3604 - // Handle all other returned values
3605 - } else {
3606 -
3607 - // Only substitute handlers pass on context
3608 - // and multiple values (non-spec behavior)
3609 - if ( handler !== Identity ) {
3610 - that = undefined;
3611 - args = [ returned ];
3612 - }
3613 -
3614 - // Process the value(s)
3615 - // Default process is resolve
3616 - ( special || deferred.resolveWith )( that, args );
3617 - }
3618 - },
3619 -
3620 - // Only normal processors (resolve) catch and reject exceptions
3621 - process = special ?
3622 - mightThrow :
3623 - function() {
3624 - try {
3625 - mightThrow();
3626 - } catch ( e ) {
3627 -
3628 - if ( jQuery.Deferred.exceptionHook ) {
3629 - jQuery.Deferred.exceptionHook( e,
3630 - process.stackTrace );
3631 - }
3632 -
3633 - // Support: Promises/A+ section 2.3.3.3.4.1
3634 - // https://promisesaplus.com/#point-61
3635 - // Ignore post-resolution exceptions
3636 - if ( depth + 1 >= maxDepth ) {
3637 -
3638 - // Only substitute handlers pass on context
3639 - // and multiple values (non-spec behavior)
3640 - if ( handler !== Thrower ) {
3641 - that = undefined;
3642 - args = [ e ];
3643 - }
3644 -
3645 - deferred.rejectWith( that, args );
3646 - }
3647 - }
3648 - };
3649 -
3650 - // Support: Promises/A+ section 2.3.3.3.1
3651 - // https://promisesaplus.com/#point-57
3652 - // Re-resolve promises immediately to dodge false rejection from
3653 - // subsequent errors
3654 - if ( depth ) {
3655 - process();
3656 - } else {
3657 -
3658 - // Call an optional hook to record the stack, in case of exception
3659 - // since it's otherwise lost when execution goes async
3660 - if ( jQuery.Deferred.getStackHook ) {
3661 - process.stackTrace = jQuery.Deferred.getStackHook();
3662 - }
3663 - window.setTimeout( process );
3664 - }
3665 - };
3666 - }
3667 -
3668 - return jQuery.Deferred( function( newDefer ) {
3669 -
3670 - // progress_handlers.add( ... )
3671 - tuples[ 0 ][ 3 ].add(
3672 - resolve(
3673 - 0,
3674 - newDefer,
3675 - isFunction( onProgress ) ?
3676 - onProgress :
3677 - Identity,
3678 - newDefer.notifyWith
3679 - )
3680 - );
3681 -
3682 - // fulfilled_handlers.add( ... )
3683 - tuples[ 1 ][ 3 ].add(
3684 - resolve(
3685 - 0,
3686 - newDefer,
3687 - isFunction( onFulfilled ) ?
3688 - onFulfilled :
3689 - Identity
3690 - )
3691 - );
3692 -
3693 - // rejected_handlers.add( ... )
3694 - tuples[ 2 ][ 3 ].add(
3695 - resolve(
3696 - 0,
3697 - newDefer,
3698 - isFunction( onRejected ) ?
3699 - onRejected :
3700 - Thrower
3701 - )
3702 - );
3703 - } ).promise();
3704 - },
3705 -
3706 - // Get a promise for this deferred
3707 - // If obj is provided, the promise aspect is added to the object
3708 - promise: function( obj ) {
3709 - return obj != null ? jQuery.extend( obj, promise ) : promise;
3710 - }
3711 - },
3712 - deferred = {};
3713 -
3714 - // Add list-specific methods
3715 - jQuery.each( tuples, function( i, tuple ) {
3716 - var list = tuple[ 2 ],
3717 - stateString = tuple[ 5 ];
3718 -
3719 - // promise.progress = list.add
3720 - // promise.done = list.add
3721 - // promise.fail = list.add
3722 - promise[ tuple[ 1 ] ] = list.add;
3723 -
3724 - // Handle state
3725 - if ( stateString ) {
3726 - list.add(
3727 - function() {
3728 -
3729 - // state = "resolved" (i.e., fulfilled)
3730 - // state = "rejected"
3731 - state = stateString;
3732 - },
3733 -
3734 - // rejected_callbacks.disable
3735 - // fulfilled_callbacks.disable
3736 - tuples[ 3 - i ][ 2 ].disable,
3737 -
3738 - // rejected_handlers.disable
3739 - // fulfilled_handlers.disable
3740 - tuples[ 3 - i ][ 3 ].disable,
3741 -
3742 - // progress_callbacks.lock
3743 - tuples[ 0 ][ 2 ].lock,
3744 -
3745 - // progress_handlers.lock
3746 - tuples[ 0 ][ 3 ].lock
3747 - );
3748 - }
3749 -
3750 - // progress_handlers.fire
3751 - // fulfilled_handlers.fire
3752 - // rejected_handlers.fire
3753 - list.add( tuple[ 3 ].fire );
3754 -
3755 - // deferred.notify = function() { deferred.notifyWith(...) }
3756 - // deferred.resolve = function() { deferred.resolveWith(...) }
3757 - // deferred.reject = function() { deferred.rejectWith(...) }
3758 - deferred[ tuple[ 0 ] ] = function() {
3759 - deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments );
3760 - return this;
3761 - };
3762 -
3763 - // deferred.notifyWith = list.fireWith
3764 - // deferred.resolveWith = list.fireWith
3765 - // deferred.rejectWith = list.fireWith
3766 - deferred[ tuple[ 0 ] + "With" ] = list.fireWith;
3767 - } );
3768 -
3769 - // Make the deferred a promise
3770 - promise.promise( deferred );
3771 -
3772 - // Call given func if any
3773 - if ( func ) {
3774 - func.call( deferred, deferred );
3775 - }
3776 -
3777 - // All done!
3778 - return deferred;
3779 - },
3780 -
3781 - // Deferred helper
3782 - when: function( singleValue ) {
3783 - var
3784 -
3785 - // count of uncompleted subordinates
3786 - remaining = arguments.length,
3787 -
3788 - // count of unprocessed arguments
3789 - i = remaining,
3790 -
3791 - // subordinate fulfillment data
3792 - resolveContexts = Array( i ),
3793 - resolveValues = slice.call( arguments ),
3794 -
3795 - // the master Deferred
3796 - master = jQuery.Deferred(),
3797 -
3798 - // subordinate callback factory
3799 - updateFunc = function( i ) {
3800 - return function( value ) {
3801 - resolveContexts[ i ] = this;
3802 - resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
3803 - if ( !( --remaining ) ) {
3804 - master.resolveWith( resolveContexts, resolveValues );
3805 - }
3806 - };
3807 - };
3808 -
3809 - // Single- and empty arguments are adopted like Promise.resolve
3810 - if ( remaining <= 1 ) {
3811 - adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject,
3812 - !remaining );
3813 -
3814 - // Use .then() to unwrap secondary thenables (cf. gh-3000)
3815 - if ( master.state() === "pending" ||
3816 - isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {
3817 -
3818 - return master.then();
3819 - }
3820 - }
3821 -
3822 - // Multiple arguments are aggregated like Promise.all array elements
3823 - while ( i-- ) {
3824 - adoptValue( resolveValues[ i ], updateFunc( i ), master.reject );
3825 - }
3826 -
3827 - return master.promise();
3828 - }
3829 - } );
3830 -
3831 -
3832 - // These usually indicate a programmer mistake during development,
3833 - // warn about them ASAP rather than swallowing them by default.
3834 - var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
3835 -
3836 - jQuery.Deferred.exceptionHook = function( error, stack ) {
3837 -
3838 - // Support: IE 8 - 9 only
3839 - // Console exists when dev tools are open, which can happen at any time
3840 - if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {
3841 - window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack );
3842 - }
3843 - };
3844 -
3845 -
3846 -
3847 -
3848 - jQuery.readyException = function( error ) {
3849 - window.setTimeout( function() {
3850 - throw error;
3851 - } );
3852 - };
3853 -
3854 -
3855 -
3856 -
3857 - // The deferred used on DOM ready
3858 - var readyList = jQuery.Deferred();
3859 -
3860 - jQuery.fn.ready = function( fn ) {
3861 -
3862 - readyList
3863 - .then( fn )
3864 -
3865 - // Wrap jQuery.readyException in a function so that the lookup
3866 - // happens at the time of error handling instead of callback
3867 - // registration.
3868 - .catch( function( error ) {
3869 - jQuery.readyException( error );
3870 - } );
3871 -
3872 - return this;
3873 - };
3874 -
3875 - jQuery.extend( {
3876 -
3877 - // Is the DOM ready to be used? Set to true once it occurs.
3878 - isReady: false,
3879 -
3880 - // A counter to track how many items to wait for before
3881 - // the ready event fires. See #6781
3882 - readyWait: 1,
3883 -
3884 - // Handle when the DOM is ready
3885 - ready: function( wait ) {
3886 -
3887 - // Abort if there are pending holds or we're already ready
3888 - if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
3889 - return;
3890 - }
3891 -
3892 - // Remember that the DOM is ready
3893 - jQuery.isReady = true;
3894 -
3895 - // If a normal DOM Ready event fired, decrement, and wait if need be
3896 - if ( wait !== true && --jQuery.readyWait > 0 ) {
3897 - return;
3898 - }
3899 -
3900 - // If there are functions bound, to execute
3901 - readyList.resolveWith( document, [ jQuery ] );
3902 - }
3903 - } );
3904 -
3905 - jQuery.ready.then = readyList.then;
3906 -
3907 - // The ready event handler and self cleanup method
3908 - function completed() {
3909 - document.removeEventListener( "DOMContentLoaded", completed );
3910 - window.removeEventListener( "load", completed );
3911 - jQuery.ready();
3912 - }
3913 -
3914 - // Catch cases where $(document).ready() is called
3915 - // after the browser event has already occurred.
3916 - // Support: IE <=9 - 10 only
3917 - // Older IE sometimes signals "interactive" too soon
3918 - if ( document.readyState === "complete" ||
3919 - ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) {
3920 -
3921 - // Handle it asynchronously to allow scripts the opportunity to delay ready
3922 - window.setTimeout( jQuery.ready );
3923 -
3924 - } else {
3925 -
3926 - // Use the handy event callback
3927 - document.addEventListener( "DOMContentLoaded", completed );
3928 -
3929 - // A fallback to window.onload, that will always work
3930 - window.addEventListener( "load", completed );
3931 - }
3932 -
3933 -
3934 -
3935 -
3936 - // Multifunctional method to get and set values of a collection
3937 - // The value/s can optionally be executed if it's a function
3938 - var access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
3939 - var i = 0,
3940 - len = elems.length,
3941 - bulk = key == null;
3942 -
3943 - // Sets many values
3944 - if ( toType( key ) === "object" ) {
3945 - chainable = true;
3946 - for ( i in key ) {
3947 - access( elems, fn, i, key[ i ], true, emptyGet, raw );
3948 - }
3949 -
3950 - // Sets one value
3951 - } else if ( value !== undefined ) {
3952 - chainable = true;
3953 -
3954 - if ( !isFunction( value ) ) {
3955 - raw = true;
3956 - }
3957 -
3958 - if ( bulk ) {
3959 -
3960 - // Bulk operations run against the entire set
3961 - if ( raw ) {
3962 - fn.call( elems, value );
3963 - fn = null;
3964 -
3965 - // ...except when executing function values
3966 - } else {
3967 - bulk = fn;
3968 - fn = function( elem, key, value ) {
3969 - return bulk.call( jQuery( elem ), value );
3970 - };
3971 - }
3972 - }
3973 -
3974 - if ( fn ) {
3975 - for ( ; i < len; i++ ) {
3976 - fn(
3977 - elems[ i ], key, raw ?
3978 - value :
3979 - value.call( elems[ i ], i, fn( elems[ i ], key ) )
3980 - );
3981 - }
3982 - }
3983 - }
3984 -
3985 - if ( chainable ) {
3986 - return elems;
3987 - }
3988 -
3989 - // Gets
3990 - if ( bulk ) {
3991 - return fn.call( elems );
3992 - }
3993 -
3994 - return len ? fn( elems[ 0 ], key ) : emptyGet;
3995 - };
3996 -
3997 -
3998 - // Matches dashed string for camelizing
3999 - var rmsPrefix = /^-ms-/,
4000 - rdashAlpha = /-([a-z])/g;
4001 -
4002 - // Used by camelCase as callback to replace()
4003 - function fcamelCase( all, letter ) {
4004 - return letter.toUpperCase();
4005 - }
4006 -
4007 - // Convert dashed to camelCase; used by the css and data modules
4008 - // Support: IE <=9 - 11, Edge 12 - 15
4009 - // Microsoft forgot to hump their vendor prefix (#9572)
4010 - function camelCase( string ) {
4011 - return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
4012 - }
4013 - var acceptData = function( owner ) {
4014 -
4015 - // Accepts only:
4016 - // - Node
4017 - // - Node.ELEMENT_NODE
4018 - // - Node.DOCUMENT_NODE
4019 - // - Object
4020 - // - Any
4021 - return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );
4022 - };
4023 -
4024 -
4025 -
4026 -
4027 - function Data() {
4028 - this.expando = jQuery.expando + Data.uid++;
4029 - }
4030 -
4031 - Data.uid = 1;
4032 -
4033 - Data.prototype = {
4034 -
4035 - cache: function( owner ) {
4036 -
4037 - // Check if the owner object already has a cache
4038 - var value = owner[ this.expando ];
4039 -
4040 - // If not, create one
4041 - if ( !value ) {
4042 - value = {};
4043 -
4044 - // We can accept data for non-element nodes in modern browsers,
4045 - // but we should not, see #8335.
4046 - // Always return an empty object.
4047 - if ( acceptData( owner ) ) {
4048 -
4049 - // If it is a node unlikely to be stringify-ed or looped over
4050 - // use plain assignment
4051 - if ( owner.nodeType ) {
4052 - owner[ this.expando ] = value;
4053 -
4054 - // Otherwise secure it in a non-enumerable property
4055 - // configurable must be true to allow the property to be
4056 - // deleted when data is removed
4057 - } else {
4058 - Object.defineProperty( owner, this.expando, {
4059 - value: value,
4060 - configurable: true
4061 - } );
4062 - }
4063 - }
4064 - }
4065 -
4066 - return value;
4067 - },
4068 - set: function( owner, data, value ) {
4069 - var prop,
4070 - cache = this.cache( owner );
4071 -
4072 - // Handle: [ owner, key, value ] args
4073 - // Always use camelCase key (gh-2257)
4074 - if ( typeof data === "string" ) {
4075 - cache[ camelCase( data ) ] = value;
4076 -
4077 - // Handle: [ owner, { properties } ] args
4078 - } else {
4079 -
4080 - // Copy the properties one-by-one to the cache object
4081 - for ( prop in data ) {
4082 - cache[ camelCase( prop ) ] = data[ prop ];
4083 - }
4084 - }
4085 - return cache;
4086 - },
4087 - get: function( owner, key ) {
4088 - return key === undefined ?
4089 - this.cache( owner ) :
4090 -
4091 - // Always use camelCase key (gh-2257)
4092 - owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];
4093 - },
4094 - access: function( owner, key, value ) {
4095 -
4096 - // In cases where either:
4097 - //
4098 - // 1. No key was specified
4099 - // 2. A string key was specified, but no value provided
4100 - //
4101 - // Take the "read" path and allow the get method to determine
4102 - // which value to return, respectively either:
4103 - //
4104 - // 1. The entire cache object
4105 - // 2. The data stored at the key
4106 - //
4107 - if ( key === undefined ||
4108 - ( ( key && typeof key === "string" ) && value === undefined ) ) {
4109 -
4110 - return this.get( owner, key );
4111 - }
4112 -
4113 - // When the key is not a string, or both a key and value
4114 - // are specified, set or extend (existing objects) with either:
4115 - //
4116 - // 1. An object of properties
4117 - // 2. A key and value
4118 - //
4119 - this.set( owner, key, value );
4120 -
4121 - // Since the "set" path can have two possible entry points
4122 - // return the expected data based on which path was taken[*]
4123 - return value !== undefined ? value : key;
4124 - },
4125 - remove: function( owner, key ) {
4126 - var i,
4127 - cache = owner[ this.expando ];
4128 -
4129 - if ( cache === undefined ) {
4130 - return;
4131 - }
4132 -
4133 - if ( key !== undefined ) {
4134 -
4135 - // Support array or space separated string of keys
4136 - if ( Array.isArray( key ) ) {
4137 -
4138 - // If key is an array of keys...
4139 - // We always set camelCase keys, so remove that.
4140 - key = key.map( camelCase );
4141 - } else {
4142 - key = camelCase( key );
4143 -
4144 - // If a key with the spaces exists, use it.
4145 - // Otherwise, create an array by matching non-whitespace
4146 - key = key in cache ?
4147 - [ key ] :
4148 - ( key.match( rnothtmlwhite ) || [] );
4149 - }
4150 -
4151 - i = key.length;
4152 -
4153 - while ( i-- ) {
4154 - delete cache[ key[ i ] ];
4155 - }
4156 - }
4157 -
4158 - // Remove the expando if there's no more data
4159 - if ( key === undefined || jQuery.isEmptyObject( cache ) ) {
4160 -
4161 - // Support: Chrome <=35 - 45
4162 - // Webkit & Blink performance suffers when deleting properties
4163 - // from DOM nodes, so set to undefined instead
4164 - // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)
4165 - if ( owner.nodeType ) {
4166 - owner[ this.expando ] = undefined;
4167 - } else {
4168 - delete owner[ this.expando ];
4169 - }
4170 - }
4171 - },
4172 - hasData: function( owner ) {
4173 - var cache = owner[ this.expando ];
4174 - return cache !== undefined && !jQuery.isEmptyObject( cache );
4175 - }
4176 - };
4177 - var dataPriv = new Data();
4178 -
4179 - var dataUser = new Data();
4180 -
4181 -
4182 -
4183 - // Implementation Summary
4184 - //
4185 - // 1. Enforce API surface and semantic compatibility with 1.9.x branch
4186 - // 2. Improve the module's maintainability by reducing the storage
4187 - // paths to a single mechanism.
4188 - // 3. Use the same single mechanism to support "private" and "user" data.
4189 - // 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
4190 - // 5. Avoid exposing implementation details on user objects (eg. expando properties)
4191 - // 6. Provide a clear path for implementation upgrade to WeakMap in 2014
4192 -
4193 - var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
4194 - rmultiDash = /[A-Z]/g;
4195 -
4196 - function getData( data ) {
4197 - if ( data === "true" ) {
4198 - return true;
4199 - }
4200 -
4201 - if ( data === "false" ) {
4202 - return false;
4203 - }
4204 -
4205 - if ( data === "null" ) {
4206 - return null;
4207 - }
4208 -
4209 - // Only convert to a number if it doesn't change the string
4210 - if ( data === +data + "" ) {
4211 - return +data;
4212 - }
4213 -
4214 - if ( rbrace.test( data ) ) {
4215 - return JSON.parse( data );
4216 - }
4217 -
4218 - return data;
4219 - }
4220 -
4221 - function dataAttr( elem, key, data ) {
4222 - var name;
4223 -
4224 - // If nothing was found internally, try to fetch any
4225 - // data from the HTML5 data-* attribute
4226 - if ( data === undefined && elem.nodeType === 1 ) {
4227 - name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase();
4228 - data = elem.getAttribute( name );
4229 -
4230 - if ( typeof data === "string" ) {
4231 - try {
4232 - data = getData( data );
4233 - } catch ( e ) {}
4234 -
4235 - // Make sure we set the data so it isn't changed later
4236 - dataUser.set( elem, key, data );
4237 - } else {
4238 - data = undefined;
4239 - }
4240 - }
4241 - return data;
4242 - }
4243 -
4244 - jQuery.extend( {
4245 - hasData: function( elem ) {
4246 - return dataUser.hasData( elem ) || dataPriv.hasData( elem );
4247 - },
4248 -
4249 - data: function( elem, name, data ) {
4250 - return dataUser.access( elem, name, data );
4251 - },
4252 -
4253 - removeData: function( elem, name ) {
4254 - dataUser.remove( elem, name );
4255 - },
4256 -
4257 - // TODO: Now that all calls to _data and _removeData have been replaced
4258 - // with direct calls to dataPriv methods, these can be deprecated.
4259 - _data: function( elem, name, data ) {
4260 - return dataPriv.access( elem, name, data );
4261 - },
4262 -
4263 - _removeData: function( elem, name ) {
4264 - dataPriv.remove( elem, name );
4265 - }
4266 - } );
4267 -
4268 - jQuery.fn.extend( {
4269 - data: function( key, value ) {
4270 - var i, name, data,
4271 - elem = this[ 0 ],
4272 - attrs = elem && elem.attributes;
4273 -
4274 - // Gets all values
4275 - if ( key === undefined ) {
4276 - if ( this.length ) {
4277 - data = dataUser.get( elem );
4278 -
4279 - if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) {
4280 - i = attrs.length;
4281 - while ( i-- ) {
4282 -
4283 - // Support: IE 11 only
4284 - // The attrs elements can be null (#14894)
4285 - if ( attrs[ i ] ) {
4286 - name = attrs[ i ].name;
4287 - if ( name.indexOf( "data-" ) === 0 ) {
4288 - name = camelCase( name.slice( 5 ) );
4289 - dataAttr( elem, name, data[ name ] );
4290 - }
4291 - }
4292 - }
4293 - dataPriv.set( elem, "hasDataAttrs", true );
4294 - }
4295 - }
4296 -
4297 - return data;
4298 - }
4299 -
4300 - // Sets multiple values
4301 - if ( typeof key === "object" ) {
4302 - return this.each( function() {
4303 - dataUser.set( this, key );
4304 - } );
4305 - }
4306 -
4307 - return access( this, function( value ) {
4308 - var data;
4309 -
4310 - // The calling jQuery object (element matches) is not empty
4311 - // (and therefore has an element appears at this[ 0 ]) and the
4312 - // `value` parameter was not undefined. An empty jQuery object
4313 - // will result in `undefined` for elem = this[ 0 ] which will
4314 - // throw an exception if an attempt to read a data cache is made.
4315 - if ( elem && value === undefined ) {
4316 -
4317 - // Attempt to get data from the cache
4318 - // The key will always be camelCased in Data
4319 - data = dataUser.get( elem, key );
4320 - if ( data !== undefined ) {
4321 - return data;
4322 - }
4323 -
4324 - // Attempt to "discover" the data in
4325 - // HTML5 custom data-* attrs
4326 - data = dataAttr( elem, key );
4327 - if ( data !== undefined ) {
4328 - return data;
4329 - }
4330 -
4331 - // We tried really hard, but the data doesn't exist.
4332 - return;
4333 - }
4334 -
4335 - // Set the data...
4336 - this.each( function() {
4337 -
4338 - // We always store the camelCased key
4339 - dataUser.set( this, key, value );
4340 - } );
4341 - }, null, value, arguments.length > 1, null, true );
4342 - },
4343 -
4344 - removeData: function( key ) {
4345 - return this.each( function() {
4346 - dataUser.remove( this, key );
4347 - } );
4348 - }
4349 - } );
4350 -
4351 -
4352 - jQuery.extend( {
4353 - queue: function( elem, type, data ) {
4354 - var queue;
4355 -
4356 - if ( elem ) {
4357 - type = ( type || "fx" ) + "queue";
4358 - queue = dataPriv.get( elem, type );
4359 -
4360 - // Speed up dequeue by getting out quickly if this is just a lookup
4361 - if ( data ) {
4362 - if ( !queue || Array.isArray( data ) ) {
4363 - queue = dataPriv.access( elem, type, jQuery.makeArray( data ) );
4364 - } else {
4365 - queue.push( data );
4366 - }
4367 - }
4368 - return queue || [];
4369 - }
4370 - },
4371 -
4372 - dequeue: function( elem, type ) {
4373 - type = type || "fx";
4374 -
4375 - var queue = jQuery.queue( elem, type ),
4376 - startLength = queue.length,
4377 - fn = queue.shift(),
4378 - hooks = jQuery._queueHooks( elem, type ),
4379 - next = function() {
4380 - jQuery.dequeue( elem, type );
4381 - };
4382 -
4383 - // If the fx queue is dequeued, always remove the progress sentinel
4384 - if ( fn === "inprogress" ) {
4385 - fn = queue.shift();
4386 - startLength--;
4387 - }
4388 -
4389 - if ( fn ) {
4390 -
4391 - // Add a progress sentinel to prevent the fx queue from being
4392 - // automatically dequeued
4393 - if ( type === "fx" ) {
4394 - queue.unshift( "inprogress" );
4395 - }
4396 -
4397 - // Clear up the last queue stop function
4398 - delete hooks.stop;
4399 - fn.call( elem, next, hooks );
4400 - }
4401 -
4402 - if ( !startLength && hooks ) {
4403 - hooks.empty.fire();
4404 - }
4405 - },
4406 -
4407 - // Not public - generate a queueHooks object, or return the current one
4408 - _queueHooks: function( elem, type ) {
4409 - var key = type + "queueHooks";
4410 - return dataPriv.get( elem, key ) || dataPriv.access( elem, key, {
4411 - empty: jQuery.Callbacks( "once memory" ).add( function() {
4412 - dataPriv.remove( elem, [ type + "queue", key ] );
4413 - } )
4414 - } );
4415 - }
4416 - } );
4417 -
4418 - jQuery.fn.extend( {
4419 - queue: function( type, data ) {
4420 - var setter = 2;
4421 -
4422 - if ( typeof type !== "string" ) {
4423 - data = type;
4424 - type = "fx";
4425 - setter--;
4426 - }
4427 -
4428 - if ( arguments.length < setter ) {
4429 - return jQuery.queue( this[ 0 ], type );
4430 - }
4431 -
4432 - return data === undefined ?
4433 - this :
4434 - this.each( function() {
4435 - var queue = jQuery.queue( this, type, data );
4436 -
4437 - // Ensure a hooks for this queue
4438 - jQuery._queueHooks( this, type );
4439 -
4440 - if ( type === "fx" && queue[ 0 ] !== "inprogress" ) {
4441 - jQuery.dequeue( this, type );
4442 - }
4443 - } );
4444 - },
4445 - dequeue: function( type ) {
4446 - return this.each( function() {
4447 - jQuery.dequeue( this, type );
4448 - } );
4449 - },
4450 - clearQueue: function( type ) {
4451 - return this.queue( type || "fx", [] );
4452 - },
4453 -
4454 - // Get a promise resolved when queues of a certain type
4455 - // are emptied (fx is the type by default)
4456 - promise: function( type, obj ) {
4457 - var tmp,
4458 - count = 1,
4459 - defer = jQuery.Deferred(),
4460 - elements = this,
4461 - i = this.length,
4462 - resolve = function() {
4463 - if ( !( --count ) ) {
4464 - defer.resolveWith( elements, [ elements ] );
4465 - }
4466 - };
4467 -
4468 - if ( typeof type !== "string" ) {
4469 - obj = type;
4470 - type = undefined;
4471 - }
4472 - type = type || "fx";
4473 -
4474 - while ( i-- ) {
4475 - tmp = dataPriv.get( elements[ i ], type + "queueHooks" );
4476 - if ( tmp && tmp.empty ) {
4477 - count++;
4478 - tmp.empty.add( resolve );
4479 - }
4480 - }
4481 - resolve();
4482 - return defer.promise( obj );
4483 - }
4484 - } );
4485 - var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source;
4486 -
4487 - var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" );
4488 -
4489 -
4490 - var cssExpand = [ "Top", "Right", "Bottom", "Left" ];
4491 -
4492 - var documentElement = document.documentElement;
4493 -
4494 -
4495 -
4496 - var isAttached = function( elem ) {
4497 - return jQuery.contains( elem.ownerDocument, elem );
4498 - },
4499 - composed = { composed: true };
4500 -
4501 - // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only
4502 - // Check attachment across shadow DOM boundaries when possible (gh-3504)
4503 - // Support: iOS 10.0-10.2 only
4504 - // Early iOS 10 versions support `attachShadow` but not `getRootNode`,
4505 - // leading to errors. We need to check for `getRootNode`.
4506 - if ( documentElement.getRootNode ) {
4507 - isAttached = function( elem ) {
4508 - return jQuery.contains( elem.ownerDocument, elem ) ||
4509 - elem.getRootNode( composed ) === elem.ownerDocument;
4510 - };
4511 - }
4512 - var isHiddenWithinTree = function( elem, el ) {
4513 -
4514 - // isHiddenWithinTree might be called from jQuery#filter function;
4515 - // in that case, element will be second argument
4516 - elem = el || elem;
4517 -
4518 - // Inline style trumps all
4519 - return elem.style.display === "none" ||
4520 - elem.style.display === "" &&
4521 -
4522 - // Otherwise, check computed style
4523 - // Support: Firefox <=43 - 45
4524 - // Disconnected elements can have computed display: none, so first confirm that elem is
4525 - // in the document.
4526 - isAttached( elem ) &&
4527 -
4528 - jQuery.css( elem, "display" ) === "none";
4529 - };
4530 -
4531 - var swap = function( elem, options, callback, args ) {
4532 - var ret, name,
4533 - old = {};
4534 -
4535 - // Remember the old values, and insert the new ones
4536 - for ( name in options ) {
4537 - old[ name ] = elem.style[ name ];
4538 - elem.style[ name ] = options[ name ];
4539 - }
4540 -
4541 - ret = callback.apply( elem, args || [] );
4542 -
4543 - // Revert the old values
4544 - for ( name in options ) {
4545 - elem.style[ name ] = old[ name ];
4546 - }
4547 -
4548 - return ret;
4549 - };
4550 -
4551 -
4552 -
4553 -
4554 - function adjustCSS( elem, prop, valueParts, tween ) {
4555 - var adjusted, scale,
4556 - maxIterations = 20,
4557 - currentValue = tween ?
4558 - function() {
4559 - return tween.cur();
4560 - } :
4561 - function() {
4562 - return jQuery.css( elem, prop, "" );
4563 - },
4564 - initial = currentValue(),
4565 - unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
4566 -
4567 - // Starting value computation is required for potential unit mismatches
4568 - initialInUnit = elem.nodeType &&
4569 - ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) &&
4570 - rcssNum.exec( jQuery.css( elem, prop ) );
4571 -
4572 - if ( initialInUnit && initialInUnit[ 3 ] !== unit ) {
4573 -
4574 - // Support: Firefox <=54
4575 - // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)
4576 - initial = initial / 2;
4577 -
4578 - // Trust units reported by jQuery.css
4579 - unit = unit || initialInUnit[ 3 ];
4580 -
4581 - // Iteratively approximate from a nonzero starting point
4582 - initialInUnit = +initial || 1;
4583 -
4584 - while ( maxIterations-- ) {
4585 -
4586 - // Evaluate and update our best guess (doubling guesses that zero out).
4587 - // Finish if the scale equals or crosses 1 (making the old*new product non-positive).
4588 - jQuery.style( elem, prop, initialInUnit + unit );
4589 - if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {
4590 - maxIterations = 0;
4591 - }
4592 - initialInUnit = initialInUnit / scale;
4593 -
4594 - }
4595 -
4596 - initialInUnit = initialInUnit * 2;
4597 - jQuery.style( elem, prop, initialInUnit + unit );
4598 -
4599 - // Make sure we update the tween properties later on
4600 - valueParts = valueParts || [];
4601 - }
4602 -
4603 - if ( valueParts ) {
4604 - initialInUnit = +initialInUnit || +initial || 0;
4605 -
4606 - // Apply relative offset (+=/-=) if specified
4607 - adjusted = valueParts[ 1 ] ?
4608 - initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :
4609 - +valueParts[ 2 ];
4610 - if ( tween ) {
4611 - tween.unit = unit;
4612 - tween.start = initialInUnit;
4613 - tween.end = adjusted;
4614 - }
4615 - }
4616 - return adjusted;
4617 - }
4618 -
4619 -
4620 - var defaultDisplayMap = {};
4621 -
4622 - function getDefaultDisplay( elem ) {
4623 - var temp,
4624 - doc = elem.ownerDocument,
4625 - nodeName = elem.nodeName,
4626 - display = defaultDisplayMap[ nodeName ];
4627 -
4628 - if ( display ) {
4629 - return display;
4630 - }
4631 -
4632 - temp = doc.body.appendChild( doc.createElement( nodeName ) );
4633 - display = jQuery.css( temp, "display" );
4634 -
4635 - temp.parentNode.removeChild( temp );
4636 -
4637 - if ( display === "none" ) {
4638 - display = "block";
4639 - }
4640 - defaultDisplayMap[ nodeName ] = display;
4641 -
4642 - return display;
4643 - }
4644 -
4645 - function showHide( elements, show ) {
4646 - var display, elem,
4647 - values = [],
4648 - index = 0,
4649 - length = elements.length;
4650 -
4651 - // Determine new display value for elements that need to change
4652 - for ( ; index < length; index++ ) {
4653 - elem = elements[ index ];
4654 - if ( !elem.style ) {
4655 - continue;
4656 - }
4657 -
4658 - display = elem.style.display;
4659 - if ( show ) {
4660 -
4661 - // Since we force visibility upon cascade-hidden elements, an immediate (and slow)
4662 - // check is required in this first loop unless we have a nonempty display value (either
4663 - // inline or about-to-be-restored)
4664 - if ( display === "none" ) {
4665 - values[ index ] = dataPriv.get( elem, "display" ) || null;
4666 - if ( !values[ index ] ) {
4667 - elem.style.display = "";
4668 - }
4669 - }
4670 - if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) {
4671 - values[ index ] = getDefaultDisplay( elem );
4672 - }
4673 - } else {
4674 - if ( display !== "none" ) {
4675 - values[ index ] = "none";
4676 -
4677 - // Remember what we're overwriting
4678 - dataPriv.set( elem, "display", display );
4679 - }
4680 - }
4681 - }
4682 -
4683 - // Set the display of the elements in a second loop to avoid constant reflow
4684 - for ( index = 0; index < length; index++ ) {
4685 - if ( values[ index ] != null ) {
4686 - elements[ index ].style.display = values[ index ];
4687 - }
4688 - }
4689 -
4690 - return elements;
4691 - }
4692 -
4693 - jQuery.fn.extend( {
4694 - show: function() {
4695 - return showHide( this, true );
4696 - },
4697 - hide: function() {
4698 - return showHide( this );
4699 - },
4700 - toggle: function( state ) {
4701 - if ( typeof state === "boolean" ) {
4702 - return state ? this.show() : this.hide();
4703 - }
4704 -
4705 - return this.each( function() {
4706 - if ( isHiddenWithinTree( this ) ) {
4707 - jQuery( this ).show();
4708 - } else {
4709 - jQuery( this ).hide();
4710 - }
4711 - } );
4712 - }
4713 - } );
4714 - var rcheckableType = ( /^(?:checkbox|radio)$/i );
4715 -
4716 - var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]*)/i );
4717 -
4718 - var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i );
4719 -
4720 -
4721 -
4722 - // We have to close these tags to support XHTML (#13200)
4723 - var wrapMap = {
4724 -
4725 - // Support: IE <=9 only
4726 - option: [ 1, "<select multiple='multiple'>", "</select>" ],
4727 -
4728 - // XHTML parsers do not magically insert elements in the
4729 - // same way that tag soup parsers do. So we cannot shorten
4730 - // this by omitting <tbody> or other required elements.
4731 - thead: [ 1, "<table>", "</table>" ],
4732 - col: [ 2, "<table><colgroup>", "</colgroup></table>" ],
4733 - tr: [ 2, "<table><tbody>", "</tbody></table>" ],
4734 - td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
4735 -
4736 - _default: [ 0, "", "" ]
4737 - };
4738 -
4739 - // Support: IE <=9 only
4740 - wrapMap.optgroup = wrapMap.option;
4741 -
4742 - wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
4743 - wrapMap.th = wrapMap.td;
4744 -
4745 -
4746 - function getAll( context, tag ) {
4747 -
4748 - // Support: IE <=9 - 11 only
4749 - // Use typeof to avoid zero-argument method invocation on host objects (#15151)
4750 - var ret;
4751 -
4752 - if ( typeof context.getElementsByTagName !== "undefined" ) {
4753 - ret = context.getElementsByTagName( tag || "*" );
4754 -
4755 - } else if ( typeof context.querySelectorAll !== "undefined" ) {
4756 - ret = context.querySelectorAll( tag || "*" );
4757 -
4758 - } else {
4759 - ret = [];
4760 - }
4761 -
4762 - if ( tag === undefined || tag && nodeName( context, tag ) ) {
4763 - return jQuery.merge( [ context ], ret );
4764 - }
4765 -
4766 - return ret;
4767 - }
4768 -
4769 -
4770 - // Mark scripts as having already been evaluated
4771 - function setGlobalEval( elems, refElements ) {
4772 - var i = 0,
4773 - l = elems.length;
4774 -
4775 - for ( ; i < l; i++ ) {
4776 - dataPriv.set(
4777 - elems[ i ],
4778 - "globalEval",
4779 - !refElements || dataPriv.get( refElements[ i ], "globalEval" )
4780 - );
4781 - }
4782 - }
4783 -
4784 -
4785 - var rhtml = /<|&#?\w+;/;
4786 -
4787 - function buildFragment( elems, context, scripts, selection, ignored ) {
4788 - var elem, tmp, tag, wrap, attached, j,
4789 - fragment = context.createDocumentFragment(),
4790 - nodes = [],
4791 - i = 0,
4792 - l = elems.length;
4793 -
4794 - for ( ; i < l; i++ ) {
4795 - elem = elems[ i ];
4796 -
4797 - if ( elem || elem === 0 ) {
4798 -
4799 - // Add nodes directly
4800 - if ( toType( elem ) === "object" ) {
4801 -
4802 - // Support: Android <=4.0 only, PhantomJS 1 only
4803 - // push.apply(_, arraylike) throws on ancient WebKit
4804 - jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
4805 -
4806 - // Convert non-html into a text node
4807 - } else if ( !rhtml.test( elem ) ) {
4808 - nodes.push( context.createTextNode( elem ) );
4809 -
4810 - // Convert html into DOM nodes
4811 - } else {
4812 - tmp = tmp || fragment.appendChild( context.createElement( "div" ) );
4813 -
4814 - // Deserialize a standard representation
4815 - tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();
4816 - wrap = wrapMap[ tag ] || wrapMap._default;
4817 - tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];
4818 -
4819 - // Descend through wrappers to the right content
4820 - j = wrap[ 0 ];
4821 - while ( j-- ) {
4822 - tmp = tmp.lastChild;
4823 - }
4824 -
4825 - // Support: Android <=4.0 only, PhantomJS 1 only
4826 - // push.apply(_, arraylike) throws on ancient WebKit
4827 - jQuery.merge( nodes, tmp.childNodes );
4828 -
4829 - // Remember the top-level container
4830 - tmp = fragment.firstChild;
4831 -
4832 - // Ensure the created nodes are orphaned (#12392)
4833 - tmp.textContent = "";
4834 - }
4835 - }
4836 - }
4837 -
4838 - // Remove wrapper from fragment
4839 - fragment.textContent = "";
4840 -
4841 - i = 0;
4842 - while ( ( elem = nodes[ i++ ] ) ) {
4843 -
4844 - // Skip elements already in the context collection (trac-4087)
4845 - if ( selection && jQuery.inArray( elem, selection ) > -1 ) {
4846 - if ( ignored ) {
4847 - ignored.push( elem );
4848 - }
4849 - continue;
4850 - }
4851 -
4852 - attached = isAttached( elem );
4853 -
4854 - // Append to fragment
4855 - tmp = getAll( fragment.appendChild( elem ), "script" );
4856 -
4857 - // Preserve script evaluation history
4858 - if ( attached ) {
4859 - setGlobalEval( tmp );
4860 - }
4861 -
4862 - // Capture executables
4863 - if ( scripts ) {
4864 - j = 0;
4865 - while ( ( elem = tmp[ j++ ] ) ) {
4866 - if ( rscriptType.test( elem.type || "" ) ) {
4867 - scripts.push( elem );
4868 - }
4869 - }
4870 - }
4871 - }
4872 -
4873 - return fragment;
4874 - }
4875 -
4876 -
4877 - ( function() {
4878 - var fragment = document.createDocumentFragment(),
4879 - div = fragment.appendChild( document.createElement( "div" ) ),
4880 - input = document.createElement( "input" );
4881 -
4882 - // Support: Android 4.0 - 4.3 only
4883 - // Check state lost if the name is set (#11217)
4884 - // Support: Windows Web Apps (WWA)
4885 - // `name` and `type` must use .setAttribute for WWA (#14901)
4886 - input.setAttribute( "type", "radio" );
4887 - input.setAttribute( "checked", "checked" );
4888 - input.setAttribute( "name", "t" );
4889 -
4890 - div.appendChild( input );
4891 -
4892 - // Support: Android <=4.1 only
4893 - // Older WebKit doesn't clone checked state correctly in fragments
4894 - support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
4895 -
4896 - // Support: IE <=11 only
4897 - // Make sure textarea (and checkbox) defaultValue is properly cloned
4898 - div.innerHTML = "<textarea>x</textarea>";
4899 - support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
4900 - } )();
4901 -
4902 -
4903 - var
4904 - rkeyEvent = /^key/,
4905 - rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,
4906 - rtypenamespace = /^([^.]*)(?:\.(.+)|)/;
4907 -
4908 - function returnTrue() {
4909 - return true;
4910 - }
4911 -
4912 - function returnFalse() {
4913 - return false;
4914 - }
4915 -
4916 - // Support: IE <=9 - 11+
4917 - // focus() and blur() are asynchronous, except when they are no-op.
4918 - // So expect focus to be synchronous when the element is already active,
4919 - // and blur to be synchronous when the element is not already active.
4920 - // (focus and blur are always synchronous in other supported browsers,
4921 - // this just defines when we can count on it).
4922 - function expectSync( elem, type ) {
4923 - return ( elem === safeActiveElement() ) === ( type === "focus" );
4924 - }
4925 -
4926 - // Support: IE <=9 only
4927 - // Accessing document.activeElement can throw unexpectedly
4928 - // https://bugs.jquery.com/ticket/13393
4929 - function safeActiveElement() {
4930 - try {
4931 - return document.activeElement;
4932 - } catch ( err ) { }
4933 - }
4934 -
4935 - function on( elem, types, selector, data, fn, one ) {
4936 - var origFn, type;
4937 -
4938 - // Types can be a map of types/handlers
4939 - if ( typeof types === "object" ) {
4940 -
4941 - // ( types-Object, selector, data )
4942 - if ( typeof selector !== "string" ) {
4943 -
4944 - // ( types-Object, data )
4945 - data = data || selector;
4946 - selector = undefined;
4947 - }
4948 - for ( type in types ) {
4949 - on( elem, type, selector, data, types[ type ], one );
4950 - }
4951 - return elem;
4952 - }
4953 -
4954 - if ( data == null && fn == null ) {
4955 -
4956 - // ( types, fn )
4957 - fn = selector;
4958 - data = selector = undefined;
4959 - } else if ( fn == null ) {
4960 - if ( typeof selector === "string" ) {
4961 -
4962 - // ( types, selector, fn )
4963 - fn = data;
4964 - data = undefined;
4965 - } else {
4966 -
4967 - // ( types, data, fn )
4968 - fn = data;
4969 - data = selector;
4970 - selector = undefined;
4971 - }
4972 - }
4973 - if ( fn === false ) {
4974 - fn = returnFalse;
4975 - } else if ( !fn ) {
4976 - return elem;
4977 - }
4978 -
4979 - if ( one === 1 ) {
4980 - origFn = fn;
4981 - fn = function( event ) {
4982 -
4983 - // Can use an empty set, since event contains the info
4984 - jQuery().off( event );
4985 - return origFn.apply( this, arguments );
4986 - };
4987 -
4988 - // Use same guid so caller can remove using origFn
4989 - fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
4990 - }
4991 - return elem.each( function() {
4992 - jQuery.event.add( this, types, fn, data, selector );
4993 - } );
4994 - }
4995 -
4996 - /*
4997 - * Helper functions for managing events -- not part of the public interface.
4998 - * Props to Dean Edwards' addEvent library for many of the ideas.
4999 - */
5000 - jQuery.event = {
5001 -
5002 - global: {},
5003 -
5004 - add: function( elem, types, handler, data, selector ) {
5005 -
5006 - var handleObjIn, eventHandle, tmp,
5007 - events, t, handleObj,
5008 - special, handlers, type, namespaces, origType,
5009 - elemData = dataPriv.get( elem );
5010 -
5011 - // Don't attach events to noData or text/comment nodes (but allow plain objects)
5012 - if ( !elemData ) {
5013 - return;
5014 - }
5015 -
5016 - // Caller can pass in an object of custom data in lieu of the handler
5017 - if ( handler.handler ) {
5018 - handleObjIn = handler;
5019 - handler = handleObjIn.handler;
5020 - selector = handleObjIn.selector;
5021 - }
5022 -
5023 - // Ensure that invalid selectors throw exceptions at attach time
5024 - // Evaluate against documentElement in case elem is a non-element node (e.g., document)
5025 - if ( selector ) {
5026 - jQuery.find.matchesSelector( documentElement, selector );
5027 - }
5028 -
5029 - // Make sure that the handler has a unique ID, used to find/remove it later
5030 - if ( !handler.guid ) {
5031 - handler.guid = jQuery.guid++;
5032 - }
5033 -
5034 - // Init the element's event structure and main handler, if this is the first
5035 - if ( !( events = elemData.events ) ) {
5036 - events = elemData.events = {};
5037 - }
5038 - if ( !( eventHandle = elemData.handle ) ) {
5039 - eventHandle = elemData.handle = function( e ) {
5040 -
5041 - // Discard the second event of a jQuery.event.trigger() and
5042 - // when an event is called after a page has unloaded
5043 - return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ?
5044 - jQuery.event.dispatch.apply( elem, arguments ) : undefined;
5045 - };
5046 - }
5047 -
5048 - // Handle multiple events separated by a space
5049 - types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
5050 - t = types.length;
5051 - while ( t-- ) {
5052 - tmp = rtypenamespace.exec( types[ t ] ) || [];
5053 - type = origType = tmp[ 1 ];
5054 - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
5055 -
5056 - // There *must* be a type, no attaching namespace-only handlers
5057 - if ( !type ) {
5058 - continue;
5059 - }
5060 -
5061 - // If event changes its type, use the special event handlers for the changed type
5062 - special = jQuery.event.special[ type ] || {};
5063 -
5064 - // If selector defined, determine special event api type, otherwise given type
5065 - type = ( selector ? special.delegateType : special.bindType ) || type;
5066 -
5067 - // Update special based on newly reset type
5068 - special = jQuery.event.special[ type ] || {};
5069 -
5070 - // handleObj is passed to all event handlers
5071 - handleObj = jQuery.extend( {
5072 - type: type,
5073 - origType: origType,
5074 - data: data,
5075 - handler: handler,
5076 - guid: handler.guid,
5077 - selector: selector,
5078 - needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
5079 - namespace: namespaces.join( "." )
5080 - }, handleObjIn );
5081 -
5082 - // Init the event handler queue if we're the first
5083 - if ( !( handlers = events[ type ] ) ) {
5084 - handlers = events[ type ] = [];
5085 - handlers.delegateCount = 0;
5086 -
5087 - // Only use addEventListener if the special events handler returns false
5088 - if ( !special.setup ||
5089 - special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
5090 -
5091 - if ( elem.addEventListener ) {
5092 - elem.addEventListener( type, eventHandle );
5093 - }
5094 - }
5095 - }
5096 -
5097 - if ( special.add ) {
5098 - special.add.call( elem, handleObj );
5099 -
5100 - if ( !handleObj.handler.guid ) {
5101 - handleObj.handler.guid = handler.guid;
5102 - }
5103 - }
5104 -
5105 - // Add to the element's handler list, delegates in front
5106 - if ( selector ) {
5107 - handlers.splice( handlers.delegateCount++, 0, handleObj );
5108 - } else {
5109 - handlers.push( handleObj );
5110 - }
5111 -
5112 - // Keep track of which events have ever been used, for event optimization
5113 - jQuery.event.global[ type ] = true;
5114 - }
5115 -
5116 - },
5117 -
5118 - // Detach an event or set of events from an element
5119 - remove: function( elem, types, handler, selector, mappedTypes ) {
5120 -
5121 - var j, origCount, tmp,
5122 - events, t, handleObj,
5123 - special, handlers, type, namespaces, origType,
5124 - elemData = dataPriv.hasData( elem ) && dataPriv.get( elem );
5125 -
5126 - if ( !elemData || !( events = elemData.events ) ) {
5127 - return;
5128 - }
5129 -
5130 - // Once for each type.namespace in types; type may be omitted
5131 - types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
5132 - t = types.length;
5133 - while ( t-- ) {
5134 - tmp = rtypenamespace.exec( types[ t ] ) || [];
5135 - type = origType = tmp[ 1 ];
5136 - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
5137 -
5138 - // Unbind all events (on this namespace, if provided) for the element
5139 - if ( !type ) {
5140 - for ( type in events ) {
5141 - jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
5142 - }
5143 - continue;
5144 - }
5145 -
5146 - special = jQuery.event.special[ type ] || {};
5147 - type = ( selector ? special.delegateType : special.bindType ) || type;
5148 - handlers = events[ type ] || [];
5149 - tmp = tmp[ 2 ] &&
5150 - new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" );
5151 -
5152 - // Remove matching events
5153 - origCount = j = handlers.length;
5154 - while ( j-- ) {
5155 - handleObj = handlers[ j ];
5156 -
5157 - if ( ( mappedTypes || origType === handleObj.origType ) &&
5158 - ( !handler || handler.guid === handleObj.guid ) &&
5159 - ( !tmp || tmp.test( handleObj.namespace ) ) &&
5160 - ( !selector || selector === handleObj.selector ||
5161 - selector === "**" && handleObj.selector ) ) {
5162 - handlers.splice( j, 1 );
5163 -
5164 - if ( handleObj.selector ) {
5165 - handlers.delegateCount--;
5166 - }
5167 - if ( special.remove ) {
5168 - special.remove.call( elem, handleObj );
5169 - }
5170 - }
5171 - }
5172 -
5173 - // Remove generic event handler if we removed something and no more handlers exist
5174 - // (avoids potential for endless recursion during removal of special event handlers)
5175 - if ( origCount && !handlers.length ) {
5176 - if ( !special.teardown ||
5177 - special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
5178 -
5179 - jQuery.removeEvent( elem, type, elemData.handle );
5180 - }
5181 -
5182 - delete events[ type ];
5183 - }
5184 - }
5185 -
5186 - // Remove data and the expando if it's no longer used
5187 - if ( jQuery.isEmptyObject( events ) ) {
5188 - dataPriv.remove( elem, "handle events" );
5189 - }
5190 - },
5191 -
5192 - dispatch: function( nativeEvent ) {
5193 -
5194 - // Make a writable jQuery.Event from the native event object
5195 - var event = jQuery.event.fix( nativeEvent );
5196 -
5197 - var i, j, ret, matched, handleObj, handlerQueue,
5198 - args = new Array( arguments.length ),
5199 - handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [],
5200 - special = jQuery.event.special[ event.type ] || {};
5201 -
5202 - // Use the fix-ed jQuery.Event rather than the (read-only) native event
5203 - args[ 0 ] = event;
5204 -
5205 - for ( i = 1; i < arguments.length; i++ ) {
5206 - args[ i ] = arguments[ i ];
5207 - }
5208 -
5209 - event.delegateTarget = this;
5210 -
5211 - // Call the preDispatch hook for the mapped type, and let it bail if desired
5212 - if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
5213 - return;
5214 - }
5215 -
5216 - // Determine handlers
5217 - handlerQueue = jQuery.event.handlers.call( this, event, handlers );
5218 -
5219 - // Run delegates first; they may want to stop propagation beneath us
5220 - i = 0;
5221 - while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {
5222 - event.currentTarget = matched.elem;
5223 -
5224 - j = 0;
5225 - while ( ( handleObj = matched.handlers[ j++ ] ) &&
5226 - !event.isImmediatePropagationStopped() ) {
5227 -
5228 - // If the event is namespaced, then each handler is only invoked if it is
5229 - // specially universal or its namespaces are a superset of the event's.
5230 - if ( !event.rnamespace || handleObj.namespace === false ||
5231 - event.rnamespace.test( handleObj.namespace ) ) {
5232 -
5233 - event.handleObj = handleObj;
5234 - event.data = handleObj.data;
5235 -
5236 - ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||
5237 - handleObj.handler ).apply( matched.elem, args );
5238 -
5239 - if ( ret !== undefined ) {
5240 - if ( ( event.result = ret ) === false ) {
5241 - event.preventDefault();
5242 - event.stopPropagation();
5243 - }
5244 - }
5245 - }
5246 - }
5247 - }
5248 -
5249 - // Call the postDispatch hook for the mapped type
5250 - if ( special.postDispatch ) {
5251 - special.postDispatch.call( this, event );
5252 - }
5253 -
5254 - return event.result;
5255 - },
5256 -
5257 - handlers: function( event, handlers ) {
5258 - var i, handleObj, sel, matchedHandlers, matchedSelectors,
5259 - handlerQueue = [],
5260 - delegateCount = handlers.delegateCount,
5261 - cur = event.target;
5262 -
5263 - // Find delegate handlers
5264 - if ( delegateCount &&
5265 -
5266 - // Support: IE <=9
5267 - // Black-hole SVG <use> instance trees (trac-13180)
5268 - cur.nodeType &&
5269 -
5270 - // Support: Firefox <=42
5271 - // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)
5272 - // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click
5273 - // Support: IE 11 only
5274 - // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343)
5275 - !( event.type === "click" && event.button >= 1 ) ) {
5276 -
5277 - for ( ; cur !== this; cur = cur.parentNode || this ) {
5278 -
5279 - // Don't check non-elements (#13208)
5280 - // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
5281 - if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) {
5282 - matchedHandlers = [];
5283 - matchedSelectors = {};
5284 - for ( i = 0; i < delegateCount; i++ ) {
5285 - handleObj = handlers[ i ];
5286 -
5287 - // Don't conflict with Object.prototype properties (#13203)
5288 - sel = handleObj.selector + " ";
5289 -
5290 - if ( matchedSelectors[ sel ] === undefined ) {
5291 - matchedSelectors[ sel ] = handleObj.needsContext ?
5292 - jQuery( sel, this ).index( cur ) > -1 :
5293 - jQuery.find( sel, this, null, [ cur ] ).length;
5294 - }
5295 - if ( matchedSelectors[ sel ] ) {
5296 - matchedHandlers.push( handleObj );
5297 - }
5298 - }
5299 - if ( matchedHandlers.length ) {
5300 - handlerQueue.push( { elem: cur, handlers: matchedHandlers } );
5301 - }
5302 - }
5303 - }
5304 - }
5305 -
5306 - // Add the remaining (directly-bound) handlers
5307 - cur = this;
5308 - if ( delegateCount < handlers.length ) {
5309 - handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );
5310 - }
5311 -
5312 - return handlerQueue;
5313 - },
5314 -
5315 - addProp: function( name, hook ) {
5316 - Object.defineProperty( jQuery.Event.prototype, name, {
5317 - enumerable: true,
5318 - configurable: true,
5319 -
5320 - get: isFunction( hook ) ?
5321 - function() {
5322 - if ( this.originalEvent ) {
5323 - return hook( this.originalEvent );
5324 - }
5325 - } :
5326 - function() {
5327 - if ( this.originalEvent ) {
5328 - return this.originalEvent[ name ];
5329 - }
5330 - },
5331 -
5332 - set: function( value ) {
5333 - Object.defineProperty( this, name, {
5334 - enumerable: true,
5335 - configurable: true,
5336 - writable: true,
5337 - value: value
5338 - } );
5339 - }
5340 - } );
5341 - },
5342 -
5343 - fix: function( originalEvent ) {
5344 - return originalEvent[ jQuery.expando ] ?
5345 - originalEvent :
5346 - new jQuery.Event( originalEvent );
5347 - },
5348 -
5349 - special: {
5350 - load: {
5351 -
5352 - // Prevent triggered image.load events from bubbling to window.load
5353 - noBubble: true
5354 - },
5355 - click: {
5356 -
5357 - // Utilize native event to ensure correct state for checkable inputs
5358 - setup: function( data ) {
5359 -
5360 - // For mutual compressibility with _default, replace `this` access with a local var.
5361 - // `|| data` is dead code meant only to preserve the variable through minification.
5362 - var el = this || data;
5363 -
5364 - // Claim the first handler
5365 - if ( rcheckableType.test( el.type ) &&
5366 - el.click && nodeName( el, "input" ) ) {
5367 -
5368 - // dataPriv.set( el, "click", ... )
5369 - leverageNative( el, "click", returnTrue );
5370 - }
5371 -
5372 - // Return false to allow normal processing in the caller
5373 - return false;
5374 - },
5375 - trigger: function( data ) {
5376 -
5377 - // For mutual compressibility with _default, replace `this` access with a local var.
5378 - // `|| data` is dead code meant only to preserve the variable through minification.
5379 - var el = this || data;
5380 -
5381 - // Force setup before triggering a click
5382 - if ( rcheckableType.test( el.type ) &&
5383 - el.click && nodeName( el, "input" ) ) {
5384 -
5385 - leverageNative( el, "click" );
5386 - }
5387 -
5388 - // Return non-false to allow normal event-path propagation
5389 - return true;
5390 - },
5391 -
5392 - // For cross-browser consistency, suppress native .click() on links
5393 - // Also prevent it if we're currently inside a leveraged native-event stack
5394 - _default: function( event ) {
5395 - var target = event.target;
5396 - return rcheckableType.test( target.type ) &&
5397 - target.click && nodeName( target, "input" ) &&
5398 - dataPriv.get( target, "click" ) ||
5399 - nodeName( target, "a" );
5400 - }
5401 - },
5402 -
5403 - beforeunload: {
5404 - postDispatch: function( event ) {
5405 -
5406 - // Support: Firefox 20+
5407 - // Firefox doesn't alert if the returnValue field is not set.
5408 - if ( event.result !== undefined && event.originalEvent ) {
5409 - event.originalEvent.returnValue = event.result;
5410 - }
5411 - }
5412 - }
5413 - }
5414 - };
5415 -
5416 - // Ensure the presence of an event listener that handles manually-triggered
5417 - // synthetic events by interrupting progress until reinvoked in response to
5418 - // *native* events that it fires directly, ensuring that state changes have
5419 - // already occurred before other listeners are invoked.
5420 - function leverageNative( el, type, expectSync ) {
5421 -
5422 - // Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add
5423 - if ( !expectSync ) {
5424 - if ( dataPriv.get( el, type ) === undefined ) {
5425 - jQuery.event.add( el, type, returnTrue );
5426 - }
5427 - return;
5428 - }
5429 -
5430 - // Register the controller as a special universal handler for all event namespaces
5431 - dataPriv.set( el, type, false );
5432 - jQuery.event.add( el, type, {
5433 - namespace: false,
5434 - handler: function( event ) {
5435 - var notAsync, result,
5436 - saved = dataPriv.get( this, type );
5437 -
5438 - if ( ( event.isTrigger & 1 ) && this[ type ] ) {
5439 -
5440 - // Interrupt processing of the outer synthetic .trigger()ed event
5441 - // Saved data should be false in such cases, but might be a leftover capture object
5442 - // from an async native handler (gh-4350)
5443 - if ( !saved.length ) {
5444 -
5445 - // Store arguments for use when handling the inner native event
5446 - // There will always be at least one argument (an event object), so this array
5447 - // will not be confused with a leftover capture object.
5448 - saved = slice.call( arguments );
5449 - dataPriv.set( this, type, saved );
5450 -
5451 - // Trigger the native event and capture its result
5452 - // Support: IE <=9 - 11+
5453 - // focus() and blur() are asynchronous
5454 - notAsync = expectSync( this, type );
5455 - this[ type ]();
5456 - result = dataPriv.get( this, type );
5457 - if ( saved !== result || notAsync ) {
5458 - dataPriv.set( this, type, false );
5459 - } else {
5460 - result = {};
5461 - }
5462 - if ( saved !== result ) {
5463 -
5464 - // Cancel the outer synthetic event
5465 - event.stopImmediatePropagation();
5466 - event.preventDefault();
5467 - return result.value;
5468 - }
5469 -
5470 - // If this is an inner synthetic event for an event with a bubbling surrogate
5471 - // (focus or blur), assume that the surrogate already propagated from triggering the
5472 - // native event and prevent that from happening again here.
5473 - // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the
5474 - // bubbling surrogate propagates *after* the non-bubbling base), but that seems
5475 - // less bad than duplication.
5476 - } else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {
5477 - event.stopPropagation();
5478 - }
5479 -
5480 - // If this is a native event triggered above, everything is now in order
5481 - // Fire an inner synthetic event with the original arguments
5482 - } else if ( saved.length ) {
5483 -
5484 - // ...and capture the result
5485 - dataPriv.set( this, type, {
5486 - value: jQuery.event.trigger(
5487 -
5488 - // Support: IE <=9 - 11+
5489 - // Extend with the prototype to reset the above stopImmediatePropagation()
5490 - jQuery.extend( saved[ 0 ], jQuery.Event.prototype ),
5491 - saved.slice( 1 ),
5492 - this
5493 - )
5494 - } );
5495 -
5496 - // Abort handling of the native event
5497 - event.stopImmediatePropagation();
5498 - }
5499 - }
5500 - } );
5501 - }
5502 -
5503 - jQuery.removeEvent = function( elem, type, handle ) {
5504 -
5505 - // This "if" is needed for plain objects
5506 - if ( elem.removeEventListener ) {
5507 - elem.removeEventListener( type, handle );
5508 - }
5509 - };
5510 -
5511 - jQuery.Event = function( src, props ) {
5512 -
5513 - // Allow instantiation without the 'new' keyword
5514 - if ( !( this instanceof jQuery.Event ) ) {
5515 - return new jQuery.Event( src, props );
5516 - }
5517 -
5518 - // Event object
5519 - if ( src && src.type ) {
5520 - this.originalEvent = src;
5521 - this.type = src.type;
5522 -
5523 - // Events bubbling up the document may have been marked as prevented
5524 - // by a handler lower down the tree; reflect the correct value.
5525 - this.isDefaultPrevented = src.defaultPrevented ||
5526 - src.defaultPrevented === undefined &&
5527 -
5528 - // Support: Android <=2.3 only
5529 - src.returnValue === false ?
5530 - returnTrue :
5531 - returnFalse;
5532 -
5533 - // Create target properties
5534 - // Support: Safari <=6 - 7 only
5535 - // Target should not be a text node (#504, #13143)
5536 - this.target = ( src.target && src.target.nodeType === 3 ) ?
5537 - src.target.parentNode :
5538 - src.target;
5539 -
5540 - this.currentTarget = src.currentTarget;
5541 - this.relatedTarget = src.relatedTarget;
5542 -
5543 - // Event type
5544 - } else {
5545 - this.type = src;
5546 - }
5547 -
5548 - // Put explicitly provided properties onto the event object
5549 - if ( props ) {
5550 - jQuery.extend( this, props );
5551 - }
5552 -
5553 - // Create a timestamp if incoming event doesn't have one
5554 - this.timeStamp = src && src.timeStamp || Date.now();
5555 -
5556 - // Mark it as fixed
5557 - this[ jQuery.expando ] = true;
5558 - };
5559 -
5560 - // jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
5561 - // https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
5562 - jQuery.Event.prototype = {
5563 - constructor: jQuery.Event,
5564 - isDefaultPrevented: returnFalse,
5565 - isPropagationStopped: returnFalse,
5566 - isImmediatePropagationStopped: returnFalse,
5567 - isSimulated: false,
5568 -
5569 - preventDefault: function() {
5570 - var e = this.originalEvent;
5571 -
5572 - this.isDefaultPrevented = returnTrue;
5573 -
5574 - if ( e && !this.isSimulated ) {
5575 - e.preventDefault();
5576 - }
5577 - },
5578 - stopPropagation: function() {
5579 - var e = this.originalEvent;
5580 -
5581 - this.isPropagationStopped = returnTrue;
5582 -
5583 - if ( e && !this.isSimulated ) {
5584 - e.stopPropagation();
5585 - }
5586 - },
5587 - stopImmediatePropagation: function() {
5588 - var e = this.originalEvent;
5589 -
5590 - this.isImmediatePropagationStopped = returnTrue;
5591 -
5592 - if ( e && !this.isSimulated ) {
5593 - e.stopImmediatePropagation();
5594 - }
5595 -
5596 - this.stopPropagation();
5597 - }
5598 - };
5599 -
5600 - // Includes all common event props including KeyEvent and MouseEvent specific props
5601 - jQuery.each( {
5602 - altKey: true,
5603 - bubbles: true,
5604 - cancelable: true,
5605 - changedTouches: true,
5606 - ctrlKey: true,
5607 - detail: true,
5608 - eventPhase: true,
5609 - metaKey: true,
5610 - pageX: true,
5611 - pageY: true,
5612 - shiftKey: true,
5613 - view: true,
5614 - "char": true,
5615 - code: true,
5616 - charCode: true,
5617 - key: true,
5618 - keyCode: true,
5619 - button: true,
5620 - buttons: true,
5621 - clientX: true,
5622 - clientY: true,
5623 - offsetX: true,
5624 - offsetY: true,
5625 - pointerId: true,
5626 - pointerType: true,
5627 - screenX: true,
5628 - screenY: true,
5629 - targetTouches: true,
5630 - toElement: true,
5631 - touches: true,
5632 -
5633 - which: function( event ) {
5634 - var button = event.button;
5635 -
5636 - // Add which for key events
5637 - if ( event.which == null && rkeyEvent.test( event.type ) ) {
5638 - return event.charCode != null ? event.charCode : event.keyCode;
5639 - }
5640 -
5641 - // Add which for click: 1 === left; 2 === middle; 3 === right
5642 - if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {
5643 - if ( button & 1 ) {
5644 - return 1;
5645 - }
5646 -
5647 - if ( button & 2 ) {
5648 - return 3;
5649 - }
5650 -
5651 - if ( button & 4 ) {
5652 - return 2;
5653 - }
5654 -
5655 - return 0;
5656 - }
5657 -
5658 - return event.which;
5659 - }
5660 - }, jQuery.event.addProp );
5661 -
5662 - jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) {
5663 - jQuery.event.special[ type ] = {
5664 -
5665 - // Utilize native event if possible so blur/focus sequence is correct
5666 - setup: function() {
5667 -
5668 - // Claim the first handler
5669 - // dataPriv.set( this, "focus", ... )
5670 - // dataPriv.set( this, "blur", ... )
5671 - leverageNative( this, type, expectSync );
5672 -
5673 - // Return false to allow normal processing in the caller
5674 - return false;
5675 - },
5676 - trigger: function() {
5677 -
5678 - // Force setup before trigger
5679 - leverageNative( this, type );
5680 -
5681 - // Return non-false to allow normal event-path propagation
5682 - return true;
5683 - },
5684 -
5685 - delegateType: delegateType
5686 - };
5687 - } );
5688 -
5689 - // Create mouseenter/leave events using mouseover/out and event-time checks
5690 - // so that event delegation works in jQuery.
5691 - // Do the same for pointerenter/pointerleave and pointerover/pointerout
5692 - //
5693 - // Support: Safari 7 only
5694 - // Safari sends mouseenter too often; see:
5695 - // https://bugs.chromium.org/p/chromium/issues/detail?id=470258
5696 - // for the description of the bug (it existed in older Chrome versions as well).
5697 - jQuery.each( {
5698 - mouseenter: "mouseover",
5699 - mouseleave: "mouseout",
5700 - pointerenter: "pointerover",
5701 - pointerleave: "pointerout"
5702 - }, function( orig, fix ) {
5703 - jQuery.event.special[ orig ] = {
5704 - delegateType: fix,
5705 - bindType: fix,
5706 -
5707 - handle: function( event ) {
5708 - var ret,
5709 - target = this,
5710 - related = event.relatedTarget,
5711 - handleObj = event.handleObj;
5712 -
5713 - // For mouseenter/leave call the handler if related is outside the target.
5714 - // NB: No relatedTarget if the mouse left/entered the browser window
5715 - if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {
5716 - event.type = handleObj.origType;
5717 - ret = handleObj.handler.apply( this, arguments );
5718 - event.type = fix;
5719 - }
5720 - return ret;
5721 - }
5722 - };
5723 - } );
5724 -
5725 - jQuery.fn.extend( {
5726 -
5727 - on: function( types, selector, data, fn ) {
5728 - return on( this, types, selector, data, fn );
5729 - },
5730 - one: function( types, selector, data, fn ) {
5731 - return on( this, types, selector, data, fn, 1 );
5732 - },
5733 - off: function( types, selector, fn ) {
5734 - var handleObj, type;
5735 - if ( types && types.preventDefault && types.handleObj ) {
5736 -
5737 - // ( event ) dispatched jQuery.Event
5738 - handleObj = types.handleObj;
5739 - jQuery( types.delegateTarget ).off(
5740 - handleObj.namespace ?
5741 - handleObj.origType + "." + handleObj.namespace :
5742 - handleObj.origType,
5743 - handleObj.selector,
5744 - handleObj.handler
5745 - );
5746 - return this;
5747 - }
5748 - if ( typeof types === "object" ) {
5749 -
5750 - // ( types-object [, selector] )
5751 - for ( type in types ) {
5752 - this.off( type, selector, types[ type ] );
5753 - }
5754 - return this;
5755 - }
5756 - if ( selector === false || typeof selector === "function" ) {
5757 -
5758 - // ( types [, fn] )
5759 - fn = selector;
5760 - selector = undefined;
5761 - }
5762 - if ( fn === false ) {
5763 - fn = returnFalse;
5764 - }
5765 - return this.each( function() {
5766 - jQuery.event.remove( this, types, fn, selector );
5767 - } );
5768 - }
5769 - } );
5770 -
5771 -
5772 - var
5773 -
5774 - /* eslint-disable max-len */
5775 -
5776 - // See https://github.com/eslint/eslint/issues/3229
5777 - rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,
5778 -
5779 - /* eslint-enable */
5780 -
5781 - // Support: IE <=10 - 11, Edge 12 - 13 only
5782 - // In IE/Edge using regex groups here causes severe slowdowns.
5783 - // See https://connect.microsoft.com/IE/feedback/details/1736512/
5784 - rnoInnerhtml = /<script|<style|<link/i,
5785 -
5786 - // checked="checked" or checked
5787 - rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
5788 - rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;
5789 -
5790 - // Prefer a tbody over its parent table for containing new rows
5791 - function manipulationTarget( elem, content ) {
5792 - if ( nodeName( elem, "table" ) &&
5793 - nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) {
5794 -
5795 - return jQuery( elem ).children( "tbody" )[ 0 ] || elem;
5796 - }
5797 -
5798 - return elem;
5799 - }
5800 -
5801 - // Replace/restore the type attribute of script elements for safe DOM manipulation
5802 - function disableScript( elem ) {
5803 - elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type;
5804 - return elem;
5805 - }
5806 - function restoreScript( elem ) {
5807 - if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) {
5808 - elem.type = elem.type.slice( 5 );
5809 - } else {
5810 - elem.removeAttribute( "type" );
5811 - }
5812 -
5813 - return elem;
5814 - }
5815 -
5816 - function cloneCopyEvent( src, dest ) {
5817 - var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;
5818 -
5819 - if ( dest.nodeType !== 1 ) {
5820 - return;
5821 - }
5822 -
5823 - // 1. Copy private data: events, handlers, etc.
5824 - if ( dataPriv.hasData( src ) ) {
5825 - pdataOld = dataPriv.access( src );
5826 - pdataCur = dataPriv.set( dest, pdataOld );
5827 - events = pdataOld.events;
5828 -
5829 - if ( events ) {
5830 - delete pdataCur.handle;
5831 - pdataCur.events = {};
5832 -
5833 - for ( type in events ) {
5834 - for ( i = 0, l = events[ type ].length; i < l; i++ ) {
5835 - jQuery.event.add( dest, type, events[ type ][ i ] );
5836 - }
5837 - }
5838 - }
5839 - }
5840 -
5841 - // 2. Copy user data
5842 - if ( dataUser.hasData( src ) ) {
5843 - udataOld = dataUser.access( src );
5844 - udataCur = jQuery.extend( {}, udataOld );
5845 -
5846 - dataUser.set( dest, udataCur );
5847 - }
5848 - }
5849 -
5850 - // Fix IE bugs, see support tests
5851 - function fixInput( src, dest ) {
5852 - var nodeName = dest.nodeName.toLowerCase();
5853 -
5854 - // Fails to persist the checked state of a cloned checkbox or radio button.
5855 - if ( nodeName === "input" && rcheckableType.test( src.type ) ) {
5856 - dest.checked = src.checked;
5857 -
5858 - // Fails to return the selected option to the default selected state when cloning options
5859 - } else if ( nodeName === "input" || nodeName === "textarea" ) {
5860 - dest.defaultValue = src.defaultValue;
5861 - }
5862 - }
5863 -
5864 - function domManip( collection, args, callback, ignored ) {
5865 -
5866 - // Flatten any nested arrays
5867 - args = concat.apply( [], args );
5868 -
5869 - var fragment, first, scripts, hasScripts, node, doc,
5870 - i = 0,
5871 - l = collection.length,
5872 - iNoClone = l - 1,
5873 - value = args[ 0 ],
5874 - valueIsFunction = isFunction( value );
5875 -
5876 - // We can't cloneNode fragments that contain checked, in WebKit
5877 - if ( valueIsFunction ||
5878 - ( l > 1 && typeof value === "string" &&
5879 - !support.checkClone && rchecked.test( value ) ) ) {
5880 - return collection.each( function( index ) {
5881 - var self = collection.eq( index );
5882 - if ( valueIsFunction ) {
5883 - args[ 0 ] = value.call( this, index, self.html() );
5884 - }
5885 - domManip( self, args, callback, ignored );
5886 - } );
5887 - }
5888 -
5889 - if ( l ) {
5890 - fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );
5891 - first = fragment.firstChild;
5892 -
5893 - if ( fragment.childNodes.length === 1 ) {
5894 - fragment = first;
5895 - }
5896 -
5897 - // Require either new content or an interest in ignored elements to invoke the callback
5898 - if ( first || ignored ) {
5899 - scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
5900 - hasScripts = scripts.length;
5901 -
5902 - // Use the original fragment for the last item
5903 - // instead of the first because it can end up
5904 - // being emptied incorrectly in certain situations (#8070).
5905 - for ( ; i < l; i++ ) {
5906 - node = fragment;
5907 -
5908 - if ( i !== iNoClone ) {
5909 - node = jQuery.clone( node, true, true );
5910 -
5911 - // Keep references to cloned scripts for later restoration
5912 - if ( hasScripts ) {
5913 -
5914 - // Support: Android <=4.0 only, PhantomJS 1 only
5915 - // push.apply(_, arraylike) throws on ancient WebKit
5916 - jQuery.merge( scripts, getAll( node, "script" ) );
5917 - }
5918 - }
5919 -
5920 - callback.call( collection[ i ], node, i );
5921 - }
5922 -
5923 - if ( hasScripts ) {
5924 - doc = scripts[ scripts.length - 1 ].ownerDocument;
5925 -
5926 - // Reenable scripts
5927 - jQuery.map( scripts, restoreScript );
5928 -
5929 - // Evaluate executable scripts on first document insertion
5930 - for ( i = 0; i < hasScripts; i++ ) {
5931 - node = scripts[ i ];
5932 - if ( rscriptType.test( node.type || "" ) &&
5933 - !dataPriv.access( node, "globalEval" ) &&
5934 - jQuery.contains( doc, node ) ) {
5935 -
5936 - if ( node.src && ( node.type || "" ).toLowerCase() !== "module" ) {
5937 -
5938 - // Optional AJAX dependency, but won't run scripts if not present
5939 - if ( jQuery._evalUrl && !node.noModule ) {
5940 - jQuery._evalUrl( node.src, {
5941 - nonce: node.nonce || node.getAttribute( "nonce" )
5942 - } );
5943 - }
5944 - } else {
5945 - DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc );
5946 - }
5947 - }
5948 - }
5949 - }
5950 - }
5951 - }
5952 -
5953 - return collection;
5954 - }
5955 -
5956 - function remove( elem, selector, keepData ) {
5957 - var node,
5958 - nodes = selector ? jQuery.filter( selector, elem ) : elem,
5959 - i = 0;
5960 -
5961 - for ( ; ( node = nodes[ i ] ) != null; i++ ) {
5962 - if ( !keepData && node.nodeType === 1 ) {
5963 - jQuery.cleanData( getAll( node ) );
5964 - }
5965 -
5966 - if ( node.parentNode ) {
5967 - if ( keepData && isAttached( node ) ) {
5968 - setGlobalEval( getAll( node, "script" ) );
5969 - }
5970 - node.parentNode.removeChild( node );
5971 - }
5972 - }
5973 -
5974 - return elem;
5975 - }
5976 -
5977 - jQuery.extend( {
5978 - htmlPrefilter: function( html ) {
5979 - return html.replace( rxhtmlTag, "<$1></$2>" );
5980 - },
5981 -
5982 - clone: function( elem, dataAndEvents, deepDataAndEvents ) {
5983 - var i, l, srcElements, destElements,
5984 - clone = elem.cloneNode( true ),
5985 - inPage = isAttached( elem );
5986 -
5987 - // Fix IE cloning issues
5988 - if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&
5989 - !jQuery.isXMLDoc( elem ) ) {
5990 -
5991 - // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2
5992 - destElements = getAll( clone );
5993 - srcElements = getAll( elem );
5994 -
5995 - for ( i = 0, l = srcElements.length; i < l; i++ ) {
5996 - fixInput( srcElements[ i ], destElements[ i ] );
5997 - }
5998 - }
5999 -
6000 - // Copy the events from the original to the clone
6001 - if ( dataAndEvents ) {
6002 - if ( deepDataAndEvents ) {
6003 - srcElements = srcElements || getAll( elem );
6004 - destElements = destElements || getAll( clone );
6005 -
6006 - for ( i = 0, l = srcElements.length; i < l; i++ ) {
6007 - cloneCopyEvent( srcElements[ i ], destElements[ i ] );
6008 - }
6009 - } else {
6010 - cloneCopyEvent( elem, clone );
6011 - }
6012 - }
6013 -
6014 - // Preserve script evaluation history
6015 - destElements = getAll( clone, "script" );
6016 - if ( destElements.length > 0 ) {
6017 - setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
6018 - }
6019 -
6020 - // Return the cloned set
6021 - return clone;
6022 - },
6023 -
6024 - cleanData: function( elems ) {
6025 - var data, elem, type,
6026 - special = jQuery.event.special,
6027 - i = 0;
6028 -
6029 - for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {
6030 - if ( acceptData( elem ) ) {
6031 - if ( ( data = elem[ dataPriv.expando ] ) ) {
6032 - if ( data.events ) {
6033 - for ( type in data.events ) {
6034 - if ( special[ type ] ) {
6035 - jQuery.event.remove( elem, type );
6036 -
6037 - // This is a shortcut to avoid jQuery.event.remove's overhead
6038 - } else {
6039 - jQuery.removeEvent( elem, type, data.handle );
6040 - }
6041 - }
6042 - }
6043 -
6044 - // Support: Chrome <=35 - 45+
6045 - // Assign undefined instead of using delete, see Data#remove
6046 - elem[ dataPriv.expando ] = undefined;
6047 - }
6048 - if ( elem[ dataUser.expando ] ) {
6049 -
6050 - // Support: Chrome <=35 - 45+
6051 - // Assign undefined instead of using delete, see Data#remove
6052 - elem[ dataUser.expando ] = undefined;
6053 - }
6054 - }
6055 - }
6056 - }
6057 - } );
6058 -
6059 - jQuery.fn.extend( {
6060 - detach: function( selector ) {
6061 - return remove( this, selector, true );
6062 - },
6063 -
6064 - remove: function( selector ) {
6065 - return remove( this, selector );
6066 - },
6067 -
6068 - text: function( value ) {
6069 - return access( this, function( value ) {
6070 - return value === undefined ?
6071 - jQuery.text( this ) :
6072 - this.empty().each( function() {
6073 - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
6074 - this.textContent = value;
6075 - }
6076 - } );
6077 - }, null, value, arguments.length );
6078 - },
6079 -
6080 - append: function() {
6081 - return domManip( this, arguments, function( elem ) {
6082 - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
6083 - var target = manipulationTarget( this, elem );
6084 - target.appendChild( elem );
6085 - }
6086 - } );
6087 - },
6088 -
6089 - prepend: function() {
6090 - return domManip( this, arguments, function( elem ) {
6091 - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
6092 - var target = manipulationTarget( this, elem );
6093 - target.insertBefore( elem, target.firstChild );
6094 - }
6095 - } );
6096 - },
6097 -
6098 - before: function() {
6099 - return domManip( this, arguments, function( elem ) {
6100 - if ( this.parentNode ) {
6101 - this.parentNode.insertBefore( elem, this );
6102 - }
6103 - } );
6104 - },
6105 -
6106 - after: function() {
6107 - return domManip( this, arguments, function( elem ) {
6108 - if ( this.parentNode ) {
6109 - this.parentNode.insertBefore( elem, this.nextSibling );
6110 - }
6111 - } );
6112 - },
6113 -
6114 - empty: function() {
6115 - var elem,
6116 - i = 0;
6117 -
6118 - for ( ; ( elem = this[ i ] ) != null; i++ ) {
6119 - if ( elem.nodeType === 1 ) {
6120 -
6121 - // Prevent memory leaks
6122 - jQuery.cleanData( getAll( elem, false ) );
6123 -
6124 - // Remove any remaining nodes
6125 - elem.textContent = "";
6126 - }
6127 - }
6128 -
6129 - return this;
6130 - },
6131 -
6132 - clone: function( dataAndEvents, deepDataAndEvents ) {
6133 - dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
6134 - deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
6135 -
6136 - return this.map( function() {
6137 - return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
6138 - } );
6139 - },
6140 -
6141 - html: function( value ) {
6142 - return access( this, function( value ) {
6143 - var elem = this[ 0 ] || {},
6144 - i = 0,
6145 - l = this.length;
6146 -
6147 - if ( value === undefined && elem.nodeType === 1 ) {
6148 - return elem.innerHTML;
6149 - }
6150 -
6151 - // See if we can take a shortcut and just use innerHTML
6152 - if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
6153 - !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) {
6154 -
6155 - value = jQuery.htmlPrefilter( value );
6156 -
6157 - try {
6158 - for ( ; i < l; i++ ) {
6159 - elem = this[ i ] || {};
6160 -
6161 - // Remove element nodes and prevent memory leaks
6162 - if ( elem.nodeType === 1 ) {
6163 - jQuery.cleanData( getAll( elem, false ) );
6164 - elem.innerHTML = value;
6165 - }
6166 - }
6167 -
6168 - elem = 0;
6169 -
6170 - // If using innerHTML throws an exception, use the fallback method
6171 - } catch ( e ) {}
6172 - }
6173 -
6174 - if ( elem ) {
6175 - this.empty().append( value );
6176 - }
6177 - }, null, value, arguments.length );
6178 - },
6179 -
6180 - replaceWith: function() {
6181 - var ignored = [];
6182 -
6183 - // Make the changes, replacing each non-ignored context element with the new content
6184 - return domManip( this, arguments, function( elem ) {
6185 - var parent = this.parentNode;
6186 -
6187 - if ( jQuery.inArray( this, ignored ) < 0 ) {
6188 - jQuery.cleanData( getAll( this ) );
6189 - if ( parent ) {
6190 - parent.replaceChild( elem, this );
6191 - }
6192 - }
6193 -
6194 - // Force callback invocation
6195 - }, ignored );
6196 - }
6197 - } );
6198 -
6199 - jQuery.each( {
6200 - appendTo: "append",
6201 - prependTo: "prepend",
6202 - insertBefore: "before",
6203 - insertAfter: "after",
6204 - replaceAll: "replaceWith"
6205 - }, function( name, original ) {
6206 - jQuery.fn[ name ] = function( selector ) {
6207 - var elems,
6208 - ret = [],
6209 - insert = jQuery( selector ),
6210 - last = insert.length - 1,
6211 - i = 0;
6212 -
6213 - for ( ; i <= last; i++ ) {
6214 - elems = i === last ? this : this.clone( true );
6215 - jQuery( insert[ i ] )[ original ]( elems );
6216 -
6217 - // Support: Android <=4.0 only, PhantomJS 1 only
6218 - // .get() because push.apply(_, arraylike) throws on ancient WebKit
6219 - push.apply( ret, elems.get() );
6220 - }
6221 -
6222 - return this.pushStack( ret );
6223 - };
6224 - } );
6225 - var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
6226 -
6227 - var getStyles = function( elem ) {
6228 -
6229 - // Support: IE <=11 only, Firefox <=30 (#15098, #14150)
6230 - // IE throws on elements created in popups
6231 - // FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
6232 - var view = elem.ownerDocument.defaultView;
6233 -
6234 - if ( !view || !view.opener ) {
6235 - view = window;
6236 - }
6237 -
6238 - return view.getComputedStyle( elem );
6239 - };
6240 -
6241 - var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" );
6242 -
6243 -
6244 -
6245 - ( function() {
6246 -
6247 - // Executing both pixelPosition & boxSizingReliable tests require only one layout
6248 - // so they're executed at the same time to save the second computation.
6249 - function computeStyleTests() {
6250 -
6251 - // This is a singleton, we need to execute it only once
6252 - if ( !div ) {
6253 - return;
6254 - }
6255 -
6256 - container.style.cssText = "position:absolute;left:-11111px;width:60px;" +
6257 - "margin-top:1px;padding:0;border:0";
6258 - div.style.cssText =
6259 - "position:relative;display:block;box-sizing:border-box;overflow:scroll;" +
6260 - "margin:auto;border:1px;padding:1px;" +
6261 - "width:60%;top:1%";
6262 - documentElement.appendChild( container ).appendChild( div );
6263 -
6264 - var divStyle = window.getComputedStyle( div );
6265 - pixelPositionVal = divStyle.top !== "1%";
6266 -
6267 - // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44
6268 - reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;
6269 -
6270 - // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3
6271 - // Some styles come back with percentage values, even though they shouldn't
6272 - div.style.right = "60%";
6273 - pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;
6274 -
6275 - // Support: IE 9 - 11 only
6276 - // Detect misreporting of content dimensions for box-sizing:border-box elements
6277 - boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;
6278 -
6279 - // Support: IE 9 only
6280 - // Detect overflow:scroll screwiness (gh-3699)
6281 - // Support: Chrome <=64
6282 - // Don't get tricked when zoom affects offsetWidth (gh-4029)
6283 - div.style.position = "absolute";
6284 - scrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;
6285 -
6286 - documentElement.removeChild( container );
6287 -
6288 - // Nullify the div so it wouldn't be stored in the memory and
6289 - // it will also be a sign that checks already performed
6290 - div = null;
6291 - }
6292 -
6293 - function roundPixelMeasures( measure ) {
6294 - return Math.round( parseFloat( measure ) );
6295 - }
6296 -
6297 - var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,
6298 - reliableMarginLeftVal,
6299 - container = document.createElement( "div" ),
6300 - div = document.createElement( "div" );
6301 -
6302 - // Finish early in limited (non-browser) environments
6303 - if ( !div.style ) {
6304 - return;
6305 - }
6306 -
6307 - // Support: IE <=9 - 11 only
6308 - // Style of cloned element affects source element cloned (#8908)
6309 - div.style.backgroundClip = "content-box";
6310 - div.cloneNode( true ).style.backgroundClip = "";
6311 - support.clearCloneStyle = div.style.backgroundClip === "content-box";
6312 -
6313 - jQuery.extend( support, {
6314 - boxSizingReliable: function() {
6315 - computeStyleTests();
6316 - return boxSizingReliableVal;
6317 - },
6318 - pixelBoxStyles: function() {
6319 - computeStyleTests();
6320 - return pixelBoxStylesVal;
6321 - },
6322 - pixelPosition: function() {
6323 - computeStyleTests();
6324 - return pixelPositionVal;
6325 - },
6326 - reliableMarginLeft: function() {
6327 - computeStyleTests();
6328 - return reliableMarginLeftVal;
6329 - },
6330 - scrollboxSize: function() {
6331 - computeStyleTests();
6332 - return scrollboxSizeVal;
6333 - }
6334 - } );
6335 - } )();
6336 -
6337 -
6338 - function curCSS( elem, name, computed ) {
6339 - var width, minWidth, maxWidth, ret,
6340 -
6341 - // Support: Firefox 51+
6342 - // Retrieving style before computed somehow
6343 - // fixes an issue with getting wrong values
6344 - // on detached elements
6345 - style = elem.style;
6346 -
6347 - computed = computed || getStyles( elem );
6348 -
6349 - // getPropertyValue is needed for:
6350 - // .css('filter') (IE 9 only, #12537)
6351 - // .css('--customProperty) (#3144)
6352 - if ( computed ) {
6353 - ret = computed.getPropertyValue( name ) || computed[ name ];
6354 -
6355 - if ( ret === "" && !isAttached( elem ) ) {
6356 - ret = jQuery.style( elem, name );
6357 - }
6358 -
6359 - // A tribute to the "awesome hack by Dean Edwards"
6360 - // Android Browser returns percentage for some values,
6361 - // but width seems to be reliably pixels.
6362 - // This is against the CSSOM draft spec:
6363 - // https://drafts.csswg.org/cssom/#resolved-values
6364 - if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {
6365 -
6366 - // Remember the original values
6367 - width = style.width;
6368 - minWidth = style.minWidth;
6369 - maxWidth = style.maxWidth;
6370 -
6371 - // Put in the new values to get a computed value out
6372 - style.minWidth = style.maxWidth = style.width = ret;
6373 - ret = computed.width;
6374 -
6375 - // Revert the changed values
6376 - style.width = width;
6377 - style.minWidth = minWidth;
6378 - style.maxWidth = maxWidth;
6379 - }
6380 - }
6381 -
6382 - return ret !== undefined ?
6383 -
6384 - // Support: IE <=9 - 11 only
6385 - // IE returns zIndex value as an integer.
6386 - ret + "" :
6387 - ret;
6388 - }
6389 -
6390 -
6391 - function addGetHookIf( conditionFn, hookFn ) {
6392 -
6393 - // Define the hook, we'll check on the first run if it's really needed.
6394 - return {
6395 - get: function() {
6396 - if ( conditionFn() ) {
6397 -
6398 - // Hook not needed (or it's not possible to use it due
6399 - // to missing dependency), remove it.
6400 - delete this.get;
6401 - return;
6402 - }
6403 -
6404 - // Hook needed; redefine it so that the support test is not executed again.
6405 - return ( this.get = hookFn ).apply( this, arguments );
6406 - }
6407 - };
6408 - }
6409 -
6410 -
6411 - var cssPrefixes = [ "Webkit", "Moz", "ms" ],
6412 - emptyStyle = document.createElement( "div" ).style,
6413 - vendorProps = {};
6414 -
6415 - // Return a vendor-prefixed property or undefined
6416 - function vendorPropName( name ) {
6417 -
6418 - // Check for vendor prefixed names
6419 - var capName = name[ 0 ].toUpperCase() + name.slice( 1 ),
6420 - i = cssPrefixes.length;
6421 -
6422 - while ( i-- ) {
6423 - name = cssPrefixes[ i ] + capName;
6424 - if ( name in emptyStyle ) {
6425 - return name;
6426 - }
6427 - }
6428 - }
6429 -
6430 - // Return a potentially-mapped jQuery.cssProps or vendor prefixed property
6431 - function finalPropName( name ) {
6432 - var final = jQuery.cssProps[ name ] || vendorProps[ name ];
6433 -
6434 - if ( final ) {
6435 - return final;
6436 - }
6437 - if ( name in emptyStyle ) {
6438 - return name;
6439 - }
6440 - return vendorProps[ name ] = vendorPropName( name ) || name;
6441 - }
6442 -
6443 -
6444 - var
6445 -
6446 - // Swappable if display is none or starts with table
6447 - // except "table", "table-cell", or "table-caption"
6448 - // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
6449 - rdisplayswap = /^(none|table(?!-c[ea]).+)/,
6450 - rcustomProp = /^--/,
6451 - cssShow = { position: "absolute", visibility: "hidden", display: "block" },
6452 - cssNormalTransform = {
6453 - letterSpacing: "0",
6454 - fontWeight: "400"
6455 - };
6456 -
6457 - function setPositiveNumber( elem, value, subtract ) {
6458 -
6459 - // Any relative (+/-) values have already been
6460 - // normalized at this point
6461 - var matches = rcssNum.exec( value );
6462 - return matches ?
6463 -
6464 - // Guard against undefined "subtract", e.g., when used as in cssHooks
6465 - Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) :
6466 - value;
6467 - }
6468 -
6469 - function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {
6470 - var i = dimension === "width" ? 1 : 0,
6471 - extra = 0,
6472 - delta = 0;
6473 -
6474 - // Adjustment may not be necessary
6475 - if ( box === ( isBorderBox ? "border" : "content" ) ) {
6476 - return 0;
6477 - }
6478 -
6479 - for ( ; i < 4; i += 2 ) {
6480 -
6481 - // Both box models exclude margin
6482 - if ( box === "margin" ) {
6483 - delta += jQuery.css( elem, box + cssExpand[ i ], true, styles );
6484 - }
6485 -
6486 - // If we get here with a content-box, we're seeking "padding" or "border" or "margin"
6487 - if ( !isBorderBox ) {
6488 -
6489 - // Add padding
6490 - delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
6491 -
6492 - // For "border" or "margin", add border
6493 - if ( box !== "padding" ) {
6494 - delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
6495 -
6496 - // But still keep track of it otherwise
6497 - } else {
6498 - extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
6499 - }
6500 -
6501 - // If we get here with a border-box (content + padding + border), we're seeking "content" or
6502 - // "padding" or "margin"
6503 - } else {
6504 -
6505 - // For "content", subtract padding
6506 - if ( box === "content" ) {
6507 - delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
6508 - }
6509 -
6510 - // For "content" or "padding", subtract border
6511 - if ( box !== "margin" ) {
6512 - delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
6513 - }
6514 - }
6515 - }
6516 -
6517 - // Account for positive content-box scroll gutter when requested by providing computedVal
6518 - if ( !isBorderBox && computedVal >= 0 ) {
6519 -
6520 - // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border
6521 - // Assuming integer scroll gutter, subtract the rest and round down
6522 - delta += Math.max( 0, Math.ceil(
6523 - elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -
6524 - computedVal -
6525 - delta -
6526 - extra -
6527 - 0.5
6528 -
6529 - // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter
6530 - // Use an explicit zero to avoid NaN (gh-3964)
6531 - ) ) || 0;
6532 - }
6533 -
6534 - return delta;
6535 - }
6536 -
6537 - function getWidthOrHeight( elem, dimension, extra ) {
6538 -
6539 - // Start with computed style
6540 - var styles = getStyles( elem ),
6541 -
6542 - // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).
6543 - // Fake content-box until we know it's needed to know the true value.
6544 - boxSizingNeeded = !support.boxSizingReliable() || extra,
6545 - isBorderBox = boxSizingNeeded &&
6546 - jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
6547 - valueIsBorderBox = isBorderBox,
6548 -
6549 - val = curCSS( elem, dimension, styles ),
6550 - offsetProp = "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );
6551 -
6552 - // Support: Firefox <=54
6553 - // Return a confounding non-pixel value or feign ignorance, as appropriate.
6554 - if ( rnumnonpx.test( val ) ) {
6555 - if ( !extra ) {
6556 - return val;
6557 - }
6558 - val = "auto";
6559 - }
6560 -
6561 -
6562 - // Fall back to offsetWidth/offsetHeight when value is "auto"
6563 - // This happens for inline elements with no explicit setting (gh-3571)
6564 - // Support: Android <=4.1 - 4.3 only
6565 - // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)
6566 - // Support: IE 9-11 only
6567 - // Also use offsetWidth/offsetHeight for when box sizing is unreliable
6568 - // We use getClientRects() to check for hidden/disconnected.
6569 - // In those cases, the computed value can be trusted to be border-box
6570 - if ( ( !support.boxSizingReliable() && isBorderBox ||
6571 - val === "auto" ||
6572 - !parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) &&
6573 - elem.getClientRects().length ) {
6574 -
6575 - isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
6576 -
6577 - // Where available, offsetWidth/offsetHeight approximate border box dimensions.
6578 - // Where not available (e.g., SVG), assume unreliable box-sizing and interpret the
6579 - // retrieved value as a content box dimension.
6580 - valueIsBorderBox = offsetProp in elem;
6581 - if ( valueIsBorderBox ) {
6582 - val = elem[ offsetProp ];
6583 - }
6584 - }
6585 -
6586 - // Normalize "" and auto
6587 - val = parseFloat( val ) || 0;
6588 -
6589 - // Adjust for the element's box model
6590 - return ( val +
6591 - boxModelAdjustment(
6592 - elem,
6593 - dimension,
6594 - extra || ( isBorderBox ? "border" : "content" ),
6595 - valueIsBorderBox,
6596 - styles,
6597 -
6598 - // Provide the current computed size to request scroll gutter calculation (gh-3589)
6599 - val
6600 - )
6601 - ) + "px";
6602 - }
6603 -
6604 - jQuery.extend( {
6605 -
6606 - // Add in style property hooks for overriding the default
6607 - // behavior of getting and setting a style property
6608 - cssHooks: {
6609 - opacity: {
6610 - get: function( elem, computed ) {
6611 - if ( computed ) {
6612 -
6613 - // We should always get a number back from opacity
6614 - var ret = curCSS( elem, "opacity" );
6615 - return ret === "" ? "1" : ret;
6616 - }
6617 - }
6618 - }
6619 - },
6620 -
6621 - // Don't automatically add "px" to these possibly-unitless properties
6622 - cssNumber: {
6623 - "animationIterationCount": true,
6624 - "columnCount": true,
6625 - "fillOpacity": true,
6626 - "flexGrow": true,
6627 - "flexShrink": true,
6628 - "fontWeight": true,
6629 - "gridArea": true,
6630 - "gridColumn": true,
6631 - "gridColumnEnd": true,
6632 - "gridColumnStart": true,
6633 - "gridRow": true,
6634 - "gridRowEnd": true,
6635 - "gridRowStart": true,
6636 - "lineHeight": true,
6637 - "opacity": true,
6638 - "order": true,
6639 - "orphans": true,
6640 - "widows": true,
6641 - "zIndex": true,
6642 - "zoom": true
6643 - },
6644 -
6645 - // Add in properties whose names you wish to fix before
6646 - // setting or getting the value
6647 - cssProps: {},
6648 -
6649 - // Get and set the style property on a DOM Node
6650 - style: function( elem, name, value, extra ) {
6651 -
6652 - // Don't set styles on text and comment nodes
6653 - if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
6654 - return;
6655 - }
6656 -
6657 - // Make sure that we're working with the right name
6658 - var ret, type, hooks,
6659 - origName = camelCase( name ),
6660 - isCustomProp = rcustomProp.test( name ),
6661 - style = elem.style;
6662 -
6663 - // Make sure that we're working with the right name. We don't
6664 - // want to query the value if it is a CSS custom property
6665 - // since they are user-defined.
6666 - if ( !isCustomProp ) {
6667 - name = finalPropName( origName );
6668 - }
6669 -
6670 - // Gets hook for the prefixed version, then unprefixed version
6671 - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
6672 -
6673 - // Check if we're setting a value
6674 - if ( value !== undefined ) {
6675 - type = typeof value;
6676 -
6677 - // Convert "+=" or "-=" to relative numbers (#7345)
6678 - if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {
6679 - value = adjustCSS( elem, name, ret );
6680 -
6681 - // Fixes bug #9237
6682 - type = "number";
6683 - }
6684 -
6685 - // Make sure that null and NaN values aren't set (#7116)
6686 - if ( value == null || value !== value ) {
6687 - return;
6688 - }
6689 -
6690 - // If a number was passed in, add the unit (except for certain CSS properties)
6691 - // The isCustomProp check can be removed in jQuery 4.0 when we only auto-append
6692 - // "px" to a few hardcoded values.
6693 - if ( type === "number" && !isCustomProp ) {
6694 - value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" );
6695 - }
6696 -
6697 - // background-* props affect original clone's values
6698 - if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) {
6699 - style[ name ] = "inherit";
6700 - }
6701 -
6702 - // If a hook was provided, use that value, otherwise just set the specified value
6703 - if ( !hooks || !( "set" in hooks ) ||
6704 - ( value = hooks.set( elem, value, extra ) ) !== undefined ) {
6705 -
6706 - if ( isCustomProp ) {
6707 - style.setProperty( name, value );
6708 - } else {
6709 - style[ name ] = value;
6710 - }
6711 - }
6712 -
6713 - } else {
6714 -
6715 - // If a hook was provided get the non-computed value from there
6716 - if ( hooks && "get" in hooks &&
6717 - ( ret = hooks.get( elem, false, extra ) ) !== undefined ) {
6718 -
6719 - return ret;
6720 - }
6721 -
6722 - // Otherwise just get the value from the style object
6723 - return style[ name ];
6724 - }
6725 - },
6726 -
6727 - css: function( elem, name, extra, styles ) {
6728 - var val, num, hooks,
6729 - origName = camelCase( name ),
6730 - isCustomProp = rcustomProp.test( name );
6731 -
6732 - // Make sure that we're working with the right name. We don't
6733 - // want to modify the value if it is a CSS custom property
6734 - // since they are user-defined.
6735 - if ( !isCustomProp ) {
6736 - name = finalPropName( origName );
6737 - }
6738 -
6739 - // Try prefixed name followed by the unprefixed name
6740 - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
6741 -
6742 - // If a hook was provided get the computed value from there
6743 - if ( hooks && "get" in hooks ) {
6744 - val = hooks.get( elem, true, extra );
6745 - }
6746 -
6747 - // Otherwise, if a way to get the computed value exists, use that
6748 - if ( val === undefined ) {
6749 - val = curCSS( elem, name, styles );
6750 - }
6751 -
6752 - // Convert "normal" to computed value
6753 - if ( val === "normal" && name in cssNormalTransform ) {
6754 - val = cssNormalTransform[ name ];
6755 - }
6756 -
6757 - // Make numeric if forced or a qualifier was provided and val looks numeric
6758 - if ( extra === "" || extra ) {
6759 - num = parseFloat( val );
6760 - return extra === true || isFinite( num ) ? num || 0 : val;
6761 - }
6762 -
6763 - return val;
6764 - }
6765 - } );
6766 -
6767 - jQuery.each( [ "height", "width" ], function( i, dimension ) {
6768 - jQuery.cssHooks[ dimension ] = {
6769 - get: function( elem, computed, extra ) {
6770 - if ( computed ) {
6771 -
6772 - // Certain elements can have dimension info if we invisibly show them
6773 - // but it must have a current display style that would benefit
6774 - return rdisplayswap.test( jQuery.css( elem, "display" ) ) &&
6775 -
6776 - // Support: Safari 8+
6777 - // Table columns in Safari have non-zero offsetWidth & zero
6778 - // getBoundingClientRect().width unless display is changed.
6779 - // Support: IE <=11 only
6780 - // Running getBoundingClientRect on a disconnected node
6781 - // in IE throws an error.
6782 - ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?
6783 - swap( elem, cssShow, function() {
6784 - return getWidthOrHeight( elem, dimension, extra );
6785 - } ) :
6786 - getWidthOrHeight( elem, dimension, extra );
6787 - }
6788 - },
6789 -
6790 - set: function( elem, value, extra ) {
6791 - var matches,
6792 - styles = getStyles( elem ),
6793 -
6794 - // Only read styles.position if the test has a chance to fail
6795 - // to avoid forcing a reflow.
6796 - scrollboxSizeBuggy = !support.scrollboxSize() &&
6797 - styles.position === "absolute",
6798 -
6799 - // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)
6800 - boxSizingNeeded = scrollboxSizeBuggy || extra,
6801 - isBorderBox = boxSizingNeeded &&
6802 - jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
6803 - subtract = extra ?
6804 - boxModelAdjustment(
6805 - elem,
6806 - dimension,
6807 - extra,
6808 - isBorderBox,
6809 - styles
6810 - ) :
6811 - 0;
6812 -
6813 - // Account for unreliable border-box dimensions by comparing offset* to computed and
6814 - // faking a content-box to get border and padding (gh-3699)
6815 - if ( isBorderBox && scrollboxSizeBuggy ) {
6816 - subtract -= Math.ceil(
6817 - elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -
6818 - parseFloat( styles[ dimension ] ) -
6819 - boxModelAdjustment( elem, dimension, "border", false, styles ) -
6820 - 0.5
6821 - );
6822 - }
6823 -
6824 - // Convert to pixels if value adjustment is needed
6825 - if ( subtract && ( matches = rcssNum.exec( value ) ) &&
6826 - ( matches[ 3 ] || "px" ) !== "px" ) {
6827 -
6828 - elem.style[ dimension ] = value;
6829 - value = jQuery.css( elem, dimension );
6830 - }
6831 -
6832 - return setPositiveNumber( elem, value, subtract );
6833 - }
6834 - };
6835 - } );
6836 -
6837 - jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,
6838 - function( elem, computed ) {
6839 - if ( computed ) {
6840 - return ( parseFloat( curCSS( elem, "marginLeft" ) ) ||
6841 - elem.getBoundingClientRect().left -
6842 - swap( elem, { marginLeft: 0 }, function() {
6843 - return elem.getBoundingClientRect().left;
6844 - } )
6845 - ) + "px";
6846 - }
6847 - }
6848 - );
6849 -
6850 - // These hooks are used by animate to expand properties
6851 - jQuery.each( {
6852 - margin: "",
6853 - padding: "",
6854 - border: "Width"
6855 - }, function( prefix, suffix ) {
6856 - jQuery.cssHooks[ prefix + suffix ] = {
6857 - expand: function( value ) {
6858 - var i = 0,
6859 - expanded = {},
6860 -
6861 - // Assumes a single number if not a string
6862 - parts = typeof value === "string" ? value.split( " " ) : [ value ];
6863 -
6864 - for ( ; i < 4; i++ ) {
6865 - expanded[ prefix + cssExpand[ i ] + suffix ] =
6866 - parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
6867 - }
6868 -
6869 - return expanded;
6870 - }
6871 - };
6872 -
6873 - if ( prefix !== "margin" ) {
6874 - jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
6875 - }
6876 - } );
6877 -
6878 - jQuery.fn.extend( {
6879 - css: function( name, value ) {
6880 - return access( this, function( elem, name, value ) {
6881 - var styles, len,
6882 - map = {},
6883 - i = 0;
6884 -
6885 - if ( Array.isArray( name ) ) {
6886 - styles = getStyles( elem );
6887 - len = name.length;
6888 -
6889 - for ( ; i < len; i++ ) {
6890 - map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
6891 - }
6892 -
6893 - return map;
6894 - }
6895 -
6896 - return value !== undefined ?
6897 - jQuery.style( elem, name, value ) :
6898 - jQuery.css( elem, name );
6899 - }, name, value, arguments.length > 1 );
6900 - }
6901 - } );
6902 -
6903 -
6904 - // Based off of the plugin by Clint Helfers, with permission.
6905 - // https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/
6906 - jQuery.fn.delay = function( time, type ) {
6907 - time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
6908 - type = type || "fx";
6909 -
6910 - return this.queue( type, function( next, hooks ) {
6911 - var timeout = window.setTimeout( next, time );
6912 - hooks.stop = function() {
6913 - window.clearTimeout( timeout );
6914 - };
6915 - } );
6916 - };
6917 -
6918 -
6919 - ( function() {
6920 - var input = document.createElement( "input" ),
6921 - select = document.createElement( "select" ),
6922 - opt = select.appendChild( document.createElement( "option" ) );
6923 -
6924 - input.type = "checkbox";
6925 -
6926 - // Support: Android <=4.3 only
6927 - // Default value for a checkbox should be "on"
6928 - support.checkOn = input.value !== "";
6929 -
6930 - // Support: IE <=11 only
6931 - // Must access selectedIndex to make default options select
6932 - support.optSelected = opt.selected;
6933 -
6934 - // Support: IE <=11 only
6935 - // An input loses its value after becoming a radio
6936 - input = document.createElement( "input" );
6937 - input.value = "t";
6938 - input.type = "radio";
6939 - support.radioValue = input.value === "t";
6940 - } )();
6941 -
6942 -
6943 - var boolHook,
6944 - attrHandle = jQuery.expr.attrHandle;
6945 -
6946 - jQuery.fn.extend( {
6947 - attr: function( name, value ) {
6948 - return access( this, jQuery.attr, name, value, arguments.length > 1 );
6949 - },
6950 -
6951 - removeAttr: function( name ) {
6952 - return this.each( function() {
6953 - jQuery.removeAttr( this, name );
6954 - } );
6955 - }
6956 - } );
6957 -
6958 - jQuery.extend( {
6959 - attr: function( elem, name, value ) {
6960 - var ret, hooks,
6961 - nType = elem.nodeType;
6962 -
6963 - // Don't get/set attributes on text, comment and attribute nodes
6964 - if ( nType === 3 || nType === 8 || nType === 2 ) {
6965 - return;
6966 - }
6967 -
6968 - // Fallback to prop when attributes are not supported
6969 - if ( typeof elem.getAttribute === "undefined" ) {
6970 - return jQuery.prop( elem, name, value );
6971 - }
6972 -
6973 - // Attribute hooks are determined by the lowercase version
6974 - // Grab necessary hook if one is defined
6975 - if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
6976 - hooks = jQuery.attrHooks[ name.toLowerCase() ] ||
6977 - ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );
6978 - }
6979 -
6980 - if ( value !== undefined ) {
6981 - if ( value === null ) {
6982 - jQuery.removeAttr( elem, name );
6983 - return;
6984 - }
6985 -
6986 - if ( hooks && "set" in hooks &&
6987 - ( ret = hooks.set( elem, value, name ) ) !== undefined ) {
6988 - return ret;
6989 - }
6990 -
6991 - elem.setAttribute( name, value + "" );
6992 - return value;
6993 - }
6994 -
6995 - if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
6996 - return ret;
6997 - }
6998 -
6999 - ret = jQuery.find.attr( elem, name );
7000 -
7001 - // Non-existent attributes return null, we normalize to undefined
7002 - return ret == null ? undefined : ret;
7003 - },
7004 -
7005 - attrHooks: {
7006 - type: {
7007 - set: function( elem, value ) {
7008 - if ( !support.radioValue && value === "radio" &&
7009 - nodeName( elem, "input" ) ) {
7010 - var val = elem.value;
7011 - elem.setAttribute( "type", value );
7012 - if ( val ) {
7013 - elem.value = val;
7014 - }
7015 - return value;
7016 - }
7017 - }
7018 - }
7019 - },
7020 -
7021 - removeAttr: function( elem, value ) {
7022 - var name,
7023 - i = 0,
7024 -
7025 - // Attribute names can contain non-HTML whitespace characters
7026 - // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2
7027 - attrNames = value && value.match( rnothtmlwhite );
7028 -
7029 - if ( attrNames && elem.nodeType === 1 ) {
7030 - while ( ( name = attrNames[ i++ ] ) ) {
7031 - elem.removeAttribute( name );
7032 - }
7033 - }
7034 - }
7035 - } );
7036 -
7037 - // Hooks for boolean attributes
7038 - boolHook = {
7039 - set: function( elem, value, name ) {
7040 - if ( value === false ) {
7041 -
7042 - // Remove boolean attributes when set to false
7043 - jQuery.removeAttr( elem, name );
7044 - } else {
7045 - elem.setAttribute( name, name );
7046 - }
7047 - return name;
7048 - }
7049 - };
7050 -
7051 - jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) {
7052 - var getter = attrHandle[ name ] || jQuery.find.attr;
7053 -
7054 - attrHandle[ name ] = function( elem, name, isXML ) {
7055 - var ret, handle,
7056 - lowercaseName = name.toLowerCase();
7057 -
7058 - if ( !isXML ) {
7059 -
7060 - // Avoid an infinite loop by temporarily removing this function from the getter
7061 - handle = attrHandle[ lowercaseName ];
7062 - attrHandle[ lowercaseName ] = ret;
7063 - ret = getter( elem, name, isXML ) != null ?
7064 - lowercaseName :
7065 - null;
7066 - attrHandle[ lowercaseName ] = handle;
7067 - }
7068 - return ret;
7069 - };
7070 - } );
7071 -
7072 -
7073 -
7074 -
7075 - var rfocusable = /^(?:input|select|textarea|button)$/i,
7076 - rclickable = /^(?:a|area)$/i;
7077 -
7078 - jQuery.fn.extend( {
7079 - prop: function( name, value ) {
7080 - return access( this, jQuery.prop, name, value, arguments.length > 1 );
7081 - },
7082 -
7083 - removeProp: function( name ) {
7084 - return this.each( function() {
7085 - delete this[ jQuery.propFix[ name ] || name ];
7086 - } );
7087 - }
7088 - } );
7089 -
7090 - jQuery.extend( {
7091 - prop: function( elem, name, value ) {
7092 - var ret, hooks,
7093 - nType = elem.nodeType;
7094 -
7095 - // Don't get/set properties on text, comment and attribute nodes
7096 - if ( nType === 3 || nType === 8 || nType === 2 ) {
7097 - return;
7098 - }
7099 -
7100 - if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
7101 -
7102 - // Fix name and attach hooks
7103 - name = jQuery.propFix[ name ] || name;
7104 - hooks = jQuery.propHooks[ name ];
7105 - }
7106 -
7107 - if ( value !== undefined ) {
7108 - if ( hooks && "set" in hooks &&
7109 - ( ret = hooks.set( elem, value, name ) ) !== undefined ) {
7110 - return ret;
7111 - }
7112 -
7113 - return ( elem[ name ] = value );
7114 - }
7115 -
7116 - if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
7117 - return ret;
7118 - }
7119 -
7120 - return elem[ name ];
7121 - },
7122 -
7123 - propHooks: {
7124 - tabIndex: {
7125 - get: function( elem ) {
7126 -
7127 - // Support: IE <=9 - 11 only
7128 - // elem.tabIndex doesn't always return the
7129 - // correct value when it hasn't been explicitly set
7130 - // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
7131 - // Use proper attribute retrieval(#12072)
7132 - var tabindex = jQuery.find.attr( elem, "tabindex" );
7133 -
7134 - if ( tabindex ) {
7135 - return parseInt( tabindex, 10 );
7136 - }
7137 -
7138 - if (
7139 - rfocusable.test( elem.nodeName ) ||
7140 - rclickable.test( elem.nodeName ) &&
7141 - elem.href
7142 - ) {
7143 - return 0;
7144 - }
7145 -
7146 - return -1;
7147 - }
7148 - }
7149 - },
7150 -
7151 - propFix: {
7152 - "for": "htmlFor",
7153 - "class": "className"
7154 - }
7155 - } );
7156 -
7157 - // Support: IE <=11 only
7158 - // Accessing the selectedIndex property
7159 - // forces the browser to respect setting selected
7160 - // on the option
7161 - // The getter ensures a default option is selected
7162 - // when in an optgroup
7163 - // eslint rule "no-unused-expressions" is disabled for this code
7164 - // since it considers such accessions noop
7165 - if ( !support.optSelected ) {
7166 - jQuery.propHooks.selected = {
7167 - get: function( elem ) {
7168 -
7169 - /* eslint no-unused-expressions: "off" */
7170 -
7171 - var parent = elem.parentNode;
7172 - if ( parent && parent.parentNode ) {
7173 - parent.parentNode.selectedIndex;
7174 - }
7175 - return null;
7176 - },
7177 - set: function( elem ) {
7178 -
7179 - /* eslint no-unused-expressions: "off" */
7180 -
7181 - var parent = elem.parentNode;
7182 - if ( parent ) {
7183 - parent.selectedIndex;
7184 -
7185 - if ( parent.parentNode ) {
7186 - parent.parentNode.selectedIndex;
7187 - }
7188 - }
7189 - }
7190 - };
7191 - }
7192 -
7193 - jQuery.each( [
7194 - "tabIndex",
7195 - "readOnly",
7196 - "maxLength",
7197 - "cellSpacing",
7198 - "cellPadding",
7199 - "rowSpan",
7200 - "colSpan",
7201 - "useMap",
7202 - "frameBorder",
7203 - "contentEditable"
7204 - ], function() {
7205 - jQuery.propFix[ this.toLowerCase() ] = this;
7206 - } );
7207 -
7208 -
7209 -
7210 -
7211 - // Strip and collapse whitespace according to HTML spec
7212 - // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace
7213 - function stripAndCollapse( value ) {
7214 - var tokens = value.match( rnothtmlwhite ) || [];
7215 - return tokens.join( " " );
7216 - }
7217 -
7218 -
7219 - function getClass( elem ) {
7220 - return elem.getAttribute && elem.getAttribute( "class" ) || "";
7221 - }
7222 -
7223 - function classesToArray( value ) {
7224 - if ( Array.isArray( value ) ) {
7225 - return value;
7226 - }
7227 - if ( typeof value === "string" ) {
7228 - return value.match( rnothtmlwhite ) || [];
7229 - }
7230 - return [];
7231 - }
7232 -
7233 - jQuery.fn.extend( {
7234 - addClass: function( value ) {
7235 - var classes, elem, cur, curValue, clazz, j, finalValue,
7236 - i = 0;
7237 -
7238 - if ( isFunction( value ) ) {
7239 - return this.each( function( j ) {
7240 - jQuery( this ).addClass( value.call( this, j, getClass( this ) ) );
7241 - } );
7242 - }
7243 -
7244 - classes = classesToArray( value );
7245 -
7246 - if ( classes.length ) {
7247 - while ( ( elem = this[ i++ ] ) ) {
7248 - curValue = getClass( elem );
7249 - cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
7250 -
7251 - if ( cur ) {
7252 - j = 0;
7253 - while ( ( clazz = classes[ j++ ] ) ) {
7254 - if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
7255 - cur += clazz + " ";
7256 - }
7257 - }
7258 -
7259 - // Only assign if different to avoid unneeded rendering.
7260 - finalValue = stripAndCollapse( cur );
7261 - if ( curValue !== finalValue ) {
7262 - elem.setAttribute( "class", finalValue );
7263 - }
7264 - }
7265 - }
7266 - }
7267 -
7268 - return this;
7269 - },
7270 -
7271 - removeClass: function( value ) {
7272 - var classes, elem, cur, curValue, clazz, j, finalValue,
7273 - i = 0;
7274 -
7275 - if ( isFunction( value ) ) {
7276 - return this.each( function( j ) {
7277 - jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );
7278 - } );
7279 - }
7280 -
7281 - if ( !arguments.length ) {
7282 - return this.attr( "class", "" );
7283 - }
7284 -
7285 - classes = classesToArray( value );
7286 -
7287 - if ( classes.length ) {
7288 - while ( ( elem = this[ i++ ] ) ) {
7289 - curValue = getClass( elem );
7290 -
7291 - // This expression is here for better compressibility (see addClass)
7292 - cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
7293 -
7294 - if ( cur ) {
7295 - j = 0;
7296 - while ( ( clazz = classes[ j++ ] ) ) {
7297 -
7298 - // Remove *all* instances
7299 - while ( cur.indexOf( " " + clazz + " " ) > -1 ) {
7300 - cur = cur.replace( " " + clazz + " ", " " );
7301 - }
7302 - }
7303 -
7304 - // Only assign if different to avoid unneeded rendering.
7305 - finalValue = stripAndCollapse( cur );
7306 - if ( curValue !== finalValue ) {
7307 - elem.setAttribute( "class", finalValue );
7308 - }
7309 - }
7310 - }
7311 - }
7312 -
7313 - return this;
7314 - },
7315 -
7316 - toggleClass: function( value, stateVal ) {
7317 - var type = typeof value,
7318 - isValidValue = type === "string" || Array.isArray( value );
7319 -
7320 - if ( typeof stateVal === "boolean" && isValidValue ) {
7321 - return stateVal ? this.addClass( value ) : this.removeClass( value );
7322 - }
7323 -
7324 - if ( isFunction( value ) ) {
7325 - return this.each( function( i ) {
7326 - jQuery( this ).toggleClass(
7327 - value.call( this, i, getClass( this ), stateVal ),
7328 - stateVal
7329 - );
7330 - } );
7331 - }
7332 -
7333 - return this.each( function() {
7334 - var className, i, self, classNames;
7335 -
7336 - if ( isValidValue ) {
7337 -
7338 - // Toggle individual class names
7339 - i = 0;
7340 - self = jQuery( this );
7341 - classNames = classesToArray( value );
7342 -
7343 - while ( ( className = classNames[ i++ ] ) ) {
7344 -
7345 - // Check each className given, space separated list
7346 - if ( self.hasClass( className ) ) {
7347 - self.removeClass( className );
7348 - } else {
7349 - self.addClass( className );
7350 - }
7351 - }
7352 -
7353 - // Toggle whole class name
7354 - } else if ( value === undefined || type === "boolean" ) {
7355 - className = getClass( this );
7356 - if ( className ) {
7357 -
7358 - // Store className if set
7359 - dataPriv.set( this, "__className__", className );
7360 - }
7361 -
7362 - // If the element has a class name or if we're passed `false`,
7363 - // then remove the whole classname (if there was one, the above saved it).
7364 - // Otherwise bring back whatever was previously saved (if anything),
7365 - // falling back to the empty string if nothing was stored.
7366 - if ( this.setAttribute ) {
7367 - this.setAttribute( "class",
7368 - className || value === false ?
7369 - "" :
7370 - dataPriv.get( this, "__className__" ) || ""
7371 - );
7372 - }
7373 - }
7374 - } );
7375 - },
7376 -
7377 - hasClass: function( selector ) {
7378 - var className, elem,
7379 - i = 0;
7380 -
7381 - className = " " + selector + " ";
7382 - while ( ( elem = this[ i++ ] ) ) {
7383 - if ( elem.nodeType === 1 &&
7384 - ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) {
7385 - return true;
7386 - }
7387 - }
7388 -
7389 - return false;
7390 - }
7391 - } );
7392 -
7393 -
7394 -
7395 -
7396 - var rreturn = /\r/g;
7397 -
7398 - jQuery.fn.extend( {
7399 - val: function( value ) {
7400 - var hooks, ret, valueIsFunction,
7401 - elem = this[ 0 ];
7402 -
7403 - if ( !arguments.length ) {
7404 - if ( elem ) {
7405 - hooks = jQuery.valHooks[ elem.type ] ||
7406 - jQuery.valHooks[ elem.nodeName.toLowerCase() ];
7407 -
7408 - if ( hooks &&
7409 - "get" in hooks &&
7410 - ( ret = hooks.get( elem, "value" ) ) !== undefined
7411 - ) {
7412 - return ret;
7413 - }
7414 -
7415 - ret = elem.value;
7416 -
7417 - // Handle most common string cases
7418 - if ( typeof ret === "string" ) {
7419 - return ret.replace( rreturn, "" );
7420 - }
7421 -
7422 - // Handle cases where value is null/undef or number
7423 - return ret == null ? "" : ret;
7424 - }
7425 -
7426 - return;
7427 - }
7428 -
7429 - valueIsFunction = isFunction( value );
7430 -
7431 - return this.each( function( i ) {
7432 - var val;
7433 -
7434 - if ( this.nodeType !== 1 ) {
7435 - return;
7436 - }
7437 -
7438 - if ( valueIsFunction ) {
7439 - val = value.call( this, i, jQuery( this ).val() );
7440 - } else {
7441 - val = value;
7442 - }
7443 -
7444 - // Treat null/undefined as ""; convert numbers to string
7445 - if ( val == null ) {
7446 - val = "";
7447 -
7448 - } else if ( typeof val === "number" ) {
7449 - val += "";
7450 -
7451 - } else if ( Array.isArray( val ) ) {
7452 - val = jQuery.map( val, function( value ) {
7453 - return value == null ? "" : value + "";
7454 - } );
7455 - }
7456 -
7457 - hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
7458 -
7459 - // If set returns undefined, fall back to normal setting
7460 - if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) {
7461 - this.value = val;
7462 - }
7463 - } );
7464 - }
7465 - } );
7466 -
7467 - jQuery.extend( {
7468 - valHooks: {
7469 - option: {
7470 - get: function( elem ) {
7471 -
7472 - var val = jQuery.find.attr( elem, "value" );
7473 - return val != null ?
7474 - val :
7475 -
7476 - // Support: IE <=10 - 11 only
7477 - // option.text throws exceptions (#14686, #14858)
7478 - // Strip and collapse whitespace
7479 - // https://html.spec.whatwg.org/#strip-and-collapse-whitespace
7480 - stripAndCollapse( jQuery.text( elem ) );
7481 - }
7482 - },
7483 - select: {
7484 - get: function( elem ) {
7485 - var value, option, i,
7486 - options = elem.options,
7487 - index = elem.selectedIndex,
7488 - one = elem.type === "select-one",
7489 - values = one ? null : [],
7490 - max = one ? index + 1 : options.length;
7491 -
7492 - if ( index < 0 ) {
7493 - i = max;
7494 -
7495 - } else {
7496 - i = one ? index : 0;
7497 - }
7498 -
7499 - // Loop through all the selected options
7500 - for ( ; i < max; i++ ) {
7501 - option = options[ i ];
7502 -
7503 - // Support: IE <=9 only
7504 - // IE8-9 doesn't update selected after form reset (#2551)
7505 - if ( ( option.selected || i === index ) &&
7506 -
7507 - // Don't return options that are disabled or in a disabled optgroup
7508 - !option.disabled &&
7509 - ( !option.parentNode.disabled ||
7510 - !nodeName( option.parentNode, "optgroup" ) ) ) {
7511 -
7512 - // Get the specific value for the option
7513 - value = jQuery( option ).val();
7514 -
7515 - // We don't need an array for one selects
7516 - if ( one ) {
7517 - return value;
7518 - }
7519 -
7520 - // Multi-Selects return an array
7521 - values.push( value );
7522 - }
7523 - }
7524 -
7525 - return values;
7526 - },
7527 -
7528 - set: function( elem, value ) {
7529 - var optionSet, option,
7530 - options = elem.options,
7531 - values = jQuery.makeArray( value ),
7532 - i = options.length;
7533 -
7534 - while ( i-- ) {
7535 - option = options[ i ];
7536 -
7537 - /* eslint-disable no-cond-assign */
7538 -
7539 - if ( option.selected =
7540 - jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1
7541 - ) {
7542 - optionSet = true;
7543 - }
7544 -
7545 - /* eslint-enable no-cond-assign */
7546 - }
7547 -
7548 - // Force browsers to behave consistently when non-matching value is set
7549 - if ( !optionSet ) {
7550 - elem.selectedIndex = -1;
7551 - }
7552 - return values;
7553 - }
7554 - }
7555 - }
7556 - } );
7557 -
7558 - // Radios and checkboxes getter/setter
7559 - jQuery.each( [ "radio", "checkbox" ], function() {
7560 - jQuery.valHooks[ this ] = {
7561 - set: function( elem, value ) {
7562 - if ( Array.isArray( value ) ) {
7563 - return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );
7564 - }
7565 - }
7566 - };
7567 - if ( !support.checkOn ) {
7568 - jQuery.valHooks[ this ].get = function( elem ) {
7569 - return elem.getAttribute( "value" ) === null ? "on" : elem.value;
7570 - };
7571 - }
7572 - } );
7573 -
7574 -
7575 -
7576 -
7577 - // Return jQuery for attributes-only inclusion
7578 -
7579 -
7580 - support.focusin = "onfocusin" in window;
7581 -
7582 -
7583 - var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
7584 - stopPropagationCallback = function( e ) {
7585 - e.stopPropagation();
7586 - };
7587 -
7588 - jQuery.extend( jQuery.event, {
7589 -
7590 - trigger: function( event, data, elem, onlyHandlers ) {
7591 -
7592 - var i, cur, tmp, bubbleType, ontype, handle, special, lastElement,
7593 - eventPath = [ elem || document ],
7594 - type = hasOwn.call( event, "type" ) ? event.type : event,
7595 - namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : [];
7596 -
7597 - cur = lastElement = tmp = elem = elem || document;
7598 -
7599 - // Don't do events on text and comment nodes
7600 - if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
7601 - return;
7602 - }
7603 -
7604 - // focus/blur morphs to focusin/out; ensure we're not firing them right now
7605 - if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
7606 - return;
7607 - }
7608 -
7609 - if ( type.indexOf( "." ) > -1 ) {
7610 -
7611 - // Namespaced trigger; create a regexp to match event type in handle()
7612 - namespaces = type.split( "." );
7613 - type = namespaces.shift();
7614 - namespaces.sort();
7615 - }
7616 - ontype = type.indexOf( ":" ) < 0 && "on" + type;
7617 -
7618 - // Caller can pass in a jQuery.Event object, Object, or just an event type string
7619 - event = event[ jQuery.expando ] ?
7620 - event :
7621 - new jQuery.Event( type, typeof event === "object" && event );
7622 -
7623 - // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
7624 - event.isTrigger = onlyHandlers ? 2 : 3;
7625 - event.namespace = namespaces.join( "." );
7626 - event.rnamespace = event.namespace ?
7627 - new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) :
7628 - null;
7629 -
7630 - // Clean up the event in case it is being reused
7631 - event.result = undefined;
7632 - if ( !event.target ) {
7633 - event.target = elem;
7634 - }
7635 -
7636 - // Clone any incoming data and prepend the event, creating the handler arg list
7637 - data = data == null ?
7638 - [ event ] :
7639 - jQuery.makeArray( data, [ event ] );
7640 -
7641 - // Allow special events to draw outside the lines
7642 - special = jQuery.event.special[ type ] || {};
7643 - if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
7644 - return;
7645 - }
7646 -
7647 - // Determine event propagation path in advance, per W3C events spec (#9951)
7648 - // Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
7649 - if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {
7650 -
7651 - bubbleType = special.delegateType || type;
7652 - if ( !rfocusMorph.test( bubbleType + type ) ) {
7653 - cur = cur.parentNode;
7654 - }
7655 - for ( ; cur; cur = cur.parentNode ) {
7656 - eventPath.push( cur );
7657 - tmp = cur;
7658 - }
7659 -
7660 - // Only add window if we got to document (e.g., not plain obj or detached DOM)
7661 - if ( tmp === ( elem.ownerDocument || document ) ) {
7662 - eventPath.push( tmp.defaultView || tmp.parentWindow || window );
7663 - }
7664 - }
7665 -
7666 - // Fire handlers on the event path
7667 - i = 0;
7668 - while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {
7669 - lastElement = cur;
7670 - event.type = i > 1 ?
7671 - bubbleType :
7672 - special.bindType || type;
7673 -
7674 - // jQuery handler
7675 - handle = ( dataPriv.get( cur, "events" ) || {} )[ event.type ] &&
7676 - dataPriv.get( cur, "handle" );
7677 - if ( handle ) {
7678 - handle.apply( cur, data );
7679 - }
7680 -
7681 - // Native handler
7682 - handle = ontype && cur[ ontype ];
7683 - if ( handle && handle.apply && acceptData( cur ) ) {
7684 - event.result = handle.apply( cur, data );
7685 - if ( event.result === false ) {
7686 - event.preventDefault();
7687 - }
7688 - }
7689 - }
7690 - event.type = type;
7691 -
7692 - // If nobody prevented the default action, do it now
7693 - if ( !onlyHandlers && !event.isDefaultPrevented() ) {
7694 -
7695 - if ( ( !special._default ||
7696 - special._default.apply( eventPath.pop(), data ) === false ) &&
7697 - acceptData( elem ) ) {
7698 -
7699 - // Call a native DOM method on the target with the same name as the event.
7700 - // Don't do default actions on window, that's where global variables be (#6170)
7701 - if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {
7702 -
7703 - // Don't re-trigger an onFOO event when we call its FOO() method
7704 - tmp = elem[ ontype ];
7705 -
7706 - if ( tmp ) {
7707 - elem[ ontype ] = null;
7708 - }
7709 -
7710 - // Prevent re-triggering of the same event, since we already bubbled it above
7711 - jQuery.event.triggered = type;
7712 -
7713 - if ( event.isPropagationStopped() ) {
7714 - lastElement.addEventListener( type, stopPropagationCallback );
7715 - }
7716 -
7717 - elem[ type ]();
7718 -
7719 - if ( event.isPropagationStopped() ) {
7720 - lastElement.removeEventListener( type, stopPropagationCallback );
7721 - }
7722 -
7723 - jQuery.event.triggered = undefined;
7724 -
7725 - if ( tmp ) {
7726 - elem[ ontype ] = tmp;
7727 - }
7728 - }
7729 - }
7730 - }
7731 -
7732 - return event.result;
7733 - },
7734 -
7735 - // Piggyback on a donor event to simulate a different one
7736 - // Used only for `focus(in | out)` events
7737 - simulate: function( type, elem, event ) {
7738 - var e = jQuery.extend(
7739 - new jQuery.Event(),
7740 - event,
7741 - {
7742 - type: type,
7743 - isSimulated: true
7744 - }
7745 - );
7746 -
7747 - jQuery.event.trigger( e, null, elem );
7748 - }
7749 -
7750 - } );
7751 -
7752 - jQuery.fn.extend( {
7753 -
7754 - trigger: function( type, data ) {
7755 - return this.each( function() {
7756 - jQuery.event.trigger( type, data, this );
7757 - } );
7758 - },
7759 - triggerHandler: function( type, data ) {
7760 - var elem = this[ 0 ];
7761 - if ( elem ) {
7762 - return jQuery.event.trigger( type, data, elem, true );
7763 - }
7764 - }
7765 - } );
7766 -
7767 -
7768 - // Support: Firefox <=44
7769 - // Firefox doesn't have focus(in | out) events
7770 - // Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787
7771 - //
7772 - // Support: Chrome <=48 - 49, Safari <=9.0 - 9.1
7773 - // focus(in | out) events fire after focus & blur events,
7774 - // which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order
7775 - // Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857
7776 - if ( !support.focusin ) {
7777 - jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) {
7778 -
7779 - // Attach a single capturing handler on the document while someone wants focusin/focusout
7780 - var handler = function( event ) {
7781 - jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );
7782 - };
7783 -
7784 - jQuery.event.special[ fix ] = {
7785 - setup: function() {
7786 - var doc = this.ownerDocument || this,
7787 - attaches = dataPriv.access( doc, fix );
7788 -
7789 - if ( !attaches ) {
7790 - doc.addEventListener( orig, handler, true );
7791 - }
7792 - dataPriv.access( doc, fix, ( attaches || 0 ) + 1 );
7793 - },
7794 - teardown: function() {
7795 - var doc = this.ownerDocument || this,
7796 - attaches = dataPriv.access( doc, fix ) - 1;
7797 -
7798 - if ( !attaches ) {
7799 - doc.removeEventListener( orig, handler, true );
7800 - dataPriv.remove( doc, fix );
7801 -
7802 - } else {
7803 - dataPriv.access( doc, fix, attaches );
7804 - }
7805 - }
7806 - };
7807 - } );
7808 - }
7809 -
7810 -
7811 - var
7812 - rbracket = /\[\]$/,
7813 - rCRLF = /\r?\n/g,
7814 - rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
7815 - rsubmittable = /^(?:input|select|textarea|keygen)/i;
7816 -
7817 - function buildParams( prefix, obj, traditional, add ) {
7818 - var name;
7819 -
7820 - if ( Array.isArray( obj ) ) {
7821 -
7822 - // Serialize array item.
7823 - jQuery.each( obj, function( i, v ) {
7824 - if ( traditional || rbracket.test( prefix ) ) {
7825 -
7826 - // Treat each array item as a scalar.
7827 - add( prefix, v );
7828 -
7829 - } else {
7830 -
7831 - // Item is non-scalar (array or object), encode its numeric index.
7832 - buildParams(
7833 - prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]",
7834 - v,
7835 - traditional,
7836 - add
7837 - );
7838 - }
7839 - } );
7840 -
7841 - } else if ( !traditional && toType( obj ) === "object" ) {
7842 -
7843 - // Serialize object item.
7844 - for ( name in obj ) {
7845 - buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
7846 - }
7847 -
7848 - } else {
7849 -
7850 - // Serialize scalar item.
7851 - add( prefix, obj );
7852 - }
7853 - }
7854 -
7855 - // Serialize an array of form elements or a set of
7856 - // key/values into a query string
7857 - jQuery.param = function( a, traditional ) {
7858 - var prefix,
7859 - s = [],
7860 - add = function( key, valueOrFunction ) {
7861 -
7862 - // If value is a function, invoke it and use its return value
7863 - var value = isFunction( valueOrFunction ) ?
7864 - valueOrFunction() :
7865 - valueOrFunction;
7866 -
7867 - s[ s.length ] = encodeURIComponent( key ) + "=" +
7868 - encodeURIComponent( value == null ? "" : value );
7869 - };
7870 -
7871 - if ( a == null ) {
7872 - return "";
7873 - }
7874 -
7875 - // If an array was passed in, assume that it is an array of form elements.
7876 - if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
7877 -
7878 - // Serialize the form elements
7879 - jQuery.each( a, function() {
7880 - add( this.name, this.value );
7881 - } );
7882 -
7883 - } else {
7884 -
7885 - // If traditional, encode the "old" way (the way 1.3.2 or older
7886 - // did it), otherwise encode params recursively.
7887 - for ( prefix in a ) {
7888 - buildParams( prefix, a[ prefix ], traditional, add );
7889 - }
7890 - }
7891 -
7892 - // Return the resulting serialization
7893 - return s.join( "&" );
7894 - };
7895 -
7896 - jQuery.fn.extend( {
7897 - serialize: function() {
7898 - return jQuery.param( this.serializeArray() );
7899 - },
7900 - serializeArray: function() {
7901 - return this.map( function() {
7902 -
7903 - // Can add propHook for "elements" to filter or add form elements
7904 - var elements = jQuery.prop( this, "elements" );
7905 - return elements ? jQuery.makeArray( elements ) : this;
7906 - } )
7907 - .filter( function() {
7908 - var type = this.type;
7909 -
7910 - // Use .is( ":disabled" ) so that fieldset[disabled] works
7911 - return this.name && !jQuery( this ).is( ":disabled" ) &&
7912 - rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
7913 - ( this.checked || !rcheckableType.test( type ) );
7914 - } )
7915 - .map( function( i, elem ) {
7916 - var val = jQuery( this ).val();
7917 -
7918 - if ( val == null ) {
7919 - return null;
7920 - }
7921 -
7922 - if ( Array.isArray( val ) ) {
7923 - return jQuery.map( val, function( val ) {
7924 - return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
7925 - } );
7926 - }
7927 -
7928 - return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
7929 - } ).get();
7930 - }
7931 - } );
7932 -
7933 -
7934 - jQuery.fn.extend( {
7935 - wrapAll: function( html ) {
7936 - var wrap;
7937 -
7938 - if ( this[ 0 ] ) {
7939 - if ( isFunction( html ) ) {
7940 - html = html.call( this[ 0 ] );
7941 - }
7942 -
7943 - // The elements to wrap the target around
7944 - wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );
7945 -
7946 - if ( this[ 0 ].parentNode ) {
7947 - wrap.insertBefore( this[ 0 ] );
7948 - }
7949 -
7950 - wrap.map( function() {
7951 - var elem = this;
7952 -
7953 - while ( elem.firstElementChild ) {
7954 - elem = elem.firstElementChild;
7955 - }
7956 -
7957 - return elem;
7958 - } ).append( this );
7959 - }
7960 -
7961 - return this;
7962 - },
7963 -
7964 - wrapInner: function( html ) {
7965 - if ( isFunction( html ) ) {
7966 - return this.each( function( i ) {
7967 - jQuery( this ).wrapInner( html.call( this, i ) );
7968 - } );
7969 - }
7970 -
7971 - return this.each( function() {
7972 - var self = jQuery( this ),
7973 - contents = self.contents();
7974 -
7975 - if ( contents.length ) {
7976 - contents.wrapAll( html );
7977 -
7978 - } else {
7979 - self.append( html );
7980 - }
7981 - } );
7982 - },
7983 -
7984 - wrap: function( html ) {
7985 - var htmlIsFunction = isFunction( html );
7986 -
7987 - return this.each( function( i ) {
7988 - jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );
7989 - } );
7990 - },
7991 -
7992 - unwrap: function( selector ) {
7993 - this.parent( selector ).not( "body" ).each( function() {
7994 - jQuery( this ).replaceWith( this.childNodes );
7995 - } );
7996 - return this;
7997 - }
7998 - } );
7999 -
8000 -
8001 - jQuery.expr.pseudos.hidden = function( elem ) {
8002 - return !jQuery.expr.pseudos.visible( elem );
8003 - };
8004 - jQuery.expr.pseudos.visible = function( elem ) {
8005 - return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );
8006 - };
8007 -
8008 -
8009 -
8010 -
8011 - // Support: Safari 8 only
8012 - // In Safari 8 documents created via document.implementation.createHTMLDocument
8013 - // collapse sibling forms: the second one becomes a child of the first one.
8014 - // Because of that, this security measure has to be disabled in Safari 8.
8015 - // https://bugs.webkit.org/show_bug.cgi?id=137337
8016 - support.createHTMLDocument = ( function() {
8017 - var body = document.implementation.createHTMLDocument( "" ).body;
8018 - body.innerHTML = "<form></form><form></form>";
8019 - return body.childNodes.length === 2;
8020 - } )();
8021 -
8022 -
8023 - // Argument "data" should be string of html
8024 - // context (optional): If specified, the fragment will be created in this context,
8025 - // defaults to document
8026 - // keepScripts (optional): If true, will include scripts passed in the html string
8027 - jQuery.parseHTML = function( data, context, keepScripts ) {
8028 - if ( typeof data !== "string" ) {
8029 - return [];
8030 - }
8031 - if ( typeof context === "boolean" ) {
8032 - keepScripts = context;
8033 - context = false;
8034 - }
8035 -
8036 - var base, parsed, scripts;
8037 -
8038 - if ( !context ) {
8039 -
8040 - // Stop scripts or inline event handlers from being executed immediately
8041 - // by using document.implementation
8042 - if ( support.createHTMLDocument ) {
8043 - context = document.implementation.createHTMLDocument( "" );
8044 -
8045 - // Set the base href for the created document
8046 - // so any parsed elements with URLs
8047 - // are based on the document's URL (gh-2965)
8048 - base = context.createElement( "base" );
8049 - base.href = document.location.href;
8050 - context.head.appendChild( base );
8051 - } else {
8052 - context = document;
8053 - }
8054 - }
8055 -
8056 - parsed = rsingleTag.exec( data );
8057 - scripts = !keepScripts && [];
8058 -
8059 - // Single tag
8060 - if ( parsed ) {
8061 - return [ context.createElement( parsed[ 1 ] ) ];
8062 - }
8063 -
8064 - parsed = buildFragment( [ data ], context, scripts );
8065 -
8066 - if ( scripts && scripts.length ) {
8067 - jQuery( scripts ).remove();
8068 - }
8069 -
8070 - return jQuery.merge( [], parsed.childNodes );
8071 - };
8072 -
8073 -
8074 - jQuery.offset = {
8075 - setOffset: function( elem, options, i ) {
8076 - var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,
8077 - position = jQuery.css( elem, "position" ),
8078 - curElem = jQuery( elem ),
8079 - props = {};
8080 -
8081 - // Set position first, in-case top/left are set even on static elem
8082 - if ( position === "static" ) {
8083 - elem.style.position = "relative";
8084 - }
8085 -
8086 - curOffset = curElem.offset();
8087 - curCSSTop = jQuery.css( elem, "top" );
8088 - curCSSLeft = jQuery.css( elem, "left" );
8089 - calculatePosition = ( position === "absolute" || position === "fixed" ) &&
8090 - ( curCSSTop + curCSSLeft ).indexOf( "auto" ) > -1;
8091 -
8092 - // Need to be able to calculate position if either
8093 - // top or left is auto and position is either absolute or fixed
8094 - if ( calculatePosition ) {
8095 - curPosition = curElem.position();
8096 - curTop = curPosition.top;
8097 - curLeft = curPosition.left;
8098 -
8099 - } else {
8100 - curTop = parseFloat( curCSSTop ) || 0;
8101 - curLeft = parseFloat( curCSSLeft ) || 0;
8102 - }
8103 -
8104 - if ( isFunction( options ) ) {
8105 -
8106 - // Use jQuery.extend here to allow modification of coordinates argument (gh-1848)
8107 - options = options.call( elem, i, jQuery.extend( {}, curOffset ) );
8108 - }
8109 -
8110 - if ( options.top != null ) {
8111 - props.top = ( options.top - curOffset.top ) + curTop;
8112 - }
8113 - if ( options.left != null ) {
8114 - props.left = ( options.left - curOffset.left ) + curLeft;
8115 - }
8116 -
8117 - if ( "using" in options ) {
8118 - options.using.call( elem, props );
8119 -
8120 - } else {
8121 - curElem.css( props );
8122 - }
8123 - }
8124 - };
8125 -
8126 - jQuery.fn.extend( {
8127 -
8128 - // offset() relates an element's border box to the document origin
8129 - offset: function( options ) {
8130 -
8131 - // Preserve chaining for setter
8132 - if ( arguments.length ) {
8133 - return options === undefined ?
8134 - this :
8135 - this.each( function( i ) {
8136 - jQuery.offset.setOffset( this, options, i );
8137 - } );
8138 - }
8139 -
8140 - var rect, win,
8141 - elem = this[ 0 ];
8142 -
8143 - if ( !elem ) {
8144 - return;
8145 - }
8146 -
8147 - // Return zeros for disconnected and hidden (display: none) elements (gh-2310)
8148 - // Support: IE <=11 only
8149 - // Running getBoundingClientRect on a
8150 - // disconnected node in IE throws an error
8151 - if ( !elem.getClientRects().length ) {
8152 - return { top: 0, left: 0 };
8153 - }
8154 -
8155 - // Get document-relative position by adding viewport scroll to viewport-relative gBCR
8156 - rect = elem.getBoundingClientRect();
8157 - win = elem.ownerDocument.defaultView;
8158 - return {
8159 - top: rect.top + win.pageYOffset,
8160 - left: rect.left + win.pageXOffset
8161 - };
8162 - },
8163 -
8164 - // position() relates an element's margin box to its offset parent's padding box
8165 - // This corresponds to the behavior of CSS absolute positioning
8166 - position: function() {
8167 - if ( !this[ 0 ] ) {
8168 - return;
8169 - }
8170 -
8171 - var offsetParent, offset, doc,
8172 - elem = this[ 0 ],
8173 - parentOffset = { top: 0, left: 0 };
8174 -
8175 - // position:fixed elements are offset from the viewport, which itself always has zero offset
8176 - if ( jQuery.css( elem, "position" ) === "fixed" ) {
8177 -
8178 - // Assume position:fixed implies availability of getBoundingClientRect
8179 - offset = elem.getBoundingClientRect();
8180 -
8181 - } else {
8182 - offset = this.offset();
8183 -
8184 - // Account for the *real* offset parent, which can be the document or its root element
8185 - // when a statically positioned element is identified
8186 - doc = elem.ownerDocument;
8187 - offsetParent = elem.offsetParent || doc.documentElement;
8188 - while ( offsetParent &&
8189 - ( offsetParent === doc.body || offsetParent === doc.documentElement ) &&
8190 - jQuery.css( offsetParent, "position" ) === "static" ) {
8191 -
8192 - offsetParent = offsetParent.parentNode;
8193 - }
8194 - if ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) {
8195 -
8196 - // Incorporate borders into its offset, since they are outside its content origin
8197 - parentOffset = jQuery( offsetParent ).offset();
8198 - parentOffset.top += jQuery.css( offsetParent, "borderTopWidth", true );
8199 - parentOffset.left += jQuery.css( offsetParent, "borderLeftWidth", true );
8200 - }
8201 - }
8202 -
8203 - // Subtract parent offsets and element margins
8204 - return {
8205 - top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),
8206 - left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true )
8207 - };
8208 - },
8209 -
8210 - // This method will return documentElement in the following cases:
8211 - // 1) For the element inside the iframe without offsetParent, this method will return
8212 - // documentElement of the parent window
8213 - // 2) For the hidden or detached element
8214 - // 3) For body or html element, i.e. in case of the html node - it will return itself
8215 - //
8216 - // but those exceptions were never presented as a real life use-cases
8217 - // and might be considered as more preferable results.
8218 - //
8219 - // This logic, however, is not guaranteed and can change at any point in the future
8220 - offsetParent: function() {
8221 - return this.map( function() {
8222 - var offsetParent = this.offsetParent;
8223 -
8224 - while ( offsetParent && jQuery.css( offsetParent, "position" ) === "static" ) {
8225 - offsetParent = offsetParent.offsetParent;
8226 - }
8227 -
8228 - return offsetParent || documentElement;
8229 - } );
8230 - }
8231 - } );
8232 -
8233 - // Create scrollLeft and scrollTop methods
8234 - jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) {
8235 - var top = "pageYOffset" === prop;
8236 -
8237 - jQuery.fn[ method ] = function( val ) {
8238 - return access( this, function( elem, method, val ) {
8239 -
8240 - // Coalesce documents and windows
8241 - var win;
8242 - if ( isWindow( elem ) ) {
8243 - win = elem;
8244 - } else if ( elem.nodeType === 9 ) {
8245 - win = elem.defaultView;
8246 - }
8247 -
8248 - if ( val === undefined ) {
8249 - return win ? win[ prop ] : elem[ method ];
8250 - }
8251 -
8252 - if ( win ) {
8253 - win.scrollTo(
8254 - !top ? val : win.pageXOffset,
8255 - top ? val : win.pageYOffset
8256 - );
8257 -
8258 - } else {
8259 - elem[ method ] = val;
8260 - }
8261 - }, method, val, arguments.length );
8262 - };
8263 - } );
8264 -
8265 - // Support: Safari <=7 - 9.1, Chrome <=37 - 49
8266 - // Add the top/left cssHooks using jQuery.fn.position
8267 - // Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
8268 - // Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347
8269 - // getComputedStyle returns percent when specified for top/left/bottom/right;
8270 - // rather than make the css module depend on the offset module, just check for it here
8271 - jQuery.each( [ "top", "left" ], function( i, prop ) {
8272 - jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,
8273 - function( elem, computed ) {
8274 - if ( computed ) {
8275 - computed = curCSS( elem, prop );
8276 -
8277 - // If curCSS returns percentage, fallback to offset
8278 - return rnumnonpx.test( computed ) ?
8279 - jQuery( elem ).position()[ prop ] + "px" :
8280 - computed;
8281 - }
8282 - }
8283 - );
8284 - } );
8285 -
8286 -
8287 - // Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
8288 - jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
8289 - jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name },
8290 - function( defaultExtra, funcName ) {
8291 -
8292 - // Margin is only for outerHeight, outerWidth
8293 - jQuery.fn[ funcName ] = function( margin, value ) {
8294 - var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
8295 - extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
8296 -
8297 - return access( this, function( elem, type, value ) {
8298 - var doc;
8299 -
8300 - if ( isWindow( elem ) ) {
8301 -
8302 - // $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)
8303 - return funcName.indexOf( "outer" ) === 0 ?
8304 - elem[ "inner" + name ] :
8305 - elem.document.documentElement[ "client" + name ];
8306 - }
8307 -
8308 - // Get document width or height
8309 - if ( elem.nodeType === 9 ) {
8310 - doc = elem.documentElement;
8311 -
8312 - // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],
8313 - // whichever is greatest
8314 - return Math.max(
8315 - elem.body[ "scroll" + name ], doc[ "scroll" + name ],
8316 - elem.body[ "offset" + name ], doc[ "offset" + name ],
8317 - doc[ "client" + name ]
8318 - );
8319 - }
8320 -
8321 - return value === undefined ?
8322 -
8323 - // Get width or height on the element, requesting but not forcing parseFloat
8324 - jQuery.css( elem, type, extra ) :
8325 -
8326 - // Set width or height on the element
8327 - jQuery.style( elem, type, value, extra );
8328 - }, type, chainable ? margin : undefined, chainable );
8329 - };
8330 - } );
8331 - } );
8332 -
8333 -
8334 - jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " +
8335 - "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
8336 - "change select submit keydown keypress keyup contextmenu" ).split( " " ),
8337 - function( i, name ) {
8338 -
8339 - // Handle event binding
8340 - jQuery.fn[ name ] = function( data, fn ) {
8341 - return arguments.length > 0 ?
8342 - this.on( name, null, data, fn ) :
8343 - this.trigger( name );
8344 - };
8345 - } );
8346 -
8347 - jQuery.fn.extend( {
8348 - hover: function( fnOver, fnOut ) {
8349 - return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
8350 - }
8351 - } );
8352 -
8353 -
8354 -
8355 -
8356 - jQuery.fn.extend( {
8357 -
8358 - bind: function( types, data, fn ) {
8359 - return this.on( types, null, data, fn );
8360 - },
8361 - unbind: function( types, fn ) {
8362 - return this.off( types, null, fn );
8363 - },
8364 -
8365 - delegate: function( selector, types, data, fn ) {
8366 - return this.on( types, selector, data, fn );
8367 - },
8368 - undelegate: function( selector, types, fn ) {
8369 -
8370 - // ( namespace ) or ( selector, types [, fn] )
8371 - return arguments.length === 1 ?
8372 - this.off( selector, "**" ) :
8373 - this.off( types, selector || "**", fn );
8374 - }
8375 - } );
8376 -
8377 - // Bind a function to a context, optionally partially applying any
8378 - // arguments.
8379 - // jQuery.proxy is deprecated to promote standards (specifically Function#bind)
8380 - // However, it is not slated for removal any time soon
8381 - jQuery.proxy = function( fn, context ) {
8382 - var tmp, args, proxy;
8383 -
8384 - if ( typeof context === "string" ) {
8385 - tmp = fn[ context ];
8386 - context = fn;
8387 - fn = tmp;
8388 - }
8389 -
8390 - // Quick check to determine if target is callable, in the spec
8391 - // this throws a TypeError, but we will just return undefined.
8392 - if ( !isFunction( fn ) ) {
8393 - return undefined;
8394 - }
8395 -
8396 - // Simulated bind
8397 - args = slice.call( arguments, 2 );
8398 - proxy = function() {
8399 - return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
8400 - };
8401 -
8402 - // Set the guid of unique handler to the same of original handler, so it can be removed
8403 - proxy.guid = fn.guid = fn.guid || jQuery.guid++;
8404 -
8405 - return proxy;
8406 - };
8407 -
8408 - jQuery.holdReady = function( hold ) {
8409 - if ( hold ) {
8410 - jQuery.readyWait++;
8411 - } else {
8412 - jQuery.ready( true );
8413 - }
8414 - };
8415 - jQuery.isArray = Array.isArray;
8416 - jQuery.parseJSON = JSON.parse;
8417 - jQuery.nodeName = nodeName;
8418 - jQuery.isFunction = isFunction;
8419 - jQuery.isWindow = isWindow;
8420 - jQuery.camelCase = camelCase;
8421 - jQuery.type = toType;
8422 -
8423 - jQuery.now = Date.now;
8424 -
8425 - jQuery.isNumeric = function( obj ) {
8426 -
8427 - // As of jQuery 3.0, isNumeric is limited to
8428 - // strings and numbers (primitives or objects)
8429 - // that can be coerced to finite numbers (gh-2662)
8430 - var type = jQuery.type( obj );
8431 - return ( type === "number" || type === "string" ) &&
8432 -
8433 - // parseFloat NaNs numeric-cast false positives ("")
8434 - // ...but misinterprets leading-number strings, particularly hex literals ("0x...")
8435 - // subtraction forces infinities to NaN
8436 - !isNaN( obj - parseFloat( obj ) );
8437 - };
8438 -
8439 -
8440 -
8441 -
8442 - // Register as a named AMD module, since jQuery can be concatenated with other
8443 - // files that may use define, but not via a proper concatenation script that
8444 - // understands anonymous AMD modules. A named AMD is safest and most robust
8445 - // way to register. Lowercase jquery is used because AMD module names are
8446 - // derived from file names, and jQuery is normally delivered in a lowercase
8447 - // file name. Do this after creating the global so that if an AMD module wants
8448 - // to call noConflict to hide this version of jQuery, it will work.
8449 -
8450 - // Note that for maximum portability, libraries that are not jQuery should
8451 - // declare themselves as anonymous modules, and avoid setting a global if an
8452 - // AMD loader is present. jQuery is a special case. For more information, see
8453 - // https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon
8454 -
8455 - if ( typeof define === "function" && define.amd ) {
8456 - define( "jquery", [], function() {
8457 - return jQuery;
8458 - } );
8459 - }
8460 -
8461 -
8462 -
8463 -
8464 - var
8465 -
8466 - // Map over jQuery in case of overwrite
8467 - _jQuery = window.jQuery,
8468 -
8469 - // Map over the $ in case of overwrite
8470 - _$ = window.$;
8471 -
8472 - jQuery.noConflict = function( deep ) {
8473 - if ( window.$ === jQuery ) {
8474 - window.$ = _$;
8475 - }
8476 -
8477 - if ( deep && window.jQuery === jQuery ) {
8478 - window.jQuery = _jQuery;
8479 - }
8480 -
8481 - return jQuery;
8482 - };
8483 -
8484 - // Expose jQuery and $ identifiers, even in AMD
8485 - // (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
8486 - // and CommonJS for browser emulators (#13566)
8487 - if ( !noGlobal ) {
8488 - window.jQuery = window.$ = jQuery;
8489 - }
8490 -
8491 -
8492 -
8493 -
8494 - return jQuery;
8495 - } );
@@ -1,2 +0,0
1 - /*! jQuery v3.4.1 -ajax,-ajax/jsonp,-ajax/load,-ajax/parseXML,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-event/ajax,-effects,-effects/Tween,-effects/animatedSelector | (c) JS Foundation and other contributors | jquery.org/license */
2 - !function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(g,e){"use strict";var t=[],v=g.document,r=Object.getPrototypeOf,s=t.slice,y=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,m=n.hasOwnProperty,a=m.toString,l=a.call(Object),b={},x=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},w=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function C(e,t,n){var r,i,o=(n=n||v).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function T(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1 -ajax,-ajax/jsonp,-ajax/load,-ajax/parseXML,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-event/ajax,-effects,-effects/Tween,-effects/animatedSelector",E=function(e,t){return new E.fn.init(e,t)},d=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function p(e){var t=!!e&&"length"in e&&e.length,n=T(e);return!x(e)&&!w(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}E.fn=E.prototype={jquery:f,constructor:E,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=E.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return E.each(this,e)},map:function(n){return this.pushStack(E.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},E.extend=E.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||x(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(E.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||E.isPlainObject(n)?n:{},i=!1,a[t]=E.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},E.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=m.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t){C(e,{nonce:t&&t.nonce})},each:function(e,t){var n,r=0;if(p(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(d,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(p(Object(e))?E.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(p(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return y.apply([],a)},guid:1,support:b}),"function"==typeof Symbol&&(E.fn[Symbol.iterator]=t[Symbol.iterator]),E.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var h=function(n){var e,p,x,o,i,h,f,g,w,u,l,C,T,a,E,v,s,c,y,N="sizzle"+1*new Date,m=n.document,A=0,r=0,d=ue(),b=ue(),k=ue(),S=ue(),D=function(e,t){return e===t&&(l=!0),0},L={}.hasOwnProperty,t=[],j=t.pop,q=t.push,O=t.push,P=t.slice,H=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},I="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",R="[\\x20\\t\\r\\n\\f]",B="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",M="\\["+R+"*("+B+")(?:"+R+"*([*^$|!~]?=)"+R+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+B+"))|)"+R+"*\\]",W=":("+B+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+M+")*)|.*)\\)|)",$=new RegExp(R+"+","g"),F=new RegExp("^"+R+"+|((?:^|[^\\\\])(?:\\\\.)*)"+R+"+$","g"),z=new RegExp("^"+R+"*,"+R+"*"),_=new RegExp("^"+R+"*([>+~]|"+R+")"+R+"*"),U=new RegExp(R+"|>"),V=new RegExp(W),X=new RegExp("^"+B+"$"),Q={ID:new RegExp("^#("+B+")"),CLASS:new RegExp("^\\.("+B+")"),TAG:new RegExp("^("+B+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+W),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+R+"*(even|odd|(([+-]|)(\\d*)n|)"+R+"*(?:([+-]|)"+R+"*(\\d+)|))"+R+"*\\)|)","i"),bool:new RegExp("^(?:"+I+")$","i"),needsContext:new RegExp("^"+R+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+R+"*((?:-\\d)?\\d*)"+R+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,G=/^(?:input|select|textarea|button)$/i,K=/^h\d$/i,J=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+R+"?|("+R+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){C()},ae=xe(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{O.apply(t=P.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){O={apply:t.length?function(e,t){q.apply(e,P.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,d=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==d&&9!==d&&11!==d)return n;if(!r&&((e?e.ownerDocument||e:m)!==T&&C(e),e=e||T,E)){if(11!==d&&(u=Z.exec(t)))if(i=u[1]){if(9===d){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return O.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&p.getElementsByClassName&&e.getElementsByClassName)return O.apply(n,e.getElementsByClassName(i)),n}if(p.qsa&&!S[t+" "]&&(!v||!v.test(t))&&(1!==d||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===d&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=N),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+be(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return O.apply(n,f.querySelectorAll(c)),n}catch(e){S(t,!0)}finally{s===N&&e.removeAttribute("id")}}}return g(t.replace(F,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>x.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[N]=!0,e}function ce(e){var t=T.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)x.attrHandle[n[r]]=t}function de(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function pe(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in p=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},C=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==T&&9===r.nodeType&&r.documentElement&&(a=(T=r).documentElement,E=!i(T),m!==T&&(n=T.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),p.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),p.getElementsByTagName=ce(function(e){return e.appendChild(T.createComment("")),!e.getElementsByTagName("*").length}),p.getElementsByClassName=J.test(T.getElementsByClassName),p.getById=ce(function(e){return a.appendChild(e).id=N,!T.getElementsByName||!T.getElementsByName(N).length}),p.getById?(x.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},x.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(x.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},x.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),x.find.TAG=p.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):p.qsa?t.querySelectorAll(e):void 0}: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},x.find.CLASS=p.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(p.qsa=J.test(T.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="<a id='"+N+"'></a><select id='"+N+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+R+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+R+"*(?:value|"+I+")"),e.querySelectorAll("[id~="+N+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+N+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=T.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+R+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(p.matchesSelector=J.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){p.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",W)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=J.test(a.compareDocumentPosition),y=t||J.test(a.contains)?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},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!p.sortDetached&&t.compareDocumentPosition(e)===n?e===T||e.ownerDocument===m&&y(m,e)?-1:t===T||t.ownerDocument===m&&y(m,t)?1:u?H(u,e)-H(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===T?-1:t===T?1:i?-1:o?1:u?H(u,e)-H(u,t):0;if(i===o)return de(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?de(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),T},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==T&&C(e),p.matchesSelector&&E&&!S[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||p.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){S(t,!0)}return 0<se(t,T,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!==T&&C(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!==T&&C(e);var n=x.attrHandle[t.toLowerCase()],r=n&&L.call(x.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:p.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!p.detectDuplicates,u=!p.sortStable&&e.slice(0),e.sort(D),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.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+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(x=se.selectors={cacheLength:50,createPseudo:le,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(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===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]||se.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]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return Q.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&V.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=d[e+" "];return t||(t=new RegExp("(^|"+R+")"+e+"("+R+"|$)"))&&d(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace($," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),b="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=b&&e.nodeName.toLowerCase(),d=!n&&!b,p=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(b?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&d){p=(s=(r=(i=(o=(a=c)[N]||(a[N]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===A&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(p=s=0)||u.pop())if(1===a.nodeType&&++p&&a===e){i[h]=[A,s,p];break}}else if(d&&(p=s=(r=(i=(o=(a=e)[N]||(a[N]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===A&&r[1]),!1===p)while(a=++s&&a&&a[l]||(p=s=0)||u.pop())if((b?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++p&&(d&&((i=(o=a[N]||(a[N]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[A,p]),a===e))break;return(p-=v)===g||p%g==0&&0<=p/g}}},PSEUDO:function(e,o){var t,a=x.pseudos[e]||x.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[N]?a(o):1<a.length?(t=[e,e,"",o],x.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=H(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace(F,"$1"));return s[N]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return X.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===T.activeElement&&(!T.hasFocus||T.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!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,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!x.pseudos.empty(e)},header:function(e){return K.test(e.nodeName)},input:function(e){return G.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"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=x.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})x.pseudos[e]=pe(e);for(e in{submit:!0,reset:!0})x.pseudos[e]=he(e);function me(){}function be(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function xe(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,d=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[A,d];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[N]||(e[N]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===A&&r[1]===d)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Ce(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Te(p,h,g,v,y,e){return v&&!v[N]&&(v=Te(v)),y&&!y[N]&&(y=Te(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!p||!e&&h?c:Ce(c,s,p,n,r),d=g?y||(e?p:l||v)?[]:t:f;if(g&&g(f,d,n,r),v){i=Ce(d,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(d[u[o]]=!(f[u[o]]=a))}if(e){if(y||p){if(y){i=[],o=d.length;while(o--)(a=d[o])&&i.push(f[o]=a);y(null,d=[],i,r)}o=d.length;while(o--)(a=d[o])&&-1<(i=y?H(e,a):s[o])&&(e[i]=!(t[i]=a))}}else d=Ce(d===t?d.splice(l,d.length):d),y?y(null,t,d,r):O.apply(t,d)})}function Ee(e){for(var i,t,n,r=e.length,o=x.relative[e[0].type],a=o||x.relative[" "],s=o?1:0,u=xe(function(e){return e===i},a,!0),l=xe(function(e){return-1<H(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=x.relative[e[s].type])c=[xe(we(c),t)];else{if((t=x.filter[e[s].type].apply(null,e[s].matches))[N]){for(n=++s;n<r;n++)if(x.relative[e[n].type])break;return Te(1<s&&we(c),1<s&&be(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(F,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&be(e))}c.push(t)}return we(c)}return me.prototype=x.filters=x.pseudos,x.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=b[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=x.preFilter;while(a){for(o in n&&!(r=z.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=_.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace(F," ")}),a=a.slice(n.length)),x.filter)!(r=Q[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):b(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,b,r,i=[],o=[],a=k[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[N]?i.push(a):o.push(a);(a=k(e,(v=o,m=0<(y=i).length,b=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],d=w,p=e||b&&x.find.TAG("*",i),h=A+=null==d?1:Math.random()||.1,g=p.length;for(i&&(w=t===T||t||i);l!==g&&null!=(o=p[l]);l++){if(b&&o){a=0,t||o.ownerDocument===T||(C(o),n=!E);while(s=v[a++])if(s(o,t||T,n)){r.push(o);break}i&&(A=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=j.call(r));f=Ce(f)}O.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(A=h,w=d),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&x.relative[o[1].type]){if(!(t=(x.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=Q.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],x.relative[s=a.type])break;if((u=x.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&be(o)))return O.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},p.sortStable=N.split("").sort(D).join("")===N,p.detectDuplicates=!!l,C(),p.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(T.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),p.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(I,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(g);E.find=h,E.expr=h.selectors,E.expr[":"]=E.expr.pseudos,E.uniqueSort=E.unique=h.uniqueSort,E.text=h.getText,E.isXMLDoc=h.isXML,E.contains=h.contains,E.escapeSelector=h.escape;var N=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&E(e).is(n))break;r.push(e)}return r},A=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},k=E.expr.match.needsContext;function S(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var D=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function L(e,n,r){return x(n)?E.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?E.grep(e,function(e){return e===n!==r}):"string"!=typeof n?E.grep(e,function(e){return-1<i.call(n,e)!==r}):E.filter(n,e,r)}E.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?E.find.matchesSelector(r,e)?[r]:[]:E.find.matches(e,E.grep(t,function(e){return 1===e.nodeType}))},E.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(E(e).filter(function(){for(t=0;t<r;t++)if(E.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)E.find(e,i[t],n);return 1<r?E.uniqueSort(n):n},filter:function(e){return this.pushStack(L(this,e||[],!1))},not:function(e){return this.pushStack(L(this,e||[],!0))},is:function(e){return!!L(this,"string"==typeof e&&k.test(e)?E(e):e||[],!1).length}});var j,q=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(E.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof E?t[0]:t,E.merge(this,E.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:v,!0)),D.test(r[1])&&E.isPlainObject(t))for(r in t)x(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=v.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):x(e)?void 0!==n.ready?n.ready(e):e(E):E.makeArray(e,this)}).prototype=E.fn,j=E(v);var O=/^(?:parents|prev(?:Until|All))/,P={children:!0,contents:!0,next:!0,prev:!0};function H(e,t){while((e=e[t])&&1!==e.nodeType);return e}E.fn.extend({has:function(e){var t=E(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(E.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&E(e);if(!k.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&E.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?E.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(E(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(E.uniqueSort(E.merge(this.get(),E(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),E.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return N(e,"parentNode")},parentsUntil:function(e,t,n){return N(e,"parentNode",n)},next:function(e){return H(e,"nextSibling")},prev:function(e){return H(e,"previousSibling")},nextAll:function(e){return N(e,"nextSibling")},prevAll:function(e){return N(e,"previousSibling")},nextUntil:function(e,t,n){return N(e,"nextSibling",n)},prevUntil:function(e,t,n){return N(e,"previousSibling",n)},siblings:function(e){return A((e.parentNode||{}).firstChild,e)},children:function(e){return A(e.firstChild)},contents:function(e){return"undefined"!=typeof e.contentDocument?e.contentDocument:(S(e,"template")&&(e=e.content||e),E.merge([],e.childNodes))}},function(r,i){E.fn[r]=function(e,t){var n=E.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=E.filter(t,n)),1<this.length&&(P[r]||E.uniqueSort(n),O.test(r)&&n.reverse()),this.pushStack(n)}});var I=/[^\x20\t\r\n\f]+/g;function R(e){return e}function B(e){throw e}function M(e,t,n,r){var i;try{e&&x(i=e.promise)?i.call(e).done(t).fail(n):e&&x(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}E.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},E.each(e.match(I)||[],function(e,t){n[t]=!0}),n):E.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){E.each(e,function(e,t){x(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==T(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return E.each(arguments,function(e,t){var n;while(-1<(n=E.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<E.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},E.extend({Deferred:function(e){var o=[["notify","progress",E.Callbacks("memory"),E.Callbacks("memory"),2],["resolve","done",E.Callbacks("once memory"),E.Callbacks("once memory"),0,"resolved"],["reject","fail",E.Callbacks("once memory"),E.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return E.Deferred(function(r){E.each(o,function(e,t){var n=x(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&x(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,x(t)?s?t.call(e,l(u,o,R,s),l(u,o,B,s)):(u++,t.call(e,l(u,o,R,s),l(u,o,B,s),l(u,o,R,o.notifyWith))):(a!==R&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){E.Deferred.exceptionHook&&E.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==B&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(E.Deferred.getStackHook&&(t.stackTrace=E.Deferred.getStackHook()),g.setTimeout(t))}}return E.Deferred(function(e){o[0][3].add(l(0,e,x(r)?r:R,e.notifyWith)),o[1][3].add(l(0,e,x(t)?t:R)),o[2][3].add(l(0,e,x(n)?n:B))}).promise()},promise:function(e){return null!=e?E.extend(e,a):a}},s={};return E.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=E.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(M(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||x(i[t]&&i[t].then)))return o.then();while(t--)M(i[t],a(t),o.reject);return o.promise()}});var W=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;E.Deferred.exceptionHook=function(e,t){g.console&&g.console.warn&&e&&W.test(e.name)&&g.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},E.readyException=function(e){g.setTimeout(function(){throw e})};var $=E.Deferred();function F(){v.removeEventListener("DOMContentLoaded",F),g.removeEventListener("load",F),E.ready()}E.fn.ready=function(e){return $.then(e)["catch"](function(e){E.readyException(e)}),this},E.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--E.readyWait:E.isReady)||(E.isReady=!0)!==e&&0<--E.readyWait||$.resolveWith(v,[E])}}),E.ready.then=$.then,"complete"===v.readyState||"loading"!==v.readyState&&!v.documentElement.doScroll?g.setTimeout(E.ready):(v.addEventListener("DOMContentLoaded",F),g.addEventListener("load",F));var z=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===T(n))for(s in i=!0,n)z(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,x(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(E(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},_=/^-ms-/,U=/-([a-z])/g;function V(e,t){return t.toUpperCase()}function X(e){return e.replace(_,"ms-").replace(U,V)}var Q=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Y(){this.expando=E.expando+Y.uid++}Y.uid=1,Y.prototype={cache:function(e){var t=e[this.expando];return t||(t={},Q(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[X(t)]=n;else for(r in t)i[X(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][X(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(X):(t=X(t))in r?[t]:t.match(I)||[]).length;while(n--)delete r[t[n]]}(void 0===t||E.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!E.isEmptyObject(t)}};var G=new Y,K=new Y,J=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Z=/[A-Z]/g;function ee(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(Z,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:J.test(i)?JSON.parse(i):i)}catch(e){}K.set(e,t,n)}else n=void 0;return n}E.extend({hasData:function(e){return K.hasData(e)||G.hasData(e)},data:function(e,t,n){return K.access(e,t,n)},removeData:function(e,t){K.remove(e,t)},_data:function(e,t,n){return G.access(e,t,n)},_removeData:function(e,t){G.remove(e,t)}}),E.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=K.get(o),1===o.nodeType&&!G.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=X(r.slice(5)),ee(o,r,i[r]));G.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){K.set(this,n)}):z(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=K.get(o,n))?t:void 0!==(t=ee(o,n))?t:void 0;this.each(function(){K.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){K.remove(this,e)})}}),E.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=G.get(e,t),n&&(!r||Array.isArray(n)?r=G.access(e,t,E.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=E.queue(e,t),r=n.length,i=n.shift(),o=E._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){E.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return G.get(e,n)||G.access(e,n,{empty:E.Callbacks("once memory").add(function(){G.remove(e,[t+"queue",n])})})}}),E.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?E.queue(this[0],t):void 0===n?this:this.each(function(){var e=E.queue(this,t,n);E._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&E.dequeue(this,t)})},dequeue:function(e){return this.each(function(){E.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=E.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=G.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var te=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ne=new RegExp("^(?:([+-])=|)("+te+")([a-z%]*)$","i"),re=["Top","Right","Bottom","Left"],ie=v.documentElement,oe=function(e){return E.contains(e.ownerDocument,e)},ae={composed:!0};ie.getRootNode&&(oe=function(e){return E.contains(e.ownerDocument,e)||e.getRootNode(ae)===e.ownerDocument});var se=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&oe(e)&&"none"===E.css(e,"display")},ue=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];for(o in i=n.apply(e,r||[]),t)e.style[o]=a[o];return i};var le={};function ce(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=G.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&se(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=le[s])||(o=a.body.appendChild(a.createElement(s)),u=E.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),le[s]=u)))):"none"!==n&&(l[c]="none",G.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}E.fn.extend({show:function(){return ce(this,!0)},hide:function(){return ce(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){se(this)?E(this).show():E(this).hide()})}});var fe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,pe=/^$|^module$|\/(?:java|ecma)script/i,he={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ge(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&S(e,t)?E.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n<r;n++)G.set(e[n],"globalEval",!t||G.get(t[n],"globalEval"))}he.optgroup=he.option,he.tbody=he.tfoot=he.colgroup=he.caption=he.thead,he.th=he.td;var ye,me,be=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),d=[],p=0,h=e.length;p<h;p++)if((o=e[p])||0===o)if("object"===T(o))E.merge(d,o.nodeType?[o]:o);else if(be.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=he[s]||he._default,a.innerHTML=u[1]+E.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;E.merge(d,a.childNodes),(a=f.firstChild).textContent=""}else d.push(t.createTextNode(o));f.textContent="",p=0;while(o=d[p++])if(r&&-1<E.inArray(o,r))i&&i.push(o);else if(l=oe(o),a=ge(f.appendChild(o),"script"),l&&ve(a),n){c=0;while(o=a[c++])pe.test(o.type||"")&&n.push(o)}return f}ye=v.createDocumentFragment().appendChild(v.createElement("div")),(me=v.createElement("input")).setAttribute("type","radio"),me.setAttribute("checked","checked"),me.setAttribute("name","t"),ye.appendChild(me),b.checkClone=ye.cloneNode(!0).cloneNode(!0).lastChild.checked,ye.innerHTML="<textarea>x</textarea>",b.noCloneChecked=!!ye.cloneNode(!0).lastChild.defaultValue;var we=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Te=/^([^.]*)(?:\.(.+)|)/;function Ee(){return!0}function Ne(){return!1}function Ae(e,t){return e===function(){try{return v.activeElement}catch(e){}}()==("focus"===t)}function ke(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)ke(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Ne;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return E().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=E.guid++)),e.each(function(){E.event.add(this,t,i,r,n)})}function Se(e,i,o){o?(G.set(e,i,!1),E.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=G.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(E.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),G.set(this,i,r),t=o(this,i),this[i](),r!==(n=G.get(this,i))||t?G.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(G.set(this,i,{value:E.event.trigger(E.extend(r[0],E.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===G.get(e,i)&&E.event.add(e,i,Ee)}E.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,d,p,h,g,v=G.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&E.find.matchesSelector(ie,i),n.guid||(n.guid=E.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof E&&E.event.triggered!==e.type?E.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(I)||[""]).length;while(l--)p=g=(s=Te.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),p&&(f=E.event.special[p]||{},p=(i?f.delegateType:f.bindType)||p,f=E.event.special[p]||{},c=E.extend({type:p,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&E.expr.match.needsContext.test(i),namespace:h.join(".")},o),(d=u[p])||((d=u[p]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(p,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?d.splice(d.delegateCount++,0,c):d.push(c),E.event.global[p]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,d,p,h,g,v=G.hasData(e)&&G.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(I)||[""]).length;while(l--)if(p=g=(s=Te.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),p){f=E.event.special[p]||{},d=u[p=(r?f.delegateType:f.bindType)||p]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=d.length;while(o--)c=d[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(d.splice(o,1),c.selector&&d.delegateCount--,f.remove&&f.remove.call(e,c));a&&!d.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||E.removeEvent(e,p,v.handle),delete u[p])}else for(p in u)E.event.remove(e,p+t[l],n,r,!0);E.isEmptyObject(u)&&G.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=E.event.fix(e),u=new Array(arguments.length),l=(G.get(this,"events")||{})[s.type]||[],c=E.event.special[s.type]||{};for(u[0]=s,t=1;t<arguments.length;t++)u[t]=arguments[t];if(s.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,s)){a=E.event.handlers.call(this,s,l),t=0;while((i=a[t++])&&!s.isPropagationStopped()){s.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!s.isImmediatePropagationStopped())s.rnamespace&&!1!==o.namespace&&!s.rnamespace.test(o.namespace)||(s.handleObj=o,s.data=o.data,void 0!==(r=((E.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,u))&&!1===(s.result=r)&&(s.preventDefault(),s.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,s),s.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<E(i,this).index(l):E.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(E.Event.prototype,t,{enumerable:!0,configurable:!0,get:x(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[E.expando]?e:new E.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return fe.test(t.type)&&t.click&&S(t,"input")&&Se(t,"click",Ee),!1},trigger:function(e){var t=this||e;return fe.test(t.type)&&t.click&&S(t,"input")&&Se(t,"click"),!0},_default:function(e){var t=e.target;return fe.test(t.type)&&t.click&&S(t,"input")&&G.get(t,"click")||S(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},E.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},E.Event=function(e,t){if(!(this instanceof E.Event))return new E.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?Ee:Ne,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&E.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[E.expando]=!0},E.Event.prototype={constructor:E.Event,isDefaultPrevented:Ne,isPropagationStopped:Ne,isImmediatePropagationStopped:Ne,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=Ee,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=Ee,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=Ee,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},E.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&we.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Ce.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},E.event.addProp),E.each({focus:"focusin",blur:"focusout"},function(e,t){E.event.special[e]={setup:function(){return Se(this,e,Ae),!1},trigger:function(){return Se(this,e),!0},delegateType:t}}),E.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){E.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||E.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),E.fn.extend({on:function(e,t,n,r){return ke(this,e,t,n,r)},one:function(e,t,n,r){return ke(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,E(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Ne),this.each(function(){E.event.remove(this,e,n,t)})}});var De=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,Le=/<script|<style|<link/i,je=/checked\s*(?:[^=]|=\s*.checked.)/i,qe=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Oe(e,t){return S(e,"table")&&S(11!==t.nodeType?t:t.firstChild,"tr")&&E(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Ie(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(G.hasData(e)&&(o=G.access(e),a=G.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n<r;n++)E.event.add(t,i,l[i][n]);K.hasData(e)&&(s=K.access(e),u=E.extend({},s),K.set(t,u))}}function Re(n,r,i,o){r=y.apply([],r);var e,t,a,s,u,l,c=0,f=n.length,d=f-1,p=r[0],h=x(p);if(h||1<f&&"string"==typeof p&&!b.checkClone&&je.test(p))return n.each(function(e){var t=n.eq(e);h&&(r[0]=p.call(this,e,t.html())),Re(t,r,i,o)});if(f&&(t=(e=xe(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=E.map(ge(e,"script"),Pe)).length;c<f;c++)u=e,c!==d&&(u=E.clone(u,!0,!0),s&&E.merge(a,ge(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,E.map(a,He),c=0;c<s;c++)u=a[c],pe.test(u.type||"")&&!G.access(u,"globalEval")&&E.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?E._evalUrl&&!u.noModule&&E._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")}):C(u.textContent.replace(qe,""),u,l))}return n}function Be(e,t,n){for(var r,i=t?E.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||E.cleanData(ge(r)),r.parentNode&&(n&&oe(r)&&ve(ge(r,"script")),r.parentNode.removeChild(r));return e}E.extend({htmlPrefilter:function(e){return e.replace(De,"<$1></$2>")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(b.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||E.isXMLDoc(e)))for(a=ge(c),r=0,i=(o=ge(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&fe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ge(e),a=a||ge(c),r=0,i=o.length;r<i;r++)Ie(o[r],a[r]);else Ie(e,c);return 0<(a=ge(c,"script")).length&&ve(a,!f&&ge(e,"script")),c},cleanData:function(e){for(var t,n,r,i=E.event.special,o=0;void 0!==(n=e[o]);o++)if(Q(n)){if(t=n[G.expando]){if(t.events)for(r in t.events)i[r]?E.event.remove(n,r):E.removeEvent(n,r,t.handle);n[G.expando]=void 0}n[K.expando]&&(n[K.expando]=void 0)}}}),E.fn.extend({detach:function(e){return Be(this,e,!0)},remove:function(e){return Be(this,e)},text:function(e){return z(this,function(e){return void 0===e?E.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Re(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Oe(this,e).appendChild(e)})},prepend:function(){return Re(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Oe(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(E.cleanData(ge(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return E.clone(this,e,t)})},html:function(e){return z(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Le.test(e)&&!he[(de.exec(e)||["",""])[1].toLowerCase()]){e=E.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(E.cleanData(ge(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return Re(this,arguments,function(e){var t=this.parentNode;E.inArray(this,n)<0&&(E.cleanData(ge(this)),t&&t.replaceChild(e,this))},n)}}),E.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){E.fn[e]=function(e){for(var t,n=[],r=E(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),E(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var Me=new RegExp("^("+te+")(?!px)[a-z%]+$","i"),We=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=g),t.getComputedStyle(e)},$e=new RegExp(re.join("|"),"i");function Fe(e,t,n){var r,i,o,a,s=e.style;return(n=n||We(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||oe(e)||(a=E.style(e,t)),!b.pixelBoxStyles()&&Me.test(a)&&$e.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function ze(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(u){s.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",u.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",ie.appendChild(s).appendChild(u);var e=g.getComputedStyle(u);n="1%"!==e.top,a=12===t(e.marginLeft),u.style.right="60%",o=36===t(e.right),r=36===t(e.width),u.style.position="absolute",i=12===t(u.offsetWidth/3),ie.removeChild(s),u=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s=v.createElement("div"),u=v.createElement("div");u.style&&(u.style.backgroundClip="content-box",u.cloneNode(!0).style.backgroundClip="",b.clearCloneStyle="content-box"===u.style.backgroundClip,E.extend(b,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),a},scrollboxSize:function(){return e(),i}}))}();var _e=["Webkit","Moz","ms"],Ue=v.createElement("div").style,Ve={};function Xe(e){var t=E.cssProps[e]||Ve[e];return t||(e in Ue?e:Ve[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=_e.length;while(n--)if((e=_e[n]+t)in Ue)return e}(e)||e)}var Qe,Ye,Ge=/^(none|table(?!-c[ea]).+)/,Ke=/^--/,Je={position:"absolute",visibility:"hidden",display:"block"},Ze={letterSpacing:"0",fontWeight:"400"};function et(e,t,n){var r=ne.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function tt(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=E.css(e,n+re[a],!0,i)),r?("content"===n&&(u-=E.css(e,"padding"+re[a],!0,i)),"margin"!==n&&(u-=E.css(e,"border"+re[a]+"Width",!0,i))):(u+=E.css(e,"padding"+re[a],!0,i),"padding"!==n?u+=E.css(e,"border"+re[a]+"Width",!0,i):s+=E.css(e,"border"+re[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function nt(e,t,n){var r=We(e),i=(!b.boxSizingReliable()||n)&&"border-box"===E.css(e,"boxSizing",!1,r),o=i,a=Fe(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if(Me.test(a)){if(!n)return a;a="auto"}return(!b.boxSizingReliable()&&i||"auto"===a||!parseFloat(a)&&"inline"===E.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===E.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+tt(e,t,n||(i?"border":"content"),o,r,a)+"px"}E.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Fe(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=X(t),u=Ke.test(t),l=e.style;if(u||(t=Xe(s)),a=E.cssHooks[t]||E.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=ne.exec(n))&&i[1]&&(n=function(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return E.css(e,t,"")},u=s(),l=n&&n[3]||(E.cssNumber[t]?"":"px"),c=e.nodeType&&(E.cssNumber[t]||"px"!==l&&+u)&&ne.exec(E.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)E.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,E.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(E.cssNumber[s]?"":"px")),b.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=X(t);return Ke.test(t)||(t=Xe(s)),(a=E.cssHooks[t]||E.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Fe(e,t,r)),"normal"===i&&t in Ze&&(i=Ze[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),E.each(["height","width"],function(e,u){E.cssHooks[u]={get:function(e,t,n){if(t)return!Ge.test(E.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?nt(e,u,n):ue(e,Je,function(){return nt(e,u,n)})},set:function(e,t,n){var r,i=We(e),o=!b.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===E.css(e,"boxSizing",!1,i),s=n?tt(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-tt(e,u,"border",!1,i)-.5)),s&&(r=ne.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=E.css(e,u)),et(0,t,s)}}}),E.cssHooks.marginLeft=ze(b.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Fe(e,"marginLeft"))||e.getBoundingClientRect().left-ue(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),E.each({margin:"",padding:"",border:"Width"},function(i,o){E.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+re[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(E.cssHooks[i+o].set=et)}),E.fn.extend({css:function(e,t){return z(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=We(e),i=t.length;a<i;a++)o[t[a]]=E.css(e,t[a],!1,r);return o}return void 0!==n?E.style(e,t,n):E.css(e,t)},e,t,1<arguments.length)}}),E.fn.delay=function(r,e){return r=E.fx&&E.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=g.setTimeout(e,r);t.stop=function(){g.clearTimeout(n)}})},Qe=v.createElement("input"),Ye=v.createElement("select").appendChild(v.createElement("option")),Qe.type="checkbox",b.checkOn=""!==Qe.value,b.optSelected=Ye.selected,(Qe=v.createElement("input")).value="t",Qe.type="radio",b.radioValue="t"===Qe.value;var rt,it=E.expr.attrHandle;E.fn.extend({attr:function(e,t){return z(this,E.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){E.removeAttr(this,e)})}}),E.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?E.prop(e,t,n):(1===o&&E.isXMLDoc(e)||(i=E.attrHooks[t.toLowerCase()]||(E.expr.match.bool.test(t)?rt:void 0)),void 0!==n?null===n?void E.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=E.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!b.radioValue&&"radio"===t&&S(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(I);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),rt={set:function(e,t,n){return!1===t?E.removeAttr(e,n):e.setAttribute(n,n),n}},E.each(E.expr.match.bool.source.match(/\w+/g),function(e,t){var a=it[t]||E.find.attr;it[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=it[o],it[o]=r,r=null!=a(e,t,n)?o:null,it[o]=i),r}});var ot=/^(?:input|select|textarea|button)$/i,at=/^(?:a|area)$/i;function st(e){return(e.match(I)||[]).join(" ")}function ut(e){return e.getAttribute&&e.getAttribute("class")||""}function lt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(I)||[]}E.fn.extend({prop:function(e,t){return z(this,E.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[E.propFix[e]||e]})}}),E.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&E.isXMLDoc(e)||(t=E.propFix[t]||t,i=E.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=E.find.attr(e,"tabindex");return t?parseInt(t,10):ot.test(e.nodeName)||at.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),b.optSelected||(E.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),E.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){E.propFix[this.toLowerCase()]=this}),E.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(x(t))return this.each(function(e){E(this).addClass(t.call(this,e,ut(this)))});if((e=lt(t)).length)while(n=this[u++])if(i=ut(n),r=1===n.nodeType&&" "+st(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=st(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(x(t))return this.each(function(e){E(this).removeClass(t.call(this,e,ut(this)))});if(!arguments.length)return this.attr("class","");if((e=lt(t)).length)while(n=this[u++])if(i=ut(n),r=1===n.nodeType&&" "+st(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=st(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):x(i)?this.each(function(e){E(this).toggleClass(i.call(this,e,ut(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=E(this),r=lt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=ut(this))&&G.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":G.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+st(ut(n))+" ").indexOf(t))return!0;return!1}});var ct=/\r/g;E.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=x(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,E(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=E.map(t,function(e){return null==e?"":e+""})),(r=E.valHooks[this.type]||E.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=E.valHooks[t.type]||E.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(ct,""):null==e?"":e:void 0}}),E.extend({valHooks:{option:{get:function(e){var t=E.find.attr(e,"value");return null!=t?t:st(E.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!S(n.parentNode,"optgroup"))){if(t=E(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=E.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<E.inArray(E.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),E.each(["radio","checkbox"],function(){E.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<E.inArray(E(e).val(),t)}},b.checkOn||(E.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),b.focusin="onfocusin"in g;var ft=/^(?:focusinfocus|focusoutblur)$/,dt=function(e){e.stopPropagation()};E.extend(E.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,d=[n||v],p=m.call(e,"type")?e.type:e,h=m.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||v,3!==n.nodeType&&8!==n.nodeType&&!ft.test(p+E.event.triggered)&&(-1<p.indexOf(".")&&(p=(h=p.split(".")).shift(),h.sort()),u=p.indexOf(":")<0&&"on"+p,(e=e[E.expando]?e:new E.Event(p,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:E.makeArray(t,[e]),c=E.event.special[p]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!w(n)){for(s=c.delegateType||p,ft.test(s+p)||(o=o.parentNode);o;o=o.parentNode)d.push(o),a=o;a===(n.ownerDocument||v)&&d.push(a.defaultView||a.parentWindow||g)}i=0;while((o=d[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||p,(l=(G.get(o,"events")||{})[e.type]&&G.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&Q(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=p,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(d.pop(),t)||!Q(n)||u&&x(n[p])&&!w(n)&&((a=n[u])&&(n[u]=null),E.event.triggered=p,e.isPropagationStopped()&&f.addEventListener(p,dt),n[p](),e.isPropagationStopped()&&f.removeEventListener(p,dt),E.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=E.extend(new E.Event,n,{type:e,isSimulated:!0});E.event.trigger(r,null,t)}}),E.fn.extend({trigger:function(e,t){return this.each(function(){E.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return E.event.trigger(e,t,n,!0)}}),b.focusin||E.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){E.event.simulate(r,e.target,E.event.fix(e))};E.event.special[r]={setup:function(){var e=this.ownerDocument||this,t=G.access(e,r);t||e.addEventListener(n,i,!0),G.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this,t=G.access(e,r)-1;t?G.access(e,r,t):(e.removeEventListener(n,i,!0),G.remove(e,r))}}});var pt,ht=/\[\]$/,gt=/\r?\n/g,vt=/^(?:submit|button|image|reset|file)$/i,yt=/^(?:input|select|textarea|keygen)/i;function mt(n,e,r,i){var t;if(Array.isArray(e))E.each(e,function(e,t){r||ht.test(n)?i(n,t):mt(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==T(e))i(n,e);else for(t in e)mt(n+"["+t+"]",e[t],r,i)}E.param=function(e,t){var n,r=[],i=function(e,t){var n=x(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!E.isPlainObject(e))E.each(e,function(){i(this.name,this.value)});else for(n in e)mt(n,e[n],t,i);return r.join("&")},E.fn.extend({serialize:function(){return E.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=E.prop(this,"elements");return e?E.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!E(this).is(":disabled")&&yt.test(this.nodeName)&&!vt.test(e)&&(this.checked||!fe.test(e))}).map(function(e,t){var n=E(this).val();return null==n?null:Array.isArray(n)?E.map(n,function(e){return{name:t.name,value:e.replace(gt,"\r\n")}}):{name:t.name,value:n.replace(gt,"\r\n")}}).get()}}),E.fn.extend({wrapAll:function(e){var t;return this[0]&&(x(e)&&(e=e.call(this[0])),t=E(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return x(n)?this.each(function(e){E(this).wrapInner(n.call(this,e))}):this.each(function(){var e=E(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=x(t);return this.each(function(e){E(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){E(this).replaceWith(this.childNodes)}),this}}),E.expr.pseudos.hidden=function(e){return!E.expr.pseudos.visible(e)},E.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},b.createHTMLDocument=((pt=v.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===pt.childNodes.length),E.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(b.createHTMLDocument?((r=(t=v.implementation.createHTMLDocument("")).createElement("base")).href=v.location.href,t.head.appendChild(r)):t=v),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&E(o).remove(),E.merge([],i.childNodes)));var r,i,o},E.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=E.css(e,"position"),c=E(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=E.css(e,"top"),u=E.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),x(t)&&(t=t.call(e,n,E.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},E.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){E.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===E.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===E.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=E(e).offset()).top+=E.css(e,"borderTopWidth",!0),i.left+=E.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-E.css(r,"marginTop",!0),left:t.left-i.left-E.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===E.css(e,"position"))e=e.offsetParent;return e||ie})}}),E.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;E.fn[t]=function(e){return z(this,function(e,t,n){var r;if(w(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),E.each(["top","left"],function(e,n){E.cssHooks[n]=ze(b.pixelPosition,function(e,t){if(t)return t=Fe(e,n),Me.test(t)?E(e).position()[n]+"px":t})}),E.each({Height:"height",Width:"width"},function(a,s){E.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){E.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return z(this,function(e,t,n){var r;return w(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?E.css(e,t,i):E.style(e,t,n,i)},s,n?e:void 0,n)}})}),E.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){E.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}}),E.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),E.fn.extend({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)}}),E.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),x(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||E.guid++,i},E.holdReady=function(e){e?E.readyWait++:E.ready(!0)},E.isArray=Array.isArray,E.parseJSON=JSON.parse,E.nodeName=S,E.isFunction=x,E.isWindow=w,E.camelCase=X,E.type=T,E.now=Date.now,E.isNumeric=function(e){var t=E.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return E});var bt=g.jQuery,xt=g.$;return E.noConflict=function(e){return g.$===E&&(g.$=xt),e&&g.jQuery===E&&(g.jQuery=bt),E},e||(g.jQuery=g.$=E),E});
@@ -1,1 +0,0
1 - {"version":3,"sources":["jquery.slim.js"],"names":["global","factory","module","exports","document","w","Error","window","this","noGlobal","arr","getProto","Object","getPrototypeOf","slice","concat","push","indexOf","class2type","toString","hasOwn","hasOwnProperty","fnToString","ObjectFunctionString","call","support","isFunction","obj","nodeType","isWindow","preservedScriptAttributes","type","src","nonce","noModule","DOMEval","code","node","doc","i","val","script","createElement","text","getAttribute","setAttribute","head","appendChild","parentNode","removeChild","toType","version","jQuery","selector","context","fn","init","rtrim","isArrayLike","length","prototype","jquery","constructor","toArray","get","num","pushStack","elems","ret","merge","prevObject","each","callback","map","elem","apply","arguments","first","eq","last","len","j","end","sort","splice","extend","options","name","copy","copyIsArray","clone","target","deep","isPlainObject","Array","isArray","undefined","expando","Math","random","replace","isReady","error","msg","noop","proto","Ctor","isEmptyObject","globalEval","trim","makeArray","results","inArray","second","grep","invert","matches","callbackExpect","arg","value","guid","Symbol","iterator","split","toLowerCase","Sizzle","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","contains","Date","preferredDoc","dirruns","done","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","a","b","pop","push_native","list","booleans","whitespace","identifier","attributes","pseudos","rwhitespace","RegExp","rcomma","rcombinators","rdescend","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rhtml","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","_","escaped","escapedWhitespace","high","String","fromCharCode","rcssescape","fcssescape","ch","asCodePoint","charCodeAt","unloadHandler","inDisabledFieldset","addCombinator","disabled","nodeName","dir","next","childNodes","e","els","seed","m","nid","match","groups","newSelector","newContext","ownerDocument","exec","getElementById","id","getElementsByTagName","getElementsByClassName","qsa","test","toSelector","join","testContext","querySelectorAll","qsaError","removeAttribute","keys","cache","key","cacheLength","shift","markFunction","assert","el","addHandle","attrs","handler","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","namespace","namespaceURI","documentElement","hasCompare","subWindow","defaultView","top","addEventListener","attachEvent","className","createComment","getById","getElementsByName","filter","attrId","find","getAttributeNode","tag","tmp","innerHTML","input","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","expr","elements","attr","specified","escape","sel","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","firstChild","nodeValue","selectors","createPseudo","relative",">"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","result","what","simple","forward","ofType","xml","uniqueCache","outerCache","nodeIndex","start","parent","useCache","lastChild","uniqueID","pseudo","args","setFilters","idx","matched","not","matcher","unmatched","has","lang","elemLang","hash","location","root","focus","activeElement","hasFocus","href","tabIndex","enabled","checked","selected","selectedIndex","empty","header","button","even","odd","lt","gt","radio","checkbox","file","password","image","submit","reset","tokens","combinator","base","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","contexts","multipleContexts","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","filters","parseOnly","soFar","preFilters","cached","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","token","compiled","defaultValue","unique","isXMLDoc","escapeSelector","until","truncate","is","siblings","n","rneedsContext","rsingleTag","winnow","qualifier","self","rootjQuery","parseHTML","ready","rparentsprev","guaranteedUnique","children","contents","prev","sibling","targets","l","closest","index","prevAll","add","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","content","reverse","rnothtmlwhite","Identity","v","Thrower","ex","adoptValue","resolve","reject","noValue","method","promise","fail","then","Callbacks","object","flag","firing","memory","fired","locked","queue","firingIndex","fire","once","stopOnFalse","remove","disable","lock","fireWith","Deferred","func","tuples","state","always","deferred","catch","pipe","fns","newDefer","tuple","returned","progress","notify","onFulfilled","onRejected","onProgress","maxDepth","depth","special","that","mightThrow","TypeError","notifyWith","resolveWith","process","exceptionHook","stackTrace","rejectWith","getStackHook","setTimeout","stateString","when","singleValue","remaining","resolveContexts","resolveValues","master","updateFunc","rerrorNames","stack","console","warn","message","readyException","readyList","completed","removeEventListener","readyWait","wait","readyState","doScroll","access","chainable","emptyGet","raw","bulk","rmsPrefix","rdashAlpha","fcamelCase","all","letter","toUpperCase","camelCase","string","acceptData","owner","Data","uid","defineProperty","configurable","set","data","prop","hasData","dataPriv","dataUser","rbrace","rmultiDash","dataAttr","JSON","parse","removeData","_data","_removeData","dequeue","startLength","hooks","_queueHooks","stop","setter","clearQueue","count","defer","pnum","source","rcssNum","cssExpand","isAttached","composed","getRootNode","isHiddenWithinTree","style","display","css","swap","old","defaultDisplayMap","showHide","show","values","body","hide","toggle","rcheckableType","rtagName","rscriptType","wrapMap","option","thead","col","tr","td","_default","getAll","setGlobalEval","refElements","optgroup","tbody","tfoot","colgroup","caption","th","div","buildFragment","scripts","selection","ignored","wrap","attached","fragment","createDocumentFragment","nodes","htmlPrefilter","createTextNode","checkClone","cloneNode","noCloneChecked","rkeyEvent","rmouseEvent","rtypenamespace","returnTrue","returnFalse","expectSync","err","safeActiveElement","on","types","one","origFn","event","off","leverageNative","notAsync","saved","isTrigger","delegateType","stopPropagation","stopImmediatePropagation","preventDefault","trigger","Event","handleObjIn","eventHandle","events","t","handleObj","handlers","namespaces","origType","elemData","handle","triggered","dispatch","bindType","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","currentTarget","isImmediatePropagationStopped","rnamespace","postDispatch","matchedHandlers","matchedSelectors","addProp","hook","enumerable","originalEvent","writable","load","noBubble","click","beforeunload","returnValue","props","isDefaultPrevented","defaultPrevented","relatedTarget","timeStamp","now","isSimulated","altKey","bubbles","cancelable","changedTouches","ctrlKey","detail","eventPhase","metaKey","pageX","pageY","shiftKey","view","char","charCode","keyCode","buttons","clientX","clientY","offsetX","offsetY","pointerId","pointerType","screenX","screenY","targetTouches","toElement","touches","which","blur","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rxhtmlTag","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","pdataOld","pdataCur","udataOld","udataCur","domManip","collection","hasScripts","iNoClone","valueIsFunction","html","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","detach","append","prepend","insertBefore","before","after","replaceWith","replaceChild","appendTo","prependTo","insertAfter","replaceAll","original","insert","rnumnonpx","getStyles","opener","getComputedStyle","rboxStyle","curCSS","computed","width","minWidth","maxWidth","getPropertyValue","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","container","cssText","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","marginLeft","right","pixelBoxStylesVal","boxSizingReliableVal","position","scrollboxSizeVal","offsetWidth","measure","round","parseFloat","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","cssPrefixes","emptyStyle","vendorProps","finalPropName","final","cssProps","capName","vendorPropName","opt","rdisplayswap","rcustomProp","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","setPositiveNumber","subtract","max","boxModelAdjustment","dimension","box","isBorderBox","styles","computedVal","extra","delta","ceil","getWidthOrHeight","valueIsBorderBox","offsetProp","getClientRects","cssHooks","opacity","cssNumber","animationIterationCount","columnCount","fillOpacity","flexGrow","flexShrink","gridArea","gridColumn","gridColumnEnd","gridColumnStart","gridRow","gridRowEnd","gridRowStart","lineHeight","order","orphans","widows","zIndex","zoom","origName","isCustomProp","valueParts","tween","adjusted","scale","maxIterations","currentValue","initial","unit","initialInUnit","adjustCSS","setProperty","isFinite","getBoundingClientRect","scrollboxSizeBuggy","left","margin","padding","border","prefix","suffix","expand","expanded","parts","delay","time","fx","speeds","timeout","clearTimeout","checkOn","optSelected","radioValue","boolHook","removeAttr","nType","attrHooks","attrNames","getter","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","propHooks","tabindex","parseInt","for","class","addClass","classes","curValue","clazz","finalValue","removeClass","toggleClass","stateVal","isValidValue","classNames","hasClass","rreturn","valHooks","optionSet","focusin","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","parentWindow","simulate","triggerHandler","attaches","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","param","s","valueOrFunction","encodeURIComponent","serialize","serializeArray","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","hidden","visible","offsetHeight","createHTMLDocument","implementation","keepScripts","parsed","offset","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","using","rect","win","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollLeft","scrollTop","scrollTo","Height","Width","","defaultExtra","funcName","hover","fnOver","fnOut","bind","unbind","delegate","undelegate","proxy","holdReady","hold","parseJSON","isNumeric","isNaN","define","amd","_jQuery","_$","$","noConflict"],"mappings":"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","file":"jquery.slim.min.js"} No newline at end of file
@@ -1,36 +0,0
1 - Copyright JS Foundation and other contributors, https://js.foundation/
2 -
3 - This software consists of voluntary contributions made by many
4 - individuals. For exact contribution history, see the revision history
5 - available at https://github.com/jquery/sizzle
6 -
7 - The following license applies to all parts of this software except as
8 - documented below:
9 -
10 - ====
11 -
12 - Permission is hereby granted, free of charge, to any person obtaining
13 - a copy of this software and associated documentation files (the
14 - "Software"), to deal in the Software without restriction, including
15 - without limitation the rights to use, copy, modify, merge, publish,
16 - distribute, sublicense, and/or sell copies of the Software, and to
17 - permit persons to whom the Software is furnished to do so, subject to
18 - the following conditions:
19 -
20 - The above copyright notice and this permission notice shall be
21 - included in all copies or substantial portions of the Software.
22 -
23 - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
24 - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
25 - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
26 - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
27 - LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
28 - OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
29 - WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
30 -
31 - ====
32 -
33 - All files located in the node_modules and external directories are
34 - externally maintained libraries used by this software which have their
35 - own licenses; we recommend you read them, as their terms may differ from
36 - the terms above.
This diff has been collapsed as it changes many lines, (2282 lines changed) Show them Hide them
@@ -1,2282 +0,0
1 - /*!
2 - * Sizzle CSS Selector Engine v2.3.4
3 - * https://sizzlejs.com/
4 - *
5 - * Copyright JS Foundation and other contributors
6 - * Released under the MIT license
7 - * https://js.foundation/
8 - *
9 - * Date: 2019-04-08
10 - */
11 - (function( window ) {
12 -
13 - var i,
14 - support,
15 - Expr,
16 - getText,
17 - isXML,
18 - tokenize,
19 - compile,
20 - select,
21 - outermostContext,
22 - sortInput,
23 - hasDuplicate,
24 -
25 - // Local document vars
26 - setDocument,
27 - document,
28 - docElem,
29 - documentIsHTML,
30 - rbuggyQSA,
31 - rbuggyMatches,
32 - matches,
33 - contains,
34 -
35 - // Instance-specific data
36 - expando = "sizzle" + 1 * new Date(),
37 - preferredDoc = window.document,
38 - dirruns = 0,
39 - done = 0,
40 - classCache = createCache(),
41 - tokenCache = createCache(),
42 - compilerCache = createCache(),
43 - nonnativeSelectorCache = createCache(),
44 - sortOrder = function( a, b ) {
45 - if ( a === b ) {
46 - hasDuplicate = true;
47 - }
48 - return 0;
49 - },
50 -
51 - // Instance methods
52 - hasOwn = ({}).hasOwnProperty,
53 - arr = [],
54 - pop = arr.pop,
55 - push_native = arr.push,
56 - push = arr.push,
57 - slice = arr.slice,
58 - // Use a stripped-down indexOf as it's faster than native
59 - // https://jsperf.com/thor-indexof-vs-for/5
60 - indexOf = function( list, elem ) {
61 - var i = 0,
62 - len = list.length;
63 - for ( ; i < len; i++ ) {
64 - if ( list[i] === elem ) {
65 - return i;
66 - }
67 - }
68 - return -1;
69 - },
70 -
71 - booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
72 -
73 - // Regular expressions
74 -
75 - // http://www.w3.org/TR/css3-selectors/#whitespace
76 - whitespace = "[\\x20\\t\\r\\n\\f]",
77 -
78 - // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
79 - identifier = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+",
80 -
81 - // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
82 - attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace +
83 - // Operator (capture 2)
84 - "*([*^$|!~]?=)" + whitespace +
85 - // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
86 - "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace +
87 - "*\\]",
88 -
89 - pseudos = ":(" + identifier + ")(?:\\((" +
90 - // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
91 - // 1. quoted (capture 3; capture 4 or capture 5)
92 - "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
93 - // 2. simple (capture 6)
94 - "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
95 - // 3. anything else (capture 2)
96 - ".*" +
97 - ")\\)|)",
98 -
99 - // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
100 - rwhitespace = new RegExp( whitespace + "+", "g" ),
101 - rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
102 -
103 - rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
104 - rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
105 - rdescend = new RegExp( whitespace + "|>" ),
106 -
107 - rpseudo = new RegExp( pseudos ),
108 - ridentifier = new RegExp( "^" + identifier + "$" ),
109 -
110 - matchExpr = {
111 - "ID": new RegExp( "^#(" + identifier + ")" ),
112 - "CLASS": new RegExp( "^\\.(" + identifier + ")" ),
113 - "TAG": new RegExp( "^(" + identifier + "|[*])" ),
114 - "ATTR": new RegExp( "^" + attributes ),
115 - "PSEUDO": new RegExp( "^" + pseudos ),
116 - "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
117 - "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
118 - "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
119 - "bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
120 - // For use in libraries implementing .is()
121 - // We use this for POS matching in `select`
122 - "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
123 - whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
124 - },
125 -
126 - rhtml = /HTML$/i,
127 - rinputs = /^(?:input|select|textarea|button)$/i,
128 - rheader = /^h\d$/i,
129 -
130 - rnative = /^[^{]+\{\s*\[native \w/,
131 -
132 - // Easily-parseable/retrievable ID or TAG or CLASS selectors
133 - rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
134 -
135 - rsibling = /[+~]/,
136 -
137 - // CSS escapes
138 - // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
139 - runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
140 - funescape = function( _, escaped, escapedWhitespace ) {
141 - var high = "0x" + escaped - 0x10000;
142 - // NaN means non-codepoint
143 - // Support: Firefox<24
144 - // Workaround erroneous numeric interpretation of +"0x"
145 - return high !== high || escapedWhitespace ?
146 - escaped :
147 - high < 0 ?
148 - // BMP codepoint
149 - String.fromCharCode( high + 0x10000 ) :
150 - // Supplemental Plane codepoint (surrogate pair)
151 - String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
152 - },
153 -
154 - // CSS string/identifier serialization
155 - // https://drafts.csswg.org/cssom/#common-serializing-idioms
156 - rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,
157 - fcssescape = function( ch, asCodePoint ) {
158 - if ( asCodePoint ) {
159 -
160 - // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
161 - if ( ch === "\0" ) {
162 - return "\uFFFD";
163 - }
164 -
165 - // Control characters and (dependent upon position) numbers get escaped as code points
166 - return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
167 - }
168 -
169 - // Other potentially-special ASCII characters get backslash-escaped
170 - return "\\" + ch;
171 - },
172 -
173 - // Used for iframes
174 - // See setDocument()
175 - // Removing the function wrapper causes a "Permission Denied"
176 - // error in IE
177 - unloadHandler = function() {
178 - setDocument();
179 - },
180 -
181 - inDisabledFieldset = addCombinator(
182 - function( elem ) {
183 - return elem.disabled === true && elem.nodeName.toLowerCase() === "fieldset";
184 - },
185 - { dir: "parentNode", next: "legend" }
186 - );
187 -
188 - // Optimize for push.apply( _, NodeList )
189 - try {
190 - push.apply(
191 - (arr = slice.call( preferredDoc.childNodes )),
192 - preferredDoc.childNodes
193 - );
194 - // Support: Android<4.0
195 - // Detect silently failing push.apply
196 - arr[ preferredDoc.childNodes.length ].nodeType;
197 - } catch ( e ) {
198 - push = { apply: arr.length ?
199 -
200 - // Leverage slice if possible
201 - function( target, els ) {
202 - push_native.apply( target, slice.call(els) );
203 - } :
204 -
205 - // Support: IE<9
206 - // Otherwise append directly
207 - function( target, els ) {
208 - var j = target.length,
209 - i = 0;
210 - // Can't trust NodeList.length
211 - while ( (target[j++] = els[i++]) ) {}
212 - target.length = j - 1;
213 - }
214 - };
215 - }
216 -
217 - function Sizzle( selector, context, results, seed ) {
218 - var m, i, elem, nid, match, groups, newSelector,
219 - newContext = context && context.ownerDocument,
220 -
221 - // nodeType defaults to 9, since context defaults to document
222 - nodeType = context ? context.nodeType : 9;
223 -
224 - results = results || [];
225 -
226 - // Return early from calls with invalid selector or context
227 - if ( typeof selector !== "string" || !selector ||
228 - nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {
229 -
230 - return results;
231 - }
232 -
233 - // Try to shortcut find operations (as opposed to filters) in HTML documents
234 - if ( !seed ) {
235 -
236 - if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
237 - setDocument( context );
238 - }
239 - context = context || document;
240 -
241 - if ( documentIsHTML ) {
242 -
243 - // If the selector is sufficiently simple, try using a "get*By*" DOM method
244 - // (excepting DocumentFragment context, where the methods don't exist)
245 - if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {
246 -
247 - // ID selector
248 - if ( (m = match[1]) ) {
249 -
250 - // Document context
251 - if ( nodeType === 9 ) {
252 - if ( (elem = context.getElementById( m )) ) {
253 -
254 - // Support: IE, Opera, Webkit
255 - // TODO: identify versions
256 - // getElementById can match elements by name instead of ID
257 - if ( elem.id === m ) {
258 - results.push( elem );
259 - return results;
260 - }
261 - } else {
262 - return results;
263 - }
264 -
265 - // Element context
266 - } else {
267 -
268 - // Support: IE, Opera, Webkit
269 - // TODO: identify versions
270 - // getElementById can match elements by name instead of ID
271 - if ( newContext && (elem = newContext.getElementById( m )) &&
272 - contains( context, elem ) &&
273 - elem.id === m ) {
274 -
275 - results.push( elem );
276 - return results;
277 - }
278 - }
279 -
280 - // Type selector
281 - } else if ( match[2] ) {
282 - push.apply( results, context.getElementsByTagName( selector ) );
283 - return results;
284 -
285 - // Class selector
286 - } else if ( (m = match[3]) && support.getElementsByClassName &&
287 - context.getElementsByClassName ) {
288 -
289 - push.apply( results, context.getElementsByClassName( m ) );
290 - return results;
291 - }
292 - }
293 -
294 - // Take advantage of querySelectorAll
295 - if ( support.qsa &&
296 - !nonnativeSelectorCache[ selector + " " ] &&
297 - (!rbuggyQSA || !rbuggyQSA.test( selector )) &&
298 -
299 - // Support: IE 8 only
300 - // Exclude object elements
301 - (nodeType !== 1 || context.nodeName.toLowerCase() !== "object") ) {
302 -
303 - newSelector = selector;
304 - newContext = context;
305 -
306 - // qSA considers elements outside a scoping root when evaluating child or
307 - // descendant combinators, which is not what we want.
308 - // In such cases, we work around the behavior by prefixing every selector in the
309 - // list with an ID selector referencing the scope context.
310 - // Thanks to Andrew Dupont for this technique.
311 - if ( nodeType === 1 && rdescend.test( selector ) ) {
312 -
313 - // Capture the context ID, setting it first if necessary
314 - if ( (nid = context.getAttribute( "id" )) ) {
315 - nid = nid.replace( rcssescape, fcssescape );
316 - } else {
317 - context.setAttribute( "id", (nid = expando) );
318 - }
319 -
320 - // Prefix every selector in the list
321 - groups = tokenize( selector );
322 - i = groups.length;
323 - while ( i-- ) {
324 - groups[i] = "#" + nid + " " + toSelector( groups[i] );
325 - }
326 - newSelector = groups.join( "," );
327 -
328 - // Expand context for sibling selectors
329 - newContext = rsibling.test( selector ) && testContext( context.parentNode ) ||
330 - context;
331 - }
332 -
333 - try {
334 - push.apply( results,
335 - newContext.querySelectorAll( newSelector )
336 - );
337 - return results;
338 - } catch ( qsaError ) {
339 - nonnativeSelectorCache( selector, true );
340 - } finally {
341 - if ( nid === expando ) {
342 - context.removeAttribute( "id" );
343 - }
344 - }
345 - }
346 - }
347 - }
348 -
349 - // All others
350 - return select( selector.replace( rtrim, "$1" ), context, results, seed );
351 - }
352 -
353 - /**
354 - * Create key-value caches of limited size
355 - * @returns {function(string, object)} Returns the Object data after storing it on itself with
356 - * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
357 - * deleting the oldest entry
358 - */
359 - function createCache() {
360 - var keys = [];
361 -
362 - function cache( key, value ) {
363 - // Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
364 - if ( keys.push( key + " " ) > Expr.cacheLength ) {
365 - // Only keep the most recent entries
366 - delete cache[ keys.shift() ];
367 - }
368 - return (cache[ key + " " ] = value);
369 - }
370 - return cache;
371 - }
372 -
373 - /**
374 - * Mark a function for special use by Sizzle
375 - * @param {Function} fn The function to mark
376 - */
377 - function markFunction( fn ) {
378 - fn[ expando ] = true;
379 - return fn;
380 - }
381 -
382 - /**
383 - * Support testing using an element
384 - * @param {Function} fn Passed the created element and returns a boolean result
385 - */
386 - function assert( fn ) {
387 - var el = document.createElement("fieldset");
388 -
389 - try {
390 - return !!fn( el );
391 - } catch (e) {
392 - return false;
393 - } finally {
394 - // Remove from its parent by default
395 - if ( el.parentNode ) {
396 - el.parentNode.removeChild( el );
397 - }
398 - // release memory in IE
399 - el = null;
400 - }
401 - }
402 -
403 - /**
404 - * Adds the same handler for all of the specified attrs
405 - * @param {String} attrs Pipe-separated list of attributes
406 - * @param {Function} handler The method that will be applied
407 - */
408 - function addHandle( attrs, handler ) {
409 - var arr = attrs.split("|"),
410 - i = arr.length;
411 -
412 - while ( i-- ) {
413 - Expr.attrHandle[ arr[i] ] = handler;
414 - }
415 - }
416 -
417 - /**
418 - * Checks document order of two siblings
419 - * @param {Element} a
420 - * @param {Element} b
421 - * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
422 - */
423 - function siblingCheck( a, b ) {
424 - var cur = b && a,
425 - diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
426 - a.sourceIndex - b.sourceIndex;
427 -
428 - // Use IE sourceIndex if available on both nodes
429 - if ( diff ) {
430 - return diff;
431 - }
432 -
433 - // Check if b follows a
434 - if ( cur ) {
435 - while ( (cur = cur.nextSibling) ) {
436 - if ( cur === b ) {
437 - return -1;
438 - }
439 - }
440 - }
441 -
442 - return a ? 1 : -1;
443 - }
444 -
445 - /**
446 - * Returns a function to use in pseudos for input types
447 - * @param {String} type
448 - */
449 - function createInputPseudo( type ) {
450 - return function( elem ) {
451 - var name = elem.nodeName.toLowerCase();
452 - return name === "input" && elem.type === type;
453 - };
454 - }
455 -
456 - /**
457 - * Returns a function to use in pseudos for buttons
458 - * @param {String} type
459 - */
460 - function createButtonPseudo( type ) {
461 - return function( elem ) {
462 - var name = elem.nodeName.toLowerCase();
463 - return (name === "input" || name === "button") && elem.type === type;
464 - };
465 - }
466 -
467 - /**
468 - * Returns a function to use in pseudos for :enabled/:disabled
469 - * @param {Boolean} disabled true for :disabled; false for :enabled
470 - */
471 - function createDisabledPseudo( disabled ) {
472 -
473 - // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable
474 - return function( elem ) {
475 -
476 - // Only certain elements can match :enabled or :disabled
477 - // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled
478 - // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled
479 - if ( "form" in elem ) {
480 -
481 - // Check for inherited disabledness on relevant non-disabled elements:
482 - // * listed form-associated elements in a disabled fieldset
483 - // https://html.spec.whatwg.org/multipage/forms.html#category-listed
484 - // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled
485 - // * option elements in a disabled optgroup
486 - // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled
487 - // All such elements have a "form" property.
488 - if ( elem.parentNode && elem.disabled === false ) {
489 -
490 - // Option elements defer to a parent optgroup if present
491 - if ( "label" in elem ) {
492 - if ( "label" in elem.parentNode ) {
493 - return elem.parentNode.disabled === disabled;
494 - } else {
495 - return elem.disabled === disabled;
496 - }
497 - }
498 -
499 - // Support: IE 6 - 11
500 - // Use the isDisabled shortcut property to check for disabled fieldset ancestors
501 - return elem.isDisabled === disabled ||
502 -
503 - // Where there is no isDisabled, check manually
504 - /* jshint -W018 */
505 - elem.isDisabled !== !disabled &&
506 - inDisabledFieldset( elem ) === disabled;
507 - }
508 -
509 - return elem.disabled === disabled;
510 -
511 - // Try to winnow out elements that can't be disabled before trusting the disabled property.
512 - // Some victims get caught in our net (label, legend, menu, track), but it shouldn't
513 - // even exist on them, let alone have a boolean value.
514 - } else if ( "label" in elem ) {
515 - return elem.disabled === disabled;
516 - }
517 -
518 - // Remaining elements are neither :enabled nor :disabled
519 - return false;
520 - };
521 - }
522 -
523 - /**
524 - * Returns a function to use in pseudos for positionals
525 - * @param {Function} fn
526 - */
527 - function createPositionalPseudo( fn ) {
528 - return markFunction(function( argument ) {
529 - argument = +argument;
530 - return markFunction(function( seed, matches ) {
531 - var j,
532 - matchIndexes = fn( [], seed.length, argument ),
533 - i = matchIndexes.length;
534 -
535 - // Match elements found at the specified indexes
536 - while ( i-- ) {
537 - if ( seed[ (j = matchIndexes[i]) ] ) {
538 - seed[j] = !(matches[j] = seed[j]);
539 - }
540 - }
541 - });
542 - });
543 - }
544 -
545 - /**
546 - * Checks a node for validity as a Sizzle context
547 - * @param {Element|Object=} context
548 - * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
549 - */
550 - function testContext( context ) {
551 - return context && typeof context.getElementsByTagName !== "undefined" && context;
552 - }
553 -
554 - // Expose support vars for convenience
555 - support = Sizzle.support = {};
556 -
557 - /**
558 - * Detects XML nodes
559 - * @param {Element|Object} elem An element or a document
560 - * @returns {Boolean} True iff elem is a non-HTML XML node
561 - */
562 - isXML = Sizzle.isXML = function( elem ) {
563 - var namespace = elem.namespaceURI,
564 - docElem = (elem.ownerDocument || elem).documentElement;
565 -
566 - // Support: IE <=8
567 - // Assume HTML when documentElement doesn't yet exist, such as inside loading iframes
568 - // https://bugs.jquery.com/ticket/4833
569 - return !rhtml.test( namespace || docElem && docElem.nodeName || "HTML" );
570 - };
571 -
572 - /**
573 - * Sets document-related variables once based on the current document
574 - * @param {Element|Object} [doc] An element or document object to use to set the document
575 - * @returns {Object} Returns the current document
576 - */
577 - setDocument = Sizzle.setDocument = function( node ) {
578 - var hasCompare, subWindow,
579 - doc = node ? node.ownerDocument || node : preferredDoc;
580 -
581 - // Return early if doc is invalid or already selected
582 - if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
583 - return document;
584 - }
585 -
586 - // Update global variables
587 - document = doc;
588 - docElem = document.documentElement;
589 - documentIsHTML = !isXML( document );
590 -
591 - // Support: IE 9-11, Edge
592 - // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936)
593 - if ( preferredDoc !== document &&
594 - (subWindow = document.defaultView) && subWindow.top !== subWindow ) {
595 -
596 - // Support: IE 11, Edge
597 - if ( subWindow.addEventListener ) {
598 - subWindow.addEventListener( "unload", unloadHandler, false );
599 -
600 - // Support: IE 9 - 10 only
601 - } else if ( subWindow.attachEvent ) {
602 - subWindow.attachEvent( "onunload", unloadHandler );
603 - }
604 - }
605 -
606 - /* Attributes
607 - ---------------------------------------------------------------------- */
608 -
609 - // Support: IE<8
610 - // Verify that getAttribute really returns attributes and not properties
611 - // (excepting IE8 booleans)
612 - support.attributes = assert(function( el ) {
613 - el.className = "i";
614 - return !el.getAttribute("className");
615 - });
616 -
617 - /* getElement(s)By*
618 - ---------------------------------------------------------------------- */
619 -
620 - // Check if getElementsByTagName("*") returns only elements
621 - support.getElementsByTagName = assert(function( el ) {
622 - el.appendChild( document.createComment("") );
623 - return !el.getElementsByTagName("*").length;
624 - });
625 -
626 - // Support: IE<9
627 - support.getElementsByClassName = rnative.test( document.getElementsByClassName );
628 -
629 - // Support: IE<10
630 - // Check if getElementById returns elements by name
631 - // The broken getElementById methods don't pick up programmatically-set names,
632 - // so use a roundabout getElementsByName test
633 - support.getById = assert(function( el ) {
634 - docElem.appendChild( el ).id = expando;
635 - return !document.getElementsByName || !document.getElementsByName( expando ).length;
636 - });
637 -
638 - // ID filter and find
639 - if ( support.getById ) {
640 - Expr.filter["ID"] = function( id ) {
641 - var attrId = id.replace( runescape, funescape );
642 - return function( elem ) {
643 - return elem.getAttribute("id") === attrId;
644 - };
645 - };
646 - Expr.find["ID"] = function( id, context ) {
647 - if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
648 - var elem = context.getElementById( id );
649 - return elem ? [ elem ] : [];
650 - }
651 - };
652 - } else {
653 - Expr.filter["ID"] = function( id ) {
654 - var attrId = id.replace( runescape, funescape );
655 - return function( elem ) {
656 - var node = typeof elem.getAttributeNode !== "undefined" &&
657 - elem.getAttributeNode("id");
658 - return node && node.value === attrId;
659 - };
660 - };
661 -
662 - // Support: IE 6 - 7 only
663 - // getElementById is not reliable as a find shortcut
664 - Expr.find["ID"] = function( id, context ) {
665 - if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
666 - var node, i, elems,
667 - elem = context.getElementById( id );
668 -
669 - if ( elem ) {
670 -
671 - // Verify the id attribute
672 - node = elem.getAttributeNode("id");
673 - if ( node && node.value === id ) {
674 - return [ elem ];
675 - }
676 -
677 - // Fall back on getElementsByName
678 - elems = context.getElementsByName( id );
679 - i = 0;
680 - while ( (elem = elems[i++]) ) {
681 - node = elem.getAttributeNode("id");
682 - if ( node && node.value === id ) {
683 - return [ elem ];
684 - }
685 - }
686 - }
687 -
688 - return [];
689 - }
690 - };
691 - }
692 -
693 - // Tag
694 - Expr.find["TAG"] = support.getElementsByTagName ?
695 - function( tag, context ) {
696 - if ( typeof context.getElementsByTagName !== "undefined" ) {
697 - return context.getElementsByTagName( tag );
698 -
699 - // DocumentFragment nodes don't have gEBTN
700 - } else if ( support.qsa ) {
701 - return context.querySelectorAll( tag );
702 - }
703 - } :
704 -
705 - function( tag, context ) {
706 - var elem,
707 - tmp = [],
708 - i = 0,
709 - // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too
710 - results = context.getElementsByTagName( tag );
711 -
712 - // Filter out possible comments
713 - if ( tag === "*" ) {
714 - while ( (elem = results[i++]) ) {
715 - if ( elem.nodeType === 1 ) {
716 - tmp.push( elem );
717 - }
718 - }
719 -
720 - return tmp;
721 - }
722 - return results;
723 - };
724 -
725 - // Class
726 - Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
727 - if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) {
728 - return context.getElementsByClassName( className );
729 - }
730 - };
731 -
732 - /* QSA/matchesSelector
733 - ---------------------------------------------------------------------- */
734 -
735 - // QSA and matchesSelector support
736 -
737 - // matchesSelector(:active) reports false when true (IE9/Opera 11.5)
738 - rbuggyMatches = [];
739 -
740 - // qSa(:focus) reports false when true (Chrome 21)
741 - // We allow this because of a bug in IE8/9 that throws an error
742 - // whenever `document.activeElement` is accessed on an iframe
743 - // So, we allow :focus to pass through QSA all the time to avoid the IE error
744 - // See https://bugs.jquery.com/ticket/13378
745 - rbuggyQSA = [];
746 -
747 - if ( (support.qsa = rnative.test( document.querySelectorAll )) ) {
748 - // Build QSA regex
749 - // Regex strategy adopted from Diego Perini
750 - assert(function( el ) {
751 - // Select is set to empty string on purpose
752 - // This is to test IE's treatment of not explicitly
753 - // setting a boolean content attribute,
754 - // since its presence should be enough
755 - // https://bugs.jquery.com/ticket/12359
756 - docElem.appendChild( el ).innerHTML = "<a id='" + expando + "'></a>" +
757 - "<select id='" + expando + "-\r\\' msallowcapture=''>" +
758 - "<option selected=''></option></select>";
759 -
760 - // Support: IE8, Opera 11-12.16
761 - // Nothing should be selected when empty strings follow ^= or $= or *=
762 - // The test attribute must be unknown in Opera but "safe" for WinRT
763 - // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
764 - if ( el.querySelectorAll("[msallowcapture^='']").length ) {
765 - rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
766 - }
767 -
768 - // Support: IE8
769 - // Boolean attributes and "value" are not treated correctly
770 - if ( !el.querySelectorAll("[selected]").length ) {
771 - rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
772 - }
773 -
774 - // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+
775 - if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
776 - rbuggyQSA.push("~=");
777 - }
778 -
779 - // Webkit/Opera - :checked should return selected option elements
780 - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
781 - // IE8 throws error here and will not see later tests
782 - if ( !el.querySelectorAll(":checked").length ) {
783 - rbuggyQSA.push(":checked");
784 - }
785 -
786 - // Support: Safari 8+, iOS 8+
787 - // https://bugs.webkit.org/show_bug.cgi?id=136851
788 - // In-page `selector#id sibling-combinator selector` fails
789 - if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) {
790 - rbuggyQSA.push(".#.+[+~]");
791 - }
792 - });
793 -
794 - assert(function( el ) {
795 - el.innerHTML = "<a href='' disabled='disabled'></a>" +
796 - "<select disabled='disabled'><option/></select>";
797 -
798 - // Support: Windows 8 Native Apps
799 - // The type and name attributes are restricted during .innerHTML assignment
800 - var input = document.createElement("input");
801 - input.setAttribute( "type", "hidden" );
802 - el.appendChild( input ).setAttribute( "name", "D" );
803 -
804 - // Support: IE8
805 - // Enforce case-sensitivity of name attribute
806 - if ( el.querySelectorAll("[name=d]").length ) {
807 - rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
808 - }
809 -
810 - // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
811 - // IE8 throws error here and will not see later tests
812 - if ( el.querySelectorAll(":enabled").length !== 2 ) {
813 - rbuggyQSA.push( ":enabled", ":disabled" );
814 - }
815 -
816 - // Support: IE9-11+
817 - // IE's :disabled selector does not pick up the children of disabled fieldsets
818 - docElem.appendChild( el ).disabled = true;
819 - if ( el.querySelectorAll(":disabled").length !== 2 ) {
820 - rbuggyQSA.push( ":enabled", ":disabled" );
821 - }
822 -
823 - // Opera 10-11 does not throw on post-comma invalid pseudos
824 - el.querySelectorAll("*,:x");
825 - rbuggyQSA.push(",.*:");
826 - });
827 - }
828 -
829 - if ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||
830 - docElem.webkitMatchesSelector ||
831 - docElem.mozMatchesSelector ||
832 - docElem.oMatchesSelector ||
833 - docElem.msMatchesSelector) )) ) {
834 -
835 - assert(function( el ) {
836 - // Check to see if it's possible to do matchesSelector
837 - // on a disconnected node (IE 9)
838 - support.disconnectedMatch = matches.call( el, "*" );
839 -
840 - // This should fail with an exception
841 - // Gecko does not error, returns false instead
842 - matches.call( el, "[s!='']:x" );
843 - rbuggyMatches.push( "!=", pseudos );
844 - });
845 - }
846 -
847 - rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
848 - rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
849 -
850 - /* Contains
851 - ---------------------------------------------------------------------- */
852 - hasCompare = rnative.test( docElem.compareDocumentPosition );
853 -
854 - // Element contains another
855 - // Purposefully self-exclusive
856 - // As in, an element does not contain itself
857 - contains = hasCompare || rnative.test( docElem.contains ) ?
858 - function( a, b ) {
859 - var adown = a.nodeType === 9 ? a.documentElement : a,
860 - bup = b && b.parentNode;
861 - return a === bup || !!( bup && bup.nodeType === 1 && (
862 - adown.contains ?
863 - adown.contains( bup ) :
864 - a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
865 - ));
866 - } :
867 - function( a, b ) {
868 - if ( b ) {
869 - while ( (b = b.parentNode) ) {
870 - if ( b === a ) {
871 - return true;
872 - }
873 - }
874 - }
875 - return false;
876 - };
877 -
878 - /* Sorting
879 - ---------------------------------------------------------------------- */
880 -
881 - // Document order sorting
882 - sortOrder = hasCompare ?
883 - function( a, b ) {
884 -
885 - // Flag for duplicate removal
886 - if ( a === b ) {
887 - hasDuplicate = true;
888 - return 0;
889 - }
890 -
891 - // Sort on method existence if only one input has compareDocumentPosition
892 - var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
893 - if ( compare ) {
894 - return compare;
895 - }
896 -
897 - // Calculate position if both inputs belong to the same document
898 - compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
899 - a.compareDocumentPosition( b ) :
900 -
901 - // Otherwise we know they are disconnected
902 - 1;
903 -
904 - // Disconnected nodes
905 - if ( compare & 1 ||
906 - (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
907 -
908 - // Choose the first element that is related to our preferred document
909 - if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {
910 - return -1;
911 - }
912 - if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {
913 - return 1;
914 - }
915 -
916 - // Maintain original order
917 - return sortInput ?
918 - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
919 - 0;
920 - }
921 -
922 - return compare & 4 ? -1 : 1;
923 - } :
924 - function( a, b ) {
925 - // Exit early if the nodes are identical
926 - if ( a === b ) {
927 - hasDuplicate = true;
928 - return 0;
929 - }
930 -
931 - var cur,
932 - i = 0,
933 - aup = a.parentNode,
934 - bup = b.parentNode,
935 - ap = [ a ],
936 - bp = [ b ];
937 -
938 - // Parentless nodes are either documents or disconnected
939 - if ( !aup || !bup ) {
940 - return a === document ? -1 :
941 - b === document ? 1 :
942 - aup ? -1 :
943 - bup ? 1 :
944 - sortInput ?
945 - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
946 - 0;
947 -
948 - // If the nodes are siblings, we can do a quick check
949 - } else if ( aup === bup ) {
950 - return siblingCheck( a, b );
951 - }
952 -
953 - // Otherwise we need full lists of their ancestors for comparison
954 - cur = a;
955 - while ( (cur = cur.parentNode) ) {
956 - ap.unshift( cur );
957 - }
958 - cur = b;
959 - while ( (cur = cur.parentNode) ) {
960 - bp.unshift( cur );
961 - }
962 -
963 - // Walk down the tree looking for a discrepancy
964 - while ( ap[i] === bp[i] ) {
965 - i++;
966 - }
967 -
968 - return i ?
969 - // Do a sibling check if the nodes have a common ancestor
970 - siblingCheck( ap[i], bp[i] ) :
971 -
972 - // Otherwise nodes in our document sort first
973 - ap[i] === preferredDoc ? -1 :
974 - bp[i] === preferredDoc ? 1 :
975 - 0;
976 - };
977 -
978 - return document;
979 - };
980 -
981 - Sizzle.matches = function( expr, elements ) {
982 - return Sizzle( expr, null, null, elements );
983 - };
984 -
985 - Sizzle.matchesSelector = function( elem, expr ) {
986 - // Set document vars if needed
987 - if ( ( elem.ownerDocument || elem ) !== document ) {
988 - setDocument( elem );
989 - }
990 -
991 - if ( support.matchesSelector && documentIsHTML &&
992 - !nonnativeSelectorCache[ expr + " " ] &&
993 - ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
994 - ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {
995 -
996 - try {
997 - var ret = matches.call( elem, expr );
998 -
999 - // IE 9's matchesSelector returns false on disconnected nodes
1000 - if ( ret || support.disconnectedMatch ||
1001 - // As well, disconnected nodes are said to be in a document
1002 - // fragment in IE 9
1003 - elem.document && elem.document.nodeType !== 11 ) {
1004 - return ret;
1005 - }
1006 - } catch (e) {
1007 - nonnativeSelectorCache( expr, true );
1008 - }
1009 - }
1010 -
1011 - return Sizzle( expr, document, null, [ elem ] ).length > 0;
1012 - };
1013 -
1014 - Sizzle.contains = function( context, elem ) {
1015 - // Set document vars if needed
1016 - if ( ( context.ownerDocument || context ) !== document ) {
1017 - setDocument( context );
1018 - }
1019 - return contains( context, elem );
1020 - };
1021 -
1022 - Sizzle.attr = function( elem, name ) {
1023 - // Set document vars if needed
1024 - if ( ( elem.ownerDocument || elem ) !== document ) {
1025 - setDocument( elem );
1026 - }
1027 -
1028 - var fn = Expr.attrHandle[ name.toLowerCase() ],
1029 - // Don't get fooled by Object.prototype properties (jQuery #13807)
1030 - val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
1031 - fn( elem, name, !documentIsHTML ) :
1032 - undefined;
1033 -
1034 - return val !== undefined ?
1035 - val :
1036 - support.attributes || !documentIsHTML ?
1037 - elem.getAttribute( name ) :
1038 - (val = elem.getAttributeNode(name)) && val.specified ?
1039 - val.value :
1040 - null;
1041 - };
1042 -
1043 - Sizzle.escape = function( sel ) {
1044 - return (sel + "").replace( rcssescape, fcssescape );
1045 - };
1046 -
1047 - Sizzle.error = function( msg ) {
1048 - throw new Error( "Syntax error, unrecognized expression: " + msg );
1049 - };
1050 -
1051 - /**
1052 - * Document sorting and removing duplicates
1053 - * @param {ArrayLike} results
1054 - */
1055 - Sizzle.uniqueSort = function( results ) {
1056 - var elem,
1057 - duplicates = [],
1058 - j = 0,
1059 - i = 0;
1060 -
1061 - // Unless we *know* we can detect duplicates, assume their presence
1062 - hasDuplicate = !support.detectDuplicates;
1063 - sortInput = !support.sortStable && results.slice( 0 );
1064 - results.sort( sortOrder );
1065 -
1066 - if ( hasDuplicate ) {
1067 - while ( (elem = results[i++]) ) {
1068 - if ( elem === results[ i ] ) {
1069 - j = duplicates.push( i );
1070 - }
1071 - }
1072 - while ( j-- ) {
1073 - results.splice( duplicates[ j ], 1 );
1074 - }
1075 - }
1076 -
1077 - // Clear input after sorting to release objects
1078 - // See https://github.com/jquery/sizzle/pull/225
1079 - sortInput = null;
1080 -
1081 - return results;
1082 - };
1083 -
1084 - /**
1085 - * Utility function for retrieving the text value of an array of DOM nodes
1086 - * @param {Array|Element} elem
1087 - */
1088 - getText = Sizzle.getText = function( elem ) {
1089 - var node,
1090 - ret = "",
1091 - i = 0,
1092 - nodeType = elem.nodeType;
1093 -
1094 - if ( !nodeType ) {
1095 - // If no nodeType, this is expected to be an array
1096 - while ( (node = elem[i++]) ) {
1097 - // Do not traverse comment nodes
1098 - ret += getText( node );
1099 - }
1100 - } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
1101 - // Use textContent for elements
1102 - // innerText usage removed for consistency of new lines (jQuery #11153)
1103 - if ( typeof elem.textContent === "string" ) {
1104 - return elem.textContent;
1105 - } else {
1106 - // Traverse its children
1107 - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
1108 - ret += getText( elem );
1109 - }
1110 - }
1111 - } else if ( nodeType === 3 || nodeType === 4 ) {
1112 - return elem.nodeValue;
1113 - }
1114 - // Do not include comment or processing instruction nodes
1115 -
1116 - return ret;
1117 - };
1118 -
1119 - Expr = Sizzle.selectors = {
1120 -
1121 - // Can be adjusted by the user
1122 - cacheLength: 50,
1123 -
1124 - createPseudo: markFunction,
1125 -
1126 - match: matchExpr,
1127 -
1128 - attrHandle: {},
1129 -
1130 - find: {},
1131 -
1132 - relative: {
1133 - ">": { dir: "parentNode", first: true },
1134 - " ": { dir: "parentNode" },
1135 - "+": { dir: "previousSibling", first: true },
1136 - "~": { dir: "previousSibling" }
1137 - },
1138 -
1139 - preFilter: {
1140 - "ATTR": function( match ) {
1141 - match[1] = match[1].replace( runescape, funescape );
1142 -
1143 - // Move the given value to match[3] whether quoted or unquoted
1144 - match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape );
1145 -
1146 - if ( match[2] === "~=" ) {
1147 - match[3] = " " + match[3] + " ";
1148 - }
1149 -
1150 - return match.slice( 0, 4 );
1151 - },
1152 -
1153 - "CHILD": function( match ) {
1154 - /* matches from matchExpr["CHILD"]
1155 - 1 type (only|nth|...)
1156 - 2 what (child|of-type)
1157 - 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
1158 - 4 xn-component of xn+y argument ([+-]?\d*n|)
1159 - 5 sign of xn-component
1160 - 6 x of xn-component
1161 - 7 sign of y-component
1162 - 8 y of y-component
1163 - */
1164 - match[1] = match[1].toLowerCase();
1165 -
1166 - if ( match[1].slice( 0, 3 ) === "nth" ) {
1167 - // nth-* requires argument
1168 - if ( !match[3] ) {
1169 - Sizzle.error( match[0] );
1170 - }
1171 -
1172 - // numeric x and y parameters for Expr.filter.CHILD
1173 - // remember that false/true cast respectively to 0/1
1174 - match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
1175 - match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
1176 -
1177 - // other types prohibit arguments
1178 - } else if ( match[3] ) {
1179 - Sizzle.error( match[0] );
1180 - }
1181 -
1182 - return match;
1183 - },
1184 -
1185 - "PSEUDO": function( match ) {
1186 - var excess,
1187 - unquoted = !match[6] && match[2];
1188 -
1189 - if ( matchExpr["CHILD"].test( match[0] ) ) {
1190 - return null;
1191 - }
1192 -
1193 - // Accept quoted arguments as-is
1194 - if ( match[3] ) {
1195 - match[2] = match[4] || match[5] || "";
1196 -
1197 - // Strip excess characters from unquoted arguments
1198 - } else if ( unquoted && rpseudo.test( unquoted ) &&
1199 - // Get excess from tokenize (recursively)
1200 - (excess = tokenize( unquoted, true )) &&
1201 - // advance to the next closing parenthesis
1202 - (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
1203 -
1204 - // excess is a negative index
1205 - match[0] = match[0].slice( 0, excess );
1206 - match[2] = unquoted.slice( 0, excess );
1207 - }
1208 -
1209 - // Return only captures needed by the pseudo filter method (type and argument)
1210 - return match.slice( 0, 3 );
1211 - }
1212 - },
1213 -
1214 - filter: {
1215 -
1216 - "TAG": function( nodeNameSelector ) {
1217 - var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
1218 - return nodeNameSelector === "*" ?
1219 - function() { return true; } :
1220 - function( elem ) {
1221 - return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
1222 - };
1223 - },
1224 -
1225 - "CLASS": function( className ) {
1226 - var pattern = classCache[ className + " " ];
1227 -
1228 - return pattern ||
1229 - (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
1230 - classCache( className, function( elem ) {
1231 - return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" );
1232 - });
1233 - },
1234 -
1235 - "ATTR": function( name, operator, check ) {
1236 - return function( elem ) {
1237 - var result = Sizzle.attr( elem, name );
1238 -
1239 - if ( result == null ) {
1240 - return operator === "!=";
1241 - }
1242 - if ( !operator ) {
1243 - return true;
1244 - }
1245 -
1246 - result += "";
1247 -
1248 - return operator === "=" ? result === check :
1249 - operator === "!=" ? result !== check :
1250 - operator === "^=" ? check && result.indexOf( check ) === 0 :
1251 - operator === "*=" ? check && result.indexOf( check ) > -1 :
1252 - operator === "$=" ? check && result.slice( -check.length ) === check :
1253 - operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 :
1254 - operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
1255 - false;
1256 - };
1257 - },
1258 -
1259 - "CHILD": function( type, what, argument, first, last ) {
1260 - var simple = type.slice( 0, 3 ) !== "nth",
1261 - forward = type.slice( -4 ) !== "last",
1262 - ofType = what === "of-type";
1263 -
1264 - return first === 1 && last === 0 ?
1265 -
1266 - // Shortcut for :nth-*(n)
1267 - function( elem ) {
1268 - return !!elem.parentNode;
1269 - } :
1270 -
1271 - function( elem, context, xml ) {
1272 - var cache, uniqueCache, outerCache, node, nodeIndex, start,
1273 - dir = simple !== forward ? "nextSibling" : "previousSibling",
1274 - parent = elem.parentNode,
1275 - name = ofType && elem.nodeName.toLowerCase(),
1276 - useCache = !xml && !ofType,
1277 - diff = false;
1278 -
1279 - if ( parent ) {
1280 -
1281 - // :(first|last|only)-(child|of-type)
1282 - if ( simple ) {
1283 - while ( dir ) {
1284 - node = elem;
1285 - while ( (node = node[ dir ]) ) {
1286 - if ( ofType ?
1287 - node.nodeName.toLowerCase() === name :
1288 - node.nodeType === 1 ) {
1289 -
1290 - return false;
1291 - }
1292 - }
1293 - // Reverse direction for :only-* (if we haven't yet done so)
1294 - start = dir = type === "only" && !start && "nextSibling";
1295 - }
1296 - return true;
1297 - }
1298 -
1299 - start = [ forward ? parent.firstChild : parent.lastChild ];
1300 -
1301 - // non-xml :nth-child(...) stores cache data on `parent`
1302 - if ( forward && useCache ) {
1303 -
1304 - // Seek `elem` from a previously-cached index
1305 -
1306 - // ...in a gzip-friendly way
1307 - node = parent;
1308 - outerCache = node[ expando ] || (node[ expando ] = {});
1309 -
1310 - // Support: IE <9 only
1311 - // Defend against cloned attroperties (jQuery gh-1709)
1312 - uniqueCache = outerCache[ node.uniqueID ] ||
1313 - (outerCache[ node.uniqueID ] = {});
1314 -
1315 - cache = uniqueCache[ type ] || [];
1316 - nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
1317 - diff = nodeIndex && cache[ 2 ];
1318 - node = nodeIndex && parent.childNodes[ nodeIndex ];
1319 -
1320 - while ( (node = ++nodeIndex && node && node[ dir ] ||
1321 -
1322 - // Fallback to seeking `elem` from the start
1323 - (diff = nodeIndex = 0) || start.pop()) ) {
1324 -
1325 - // When found, cache indexes on `parent` and break
1326 - if ( node.nodeType === 1 && ++diff && node === elem ) {
1327 - uniqueCache[ type ] = [ dirruns, nodeIndex, diff ];
1328 - break;
1329 - }
1330 - }
1331 -
1332 - } else {
1333 - // Use previously-cached element index if available
1334 - if ( useCache ) {
1335 - // ...in a gzip-friendly way
1336 - node = elem;
1337 - outerCache = node[ expando ] || (node[ expando ] = {});
1338 -
1339 - // Support: IE <9 only
1340 - // Defend against cloned attroperties (jQuery gh-1709)
1341 - uniqueCache = outerCache[ node.uniqueID ] ||
1342 - (outerCache[ node.uniqueID ] = {});
1343 -
1344 - cache = uniqueCache[ type ] || [];
1345 - nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
1346 - diff = nodeIndex;
1347 - }
1348 -
1349 - // xml :nth-child(...)
1350 - // or :nth-last-child(...) or :nth(-last)?-of-type(...)
1351 - if ( diff === false ) {
1352 - // Use the same loop as above to seek `elem` from the start
1353 - while ( (node = ++nodeIndex && node && node[ dir ] ||
1354 - (diff = nodeIndex = 0) || start.pop()) ) {
1355 -
1356 - if ( ( ofType ?
1357 - node.nodeName.toLowerCase() === name :
1358 - node.nodeType === 1 ) &&
1359 - ++diff ) {
1360 -
1361 - // Cache the index of each encountered element
1362 - if ( useCache ) {
1363 - outerCache = node[ expando ] || (node[ expando ] = {});
1364 -
1365 - // Support: IE <9 only
1366 - // Defend against cloned attroperties (jQuery gh-1709)
1367 - uniqueCache = outerCache[ node.uniqueID ] ||
1368 - (outerCache[ node.uniqueID ] = {});
1369 -
1370 - uniqueCache[ type ] = [ dirruns, diff ];
1371 - }
1372 -
1373 - if ( node === elem ) {
1374 - break;
1375 - }
1376 - }
1377 - }
1378 - }
1379 - }
1380 -
1381 - // Incorporate the offset, then check against cycle size
1382 - diff -= last;
1383 - return diff === first || ( diff % first === 0 && diff / first >= 0 );
1384 - }
1385 - };
1386 - },
1387 -
1388 - "PSEUDO": function( pseudo, argument ) {
1389 - // pseudo-class names are case-insensitive
1390 - // http://www.w3.org/TR/selectors/#pseudo-classes
1391 - // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
1392 - // Remember that setFilters inherits from pseudos
1393 - var args,
1394 - fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
1395 - Sizzle.error( "unsupported pseudo: " + pseudo );
1396 -
1397 - // The user may use createPseudo to indicate that
1398 - // arguments are needed to create the filter function
1399 - // just as Sizzle does
1400 - if ( fn[ expando ] ) {
1401 - return fn( argument );
1402 - }
1403 -
1404 - // But maintain support for old signatures
1405 - if ( fn.length > 1 ) {
1406 - args = [ pseudo, pseudo, "", argument ];
1407 - return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
1408 - markFunction(function( seed, matches ) {
1409 - var idx,
1410 - matched = fn( seed, argument ),
1411 - i = matched.length;
1412 - while ( i-- ) {
1413 - idx = indexOf( seed, matched[i] );
1414 - seed[ idx ] = !( matches[ idx ] = matched[i] );
1415 - }
1416 - }) :
1417 - function( elem ) {
1418 - return fn( elem, 0, args );
1419 - };
1420 - }
1421 -
1422 - return fn;
1423 - }
1424 - },
1425 -
1426 - pseudos: {
1427 - // Potentially complex pseudos
1428 - "not": markFunction(function( selector ) {
1429 - // Trim the selector passed to compile
1430 - // to avoid treating leading and trailing
1431 - // spaces as combinators
1432 - var input = [],
1433 - results = [],
1434 - matcher = compile( selector.replace( rtrim, "$1" ) );
1435 -
1436 - return matcher[ expando ] ?
1437 - markFunction(function( seed, matches, context, xml ) {
1438 - var elem,
1439 - unmatched = matcher( seed, null, xml, [] ),
1440 - i = seed.length;
1441 -
1442 - // Match elements unmatched by `matcher`
1443 - while ( i-- ) {
1444 - if ( (elem = unmatched[i]) ) {
1445 - seed[i] = !(matches[i] = elem);
1446 - }
1447 - }
1448 - }) :
1449 - function( elem, context, xml ) {
1450 - input[0] = elem;
1451 - matcher( input, null, xml, results );
1452 - // Don't keep the element (issue #299)
1453 - input[0] = null;
1454 - return !results.pop();
1455 - };
1456 - }),
1457 -
1458 - "has": markFunction(function( selector ) {
1459 - return function( elem ) {
1460 - return Sizzle( selector, elem ).length > 0;
1461 - };
1462 - }),
1463 -
1464 - "contains": markFunction(function( text ) {
1465 - text = text.replace( runescape, funescape );
1466 - return function( elem ) {
1467 - return ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;
1468 - };
1469 - }),
1470 -
1471 - // "Whether an element is represented by a :lang() selector
1472 - // is based solely on the element's language value
1473 - // being equal to the identifier C,
1474 - // or beginning with the identifier C immediately followed by "-".
1475 - // The matching of C against the element's language value is performed case-insensitively.
1476 - // The identifier C does not have to be a valid language name."
1477 - // http://www.w3.org/TR/selectors/#lang-pseudo
1478 - "lang": markFunction( function( lang ) {
1479 - // lang value must be a valid identifier
1480 - if ( !ridentifier.test(lang || "") ) {
1481 - Sizzle.error( "unsupported lang: " + lang );
1482 - }
1483 - lang = lang.replace( runescape, funescape ).toLowerCase();
1484 - return function( elem ) {
1485 - var elemLang;
1486 - do {
1487 - if ( (elemLang = documentIsHTML ?
1488 - elem.lang :
1489 - elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {
1490 -
1491 - elemLang = elemLang.toLowerCase();
1492 - return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
1493 - }
1494 - } while ( (elem = elem.parentNode) && elem.nodeType === 1 );
1495 - return false;
1496 - };
1497 - }),
1498 -
1499 - // Miscellaneous
1500 - "target": function( elem ) {
1501 - var hash = window.location && window.location.hash;
1502 - return hash && hash.slice( 1 ) === elem.id;
1503 - },
1504 -
1505 - "root": function( elem ) {
1506 - return elem === docElem;
1507 - },
1508 -
1509 - "focus": function( elem ) {
1510 - return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
1511 - },
1512 -
1513 - // Boolean properties
1514 - "enabled": createDisabledPseudo( false ),
1515 - "disabled": createDisabledPseudo( true ),
1516 -
1517 - "checked": function( elem ) {
1518 - // In CSS3, :checked should return both checked and selected elements
1519 - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
1520 - var nodeName = elem.nodeName.toLowerCase();
1521 - return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
1522 - },
1523 -
1524 - "selected": function( elem ) {
1525 - // Accessing this property makes selected-by-default
1526 - // options in Safari work properly
1527 - if ( elem.parentNode ) {
1528 - elem.parentNode.selectedIndex;
1529 - }
1530 -
1531 - return elem.selected === true;
1532 - },
1533 -
1534 - // Contents
1535 - "empty": function( elem ) {
1536 - // http://www.w3.org/TR/selectors/#empty-pseudo
1537 - // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
1538 - // but not by others (comment: 8; processing instruction: 7; etc.)
1539 - // nodeType < 6 works because attributes (2) do not appear as children
1540 - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
1541 - if ( elem.nodeType < 6 ) {
1542 - return false;
1543 - }
1544 - }
1545 - return true;
1546 - },
1547 -
1548 - "parent": function( elem ) {
1549 - return !Expr.pseudos["empty"]( elem );
1550 - },
1551 -
1552 - // Element/input types
1553 - "header": function( elem ) {
1554 - return rheader.test( elem.nodeName );
1555 - },
1556 -
1557 - "input": function( elem ) {
1558 - return rinputs.test( elem.nodeName );
1559 - },
1560 -
1561 - "button": function( elem ) {
1562 - var name = elem.nodeName.toLowerCase();
1563 - return name === "input" && elem.type === "button" || name === "button";
1564 - },
1565 -
1566 - "text": function( elem ) {
1567 - var attr;
1568 - return elem.nodeName.toLowerCase() === "input" &&
1569 - elem.type === "text" &&
1570 -
1571 - // Support: IE<8
1572 - // New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
1573 - ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" );
1574 - },
1575 -
1576 - // Position-in-collection
1577 - "first": createPositionalPseudo(function() {
1578 - return [ 0 ];
1579 - }),
1580 -
1581 - "last": createPositionalPseudo(function( matchIndexes, length ) {
1582 - return [ length - 1 ];
1583 - }),
1584 -
1585 - "eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
1586 - return [ argument < 0 ? argument + length : argument ];
1587 - }),
1588 -
1589 - "even": createPositionalPseudo(function( matchIndexes, length ) {
1590 - var i = 0;
1591 - for ( ; i < length; i += 2 ) {
1592 - matchIndexes.push( i );
1593 - }
1594 - return matchIndexes;
1595 - }),
1596 -
1597 - "odd": createPositionalPseudo(function( matchIndexes, length ) {
1598 - var i = 1;
1599 - for ( ; i < length; i += 2 ) {
1600 - matchIndexes.push( i );
1601 - }
1602 - return matchIndexes;
1603 - }),
1604 -
1605 - "lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
1606 - var i = argument < 0 ?
1607 - argument + length :
1608 - argument > length ?
1609 - length :
1610 - argument;
1611 - for ( ; --i >= 0; ) {
1612 - matchIndexes.push( i );
1613 - }
1614 - return matchIndexes;
1615 - }),
1616 -
1617 - "gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
1618 - var i = argument < 0 ? argument + length : argument;
1619 - for ( ; ++i < length; ) {
1620 - matchIndexes.push( i );
1621 - }
1622 - return matchIndexes;
1623 - })
1624 - }
1625 - };
1626 -
1627 - Expr.pseudos["nth"] = Expr.pseudos["eq"];
1628 -
1629 - // Add button/input type pseudos
1630 - for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
1631 - Expr.pseudos[ i ] = createInputPseudo( i );
1632 - }
1633 - for ( i in { submit: true, reset: true } ) {
1634 - Expr.pseudos[ i ] = createButtonPseudo( i );
1635 - }
1636 -
1637 - // Easy API for creating new setFilters
1638 - function setFilters() {}
1639 - setFilters.prototype = Expr.filters = Expr.pseudos;
1640 - Expr.setFilters = new setFilters();
1641 -
1642 - tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
1643 - var matched, match, tokens, type,
1644 - soFar, groups, preFilters,
1645 - cached = tokenCache[ selector + " " ];
1646 -
1647 - if ( cached ) {
1648 - return parseOnly ? 0 : cached.slice( 0 );
1649 - }
1650 -
1651 - soFar = selector;
1652 - groups = [];
1653 - preFilters = Expr.preFilter;
1654 -
1655 - while ( soFar ) {
1656 -
1657 - // Comma and first run
1658 - if ( !matched || (match = rcomma.exec( soFar )) ) {
1659 - if ( match ) {
1660 - // Don't consume trailing commas as valid
1661 - soFar = soFar.slice( match[0].length ) || soFar;
1662 - }
1663 - groups.push( (tokens = []) );
1664 - }
1665 -
1666 - matched = false;
1667 -
1668 - // Combinators
1669 - if ( (match = rcombinators.exec( soFar )) ) {
1670 - matched = match.shift();
1671 - tokens.push({
1672 - value: matched,
1673 - // Cast descendant combinators to space
1674 - type: match[0].replace( rtrim, " " )
1675 - });
1676 - soFar = soFar.slice( matched.length );
1677 - }
1678 -
1679 - // Filters
1680 - for ( type in Expr.filter ) {
1681 - if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
1682 - (match = preFilters[ type ]( match ))) ) {
1683 - matched = match.shift();
1684 - tokens.push({
1685 - value: matched,
1686 - type: type,
1687 - matches: match
1688 - });
1689 - soFar = soFar.slice( matched.length );
1690 - }
1691 - }
1692 -
1693 - if ( !matched ) {
1694 - break;
1695 - }
1696 - }
1697 -
1698 - // Return the length of the invalid excess
1699 - // if we're just parsing
1700 - // Otherwise, throw an error or return tokens
1701 - return parseOnly ?
1702 - soFar.length :
1703 - soFar ?
1704 - Sizzle.error( selector ) :
1705 - // Cache the tokens
1706 - tokenCache( selector, groups ).slice( 0 );
1707 - };
1708 -
1709 - function toSelector( tokens ) {
1710 - var i = 0,
1711 - len = tokens.length,
1712 - selector = "";
1713 - for ( ; i < len; i++ ) {
1714 - selector += tokens[i].value;
1715 - }
1716 - return selector;
1717 - }
1718 -
1719 - function addCombinator( matcher, combinator, base ) {
1720 - var dir = combinator.dir,
1721 - skip = combinator.next,
1722 - key = skip || dir,
1723 - checkNonElements = base && key === "parentNode",
1724 - doneName = done++;
1725 -
1726 - return combinator.first ?
1727 - // Check against closest ancestor/preceding element
1728 - function( elem, context, xml ) {
1729 - while ( (elem = elem[ dir ]) ) {
1730 - if ( elem.nodeType === 1 || checkNonElements ) {
1731 - return matcher( elem, context, xml );
1732 - }
1733 - }
1734 - return false;
1735 - } :
1736 -
1737 - // Check against all ancestor/preceding elements
1738 - function( elem, context, xml ) {
1739 - var oldCache, uniqueCache, outerCache,
1740 - newCache = [ dirruns, doneName ];
1741 -
1742 - // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching
1743 - if ( xml ) {
1744 - while ( (elem = elem[ dir ]) ) {
1745 - if ( elem.nodeType === 1 || checkNonElements ) {
1746 - if ( matcher( elem, context, xml ) ) {
1747 - return true;
1748 - }
1749 - }
1750 - }
1751 - } else {
1752 - while ( (elem = elem[ dir ]) ) {
1753 - if ( elem.nodeType === 1 || checkNonElements ) {
1754 - outerCache = elem[ expando ] || (elem[ expando ] = {});
1755 -
1756 - // Support: IE <9 only
1757 - // Defend against cloned attroperties (jQuery gh-1709)
1758 - uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});
1759 -
1760 - if ( skip && skip === elem.nodeName.toLowerCase() ) {
1761 - elem = elem[ dir ] || elem;
1762 - } else if ( (oldCache = uniqueCache[ key ]) &&
1763 - oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
1764 -
1765 - // Assign to newCache so results back-propagate to previous elements
1766 - return (newCache[ 2 ] = oldCache[ 2 ]);
1767 - } else {
1768 - // Reuse newcache so results back-propagate to previous elements
1769 - uniqueCache[ key ] = newCache;
1770 -
1771 - // A match means we're done; a fail means we have to keep checking
1772 - if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {
1773 - return true;
1774 - }
1775 - }
1776 - }
1777 - }
1778 - }
1779 - return false;
1780 - };
1781 - }
1782 -
1783 - function elementMatcher( matchers ) {
1784 - return matchers.length > 1 ?
1785 - function( elem, context, xml ) {
1786 - var i = matchers.length;
1787 - while ( i-- ) {
1788 - if ( !matchers[i]( elem, context, xml ) ) {
1789 - return false;
1790 - }
1791 - }
1792 - return true;
1793 - } :
1794 - matchers[0];
1795 - }
1796 -
1797 - function multipleContexts( selector, contexts, results ) {
1798 - var i = 0,
1799 - len = contexts.length;
1800 - for ( ; i < len; i++ ) {
1801 - Sizzle( selector, contexts[i], results );
1802 - }
1803 - return results;
1804 - }
1805 -
1806 - function condense( unmatched, map, filter, context, xml ) {
1807 - var elem,
1808 - newUnmatched = [],
1809 - i = 0,
1810 - len = unmatched.length,
1811 - mapped = map != null;
1812 -
1813 - for ( ; i < len; i++ ) {
1814 - if ( (elem = unmatched[i]) ) {
1815 - if ( !filter || filter( elem, context, xml ) ) {
1816 - newUnmatched.push( elem );
1817 - if ( mapped ) {
1818 - map.push( i );
1819 - }
1820 - }
1821 - }
1822 - }
1823 -
1824 - return newUnmatched;
1825 - }
1826 -
1827 - function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
1828 - if ( postFilter && !postFilter[ expando ] ) {
1829 - postFilter = setMatcher( postFilter );
1830 - }
1831 - if ( postFinder && !postFinder[ expando ] ) {
1832 - postFinder = setMatcher( postFinder, postSelector );
1833 - }
1834 - return markFunction(function( seed, results, context, xml ) {
1835 - var temp, i, elem,
1836 - preMap = [],
1837 - postMap = [],
1838 - preexisting = results.length,
1839 -
1840 - // Get initial elements from seed or context
1841 - elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
1842 -
1843 - // Prefilter to get matcher input, preserving a map for seed-results synchronization
1844 - matcherIn = preFilter && ( seed || !selector ) ?
1845 - condense( elems, preMap, preFilter, context, xml ) :
1846 - elems,
1847 -
1848 - matcherOut = matcher ?
1849 - // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
1850 - postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
1851 -
1852 - // ...intermediate processing is necessary
1853 - [] :
1854 -
1855 - // ...otherwise use results directly
1856 - results :
1857 - matcherIn;
1858 -
1859 - // Find primary matches
1860 - if ( matcher ) {
1861 - matcher( matcherIn, matcherOut, context, xml );
1862 - }
1863 -
1864 - // Apply postFilter
1865 - if ( postFilter ) {
1866 - temp = condense( matcherOut, postMap );
1867 - postFilter( temp, [], context, xml );
1868 -
1869 - // Un-match failing elements by moving them back to matcherIn
1870 - i = temp.length;
1871 - while ( i-- ) {
1872 - if ( (elem = temp[i]) ) {
1873 - matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
1874 - }
1875 - }
1876 - }
1877 -
1878 - if ( seed ) {
1879 - if ( postFinder || preFilter ) {
1880 - if ( postFinder ) {
1881 - // Get the final matcherOut by condensing this intermediate into postFinder contexts
1882 - temp = [];
1883 - i = matcherOut.length;
1884 - while ( i-- ) {
1885 - if ( (elem = matcherOut[i]) ) {
1886 - // Restore matcherIn since elem is not yet a final match
1887 - temp.push( (matcherIn[i] = elem) );
1888 - }
1889 - }
1890 - postFinder( null, (matcherOut = []), temp, xml );
1891 - }
1892 -
1893 - // Move matched elements from seed to results to keep them synchronized
1894 - i = matcherOut.length;
1895 - while ( i-- ) {
1896 - if ( (elem = matcherOut[i]) &&
1897 - (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {
1898 -
1899 - seed[temp] = !(results[temp] = elem);
1900 - }
1901 - }
1902 - }
1903 -
1904 - // Add elements to results, through postFinder if defined
1905 - } else {
1906 - matcherOut = condense(
1907 - matcherOut === results ?
1908 - matcherOut.splice( preexisting, matcherOut.length ) :
1909 - matcherOut
1910 - );
1911 - if ( postFinder ) {
1912 - postFinder( null, results, matcherOut, xml );
1913 - } else {
1914 - push.apply( results, matcherOut );
1915 - }
1916 - }
1917 - });
1918 - }
1919 -
1920 - function matcherFromTokens( tokens ) {
1921 - var checkContext, matcher, j,
1922 - len = tokens.length,
1923 - leadingRelative = Expr.relative[ tokens[0].type ],
1924 - implicitRelative = leadingRelative || Expr.relative[" "],
1925 - i = leadingRelative ? 1 : 0,
1926 -
1927 - // The foundational matcher ensures that elements are reachable from top-level context(s)
1928 - matchContext = addCombinator( function( elem ) {
1929 - return elem === checkContext;
1930 - }, implicitRelative, true ),
1931 - matchAnyContext = addCombinator( function( elem ) {
1932 - return indexOf( checkContext, elem ) > -1;
1933 - }, implicitRelative, true ),
1934 - matchers = [ function( elem, context, xml ) {
1935 - var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
1936 - (checkContext = context).nodeType ?
1937 - matchContext( elem, context, xml ) :
1938 - matchAnyContext( elem, context, xml ) );
1939 - // Avoid hanging onto element (issue #299)
1940 - checkContext = null;
1941 - return ret;
1942 - } ];
1943 -
1944 - for ( ; i < len; i++ ) {
1945 - if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
1946 - matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
1947 - } else {
1948 - matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
1949 -
1950 - // Return special upon seeing a positional matcher
1951 - if ( matcher[ expando ] ) {
1952 - // Find the next relative operator (if any) for proper handling
1953 - j = ++i;
1954 - for ( ; j < len; j++ ) {
1955 - if ( Expr.relative[ tokens[j].type ] ) {
1956 - break;
1957 - }
1958 - }
1959 - return setMatcher(
1960 - i > 1 && elementMatcher( matchers ),
1961 - i > 1 && toSelector(
1962 - // If the preceding token was a descendant combinator, insert an implicit any-element `*`
1963 - tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })
1964 - ).replace( rtrim, "$1" ),
1965 - matcher,
1966 - i < j && matcherFromTokens( tokens.slice( i, j ) ),
1967 - j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
1968 - j < len && toSelector( tokens )
1969 - );
1970 - }
1971 - matchers.push( matcher );
1972 - }
1973 - }
1974 -
1975 - return elementMatcher( matchers );
1976 - }
1977 -
1978 - function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
1979 - var bySet = setMatchers.length > 0,
1980 - byElement = elementMatchers.length > 0,
1981 - superMatcher = function( seed, context, xml, results, outermost ) {
1982 - var elem, j, matcher,
1983 - matchedCount = 0,
1984 - i = "0",
1985 - unmatched = seed && [],
1986 - setMatched = [],
1987 - contextBackup = outermostContext,
1988 - // We must always have either seed elements or outermost context
1989 - elems = seed || byElement && Expr.find["TAG"]( "*", outermost ),
1990 - // Use integer dirruns iff this is the outermost matcher
1991 - dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),
1992 - len = elems.length;
1993 -
1994 - if ( outermost ) {
1995 - outermostContext = context === document || context || outermost;
1996 - }
1997 -
1998 - // Add elements passing elementMatchers directly to results
1999 - // Support: IE<9, Safari
2000 - // Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
2001 - for ( ; i !== len && (elem = elems[i]) != null; i++ ) {
2002 - if ( byElement && elem ) {
2003 - j = 0;
2004 - if ( !context && elem.ownerDocument !== document ) {
2005 - setDocument( elem );
2006 - xml = !documentIsHTML;
2007 - }
2008 - while ( (matcher = elementMatchers[j++]) ) {
2009 - if ( matcher( elem, context || document, xml) ) {
2010 - results.push( elem );
2011 - break;
2012 - }
2013 - }
2014 - if ( outermost ) {
2015 - dirruns = dirrunsUnique;
2016 - }
2017 - }
2018 -
2019 - // Track unmatched elements for set filters
2020 - if ( bySet ) {
2021 - // They will have gone through all possible matchers
2022 - if ( (elem = !matcher && elem) ) {
2023 - matchedCount--;
2024 - }
2025 -
2026 - // Lengthen the array for every element, matched or not
2027 - if ( seed ) {
2028 - unmatched.push( elem );
2029 - }
2030 - }
2031 - }
2032 -
2033 - // `i` is now the count of elements visited above, and adding it to `matchedCount`
2034 - // makes the latter nonnegative.
2035 - matchedCount += i;
2036 -
2037 - // Apply set filters to unmatched elements
2038 - // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`
2039 - // equals `i`), unless we didn't visit _any_ elements in the above loop because we have
2040 - // no element matchers and no seed.
2041 - // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that
2042 - // case, which will result in a "00" `matchedCount` that differs from `i` but is also
2043 - // numerically zero.
2044 - if ( bySet && i !== matchedCount ) {
2045 - j = 0;
2046 - while ( (matcher = setMatchers[j++]) ) {
2047 - matcher( unmatched, setMatched, context, xml );
2048 - }
2049 -
2050 - if ( seed ) {
2051 - // Reintegrate element matches to eliminate the need for sorting
2052 - if ( matchedCount > 0 ) {
2053 - while ( i-- ) {
2054 - if ( !(unmatched[i] || setMatched[i]) ) {
2055 - setMatched[i] = pop.call( results );
2056 - }
2057 - }
2058 - }
2059 -
2060 - // Discard index placeholder values to get only actual matches
2061 - setMatched = condense( setMatched );
2062 - }
2063 -
2064 - // Add matches to results
2065 - push.apply( results, setMatched );
2066 -
2067 - // Seedless set matches succeeding multiple successful matchers stipulate sorting
2068 - if ( outermost && !seed && setMatched.length > 0 &&
2069 - ( matchedCount + setMatchers.length ) > 1 ) {
2070 -
2071 - Sizzle.uniqueSort( results );
2072 - }
2073 - }
2074 -
2075 - // Override manipulation of globals by nested matchers
2076 - if ( outermost ) {
2077 - dirruns = dirrunsUnique;
2078 - outermostContext = contextBackup;
2079 - }
2080 -
2081 - return unmatched;
2082 - };
2083 -
2084 - return bySet ?
2085 - markFunction( superMatcher ) :
2086 - superMatcher;
2087 - }
2088 -
2089 - compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
2090 - var i,
2091 - setMatchers = [],
2092 - elementMatchers = [],
2093 - cached = compilerCache[ selector + " " ];
2094 -
2095 - if ( !cached ) {
2096 - // Generate a function of recursive functions that can be used to check each element
2097 - if ( !match ) {
2098 - match = tokenize( selector );
2099 - }
2100 - i = match.length;
2101 - while ( i-- ) {
2102 - cached = matcherFromTokens( match[i] );
2103 - if ( cached[ expando ] ) {
2104 - setMatchers.push( cached );
2105 - } else {
2106 - elementMatchers.push( cached );
2107 - }
2108 - }
2109 -
2110 - // Cache the compiled function
2111 - cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
2112 -
2113 - // Save selector and tokenization
2114 - cached.selector = selector;
2115 - }
2116 - return cached;
2117 - };
2118 -
2119 - /**
2120 - * A low-level selection function that works with Sizzle's compiled
2121 - * selector functions
2122 - * @param {String|Function} selector A selector or a pre-compiled
2123 - * selector function built with Sizzle.compile
2124 - * @param {Element} context
2125 - * @param {Array} [results]
2126 - * @param {Array} [seed] A set of elements to match against
2127 - */
2128 - select = Sizzle.select = function( selector, context, results, seed ) {
2129 - var i, tokens, token, type, find,
2130 - compiled = typeof selector === "function" && selector,
2131 - match = !seed && tokenize( (selector = compiled.selector || selector) );
2132 -
2133 - results = results || [];
2134 -
2135 - // Try to minimize operations if there is only one selector in the list and no seed
2136 - // (the latter of which guarantees us context)
2137 - if ( match.length === 1 ) {
2138 -
2139 - // Reduce context if the leading compound selector is an ID
2140 - tokens = match[0] = match[0].slice( 0 );
2141 - if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
2142 - context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) {
2143 -
2144 - context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
2145 - if ( !context ) {
2146 - return results;
2147 -
2148 - // Precompiled matchers will still verify ancestry, so step up a level
2149 - } else if ( compiled ) {
2150 - context = context.parentNode;
2151 - }
2152 -
2153 - selector = selector.slice( tokens.shift().value.length );
2154 - }
2155 -
2156 - // Fetch a seed set for right-to-left matching
2157 - i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
2158 - while ( i-- ) {
2159 - token = tokens[i];
2160 -
2161 - // Abort if we hit a combinator
2162 - if ( Expr.relative[ (type = token.type) ] ) {
2163 - break;
2164 - }
2165 - if ( (find = Expr.find[ type ]) ) {
2166 - // Search, expanding context for leading sibling combinators
2167 - if ( (seed = find(
2168 - token.matches[0].replace( runescape, funescape ),
2169 - rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context
2170 - )) ) {
2171 -
2172 - // If seed is empty or no tokens remain, we can return early
2173 - tokens.splice( i, 1 );
2174 - selector = seed.length && toSelector( tokens );
2175 - if ( !selector ) {
2176 - push.apply( results, seed );
2177 - return results;
2178 - }
2179 -
2180 - break;
2181 - }
2182 - }
2183 - }
2184 - }
2185 -
2186 - // Compile and execute a filtering function if one is not provided
2187 - // Provide `match` to avoid retokenization if we modified the selector above
2188 - ( compiled || compile( selector, match ) )(
2189 - seed,
2190 - context,
2191 - !documentIsHTML,
2192 - results,
2193 - !context || rsibling.test( selector ) && testContext( context.parentNode ) || context
2194 - );
2195 - return results;
2196 - };
2197 -
2198 - // One-time assignments
2199 -
2200 - // Sort stability
2201 - support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
2202 -
2203 - // Support: Chrome 14-35+
2204 - // Always assume duplicates if they aren't passed to the comparison function
2205 - support.detectDuplicates = !!hasDuplicate;
2206 -
2207 - // Initialize against the default document
2208 - setDocument();
2209 -
2210 - // Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
2211 - // Detached nodes confoundingly follow *each other*
2212 - support.sortDetached = assert(function( el ) {
2213 - // Should return 1, but returns 4 (following)
2214 - return el.compareDocumentPosition( document.createElement("fieldset") ) & 1;
2215 - });
2216 -
2217 - // Support: IE<8
2218 - // Prevent attribute/property "interpolation"
2219 - // https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
2220 - if ( !assert(function( el ) {
2221 - el.innerHTML = "<a href='#'></a>";
2222 - return el.firstChild.getAttribute("href") === "#" ;
2223 - }) ) {
2224 - addHandle( "type|href|height|width", function( elem, name, isXML ) {
2225 - if ( !isXML ) {
2226 - return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
2227 - }
2228 - });
2229 - }
2230 -
2231 - // Support: IE<9
2232 - // Use defaultValue in place of getAttribute("value")
2233 - if ( !support.attributes || !assert(function( el ) {
2234 - el.innerHTML = "<input/>";
2235 - el.firstChild.setAttribute( "value", "" );
2236 - return el.firstChild.getAttribute( "value" ) === "";
2237 - }) ) {
2238 - addHandle( "value", function( elem, name, isXML ) {
2239 - if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
2240 - return elem.defaultValue;
2241 - }
2242 - });
2243 - }
2244 -
2245 - // Support: IE<9
2246 - // Use getAttributeNode to fetch booleans when getAttribute lies
2247 - if ( !assert(function( el ) {
2248 - return el.getAttribute("disabled") == null;
2249 - }) ) {
2250 - addHandle( booleans, function( elem, name, isXML ) {
2251 - var val;
2252 - if ( !isXML ) {
2253 - return elem[ name ] === true ? name.toLowerCase() :
2254 - (val = elem.getAttributeNode( name )) && val.specified ?
2255 - val.value :
2256 - null;
2257 - }
2258 - });
2259 - }
2260 -
2261 - // EXPOSE
2262 - var _sizzle = window.Sizzle;
2263 -
2264 - Sizzle.noConflict = function() {
2265 - if ( window.Sizzle === Sizzle ) {
2266 - window.Sizzle = _sizzle;
2267 - }
2268 -
2269 - return Sizzle;
2270 - };
2271 -
2272 - if ( typeof define === "function" && define.amd ) {
2273 - define(function() { return Sizzle; });
2274 - // Sizzle requires that there be a global window in Common-JS like environments
2275 - } else if ( typeof module !== "undefined" && module.exports ) {
2276 - module.exports = Sizzle;
2277 - } else {
2278 - window.Sizzle = Sizzle;
2279 - }
2280 - // EXPOSE
2281 -
2282 - })( window );
@@ -1,3 +0,0
1 - /*! Sizzle v2.3.4 | (c) JS Foundation and other contributors | js.foundation */
2 - !function(e){var t,n,r,i,o,u,l,a,c,s,f,d,p,h,g,m,y,w,v,b="sizzle"+1*new Date,N=e.document,x=0,C=0,E=ae(),D=ae(),S=ae(),A=ae(),T=function(e,t){return e===t&&(f=!0),0},L={}.hasOwnProperty,I=[],q=I.pop,B=I.push,R=I.push,$=I.slice,k=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},H="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",P="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",z="\\["+M+"*("+P+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+P+"))|)"+M+"*\\]",F=":("+P+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+z+")*)|.*)\\)|)",O=new RegExp(M+"+","g"),j=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),G=new RegExp("^"+M+"*,"+M+"*"),U=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),V=new RegExp(M+"|>"),X=new RegExp(F),J=new RegExp("^"+P+"$"),K={ID:new RegExp("^#("+P+")"),CLASS:new RegExp("^\\.("+P+")"),TAG:new RegExp("^("+P+"|[*])"),ATTR:new RegExp("^"+z),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+H+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Q=/HTML$/i,W=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Z=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){d()},ue=we(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{R.apply(I=$.call(N.childNodes),N.childNodes),I[N.childNodes.length].nodeType}catch(e){R={apply:I.length?function(e,t){B.apply(e,$.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function le(e,t,r,i){var o,l,c,s,f,h,y,w=t&&t.ownerDocument,x=t?t.nodeType:9;if(r=r||[],"string"!=typeof e||!e||1!==x&&9!==x&&11!==x)return r;if(!i&&((t?t.ownerDocument||t:N)!==p&&d(t),t=t||p,g)){if(11!==x&&(f=_.exec(e)))if(o=f[1]){if(9===x){if(!(c=t.getElementById(o)))return r;if(c.id===o)return r.push(c),r}else if(w&&(c=w.getElementById(o))&&v(t,c)&&c.id===o)return r.push(c),r}else{if(f[2])return R.apply(r,t.getElementsByTagName(e)),r;if((o=f[3])&&n.getElementsByClassName&&t.getElementsByClassName)return R.apply(r,t.getElementsByClassName(o)),r}if(n.qsa&&!A[e+" "]&&(!m||!m.test(e))&&(1!==x||"object"!==t.nodeName.toLowerCase())){if(y=e,w=t,1===x&&V.test(e)){(s=t.getAttribute("id"))?s=s.replace(re,ie):t.setAttribute("id",s=b),l=(h=u(e)).length;while(l--)h[l]="#"+s+" "+ye(h[l]);y=h.join(","),w=ee.test(e)&&ge(t.parentNode)||t}try{return R.apply(r,w.querySelectorAll(y)),r}catch(t){A(e,!0)}finally{s===b&&t.removeAttribute("id")}}}return a(e.replace(j,"$1"),t,r,i)}function ae(){var e=[];function t(n,i){return e.push(n+" ")>r.cacheLength&&delete t[e.shift()],t[n+" "]=i}return t}function ce(e){return e[b]=!0,e}function se(e){var t=p.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),i=n.length;while(i--)r.attrHandle[n[i]]=t}function de(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function pe(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ue(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function he(e){return ce(function(t){return t=+t,ce(function(n,r){var i,o=e([],n.length,t),u=o.length;while(u--)n[i=o[u]]&&(n[i]=!(r[i]=n[i]))})})}function ge(e){return e&&void 0!==e.getElementsByTagName&&e}n=le.support={},o=le.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Q.test(t||n&&n.nodeName||"HTML")},d=le.setDocument=function(e){var t,i,u=e?e.ownerDocument||e:N;return u!==p&&9===u.nodeType&&u.documentElement?(p=u,h=p.documentElement,g=!o(p),N!==p&&(i=p.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener("unload",oe,!1):i.attachEvent&&i.attachEvent("onunload",oe)),n.attributes=se(function(e){return e.className="i",!e.getAttribute("className")}),n.getElementsByTagName=se(function(e){return e.appendChild(p.createComment("")),!e.getElementsByTagName("*").length}),n.getElementsByClassName=Z.test(p.getElementsByClassName),n.getById=se(function(e){return h.appendChild(e).id=b,!p.getElementsByName||!p.getElementsByName(b).length}),n.getById?(r.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},r.find.ID=function(e,t){if(void 0!==t.getElementById&&g){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var t=e.replace(te,ne);return function(e){var n=void 0!==e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},r.find.ID=function(e,t){if(void 0!==t.getElementById&&g){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),r.find.TAG=n.getElementsByTagName?function(e,t){return void 0!==t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}: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},r.find.CLASS=n.getElementsByClassName&&function(e,t){if(void 0!==t.getElementsByClassName&&g)return t.getElementsByClassName(e)},y=[],m=[],(n.qsa=Z.test(p.querySelectorAll))&&(se(function(e){h.appendChild(e).innerHTML="<a id='"+b+"'></a><select id='"+b+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&m.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||m.push("\\["+M+"*(?:value|"+H+")"),e.querySelectorAll("[id~="+b+"-]").length||m.push("~="),e.querySelectorAll(":checked").length||m.push(":checked"),e.querySelectorAll("a#"+b+"+*").length||m.push(".#.+[+~]")}),se(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=p.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&m.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&m.push(":enabled",":disabled"),h.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&m.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),m.push(",.*:")})),(n.matchesSelector=Z.test(w=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&se(function(e){n.disconnectedMatch=w.call(e,"*"),w.call(e,"[s!='']:x"),y.push("!=",F)}),m=m.length&&new RegExp(m.join("|")),y=y.length&&new RegExp(y.join("|")),t=Z.test(h.compareDocumentPosition),v=t||Z.test(h.contains)?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},T=t?function(e,t){if(e===t)return f=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e===p||e.ownerDocument===N&&v(N,e)?-1:t===p||t.ownerDocument===N&&v(N,t)?1:s?k(s,e)-k(s,t):0:4&r?-1:1)}:function(e,t){if(e===t)return f=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,u=[e],l=[t];if(!i||!o)return e===p?-1:t===p?1:i?-1:o?1:s?k(s,e)-k(s,t):0;if(i===o)return de(e,t);n=e;while(n=n.parentNode)u.unshift(n);n=t;while(n=n.parentNode)l.unshift(n);while(u[r]===l[r])r++;return r?de(u[r],l[r]):u[r]===N?-1:l[r]===N?1:0},p):p},le.matches=function(e,t){return le(e,null,null,t)},le.matchesSelector=function(e,t){if((e.ownerDocument||e)!==p&&d(e),n.matchesSelector&&g&&!A[t+" "]&&(!y||!y.test(t))&&(!m||!m.test(t)))try{var r=w.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){A(t,!0)}return le(t,p,null,[e]).length>0},le.contains=function(e,t){return(e.ownerDocument||e)!==p&&d(e),v(e,t)},le.attr=function(e,t){(e.ownerDocument||e)!==p&&d(e);var i=r.attrHandle[t.toLowerCase()],o=i&&L.call(r.attrHandle,t.toLowerCase())?i(e,t,!g):void 0;return void 0!==o?o:n.attributes||!g?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},le.escape=function(e){return(e+"").replace(re,ie)},le.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},le.uniqueSort=function(e){var t,r=[],i=0,o=0;if(f=!n.detectDuplicates,s=!n.sortStable&&e.slice(0),e.sort(T),f){while(t=e[o++])t===e[o]&&(i=r.push(o));while(i--)e.splice(r[i],1)}return s=null,e},i=le.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===o||4===o)return e.nodeValue}else while(t=e[r++])n+=i(t);return n},(r=le.selectors={cacheLength:50,createPseudo:ce,match:K,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(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===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]||le.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]&&le.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return K.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=u(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=E[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&E(e,function(e){return t.test("string"==typeof e.className&&e.className||void 0!==e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=le.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.replace(O," ")+" ").indexOf(n)>-1:"|="===t&&(i===n||i.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),u="last"!==e.slice(-4),l="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,a){var c,s,f,d,p,h,g=o!==u?"nextSibling":"previousSibling",m=t.parentNode,y=l&&t.nodeName.toLowerCase(),w=!a&&!l,v=!1;if(m){if(o){while(g){d=t;while(d=d[g])if(l?d.nodeName.toLowerCase()===y:1===d.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[u?m.firstChild:m.lastChild],u&&w){v=(p=(c=(s=(f=(d=m)[b]||(d[b]={}))[d.uniqueID]||(f[d.uniqueID]={}))[e]||[])[0]===x&&c[1])&&c[2],d=p&&m.childNodes[p];while(d=++p&&d&&d[g]||(v=p=0)||h.pop())if(1===d.nodeType&&++v&&d===t){s[e]=[x,p,v];break}}else if(w&&(v=p=(c=(s=(f=(d=t)[b]||(d[b]={}))[d.uniqueID]||(f[d.uniqueID]={}))[e]||[])[0]===x&&c[1]),!1===v)while(d=++p&&d&&d[g]||(v=p=0)||h.pop())if((l?d.nodeName.toLowerCase()===y:1===d.nodeType)&&++v&&(w&&((s=(f=d[b]||(d[b]={}))[d.uniqueID]||(f[d.uniqueID]={}))[e]=[x,v]),d===t))break;return(v-=i)===r||v%r==0&&v/r>=0}}},PSEUDO:function(e,t){var n,i=r.pseudos[e]||r.setFilters[e.toLowerCase()]||le.error("unsupported pseudo: "+e);return i[b]?i(t):i.length>1?(n=[e,e,"",t],r.setFilters.hasOwnProperty(e.toLowerCase())?ce(function(e,n){var r,o=i(e,t),u=o.length;while(u--)e[r=k(e,o[u])]=!(n[r]=o[u])}):function(e){return i(e,0,n)}):i}},pseudos:{not:ce(function(e){var t=[],n=[],r=l(e.replace(j,"$1"));return r[b]?ce(function(e,t,n,i){var o,u=r(e,null,i,[]),l=e.length;while(l--)(o=u[l])&&(e[l]=!(t[l]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}}),has:ce(function(e){return function(t){return le(e,t).length>0}}),contains:ce(function(e){return e=e.replace(te,ne),function(t){return(t.textContent||i(t)).indexOf(e)>-1}}),lang:ce(function(e){return J.test(e||"")||le.error("unsupported lang: "+e),e=e.replace(te,ne).toLowerCase(),function(t){var n;do{if(n=g?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===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===h},focus:function(e){return e===p.activeElement&&(!p.hasFocus||p.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:pe(!1),disabled:pe(!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,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!r.pseudos.empty(e)},header:function(e){return Y.test(e.nodeName)},input:function(e){return W.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"))||"text"===t.toLowerCase())},first:he(function(){return[0]}),last:he(function(e,t){return[t-1]}),eq:he(function(e,t,n){return[n<0?n+t:n]}),even:he(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:he(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:he(function(e,t,n){for(var r=n<0?n+t:n>t?t:n;--r>=0;)e.push(r);return e}),gt:he(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=r.pseudos.eq;for(t in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})r.pseudos[t]=function(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}(t);for(t in{submit:!0,reset:!0})r.pseudos[t]=function(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}(t);function me(){}me.prototype=r.filters=r.pseudos,r.setFilters=new me,u=le.tokenize=function(e,t){var n,i,o,u,l,a,c,s=D[e+" "];if(s)return t?0:s.slice(0);l=e,a=[],c=r.preFilter;while(l){n&&!(i=G.exec(l))||(i&&(l=l.slice(i[0].length)||l),a.push(o=[])),n=!1,(i=U.exec(l))&&(n=i.shift(),o.push({value:n,type:i[0].replace(j," ")}),l=l.slice(n.length));for(u in r.filter)!(i=K[u].exec(l))||c[u]&&!(i=c[u](i))||(n=i.shift(),o.push({value:n,type:u,matches:i}),l=l.slice(n.length));if(!n)break}return t?l.length:l?le.error(e):D(e,a).slice(0)};function ye(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function we(e,t,n){var r=t.dir,i=t.next,o=i||r,u=n&&"parentNode"===o,l=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||u)return e(t,n,i);return!1}:function(t,n,a){var c,s,f,d=[x,l];if(a){while(t=t[r])if((1===t.nodeType||u)&&e(t,n,a))return!0}else while(t=t[r])if(1===t.nodeType||u)if(f=t[b]||(t[b]={}),s=f[t.uniqueID]||(f[t.uniqueID]={}),i&&i===t.nodeName.toLowerCase())t=t[r]||t;else{if((c=s[o])&&c[0]===x&&c[1]===l)return d[2]=c[2];if(s[o]=d,d[2]=e(t,n,a))return!0}return!1}}function ve(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 be(e,t,n){for(var r=0,i=t.length;r<i;r++)le(e,t[r],n);return n}function Ne(e,t,n,r,i){for(var o,u=[],l=0,a=e.length,c=null!=t;l<a;l++)(o=e[l])&&(n&&!n(o,r,i)||(u.push(o),c&&t.push(l)));return u}function xe(e,t,n,r,i,o){return r&&!r[b]&&(r=xe(r)),i&&!i[b]&&(i=xe(i,o)),ce(function(o,u,l,a){var c,s,f,d=[],p=[],h=u.length,g=o||be(t||"*",l.nodeType?[l]:l,[]),m=!e||!o&&t?g:Ne(g,d,e,l,a),y=n?i||(o?e:h||r)?[]:u:m;if(n&&n(m,y,l,a),r){c=Ne(y,p),r(c,[],l,a),s=c.length;while(s--)(f=c[s])&&(y[p[s]]=!(m[p[s]]=f))}if(o){if(i||e){if(i){c=[],s=y.length;while(s--)(f=y[s])&&c.push(m[s]=f);i(null,y=[],c,a)}s=y.length;while(s--)(f=y[s])&&(c=i?k(o,f):d[s])>-1&&(o[c]=!(u[c]=f))}}else y=Ne(y===u?y.splice(h,y.length):y),i?i(null,u,y,a):R.apply(u,y)})}function Ce(e){for(var t,n,i,o=e.length,u=r.relative[e[0].type],l=u||r.relative[" "],a=u?1:0,s=we(function(e){return e===t},l,!0),f=we(function(e){return k(t,e)>-1},l,!0),d=[function(e,n,r){var i=!u&&(r||n!==c)||((t=n).nodeType?s(e,n,r):f(e,n,r));return t=null,i}];a<o;a++)if(n=r.relative[e[a].type])d=[we(ve(d),n)];else{if((n=r.filter[e[a].type].apply(null,e[a].matches))[b]){for(i=++a;i<o;i++)if(r.relative[e[i].type])break;return xe(a>1&&ve(d),a>1&&ye(e.slice(0,a-1).concat({value:" "===e[a-2].type?"*":""})).replace(j,"$1"),n,a<i&&Ce(e.slice(a,i)),i<o&&Ce(e=e.slice(i)),i<o&&ye(e))}d.push(n)}return ve(d)}function Ee(e,t){var n=t.length>0,i=e.length>0,o=function(o,u,l,a,s){var f,h,m,y=0,w="0",v=o&&[],b=[],N=c,C=o||i&&r.find.TAG("*",s),E=x+=null==N?1:Math.random()||.1,D=C.length;for(s&&(c=u===p||u||s);w!==D&&null!=(f=C[w]);w++){if(i&&f){h=0,u||f.ownerDocument===p||(d(f),l=!g);while(m=e[h++])if(m(f,u||p,l)){a.push(f);break}s&&(x=E)}n&&((f=!m&&f)&&y--,o&&v.push(f))}if(y+=w,n&&w!==y){h=0;while(m=t[h++])m(v,b,u,l);if(o){if(y>0)while(w--)v[w]||b[w]||(b[w]=q.call(a));b=Ne(b)}R.apply(a,b),s&&!o&&b.length>0&&y+t.length>1&&le.uniqueSort(a)}return s&&(x=E,c=N),v};return n?ce(o):o}l=le.compile=function(e,t){var n,r=[],i=[],o=S[e+" "];if(!o){t||(t=u(e)),n=t.length;while(n--)(o=Ce(t[n]))[b]?r.push(o):i.push(o);(o=S(e,Ee(i,r))).selector=e}return o},a=le.select=function(e,t,n,i){var o,a,c,s,f,d="function"==typeof e&&e,p=!i&&u(e=d.selector||e);if(n=n||[],1===p.length){if((a=p[0]=p[0].slice(0)).length>2&&"ID"===(c=a[0]).type&&9===t.nodeType&&g&&r.relative[a[1].type]){if(!(t=(r.find.ID(c.matches[0].replace(te,ne),t)||[])[0]))return n;d&&(t=t.parentNode),e=e.slice(a.shift().value.length)}o=K.needsContext.test(e)?0:a.length;while(o--){if(c=a[o],r.relative[s=c.type])break;if((f=r.find[s])&&(i=f(c.matches[0].replace(te,ne),ee.test(a[0].type)&&ge(t.parentNode)||t))){if(a.splice(o,1),!(e=i.length&&ye(a)))return R.apply(n,i),n;break}}}return(d||l(e,p))(i,t,!g,n,!t||ee.test(e)&&ge(t.parentNode)||t),n},n.sortStable=b.split("").sort(T).join("")===b,n.detectDuplicates=!!f,d(),n.sortDetached=se(function(e){return 1&e.compareDocumentPosition(p.createElement("fieldset"))}),se(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),n.attributes&&se(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),se(function(e){return null==e.getAttribute("disabled")})||fe(H,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null});var De=e.Sizzle;le.noConflict=function(){return e.Sizzle===le&&(e.Sizzle=De),le},"function"==typeof define&&define.amd?define(function(){return le}):"undefined"!=typeof module&&module.exports?module.exports=le:e.Sizzle=le}(window);
3 - //# sourceMappingURL=sizzle.min.map No newline at end of file
@@ -1,1 +0,0
1 - {"version":3,"sources":["sizzle.js"],"names":["window","i","support","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","setDocument","document","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","matches","contains","expando","Date","preferredDoc","dirruns","done","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","a","b","hasOwn","hasOwnProperty","arr","pop","push_native","push","slice","indexOf","list","elem","len","length","booleans","whitespace","identifier","attributes","pseudos","rwhitespace","RegExp","rtrim","rcomma","rcombinators","rdescend","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rhtml","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","_","escaped","escapedWhitespace","high","String","fromCharCode","rcssescape","fcssescape","ch","asCodePoint","charCodeAt","toString","unloadHandler","inDisabledFieldset","addCombinator","disabled","nodeName","toLowerCase","dir","next","apply","call","childNodes","nodeType","e","target","els","j","Sizzle","selector","context","results","seed","m","nid","match","groups","newSelector","newContext","ownerDocument","exec","getElementById","id","getElementsByTagName","getElementsByClassName","qsa","test","getAttribute","replace","setAttribute","toSelector","join","testContext","parentNode","querySelectorAll","qsaError","removeAttribute","keys","cache","key","value","cacheLength","shift","markFunction","fn","assert","el","createElement","removeChild","addHandle","attrs","handler","split","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","namespace","namespaceURI","documentElement","node","hasCompare","subWindow","doc","defaultView","top","addEventListener","attachEvent","className","appendChild","createComment","getById","getElementsByName","filter","attrId","find","getAttributeNode","elems","tag","tmp","innerHTML","input","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","expr","elements","ret","attr","name","val","undefined","specified","escape","sel","error","msg","Error","uniqueSort","duplicates","detectDuplicates","sortStable","sort","splice","textContent","firstChild","nodeValue","selectors","createPseudo","relative",">","first"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","result","type","what","last","simple","forward","ofType","xml","uniqueCache","outerCache","nodeIndex","start","parent","useCache","lastChild","uniqueID","pseudo","args","setFilters","idx","matched","not","matcher","unmatched","has","text","lang","elemLang","hash","location","root","focus","activeElement","hasFocus","href","tabIndex","enabled","checked","selected","selectedIndex","empty","header","button","eq","even","odd","lt","gt","radio","checkbox","file","password","image","createInputPseudo","submit","reset","createButtonPseudo","prototype","filters","parseOnly","tokens","soFar","preFilters","cached","combinator","base","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","multipleContexts","contexts","condense","map","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","concat","matcherFromGroupMatchers","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","Math","random","token","compiled","defaultValue","_sizzle","noConflict","define","amd","module","exports"],"mappings":"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","file":"sizzle.min.js"} No newline at end of file
@@ -1,113 +0,0
1 - {
2 - "name": "jquery",
3 - "title": "jQuery",
4 - "description": "JavaScript library for DOM operations",
5 - "version": "3.4.1",
6 - "main": "dist/jquery.js",
7 - "homepage": "https://jquery.com",
8 - "author": {
9 - "name": "JS Foundation and other contributors",
10 - "url": "https://github.com/jquery/jquery/blob/3.4.1/AUTHORS.txt"
11 - },
12 - "repository": {
13 - "type": "git",
14 - "url": "https://github.com/jquery/jquery.git"
15 - },
16 - "keywords": [
17 - "jquery",
18 - "javascript",
19 - "browser",
20 - "library"
21 - ],
22 - "bugs": {
23 - "url": "https://github.com/jquery/jquery/issues"
24 - },
25 - "license": "MIT",
26 - "dependencies": {},
27 - "devDependencies": {
28 - "@babel/core": "7.3.3",
29 - "@babel/plugin-transform-for-of": "7.2.0",
30 - "commitplease": "3.2.0",
31 - "core-js": "2.6.5",
32 - "eslint-config-jquery": "1.0.1",
33 - "grunt": "1.0.3",
34 - "grunt-babel": "8.0.0",
35 - "grunt-cli": "1.3.2",
36 - "grunt-compare-size": "0.4.2",
37 - "grunt-contrib-uglify": "3.4.0",
38 - "grunt-contrib-watch": "1.1.0",
39 - "grunt-eslint": "21.0.0",
40 - "grunt-git-authors": "3.2.0",
41 - "grunt-jsonlint": "1.1.0",
42 - "grunt-karma": "3.0.1",
43 - "grunt-newer": "1.3.0",
44 - "grunt-npmcopy": "0.1.0",
45 - "gzip-js": "0.3.2",
46 - "husky": "1.3.1",
47 - "insight": "0.10.1",
48 - "jsdom": "13.2.0",
49 - "karma": "4.0.1",
50 - "karma-browserstack-launcher": "1.4.0",
51 - "karma-chrome-launcher": "2.2.0",
52 - "karma-firefox-launcher": "1.1.0",
53 - "karma-ie-launcher": "1.0.0",
54 - "karma-jsdom-launcher": "7.1.0",
55 - "karma-qunit": "3.0.0",
56 - "load-grunt-tasks": "4.0.0",
57 - "native-promise-only": "0.8.1",
58 - "promises-aplus-tests": "2.1.2",
59 - "q": "1.5.1",
60 - "qunit": "2.9.2",
61 - "raw-body": "2.3.3",
62 - "requirejs": "2.3.6",
63 - "sinon": "2.3.7",
64 - "sizzle": "2.3.4",
65 - "strip-json-comments": "2.0.1",
66 - "testswarm": "1.1.0",
67 - "uglify-js": "3.4.7"
68 - },
69 - "scripts": {
70 - "build": "npm install && grunt",
71 - "start": "grunt watch",
72 - "test:browserless": "grunt && grunt test:slow",
73 - "test:browser": "grunt && grunt karma:main",
74 - "test": "grunt && grunt test:slow && grunt karma:main",
75 - "jenkins": "npm run test:browserless"
76 - },
77 - "commitplease": {
78 - "nohook": true,
79 - "components": [
80 - "Docs",
81 - "Tests",
82 - "Build",
83 - "Support",
84 - "Release",
85 - "Core",
86 - "Ajax",
87 - "Attributes",
88 - "Callbacks",
89 - "CSS",
90 - "Data",
91 - "Deferred",
92 - "Deprecated",
93 - "Dimensions",
94 - "Effects",
95 - "Event",
96 - "Manipulation",
97 - "Offset",
98 - "Queue",
99 - "Selector",
100 - "Serialize",
101 - "Traversing",
102 - "Wrap"
103 - ],
104 - "markerPattern": "^((clos|fix|resolv)(e[sd]|ing))|^(refs?)",
105 - "ticketPattern": "^((Closes|Fixes) ([a-zA-Z]{2,}-)[0-9]+)|^(Refs? [^#])"
106 - },
107 - "husky": {
108 - "hooks": {
109 - "commit-msg": "node node_modules/commitplease",
110 - "pre-commit": "grunt lint:newer qunit_fixture"
111 - }
112 - }
113 - }
@@ -1,14 +0,0
1 - {
2 - "root": true,
3 -
4 - "extends": "../.eslintrc-browser.json",
5 -
6 - "overrides": [
7 - {
8 - "files": "wrapper.js",
9 - "globals": {
10 - "jQuery": false
11 - }
12 - }
13 - ]
14 - }
This diff has been collapsed as it changes many lines, (858 lines changed) Show them Hide them
@@ -1,858 +0,0
1 - define( [
2 - "./core",
3 - "./var/document",
4 - "./var/isFunction",
5 - "./var/rnothtmlwhite",
6 - "./ajax/var/location",
7 - "./ajax/var/nonce",
8 - "./ajax/var/rquery",
9 -
10 - "./core/init",
11 - "./ajax/parseXML",
12 - "./event/trigger",
13 - "./deferred",
14 - "./serialize" // jQuery.param
15 - ], function( jQuery, document, isFunction, rnothtmlwhite, location, nonce, rquery ) {
16 -
17 - "use strict";
18 -
19 - var
20 - r20 = /%20/g,
21 - rhash = /#.*$/,
22 - rantiCache = /([?&])_=[^&]*/,
23 - rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,
24 -
25 - // #7653, #8125, #8152: local protocol detection
26 - rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
27 - rnoContent = /^(?:GET|HEAD)$/,
28 - rprotocol = /^\/\//,
29 -
30 - /* Prefilters
31 - * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
32 - * 2) These are called:
33 - * - BEFORE asking for a transport
34 - * - AFTER param serialization (s.data is a string if s.processData is true)
35 - * 3) key is the dataType
36 - * 4) the catchall symbol "*" can be used
37 - * 5) execution will start with transport dataType and THEN continue down to "*" if needed
38 - */
39 - prefilters = {},
40 -
41 - /* Transports bindings
42 - * 1) key is the dataType
43 - * 2) the catchall symbol "*" can be used
44 - * 3) selection will start with transport dataType and THEN go to "*" if needed
45 - */
46 - transports = {},
47 -
48 - // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
49 - allTypes = "*/".concat( "*" ),
50 -
51 - // Anchor tag for parsing the document origin
52 - originAnchor = document.createElement( "a" );
53 - originAnchor.href = location.href;
54 -
55 - // Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
56 - function addToPrefiltersOrTransports( structure ) {
57 -
58 - // dataTypeExpression is optional and defaults to "*"
59 - return function( dataTypeExpression, func ) {
60 -
61 - if ( typeof dataTypeExpression !== "string" ) {
62 - func = dataTypeExpression;
63 - dataTypeExpression = "*";
64 - }
65 -
66 - var dataType,
67 - i = 0,
68 - dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];
69 -
70 - if ( isFunction( func ) ) {
71 -
72 - // For each dataType in the dataTypeExpression
73 - while ( ( dataType = dataTypes[ i++ ] ) ) {
74 -
75 - // Prepend if requested
76 - if ( dataType[ 0 ] === "+" ) {
77 - dataType = dataType.slice( 1 ) || "*";
78 - ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );
79 -
80 - // Otherwise append
81 - } else {
82 - ( structure[ dataType ] = structure[ dataType ] || [] ).push( func );
83 - }
84 - }
85 - }
86 - };
87 - }
88 -
89 - // Base inspection function for prefilters and transports
90 - function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {
91 -
92 - var inspected = {},
93 - seekingTransport = ( structure === transports );
94 -
95 - function inspect( dataType ) {
96 - var selected;
97 - inspected[ dataType ] = true;
98 - jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {
99 - var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );
100 - if ( typeof dataTypeOrTransport === "string" &&
101 - !seekingTransport && !inspected[ dataTypeOrTransport ] ) {
102 -
103 - options.dataTypes.unshift( dataTypeOrTransport );
104 - inspect( dataTypeOrTransport );
105 - return false;
106 - } else if ( seekingTransport ) {
107 - return !( selected = dataTypeOrTransport );
108 - }
109 - } );
110 - return selected;
111 - }
112 -
113 - return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );
114 - }
115 -
116 - // A special extend for ajax options
117 - // that takes "flat" options (not to be deep extended)
118 - // Fixes #9887
119 - function ajaxExtend( target, src ) {
120 - var key, deep,
121 - flatOptions = jQuery.ajaxSettings.flatOptions || {};
122 -
123 - for ( key in src ) {
124 - if ( src[ key ] !== undefined ) {
125 - ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];
126 - }
127 - }
128 - if ( deep ) {
129 - jQuery.extend( true, target, deep );
130 - }
131 -
132 - return target;
133 - }
134 -
135 - /* Handles responses to an ajax request:
136 - * - finds the right dataType (mediates between content-type and expected dataType)
137 - * - returns the corresponding response
138 - */
139 - function ajaxHandleResponses( s, jqXHR, responses ) {
140 -
141 - var ct, type, finalDataType, firstDataType,
142 - contents = s.contents,
143 - dataTypes = s.dataTypes;
144 -
145 - // Remove auto dataType and get content-type in the process
146 - while ( dataTypes[ 0 ] === "*" ) {
147 - dataTypes.shift();
148 - if ( ct === undefined ) {
149 - ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" );
150 - }
151 - }
152 -
153 - // Check if we're dealing with a known content-type
154 - if ( ct ) {
155 - for ( type in contents ) {
156 - if ( contents[ type ] && contents[ type ].test( ct ) ) {
157 - dataTypes.unshift( type );
158 - break;
159 - }
160 - }
161 - }
162 -
163 - // Check to see if we have a response for the expected dataType
164 - if ( dataTypes[ 0 ] in responses ) {
165 - finalDataType = dataTypes[ 0 ];
166 - } else {
167 -
168 - // Try convertible dataTypes
169 - for ( type in responses ) {
170 - if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) {
171 - finalDataType = type;
172 - break;
173 - }
174 - if ( !firstDataType ) {
175 - firstDataType = type;
176 - }
177 - }
178 -
179 - // Or just use first one
180 - finalDataType = finalDataType || firstDataType;
181 - }
182 -
183 - // If we found a dataType
184 - // We add the dataType to the list if needed
185 - // and return the corresponding response
186 - if ( finalDataType ) {
187 - if ( finalDataType !== dataTypes[ 0 ] ) {
188 - dataTypes.unshift( finalDataType );
189 - }
190 - return responses[ finalDataType ];
191 - }
192 - }
193 -
194 - /* Chain conversions given the request and the original response
195 - * Also sets the responseXXX fields on the jqXHR instance
196 - */
197 - function ajaxConvert( s, response, jqXHR, isSuccess ) {
198 - var conv2, current, conv, tmp, prev,
199 - converters = {},
200 -
201 - // Work with a copy of dataTypes in case we need to modify it for conversion
202 - dataTypes = s.dataTypes.slice();
203 -
204 - // Create converters map with lowercased keys
205 - if ( dataTypes[ 1 ] ) {
206 - for ( conv in s.converters ) {
207 - converters[ conv.toLowerCase() ] = s.converters[ conv ];
208 - }
209 - }
210 -
211 - current = dataTypes.shift();
212 -
213 - // Convert to each sequential dataType
214 - while ( current ) {
215 -
216 - if ( s.responseFields[ current ] ) {
217 - jqXHR[ s.responseFields[ current ] ] = response;
218 - }
219 -
220 - // Apply the dataFilter if provided
221 - if ( !prev && isSuccess && s.dataFilter ) {
222 - response = s.dataFilter( response, s.dataType );
223 - }
224 -
225 - prev = current;
226 - current = dataTypes.shift();
227 -
228 - if ( current ) {
229 -
230 - // There's only work to do if current dataType is non-auto
231 - if ( current === "*" ) {
232 -
233 - current = prev;
234 -
235 - // Convert response if prev dataType is non-auto and differs from current
236 - } else if ( prev !== "*" && prev !== current ) {
237 -
238 - // Seek a direct converter
239 - conv = converters[ prev + " " + current ] || converters[ "* " + current ];
240 -
241 - // If none found, seek a pair
242 - if ( !conv ) {
243 - for ( conv2 in converters ) {
244 -
245 - // If conv2 outputs current
246 - tmp = conv2.split( " " );
247 - if ( tmp[ 1 ] === current ) {
248 -
249 - // If prev can be converted to accepted input
250 - conv = converters[ prev + " " + tmp[ 0 ] ] ||
251 - converters[ "* " + tmp[ 0 ] ];
252 - if ( conv ) {
253 -
254 - // Condense equivalence converters
255 - if ( conv === true ) {
256 - conv = converters[ conv2 ];
257 -
258 - // Otherwise, insert the intermediate dataType
259 - } else if ( converters[ conv2 ] !== true ) {
260 - current = tmp[ 0 ];
261 - dataTypes.unshift( tmp[ 1 ] );
262 - }
263 - break;
264 - }
265 - }
266 - }
267 - }
268 -
269 - // Apply converter (if not an equivalence)
270 - if ( conv !== true ) {
271 -
272 - // Unless errors are allowed to bubble, catch and return them
273 - if ( conv && s.throws ) {
274 - response = conv( response );
275 - } else {
276 - try {
277 - response = conv( response );
278 - } catch ( e ) {
279 - return {
280 - state: "parsererror",
281 - error: conv ? e : "No conversion from " + prev + " to " + current
282 - };
283 - }
284 - }
285 - }
286 - }
287 - }
288 - }
289 -
290 - return { state: "success", data: response };
291 - }
292 -
293 - jQuery.extend( {
294 -
295 - // Counter for holding the number of active queries
296 - active: 0,
297 -
298 - // Last-Modified header cache for next request
299 - lastModified: {},
300 - etag: {},
301 -
302 - ajaxSettings: {
303 - url: location.href,
304 - type: "GET",
305 - isLocal: rlocalProtocol.test( location.protocol ),
306 - global: true,
307 - processData: true,
308 - async: true,
309 - contentType: "application/x-www-form-urlencoded; charset=UTF-8",
310 -
311 - /*
312 - timeout: 0,
313 - data: null,
314 - dataType: null,
315 - username: null,
316 - password: null,
317 - cache: null,
318 - throws: false,
319 - traditional: false,
320 - headers: {},
321 - */
322 -
323 - accepts: {
324 - "*": allTypes,
325 - text: "text/plain",
326 - html: "text/html",
327 - xml: "application/xml, text/xml",
328 - json: "application/json, text/javascript"
329 - },
330 -
331 - contents: {
332 - xml: /\bxml\b/,
333 - html: /\bhtml/,
334 - json: /\bjson\b/
335 - },
336 -
337 - responseFields: {
338 - xml: "responseXML",
339 - text: "responseText",
340 - json: "responseJSON"
341 - },
342 -
343 - // Data converters
344 - // Keys separate source (or catchall "*") and destination types with a single space
345 - converters: {
346 -
347 - // Convert anything to text
348 - "* text": String,
349 -
350 - // Text to html (true = no transformation)
351 - "text html": true,
352 -
353 - // Evaluate text as a json expression
354 - "text json": JSON.parse,
355 -
356 - // Parse text as xml
357 - "text xml": jQuery.parseXML
358 - },
359 -
360 - // For options that shouldn't be deep extended:
361 - // you can add your own custom options here if
362 - // and when you create one that shouldn't be
363 - // deep extended (see ajaxExtend)
364 - flatOptions: {
365 - url: true,
366 - context: true
367 - }
368 - },
369 -
370 - // Creates a full fledged settings object into target
371 - // with both ajaxSettings and settings fields.
372 - // If target is omitted, writes into ajaxSettings.
373 - ajaxSetup: function( target, settings ) {
374 - return settings ?
375 -
376 - // Building a settings object
377 - ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :
378 -
379 - // Extending ajaxSettings
380 - ajaxExtend( jQuery.ajaxSettings, target );
381 - },
382 -
383 - ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
384 - ajaxTransport: addToPrefiltersOrTransports( transports ),
385 -
386 - // Main method
387 - ajax: function( url, options ) {
388 -
389 - // If url is an object, simulate pre-1.5 signature
390 - if ( typeof url === "object" ) {
391 - options = url;
392 - url = undefined;
393 - }
394 -
395 - // Force options to be an object
396 - options = options || {};
397 -
398 - var transport,
399 -
400 - // URL without anti-cache param
401 - cacheURL,
402 -
403 - // Response headers
404 - responseHeadersString,
405 - responseHeaders,
406 -
407 - // timeout handle
408 - timeoutTimer,
409 -
410 - // Url cleanup var
411 - urlAnchor,
412 -
413 - // Request state (becomes false upon send and true upon completion)
414 - completed,
415 -
416 - // To know if global events are to be dispatched
417 - fireGlobals,
418 -
419 - // Loop variable
420 - i,
421 -
422 - // uncached part of the url
423 - uncached,
424 -
425 - // Create the final options object
426 - s = jQuery.ajaxSetup( {}, options ),
427 -
428 - // Callbacks context
429 - callbackContext = s.context || s,
430 -
431 - // Context for global events is callbackContext if it is a DOM node or jQuery collection
432 - globalEventContext = s.context &&
433 - ( callbackContext.nodeType || callbackContext.jquery ) ?
434 - jQuery( callbackContext ) :
435 - jQuery.event,
436 -
437 - // Deferreds
438 - deferred = jQuery.Deferred(),
439 - completeDeferred = jQuery.Callbacks( "once memory" ),
440 -
441 - // Status-dependent callbacks
442 - statusCode = s.statusCode || {},
443 -
444 - // Headers (they are sent all at once)
445 - requestHeaders = {},
446 - requestHeadersNames = {},
447 -
448 - // Default abort message
449 - strAbort = "canceled",
450 -
451 - // Fake xhr
452 - jqXHR = {
453 - readyState: 0,
454 -
455 - // Builds headers hashtable if needed
456 - getResponseHeader: function( key ) {
457 - var match;
458 - if ( completed ) {
459 - if ( !responseHeaders ) {
460 - responseHeaders = {};
461 - while ( ( match = rheaders.exec( responseHeadersString ) ) ) {
462 - responseHeaders[ match[ 1 ].toLowerCase() + " " ] =
463 - ( responseHeaders[ match[ 1 ].toLowerCase() + " " ] || [] )
464 - .concat( match[ 2 ] );
465 - }
466 - }
467 - match = responseHeaders[ key.toLowerCase() + " " ];
468 - }
469 - return match == null ? null : match.join( ", " );
470 - },
471 -
472 - // Raw string
473 - getAllResponseHeaders: function() {
474 - return completed ? responseHeadersString : null;
475 - },
476 -
477 - // Caches the header
478 - setRequestHeader: function( name, value ) {
479 - if ( completed == null ) {
480 - name = requestHeadersNames[ name.toLowerCase() ] =
481 - requestHeadersNames[ name.toLowerCase() ] || name;
482 - requestHeaders[ name ] = value;
483 - }
484 - return this;
485 - },
486 -
487 - // Overrides response content-type header
488 - overrideMimeType: function( type ) {
489 - if ( completed == null ) {
490 - s.mimeType = type;
491 - }
492 - return this;
493 - },
494 -
495 - // Status-dependent callbacks
496 - statusCode: function( map ) {
497 - var code;
498 - if ( map ) {
499 - if ( completed ) {
500 -
501 - // Execute the appropriate callbacks
502 - jqXHR.always( map[ jqXHR.status ] );
503 - } else {
504 -
505 - // Lazy-add the new callbacks in a way that preserves old ones
506 - for ( code in map ) {
507 - statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
508 - }
509 - }
510 - }
511 - return this;
512 - },
513 -
514 - // Cancel the request
515 - abort: function( statusText ) {
516 - var finalText = statusText || strAbort;
517 - if ( transport ) {
518 - transport.abort( finalText );
519 - }
520 - done( 0, finalText );
521 - return this;
522 - }
523 - };
524 -
525 - // Attach deferreds
526 - deferred.promise( jqXHR );
527 -
528 - // Add protocol if not provided (prefilters might expect it)
529 - // Handle falsy url in the settings object (#10093: consistency with old signature)
530 - // We also use the url parameter if available
531 - s.url = ( ( url || s.url || location.href ) + "" )
532 - .replace( rprotocol, location.protocol + "//" );
533 -
534 - // Alias method option to type as per ticket #12004
535 - s.type = options.method || options.type || s.method || s.type;
536 -
537 - // Extract dataTypes list
538 - s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ];
539 -
540 - // A cross-domain request is in order when the origin doesn't match the current origin.
541 - if ( s.crossDomain == null ) {
542 - urlAnchor = document.createElement( "a" );
543 -
544 - // Support: IE <=8 - 11, Edge 12 - 15
545 - // IE throws exception on accessing the href property if url is malformed,
546 - // e.g. http://example.com:80x/
547 - try {
548 - urlAnchor.href = s.url;
549 -
550 - // Support: IE <=8 - 11 only
551 - // Anchor's host property isn't correctly set when s.url is relative
552 - urlAnchor.href = urlAnchor.href;
553 - s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !==
554 - urlAnchor.protocol + "//" + urlAnchor.host;
555 - } catch ( e ) {
556 -
557 - // If there is an error parsing the URL, assume it is crossDomain,
558 - // it can be rejected by the transport if it is invalid
559 - s.crossDomain = true;
560 - }
561 - }
562 -
563 - // Convert data if not already a string
564 - if ( s.data && s.processData && typeof s.data !== "string" ) {
565 - s.data = jQuery.param( s.data, s.traditional );
566 - }
567 -
568 - // Apply prefilters
569 - inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
570 -
571 - // If request was aborted inside a prefilter, stop there
572 - if ( completed ) {
573 - return jqXHR;
574 - }
575 -
576 - // We can fire global events as of now if asked to
577 - // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)
578 - fireGlobals = jQuery.event && s.global;
579 -
580 - // Watch for a new set of requests
581 - if ( fireGlobals && jQuery.active++ === 0 ) {
582 - jQuery.event.trigger( "ajaxStart" );
583 - }
584 -
585 - // Uppercase the type
586 - s.type = s.type.toUpperCase();
587 -
588 - // Determine if request has content
589 - s.hasContent = !rnoContent.test( s.type );
590 -
591 - // Save the URL in case we're toying with the If-Modified-Since
592 - // and/or If-None-Match header later on
593 - // Remove hash to simplify url manipulation
594 - cacheURL = s.url.replace( rhash, "" );
595 -
596 - // More options handling for requests with no content
597 - if ( !s.hasContent ) {
598 -
599 - // Remember the hash so we can put it back
600 - uncached = s.url.slice( cacheURL.length );
601 -
602 - // If data is available and should be processed, append data to url
603 - if ( s.data && ( s.processData || typeof s.data === "string" ) ) {
604 - cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data;
605 -
606 - // #9682: remove data so that it's not used in an eventual retry
607 - delete s.data;
608 - }
609 -
610 - // Add or update anti-cache param if needed
611 - if ( s.cache === false ) {
612 - cacheURL = cacheURL.replace( rantiCache, "$1" );
613 - uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce++ ) + uncached;
614 - }
615 -
616 - // Put hash and anti-cache on the URL that will be requested (gh-1732)
617 - s.url = cacheURL + uncached;
618 -
619 - // Change '%20' to '+' if this is encoded form body content (gh-2658)
620 - } else if ( s.data && s.processData &&
621 - ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) {
622 - s.data = s.data.replace( r20, "+" );
623 - }
624 -
625 - // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
626 - if ( s.ifModified ) {
627 - if ( jQuery.lastModified[ cacheURL ] ) {
628 - jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
629 - }
630 - if ( jQuery.etag[ cacheURL ] ) {
631 - jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
632 - }
633 - }
634 -
635 - // Set the correct header, if data is being sent
636 - if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
637 - jqXHR.setRequestHeader( "Content-Type", s.contentType );
638 - }
639 -
640 - // Set the Accepts header for the server, depending on the dataType
641 - jqXHR.setRequestHeader(
642 - "Accept",
643 - s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?
644 - s.accepts[ s.dataTypes[ 0 ] ] +
645 - ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
646 - s.accepts[ "*" ]
647 - );
648 -
649 - // Check for headers option
650 - for ( i in s.headers ) {
651 - jqXHR.setRequestHeader( i, s.headers[ i ] );
652 - }
653 -
654 - // Allow custom headers/mimetypes and early abort
655 - if ( s.beforeSend &&
656 - ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {
657 -
658 - // Abort if not done already and return
659 - return jqXHR.abort();
660 - }
661 -
662 - // Aborting is no longer a cancellation
663 - strAbort = "abort";
664 -
665 - // Install callbacks on deferreds
666 - completeDeferred.add( s.complete );
667 - jqXHR.done( s.success );
668 - jqXHR.fail( s.error );
669 -
670 - // Get transport
671 - transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
672 -
673 - // If no transport, we auto-abort
674 - if ( !transport ) {
675 - done( -1, "No Transport" );
676 - } else {
677 - jqXHR.readyState = 1;
678 -
679 - // Send global event
680 - if ( fireGlobals ) {
681 - globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
682 - }
683 -
684 - // If request was aborted inside ajaxSend, stop there
685 - if ( completed ) {
686 - return jqXHR;
687 - }
688 -
689 - // Timeout
690 - if ( s.async && s.timeout > 0 ) {
691 - timeoutTimer = window.setTimeout( function() {
692 - jqXHR.abort( "timeout" );
693 - }, s.timeout );
694 - }
695 -
696 - try {
697 - completed = false;
698 - transport.send( requestHeaders, done );
699 - } catch ( e ) {
700 -
701 - // Rethrow post-completion exceptions
702 - if ( completed ) {
703 - throw e;
704 - }
705 -
706 - // Propagate others as results
707 - done( -1, e );
708 - }
709 - }
710 -
711 - // Callback for when everything is done
712 - function done( status, nativeStatusText, responses, headers ) {
713 - var isSuccess, success, error, response, modified,
714 - statusText = nativeStatusText;
715 -
716 - // Ignore repeat invocations
717 - if ( completed ) {
718 - return;
719 - }
720 -
721 - completed = true;
722 -
723 - // Clear timeout if it exists
724 - if ( timeoutTimer ) {
725 - window.clearTimeout( timeoutTimer );
726 - }
727 -
728 - // Dereference transport for early garbage collection
729 - // (no matter how long the jqXHR object will be used)
730 - transport = undefined;
731 -
732 - // Cache response headers
733 - responseHeadersString = headers || "";
734 -
735 - // Set readyState
736 - jqXHR.readyState = status > 0 ? 4 : 0;
737 -
738 - // Determine if successful
739 - isSuccess = status >= 200 && status < 300 || status === 304;
740 -
741 - // Get response data
742 - if ( responses ) {
743 - response = ajaxHandleResponses( s, jqXHR, responses );
744 - }
745 -
746 - // Convert no matter what (that way responseXXX fields are always set)
747 - response = ajaxConvert( s, response, jqXHR, isSuccess );
748 -
749 - // If successful, handle type chaining
750 - if ( isSuccess ) {
751 -
752 - // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
753 - if ( s.ifModified ) {
754 - modified = jqXHR.getResponseHeader( "Last-Modified" );
755 - if ( modified ) {
756 - jQuery.lastModified[ cacheURL ] = modified;
757 - }
758 - modified = jqXHR.getResponseHeader( "etag" );
759 - if ( modified ) {
760 - jQuery.etag[ cacheURL ] = modified;
761 - }
762 - }
763 -
764 - // if no content
765 - if ( status === 204 || s.type === "HEAD" ) {
766 - statusText = "nocontent";
767 -
768 - // if not modified
769 - } else if ( status === 304 ) {
770 - statusText = "notmodified";
771 -
772 - // If we have data, let's convert it
773 - } else {
774 - statusText = response.state;
775 - success = response.data;
776 - error = response.error;
777 - isSuccess = !error;
778 - }
779 - } else {
780 -
781 - // Extract error from statusText and normalize for non-aborts
782 - error = statusText;
783 - if ( status || !statusText ) {
784 - statusText = "error";
785 - if ( status < 0 ) {
786 - status = 0;
787 - }
788 - }
789 - }
790 -
791 - // Set data for the fake xhr object
792 - jqXHR.status = status;
793 - jqXHR.statusText = ( nativeStatusText || statusText ) + "";
794 -
795 - // Success/Error
796 - if ( isSuccess ) {
797 - deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
798 - } else {
799 - deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
800 - }
801 -
802 - // Status-dependent callbacks
803 - jqXHR.statusCode( statusCode );
804 - statusCode = undefined;
805 -
806 - if ( fireGlobals ) {
807 - globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",
808 - [ jqXHR, s, isSuccess ? success : error ] );
809 - }
810 -
811 - // Complete
812 - completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
813 -
814 - if ( fireGlobals ) {
815 - globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
816 -
817 - // Handle the global AJAX counter
818 - if ( !( --jQuery.active ) ) {
819 - jQuery.event.trigger( "ajaxStop" );
820 - }
821 - }
822 - }
823 -
824 - return jqXHR;
825 - },
826 -
827 - getJSON: function( url, data, callback ) {
828 - return jQuery.get( url, data, callback, "json" );
829 - },
830 -
831 - getScript: function( url, callback ) {
832 - return jQuery.get( url, undefined, callback, "script" );
833 - }
834 - } );
835 -
836 - jQuery.each( [ "get", "post" ], function( i, method ) {
837 - jQuery[ method ] = function( url, data, callback, type ) {
838 -
839 - // Shift arguments if data argument was omitted
840 - if ( isFunction( data ) ) {
841 - type = type || callback;
842 - callback = data;
843 - data = undefined;
844 - }
845 -
846 - // The url can be an options object (which then must have .url)
847 - return jQuery.ajax( jQuery.extend( {
848 - url: url,
849 - type: method,
850 - dataType: type,
851 - data: data,
852 - success: callback
853 - }, jQuery.isPlainObject( url ) && url ) );
854 - };
855 - } );
856 -
857 - return jQuery;
858 - } );
@@ -1,103 +0,0
1 - define( [
2 - "../core",
3 - "../var/isFunction",
4 - "./var/nonce",
5 - "./var/rquery",
6 - "../ajax"
7 - ], function( jQuery, isFunction, nonce, rquery ) {
8 -
9 - "use strict";
10 -
11 - var oldCallbacks = [],
12 - rjsonp = /(=)\?(?=&|$)|\?\?/;
13 -
14 - // Default jsonp settings
15 - jQuery.ajaxSetup( {
16 - jsonp: "callback",
17 - jsonpCallback: function() {
18 - var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) );
19 - this[ callback ] = true;
20 - return callback;
21 - }
22 - } );
23 -
24 - // Detect, normalize options and install callbacks for jsonp requests
25 - jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
26 -
27 - var callbackName, overwritten, responseContainer,
28 - jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
29 - "url" :
30 - typeof s.data === "string" &&
31 - ( s.contentType || "" )
32 - .indexOf( "application/x-www-form-urlencoded" ) === 0 &&
33 - rjsonp.test( s.data ) && "data"
34 - );
35 -
36 - // Handle iff the expected data type is "jsonp" or we have a parameter to set
37 - if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {
38 -
39 - // Get callback name, remembering preexisting value associated with it
40 - callbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ?
41 - s.jsonpCallback() :
42 - s.jsonpCallback;
43 -
44 - // Insert callback into url or form data
45 - if ( jsonProp ) {
46 - s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );
47 - } else if ( s.jsonp !== false ) {
48 - s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
49 - }
50 -
51 - // Use data converter to retrieve json after script execution
52 - s.converters[ "script json" ] = function() {
53 - if ( !responseContainer ) {
54 - jQuery.error( callbackName + " was not called" );
55 - }
56 - return responseContainer[ 0 ];
57 - };
58 -
59 - // Force json dataType
60 - s.dataTypes[ 0 ] = "json";
61 -
62 - // Install callback
63 - overwritten = window[ callbackName ];
64 - window[ callbackName ] = function() {
65 - responseContainer = arguments;
66 - };
67 -
68 - // Clean-up function (fires after converters)
69 - jqXHR.always( function() {
70 -
71 - // If previous value didn't exist - remove it
72 - if ( overwritten === undefined ) {
73 - jQuery( window ).removeProp( callbackName );
74 -
75 - // Otherwise restore preexisting value
76 - } else {
77 - window[ callbackName ] = overwritten;
78 - }
79 -
80 - // Save back as free
81 - if ( s[ callbackName ] ) {
82 -
83 - // Make sure that re-using the options doesn't screw things around
84 - s.jsonpCallback = originalSettings.jsonpCallback;
85 -
86 - // Save the callback name for future use
87 - oldCallbacks.push( callbackName );
88 - }
89 -
90 - // Call if it was a function and we have a response
91 - if ( responseContainer && isFunction( overwritten ) ) {
92 - overwritten( responseContainer[ 0 ] );
93 - }
94 -
95 - responseContainer = overwritten = undefined;
96 - } );
97 -
98 - // Delegate to script
99 - return "script";
100 - }
101 - } );
102 -
103 - } );
@@ -1,77 +0,0
1 - define( [
2 - "../core",
3 - "../core/stripAndCollapse",
4 - "../var/isFunction",
5 - "../core/parseHTML",
6 - "../ajax",
7 - "../traversing",
8 - "../manipulation",
9 - "../selector"
10 - ], function( jQuery, stripAndCollapse, isFunction ) {
11 -
12 - "use strict";
13 -
14 - /**
15 - * Load a url into a page
16 - */
17 - jQuery.fn.load = function( url, params, callback ) {
18 - var selector, type, response,
19 - self = this,
20 - off = url.indexOf( " " );
21 -
22 - if ( off > -1 ) {
23 - selector = stripAndCollapse( url.slice( off ) );
24 - url = url.slice( 0, off );
25 - }
26 -
27 - // If it's a function
28 - if ( isFunction( params ) ) {
29 -
30 - // We assume that it's the callback
31 - callback = params;
32 - params = undefined;
33 -
34 - // Otherwise, build a param string
35 - } else if ( params && typeof params === "object" ) {
36 - type = "POST";
37 - }
38 -
39 - // If we have elements to modify, make the request
40 - if ( self.length > 0 ) {
41 - jQuery.ajax( {
42 - url: url,
43 -
44 - // If "type" variable is undefined, then "GET" method will be used.
45 - // Make value of this field explicit since
46 - // user can override it through ajaxSetup method
47 - type: type || "GET",
48 - dataType: "html",
49 - data: params
50 - } ).done( function( responseText ) {
51 -
52 - // Save response for use in complete callback
53 - response = arguments;
54 -
55 - self.html( selector ?
56 -
57 - // If a selector was specified, locate the right elements in a dummy div
58 - // Exclude scripts to avoid IE 'Permission Denied' errors
59 - jQuery( "<div>" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :
60 -
61 - // Otherwise use the full result
62 - responseText );
63 -
64 - // If the request succeeds, this function gets "data", "status", "jqXHR"
65 - // but they are ignored because response was set above.
66 - // If it fails, this function gets "jqXHR", "status", "error"
67 - } ).always( callback && function( jqXHR, status ) {
68 - self.each( function() {
69 - callback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );
70 - } );
71 - } );
72 - }
73 -
74 - return this;
75 - };
76 -
77 - } );
@@ -1,30 +0,0
1 - define( [
2 - "../core"
3 - ], function( jQuery ) {
4 -
5 - "use strict";
6 -
7 - // Cross-browser xml parsing
8 - jQuery.parseXML = function( data ) {
9 - var xml;
10 - if ( !data || typeof data !== "string" ) {
11 - return null;
12 - }
13 -
14 - // Support: IE 9 - 11 only
15 - // IE throws on parseFromString with invalid input.
16 - try {
17 - xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" );
18 - } catch ( e ) {
19 - xml = undefined;
20 - }
21 -
22 - if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) {
23 - jQuery.error( "Invalid XML: " + data );
24 - }
25 - return xml;
26 - };
27 -
28 - return jQuery.parseXML;
29 -
30 - } );
@@ -1,74 +0,0
1 - define( [
2 - "../core",
3 - "../var/document",
4 - "../ajax"
5 - ], function( jQuery, document ) {
6 -
7 - "use strict";
8 -
9 - // Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)
10 - jQuery.ajaxPrefilter( function( s ) {
11 - if ( s.crossDomain ) {
12 - s.contents.script = false;
13 - }
14 - } );
15 -
16 - // Install script dataType
17 - jQuery.ajaxSetup( {
18 - accepts: {
19 - script: "text/javascript, application/javascript, " +
20 - "application/ecmascript, application/x-ecmascript"
21 - },
22 - contents: {
23 - script: /\b(?:java|ecma)script\b/
24 - },
25 - converters: {
26 - "text script": function( text ) {
27 - jQuery.globalEval( text );
28 - return text;
29 - }
30 - }
31 - } );
32 -
33 - // Handle cache's special case and crossDomain
34 - jQuery.ajaxPrefilter( "script", function( s ) {
35 - if ( s.cache === undefined ) {
36 - s.cache = false;
37 - }
38 - if ( s.crossDomain ) {
39 - s.type = "GET";
40 - }
41 - } );
42 -
43 - // Bind script tag hack transport
44 - jQuery.ajaxTransport( "script", function( s ) {
45 -
46 - // This transport only deals with cross domain or forced-by-attrs requests
47 - if ( s.crossDomain || s.scriptAttrs ) {
48 - var script, callback;
49 - return {
50 - send: function( _, complete ) {
51 - script = jQuery( "<script>" )
52 - .attr( s.scriptAttrs || {} )
53 - .prop( { charset: s.scriptCharset, src: s.url } )
54 - .on( "load error", callback = function( evt ) {
55 - script.remove();
56 - callback = null;
57 - if ( evt ) {
58 - complete( evt.type === "error" ? 404 : 200, evt.type );
59 - }
60 - } );
61 -
62 - // Use native DOM manipulation to avoid our domManip AJAX trickery
63 - document.head.appendChild( script[ 0 ] );
64 - },
65 - abort: function() {
66 - if ( callback ) {
67 - callback();
68 - }
69 - }
70 - };
71 - }
72 - } );
73 -
74 - } );
@@ -1,5 +0,0
1 - define( function() {
2 - "use strict";
3 -
4 - return window.location;
5 - } );
@@ -1,5 +0,0
1 - define( function() {
2 - "use strict";
3 -
4 - return Date.now();
5 - } );
@@ -1,5 +0,0
1 - define( function() {
2 - "use strict";
3 -
4 - return ( /\?/ );
5 - } );
@@ -1,170 +0,0
1 - define( [
2 - "../core",
3 - "../var/support",
4 - "../ajax"
5 - ], function( jQuery, support ) {
6 -
7 - "use strict";
8 -
9 - jQuery.ajaxSettings.xhr = function() {
10 - try {
11 - return new window.XMLHttpRequest();
12 - } catch ( e ) {}
13 - };
14 -
15 - var xhrSuccessStatus = {
16 -
17 - // File protocol always yields status code 0, assume 200
18 - 0: 200,
19 -
20 - // Support: IE <=9 only
21 - // #1450: sometimes IE returns 1223 when it should be 204
22 - 1223: 204
23 - },
24 - xhrSupported = jQuery.ajaxSettings.xhr();
25 -
26 - support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );
27 - support.ajax = xhrSupported = !!xhrSupported;
28 -
29 - jQuery.ajaxTransport( function( options ) {
30 - var callback, errorCallback;
31 -
32 - // Cross domain only allowed if supported through XMLHttpRequest
33 - if ( support.cors || xhrSupported && !options.crossDomain ) {
34 - return {
35 - send: function( headers, complete ) {
36 - var i,
37 - xhr = options.xhr();
38 -
39 - xhr.open(
40 - options.type,
41 - options.url,
42 - options.async,
43 - options.username,
44 - options.password
45 - );
46 -
47 - // Apply custom fields if provided
48 - if ( options.xhrFields ) {
49 - for ( i in options.xhrFields ) {
50 - xhr[ i ] = options.xhrFields[ i ];
51 - }
52 - }
53 -
54 - // Override mime type if needed
55 - if ( options.mimeType && xhr.overrideMimeType ) {
56 - xhr.overrideMimeType( options.mimeType );
57 - }
58 -
59 - // X-Requested-With header
60 - // For cross-domain requests, seeing as conditions for a preflight are
61 - // akin to a jigsaw puzzle, we simply never set it to be sure.
62 - // (it can always be set on a per-request basis or even using ajaxSetup)
63 - // For same-domain requests, won't change header if already provided.
64 - if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) {
65 - headers[ "X-Requested-With" ] = "XMLHttpRequest";
66 - }
67 -
68 - // Set headers
69 - for ( i in headers ) {
70 - xhr.setRequestHeader( i, headers[ i ] );
71 - }
72 -
73 - // Callback
74 - callback = function( type ) {
75 - return function() {
76 - if ( callback ) {
77 - callback = errorCallback = xhr.onload =
78 - xhr.onerror = xhr.onabort = xhr.ontimeout =
79 - xhr.onreadystatechange = null;
80 -
81 - if ( type === "abort" ) {
82 - xhr.abort();
83 - } else if ( type === "error" ) {
84 -
85 - // Support: IE <=9 only
86 - // On a manual native abort, IE9 throws
87 - // errors on any property access that is not readyState
88 - if ( typeof xhr.status !== "number" ) {
89 - complete( 0, "error" );
90 - } else {
91 - complete(
92 -
93 - // File: protocol always yields status 0; see #8605, #14207
94 - xhr.status,
95 - xhr.statusText
96 - );
97 - }
98 - } else {
99 - complete(
100 - xhrSuccessStatus[ xhr.status ] || xhr.status,
101 - xhr.statusText,
102 -
103 - // Support: IE <=9 only
104 - // IE9 has no XHR2 but throws on binary (trac-11426)
105 - // For XHR2 non-text, let the caller handle it (gh-2498)
106 - ( xhr.responseType || "text" ) !== "text" ||
107 - typeof xhr.responseText !== "string" ?
108 - { binary: xhr.response } :
109 - { text: xhr.responseText },
110 - xhr.getAllResponseHeaders()
111 - );
112 - }
113 - }
114 - };
115 - };
116 -
117 - // Listen to events
118 - xhr.onload = callback();
119 - errorCallback = xhr.onerror = xhr.ontimeout = callback( "error" );
120 -
121 - // Support: IE 9 only
122 - // Use onreadystatechange to replace onabort
123 - // to handle uncaught aborts
124 - if ( xhr.onabort !== undefined ) {
125 - xhr.onabort = errorCallback;
126 - } else {
127 - xhr.onreadystatechange = function() {
128 -
129 - // Check readyState before timeout as it changes
130 - if ( xhr.readyState === 4 ) {
131 -
132 - // Allow onerror to be called first,
133 - // but that will not handle a native abort
134 - // Also, save errorCallback to a variable
135 - // as xhr.onerror cannot be accessed
136 - window.setTimeout( function() {
137 - if ( callback ) {
138 - errorCallback();
139 - }
140 - } );
141 - }
142 - };
143 - }
144 -
145 - // Create the abort callback
146 - callback = callback( "abort" );
147 -
148 - try {
149 -
150 - // Do send the request (this may raise an exception)
151 - xhr.send( options.hasContent && options.data || null );
152 - } catch ( e ) {
153 -
154 - // #14683: Only rethrow if this hasn't been notified as an error yet
155 - if ( callback ) {
156 - throw e;
157 - }
158 - }
159 - },
160 -
161 - abort: function() {
162 - if ( callback ) {
163 - callback();
164 - }
165 - }
166 - };
167 - }
168 - } );
169 -
170 - } );
@@ -1,13 +0,0
1 - define( [
2 - "./core",
3 - "./attributes/attr",
4 - "./attributes/prop",
5 - "./attributes/classes",
6 - "./attributes/val"
7 - ], function( jQuery ) {
8 -
9 - "use strict";
10 -
11 - // Return jQuery for attributes-only inclusion
12 - return jQuery;
13 - } );
@@ -1,141 +0,0
1 - define( [
2 - "../core",
3 - "../core/access",
4 - "../core/nodeName",
5 - "./support",
6 - "../var/rnothtmlwhite",
7 - "../selector"
8 - ], function( jQuery, access, nodeName, support, rnothtmlwhite ) {
9 -
10 - "use strict";
11 -
12 - var boolHook,
13 - attrHandle = jQuery.expr.attrHandle;
14 -
15 - jQuery.fn.extend( {
16 - attr: function( name, value ) {
17 - return access( this, jQuery.attr, name, value, arguments.length > 1 );
18 - },
19 -
20 - removeAttr: function( name ) {
21 - return this.each( function() {
22 - jQuery.removeAttr( this, name );
23 - } );
24 - }
25 - } );
26 -
27 - jQuery.extend( {
28 - attr: function( elem, name, value ) {
29 - var ret, hooks,
30 - nType = elem.nodeType;
31 -
32 - // Don't get/set attributes on text, comment and attribute nodes
33 - if ( nType === 3 || nType === 8 || nType === 2 ) {
34 - return;
35 - }
36 -
37 - // Fallback to prop when attributes are not supported
38 - if ( typeof elem.getAttribute === "undefined" ) {
39 - return jQuery.prop( elem, name, value );
40 - }
41 -
42 - // Attribute hooks are determined by the lowercase version
43 - // Grab necessary hook if one is defined
44 - if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
45 - hooks = jQuery.attrHooks[ name.toLowerCase() ] ||
46 - ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );
47 - }
48 -
49 - if ( value !== undefined ) {
50 - if ( value === null ) {
51 - jQuery.removeAttr( elem, name );
52 - return;
53 - }
54 -
55 - if ( hooks && "set" in hooks &&
56 - ( ret = hooks.set( elem, value, name ) ) !== undefined ) {
57 - return ret;
58 - }
59 -
60 - elem.setAttribute( name, value + "" );
61 - return value;
62 - }
63 -
64 - if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
65 - return ret;
66 - }
67 -
68 - ret = jQuery.find.attr( elem, name );
69 -
70 - // Non-existent attributes return null, we normalize to undefined
71 - return ret == null ? undefined : ret;
72 - },
73 -
74 - attrHooks: {
75 - type: {
76 - set: function( elem, value ) {
77 - if ( !support.radioValue && value === "radio" &&
78 - nodeName( elem, "input" ) ) {
79 - var val = elem.value;
80 - elem.setAttribute( "type", value );
81 - if ( val ) {
82 - elem.value = val;
83 - }
84 - return value;
85 - }
86 - }
87 - }
88 - },
89 -
90 - removeAttr: function( elem, value ) {
91 - var name,
92 - i = 0,
93 -
94 - // Attribute names can contain non-HTML whitespace characters
95 - // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2
96 - attrNames = value && value.match( rnothtmlwhite );
97 -
98 - if ( attrNames && elem.nodeType === 1 ) {
99 - while ( ( name = attrNames[ i++ ] ) ) {
100 - elem.removeAttribute( name );
101 - }
102 - }
103 - }
104 - } );
105 -
106 - // Hooks for boolean attributes
107 - boolHook = {
108 - set: function( elem, value, name ) {
109 - if ( value === false ) {
110 -
111 - // Remove boolean attributes when set to false
112 - jQuery.removeAttr( elem, name );
113 - } else {
114 - elem.setAttribute( name, name );
115 - }
116 - return name;
117 - }
118 - };
119 -
120 - jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) {
121 - var getter = attrHandle[ name ] || jQuery.find.attr;
122 -
123 - attrHandle[ name ] = function( elem, name, isXML ) {
124 - var ret, handle,
125 - lowercaseName = name.toLowerCase();
126 -
127 - if ( !isXML ) {
128 -
129 - // Avoid an infinite loop by temporarily removing this function from the getter
130 - handle = attrHandle[ lowercaseName ];
131 - attrHandle[ lowercaseName ] = ret;
132 - ret = getter( elem, name, isXML ) != null ?
133 - lowercaseName :
134 - null;
135 - attrHandle[ lowercaseName ] = handle;
136 - }
137 - return ret;
138 - };
139 - } );
140 -
141 - } );
@@ -1,186 +0,0
1 - define( [
2 - "../core",
3 - "../core/stripAndCollapse",
4 - "../var/isFunction",
5 - "../var/rnothtmlwhite",
6 - "../data/var/dataPriv",
7 - "../core/init"
8 - ], function( jQuery, stripAndCollapse, isFunction, rnothtmlwhite, dataPriv ) {
9 -
10 - "use strict";
11 -
12 - function getClass( elem ) {
13 - return elem.getAttribute && elem.getAttribute( "class" ) || "";
14 - }
15 -
16 - function classesToArray( value ) {
17 - if ( Array.isArray( value ) ) {
18 - return value;
19 - }
20 - if ( typeof value === "string" ) {
21 - return value.match( rnothtmlwhite ) || [];
22 - }
23 - return [];
24 - }
25 -
26 - jQuery.fn.extend( {
27 - addClass: function( value ) {
28 - var classes, elem, cur, curValue, clazz, j, finalValue,
29 - i = 0;
30 -
31 - if ( isFunction( value ) ) {
32 - return this.each( function( j ) {
33 - jQuery( this ).addClass( value.call( this, j, getClass( this ) ) );
34 - } );
35 - }
36 -
37 - classes = classesToArray( value );
38 -
39 - if ( classes.length ) {
40 - while ( ( elem = this[ i++ ] ) ) {
41 - curValue = getClass( elem );
42 - cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
43 -
44 - if ( cur ) {
45 - j = 0;
46 - while ( ( clazz = classes[ j++ ] ) ) {
47 - if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
48 - cur += clazz + " ";
49 - }
50 - }
51 -
52 - // Only assign if different to avoid unneeded rendering.
53 - finalValue = stripAndCollapse( cur );
54 - if ( curValue !== finalValue ) {
55 - elem.setAttribute( "class", finalValue );
56 - }
57 - }
58 - }
59 - }
60 -
61 - return this;
62 - },
63 -
64 - removeClass: function( value ) {
65 - var classes, elem, cur, curValue, clazz, j, finalValue,
66 - i = 0;
67 -
68 - if ( isFunction( value ) ) {
69 - return this.each( function( j ) {
70 - jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );
71 - } );
72 - }
73 -
74 - if ( !arguments.length ) {
75 - return this.attr( "class", "" );
76 - }
77 -
78 - classes = classesToArray( value );
79 -
80 - if ( classes.length ) {
81 - while ( ( elem = this[ i++ ] ) ) {
82 - curValue = getClass( elem );
83 -
84 - // This expression is here for better compressibility (see addClass)
85 - cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
86 -
87 - if ( cur ) {
88 - j = 0;
89 - while ( ( clazz = classes[ j++ ] ) ) {
90 -
91 - // Remove *all* instances
92 - while ( cur.indexOf( " " + clazz + " " ) > -1 ) {
93 - cur = cur.replace( " " + clazz + " ", " " );
94 - }
95 - }
96 -
97 - // Only assign if different to avoid unneeded rendering.
98 - finalValue = stripAndCollapse( cur );
99 - if ( curValue !== finalValue ) {
100 - elem.setAttribute( "class", finalValue );
101 - }
102 - }
103 - }
104 - }
105 -
106 - return this;
107 - },
108 -
109 - toggleClass: function( value, stateVal ) {
110 - var type = typeof value,
111 - isValidValue = type === "string" || Array.isArray( value );
112 -
113 - if ( typeof stateVal === "boolean" && isValidValue ) {
114 - return stateVal ? this.addClass( value ) : this.removeClass( value );
115 - }
116 -
117 - if ( isFunction( value ) ) {
118 - return this.each( function( i ) {
119 - jQuery( this ).toggleClass(
120 - value.call( this, i, getClass( this ), stateVal ),
121 - stateVal
122 - );
123 - } );
124 - }
125 -
126 - return this.each( function() {
127 - var className, i, self, classNames;
128 -
129 - if ( isValidValue ) {
130 -
131 - // Toggle individual class names
132 - i = 0;
133 - self = jQuery( this );
134 - classNames = classesToArray( value );
135 -
136 - while ( ( className = classNames[ i++ ] ) ) {
137 -
138 - // Check each className given, space separated list
139 - if ( self.hasClass( className ) ) {
140 - self.removeClass( className );
141 - } else {
142 - self.addClass( className );
143 - }
144 - }
145 -
146 - // Toggle whole class name
147 - } else if ( value === undefined || type === "boolean" ) {
148 - className = getClass( this );
149 - if ( className ) {
150 -
151 - // Store className if set
152 - dataPriv.set( this, "__className__", className );
153 - }
154 -
155 - // If the element has a class name or if we're passed `false`,
156 - // then remove the whole classname (if there was one, the above saved it).
157 - // Otherwise bring back whatever was previously saved (if anything),
158 - // falling back to the empty string if nothing was stored.
159 - if ( this.setAttribute ) {
160 - this.setAttribute( "class",
161 - className || value === false ?
162 - "" :
163 - dataPriv.get( this, "__className__" ) || ""
164 - );
165 - }
166 - }
167 - } );
168 - },
169 -
170 - hasClass: function( selector ) {
171 - var className, elem,
172 - i = 0;
173 -
174 - className = " " + selector + " ";
175 - while ( ( elem = this[ i++ ] ) ) {
176 - if ( elem.nodeType === 1 &&
177 - ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) {
178 - return true;
179 - }
180 - }
181 -
182 - return false;
183 - }
184 - } );
185 -
186 - } );
@@ -1,143 +0,0
1 - define( [
2 - "../core",
3 - "../core/access",
4 - "./support",
5 - "../selector"
6 - ], function( jQuery, access, support ) {
7 -
8 - "use strict";
9 -
10 - var rfocusable = /^(?:input|select|textarea|button)$/i,
11 - rclickable = /^(?:a|area)$/i;
12 -
13 - jQuery.fn.extend( {
14 - prop: function( name, value ) {
15 - return access( this, jQuery.prop, name, value, arguments.length > 1 );
16 - },
17 -
18 - removeProp: function( name ) {
19 - return this.each( function() {
20 - delete this[ jQuery.propFix[ name ] || name ];
21 - } );
22 - }
23 - } );
24 -
25 - jQuery.extend( {
26 - prop: function( elem, name, value ) {
27 - var ret, hooks,
28 - nType = elem.nodeType;
29 -
30 - // Don't get/set properties on text, comment and attribute nodes
31 - if ( nType === 3 || nType === 8 || nType === 2 ) {
32 - return;
33 - }
34 -
35 - if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
36 -
37 - // Fix name and attach hooks
38 - name = jQuery.propFix[ name ] || name;
39 - hooks = jQuery.propHooks[ name ];
40 - }
41 -
42 - if ( value !== undefined ) {
43 - if ( hooks && "set" in hooks &&
44 - ( ret = hooks.set( elem, value, name ) ) !== undefined ) {
45 - return ret;
46 - }
47 -
48 - return ( elem[ name ] = value );
49 - }
50 -
51 - if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
52 - return ret;
53 - }
54 -
55 - return elem[ name ];
56 - },
57 -
58 - propHooks: {
59 - tabIndex: {
60 - get: function( elem ) {
61 -
62 - // Support: IE <=9 - 11 only
63 - // elem.tabIndex doesn't always return the
64 - // correct value when it hasn't been explicitly set
65 - // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
66 - // Use proper attribute retrieval(#12072)
67 - var tabindex = jQuery.find.attr( elem, "tabindex" );
68 -
69 - if ( tabindex ) {
70 - return parseInt( tabindex, 10 );
71 - }
72 -
73 - if (
74 - rfocusable.test( elem.nodeName ) ||
75 - rclickable.test( elem.nodeName ) &&
76 - elem.href
77 - ) {
78 - return 0;
79 - }
80 -
81 - return -1;
82 - }
83 - }
84 - },
85 -
86 - propFix: {
87 - "for": "htmlFor",
88 - "class": "className"
89 - }
90 - } );
91 -
92 - // Support: IE <=11 only
93 - // Accessing the selectedIndex property
94 - // forces the browser to respect setting selected
95 - // on the option
96 - // The getter ensures a default option is selected
97 - // when in an optgroup
98 - // eslint rule "no-unused-expressions" is disabled for this code
99 - // since it considers such accessions noop
100 - if ( !support.optSelected ) {
101 - jQuery.propHooks.selected = {
102 - get: function( elem ) {
103 -
104 - /* eslint no-unused-expressions: "off" */
105 -
106 - var parent = elem.parentNode;
107 - if ( parent && parent.parentNode ) {
108 - parent.parentNode.selectedIndex;
109 - }
110 - return null;
111 - },
112 - set: function( elem ) {
113 -
114 - /* eslint no-unused-expressions: "off" */
115 -
116 - var parent = elem.parentNode;
117 - if ( parent ) {
118 - parent.selectedIndex;
119 -
120 - if ( parent.parentNode ) {
121 - parent.parentNode.selectedIndex;
122 - }
123 - }
124 - }
125 - };
126 - }
127 -
128 - jQuery.each( [
129 - "tabIndex",
130 - "readOnly",
131 - "maxLength",
132 - "cellSpacing",
133 - "cellPadding",
134 - "rowSpan",
135 - "colSpan",
136 - "useMap",
137 - "frameBorder",
138 - "contentEditable"
139 - ], function() {
140 - jQuery.propFix[ this.toLowerCase() ] = this;
141 - } );
142 -
143 - } );
@@ -1,33 +0,0
1 - define( [
2 - "../var/document",
3 - "../var/support"
4 - ], function( document, support ) {
5 -
6 - "use strict";
7 -
8 - ( function() {
9 - var input = document.createElement( "input" ),
10 - select = document.createElement( "select" ),
11 - opt = select.appendChild( document.createElement( "option" ) );
12 -
13 - input.type = "checkbox";
14 -
15 - // Support: Android <=4.3 only
16 - // Default value for a checkbox should be "on"
17 - support.checkOn = input.value !== "";
18 -
19 - // Support: IE <=11 only
20 - // Must access selectedIndex to make default options select
21 - support.optSelected = opt.selected;
22 -
23 - // Support: IE <=11 only
24 - // An input loses its value after becoming a radio
25 - input = document.createElement( "input" );
26 - input.value = "t";
27 - input.type = "radio";
28 - support.radioValue = input.value === "t";
29 - } )();
30 -
31 - return support;
32 -
33 - } );
@@ -1,191 +0,0
1 - define( [
2 - "../core",
3 - "../core/stripAndCollapse",
4 - "./support",
5 - "../core/nodeName",
6 - "../var/isFunction",
7 -
8 - "../core/init"
9 - ], function( jQuery, stripAndCollapse, support, nodeName, isFunction ) {
10 -
11 - "use strict";
12 -
13 - var rreturn = /\r/g;
14 -
15 - jQuery.fn.extend( {
16 - val: function( value ) {
17 - var hooks, ret, valueIsFunction,
18 - elem = this[ 0 ];
19 -
20 - if ( !arguments.length ) {
21 - if ( elem ) {
22 - hooks = jQuery.valHooks[ elem.type ] ||
23 - jQuery.valHooks[ elem.nodeName.toLowerCase() ];
24 -
25 - if ( hooks &&
26 - "get" in hooks &&
27 - ( ret = hooks.get( elem, "value" ) ) !== undefined
28 - ) {
29 - return ret;
30 - }
31 -
32 - ret = elem.value;
33 -
34 - // Handle most common string cases
35 - if ( typeof ret === "string" ) {
36 - return ret.replace( rreturn, "" );
37 - }
38 -
39 - // Handle cases where value is null/undef or number
40 - return ret == null ? "" : ret;
41 - }
42 -
43 - return;
44 - }
45 -
46 - valueIsFunction = isFunction( value );
47 -
48 - return this.each( function( i ) {
49 - var val;
50 -
51 - if ( this.nodeType !== 1 ) {
52 - return;
53 - }
54 -
55 - if ( valueIsFunction ) {
56 - val = value.call( this, i, jQuery( this ).val() );
57 - } else {
58 - val = value;
59 - }
60 -
61 - // Treat null/undefined as ""; convert numbers to string
62 - if ( val == null ) {
63 - val = "";
64 -
65 - } else if ( typeof val === "number" ) {
66 - val += "";
67 -
68 - } else if ( Array.isArray( val ) ) {
69 - val = jQuery.map( val, function( value ) {
70 - return value == null ? "" : value + "";
71 - } );
72 - }
73 -
74 - hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
75 -
76 - // If set returns undefined, fall back to normal setting
77 - if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) {
78 - this.value = val;
79 - }
80 - } );
81 - }
82 - } );
83 -
84 - jQuery.extend( {
85 - valHooks: {
86 - option: {
87 - get: function( elem ) {
88 -
89 - var val = jQuery.find.attr( elem, "value" );
90 - return val != null ?
91 - val :
92 -
93 - // Support: IE <=10 - 11 only
94 - // option.text throws exceptions (#14686, #14858)
95 - // Strip and collapse whitespace
96 - // https://html.spec.whatwg.org/#strip-and-collapse-whitespace
97 - stripAndCollapse( jQuery.text( elem ) );
98 - }
99 - },
100 - select: {
101 - get: function( elem ) {
102 - var value, option, i,
103 - options = elem.options,
104 - index = elem.selectedIndex,
105 - one = elem.type === "select-one",
106 - values = one ? null : [],
107 - max = one ? index + 1 : options.length;
108 -
109 - if ( index < 0 ) {
110 - i = max;
111 -
112 - } else {
113 - i = one ? index : 0;
114 - }
115 -
116 - // Loop through all the selected options
117 - for ( ; i < max; i++ ) {
118 - option = options[ i ];
119 -
120 - // Support: IE <=9 only
121 - // IE8-9 doesn't update selected after form reset (#2551)
122 - if ( ( option.selected || i === index ) &&
123 -
124 - // Don't return options that are disabled or in a disabled optgroup
125 - !option.disabled &&
126 - ( !option.parentNode.disabled ||
127 - !nodeName( option.parentNode, "optgroup" ) ) ) {
128 -
129 - // Get the specific value for the option
130 - value = jQuery( option ).val();
131 -
132 - // We don't need an array for one selects
133 - if ( one ) {
134 - return value;
135 - }
136 -
137 - // Multi-Selects return an array
138 - values.push( value );
139 - }
140 - }
141 -
142 - return values;
143 - },
144 -
145 - set: function( elem, value ) {
146 - var optionSet, option,
147 - options = elem.options,
148 - values = jQuery.makeArray( value ),
149 - i = options.length;
150 -
151 - while ( i-- ) {
152 - option = options[ i ];
153 -
154 - /* eslint-disable no-cond-assign */
155 -
156 - if ( option.selected =
157 - jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1
158 - ) {
159 - optionSet = true;
160 - }
161 -
162 - /* eslint-enable no-cond-assign */
163 - }
164 -
165 - // Force browsers to behave consistently when non-matching value is set
166 - if ( !optionSet ) {
167 - elem.selectedIndex = -1;
168 - }
169 - return values;
170 - }
171 - }
172 - }
173 - } );
174 -
175 - // Radios and checkboxes getter/setter
176 - jQuery.each( [ "radio", "checkbox" ], function() {
177 - jQuery.valHooks[ this ] = {
178 - set: function( elem, value ) {
179 - if ( Array.isArray( value ) ) {
180 - return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );
181 - }
182 - }
183 - };
184 - if ( !support.checkOn ) {
185 - jQuery.valHooks[ this ].get = function( elem ) {
186 - return elem.getAttribute( "value" ) === null ? "on" : elem.value;
187 - };
188 - }
189 - } );
190 -
191 - } );
@@ -1,236 +0,0
1 - define( [
2 - "./core",
3 - "./core/toType",
4 - "./var/isFunction",
5 - "./var/rnothtmlwhite"
6 - ], function( jQuery, toType, isFunction, rnothtmlwhite ) {
7 -
8 - "use strict";
9 -
10 - // Convert String-formatted options into Object-formatted ones
11 - function createOptions( options ) {
12 - var object = {};
13 - jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {
14 - object[ flag ] = true;
15 - } );
16 - return object;
17 - }
18 -
19 - /*
20 - * Create a callback list using the following parameters:
21 - *
22 - * options: an optional list of space-separated options that will change how
23 - * the callback list behaves or a more traditional option object
24 - *
25 - * By default a callback list will act like an event callback list and can be
26 - * "fired" multiple times.
27 - *
28 - * Possible options:
29 - *
30 - * once: will ensure the callback list can only be fired once (like a Deferred)
31 - *
32 - * memory: will keep track of previous values and will call any callback added
33 - * after the list has been fired right away with the latest "memorized"
34 - * values (like a Deferred)
35 - *
36 - * unique: will ensure a callback can only be added once (no duplicate in the list)
37 - *
38 - * stopOnFalse: interrupt callings when a callback returns false
39 - *
40 - */
41 - jQuery.Callbacks = function( options ) {
42 -
43 - // Convert options from String-formatted to Object-formatted if needed
44 - // (we check in cache first)
45 - options = typeof options === "string" ?
46 - createOptions( options ) :
47 - jQuery.extend( {}, options );
48 -
49 - var // Flag to know if list is currently firing
50 - firing,
51 -
52 - // Last fire value for non-forgettable lists
53 - memory,
54 -
55 - // Flag to know if list was already fired
56 - fired,
57 -
58 - // Flag to prevent firing
59 - locked,
60 -
61 - // Actual callback list
62 - list = [],
63 -
64 - // Queue of execution data for repeatable lists
65 - queue = [],
66 -
67 - // Index of currently firing callback (modified by add/remove as needed)
68 - firingIndex = -1,
69 -
70 - // Fire callbacks
71 - fire = function() {
72 -
73 - // Enforce single-firing
74 - locked = locked || options.once;
75 -
76 - // Execute callbacks for all pending executions,
77 - // respecting firingIndex overrides and runtime changes
78 - fired = firing = true;
79 - for ( ; queue.length; firingIndex = -1 ) {
80 - memory = queue.shift();
81 - while ( ++firingIndex < list.length ) {
82 -
83 - // Run callback and check for early termination
84 - if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&
85 - options.stopOnFalse ) {
86 -
87 - // Jump to end and forget the data so .add doesn't re-fire
88 - firingIndex = list.length;
89 - memory = false;
90 - }
91 - }
92 - }
93 -
94 - // Forget the data if we're done with it
95 - if ( !options.memory ) {
96 - memory = false;
97 - }
98 -
99 - firing = false;
100 -
101 - // Clean up if we're done firing for good
102 - if ( locked ) {
103 -
104 - // Keep an empty list if we have data for future add calls
105 - if ( memory ) {
106 - list = [];
107 -
108 - // Otherwise, this object is spent
109 - } else {
110 - list = "";
111 - }
112 - }
113 - },
114 -
115 - // Actual Callbacks object
116 - self = {
117 -
118 - // Add a callback or a collection of callbacks to the list
119 - add: function() {
120 - if ( list ) {
121 -
122 - // If we have memory from a past run, we should fire after adding
123 - if ( memory && !firing ) {
124 - firingIndex = list.length - 1;
125 - queue.push( memory );
126 - }
127 -
128 - ( function add( args ) {
129 - jQuery.each( args, function( _, arg ) {
130 - if ( isFunction( arg ) ) {
131 - if ( !options.unique || !self.has( arg ) ) {
132 - list.push( arg );
133 - }
134 - } else if ( arg && arg.length && toType( arg ) !== "string" ) {
135 -
136 - // Inspect recursively
137 - add( arg );
138 - }
139 - } );
140 - } )( arguments );
141 -
142 - if ( memory && !firing ) {
143 - fire();
144 - }
145 - }
146 - return this;
147 - },
148 -
149 - // Remove a callback from the list
150 - remove: function() {
151 - jQuery.each( arguments, function( _, arg ) {
152 - var index;
153 - while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
154 - list.splice( index, 1 );
155 -
156 - // Handle firing indexes
157 - if ( index <= firingIndex ) {
158 - firingIndex--;
159 - }
160 - }
161 - } );
162 - return this;
163 - },
164 -
165 - // Check if a given callback is in the list.
166 - // If no argument is given, return whether or not list has callbacks attached.
167 - has: function( fn ) {
168 - return fn ?
169 - jQuery.inArray( fn, list ) > -1 :
170 - list.length > 0;
171 - },
172 -
173 - // Remove all callbacks from the list
174 - empty: function() {
175 - if ( list ) {
176 - list = [];
177 - }
178 - return this;
179 - },
180 -
181 - // Disable .fire and .add
182 - // Abort any current/pending executions
183 - // Clear all callbacks and values
184 - disable: function() {
185 - locked = queue = [];
186 - list = memory = "";
187 - return this;
188 - },
189 - disabled: function() {
190 - return !list;
191 - },
192 -
193 - // Disable .fire
194 - // Also disable .add unless we have memory (since it would have no effect)
195 - // Abort any pending executions
196 - lock: function() {
197 - locked = queue = [];
198 - if ( !memory && !firing ) {
199 - list = memory = "";
200 - }
201 - return this;
202 - },
203 - locked: function() {
204 - return !!locked;
205 - },
206 -
207 - // Call all callbacks with the given context and arguments
208 - fireWith: function( context, args ) {
209 - if ( !locked ) {
210 - args = args || [];
211 - args = [ context, args.slice ? args.slice() : args ];
212 - queue.push( args );
213 - if ( !firing ) {
214 - fire();
215 - }
216 - }
217 - return this;
218 - },
219 -
220 - // Call all the callbacks with the given arguments
221 - fire: function() {
222 - self.fireWith( this, arguments );
223 - return this;
224 - },
225 -
226 - // To know if the callbacks have already been called at least once
227 - fired: function() {
228 - return !!fired;
229 - }
230 - };
231 -
232 - return self;
233 - };
234 -
235 - return jQuery;
236 - } );
@@ -1,399 +0,0
1 - /* global Symbol */
2 - // Defining this global in .eslintrc.json would create a danger of using the global
3 - // unguarded in another place, it seems safer to define global only for this module
4 -
5 - define( [
6 - "./var/arr",
7 - "./var/document",
8 - "./var/getProto",
9 - "./var/slice",
10 - "./var/concat",
11 - "./var/push",
12 - "./var/indexOf",
13 - "./var/class2type",
14 - "./var/toString",
15 - "./var/hasOwn",
16 - "./var/fnToString",
17 - "./var/ObjectFunctionString",
18 - "./var/support",
19 - "./var/isFunction",
20 - "./var/isWindow",
21 - "./core/DOMEval",
22 - "./core/toType"
23 - ], function( arr, document, getProto, slice, concat, push, indexOf,
24 - class2type, toString, hasOwn, fnToString, ObjectFunctionString,
25 - support, isFunction, isWindow, DOMEval, toType ) {
26 -
27 - "use strict";
28 -
29 - var
30 - version = "3.4.1",
31 -
32 - // Define a local copy of jQuery
33 - jQuery = function( selector, context ) {
34 -
35 - // The jQuery object is actually just the init constructor 'enhanced'
36 - // Need init if jQuery is called (just allow error to be thrown if not included)
37 - return new jQuery.fn.init( selector, context );
38 - },
39 -
40 - // Support: Android <=4.0 only
41 - // Make sure we trim BOM and NBSP
42 - rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
43 -
44 - jQuery.fn = jQuery.prototype = {
45 -
46 - // The current version of jQuery being used
47 - jquery: version,
48 -
49 - constructor: jQuery,
50 -
51 - // The default length of a jQuery object is 0
52 - length: 0,
53 -
54 - toArray: function() {
55 - return slice.call( this );
56 - },
57 -
58 - // Get the Nth element in the matched element set OR
59 - // Get the whole matched element set as a clean array
60 - get: function( num ) {
61 -
62 - // Return all the elements in a clean array
63 - if ( num == null ) {
64 - return slice.call( this );
65 - }
66 -
67 - // Return just the one element from the set
68 - return num < 0 ? this[ num + this.length ] : this[ num ];
69 - },
70 -
71 - // Take an array of elements and push it onto the stack
72 - // (returning the new matched element set)
73 - pushStack: function( elems ) {
74 -
75 - // Build a new jQuery matched element set
76 - var ret = jQuery.merge( this.constructor(), elems );
77 -
78 - // Add the old object onto the stack (as a reference)
79 - ret.prevObject = this;
80 -
81 - // Return the newly-formed element set
82 - return ret;
83 - },
84 -
85 - // Execute a callback for every element in the matched set.
86 - each: function( callback ) {
87 - return jQuery.each( this, callback );
88 - },
89 -
90 - map: function( callback ) {
91 - return this.pushStack( jQuery.map( this, function( elem, i ) {
92 - return callback.call( elem, i, elem );
93 - } ) );
94 - },
95 -
96 - slice: function() {
97 - return this.pushStack( slice.apply( this, arguments ) );
98 - },
99 -
100 - first: function() {
101 - return this.eq( 0 );
102 - },
103 -
104 - last: function() {
105 - return this.eq( -1 );
106 - },
107 -
108 - eq: function( i ) {
109 - var len = this.length,
110 - j = +i + ( i < 0 ? len : 0 );
111 - return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );
112 - },
113 -
114 - end: function() {
115 - return this.prevObject || this.constructor();
116 - },
117 -
118 - // For internal use only.
119 - // Behaves like an Array's method, not like a jQuery method.
120 - push: push,
121 - sort: arr.sort,
122 - splice: arr.splice
123 - };
124 -
125 - jQuery.extend = jQuery.fn.extend = function() {
126 - var options, name, src, copy, copyIsArray, clone,
127 - target = arguments[ 0 ] || {},
128 - i = 1,
129 - length = arguments.length,
130 - deep = false;
131 -
132 - // Handle a deep copy situation
133 - if ( typeof target === "boolean" ) {
134 - deep = target;
135 -
136 - // Skip the boolean and the target
137 - target = arguments[ i ] || {};
138 - i++;
139 - }
140 -
141 - // Handle case when target is a string or something (possible in deep copy)
142 - if ( typeof target !== "object" && !isFunction( target ) ) {
143 - target = {};
144 - }
145 -
146 - // Extend jQuery itself if only one argument is passed
147 - if ( i === length ) {
148 - target = this;
149 - i--;
150 - }
151 -
152 - for ( ; i < length; i++ ) {
153 -
154 - // Only deal with non-null/undefined values
155 - if ( ( options = arguments[ i ] ) != null ) {
156 -
157 - // Extend the base object
158 - for ( name in options ) {
159 - copy = options[ name ];
160 -
161 - // Prevent Object.prototype pollution
162 - // Prevent never-ending loop
163 - if ( name === "__proto__" || target === copy ) {
164 - continue;
165 - }
166 -
167 - // Recurse if we're merging plain objects or arrays
168 - if ( deep && copy && ( jQuery.isPlainObject( copy ) ||
169 - ( copyIsArray = Array.isArray( copy ) ) ) ) {
170 - src = target[ name ];
171 -
172 - // Ensure proper type for the source value
173 - if ( copyIsArray && !Array.isArray( src ) ) {
174 - clone = [];
175 - } else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {
176 - clone = {};
177 - } else {
178 - clone = src;
179 - }
180 - copyIsArray = false;
181 -
182 - // Never move original objects, clone them
183 - target[ name ] = jQuery.extend( deep, clone, copy );
184 -
185 - // Don't bring in undefined values
186 - } else if ( copy !== undefined ) {
187 - target[ name ] = copy;
188 - }
189 - }
190 - }
191 - }
192 -
193 - // Return the modified object
194 - return target;
195 - };
196 -
197 - jQuery.extend( {
198 -
199 - // Unique for each copy of jQuery on the page
200 - expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
201 -
202 - // Assume jQuery is ready without the ready module
203 - isReady: true,
204 -
205 - error: function( msg ) {
206 - throw new Error( msg );
207 - },
208 -
209 - noop: function() {},
210 -
211 - isPlainObject: function( obj ) {
212 - var proto, Ctor;
213 -
214 - // Detect obvious negatives
215 - // Use toString instead of jQuery.type to catch host objects
216 - if ( !obj || toString.call( obj ) !== "[object Object]" ) {
217 - return false;
218 - }
219 -
220 - proto = getProto( obj );
221 -
222 - // Objects with no prototype (e.g., `Object.create( null )`) are plain
223 - if ( !proto ) {
224 - return true;
225 - }
226 -
227 - // Objects with prototype are plain iff they were constructed by a global Object function
228 - Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor;
229 - return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString;
230 - },
231 -
232 - isEmptyObject: function( obj ) {
233 - var name;
234 -
235 - for ( name in obj ) {
236 - return false;
237 - }
238 - return true;
239 - },
240 -
241 - // Evaluates a script in a global context
242 - globalEval: function( code, options ) {
243 - DOMEval( code, { nonce: options && options.nonce } );
244 - },
245 -
246 - each: function( obj, callback ) {
247 - var length, i = 0;
248 -
249 - if ( isArrayLike( obj ) ) {
250 - length = obj.length;
251 - for ( ; i < length; i++ ) {
252 - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
253 - break;
254 - }
255 - }
256 - } else {
257 - for ( i in obj ) {
258 - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
259 - break;
260 - }
261 - }
262 - }
263 -
264 - return obj;
265 - },
266 -
267 - // Support: Android <=4.0 only
268 - trim: function( text ) {
269 - return text == null ?
270 - "" :
271 - ( text + "" ).replace( rtrim, "" );
272 - },
273 -
274 - // results is for internal usage only
275 - makeArray: function( arr, results ) {
276 - var ret = results || [];
277 -
278 - if ( arr != null ) {
279 - if ( isArrayLike( Object( arr ) ) ) {
280 - jQuery.merge( ret,
281 - typeof arr === "string" ?
282 - [ arr ] : arr
283 - );
284 - } else {
285 - push.call( ret, arr );
286 - }
287 - }
288 -
289 - return ret;
290 - },
291 -
292 - inArray: function( elem, arr, i ) {
293 - return arr == null ? -1 : indexOf.call( arr, elem, i );
294 - },
295 -
296 - // Support: Android <=4.0 only, PhantomJS 1 only
297 - // push.apply(_, arraylike) throws on ancient WebKit
298 - merge: function( first, second ) {
299 - var len = +second.length,
300 - j = 0,
301 - i = first.length;
302 -
303 - for ( ; j < len; j++ ) {
304 - first[ i++ ] = second[ j ];
305 - }
306 -
307 - first.length = i;
308 -
309 - return first;
310 - },
311 -
312 - grep: function( elems, callback, invert ) {
313 - var callbackInverse,
314 - matches = [],
315 - i = 0,
316 - length = elems.length,
317 - callbackExpect = !invert;
318 -
319 - // Go through the array, only saving the items
320 - // that pass the validator function
321 - for ( ; i < length; i++ ) {
322 - callbackInverse = !callback( elems[ i ], i );
323 - if ( callbackInverse !== callbackExpect ) {
324 - matches.push( elems[ i ] );
325 - }
326 - }
327 -
328 - return matches;
329 - },
330 -
331 - // arg is for internal usage only
332 - map: function( elems, callback, arg ) {
333 - var length, value,
334 - i = 0,
335 - ret = [];
336 -
337 - // Go through the array, translating each of the items to their new values
338 - if ( isArrayLike( elems ) ) {
339 - length = elems.length;
340 - for ( ; i < length; i++ ) {
341 - value = callback( elems[ i ], i, arg );
342 -
343 - if ( value != null ) {
344 - ret.push( value );
345 - }
346 - }
347 -
348 - // Go through every key on the object,
349 - } else {
350 - for ( i in elems ) {
351 - value = callback( elems[ i ], i, arg );
352 -
353 - if ( value != null ) {
354 - ret.push( value );
355 - }
356 - }
357 - }
358 -
359 - // Flatten any nested arrays
360 - return concat.apply( [], ret );
361 - },
362 -
363 - // A global GUID counter for objects
364 - guid: 1,
365 -
366 - // jQuery.support is not used in Core but other projects attach their
367 - // properties to it so it needs to exist.
368 - support: support
369 - } );
370 -
371 - if ( typeof Symbol === "function" ) {
372 - jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];
373 - }
374 -
375 - // Populate the class2type map
376 - jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
377 - function( i, name ) {
378 - class2type[ "[object " + name + "]" ] = name.toLowerCase();
379 - } );
380 -
381 - function isArrayLike( obj ) {
382 -
383 - // Support: real iOS 8.2 only (not reproducible in simulator)
384 - // `in` check used to prevent JIT error (gh-2145)
385 - // hasOwn isn't used here due to false negatives
386 - // regarding Nodelist length in IE
387 - var length = !!obj && "length" in obj && obj.length,
388 - type = toType( obj );
389 -
390 - if ( isFunction( obj ) || isWindow( obj ) ) {
391 - return false;
392 - }
393 -
394 - return type === "array" || length === 0 ||
395 - typeof length === "number" && length > 0 && ( length - 1 ) in obj;
396 - }
397 -
398 - return jQuery;
399 - } );
@@ -1,43 +0,0
1 - define( [
2 - "../var/document"
3 - ], function( document ) {
4 - "use strict";
5 -
6 - var preservedScriptAttributes = {
7 - type: true,
8 - src: true,
9 - nonce: true,
10 - noModule: true
11 - };
12 -
13 - function DOMEval( code, node, doc ) {
14 - doc = doc || document;
15 -
16 - var i, val,
17 - script = doc.createElement( "script" );
18 -
19 - script.text = code;
20 - if ( node ) {
21 - for ( i in preservedScriptAttributes ) {
22 -
23 - // Support: Firefox 64+, Edge 18+
24 - // Some browsers don't support the "nonce" property on scripts.
25 - // On the other hand, just using `getAttribute` is not enough as
26 - // the `nonce` attribute is reset to an empty string whenever it
27 - // becomes browsing-context connected.
28 - // See https://github.com/whatwg/html/issues/2369
29 - // See https://html.spec.whatwg.org/#nonce-attributes
30 - // The `node.getAttribute` check was added for the sake of
31 - // `jQuery.globalEval` so that it can fake a nonce-containing node
32 - // via an object.
33 - val = node[ i ] || node.getAttribute && node.getAttribute( i );
34 - if ( val ) {
35 - script.setAttribute( i, val );
36 - }
37 - }
38 - }
39 - doc.head.appendChild( script ).parentNode.removeChild( script );
40 - }
41 -
42 - return DOMEval;
43 - } );
@@ -1,72 +0,0
1 - define( [
2 - "../core",
3 - "../core/toType",
4 - "../var/isFunction"
5 - ], function( jQuery, toType, isFunction ) {
6 -
7 - "use strict";
8 -
9 - // Multifunctional method to get and set values of a collection
10 - // The value/s can optionally be executed if it's a function
11 - var access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
12 - var i = 0,
13 - len = elems.length,
14 - bulk = key == null;
15 -
16 - // Sets many values
17 - if ( toType( key ) === "object" ) {
18 - chainable = true;
19 - for ( i in key ) {
20 - access( elems, fn, i, key[ i ], true, emptyGet, raw );
21 - }
22 -
23 - // Sets one value
24 - } else if ( value !== undefined ) {
25 - chainable = true;
26 -
27 - if ( !isFunction( value ) ) {
28 - raw = true;
29 - }
30 -
31 - if ( bulk ) {
32 -
33 - // Bulk operations run against the entire set
34 - if ( raw ) {
35 - fn.call( elems, value );
36 - fn = null;
37 -
38 - // ...except when executing function values
39 - } else {
40 - bulk = fn;
41 - fn = function( elem, key, value ) {
42 - return bulk.call( jQuery( elem ), value );
43 - };
44 - }
45 - }
46 -
47 - if ( fn ) {
48 - for ( ; i < len; i++ ) {
49 - fn(
50 - elems[ i ], key, raw ?
51 - value :
52 - value.call( elems[ i ], i, fn( elems[ i ], key ) )
53 - );
54 - }
55 - }
56 - }
57 -
58 - if ( chainable ) {
59 - return elems;
60 - }
61 -
62 - // Gets
63 - if ( bulk ) {
64 - return fn.call( elems );
65 - }
66 -
67 - return len ? fn( elems[ 0 ], key ) : emptyGet;
68 - };
69 -
70 - return access;
71 -
72 - } );
@@ -1,23 +0,0
1 - define( [], function() {
2 -
3 - "use strict";
4 -
5 - // Matches dashed string for camelizing
6 - var rmsPrefix = /^-ms-/,
7 - rdashAlpha = /-([a-z])/g;
8 -
9 - // Used by camelCase as callback to replace()
10 - function fcamelCase( all, letter ) {
11 - return letter.toUpperCase();
12 - }
13 -
14 - // Convert dashed to camelCase; used by the css and data modules
15 - // Support: IE <=9 - 11, Edge 12 - 15
16 - // Microsoft forgot to hump their vendor prefix (#9572)
17 - function camelCase( string ) {
18 - return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
19 - }
20 -
21 - return camelCase;
22 -
23 - } );
@@ -1,129 +0,0
1 - // Initialize a jQuery object
2 - define( [
3 - "../core",
4 - "../var/document",
5 - "../var/isFunction",
6 - "./var/rsingleTag",
7 -
8 - "../traversing/findFilter"
9 - ], function( jQuery, document, isFunction, rsingleTag ) {
10 -
11 - "use strict";
12 -
13 - // A central reference to the root jQuery(document)
14 - var rootjQuery,
15 -
16 - // A simple way to check for HTML strings
17 - // Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
18 - // Strict HTML recognition (#11290: must start with <)
19 - // Shortcut simple #id case for speed
20 - rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,
21 -
22 - init = jQuery.fn.init = function( selector, context, root ) {
23 - var match, elem;
24 -
25 - // HANDLE: $(""), $(null), $(undefined), $(false)
26 - if ( !selector ) {
27 - return this;
28 - }
29 -
30 - // Method init() accepts an alternate rootjQuery
31 - // so migrate can support jQuery.sub (gh-2101)
32 - root = root || rootjQuery;
33 -
34 - // Handle HTML strings
35 - if ( typeof selector === "string" ) {
36 - if ( selector[ 0 ] === "<" &&
37 - selector[ selector.length - 1 ] === ">" &&
38 - selector.length >= 3 ) {
39 -
40 - // Assume that strings that start and end with <> are HTML and skip the regex check
41 - match = [ null, selector, null ];
42 -
43 - } else {
44 - match = rquickExpr.exec( selector );
45 - }
46 -
47 - // Match html or make sure no context is specified for #id
48 - if ( match && ( match[ 1 ] || !context ) ) {
49 -
50 - // HANDLE: $(html) -> $(array)
51 - if ( match[ 1 ] ) {
52 - context = context instanceof jQuery ? context[ 0 ] : context;
53 -
54 - // Option to run scripts is true for back-compat
55 - // Intentionally let the error be thrown if parseHTML is not present
56 - jQuery.merge( this, jQuery.parseHTML(
57 - match[ 1 ],
58 - context && context.nodeType ? context.ownerDocument || context : document,
59 - true
60 - ) );
61 -
62 - // HANDLE: $(html, props)
63 - if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {
64 - for ( match in context ) {
65 -
66 - // Properties of context are called as methods if possible
67 - if ( isFunction( this[ match ] ) ) {
68 - this[ match ]( context[ match ] );
69 -
70 - // ...and otherwise set as attributes
71 - } else {
72 - this.attr( match, context[ match ] );
73 - }
74 - }
75 - }
76 -
77 - return this;
78 -
79 - // HANDLE: $(#id)
80 - } else {
81 - elem = document.getElementById( match[ 2 ] );
82 -
83 - if ( elem ) {
84 -
85 - // Inject the element directly into the jQuery object
86 - this[ 0 ] = elem;
87 - this.length = 1;
88 - }
89 - return this;
90 - }
91 -
92 - // HANDLE: $(expr, $(...))
93 - } else if ( !context || context.jquery ) {
94 - return ( context || root ).find( selector );
95 -
96 - // HANDLE: $(expr, context)
97 - // (which is just equivalent to: $(context).find(expr)
98 - } else {
99 - return this.constructor( context ).find( selector );
100 - }
101 -
102 - // HANDLE: $(DOMElement)
103 - } else if ( selector.nodeType ) {
104 - this[ 0 ] = selector;
105 - this.length = 1;
106 - return this;
107 -
108 - // HANDLE: $(function)
109 - // Shortcut for document ready
110 - } else if ( isFunction( selector ) ) {
111 - return root.ready !== undefined ?
112 - root.ready( selector ) :
113 -
114 - // Execute immediately if ready is not present
115 - selector( jQuery );
116 - }
117 -
118 - return jQuery.makeArray( selector, this );
119 - };
120 -
121 - // Give the init function the jQuery prototype for later instantiation
122 - init.prototype = jQuery.fn;
123 -
124 - // Initialize central reference
125 - rootjQuery = jQuery( document );
126 -
127 - return init;
128 -
129 - } );
@@ -1,26 +0,0
1 - define( [
2 - "../core",
3 - "../var/documentElement",
4 - "../selector" // jQuery.contains
5 - ], function( jQuery, documentElement ) {
6 - "use strict";
7 -
8 - var isAttached = function( elem ) {
9 - return jQuery.contains( elem.ownerDocument, elem );
10 - },
11 - composed = { composed: true };
12 -
13 - // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only
14 - // Check attachment across shadow DOM boundaries when possible (gh-3504)
15 - // Support: iOS 10.0-10.2 only
16 - // Early iOS 10 versions support `attachShadow` but not `getRootNode`,
17 - // leading to errors. We need to check for `getRootNode`.
18 - if ( documentElement.getRootNode ) {
19 - isAttached = function( elem ) {
20 - return jQuery.contains( elem.ownerDocument, elem ) ||
21 - elem.getRootNode( composed ) === elem.ownerDocument;
22 - };
23 - }
24 -
25 - return isAttached;
26 - } );
@@ -1,13 +0,0
1 - define( function() {
2 -
3 - "use strict";
4 -
5 - function nodeName( elem, name ) {
6 -
7 - return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
8 -
9 - };
10 -
11 - return nodeName;
12 -
13 - } );
@@ -1,65 +0,0
1 - define( [
2 - "../core",
3 - "../var/document",
4 - "./var/rsingleTag",
5 - "../manipulation/buildFragment",
6 -
7 - // This is the only module that needs core/support
8 - "./support"
9 - ], function( jQuery, document, rsingleTag, buildFragment, support ) {
10 -
11 - "use strict";
12 -
13 - // Argument "data" should be string of html
14 - // context (optional): If specified, the fragment will be created in this context,
15 - // defaults to document
16 - // keepScripts (optional): If true, will include scripts passed in the html string
17 - jQuery.parseHTML = function( data, context, keepScripts ) {
18 - if ( typeof data !== "string" ) {
19 - return [];
20 - }
21 - if ( typeof context === "boolean" ) {
22 - keepScripts = context;
23 - context = false;
24 - }
25 -
26 - var base, parsed, scripts;
27 -
28 - if ( !context ) {
29 -
30 - // Stop scripts or inline event handlers from being executed immediately
31 - // by using document.implementation
32 - if ( support.createHTMLDocument ) {
33 - context = document.implementation.createHTMLDocument( "" );
34 -
35 - // Set the base href for the created document
36 - // so any parsed elements with URLs
37 - // are based on the document's URL (gh-2965)
38 - base = context.createElement( "base" );
39 - base.href = document.location.href;
40 - context.head.appendChild( base );
41 - } else {
42 - context = document;
43 - }
44 - }
45 -
46 - parsed = rsingleTag.exec( data );
47 - scripts = !keepScripts && [];
48 -
49 - // Single tag
50 - if ( parsed ) {
51 - return [ context.createElement( parsed[ 1 ] ) ];
52 - }
53 -
54 - parsed = buildFragment( [ data ], context, scripts );
55 -
56 - if ( scripts && scripts.length ) {
57 - jQuery( scripts ).remove();
58 - }
59 -
60 - return jQuery.merge( [], parsed.childNodes );
61 - };
62 -
63 - return jQuery.parseHTML;
64 -
65 - } );
@@ -1,97 +0,0
1 - define( [
2 - "../core",
3 - "../var/document",
4 - "../var/isFunction"
5 - ], function( jQuery, document, isFunction ) {
6 -
7 - "use strict";
8 -
9 - var readyCallbacks = [],
10 - whenReady = function( fn ) {
11 - readyCallbacks.push( fn );
12 - },
13 - executeReady = function( fn ) {
14 -
15 - // Prevent errors from freezing future callback execution (gh-1823)
16 - // Not backwards-compatible as this does not execute sync
17 - window.setTimeout( function() {
18 - fn.call( document, jQuery );
19 - } );
20 - };
21 -
22 - jQuery.fn.ready = function( fn ) {
23 - whenReady( fn );
24 - return this;
25 - };
26 -
27 - jQuery.extend( {
28 -
29 - // Is the DOM ready to be used? Set to true once it occurs.
30 - isReady: false,
31 -
32 - // A counter to track how many items to wait for before
33 - // the ready event fires. See #6781
34 - readyWait: 1,
35 -
36 - ready: function( wait ) {
37 -
38 - // Abort if there are pending holds or we're already ready
39 - if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
40 - return;
41 - }
42 -
43 - // Remember that the DOM is ready
44 - jQuery.isReady = true;
45 -
46 - // If a normal DOM Ready event fired, decrement, and wait if need be
47 - if ( wait !== true && --jQuery.readyWait > 0 ) {
48 - return;
49 - }
50 -
51 - whenReady = function( fn ) {
52 - readyCallbacks.push( fn );
53 -
54 - while ( readyCallbacks.length ) {
55 - fn = readyCallbacks.shift();
56 - if ( isFunction( fn ) ) {
57 - executeReady( fn );
58 - }
59 - }
60 - };
61 -
62 - whenReady();
63 - }
64 - } );
65 -
66 - // Make jQuery.ready Promise consumable (gh-1778)
67 - jQuery.ready.then = jQuery.fn.ready;
68 -
69 - /**
70 - * The ready event handler and self cleanup method
71 - */
72 - function completed() {
73 - document.removeEventListener( "DOMContentLoaded", completed );
74 - window.removeEventListener( "load", completed );
75 - jQuery.ready();
76 - }
77 -
78 - // Catch cases where $(document).ready() is called
79 - // after the browser event has already occurred.
80 - // Support: IE9-10 only
81 - // Older IE sometimes signals "interactive" too soon
82 - if ( document.readyState === "complete" ||
83 - ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) {
84 -
85 - // Handle it asynchronously to allow scripts the opportunity to delay ready
86 - window.setTimeout( jQuery.ready );
87 -
88 - } else {
89 -
90 - // Use the handy event callback
91 - document.addEventListener( "DOMContentLoaded", completed );
92 -
93 - // A fallback to window.onload, that will always work
94 - window.addEventListener( "load", completed );
95 - }
96 -
97 - } );
@@ -1,86 +0,0
1 - define( [
2 - "../core",
3 - "../var/document",
4 - "../core/readyException",
5 - "../deferred"
6 - ], function( jQuery, document ) {
7 -
8 - "use strict";
9 -
10 - // The deferred used on DOM ready
11 - var readyList = jQuery.Deferred();
12 -
13 - jQuery.fn.ready = function( fn ) {
14 -
15 - readyList
16 - .then( fn )
17 -
18 - // Wrap jQuery.readyException in a function so that the lookup
19 - // happens at the time of error handling instead of callback
20 - // registration.
21 - .catch( function( error ) {
22 - jQuery.readyException( error );
23 - } );
24 -
25 - return this;
26 - };
27 -
28 - jQuery.extend( {
29 -
30 - // Is the DOM ready to be used? Set to true once it occurs.
31 - isReady: false,
32 -
33 - // A counter to track how many items to wait for before
34 - // the ready event fires. See #6781
35 - readyWait: 1,
36 -
37 - // Handle when the DOM is ready
38 - ready: function( wait ) {
39 -
40 - // Abort if there are pending holds or we're already ready
41 - if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
42 - return;
43 - }
44 -
45 - // Remember that the DOM is ready
46 - jQuery.isReady = true;
47 -
48 - // If a normal DOM Ready event fired, decrement, and wait if need be
49 - if ( wait !== true && --jQuery.readyWait > 0 ) {
50 - return;
51 - }
52 -
53 - // If there are functions bound, to execute
54 - readyList.resolveWith( document, [ jQuery ] );
55 - }
56 - } );
57 -
58 - jQuery.ready.then = readyList.then;
59 -
60 - // The ready event handler and self cleanup method
61 - function completed() {
62 - document.removeEventListener( "DOMContentLoaded", completed );
63 - window.removeEventListener( "load", completed );
64 - jQuery.ready();
65 - }
66 -
67 - // Catch cases where $(document).ready() is called
68 - // after the browser event has already occurred.
69 - // Support: IE <=9 - 10 only
70 - // Older IE sometimes signals "interactive" too soon
71 - if ( document.readyState === "complete" ||
72 - ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) {
73 -
74 - // Handle it asynchronously to allow scripts the opportunity to delay ready
75 - window.setTimeout( jQuery.ready );
76 -
77 - } else {
78 -
79 - // Use the handy event callback
80 - document.addEventListener( "DOMContentLoaded", completed );
81 -
82 - // A fallback to window.onload, that will always work
83 - window.addEventListener( "load", completed );
84 - }
85 -
86 - } );
@@ -1,13 +0,0
1 - define( [
2 - "../core"
3 - ], function( jQuery ) {
4 -
5 - "use strict";
6 -
7 - jQuery.readyException = function( error ) {
8 - window.setTimeout( function() {
9 - throw error;
10 - } );
11 - };
12 -
13 - } );
@@ -1,14 +0,0
1 - define( [
2 - "../var/rnothtmlwhite"
3 - ], function( rnothtmlwhite ) {
4 - "use strict";
5 -
6 - // Strip and collapse whitespace according to HTML spec
7 - // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace
8 - function stripAndCollapse( value ) {
9 - var tokens = value.match( rnothtmlwhite ) || [];
10 - return tokens.join( " " );
11 - }
12 -
13 - return stripAndCollapse;
14 - } );
@@ -1,20 +0,0
1 - define( [
2 - "../var/document",
3 - "../var/support"
4 - ], function( document, support ) {
5 -
6 - "use strict";
7 -
8 - // Support: Safari 8 only
9 - // In Safari 8 documents created via document.implementation.createHTMLDocument
10 - // collapse sibling forms: the second one becomes a child of the first one.
11 - // Because of that, this security measure has to be disabled in Safari 8.
12 - // https://bugs.webkit.org/show_bug.cgi?id=137337
13 - support.createHTMLDocument = ( function() {
14 - var body = document.implementation.createHTMLDocument( "" ).body;
15 - body.innerHTML = "<form></form><form></form>";
16 - return body.childNodes.length === 2;
17 - } )();
18 -
19 - return support;
20 - } );
@@ -1,20 +0,0
1 - define( [
2 - "../var/class2type",
3 - "../var/toString"
4 - ], function( class2type, toString ) {
5 -
6 - "use strict";
7 -
8 - function toType( obj ) {
9 - if ( obj == null ) {
10 - return obj + "";
11 - }
12 -
13 - // Support: Android <=2.3 only (functionish RegExp)
14 - return typeof obj === "object" || typeof obj === "function" ?
15 - class2type[ toString.call( obj ) ] || "object" :
16 - typeof obj;
17 - }
18 -
19 - return toType;
20 - } );
@@ -1,7 +0,0
1 - define( function() {
2 - "use strict";
3 -
4 - // rsingleTag matches a string consisting of a single HTML element with no attributes
5 - // and captures the element's name
6 - return ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i );
7 - } );
@@ -1,484 +0,0
1 - define( [
2 - "./core",
3 - "./core/access",
4 - "./core/camelCase",
5 - "./var/rcssNum",
6 - "./css/var/rnumnonpx",
7 - "./css/var/cssExpand",
8 - "./css/var/getStyles",
9 - "./css/var/swap",
10 - "./css/curCSS",
11 - "./css/adjustCSS",
12 - "./css/addGetHookIf",
13 - "./css/support",
14 - "./css/finalPropName",
15 -
16 - "./core/init",
17 - "./core/ready",
18 - "./selector" // contains
19 - ], function( jQuery, access, camelCase, rcssNum, rnumnonpx, cssExpand,
20 - getStyles, swap, curCSS, adjustCSS, addGetHookIf, support, finalPropName ) {
21 -
22 - "use strict";
23 -
24 - var
25 -
26 - // Swappable if display is none or starts with table
27 - // except "table", "table-cell", or "table-caption"
28 - // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
29 - rdisplayswap = /^(none|table(?!-c[ea]).+)/,
30 - rcustomProp = /^--/,
31 - cssShow = { position: "absolute", visibility: "hidden", display: "block" },
32 - cssNormalTransform = {
33 - letterSpacing: "0",
34 - fontWeight: "400"
35 - };
36 -
37 - function setPositiveNumber( elem, value, subtract ) {
38 -
39 - // Any relative (+/-) values have already been
40 - // normalized at this point
41 - var matches = rcssNum.exec( value );
42 - return matches ?
43 -
44 - // Guard against undefined "subtract", e.g., when used as in cssHooks
45 - Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) :
46 - value;
47 - }
48 -
49 - function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {
50 - var i = dimension === "width" ? 1 : 0,
51 - extra = 0,
52 - delta = 0;
53 -
54 - // Adjustment may not be necessary
55 - if ( box === ( isBorderBox ? "border" : "content" ) ) {
56 - return 0;
57 - }
58 -
59 - for ( ; i < 4; i += 2 ) {
60 -
61 - // Both box models exclude margin
62 - if ( box === "margin" ) {
63 - delta += jQuery.css( elem, box + cssExpand[ i ], true, styles );
64 - }
65 -
66 - // If we get here with a content-box, we're seeking "padding" or "border" or "margin"
67 - if ( !isBorderBox ) {
68 -
69 - // Add padding
70 - delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
71 -
72 - // For "border" or "margin", add border
73 - if ( box !== "padding" ) {
74 - delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
75 -
76 - // But still keep track of it otherwise
77 - } else {
78 - extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
79 - }
80 -
81 - // If we get here with a border-box (content + padding + border), we're seeking "content" or
82 - // "padding" or "margin"
83 - } else {
84 -
85 - // For "content", subtract padding
86 - if ( box === "content" ) {
87 - delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
88 - }
89 -
90 - // For "content" or "padding", subtract border
91 - if ( box !== "margin" ) {
92 - delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
93 - }
94 - }
95 - }
96 -
97 - // Account for positive content-box scroll gutter when requested by providing computedVal
98 - if ( !isBorderBox && computedVal >= 0 ) {
99 -
100 - // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border
101 - // Assuming integer scroll gutter, subtract the rest and round down
102 - delta += Math.max( 0, Math.ceil(
103 - elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -
104 - computedVal -
105 - delta -
106 - extra -
107 - 0.5
108 -
109 - // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter
110 - // Use an explicit zero to avoid NaN (gh-3964)
111 - ) ) || 0;
112 - }
113 -
114 - return delta;
115 - }
116 -
117 - function getWidthOrHeight( elem, dimension, extra ) {
118 -
119 - // Start with computed style
120 - var styles = getStyles( elem ),
121 -
122 - // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).
123 - // Fake content-box until we know it's needed to know the true value.
124 - boxSizingNeeded = !support.boxSizingReliable() || extra,
125 - isBorderBox = boxSizingNeeded &&
126 - jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
127 - valueIsBorderBox = isBorderBox,
128 -
129 - val = curCSS( elem, dimension, styles ),
130 - offsetProp = "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );
131 -
132 - // Support: Firefox <=54
133 - // Return a confounding non-pixel value or feign ignorance, as appropriate.
134 - if ( rnumnonpx.test( val ) ) {
135 - if ( !extra ) {
136 - return val;
137 - }
138 - val = "auto";
139 - }
140 -
141 -
142 - // Fall back to offsetWidth/offsetHeight when value is "auto"
143 - // This happens for inline elements with no explicit setting (gh-3571)
144 - // Support: Android <=4.1 - 4.3 only
145 - // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)
146 - // Support: IE 9-11 only
147 - // Also use offsetWidth/offsetHeight for when box sizing is unreliable
148 - // We use getClientRects() to check for hidden/disconnected.
149 - // In those cases, the computed value can be trusted to be border-box
150 - if ( ( !support.boxSizingReliable() && isBorderBox ||
151 - val === "auto" ||
152 - !parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) &&
153 - elem.getClientRects().length ) {
154 -
155 - isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
156 -
157 - // Where available, offsetWidth/offsetHeight approximate border box dimensions.
158 - // Where not available (e.g., SVG), assume unreliable box-sizing and interpret the
159 - // retrieved value as a content box dimension.
160 - valueIsBorderBox = offsetProp in elem;
161 - if ( valueIsBorderBox ) {
162 - val = elem[ offsetProp ];
163 - }
164 - }
165 -
166 - // Normalize "" and auto
167 - val = parseFloat( val ) || 0;
168 -
169 - // Adjust for the element's box model
170 - return ( val +
171 - boxModelAdjustment(
172 - elem,
173 - dimension,
174 - extra || ( isBorderBox ? "border" : "content" ),
175 - valueIsBorderBox,
176 - styles,
177 -
178 - // Provide the current computed size to request scroll gutter calculation (gh-3589)
179 - val
180 - )
181 - ) + "px";
182 - }
183 -
184 - jQuery.extend( {
185 -
186 - // Add in style property hooks for overriding the default
187 - // behavior of getting and setting a style property
188 - cssHooks: {
189 - opacity: {
190 - get: function( elem, computed ) {
191 - if ( computed ) {
192 -
193 - // We should always get a number back from opacity
194 - var ret = curCSS( elem, "opacity" );
195 - return ret === "" ? "1" : ret;
196 - }
197 - }
198 - }
199 - },
200 -
201 - // Don't automatically add "px" to these possibly-unitless properties
202 - cssNumber: {
203 - "animationIterationCount": true,
204 - "columnCount": true,
205 - "fillOpacity": true,
206 - "flexGrow": true,
207 - "flexShrink": true,
208 - "fontWeight": true,
209 - "gridArea": true,
210 - "gridColumn": true,
211 - "gridColumnEnd": true,
212 - "gridColumnStart": true,
213 - "gridRow": true,
214 - "gridRowEnd": true,
215 - "gridRowStart": true,
216 - "lineHeight": true,
217 - "opacity": true,
218 - "order": true,
219 - "orphans": true,
220 - "widows": true,
221 - "zIndex": true,
222 - "zoom": true
223 - },
224 -
225 - // Add in properties whose names you wish to fix before
226 - // setting or getting the value
227 - cssProps: {},
228 -
229 - // Get and set the style property on a DOM Node
230 - style: function( elem, name, value, extra ) {
231 -
232 - // Don't set styles on text and comment nodes
233 - if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
234 - return;
235 - }
236 -
237 - // Make sure that we're working with the right name
238 - var ret, type, hooks,
239 - origName = camelCase( name ),
240 - isCustomProp = rcustomProp.test( name ),
241 - style = elem.style;
242 -
243 - // Make sure that we're working with the right name. We don't
244 - // want to query the value if it is a CSS custom property
245 - // since they are user-defined.
246 - if ( !isCustomProp ) {
247 - name = finalPropName( origName );
248 - }
249 -
250 - // Gets hook for the prefixed version, then unprefixed version
251 - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
252 -
253 - // Check if we're setting a value
254 - if ( value !== undefined ) {
255 - type = typeof value;
256 -
257 - // Convert "+=" or "-=" to relative numbers (#7345)
258 - if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {
259 - value = adjustCSS( elem, name, ret );
260 -
261 - // Fixes bug #9237
262 - type = "number";
263 - }
264 -
265 - // Make sure that null and NaN values aren't set (#7116)
266 - if ( value == null || value !== value ) {
267 - return;
268 - }
269 -
270 - // If a number was passed in, add the unit (except for certain CSS properties)
271 - // The isCustomProp check can be removed in jQuery 4.0 when we only auto-append
272 - // "px" to a few hardcoded values.
273 - if ( type === "number" && !isCustomProp ) {
274 - value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" );
275 - }
276 -
277 - // background-* props affect original clone's values
278 - if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) {
279 - style[ name ] = "inherit";
280 - }
281 -
282 - // If a hook was provided, use that value, otherwise just set the specified value
283 - if ( !hooks || !( "set" in hooks ) ||
284 - ( value = hooks.set( elem, value, extra ) ) !== undefined ) {
285 -
286 - if ( isCustomProp ) {
287 - style.setProperty( name, value );
288 - } else {
289 - style[ name ] = value;
290 - }
291 - }
292 -
293 - } else {
294 -
295 - // If a hook was provided get the non-computed value from there
296 - if ( hooks && "get" in hooks &&
297 - ( ret = hooks.get( elem, false, extra ) ) !== undefined ) {
298 -
299 - return ret;
300 - }
301 -
302 - // Otherwise just get the value from the style object
303 - return style[ name ];
304 - }
305 - },
306 -
307 - css: function( elem, name, extra, styles ) {
308 - var val, num, hooks,
309 - origName = camelCase( name ),
310 - isCustomProp = rcustomProp.test( name );
311 -
312 - // Make sure that we're working with the right name. We don't
313 - // want to modify the value if it is a CSS custom property
314 - // since they are user-defined.
315 - if ( !isCustomProp ) {
316 - name = finalPropName( origName );
317 - }
318 -
319 - // Try prefixed name followed by the unprefixed name
320 - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
321 -
322 - // If a hook was provided get the computed value from there
323 - if ( hooks && "get" in hooks ) {
324 - val = hooks.get( elem, true, extra );
325 - }
326 -
327 - // Otherwise, if a way to get the computed value exists, use that
328 - if ( val === undefined ) {
329 - val = curCSS( elem, name, styles );
330 - }
331 -
332 - // Convert "normal" to computed value
333 - if ( val === "normal" && name in cssNormalTransform ) {
334 - val = cssNormalTransform[ name ];
335 - }
336 -
337 - // Make numeric if forced or a qualifier was provided and val looks numeric
338 - if ( extra === "" || extra ) {
339 - num = parseFloat( val );
340 - return extra === true || isFinite( num ) ? num || 0 : val;
341 - }
342 -
343 - return val;
344 - }
345 - } );
346 -
347 - jQuery.each( [ "height", "width" ], function( i, dimension ) {
348 - jQuery.cssHooks[ dimension ] = {
349 - get: function( elem, computed, extra ) {
350 - if ( computed ) {
351 -
352 - // Certain elements can have dimension info if we invisibly show them
353 - // but it must have a current display style that would benefit
354 - return rdisplayswap.test( jQuery.css( elem, "display" ) ) &&
355 -
356 - // Support: Safari 8+
357 - // Table columns in Safari have non-zero offsetWidth & zero
358 - // getBoundingClientRect().width unless display is changed.
359 - // Support: IE <=11 only
360 - // Running getBoundingClientRect on a disconnected node
361 - // in IE throws an error.
362 - ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?
363 - swap( elem, cssShow, function() {
364 - return getWidthOrHeight( elem, dimension, extra );
365 - } ) :
366 - getWidthOrHeight( elem, dimension, extra );
367 - }
368 - },
369 -
370 - set: function( elem, value, extra ) {
371 - var matches,
372 - styles = getStyles( elem ),
373 -
374 - // Only read styles.position if the test has a chance to fail
375 - // to avoid forcing a reflow.
376 - scrollboxSizeBuggy = !support.scrollboxSize() &&
377 - styles.position === "absolute",
378 -
379 - // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)
380 - boxSizingNeeded = scrollboxSizeBuggy || extra,
381 - isBorderBox = boxSizingNeeded &&
382 - jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
383 - subtract = extra ?
384 - boxModelAdjustment(
385 - elem,
386 - dimension,
387 - extra,
388 - isBorderBox,
389 - styles
390 - ) :
391 - 0;
392 -
393 - // Account for unreliable border-box dimensions by comparing offset* to computed and
394 - // faking a content-box to get border and padding (gh-3699)
395 - if ( isBorderBox && scrollboxSizeBuggy ) {
396 - subtract -= Math.ceil(
397 - elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -
398 - parseFloat( styles[ dimension ] ) -
399 - boxModelAdjustment( elem, dimension, "border", false, styles ) -
400 - 0.5
401 - );
402 - }
403 -
404 - // Convert to pixels if value adjustment is needed
405 - if ( subtract && ( matches = rcssNum.exec( value ) ) &&
406 - ( matches[ 3 ] || "px" ) !== "px" ) {
407 -
408 - elem.style[ dimension ] = value;
409 - value = jQuery.css( elem, dimension );
410 - }
411 -
412 - return setPositiveNumber( elem, value, subtract );
413 - }
414 - };
415 - } );
416 -
417 - jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,
418 - function( elem, computed ) {
419 - if ( computed ) {
420 - return ( parseFloat( curCSS( elem, "marginLeft" ) ) ||
421 - elem.getBoundingClientRect().left -
422 - swap( elem, { marginLeft: 0 }, function() {
423 - return elem.getBoundingClientRect().left;
424 - } )
425 - ) + "px";
426 - }
427 - }
428 - );
429 -
430 - // These hooks are used by animate to expand properties
431 - jQuery.each( {
432 - margin: "",
433 - padding: "",
434 - border: "Width"
435 - }, function( prefix, suffix ) {
436 - jQuery.cssHooks[ prefix + suffix ] = {
437 - expand: function( value ) {
438 - var i = 0,
439 - expanded = {},
440 -
441 - // Assumes a single number if not a string
442 - parts = typeof value === "string" ? value.split( " " ) : [ value ];
443 -
444 - for ( ; i < 4; i++ ) {
445 - expanded[ prefix + cssExpand[ i ] + suffix ] =
446 - parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
447 - }
448 -
449 - return expanded;
450 - }
451 - };
452 -
453 - if ( prefix !== "margin" ) {
454 - jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
455 - }
456 - } );
457 -
458 - jQuery.fn.extend( {
459 - css: function( name, value ) {
460 - return access( this, function( elem, name, value ) {
461 - var styles, len,
462 - map = {},
463 - i = 0;
464 -
465 - if ( Array.isArray( name ) ) {
466 - styles = getStyles( elem );
467 - len = name.length;
468 -
469 - for ( ; i < len; i++ ) {
470 - map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
471 - }
472 -
473 - return map;
474 - }
475 -
476 - return value !== undefined ?
477 - jQuery.style( elem, name, value ) :
478 - jQuery.css( elem, name );
479 - }, name, value, arguments.length > 1 );
480 - }
481 - } );
482 -
483 - return jQuery;
484 - } );
@@ -1,26 +0,0
1 - define( function() {
2 -
3 - "use strict";
4 -
5 - function addGetHookIf( conditionFn, hookFn ) {
6 -
7 - // Define the hook, we'll check on the first run if it's really needed.
8 - return {
9 - get: function() {
10 - if ( conditionFn() ) {
11 -
12 - // Hook not needed (or it's not possible to use it due
13 - // to missing dependency), remove it.
14 - delete this.get;
15 - return;
16 - }
17 -
18 - // Hook needed; redefine it so that the support test is not executed again.
19 - return ( this.get = hookFn ).apply( this, arguments );
20 - }
21 - };
22 - }
23 -
24 - return addGetHookIf;
25 -
26 - } );
@@ -1,74 +0,0
1 - define( [
2 - "../core",
3 - "../var/rcssNum"
4 - ], function( jQuery, rcssNum ) {
5 -
6 - "use strict";
7 -
8 - function adjustCSS( elem, prop, valueParts, tween ) {
9 - var adjusted, scale,
10 - maxIterations = 20,
11 - currentValue = tween ?
12 - function() {
13 - return tween.cur();
14 - } :
15 - function() {
16 - return jQuery.css( elem, prop, "" );
17 - },
18 - initial = currentValue(),
19 - unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
20 -
21 - // Starting value computation is required for potential unit mismatches
22 - initialInUnit = elem.nodeType &&
23 - ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) &&
24 - rcssNum.exec( jQuery.css( elem, prop ) );
25 -
26 - if ( initialInUnit && initialInUnit[ 3 ] !== unit ) {
27 -
28 - // Support: Firefox <=54
29 - // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)
30 - initial = initial / 2;
31 -
32 - // Trust units reported by jQuery.css
33 - unit = unit || initialInUnit[ 3 ];
34 -
35 - // Iteratively approximate from a nonzero starting point
36 - initialInUnit = +initial || 1;
37 -
38 - while ( maxIterations-- ) {
39 -
40 - // Evaluate and update our best guess (doubling guesses that zero out).
41 - // Finish if the scale equals or crosses 1 (making the old*new product non-positive).
42 - jQuery.style( elem, prop, initialInUnit + unit );
43 - if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {
44 - maxIterations = 0;
45 - }
46 - initialInUnit = initialInUnit / scale;
47 -
48 - }
49 -
50 - initialInUnit = initialInUnit * 2;
51 - jQuery.style( elem, prop, initialInUnit + unit );
52 -
53 - // Make sure we update the tween properties later on
54 - valueParts = valueParts || [];
55 - }
56 -
57 - if ( valueParts ) {
58 - initialInUnit = +initialInUnit || +initial || 0;
59 -
60 - // Apply relative offset (+=/-=) if specified
61 - adjusted = valueParts[ 1 ] ?
62 - initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :
63 - +valueParts[ 2 ];
64 - if ( tween ) {
65 - tween.unit = unit;
66 - tween.start = initialInUnit;
67 - tween.end = adjusted;
68 - }
69 - }
70 - return adjusted;
71 - }
72 -
73 - return adjustCSS;
74 - } );
@@ -1,65 +0,0
1 - define( [
2 - "../core",
3 - "../core/isAttached",
4 - "./var/rboxStyle",
5 - "./var/rnumnonpx",
6 - "./var/getStyles",
7 - "./support"
8 - ], function( jQuery, isAttached, rboxStyle, rnumnonpx, getStyles, support ) {
9 -
10 - "use strict";
11 -
12 - function curCSS( elem, name, computed ) {
13 - var width, minWidth, maxWidth, ret,
14 -
15 - // Support: Firefox 51+
16 - // Retrieving style before computed somehow
17 - // fixes an issue with getting wrong values
18 - // on detached elements
19 - style = elem.style;
20 -
21 - computed = computed || getStyles( elem );
22 -
23 - // getPropertyValue is needed for:
24 - // .css('filter') (IE 9 only, #12537)
25 - // .css('--customProperty) (#3144)
26 - if ( computed ) {
27 - ret = computed.getPropertyValue( name ) || computed[ name ];
28 -
29 - if ( ret === "" && !isAttached( elem ) ) {
30 - ret = jQuery.style( elem, name );
31 - }
32 -
33 - // A tribute to the "awesome hack by Dean Edwards"
34 - // Android Browser returns percentage for some values,
35 - // but width seems to be reliably pixels.
36 - // This is against the CSSOM draft spec:
37 - // https://drafts.csswg.org/cssom/#resolved-values
38 - if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {
39 -
40 - // Remember the original values
41 - width = style.width;
42 - minWidth = style.minWidth;
43 - maxWidth = style.maxWidth;
44 -
45 - // Put in the new values to get a computed value out
46 - style.minWidth = style.maxWidth = style.width = ret;
47 - ret = computed.width;
48 -
49 - // Revert the changed values
50 - style.width = width;
51 - style.minWidth = minWidth;
52 - style.maxWidth = maxWidth;
53 - }
54 - }
55 -
56 - return ret !== undefined ?
57 -
58 - // Support: IE <=9 - 11 only
59 - // IE returns zIndex value as an integer.
60 - ret + "" :
61 - ret;
62 - }
63 -
64 - return curCSS;
65 - } );
@@ -1,42 +0,0
1 - define( [
2 - "../var/document",
3 - "../core"
4 - ], function( document, jQuery ) {
5 -
6 - "use strict";
7 -
8 - var cssPrefixes = [ "Webkit", "Moz", "ms" ],
9 - emptyStyle = document.createElement( "div" ).style,
10 - vendorProps = {};
11 -
12 - // Return a vendor-prefixed property or undefined
13 - function vendorPropName( name ) {
14 -
15 - // Check for vendor prefixed names
16 - var capName = name[ 0 ].toUpperCase() + name.slice( 1 ),
17 - i = cssPrefixes.length;
18 -
19 - while ( i-- ) {
20 - name = cssPrefixes[ i ] + capName;
21 - if ( name in emptyStyle ) {
22 - return name;
23 - }
24 - }
25 - }
26 -
27 - // Return a potentially-mapped jQuery.cssProps or vendor prefixed property
28 - function finalPropName( name ) {
29 - var final = jQuery.cssProps[ name ] || vendorProps[ name ];
30 -
31 - if ( final ) {
32 - return final;
33 - }
34 - if ( name in emptyStyle ) {
35 - return name;
36 - }
37 - return vendorProps[ name ] = vendorPropName( name ) || name;
38 - }
39 -
40 - return finalPropName;
41 -
42 - } );
@@ -1,15 +0,0
1 - define( [
2 - "../core",
3 - "../selector"
4 - ], function( jQuery ) {
5 -
6 - "use strict";
7 -
8 - jQuery.expr.pseudos.hidden = function( elem ) {
9 - return !jQuery.expr.pseudos.visible( elem );
10 - };
11 - jQuery.expr.pseudos.visible = function( elem ) {
12 - return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );
13 - };
14 -
15 - } );
@@ -1,105 +0,0
1 - define( [
2 - "../core",
3 - "../data/var/dataPriv",
4 - "../css/var/isHiddenWithinTree"
5 - ], function( jQuery, dataPriv, isHiddenWithinTree ) {
6 -
7 - "use strict";
8 -
9 - var defaultDisplayMap = {};
10 -
11 - function getDefaultDisplay( elem ) {
12 - var temp,
13 - doc = elem.ownerDocument,
14 - nodeName = elem.nodeName,
15 - display = defaultDisplayMap[ nodeName ];
16 -
17 - if ( display ) {
18 - return display;
19 - }
20 -
21 - temp = doc.body.appendChild( doc.createElement( nodeName ) );
22 - display = jQuery.css( temp, "display" );
23 -
24 - temp.parentNode.removeChild( temp );
25 -
26 - if ( display === "none" ) {
27 - display = "block";
28 - }
29 - defaultDisplayMap[ nodeName ] = display;
30 -
31 - return display;
32 - }
33 -
34 - function showHide( elements, show ) {
35 - var display, elem,
36 - values = [],
37 - index = 0,
38 - length = elements.length;
39 -
40 - // Determine new display value for elements that need to change
41 - for ( ; index < length; index++ ) {
42 - elem = elements[ index ];
43 - if ( !elem.style ) {
44 - continue;
45 - }
46 -
47 - display = elem.style.display;
48 - if ( show ) {
49 -
50 - // Since we force visibility upon cascade-hidden elements, an immediate (and slow)
51 - // check is required in this first loop unless we have a nonempty display value (either
52 - // inline or about-to-be-restored)
53 - if ( display === "none" ) {
54 - values[ index ] = dataPriv.get( elem, "display" ) || null;
55 - if ( !values[ index ] ) {
56 - elem.style.display = "";
57 - }
58 - }
59 - if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) {
60 - values[ index ] = getDefaultDisplay( elem );
61 - }
62 - } else {
63 - if ( display !== "none" ) {
64 - values[ index ] = "none";
65 -
66 - // Remember what we're overwriting
67 - dataPriv.set( elem, "display", display );
68 - }
69 - }
70 - }
71 -
72 - // Set the display of the elements in a second loop to avoid constant reflow
73 - for ( index = 0; index < length; index++ ) {
74 - if ( values[ index ] != null ) {
75 - elements[ index ].style.display = values[ index ];
76 - }
77 - }
78 -
79 - return elements;
80 - }
81 -
82 - jQuery.fn.extend( {
83 - show: function() {
84 - return showHide( this, true );
85 - },
86 - hide: function() {
87 - return showHide( this );
88 - },
89 - toggle: function( state ) {
90 - if ( typeof state === "boolean" ) {
91 - return state ? this.show() : this.hide();
92 - }
93 -
94 - return this.each( function() {
95 - if ( isHiddenWithinTree( this ) ) {
96 - jQuery( this ).show();
97 - } else {
98 - jQuery( this ).hide();
99 - }
100 - } );
101 - }
102 - } );
103 -
104 - return showHide;
105 - } );
@@ -1,104 +0,0
1 - define( [
2 - "../core",
3 - "../var/document",
4 - "../var/documentElement",
5 - "../var/support"
6 - ], function( jQuery, document, documentElement, support ) {
7 -
8 - "use strict";
9 -
10 - ( function() {
11 -
12 - // Executing both pixelPosition & boxSizingReliable tests require only one layout
13 - // so they're executed at the same time to save the second computation.
14 - function computeStyleTests() {
15 -
16 - // This is a singleton, we need to execute it only once
17 - if ( !div ) {
18 - return;
19 - }
20 -
21 - container.style.cssText = "position:absolute;left:-11111px;width:60px;" +
22 - "margin-top:1px;padding:0;border:0";
23 - div.style.cssText =
24 - "position:relative;display:block;box-sizing:border-box;overflow:scroll;" +
25 - "margin:auto;border:1px;padding:1px;" +
26 - "width:60%;top:1%";
27 - documentElement.appendChild( container ).appendChild( div );
28 -
29 - var divStyle = window.getComputedStyle( div );
30 - pixelPositionVal = divStyle.top !== "1%";
31 -
32 - // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44
33 - reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;
34 -
35 - // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3
36 - // Some styles come back with percentage values, even though they shouldn't
37 - div.style.right = "60%";
38 - pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;
39 -
40 - // Support: IE 9 - 11 only
41 - // Detect misreporting of content dimensions for box-sizing:border-box elements
42 - boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;
43 -
44 - // Support: IE 9 only
45 - // Detect overflow:scroll screwiness (gh-3699)
46 - // Support: Chrome <=64
47 - // Don't get tricked when zoom affects offsetWidth (gh-4029)
48 - div.style.position = "absolute";
49 - scrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;
50 -
51 - documentElement.removeChild( container );
52 -
53 - // Nullify the div so it wouldn't be stored in the memory and
54 - // it will also be a sign that checks already performed
55 - div = null;
56 - }
57 -
58 - function roundPixelMeasures( measure ) {
59 - return Math.round( parseFloat( measure ) );
60 - }
61 -
62 - var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,
63 - reliableMarginLeftVal,
64 - container = document.createElement( "div" ),
65 - div = document.createElement( "div" );
66 -
67 - // Finish early in limited (non-browser) environments
68 - if ( !div.style ) {
69 - return;
70 - }
71 -
72 - // Support: IE <=9 - 11 only
73 - // Style of cloned element affects source element cloned (#8908)
74 - div.style.backgroundClip = "content-box";
75 - div.cloneNode( true ).style.backgroundClip = "";
76 - support.clearCloneStyle = div.style.backgroundClip === "content-box";
77 -
78 - jQuery.extend( support, {
79 - boxSizingReliable: function() {
80 - computeStyleTests();
81 - return boxSizingReliableVal;
82 - },
83 - pixelBoxStyles: function() {
84 - computeStyleTests();
85 - return pixelBoxStylesVal;
86 - },
87 - pixelPosition: function() {
88 - computeStyleTests();
89 - return pixelPositionVal;
90 - },
91 - reliableMarginLeft: function() {
92 - computeStyleTests();
93 - return reliableMarginLeftVal;
94 - },
95 - scrollboxSize: function() {
96 - computeStyleTests();
97 - return scrollboxSizeVal;
98 - }
99 - } );
100 - } )();
101 -
102 - return support;
103 -
104 - } );
@@ -1,5 +0,0
1 - define( function() {
2 - "use strict";
3 -
4 - return [ "Top", "Right", "Bottom", "Left" ];
5 - } );
@@ -1,17 +0,0
1 - define( function() {
2 - "use strict";
3 -
4 - return function( elem ) {
5 -
6 - // Support: IE <=11 only, Firefox <=30 (#15098, #14150)
7 - // IE throws on elements created in popups
8 - // FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
9 - var view = elem.ownerDocument.defaultView;
10 -
11 - if ( !view || !view.opener ) {
12 - view = window;
13 - }
14 -
15 - return view.getComputedStyle( elem );
16 - };
17 - } );
@@ -1,34 +0,0
1 - define( [
2 - "../../core",
3 - "../../core/isAttached"
4 -
5 - // css is assumed
6 - ], function( jQuery, isAttached ) {
7 - "use strict";
8 -
9 - // isHiddenWithinTree reports if an element has a non-"none" display style (inline and/or
10 - // through the CSS cascade), which is useful in deciding whether or not to make it visible.
11 - // It differs from the :hidden selector (jQuery.expr.pseudos.hidden) in two important ways:
12 - // * A hidden ancestor does not force an element to be classified as hidden.
13 - // * Being disconnected from the document does not force an element to be classified as hidden.
14 - // These differences improve the behavior of .toggle() et al. when applied to elements that are
15 - // detached or contained within hidden ancestors (gh-2404, gh-2863).
16 - return function( elem, el ) {
17 -
18 - // isHiddenWithinTree might be called from jQuery#filter function;
19 - // in that case, element will be second argument
20 - elem = el || elem;
21 -
22 - // Inline style trumps all
23 - return elem.style.display === "none" ||
24 - elem.style.display === "" &&
25 -
26 - // Otherwise, check computed style
27 - // Support: Firefox <=43 - 45
28 - // Disconnected elements can have computed display: none, so first confirm that elem is
29 - // in the document.
30 - isAttached( elem ) &&
31 -
32 - jQuery.css( elem, "display" ) === "none";
33 - };
34 - } );
@@ -1,7 +0,0
1 - define( [
2 - "./cssExpand"
3 - ], function( cssExpand ) {
4 - "use strict";
5 -
6 - return new RegExp( cssExpand.join( "|" ), "i" );
7 - } );
@@ -1,7 +0,0
1 - define( [
2 - "../../var/pnum"
3 - ], function( pnum ) {
4 - "use strict";
5 -
6 - return new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
7 - } );
@@ -1,26 +0,0
1 - define( function() {
2 -
3 - "use strict";
4 -
5 - // A method for quickly swapping in/out CSS properties to get correct calculations.
6 - return function( elem, options, callback, args ) {
7 - var ret, name,
8 - old = {};
9 -
10 - // Remember the old values, and insert the new ones
11 - for ( name in options ) {
12 - old[ name ] = elem.style[ name ];
13 - elem.style[ name ] = options[ name ];
14 - }
15 -
16 - ret = callback.apply( elem, args || [] );
17 -
18 - // Revert the old values
19 - for ( name in options ) {
20 - elem.style[ name ] = old[ name ];
21 - }
22 -
23 - return ret;
24 - };
25 -
26 - } );
@@ -1,180 +0,0
1 - define( [
2 - "./core",
3 - "./core/access",
4 - "./core/camelCase",
5 - "./data/var/dataPriv",
6 - "./data/var/dataUser"
7 - ], function( jQuery, access, camelCase, dataPriv, dataUser ) {
8 -
9 - "use strict";
10 -
11 - // Implementation Summary
12 - //
13 - // 1. Enforce API surface and semantic compatibility with 1.9.x branch
14 - // 2. Improve the module's maintainability by reducing the storage
15 - // paths to a single mechanism.
16 - // 3. Use the same single mechanism to support "private" and "user" data.
17 - // 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
18 - // 5. Avoid exposing implementation details on user objects (eg. expando properties)
19 - // 6. Provide a clear path for implementation upgrade to WeakMap in 2014
20 -
21 - var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
22 - rmultiDash = /[A-Z]/g;
23 -
24 - function getData( data ) {
25 - if ( data === "true" ) {
26 - return true;
27 - }
28 -
29 - if ( data === "false" ) {
30 - return false;
31 - }
32 -
33 - if ( data === "null" ) {
34 - return null;
35 - }
36 -
37 - // Only convert to a number if it doesn't change the string
38 - if ( data === +data + "" ) {
39 - return +data;
40 - }
41 -
42 - if ( rbrace.test( data ) ) {
43 - return JSON.parse( data );
44 - }
45 -
46 - return data;
47 - }
48 -
49 - function dataAttr( elem, key, data ) {
50 - var name;
51 -
52 - // If nothing was found internally, try to fetch any
53 - // data from the HTML5 data-* attribute
54 - if ( data === undefined && elem.nodeType === 1 ) {
55 - name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase();
56 - data = elem.getAttribute( name );
57 -
58 - if ( typeof data === "string" ) {
59 - try {
60 - data = getData( data );
61 - } catch ( e ) {}
62 -
63 - // Make sure we set the data so it isn't changed later
64 - dataUser.set( elem, key, data );
65 - } else {
66 - data = undefined;
67 - }
68 - }
69 - return data;
70 - }
71 -
72 - jQuery.extend( {
73 - hasData: function( elem ) {
74 - return dataUser.hasData( elem ) || dataPriv.hasData( elem );
75 - },
76 -
77 - data: function( elem, name, data ) {
78 - return dataUser.access( elem, name, data );
79 - },
80 -
81 - removeData: function( elem, name ) {
82 - dataUser.remove( elem, name );
83 - },
84 -
85 - // TODO: Now that all calls to _data and _removeData have been replaced
86 - // with direct calls to dataPriv methods, these can be deprecated.
87 - _data: function( elem, name, data ) {
88 - return dataPriv.access( elem, name, data );
89 - },
90 -
91 - _removeData: function( elem, name ) {
92 - dataPriv.remove( elem, name );
93 - }
94 - } );
95 -
96 - jQuery.fn.extend( {
97 - data: function( key, value ) {
98 - var i, name, data,
99 - elem = this[ 0 ],
100 - attrs = elem && elem.attributes;
101 -
102 - // Gets all values
103 - if ( key === undefined ) {
104 - if ( this.length ) {
105 - data = dataUser.get( elem );
106 -
107 - if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) {
108 - i = attrs.length;
109 - while ( i-- ) {
110 -
111 - // Support: IE 11 only
112 - // The attrs elements can be null (#14894)
113 - if ( attrs[ i ] ) {
114 - name = attrs[ i ].name;
115 - if ( name.indexOf( "data-" ) === 0 ) {
116 - name = camelCase( name.slice( 5 ) );
117 - dataAttr( elem, name, data[ name ] );
118 - }
119 - }
120 - }
121 - dataPriv.set( elem, "hasDataAttrs", true );
122 - }
123 - }
124 -
125 - return data;
126 - }
127 -
128 - // Sets multiple values
129 - if ( typeof key === "object" ) {
130 - return this.each( function() {
131 - dataUser.set( this, key );
132 - } );
133 - }
134 -
135 - return access( this, function( value ) {
136 - var data;
137 -
138 - // The calling jQuery object (element matches) is not empty
139 - // (and therefore has an element appears at this[ 0 ]) and the
140 - // `value` parameter was not undefined. An empty jQuery object
141 - // will result in `undefined` for elem = this[ 0 ] which will
142 - // throw an exception if an attempt to read a data cache is made.
143 - if ( elem && value === undefined ) {
144 -
145 - // Attempt to get data from the cache
146 - // The key will always be camelCased in Data
147 - data = dataUser.get( elem, key );
148 - if ( data !== undefined ) {
149 - return data;
150 - }
151 -
152 - // Attempt to "discover" the data in
153 - // HTML5 custom data-* attrs
154 - data = dataAttr( elem, key );
155 - if ( data !== undefined ) {
156 - return data;
157 - }
158 -
159 - // We tried really hard, but the data doesn't exist.
160 - return;
161 - }
162 -
163 - // Set the data...
164 - this.each( function() {
165 -
166 - // We always store the camelCased key
167 - dataUser.set( this, key, value );
168 - } );
169 - }, null, value, arguments.length > 1, null, true );
170 - },
171 -
172 - removeData: function( key ) {
173 - return this.each( function() {
174 - dataUser.remove( this, key );
175 - } );
176 - }
177 - } );
178 -
179 - return jQuery;
180 - } );
@@ -1,162 +0,0
1 - define( [
2 - "../core",
3 - "../core/camelCase",
4 - "../var/rnothtmlwhite",
5 - "./var/acceptData"
6 - ], function( jQuery, camelCase, rnothtmlwhite, acceptData ) {
7 -
8 - "use strict";
9 -
10 - function Data() {
11 - this.expando = jQuery.expando + Data.uid++;
12 - }
13 -
14 - Data.uid = 1;
15 -
16 - Data.prototype = {
17 -
18 - cache: function( owner ) {
19 -
20 - // Check if the owner object already has a cache
21 - var value = owner[ this.expando ];
22 -
23 - // If not, create one
24 - if ( !value ) {
25 - value = {};
26 -
27 - // We can accept data for non-element nodes in modern browsers,
28 - // but we should not, see #8335.
29 - // Always return an empty object.
30 - if ( acceptData( owner ) ) {
31 -
32 - // If it is a node unlikely to be stringify-ed or looped over
33 - // use plain assignment
34 - if ( owner.nodeType ) {
35 - owner[ this.expando ] = value;
36 -
37 - // Otherwise secure it in a non-enumerable property
38 - // configurable must be true to allow the property to be
39 - // deleted when data is removed
40 - } else {
41 - Object.defineProperty( owner, this.expando, {
42 - value: value,
43 - configurable: true
44 - } );
45 - }
46 - }
47 - }
48 -
49 - return value;
50 - },
51 - set: function( owner, data, value ) {
52 - var prop,
53 - cache = this.cache( owner );
54 -
55 - // Handle: [ owner, key, value ] args
56 - // Always use camelCase key (gh-2257)
57 - if ( typeof data === "string" ) {
58 - cache[ camelCase( data ) ] = value;
59 -
60 - // Handle: [ owner, { properties } ] args
61 - } else {
62 -
63 - // Copy the properties one-by-one to the cache object
64 - for ( prop in data ) {
65 - cache[ camelCase( prop ) ] = data[ prop ];
66 - }
67 - }
68 - return cache;
69 - },
70 - get: function( owner, key ) {
71 - return key === undefined ?
72 - this.cache( owner ) :
73 -
74 - // Always use camelCase key (gh-2257)
75 - owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];
76 - },
77 - access: function( owner, key, value ) {
78 -
79 - // In cases where either:
80 - //
81 - // 1. No key was specified
82 - // 2. A string key was specified, but no value provided
83 - //
84 - // Take the "read" path and allow the get method to determine
85 - // which value to return, respectively either:
86 - //
87 - // 1. The entire cache object
88 - // 2. The data stored at the key
89 - //
90 - if ( key === undefined ||
91 - ( ( key && typeof key === "string" ) && value === undefined ) ) {
92 -
93 - return this.get( owner, key );
94 - }
95 -
96 - // When the key is not a string, or both a key and value
97 - // are specified, set or extend (existing objects) with either:
98 - //
99 - // 1. An object of properties
100 - // 2. A key and value
101 - //
102 - this.set( owner, key, value );
103 -
104 - // Since the "set" path can have two possible entry points
105 - // return the expected data based on which path was taken[*]
106 - return value !== undefined ? value : key;
107 - },
108 - remove: function( owner, key ) {
109 - var i,
110 - cache = owner[ this.expando ];
111 -
112 - if ( cache === undefined ) {
113 - return;
114 - }
115 -
116 - if ( key !== undefined ) {
117 -
118 - // Support array or space separated string of keys
119 - if ( Array.isArray( key ) ) {
120 -
121 - // If key is an array of keys...
122 - // We always set camelCase keys, so remove that.
123 - key = key.map( camelCase );
124 - } else {
125 - key = camelCase( key );
126 -
127 - // If a key with the spaces exists, use it.
128 - // Otherwise, create an array by matching non-whitespace
129 - key = key in cache ?
130 - [ key ] :
131 - ( key.match( rnothtmlwhite ) || [] );
132 - }
133 -
134 - i = key.length;
135 -
136 - while ( i-- ) {
137 - delete cache[ key[ i ] ];
138 - }
139 - }
140 -
141 - // Remove the expando if there's no more data
142 - if ( key === undefined || jQuery.isEmptyObject( cache ) ) {
143 -
144 - // Support: Chrome <=35 - 45
145 - // Webkit & Blink performance suffers when deleting properties
146 - // from DOM nodes, so set to undefined instead
147 - // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)
148 - if ( owner.nodeType ) {
149 - owner[ this.expando ] = undefined;
150 - } else {
151 - delete owner[ this.expando ];
152 - }
153 - }
154 - },
155 - hasData: function( owner ) {
156 - var cache = owner[ this.expando ];
157 - return cache !== undefined && !jQuery.isEmptyObject( cache );
158 - }
159 - };
160 -
161 - return Data;
162 - } );
@@ -1,19 +0,0
1 - define( function() {
2 -
3 - "use strict";
4 -
5 - /**
6 - * Determines whether an object can have data
7 - */
8 - return function( owner ) {
9 -
10 - // Accepts only:
11 - // - Node
12 - // - Node.ELEMENT_NODE
13 - // - Node.DOCUMENT_NODE
14 - // - Object
15 - // - Any
16 - return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );
17 - };
18 -
19 - } );
@@ -1,7 +0,0
1 - define( [
2 - "../Data"
3 - ], function( Data ) {
4 - "use strict";
5 -
6 - return new Data();
7 - } );
@@ -1,7 +0,0
1 - define( [
2 - "../Data"
3 - ], function( Data ) {
4 - "use strict";
5 -
6 - return new Data();
7 - } );
@@ -1,399 +0,0
1 - define( [
2 - "./core",
3 - "./var/isFunction",
4 - "./var/slice",
5 - "./callbacks"
6 - ], function( jQuery, isFunction, slice ) {
7 -
8 - "use strict";
9 -
10 - function Identity( v ) {
11 - return v;
12 - }
13 - function Thrower( ex ) {
14 - throw ex;
15 - }
16 -
17 - function adoptValue( value, resolve, reject, noValue ) {
18 - var method;
19 -
20 - try {
21 -
22 - // Check for promise aspect first to privilege synchronous behavior
23 - if ( value && isFunction( ( method = value.promise ) ) ) {
24 - method.call( value ).done( resolve ).fail( reject );
25 -
26 - // Other thenables
27 - } else if ( value && isFunction( ( method = value.then ) ) ) {
28 - method.call( value, resolve, reject );
29 -
30 - // Other non-thenables
31 - } else {
32 -
33 - // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:
34 - // * false: [ value ].slice( 0 ) => resolve( value )
35 - // * true: [ value ].slice( 1 ) => resolve()
36 - resolve.apply( undefined, [ value ].slice( noValue ) );
37 - }
38 -
39 - // For Promises/A+, convert exceptions into rejections
40 - // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in
41 - // Deferred#then to conditionally suppress rejection.
42 - } catch ( value ) {
43 -
44 - // Support: Android 4.0 only
45 - // Strict mode functions invoked without .call/.apply get global-object context
46 - reject.apply( undefined, [ value ] );
47 - }
48 - }
49 -
50 - jQuery.extend( {
51 -
52 - Deferred: function( func ) {
53 - var tuples = [
54 -
55 - // action, add listener, callbacks,
56 - // ... .then handlers, argument index, [final state]
57 - [ "notify", "progress", jQuery.Callbacks( "memory" ),
58 - jQuery.Callbacks( "memory" ), 2 ],
59 - [ "resolve", "done", jQuery.Callbacks( "once memory" ),
60 - jQuery.Callbacks( "once memory" ), 0, "resolved" ],
61 - [ "reject", "fail", jQuery.Callbacks( "once memory" ),
62 - jQuery.Callbacks( "once memory" ), 1, "rejected" ]
63 - ],
64 - state = "pending",
65 - promise = {
66 - state: function() {
67 - return state;
68 - },
69 - always: function() {
70 - deferred.done( arguments ).fail( arguments );
71 - return this;
72 - },
73 - "catch": function( fn ) {
74 - return promise.then( null, fn );
75 - },
76 -
77 - // Keep pipe for back-compat
78 - pipe: function( /* fnDone, fnFail, fnProgress */ ) {
79 - var fns = arguments;
80 -
81 - return jQuery.Deferred( function( newDefer ) {
82 - jQuery.each( tuples, function( i, tuple ) {
83 -
84 - // Map tuples (progress, done, fail) to arguments (done, fail, progress)
85 - var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];
86 -
87 - // deferred.progress(function() { bind to newDefer or newDefer.notify })
88 - // deferred.done(function() { bind to newDefer or newDefer.resolve })
89 - // deferred.fail(function() { bind to newDefer or newDefer.reject })
90 - deferred[ tuple[ 1 ] ]( function() {
91 - var returned = fn && fn.apply( this, arguments );
92 - if ( returned && isFunction( returned.promise ) ) {
93 - returned.promise()
94 - .progress( newDefer.notify )
95 - .done( newDefer.resolve )
96 - .fail( newDefer.reject );
97 - } else {
98 - newDefer[ tuple[ 0 ] + "With" ](
99 - this,
100 - fn ? [ returned ] : arguments
101 - );
102 - }
103 - } );
104 - } );
105 - fns = null;
106 - } ).promise();
107 - },
108 - then: function( onFulfilled, onRejected, onProgress ) {
109 - var maxDepth = 0;
110 - function resolve( depth, deferred, handler, special ) {
111 - return function() {
112 - var that = this,
113 - args = arguments,
114 - mightThrow = function() {
115 - var returned, then;
116 -
117 - // Support: Promises/A+ section 2.3.3.3.3
118 - // https://promisesaplus.com/#point-59
119 - // Ignore double-resolution attempts
120 - if ( depth < maxDepth ) {
121 - return;
122 - }
123 -
124 - returned = handler.apply( that, args );
125 -
126 - // Support: Promises/A+ section 2.3.1
127 - // https://promisesaplus.com/#point-48
128 - if ( returned === deferred.promise() ) {
129 - throw new TypeError( "Thenable self-resolution" );
130 - }
131 -
132 - // Support: Promises/A+ sections 2.3.3.1, 3.5
133 - // https://promisesaplus.com/#point-54
134 - // https://promisesaplus.com/#point-75
135 - // Retrieve `then` only once
136 - then = returned &&
137 -
138 - // Support: Promises/A+ section 2.3.4
139 - // https://promisesaplus.com/#point-64
140 - // Only check objects and functions for thenability
141 - ( typeof returned === "object" ||
142 - typeof returned === "function" ) &&
143 - returned.then;
144 -
145 - // Handle a returned thenable
146 - if ( isFunction( then ) ) {
147 -
148 - // Special processors (notify) just wait for resolution
149 - if ( special ) {
150 - then.call(
151 - returned,
152 - resolve( maxDepth, deferred, Identity, special ),
153 - resolve( maxDepth, deferred, Thrower, special )
154 - );
155 -
156 - // Normal processors (resolve) also hook into progress
157 - } else {
158 -
159 - // ...and disregard older resolution values
160 - maxDepth++;
161 -
162 - then.call(
163 - returned,
164 - resolve( maxDepth, deferred, Identity, special ),
165 - resolve( maxDepth, deferred, Thrower, special ),
166 - resolve( maxDepth, deferred, Identity,
167 - deferred.notifyWith )
168 - );
169 - }
170 -
171 - // Handle all other returned values
172 - } else {
173 -
174 - // Only substitute handlers pass on context
175 - // and multiple values (non-spec behavior)
176 - if ( handler !== Identity ) {
177 - that = undefined;
178 - args = [ returned ];
179 - }
180 -
181 - // Process the value(s)
182 - // Default process is resolve
183 - ( special || deferred.resolveWith )( that, args );
184 - }
185 - },
186 -
187 - // Only normal processors (resolve) catch and reject exceptions
188 - process = special ?
189 - mightThrow :
190 - function() {
191 - try {
192 - mightThrow();
193 - } catch ( e ) {
194 -
195 - if ( jQuery.Deferred.exceptionHook ) {
196 - jQuery.Deferred.exceptionHook( e,
197 - process.stackTrace );
198 - }
199 -
200 - // Support: Promises/A+ section 2.3.3.3.4.1
201 - // https://promisesaplus.com/#point-61
202 - // Ignore post-resolution exceptions
203 - if ( depth + 1 >= maxDepth ) {
204 -
205 - // Only substitute handlers pass on context
206 - // and multiple values (non-spec behavior)
207 - if ( handler !== Thrower ) {
208 - that = undefined;
209 - args = [ e ];
210 - }
211 -
212 - deferred.rejectWith( that, args );
213 - }
214 - }
215 - };
216 -
217 - // Support: Promises/A+ section 2.3.3.3.1
218 - // https://promisesaplus.com/#point-57
219 - // Re-resolve promises immediately to dodge false rejection from
220 - // subsequent errors
221 - if ( depth ) {
222 - process();
223 - } else {
224 -
225 - // Call an optional hook to record the stack, in case of exception
226 - // since it's otherwise lost when execution goes async
227 - if ( jQuery.Deferred.getStackHook ) {
228 - process.stackTrace = jQuery.Deferred.getStackHook();
229 - }
230 - window.setTimeout( process );
231 - }
232 - };
233 - }
234 -
235 - return jQuery.Deferred( function( newDefer ) {
236 -
237 - // progress_handlers.add( ... )
238 - tuples[ 0 ][ 3 ].add(
239 - resolve(
240 - 0,
241 - newDefer,
242 - isFunction( onProgress ) ?
243 - onProgress :
244 - Identity,
245 - newDefer.notifyWith
246 - )
247 - );
248 -
249 - // fulfilled_handlers.add( ... )
250 - tuples[ 1 ][ 3 ].add(
251 - resolve(
252 - 0,
253 - newDefer,
254 - isFunction( onFulfilled ) ?
255 - onFulfilled :
256 - Identity
257 - )
258 - );
259 -
260 - // rejected_handlers.add( ... )
261 - tuples[ 2 ][ 3 ].add(
262 - resolve(
263 - 0,
264 - newDefer,
265 - isFunction( onRejected ) ?
266 - onRejected :
267 - Thrower
268 - )
269 - );
270 - } ).promise();
271 - },
272 -
273 - // Get a promise for this deferred
274 - // If obj is provided, the promise aspect is added to the object
275 - promise: function( obj ) {
276 - return obj != null ? jQuery.extend( obj, promise ) : promise;
277 - }
278 - },
279 - deferred = {};
280 -
281 - // Add list-specific methods
282 - jQuery.each( tuples, function( i, tuple ) {
283 - var list = tuple[ 2 ],
284 - stateString = tuple[ 5 ];
285 -
286 - // promise.progress = list.add
287 - // promise.done = list.add
288 - // promise.fail = list.add
289 - promise[ tuple[ 1 ] ] = list.add;
290 -
291 - // Handle state
292 - if ( stateString ) {
293 - list.add(
294 - function() {
295 -
296 - // state = "resolved" (i.e., fulfilled)
297 - // state = "rejected"
298 - state = stateString;
299 - },
300 -
301 - // rejected_callbacks.disable
302 - // fulfilled_callbacks.disable
303 - tuples[ 3 - i ][ 2 ].disable,
304 -
305 - // rejected_handlers.disable
306 - // fulfilled_handlers.disable
307 - tuples[ 3 - i ][ 3 ].disable,
308 -
309 - // progress_callbacks.lock
310 - tuples[ 0 ][ 2 ].lock,
311 -
312 - // progress_handlers.lock
313 - tuples[ 0 ][ 3 ].lock
314 - );
315 - }
316 -
317 - // progress_handlers.fire
318 - // fulfilled_handlers.fire
319 - // rejected_handlers.fire
320 - list.add( tuple[ 3 ].fire );
321 -
322 - // deferred.notify = function() { deferred.notifyWith(...) }
323 - // deferred.resolve = function() { deferred.resolveWith(...) }
324 - // deferred.reject = function() { deferred.rejectWith(...) }
325 - deferred[ tuple[ 0 ] ] = function() {
326 - deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments );
327 - return this;
328 - };
329 -
330 - // deferred.notifyWith = list.fireWith
331 - // deferred.resolveWith = list.fireWith
332 - // deferred.rejectWith = list.fireWith
333 - deferred[ tuple[ 0 ] + "With" ] = list.fireWith;
334 - } );
335 -
336 - // Make the deferred a promise
337 - promise.promise( deferred );
338 -
339 - // Call given func if any
340 - if ( func ) {
341 - func.call( deferred, deferred );
342 - }
343 -
344 - // All done!
345 - return deferred;
346 - },
347 -
348 - // Deferred helper
349 - when: function( singleValue ) {
350 - var
351 -
352 - // count of uncompleted subordinates
353 - remaining = arguments.length,
354 -
355 - // count of unprocessed arguments
356 - i = remaining,
357 -
358 - // subordinate fulfillment data
359 - resolveContexts = Array( i ),
360 - resolveValues = slice.call( arguments ),
361 -
362 - // the master Deferred
363 - master = jQuery.Deferred(),
364 -
365 - // subordinate callback factory
366 - updateFunc = function( i ) {
367 - return function( value ) {
368 - resolveContexts[ i ] = this;
369 - resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
370 - if ( !( --remaining ) ) {
371 - master.resolveWith( resolveContexts, resolveValues );
372 - }
373 - };
374 - };
375 -
376 - // Single- and empty arguments are adopted like Promise.resolve
377 - if ( remaining <= 1 ) {
378 - adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject,
379 - !remaining );
380 -
381 - // Use .then() to unwrap secondary thenables (cf. gh-3000)
382 - if ( master.state() === "pending" ||
383 - isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {
384 -
385 - return master.then();
386 - }
387 - }
388 -
389 - // Multiple arguments are aggregated like Promise.all array elements
390 - while ( i-- ) {
391 - adoptValue( resolveValues[ i ], updateFunc( i ), master.reject );
392 - }
393 -
394 - return master.promise();
395 - }
396 - } );
397 -
398 - return jQuery;
399 - } );
@@ -1,21 +0,0
1 - define( [
2 - "../core",
3 - "../deferred"
4 - ], function( jQuery ) {
5 -
6 - "use strict";
7 -
8 - // These usually indicate a programmer mistake during development,
9 - // warn about them ASAP rather than swallowing them by default.
10 - var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
11 -
12 - jQuery.Deferred.exceptionHook = function( error, stack ) {
13 -
14 - // Support: IE 8 - 9 only
15 - // Console exists when dev tools are open, which can happen at any time
16 - if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {
17 - window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack );
18 - }
19 - };
20 -
21 - } );
@@ -1,98 +0,0
1 - define( [
2 - "./core",
3 - "./core/nodeName",
4 - "./core/camelCase",
5 - "./core/toType",
6 - "./var/isFunction",
7 - "./var/isWindow",
8 - "./var/slice",
9 -
10 - "./event/alias"
11 - ], function( jQuery, nodeName, camelCase, toType, isFunction, isWindow, slice ) {
12 -
13 - "use strict";
14 -
15 - jQuery.fn.extend( {
16 -
17 - bind: function( types, data, fn ) {
18 - return this.on( types, null, data, fn );
19 - },
20 - unbind: function( types, fn ) {
21 - return this.off( types, null, fn );
22 - },
23 -
24 - delegate: function( selector, types, data, fn ) {
25 - return this.on( types, selector, data, fn );
26 - },
27 - undelegate: function( selector, types, fn ) {
28 -
29 - // ( namespace ) or ( selector, types [, fn] )
30 - return arguments.length === 1 ?
31 - this.off( selector, "**" ) :
32 - this.off( types, selector || "**", fn );
33 - }
34 - } );
35 -
36 - // Bind a function to a context, optionally partially applying any
37 - // arguments.
38 - // jQuery.proxy is deprecated to promote standards (specifically Function#bind)
39 - // However, it is not slated for removal any time soon
40 - jQuery.proxy = function( fn, context ) {
41 - var tmp, args, proxy;
42 -
43 - if ( typeof context === "string" ) {
44 - tmp = fn[ context ];
45 - context = fn;
46 - fn = tmp;
47 - }
48 -
49 - // Quick check to determine if target is callable, in the spec
50 - // this throws a TypeError, but we will just return undefined.
51 - if ( !isFunction( fn ) ) {
52 - return undefined;
53 - }
54 -
55 - // Simulated bind
56 - args = slice.call( arguments, 2 );
57 - proxy = function() {
58 - return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
59 - };
60 -
61 - // Set the guid of unique handler to the same of original handler, so it can be removed
62 - proxy.guid = fn.guid = fn.guid || jQuery.guid++;
63 -
64 - return proxy;
65 - };
66 -
67 - jQuery.holdReady = function( hold ) {
68 - if ( hold ) {
69 - jQuery.readyWait++;
70 - } else {
71 - jQuery.ready( true );
72 - }
73 - };
74 - jQuery.isArray = Array.isArray;
75 - jQuery.parseJSON = JSON.parse;
76 - jQuery.nodeName = nodeName;
77 - jQuery.isFunction = isFunction;
78 - jQuery.isWindow = isWindow;
79 - jQuery.camelCase = camelCase;
80 - jQuery.type = toType;
81 -
82 - jQuery.now = Date.now;
83 -
84 - jQuery.isNumeric = function( obj ) {
85 -
86 - // As of jQuery 3.0, isNumeric is limited to
87 - // strings and numbers (primitives or objects)
88 - // that can be coerced to finite numbers (gh-2662)
89 - var type = jQuery.type( obj );
90 - return ( type === "number" || type === "string" ) &&
91 -
92 - // parseFloat NaNs numeric-cast false positives ("")
93 - // ...but misinterprets leading-number strings, particularly hex literals ("0x...")
94 - // subtraction forces infinities to NaN
95 - !isNaN( obj - parseFloat( obj ) );
96 - };
97 -
98 - } );
@@ -1,57 +0,0
1 - define( [
2 - "./core",
3 - "./core/access",
4 - "./var/isWindow",
5 - "./css"
6 - ], function( jQuery, access, isWindow ) {
7 -
8 - "use strict";
9 -
10 - // Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
11 - jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
12 - jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name },
13 - function( defaultExtra, funcName ) {
14 -
15 - // Margin is only for outerHeight, outerWidth
16 - jQuery.fn[ funcName ] = function( margin, value ) {
17 - var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
18 - extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
19 -
20 - return access( this, function( elem, type, value ) {
21 - var doc;
22 -
23 - if ( isWindow( elem ) ) {
24 -
25 - // $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)
26 - return funcName.indexOf( "outer" ) === 0 ?
27 - elem[ "inner" + name ] :
28 - elem.document.documentElement[ "client" + name ];
29 - }
30 -
31 - // Get document width or height
32 - if ( elem.nodeType === 9 ) {
33 - doc = elem.documentElement;
34 -
35 - // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],
36 - // whichever is greatest
37 - return Math.max(
38 - elem.body[ "scroll" + name ], doc[ "scroll" + name ],
39 - elem.body[ "offset" + name ], doc[ "offset" + name ],
40 - doc[ "client" + name ]
41 - );
42 - }
43 -
44 - return value === undefined ?
45 -
46 - // Get width or height on the element, requesting but not forcing parseFloat
47 - jQuery.css( elem, type, extra ) :
48 -
49 - // Set width or height on the element
50 - jQuery.style( elem, type, value, extra );
51 - }, type, chainable ? margin : undefined, chainable );
52 - };
53 - } );
54 - } );
55 -
56 - return jQuery;
57 - } );
This diff has been collapsed as it changes many lines, (702 lines changed) Show them Hide them
@@ -1,702 +0,0
1 - define( [
2 - "./core",
3 - "./core/camelCase",
4 - "./var/document",
5 - "./var/isFunction",
6 - "./var/rcssNum",
7 - "./var/rnothtmlwhite",
8 - "./css/var/cssExpand",
9 - "./css/var/isHiddenWithinTree",
10 - "./css/var/swap",
11 - "./css/adjustCSS",
12 - "./data/var/dataPriv",
13 - "./css/showHide",
14 -
15 - "./core/init",
16 - "./queue",
17 - "./deferred",
18 - "./traversing",
19 - "./manipulation",
20 - "./css",
21 - "./effects/Tween"
22 - ], function( jQuery, camelCase, document, isFunction, rcssNum, rnothtmlwhite, cssExpand,
23 - isHiddenWithinTree, swap, adjustCSS, dataPriv, showHide ) {
24 -
25 - "use strict";
26 -
27 - var
28 - fxNow, inProgress,
29 - rfxtypes = /^(?:toggle|show|hide)$/,
30 - rrun = /queueHooks$/;
31 -
32 - function schedule() {
33 - if ( inProgress ) {
34 - if ( document.hidden === false && window.requestAnimationFrame ) {
35 - window.requestAnimationFrame( schedule );
36 - } else {
37 - window.setTimeout( schedule, jQuery.fx.interval );
38 - }
39 -
40 - jQuery.fx.tick();
41 - }
42 - }
43 -
44 - // Animations created synchronously will run synchronously
45 - function createFxNow() {
46 - window.setTimeout( function() {
47 - fxNow = undefined;
48 - } );
49 - return ( fxNow = Date.now() );
50 - }
51 -
52 - // Generate parameters to create a standard animation
53 - function genFx( type, includeWidth ) {
54 - var which,
55 - i = 0,
56 - attrs = { height: type };
57 -
58 - // If we include width, step value is 1 to do all cssExpand values,
59 - // otherwise step value is 2 to skip over Left and Right
60 - includeWidth = includeWidth ? 1 : 0;
61 - for ( ; i < 4; i += 2 - includeWidth ) {
62 - which = cssExpand[ i ];
63 - attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
64 - }
65 -
66 - if ( includeWidth ) {
67 - attrs.opacity = attrs.width = type;
68 - }
69 -
70 - return attrs;
71 - }
72 -
73 - function createTween( value, prop, animation ) {
74 - var tween,
75 - collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ),
76 - index = 0,
77 - length = collection.length;
78 - for ( ; index < length; index++ ) {
79 - if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {
80 -
81 - // We're done with this property
82 - return tween;
83 - }
84 - }
85 - }
86 -
87 - function defaultPrefilter( elem, props, opts ) {
88 - var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,
89 - isBox = "width" in props || "height" in props,
90 - anim = this,
91 - orig = {},
92 - style = elem.style,
93 - hidden = elem.nodeType && isHiddenWithinTree( elem ),
94 - dataShow = dataPriv.get( elem, "fxshow" );
95 -
96 - // Queue-skipping animations hijack the fx hooks
97 - if ( !opts.queue ) {
98 - hooks = jQuery._queueHooks( elem, "fx" );
99 - if ( hooks.unqueued == null ) {
100 - hooks.unqueued = 0;
101 - oldfire = hooks.empty.fire;
102 - hooks.empty.fire = function() {
103 - if ( !hooks.unqueued ) {
104 - oldfire();
105 - }
106 - };
107 - }
108 - hooks.unqueued++;
109 -
110 - anim.always( function() {
111 -
112 - // Ensure the complete handler is called before this completes
113 - anim.always( function() {
114 - hooks.unqueued--;
115 - if ( !jQuery.queue( elem, "fx" ).length ) {
116 - hooks.empty.fire();
117 - }
118 - } );
119 - } );
120 - }
121 -
122 - // Detect show/hide animations
123 - for ( prop in props ) {
124 - value = props[ prop ];
125 - if ( rfxtypes.test( value ) ) {
126 - delete props[ prop ];
127 - toggle = toggle || value === "toggle";
128 - if ( value === ( hidden ? "hide" : "show" ) ) {
129 -
130 - // Pretend to be hidden if this is a "show" and
131 - // there is still data from a stopped show/hide
132 - if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) {
133 - hidden = true;
134 -
135 - // Ignore all other no-op show/hide data
136 - } else {
137 - continue;
138 - }
139 - }
140 - orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
141 - }
142 - }
143 -
144 - // Bail out if this is a no-op like .hide().hide()
145 - propTween = !jQuery.isEmptyObject( props );
146 - if ( !propTween && jQuery.isEmptyObject( orig ) ) {
147 - return;
148 - }
149 -
150 - // Restrict "overflow" and "display" styles during box animations
151 - if ( isBox && elem.nodeType === 1 ) {
152 -
153 - // Support: IE <=9 - 11, Edge 12 - 15
154 - // Record all 3 overflow attributes because IE does not infer the shorthand
155 - // from identically-valued overflowX and overflowY and Edge just mirrors
156 - // the overflowX value there.
157 - opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
158 -
159 - // Identify a display type, preferring old show/hide data over the CSS cascade
160 - restoreDisplay = dataShow && dataShow.display;
161 - if ( restoreDisplay == null ) {
162 - restoreDisplay = dataPriv.get( elem, "display" );
163 - }
164 - display = jQuery.css( elem, "display" );
165 - if ( display === "none" ) {
166 - if ( restoreDisplay ) {
167 - display = restoreDisplay;
168 - } else {
169 -
170 - // Get nonempty value(s) by temporarily forcing visibility
171 - showHide( [ elem ], true );
172 - restoreDisplay = elem.style.display || restoreDisplay;
173 - display = jQuery.css( elem, "display" );
174 - showHide( [ elem ] );
175 - }
176 - }
177 -
178 - // Animate inline elements as inline-block
179 - if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) {
180 - if ( jQuery.css( elem, "float" ) === "none" ) {
181 -
182 - // Restore the original display value at the end of pure show/hide animations
183 - if ( !propTween ) {
184 - anim.done( function() {
185 - style.display = restoreDisplay;
186 - } );
187 - if ( restoreDisplay == null ) {
188 - display = style.display;
189 - restoreDisplay = display === "none" ? "" : display;
190 - }
191 - }
192 - style.display = "inline-block";
193 - }
194 - }
195 - }
196 -
197 - if ( opts.overflow ) {
198 - style.overflow = "hidden";
199 - anim.always( function() {
200 - style.overflow = opts.overflow[ 0 ];
201 - style.overflowX = opts.overflow[ 1 ];
202 - style.overflowY = opts.overflow[ 2 ];
203 - } );
204 - }
205 -
206 - // Implement show/hide animations
207 - propTween = false;
208 - for ( prop in orig ) {
209 -
210 - // General show/hide setup for this element animation
211 - if ( !propTween ) {
212 - if ( dataShow ) {
213 - if ( "hidden" in dataShow ) {
214 - hidden = dataShow.hidden;
215 - }
216 - } else {
217 - dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } );
218 - }
219 -
220 - // Store hidden/visible for toggle so `.stop().toggle()` "reverses"
221 - if ( toggle ) {
222 - dataShow.hidden = !hidden;
223 - }
224 -
225 - // Show elements before animating them
226 - if ( hidden ) {
227 - showHide( [ elem ], true );
228 - }
229 -
230 - /* eslint-disable no-loop-func */
231 -
232 - anim.done( function() {
233 -
234 - /* eslint-enable no-loop-func */
235 -
236 - // The final step of a "hide" animation is actually hiding the element
237 - if ( !hidden ) {
238 - showHide( [ elem ] );
239 - }
240 - dataPriv.remove( elem, "fxshow" );
241 - for ( prop in orig ) {
242 - jQuery.style( elem, prop, orig[ prop ] );
243 - }
244 - } );
245 - }
246 -
247 - // Per-property setup
248 - propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
249 - if ( !( prop in dataShow ) ) {
250 - dataShow[ prop ] = propTween.start;
251 - if ( hidden ) {
252 - propTween.end = propTween.start;
253 - propTween.start = 0;
254 - }
255 - }
256 - }
257 - }
258 -
259 - function propFilter( props, specialEasing ) {
260 - var index, name, easing, value, hooks;
261 -
262 - // camelCase, specialEasing and expand cssHook pass
263 - for ( index in props ) {
264 - name = camelCase( index );
265 - easing = specialEasing[ name ];
266 - value = props[ index ];
267 - if ( Array.isArray( value ) ) {
268 - easing = value[ 1 ];
269 - value = props[ index ] = value[ 0 ];
270 - }
271 -
272 - if ( index !== name ) {
273 - props[ name ] = value;
274 - delete props[ index ];
275 - }
276 -
277 - hooks = jQuery.cssHooks[ name ];
278 - if ( hooks && "expand" in hooks ) {
279 - value = hooks.expand( value );
280 - delete props[ name ];
281 -
282 - // Not quite $.extend, this won't overwrite existing keys.
283 - // Reusing 'index' because we have the correct "name"
284 - for ( index in value ) {
285 - if ( !( index in props ) ) {
286 - props[ index ] = value[ index ];
287 - specialEasing[ index ] = easing;
288 - }
289 - }
290 - } else {
291 - specialEasing[ name ] = easing;
292 - }
293 - }
294 - }
295 -
296 - function Animation( elem, properties, options ) {
297 - var result,
298 - stopped,
299 - index = 0,
300 - length = Animation.prefilters.length,
301 - deferred = jQuery.Deferred().always( function() {
302 -
303 - // Don't match elem in the :animated selector
304 - delete tick.elem;
305 - } ),
306 - tick = function() {
307 - if ( stopped ) {
308 - return false;
309 - }
310 - var currentTime = fxNow || createFxNow(),
311 - remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
312 -
313 - // Support: Android 2.3 only
314 - // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)
315 - temp = remaining / animation.duration || 0,
316 - percent = 1 - temp,
317 - index = 0,
318 - length = animation.tweens.length;
319 -
320 - for ( ; index < length; index++ ) {
321 - animation.tweens[ index ].run( percent );
322 - }
323 -
324 - deferred.notifyWith( elem, [ animation, percent, remaining ] );
325 -
326 - // If there's more to do, yield
327 - if ( percent < 1 && length ) {
328 - return remaining;
329 - }
330 -
331 - // If this was an empty animation, synthesize a final progress notification
332 - if ( !length ) {
333 - deferred.notifyWith( elem, [ animation, 1, 0 ] );
334 - }
335 -
336 - // Resolve the animation and report its conclusion
337 - deferred.resolveWith( elem, [ animation ] );
338 - return false;
339 - },
340 - animation = deferred.promise( {
341 - elem: elem,
342 - props: jQuery.extend( {}, properties ),
343 - opts: jQuery.extend( true, {
344 - specialEasing: {},
345 - easing: jQuery.easing._default
346 - }, options ),
347 - originalProperties: properties,
348 - originalOptions: options,
349 - startTime: fxNow || createFxNow(),
350 - duration: options.duration,
351 - tweens: [],
352 - createTween: function( prop, end ) {
353 - var tween = jQuery.Tween( elem, animation.opts, prop, end,
354 - animation.opts.specialEasing[ prop ] || animation.opts.easing );
355 - animation.tweens.push( tween );
356 - return tween;
357 - },
358 - stop: function( gotoEnd ) {
359 - var index = 0,
360 -
361 - // If we are going to the end, we want to run all the tweens
362 - // otherwise we skip this part
363 - length = gotoEnd ? animation.tweens.length : 0;
364 - if ( stopped ) {
365 - return this;
366 - }
367 - stopped = true;
368 - for ( ; index < length; index++ ) {
369 - animation.tweens[ index ].run( 1 );
370 - }
371 -
372 - // Resolve when we played the last frame; otherwise, reject
373 - if ( gotoEnd ) {
374 - deferred.notifyWith( elem, [ animation, 1, 0 ] );
375 - deferred.resolveWith( elem, [ animation, gotoEnd ] );
376 - } else {
377 - deferred.rejectWith( elem, [ animation, gotoEnd ] );
378 - }
379 - return this;
380 - }
381 - } ),
382 - props = animation.props;
383 -
384 - propFilter( props, animation.opts.specialEasing );
385 -
386 - for ( ; index < length; index++ ) {
387 - result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );
388 - if ( result ) {
389 - if ( isFunction( result.stop ) ) {
390 - jQuery._queueHooks( animation.elem, animation.opts.queue ).stop =
391 - result.stop.bind( result );
392 - }
393 - return result;
394 - }
395 - }
396 -
397 - jQuery.map( props, createTween, animation );
398 -
399 - if ( isFunction( animation.opts.start ) ) {
400 - animation.opts.start.call( elem, animation );
401 - }
402 -
403 - // Attach callbacks from options
404 - animation
405 - .progress( animation.opts.progress )
406 - .done( animation.opts.done, animation.opts.complete )
407 - .fail( animation.opts.fail )
408 - .always( animation.opts.always );
409 -
410 - jQuery.fx.timer(
411 - jQuery.extend( tick, {
412 - elem: elem,
413 - anim: animation,
414 - queue: animation.opts.queue
415 - } )
416 - );
417 -
418 - return animation;
419 - }
420 -
421 - jQuery.Animation = jQuery.extend( Animation, {
422 -
423 - tweeners: {
424 - "*": [ function( prop, value ) {
425 - var tween = this.createTween( prop, value );
426 - adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );
427 - return tween;
428 - } ]
429 - },
430 -
431 - tweener: function( props, callback ) {
432 - if ( isFunction( props ) ) {
433 - callback = props;
434 - props = [ "*" ];
435 - } else {
436 - props = props.match( rnothtmlwhite );
437 - }
438 -
439 - var prop,
440 - index = 0,
441 - length = props.length;
442 -
443 - for ( ; index < length; index++ ) {
444 - prop = props[ index ];
445 - Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];
446 - Animation.tweeners[ prop ].unshift( callback );
447 - }
448 - },
449 -
450 - prefilters: [ defaultPrefilter ],
451 -
452 - prefilter: function( callback, prepend ) {
453 - if ( prepend ) {
454 - Animation.prefilters.unshift( callback );
455 - } else {
456 - Animation.prefilters.push( callback );
457 - }
458 - }
459 - } );
460 -
461 - jQuery.speed = function( speed, easing, fn ) {
462 - var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
463 - complete: fn || !fn && easing ||
464 - isFunction( speed ) && speed,
465 - duration: speed,
466 - easing: fn && easing || easing && !isFunction( easing ) && easing
467 - };
468 -
469 - // Go to the end state if fx are off
470 - if ( jQuery.fx.off ) {
471 - opt.duration = 0;
472 -
473 - } else {
474 - if ( typeof opt.duration !== "number" ) {
475 - if ( opt.duration in jQuery.fx.speeds ) {
476 - opt.duration = jQuery.fx.speeds[ opt.duration ];
477 -
478 - } else {
479 - opt.duration = jQuery.fx.speeds._default;
480 - }
481 - }
482 - }
483 -
484 - // Normalize opt.queue - true/undefined/null -> "fx"
485 - if ( opt.queue == null || opt.queue === true ) {
486 - opt.queue = "fx";
487 - }
488 -
489 - // Queueing
490 - opt.old = opt.complete;
491 -
492 - opt.complete = function() {
493 - if ( isFunction( opt.old ) ) {
494 - opt.old.call( this );
495 - }
496 -
497 - if ( opt.queue ) {
498 - jQuery.dequeue( this, opt.queue );
499 - }
500 - };
501 -
502 - return opt;
503 - };
504 -
505 - jQuery.fn.extend( {
506 - fadeTo: function( speed, to, easing, callback ) {
507 -
508 - // Show any hidden elements after setting opacity to 0
509 - return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show()
510 -
511 - // Animate to the value specified
512 - .end().animate( { opacity: to }, speed, easing, callback );
513 - },
514 - animate: function( prop, speed, easing, callback ) {
515 - var empty = jQuery.isEmptyObject( prop ),
516 - optall = jQuery.speed( speed, easing, callback ),
517 - doAnimation = function() {
518 -
519 - // Operate on a copy of prop so per-property easing won't be lost
520 - var anim = Animation( this, jQuery.extend( {}, prop ), optall );
521 -
522 - // Empty animations, or finishing resolves immediately
523 - if ( empty || dataPriv.get( this, "finish" ) ) {
524 - anim.stop( true );
525 - }
526 - };
527 - doAnimation.finish = doAnimation;
528 -
529 - return empty || optall.queue === false ?
530 - this.each( doAnimation ) :
531 - this.queue( optall.queue, doAnimation );
532 - },
533 - stop: function( type, clearQueue, gotoEnd ) {
534 - var stopQueue = function( hooks ) {
535 - var stop = hooks.stop;
536 - delete hooks.stop;
537 - stop( gotoEnd );
538 - };
539 -
540 - if ( typeof type !== "string" ) {
541 - gotoEnd = clearQueue;
542 - clearQueue = type;
543 - type = undefined;
544 - }
545 - if ( clearQueue && type !== false ) {
546 - this.queue( type || "fx", [] );
547 - }
548 -
549 - return this.each( function() {
550 - var dequeue = true,
551 - index = type != null && type + "queueHooks",
552 - timers = jQuery.timers,
553 - data = dataPriv.get( this );
554 -
555 - if ( index ) {
556 - if ( data[ index ] && data[ index ].stop ) {
557 - stopQueue( data[ index ] );
558 - }
559 - } else {
560 - for ( index in data ) {
561 - if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
562 - stopQueue( data[ index ] );
563 - }
564 - }
565 - }
566 -
567 - for ( index = timers.length; index--; ) {
568 - if ( timers[ index ].elem === this &&
569 - ( type == null || timers[ index ].queue === type ) ) {
570 -
571 - timers[ index ].anim.stop( gotoEnd );
572 - dequeue = false;
573 - timers.splice( index, 1 );
574 - }
575 - }
576 -
577 - // Start the next in the queue if the last step wasn't forced.
578 - // Timers currently will call their complete callbacks, which
579 - // will dequeue but only if they were gotoEnd.
580 - if ( dequeue || !gotoEnd ) {
581 - jQuery.dequeue( this, type );
582 - }
583 - } );
584 - },
585 - finish: function( type ) {
586 - if ( type !== false ) {
587 - type = type || "fx";
588 - }
589 - return this.each( function() {
590 - var index,
591 - data = dataPriv.get( this ),
592 - queue = data[ type + "queue" ],
593 - hooks = data[ type + "queueHooks" ],
594 - timers = jQuery.timers,
595 - length = queue ? queue.length : 0;
596 -
597 - // Enable finishing flag on private data
598 - data.finish = true;
599 -
600 - // Empty the queue first
601 - jQuery.queue( this, type, [] );
602 -
603 - if ( hooks && hooks.stop ) {
604 - hooks.stop.call( this, true );
605 - }
606 -
607 - // Look for any active animations, and finish them
608 - for ( index = timers.length; index--; ) {
609 - if ( timers[ index ].elem === this && timers[ index ].queue === type ) {
610 - timers[ index ].anim.stop( true );
611 - timers.splice( index, 1 );
612 - }
613 - }
614 -
615 - // Look for any animations in the old queue and finish them
616 - for ( index = 0; index < length; index++ ) {
617 - if ( queue[ index ] && queue[ index ].finish ) {
618 - queue[ index ].finish.call( this );
619 - }
620 - }
621 -
622 - // Turn off finishing flag
623 - delete data.finish;
624 - } );
625 - }
626 - } );
627 -
628 - jQuery.each( [ "toggle", "show", "hide" ], function( i, name ) {
629 - var cssFn = jQuery.fn[ name ];
630 - jQuery.fn[ name ] = function( speed, easing, callback ) {
631 - return speed == null || typeof speed === "boolean" ?
632 - cssFn.apply( this, arguments ) :
633 - this.animate( genFx( name, true ), speed, easing, callback );
634 - };
635 - } );
636 -
637 - // Generate shortcuts for custom animations
638 - jQuery.each( {
639 - slideDown: genFx( "show" ),
640 - slideUp: genFx( "hide" ),
641 - slideToggle: genFx( "toggle" ),
642 - fadeIn: { opacity: "show" },
643 - fadeOut: { opacity: "hide" },
644 - fadeToggle: { opacity: "toggle" }
645 - }, function( name, props ) {
646 - jQuery.fn[ name ] = function( speed, easing, callback ) {
647 - return this.animate( props, speed, easing, callback );
648 - };
649 - } );
650 -
651 - jQuery.timers = [];
652 - jQuery.fx.tick = function() {
653 - var timer,
654 - i = 0,
655 - timers = jQuery.timers;
656 -
657 - fxNow = Date.now();
658 -
659 - for ( ; i < timers.length; i++ ) {
660 - timer = timers[ i ];
661 -
662 - // Run the timer and safely remove it when done (allowing for external removal)
663 - if ( !timer() && timers[ i ] === timer ) {
664 - timers.splice( i--, 1 );
665 - }
666 - }
667 -
668 - if ( !timers.length ) {
669 - jQuery.fx.stop();
670 - }
671 - fxNow = undefined;
672 - };
673 -
674 - jQuery.fx.timer = function( timer ) {
675 - jQuery.timers.push( timer );
676 - jQuery.fx.start();
677 - };
678 -
679 - jQuery.fx.interval = 13;
680 - jQuery.fx.start = function() {
681 - if ( inProgress ) {
682 - return;
683 - }
684 -
685 - inProgress = true;
686 - schedule();
687 - };
688 -
689 - jQuery.fx.stop = function() {
690 - inProgress = null;
691 - };
692 -
693 - jQuery.fx.speeds = {
694 - slow: 600,
695 - fast: 200,
696 -
697 - // Default speed
698 - _default: 400
699 - };
700 -
701 - return jQuery;
702 - } );
@@ -1,125 +0,0
1 - define( [
2 - "../core",
3 - "../css/finalPropName",
4 -
5 - "../css"
6 - ], function( jQuery, finalPropName ) {
7 -
8 - "use strict";
9 -
10 - function Tween( elem, options, prop, end, easing ) {
11 - return new Tween.prototype.init( elem, options, prop, end, easing );
12 - }
13 - jQuery.Tween = Tween;
14 -
15 - Tween.prototype = {
16 - constructor: Tween,
17 - init: function( elem, options, prop, end, easing, unit ) {
18 - this.elem = elem;
19 - this.prop = prop;
20 - this.easing = easing || jQuery.easing._default;
21 - this.options = options;
22 - this.start = this.now = this.cur();
23 - this.end = end;
24 - this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
25 - },
26 - cur: function() {
27 - var hooks = Tween.propHooks[ this.prop ];
28 -
29 - return hooks && hooks.get ?
30 - hooks.get( this ) :
31 - Tween.propHooks._default.get( this );
32 - },
33 - run: function( percent ) {
34 - var eased,
35 - hooks = Tween.propHooks[ this.prop ];
36 -
37 - if ( this.options.duration ) {
38 - this.pos = eased = jQuery.easing[ this.easing ](
39 - percent, this.options.duration * percent, 0, 1, this.options.duration
40 - );
41 - } else {
42 - this.pos = eased = percent;
43 - }
44 - this.now = ( this.end - this.start ) * eased + this.start;
45 -
46 - if ( this.options.step ) {
47 - this.options.step.call( this.elem, this.now, this );
48 - }
49 -
50 - if ( hooks && hooks.set ) {
51 - hooks.set( this );
52 - } else {
53 - Tween.propHooks._default.set( this );
54 - }
55 - return this;
56 - }
57 - };
58 -
59 - Tween.prototype.init.prototype = Tween.prototype;
60 -
61 - Tween.propHooks = {
62 - _default: {
63 - get: function( tween ) {
64 - var result;
65 -
66 - // Use a property on the element directly when it is not a DOM element,
67 - // or when there is no matching style property that exists.
68 - if ( tween.elem.nodeType !== 1 ||
69 - tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {
70 - return tween.elem[ tween.prop ];
71 - }
72 -
73 - // Passing an empty string as a 3rd parameter to .css will automatically
74 - // attempt a parseFloat and fallback to a string if the parse fails.
75 - // Simple values such as "10px" are parsed to Float;
76 - // complex values such as "rotate(1rad)" are returned as-is.
77 - result = jQuery.css( tween.elem, tween.prop, "" );
78 -
79 - // Empty strings, null, undefined and "auto" are converted to 0.
80 - return !result || result === "auto" ? 0 : result;
81 - },
82 - set: function( tween ) {
83 -
84 - // Use step hook for back compat.
85 - // Use cssHook if its there.
86 - // Use .style if available and use plain properties where available.
87 - if ( jQuery.fx.step[ tween.prop ] ) {
88 - jQuery.fx.step[ tween.prop ]( tween );
89 - } else if ( tween.elem.nodeType === 1 && (
90 - jQuery.cssHooks[ tween.prop ] ||
91 - tween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {
92 - jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
93 - } else {
94 - tween.elem[ tween.prop ] = tween.now;
95 - }
96 - }
97 - }
98 - };
99 -
100 - // Support: IE <=9 only
101 - // Panic based approach to setting things on disconnected nodes
102 - Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
103 - set: function( tween ) {
104 - if ( tween.elem.nodeType && tween.elem.parentNode ) {
105 - tween.elem[ tween.prop ] = tween.now;
106 - }
107 - }
108 - };
109 -
110 - jQuery.easing = {
111 - linear: function( p ) {
112 - return p;
113 - },
114 - swing: function( p ) {
115 - return 0.5 - Math.cos( p * Math.PI ) / 2;
116 - },
117 - _default: "swing"
118 - };
119 -
120 - jQuery.fx = Tween.prototype.init;
121 -
122 - // Back compat <1.8 extension point
123 - jQuery.fx.step = {};
124 -
125 - } );
@@ -1,15 +0,0
1 - define( [
2 - "../core",
3 - "../selector",
4 - "../effects"
5 - ], function( jQuery ) {
6 -
7 - "use strict";
8 -
9 - jQuery.expr.pseudos.animated = function( elem ) {
10 - return jQuery.grep( jQuery.timers, function( fn ) {
11 - return elem === fn.elem;
12 - } ).length;
13 - };
14 -
15 - } );
This diff has been collapsed as it changes many lines, (888 lines changed) Show them Hide them
@@ -1,888 +0,0
1 - define( [
2 - "./core",
3 - "./var/document",
4 - "./var/documentElement",
5 - "./var/isFunction",
6 - "./var/rnothtmlwhite",
7 - "./var/rcheckableType",
8 - "./var/slice",
9 - "./data/var/dataPriv",
10 - "./core/nodeName",
11 -
12 - "./core/init",
13 - "./selector"
14 - ], function( jQuery, document, documentElement, isFunction, rnothtmlwhite,
15 - rcheckableType, slice, dataPriv, nodeName ) {
16 -
17 - "use strict";
18 -
19 - var
20 - rkeyEvent = /^key/,
21 - rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,
22 - rtypenamespace = /^([^.]*)(?:\.(.+)|)/;
23 -
24 - function returnTrue() {
25 - return true;
26 - }
27 -
28 - function returnFalse() {
29 - return false;
30 - }
31 -
32 - // Support: IE <=9 - 11+
33 - // focus() and blur() are asynchronous, except when they are no-op.
34 - // So expect focus to be synchronous when the element is already active,
35 - // and blur to be synchronous when the element is not already active.
36 - // (focus and blur are always synchronous in other supported browsers,
37 - // this just defines when we can count on it).
38 - function expectSync( elem, type ) {
39 - return ( elem === safeActiveElement() ) === ( type === "focus" );
40 - }
41 -
42 - // Support: IE <=9 only
43 - // Accessing document.activeElement can throw unexpectedly
44 - // https://bugs.jquery.com/ticket/13393
45 - function safeActiveElement() {
46 - try {
47 - return document.activeElement;
48 - } catch ( err ) { }
49 - }
50 -
51 - function on( elem, types, selector, data, fn, one ) {
52 - var origFn, type;
53 -
54 - // Types can be a map of types/handlers
55 - if ( typeof types === "object" ) {
56 -
57 - // ( types-Object, selector, data )
58 - if ( typeof selector !== "string" ) {
59 -
60 - // ( types-Object, data )
61 - data = data || selector;
62 - selector = undefined;
63 - }
64 - for ( type in types ) {
65 - on( elem, type, selector, data, types[ type ], one );
66 - }
67 - return elem;
68 - }
69 -
70 - if ( data == null && fn == null ) {
71 -
72 - // ( types, fn )
73 - fn = selector;
74 - data = selector = undefined;
75 - } else if ( fn == null ) {
76 - if ( typeof selector === "string" ) {
77 -
78 - // ( types, selector, fn )
79 - fn = data;
80 - data = undefined;
81 - } else {
82 -
83 - // ( types, data, fn )
84 - fn = data;
85 - data = selector;
86 - selector = undefined;
87 - }
88 - }
89 - if ( fn === false ) {
90 - fn = returnFalse;
91 - } else if ( !fn ) {
92 - return elem;
93 - }
94 -
95 - if ( one === 1 ) {
96 - origFn = fn;
97 - fn = function( event ) {
98 -
99 - // Can use an empty set, since event contains the info
100 - jQuery().off( event );
101 - return origFn.apply( this, arguments );
102 - };
103 -
104 - // Use same guid so caller can remove using origFn
105 - fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
106 - }
107 - return elem.each( function() {
108 - jQuery.event.add( this, types, fn, data, selector );
109 - } );
110 - }
111 -
112 - /*
113 - * Helper functions for managing events -- not part of the public interface.
114 - * Props to Dean Edwards' addEvent library for many of the ideas.
115 - */
116 - jQuery.event = {
117 -
118 - global: {},
119 -
120 - add: function( elem, types, handler, data, selector ) {
121 -
122 - var handleObjIn, eventHandle, tmp,
123 - events, t, handleObj,
124 - special, handlers, type, namespaces, origType,
125 - elemData = dataPriv.get( elem );
126 -
127 - // Don't attach events to noData or text/comment nodes (but allow plain objects)
128 - if ( !elemData ) {
129 - return;
130 - }
131 -
132 - // Caller can pass in an object of custom data in lieu of the handler
133 - if ( handler.handler ) {
134 - handleObjIn = handler;
135 - handler = handleObjIn.handler;
136 - selector = handleObjIn.selector;
137 - }
138 -
139 - // Ensure that invalid selectors throw exceptions at attach time
140 - // Evaluate against documentElement in case elem is a non-element node (e.g., document)
141 - if ( selector ) {
142 - jQuery.find.matchesSelector( documentElement, selector );
143 - }
144 -
145 - // Make sure that the handler has a unique ID, used to find/remove it later
146 - if ( !handler.guid ) {
147 - handler.guid = jQuery.guid++;
148 - }
149 -
150 - // Init the element's event structure and main handler, if this is the first
151 - if ( !( events = elemData.events ) ) {
152 - events = elemData.events = {};
153 - }
154 - if ( !( eventHandle = elemData.handle ) ) {
155 - eventHandle = elemData.handle = function( e ) {
156 -
157 - // Discard the second event of a jQuery.event.trigger() and
158 - // when an event is called after a page has unloaded
159 - return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ?
160 - jQuery.event.dispatch.apply( elem, arguments ) : undefined;
161 - };
162 - }
163 -
164 - // Handle multiple events separated by a space
165 - types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
166 - t = types.length;
167 - while ( t-- ) {
168 - tmp = rtypenamespace.exec( types[ t ] ) || [];
169 - type = origType = tmp[ 1 ];
170 - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
171 -
172 - // There *must* be a type, no attaching namespace-only handlers
173 - if ( !type ) {
174 - continue;
175 - }
176 -
177 - // If event changes its type, use the special event handlers for the changed type
178 - special = jQuery.event.special[ type ] || {};
179 -
180 - // If selector defined, determine special event api type, otherwise given type
181 - type = ( selector ? special.delegateType : special.bindType ) || type;
182 -
183 - // Update special based on newly reset type
184 - special = jQuery.event.special[ type ] || {};
185 -
186 - // handleObj is passed to all event handlers
187 - handleObj = jQuery.extend( {
188 - type: type,
189 - origType: origType,
190 - data: data,
191 - handler: handler,
192 - guid: handler.guid,
193 - selector: selector,
194 - needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
195 - namespace: namespaces.join( "." )
196 - }, handleObjIn );
197 -
198 - // Init the event handler queue if we're the first
199 - if ( !( handlers = events[ type ] ) ) {
200 - handlers = events[ type ] = [];
201 - handlers.delegateCount = 0;
202 -
203 - // Only use addEventListener if the special events handler returns false
204 - if ( !special.setup ||
205 - special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
206 -
207 - if ( elem.addEventListener ) {
208 - elem.addEventListener( type, eventHandle );
209 - }
210 - }
211 - }
212 -
213 - if ( special.add ) {
214 - special.add.call( elem, handleObj );
215 -
216 - if ( !handleObj.handler.guid ) {
217 - handleObj.handler.guid = handler.guid;
218 - }
219 - }
220 -
221 - // Add to the element's handler list, delegates in front
222 - if ( selector ) {
223 - handlers.splice( handlers.delegateCount++, 0, handleObj );
224 - } else {
225 - handlers.push( handleObj );
226 - }
227 -
228 - // Keep track of which events have ever been used, for event optimization
229 - jQuery.event.global[ type ] = true;
230 - }
231 -
232 - },
233 -
234 - // Detach an event or set of events from an element
235 - remove: function( elem, types, handler, selector, mappedTypes ) {
236 -
237 - var j, origCount, tmp,
238 - events, t, handleObj,
239 - special, handlers, type, namespaces, origType,
240 - elemData = dataPriv.hasData( elem ) && dataPriv.get( elem );
241 -
242 - if ( !elemData || !( events = elemData.events ) ) {
243 - return;
244 - }
245 -
246 - // Once for each type.namespace in types; type may be omitted
247 - types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
248 - t = types.length;
249 - while ( t-- ) {
250 - tmp = rtypenamespace.exec( types[ t ] ) || [];
251 - type = origType = tmp[ 1 ];
252 - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
253 -
254 - // Unbind all events (on this namespace, if provided) for the element
255 - if ( !type ) {
256 - for ( type in events ) {
257 - jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
258 - }
259 - continue;
260 - }
261 -
262 - special = jQuery.event.special[ type ] || {};
263 - type = ( selector ? special.delegateType : special.bindType ) || type;
264 - handlers = events[ type ] || [];
265 - tmp = tmp[ 2 ] &&
266 - new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" );
267 -
268 - // Remove matching events
269 - origCount = j = handlers.length;
270 - while ( j-- ) {
271 - handleObj = handlers[ j ];
272 -
273 - if ( ( mappedTypes || origType === handleObj.origType ) &&
274 - ( !handler || handler.guid === handleObj.guid ) &&
275 - ( !tmp || tmp.test( handleObj.namespace ) ) &&
276 - ( !selector || selector === handleObj.selector ||
277 - selector === "**" && handleObj.selector ) ) {
278 - handlers.splice( j, 1 );
279 -
280 - if ( handleObj.selector ) {
281 - handlers.delegateCount--;
282 - }
283 - if ( special.remove ) {
284 - special.remove.call( elem, handleObj );
285 - }
286 - }
287 - }
288 -
289 - // Remove generic event handler if we removed something and no more handlers exist
290 - // (avoids potential for endless recursion during removal of special event handlers)
291 - if ( origCount && !handlers.length ) {
292 - if ( !special.teardown ||
293 - special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
294 -
295 - jQuery.removeEvent( elem, type, elemData.handle );
296 - }
297 -
298 - delete events[ type ];
299 - }
300 - }
301 -
302 - // Remove data and the expando if it's no longer used
303 - if ( jQuery.isEmptyObject( events ) ) {
304 - dataPriv.remove( elem, "handle events" );
305 - }
306 - },
307 -
308 - dispatch: function( nativeEvent ) {
309 -
310 - // Make a writable jQuery.Event from the native event object
311 - var event = jQuery.event.fix( nativeEvent );
312 -
313 - var i, j, ret, matched, handleObj, handlerQueue,
314 - args = new Array( arguments.length ),
315 - handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [],
316 - special = jQuery.event.special[ event.type ] || {};
317 -
318 - // Use the fix-ed jQuery.Event rather than the (read-only) native event
319 - args[ 0 ] = event;
320 -
321 - for ( i = 1; i < arguments.length; i++ ) {
322 - args[ i ] = arguments[ i ];
323 - }
324 -
325 - event.delegateTarget = this;
326 -
327 - // Call the preDispatch hook for the mapped type, and let it bail if desired
328 - if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
329 - return;
330 - }
331 -
332 - // Determine handlers
333 - handlerQueue = jQuery.event.handlers.call( this, event, handlers );
334 -
335 - // Run delegates first; they may want to stop propagation beneath us
336 - i = 0;
337 - while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {
338 - event.currentTarget = matched.elem;
339 -
340 - j = 0;
341 - while ( ( handleObj = matched.handlers[ j++ ] ) &&
342 - !event.isImmediatePropagationStopped() ) {
343 -
344 - // If the event is namespaced, then each handler is only invoked if it is
345 - // specially universal or its namespaces are a superset of the event's.
346 - if ( !event.rnamespace || handleObj.namespace === false ||
347 - event.rnamespace.test( handleObj.namespace ) ) {
348 -
349 - event.handleObj = handleObj;
350 - event.data = handleObj.data;
351 -
352 - ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||
353 - handleObj.handler ).apply( matched.elem, args );
354 -
355 - if ( ret !== undefined ) {
356 - if ( ( event.result = ret ) === false ) {
357 - event.preventDefault();
358 - event.stopPropagation();
359 - }
360 - }
361 - }
362 - }
363 - }
364 -
365 - // Call the postDispatch hook for the mapped type
366 - if ( special.postDispatch ) {
367 - special.postDispatch.call( this, event );
368 - }
369 -
370 - return event.result;
371 - },
372 -
373 - handlers: function( event, handlers ) {
374 - var i, handleObj, sel, matchedHandlers, matchedSelectors,
375 - handlerQueue = [],
376 - delegateCount = handlers.delegateCount,
377 - cur = event.target;
378 -
379 - // Find delegate handlers
380 - if ( delegateCount &&
381 -
382 - // Support: IE <=9
383 - // Black-hole SVG <use> instance trees (trac-13180)
384 - cur.nodeType &&
385 -
386 - // Support: Firefox <=42
387 - // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)
388 - // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click
389 - // Support: IE 11 only
390 - // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343)
391 - !( event.type === "click" && event.button >= 1 ) ) {
392 -
393 - for ( ; cur !== this; cur = cur.parentNode || this ) {
394 -
395 - // Don't check non-elements (#13208)
396 - // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
397 - if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) {
398 - matchedHandlers = [];
399 - matchedSelectors = {};
400 - for ( i = 0; i < delegateCount; i++ ) {
401 - handleObj = handlers[ i ];
402 -
403 - // Don't conflict with Object.prototype properties (#13203)
404 - sel = handleObj.selector + " ";
405 -
406 - if ( matchedSelectors[ sel ] === undefined ) {
407 - matchedSelectors[ sel ] = handleObj.needsContext ?
408 - jQuery( sel, this ).index( cur ) > -1 :
409 - jQuery.find( sel, this, null, [ cur ] ).length;
410 - }
411 - if ( matchedSelectors[ sel ] ) {
412 - matchedHandlers.push( handleObj );
413 - }
414 - }
415 - if ( matchedHandlers.length ) {
416 - handlerQueue.push( { elem: cur, handlers: matchedHandlers } );
417 - }
418 - }
419 - }
420 - }
421 -
422 - // Add the remaining (directly-bound) handlers
423 - cur = this;
424 - if ( delegateCount < handlers.length ) {
425 - handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );
426 - }
427 -
428 - return handlerQueue;
429 - },
430 -
431 - addProp: function( name, hook ) {
432 - Object.defineProperty( jQuery.Event.prototype, name, {
433 - enumerable: true,
434 - configurable: true,
435 -
436 - get: isFunction( hook ) ?
437 - function() {
438 - if ( this.originalEvent ) {
439 - return hook( this.originalEvent );
440 - }
441 - } :
442 - function() {
443 - if ( this.originalEvent ) {
444 - return this.originalEvent[ name ];
445 - }
446 - },
447 -
448 - set: function( value ) {
449 - Object.defineProperty( this, name, {
450 - enumerable: true,
451 - configurable: true,
452 - writable: true,
453 - value: value
454 - } );
455 - }
456 - } );
457 - },
458 -
459 - fix: function( originalEvent ) {
460 - return originalEvent[ jQuery.expando ] ?
461 - originalEvent :
462 - new jQuery.Event( originalEvent );
463 - },
464 -
465 - special: {
466 - load: {
467 -
468 - // Prevent triggered image.load events from bubbling to window.load
469 - noBubble: true
470 - },
471 - click: {
472 -
473 - // Utilize native event to ensure correct state for checkable inputs
474 - setup: function( data ) {
475 -
476 - // For mutual compressibility with _default, replace `this` access with a local var.
477 - // `|| data` is dead code meant only to preserve the variable through minification.
478 - var el = this || data;
479 -
480 - // Claim the first handler
481 - if ( rcheckableType.test( el.type ) &&
482 - el.click && nodeName( el, "input" ) ) {
483 -
484 - // dataPriv.set( el, "click", ... )
485 - leverageNative( el, "click", returnTrue );
486 - }
487 -
488 - // Return false to allow normal processing in the caller
489 - return false;
490 - },
491 - trigger: function( data ) {
492 -
493 - // For mutual compressibility with _default, replace `this` access with a local var.
494 - // `|| data` is dead code meant only to preserve the variable through minification.
495 - var el = this || data;
496 -
497 - // Force setup before triggering a click
498 - if ( rcheckableType.test( el.type ) &&
499 - el.click && nodeName( el, "input" ) ) {
500 -
501 - leverageNative( el, "click" );
502 - }
503 -
504 - // Return non-false to allow normal event-path propagation
505 - return true;
506 - },
507 -
508 - // For cross-browser consistency, suppress native .click() on links
509 - // Also prevent it if we're currently inside a leveraged native-event stack
510 - _default: function( event ) {
511 - var target = event.target;
512 - return rcheckableType.test( target.type ) &&
513 - target.click && nodeName( target, "input" ) &&
514 - dataPriv.get( target, "click" ) ||
515 - nodeName( target, "a" );
516 - }
517 - },
518 -
519 - beforeunload: {
520 - postDispatch: function( event ) {
521 -
522 - // Support: Firefox 20+
523 - // Firefox doesn't alert if the returnValue field is not set.
524 - if ( event.result !== undefined && event.originalEvent ) {
525 - event.originalEvent.returnValue = event.result;
526 - }
527 - }
528 - }
529 - }
530 - };
531 -
532 - // Ensure the presence of an event listener that handles manually-triggered
533 - // synthetic events by interrupting progress until reinvoked in response to
534 - // *native* events that it fires directly, ensuring that state changes have
535 - // already occurred before other listeners are invoked.
536 - function leverageNative( el, type, expectSync ) {
537 -
538 - // Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add
539 - if ( !expectSync ) {
540 - if ( dataPriv.get( el, type ) === undefined ) {
541 - jQuery.event.add( el, type, returnTrue );
542 - }
543 - return;
544 - }
545 -
546 - // Register the controller as a special universal handler for all event namespaces
547 - dataPriv.set( el, type, false );
548 - jQuery.event.add( el, type, {
549 - namespace: false,
550 - handler: function( event ) {
551 - var notAsync, result,
552 - saved = dataPriv.get( this, type );
553 -
554 - if ( ( event.isTrigger & 1 ) && this[ type ] ) {
555 -
556 - // Interrupt processing of the outer synthetic .trigger()ed event
557 - // Saved data should be false in such cases, but might be a leftover capture object
558 - // from an async native handler (gh-4350)
559 - if ( !saved.length ) {
560 -
561 - // Store arguments for use when handling the inner native event
562 - // There will always be at least one argument (an event object), so this array
563 - // will not be confused with a leftover capture object.
564 - saved = slice.call( arguments );
565 - dataPriv.set( this, type, saved );
566 -
567 - // Trigger the native event and capture its result
568 - // Support: IE <=9 - 11+
569 - // focus() and blur() are asynchronous
570 - notAsync = expectSync( this, type );
571 - this[ type ]();
572 - result = dataPriv.get( this, type );
573 - if ( saved !== result || notAsync ) {
574 - dataPriv.set( this, type, false );
575 - } else {
576 - result = {};
577 - }
578 - if ( saved !== result ) {
579 -
580 - // Cancel the outer synthetic event
581 - event.stopImmediatePropagation();
582 - event.preventDefault();
583 - return result.value;
584 - }
585 -
586 - // If this is an inner synthetic event for an event with a bubbling surrogate
587 - // (focus or blur), assume that the surrogate already propagated from triggering the
588 - // native event and prevent that from happening again here.
589 - // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the
590 - // bubbling surrogate propagates *after* the non-bubbling base), but that seems
591 - // less bad than duplication.
592 - } else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {
593 - event.stopPropagation();
594 - }
595 -
596 - // If this is a native event triggered above, everything is now in order
597 - // Fire an inner synthetic event with the original arguments
598 - } else if ( saved.length ) {
599 -
600 - // ...and capture the result
601 - dataPriv.set( this, type, {
602 - value: jQuery.event.trigger(
603 -
604 - // Support: IE <=9 - 11+
605 - // Extend with the prototype to reset the above stopImmediatePropagation()
606 - jQuery.extend( saved[ 0 ], jQuery.Event.prototype ),
607 - saved.slice( 1 ),
608 - this
609 - )
610 - } );
611 -
612 - // Abort handling of the native event
613 - event.stopImmediatePropagation();
614 - }
615 - }
616 - } );
617 - }
618 -
619 - jQuery.removeEvent = function( elem, type, handle ) {
620 -
621 - // This "if" is needed for plain objects
622 - if ( elem.removeEventListener ) {
623 - elem.removeEventListener( type, handle );
624 - }
625 - };
626 -
627 - jQuery.Event = function( src, props ) {
628 -
629 - // Allow instantiation without the 'new' keyword
630 - if ( !( this instanceof jQuery.Event ) ) {
631 - return new jQuery.Event( src, props );
632 - }
633 -
634 - // Event object
635 - if ( src && src.type ) {
636 - this.originalEvent = src;
637 - this.type = src.type;
638 -
639 - // Events bubbling up the document may have been marked as prevented
640 - // by a handler lower down the tree; reflect the correct value.
641 - this.isDefaultPrevented = src.defaultPrevented ||
642 - src.defaultPrevented === undefined &&
643 -
644 - // Support: Android <=2.3 only
645 - src.returnValue === false ?
646 - returnTrue :
647 - returnFalse;
648 -
649 - // Create target properties
650 - // Support: Safari <=6 - 7 only
651 - // Target should not be a text node (#504, #13143)
652 - this.target = ( src.target && src.target.nodeType === 3 ) ?
653 - src.target.parentNode :
654 - src.target;
655 -
656 - this.currentTarget = src.currentTarget;
657 - this.relatedTarget = src.relatedTarget;
658 -
659 - // Event type
660 - } else {
661 - this.type = src;
662 - }
663 -
664 - // Put explicitly provided properties onto the event object
665 - if ( props ) {
666 - jQuery.extend( this, props );
667 - }
668 -
669 - // Create a timestamp if incoming event doesn't have one
670 - this.timeStamp = src && src.timeStamp || Date.now();
671 -
672 - // Mark it as fixed
673 - this[ jQuery.expando ] = true;
674 - };
675 -
676 - // jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
677 - // https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
678 - jQuery.Event.prototype = {
679 - constructor: jQuery.Event,
680 - isDefaultPrevented: returnFalse,
681 - isPropagationStopped: returnFalse,
682 - isImmediatePropagationStopped: returnFalse,
683 - isSimulated: false,
684 -
685 - preventDefault: function() {
686 - var e = this.originalEvent;
687 -
688 - this.isDefaultPrevented = returnTrue;
689 -
690 - if ( e && !this.isSimulated ) {
691 - e.preventDefault();
692 - }
693 - },
694 - stopPropagation: function() {
695 - var e = this.originalEvent;
696 -
697 - this.isPropagationStopped = returnTrue;
698 -
699 - if ( e && !this.isSimulated ) {
700 - e.stopPropagation();
701 - }
702 - },
703 - stopImmediatePropagation: function() {
704 - var e = this.originalEvent;
705 -
706 - this.isImmediatePropagationStopped = returnTrue;
707 -
708 - if ( e && !this.isSimulated ) {
709 - e.stopImmediatePropagation();
710 - }
711 -
712 - this.stopPropagation();
713 - }
714 - };
715 -
716 - // Includes all common event props including KeyEvent and MouseEvent specific props
717 - jQuery.each( {
718 - altKey: true,
719 - bubbles: true,
720 - cancelable: true,
721 - changedTouches: true,
722 - ctrlKey: true,
723 - detail: true,
724 - eventPhase: true,
725 - metaKey: true,
726 - pageX: true,
727 - pageY: true,
728 - shiftKey: true,
729 - view: true,
730 - "char": true,
731 - code: true,
732 - charCode: true,
733 - key: true,
734 - keyCode: true,
735 - button: true,
736 - buttons: true,
737 - clientX: true,
738 - clientY: true,
739 - offsetX: true,
740 - offsetY: true,
741 - pointerId: true,
742 - pointerType: true,
743 - screenX: true,
744 - screenY: true,
745 - targetTouches: true,
746 - toElement: true,
747 - touches: true,
748 -
749 - which: function( event ) {
750 - var button = event.button;
751 -
752 - // Add which for key events
753 - if ( event.which == null && rkeyEvent.test( event.type ) ) {
754 - return event.charCode != null ? event.charCode : event.keyCode;
755 - }
756 -
757 - // Add which for click: 1 === left; 2 === middle; 3 === right
758 - if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {
759 - if ( button & 1 ) {
760 - return 1;
761 - }
762 -
763 - if ( button & 2 ) {
764 - return 3;
765 - }
766 -
767 - if ( button & 4 ) {
768 - return 2;
769 - }
770 -
771 - return 0;
772 - }
773 -
774 - return event.which;
775 - }
776 - }, jQuery.event.addProp );
777 -
778 - jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) {
779 - jQuery.event.special[ type ] = {
780 -
781 - // Utilize native event if possible so blur/focus sequence is correct
782 - setup: function() {
783 -
784 - // Claim the first handler
785 - // dataPriv.set( this, "focus", ... )
786 - // dataPriv.set( this, "blur", ... )
787 - leverageNative( this, type, expectSync );
788 -
789 - // Return false to allow normal processing in the caller
790 - return false;
791 - },
792 - trigger: function() {
793 -
794 - // Force setup before trigger
795 - leverageNative( this, type );
796 -
797 - // Return non-false to allow normal event-path propagation
798 - return true;
799 - },
800 -
801 - delegateType: delegateType
802 - };
803 - } );
804 -
805 - // Create mouseenter/leave events using mouseover/out and event-time checks
806 - // so that event delegation works in jQuery.
807 - // Do the same for pointerenter/pointerleave and pointerover/pointerout
808 - //
809 - // Support: Safari 7 only
810 - // Safari sends mouseenter too often; see:
811 - // https://bugs.chromium.org/p/chromium/issues/detail?id=470258
812 - // for the description of the bug (it existed in older Chrome versions as well).
813 - jQuery.each( {
814 - mouseenter: "mouseover",
815 - mouseleave: "mouseout",
816 - pointerenter: "pointerover",
817 - pointerleave: "pointerout"
818 - }, function( orig, fix ) {
819 - jQuery.event.special[ orig ] = {
820 - delegateType: fix,
821 - bindType: fix,
822 -
823 - handle: function( event ) {
824 - var ret,
825 - target = this,
826 - related = event.relatedTarget,
827 - handleObj = event.handleObj;
828 -
829 - // For mouseenter/leave call the handler if related is outside the target.
830 - // NB: No relatedTarget if the mouse left/entered the browser window
831 - if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {
832 - event.type = handleObj.origType;
833 - ret = handleObj.handler.apply( this, arguments );
834 - event.type = fix;
835 - }
836 - return ret;
837 - }
838 - };
839 - } );
840 -
841 - jQuery.fn.extend( {
842 -
843 - on: function( types, selector, data, fn ) {
844 - return on( this, types, selector, data, fn );
845 - },
846 - one: function( types, selector, data, fn ) {
847 - return on( this, types, selector, data, fn, 1 );
848 - },
849 - off: function( types, selector, fn ) {
850 - var handleObj, type;
851 - if ( types && types.preventDefault && types.handleObj ) {
852 -
853 - // ( event ) dispatched jQuery.Event
854 - handleObj = types.handleObj;
855 - jQuery( types.delegateTarget ).off(
856 - handleObj.namespace ?
857 - handleObj.origType + "." + handleObj.namespace :
858 - handleObj.origType,
859 - handleObj.selector,
860 - handleObj.handler
861 - );
862 - return this;
863 - }
864 - if ( typeof types === "object" ) {
865 -
866 - // ( types-object [, selector] )
867 - for ( type in types ) {
868 - this.off( type, selector, types[ type ] );
869 - }
870 - return this;
871 - }
872 - if ( selector === false || typeof selector === "function" ) {
873 -
874 - // ( types [, fn] )
875 - fn = selector;
876 - selector = undefined;
877 - }
878 - if ( fn === false ) {
879 - fn = returnFalse;
880 - }
881 - return this.each( function() {
882 - jQuery.event.remove( this, types, fn, selector );
883 - } );
884 - }
885 - } );
886 -
887 - return jQuery;
888 - } );
@@ -1,22 +0,0
1 - define( [
2 - "../core",
3 - "../event"
4 - ], function( jQuery ) {
5 -
6 - "use strict";
7 -
8 - // Attach a bunch of functions for handling common AJAX events
9 - jQuery.each( [
10 - "ajaxStart",
11 - "ajaxStop",
12 - "ajaxComplete",
13 - "ajaxError",
14 - "ajaxSuccess",
15 - "ajaxSend"
16 - ], function( i, type ) {
17 - jQuery.fn[ type ] = function( fn ) {
18 - return this.on( type, fn );
19 - };
20 - } );
21 -
22 - } );
@@ -1,29 +0,0
1 - define( [
2 - "../core",
3 -
4 - "../event",
5 - "./trigger"
6 - ], function( jQuery ) {
7 -
8 - "use strict";
9 -
10 - jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " +
11 - "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
12 - "change select submit keydown keypress keyup contextmenu" ).split( " " ),
13 - function( i, name ) {
14 -
15 - // Handle event binding
16 - jQuery.fn[ name ] = function( data, fn ) {
17 - return arguments.length > 0 ?
18 - this.on( name, null, data, fn ) :
19 - this.trigger( name );
20 - };
21 - } );
22 -
23 - jQuery.fn.extend( {
24 - hover: function( fnOver, fnOut ) {
25 - return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
26 - }
27 - } );
28 -
29 - } );
@@ -1,55 +0,0
1 - define( [
2 - "../core",
3 - "../data/var/dataPriv",
4 - "./support",
5 -
6 - "../event",
7 - "./trigger"
8 - ], function( jQuery, dataPriv, support ) {
9 -
10 - "use strict";
11 -
12 - // Support: Firefox <=44
13 - // Firefox doesn't have focus(in | out) events
14 - // Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787
15 - //
16 - // Support: Chrome <=48 - 49, Safari <=9.0 - 9.1
17 - // focus(in | out) events fire after focus & blur events,
18 - // which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order
19 - // Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857
20 - if ( !support.focusin ) {
21 - jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) {
22 -
23 - // Attach a single capturing handler on the document while someone wants focusin/focusout
24 - var handler = function( event ) {
25 - jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );
26 - };
27 -
28 - jQuery.event.special[ fix ] = {
29 - setup: function() {
30 - var doc = this.ownerDocument || this,
31 - attaches = dataPriv.access( doc, fix );
32 -
33 - if ( !attaches ) {
34 - doc.addEventListener( orig, handler, true );
35 - }
36 - dataPriv.access( doc, fix, ( attaches || 0 ) + 1 );
37 - },
38 - teardown: function() {
39 - var doc = this.ownerDocument || this,
40 - attaches = dataPriv.access( doc, fix ) - 1;
41 -
42 - if ( !attaches ) {
43 - doc.removeEventListener( orig, handler, true );
44 - dataPriv.remove( doc, fix );
45 -
46 - } else {
47 - dataPriv.access( doc, fix, attaches );
48 - }
49 - }
50 - };
51 - } );
52 - }
53 -
54 - return jQuery;
55 - } );
@@ -1,11 +0,0
1 - define( [
2 - "../var/support"
3 - ], function( support ) {
4 -
5 - "use strict";
6 -
7 - support.focusin = "onfocusin" in window;
8 -
9 - return support;
10 -
11 - } );
@@ -1,199 +0,0
1 - define( [
2 - "../core",
3 - "../var/document",
4 - "../data/var/dataPriv",
5 - "../data/var/acceptData",
6 - "../var/hasOwn",
7 - "../var/isFunction",
8 - "../var/isWindow",
9 - "../event"
10 - ], function( jQuery, document, dataPriv, acceptData, hasOwn, isFunction, isWindow ) {
11 -
12 - "use strict";
13 -
14 - var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
15 - stopPropagationCallback = function( e ) {
16 - e.stopPropagation();
17 - };
18 -
19 - jQuery.extend( jQuery.event, {
20 -
21 - trigger: function( event, data, elem, onlyHandlers ) {
22 -
23 - var i, cur, tmp, bubbleType, ontype, handle, special, lastElement,
24 - eventPath = [ elem || document ],
25 - type = hasOwn.call( event, "type" ) ? event.type : event,
26 - namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : [];
27 -
28 - cur = lastElement = tmp = elem = elem || document;
29 -
30 - // Don't do events on text and comment nodes
31 - if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
32 - return;
33 - }
34 -
35 - // focus/blur morphs to focusin/out; ensure we're not firing them right now
36 - if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
37 - return;
38 - }
39 -
40 - if ( type.indexOf( "." ) > -1 ) {
41 -
42 - // Namespaced trigger; create a regexp to match event type in handle()
43 - namespaces = type.split( "." );
44 - type = namespaces.shift();
45 - namespaces.sort();
46 - }
47 - ontype = type.indexOf( ":" ) < 0 && "on" + type;
48 -
49 - // Caller can pass in a jQuery.Event object, Object, or just an event type string
50 - event = event[ jQuery.expando ] ?
51 - event :
52 - new jQuery.Event( type, typeof event === "object" && event );
53 -
54 - // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
55 - event.isTrigger = onlyHandlers ? 2 : 3;
56 - event.namespace = namespaces.join( "." );
57 - event.rnamespace = event.namespace ?
58 - new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) :
59 - null;
60 -
61 - // Clean up the event in case it is being reused
62 - event.result = undefined;
63 - if ( !event.target ) {
64 - event.target = elem;
65 - }
66 -
67 - // Clone any incoming data and prepend the event, creating the handler arg list
68 - data = data == null ?
69 - [ event ] :
70 - jQuery.makeArray( data, [ event ] );
71 -
72 - // Allow special events to draw outside the lines
73 - special = jQuery.event.special[ type ] || {};
74 - if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
75 - return;
76 - }
77 -
78 - // Determine event propagation path in advance, per W3C events spec (#9951)
79 - // Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
80 - if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {
81 -
82 - bubbleType = special.delegateType || type;
83 - if ( !rfocusMorph.test( bubbleType + type ) ) {
84 - cur = cur.parentNode;
85 - }
86 - for ( ; cur; cur = cur.parentNode ) {
87 - eventPath.push( cur );
88 - tmp = cur;
89 - }
90 -
91 - // Only add window if we got to document (e.g., not plain obj or detached DOM)
92 - if ( tmp === ( elem.ownerDocument || document ) ) {
93 - eventPath.push( tmp.defaultView || tmp.parentWindow || window );
94 - }
95 - }
96 -
97 - // Fire handlers on the event path
98 - i = 0;
99 - while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {
100 - lastElement = cur;
101 - event.type = i > 1 ?
102 - bubbleType :
103 - special.bindType || type;
104 -
105 - // jQuery handler
106 - handle = ( dataPriv.get( cur, "events" ) || {} )[ event.type ] &&
107 - dataPriv.get( cur, "handle" );
108 - if ( handle ) {
109 - handle.apply( cur, data );
110 - }
111 -
112 - // Native handler
113 - handle = ontype && cur[ ontype ];
114 - if ( handle && handle.apply && acceptData( cur ) ) {
115 - event.result = handle.apply( cur, data );
116 - if ( event.result === false ) {
117 - event.preventDefault();
118 - }
119 - }
120 - }
121 - event.type = type;
122 -
123 - // If nobody prevented the default action, do it now
124 - if ( !onlyHandlers && !event.isDefaultPrevented() ) {
125 -
126 - if ( ( !special._default ||
127 - special._default.apply( eventPath.pop(), data ) === false ) &&
128 - acceptData( elem ) ) {
129 -
130 - // Call a native DOM method on the target with the same name as the event.
131 - // Don't do default actions on window, that's where global variables be (#6170)
132 - if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {
133 -
134 - // Don't re-trigger an onFOO event when we call its FOO() method
135 - tmp = elem[ ontype ];
136 -
137 - if ( tmp ) {
138 - elem[ ontype ] = null;
139 - }
140 -
141 - // Prevent re-triggering of the same event, since we already bubbled it above
142 - jQuery.event.triggered = type;
143 -
144 - if ( event.isPropagationStopped() ) {
145 - lastElement.addEventListener( type, stopPropagationCallback );
146 - }
147 -
148 - elem[ type ]();
149 -
150 - if ( event.isPropagationStopped() ) {
151 - lastElement.removeEventListener( type, stopPropagationCallback );
152 - }
153 -
154 - jQuery.event.triggered = undefined;
155 -
156 - if ( tmp ) {
157 - elem[ ontype ] = tmp;
158 - }
159 - }
160 - }
161 - }
162 -
163 - return event.result;
164 - },
165 -
166 - // Piggyback on a donor event to simulate a different one
167 - // Used only for `focus(in | out)` events
168 - simulate: function( type, elem, event ) {
169 - var e = jQuery.extend(
170 - new jQuery.Event(),
171 - event,
172 - {
173 - type: type,
174 - isSimulated: true
175 - }
176 - );
177 -
178 - jQuery.event.trigger( e, null, elem );
179 - }
180 -
181 - } );
182 -
183 - jQuery.fn.extend( {
184 -
185 - trigger: function( type, data ) {
186 - return this.each( function() {
187 - jQuery.event.trigger( type, data, this );
188 - } );
189 - },
190 - triggerHandler: function( type, data ) {
191 - var elem = this[ 0 ];
192 - if ( elem ) {
193 - return jQuery.event.trigger( type, data, elem, true );
194 - }
195 - }
196 - } );
197 -
198 - return jQuery;
199 - } );
@@ -1,26 +0,0
1 - define( [
2 - "../core"
3 - ], function( jQuery ) {
4 -
5 - "use strict";
6 -
7 - // Register as a named AMD module, since jQuery can be concatenated with other
8 - // files that may use define, but not via a proper concatenation script that
9 - // understands anonymous AMD modules. A named AMD is safest and most robust
10 - // way to register. Lowercase jquery is used because AMD module names are
11 - // derived from file names, and jQuery is normally delivered in a lowercase
12 - // file name. Do this after creating the global so that if an AMD module wants
13 - // to call noConflict to hide this version of jQuery, it will work.
14 -
15 - // Note that for maximum portability, libraries that are not jQuery should
16 - // declare themselves as anonymous modules, and avoid setting a global if an
17 - // AMD loader is present. jQuery is a special case. For more information, see
18 - // https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon
19 -
20 - if ( typeof define === "function" && define.amd ) {
21 - define( "jquery", [], function() {
22 - return jQuery;
23 - } );
24 - }
25 -
26 - } );
@@ -1,34 +0,0
1 - define( [
2 - "../core"
3 - ], function( jQuery, noGlobal ) {
4 -
5 - "use strict";
6 -
7 - var
8 -
9 - // Map over jQuery in case of overwrite
10 - _jQuery = window.jQuery,
11 -
12 - // Map over the $ in case of overwrite
13 - _$ = window.$;
14 -
15 - jQuery.noConflict = function( deep ) {
16 - if ( window.$ === jQuery ) {
17 - window.$ = _$;
18 - }
19 -
20 - if ( deep && window.jQuery === jQuery ) {
21 - window.jQuery = _jQuery;
22 - }
23 -
24 - return jQuery;
25 - };
26 -
27 - // Expose jQuery and $ identifiers, even in AMD
28 - // (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
29 - // and CommonJS for browser emulators (#13566)
30 - if ( !noGlobal ) {
31 - window.jQuery = window.$ = jQuery;
32 - }
33 -
34 - } );
@@ -1,40 +0,0
1 - define( [
2 - "./core",
3 - "./selector",
4 - "./traversing",
5 - "./callbacks",
6 - "./deferred",
7 - "./deferred/exceptionHook",
8 - "./core/ready",
9 - "./data",
10 - "./queue",
11 - "./queue/delay",
12 - "./attributes",
13 - "./event",
14 - "./event/focusin",
15 - "./manipulation",
16 - "./manipulation/_evalUrl",
17 - "./wrap",
18 - "./css",
19 - "./css/hiddenVisibleSelectors",
20 - "./serialize",
21 - "./ajax",
22 - "./ajax/xhr",
23 - "./ajax/script",
24 - "./ajax/jsonp",
25 - "./ajax/load",
26 - "./event/ajax",
27 - "./effects",
28 - "./effects/animatedSelector",
29 - "./offset",
30 - "./dimensions",
31 - "./deprecated",
32 - "./exports/amd",
33 - "./exports/global"
34 - ], function( jQuery ) {
35 -
36 - "use strict";
37 -
38 - return jQuery;
39 -
40 - } );
@@ -1,489 +0,0
1 - define( [
2 - "./core",
3 - "./core/isAttached",
4 - "./var/concat",
5 - "./var/isFunction",
6 - "./var/push",
7 - "./var/rcheckableType",
8 - "./core/access",
9 - "./manipulation/var/rtagName",
10 - "./manipulation/var/rscriptType",
11 - "./manipulation/wrapMap",
12 - "./manipulation/getAll",
13 - "./manipulation/setGlobalEval",
14 - "./manipulation/buildFragment",
15 - "./manipulation/support",
16 -
17 - "./data/var/dataPriv",
18 - "./data/var/dataUser",
19 - "./data/var/acceptData",
20 - "./core/DOMEval",
21 - "./core/nodeName",
22 -
23 - "./core/init",
24 - "./traversing",
25 - "./selector",
26 - "./event"
27 - ], function( jQuery, isAttached, concat, isFunction, push, rcheckableType,
28 - access, rtagName, rscriptType,
29 - wrapMap, getAll, setGlobalEval, buildFragment, support,
30 - dataPriv, dataUser, acceptData, DOMEval, nodeName ) {
31 -
32 - "use strict";
33 -
34 - var
35 -
36 - /* eslint-disable max-len */
37 -
38 - // See https://github.com/eslint/eslint/issues/3229
39 - rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,
40 -
41 - /* eslint-enable */
42 -
43 - // Support: IE <=10 - 11, Edge 12 - 13 only
44 - // In IE/Edge using regex groups here causes severe slowdowns.
45 - // See https://connect.microsoft.com/IE/feedback/details/1736512/
46 - rnoInnerhtml = /<script|<style|<link/i,
47 -
48 - // checked="checked" or checked
49 - rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
50 - rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;
51 -
52 - // Prefer a tbody over its parent table for containing new rows
53 - function manipulationTarget( elem, content ) {
54 - if ( nodeName( elem, "table" ) &&
55 - nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) {
56 -
57 - return jQuery( elem ).children( "tbody" )[ 0 ] || elem;
58 - }
59 -
60 - return elem;
61 - }
62 -
63 - // Replace/restore the type attribute of script elements for safe DOM manipulation
64 - function disableScript( elem ) {
65 - elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type;
66 - return elem;
67 - }
68 - function restoreScript( elem ) {
69 - if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) {
70 - elem.type = elem.type.slice( 5 );
71 - } else {
72 - elem.removeAttribute( "type" );
73 - }
74 -
75 - return elem;
76 - }
77 -
78 - function cloneCopyEvent( src, dest ) {
79 - var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;
80 -
81 - if ( dest.nodeType !== 1 ) {
82 - return;
83 - }
84 -
85 - // 1. Copy private data: events, handlers, etc.
86 - if ( dataPriv.hasData( src ) ) {
87 - pdataOld = dataPriv.access( src );
88 - pdataCur = dataPriv.set( dest, pdataOld );
89 - events = pdataOld.events;
90 -
91 - if ( events ) {
92 - delete pdataCur.handle;
93 - pdataCur.events = {};
94 -
95 - for ( type in events ) {
96 - for ( i = 0, l = events[ type ].length; i < l; i++ ) {
97 - jQuery.event.add( dest, type, events[ type ][ i ] );
98 - }
99 - }
100 - }
101 - }
102 -
103 - // 2. Copy user data
104 - if ( dataUser.hasData( src ) ) {
105 - udataOld = dataUser.access( src );
106 - udataCur = jQuery.extend( {}, udataOld );
107 -
108 - dataUser.set( dest, udataCur );
109 - }
110 - }
111 -
112 - // Fix IE bugs, see support tests
113 - function fixInput( src, dest ) {
114 - var nodeName = dest.nodeName.toLowerCase();
115 -
116 - // Fails to persist the checked state of a cloned checkbox or radio button.
117 - if ( nodeName === "input" && rcheckableType.test( src.type ) ) {
118 - dest.checked = src.checked;
119 -
120 - // Fails to return the selected option to the default selected state when cloning options
121 - } else if ( nodeName === "input" || nodeName === "textarea" ) {
122 - dest.defaultValue = src.defaultValue;
123 - }
124 - }
125 -
126 - function domManip( collection, args, callback, ignored ) {
127 -
128 - // Flatten any nested arrays
129 - args = concat.apply( [], args );
130 -
131 - var fragment, first, scripts, hasScripts, node, doc,
132 - i = 0,
133 - l = collection.length,
134 - iNoClone = l - 1,
135 - value = args[ 0 ],
136 - valueIsFunction = isFunction( value );
137 -
138 - // We can't cloneNode fragments that contain checked, in WebKit
139 - if ( valueIsFunction ||
140 - ( l > 1 && typeof value === "string" &&
141 - !support.checkClone && rchecked.test( value ) ) ) {
142 - return collection.each( function( index ) {
143 - var self = collection.eq( index );
144 - if ( valueIsFunction ) {
145 - args[ 0 ] = value.call( this, index, self.html() );
146 - }
147 - domManip( self, args, callback, ignored );
148 - } );
149 - }
150 -
151 - if ( l ) {
152 - fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );
153 - first = fragment.firstChild;
154 -
155 - if ( fragment.childNodes.length === 1 ) {
156 - fragment = first;
157 - }
158 -
159 - // Require either new content or an interest in ignored elements to invoke the callback
160 - if ( first || ignored ) {
161 - scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
162 - hasScripts = scripts.length;
163 -
164 - // Use the original fragment for the last item
165 - // instead of the first because it can end up
166 - // being emptied incorrectly in certain situations (#8070).
167 - for ( ; i < l; i++ ) {
168 - node = fragment;
169 -
170 - if ( i !== iNoClone ) {
171 - node = jQuery.clone( node, true, true );
172 -
173 - // Keep references to cloned scripts for later restoration
174 - if ( hasScripts ) {
175 -
176 - // Support: Android <=4.0 only, PhantomJS 1 only
177 - // push.apply(_, arraylike) throws on ancient WebKit
178 - jQuery.merge( scripts, getAll( node, "script" ) );
179 - }
180 - }
181 -
182 - callback.call( collection[ i ], node, i );
183 - }
184 -
185 - if ( hasScripts ) {
186 - doc = scripts[ scripts.length - 1 ].ownerDocument;
187 -
188 - // Reenable scripts
189 - jQuery.map( scripts, restoreScript );
190 -
191 - // Evaluate executable scripts on first document insertion
192 - for ( i = 0; i < hasScripts; i++ ) {
193 - node = scripts[ i ];
194 - if ( rscriptType.test( node.type || "" ) &&
195 - !dataPriv.access( node, "globalEval" ) &&
196 - jQuery.contains( doc, node ) ) {
197 -
198 - if ( node.src && ( node.type || "" ).toLowerCase() !== "module" ) {
199 -
200 - // Optional AJAX dependency, but won't run scripts if not present
201 - if ( jQuery._evalUrl && !node.noModule ) {
202 - jQuery._evalUrl( node.src, {
203 - nonce: node.nonce || node.getAttribute( "nonce" )
204 - } );
205 - }
206 - } else {
207 - DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc );
208 - }
209 - }
210 - }
211 - }
212 - }
213 - }
214 -
215 - return collection;
216 - }
217 -
218 - function remove( elem, selector, keepData ) {
219 - var node,
220 - nodes = selector ? jQuery.filter( selector, elem ) : elem,
221 - i = 0;
222 -
223 - for ( ; ( node = nodes[ i ] ) != null; i++ ) {
224 - if ( !keepData && node.nodeType === 1 ) {
225 - jQuery.cleanData( getAll( node ) );
226 - }
227 -
228 - if ( node.parentNode ) {
229 - if ( keepData && isAttached( node ) ) {
230 - setGlobalEval( getAll( node, "script" ) );
231 - }
232 - node.parentNode.removeChild( node );
233 - }
234 - }
235 -
236 - return elem;
237 - }
238 -
239 - jQuery.extend( {
240 - htmlPrefilter: function( html ) {
241 - return html.replace( rxhtmlTag, "<$1></$2>" );
242 - },
243 -
244 - clone: function( elem, dataAndEvents, deepDataAndEvents ) {
245 - var i, l, srcElements, destElements,
246 - clone = elem.cloneNode( true ),
247 - inPage = isAttached( elem );
248 -
249 - // Fix IE cloning issues
250 - if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&
251 - !jQuery.isXMLDoc( elem ) ) {
252 -
253 - // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2
254 - destElements = getAll( clone );
255 - srcElements = getAll( elem );
256 -
257 - for ( i = 0, l = srcElements.length; i < l; i++ ) {
258 - fixInput( srcElements[ i ], destElements[ i ] );
259 - }
260 - }
261 -
262 - // Copy the events from the original to the clone
263 - if ( dataAndEvents ) {
264 - if ( deepDataAndEvents ) {
265 - srcElements = srcElements || getAll( elem );
266 - destElements = destElements || getAll( clone );
267 -
268 - for ( i = 0, l = srcElements.length; i < l; i++ ) {
269 - cloneCopyEvent( srcElements[ i ], destElements[ i ] );
270 - }
271 - } else {
272 - cloneCopyEvent( elem, clone );
273 - }
274 - }
275 -
276 - // Preserve script evaluation history
277 - destElements = getAll( clone, "script" );
278 - if ( destElements.length > 0 ) {
279 - setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
280 - }
281 -
282 - // Return the cloned set
283 - return clone;
284 - },
285 -
286 - cleanData: function( elems ) {
287 - var data, elem, type,
288 - special = jQuery.event.special,
289 - i = 0;
290 -
291 - for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {
292 - if ( acceptData( elem ) ) {
293 - if ( ( data = elem[ dataPriv.expando ] ) ) {
294 - if ( data.events ) {
295 - for ( type in data.events ) {
296 - if ( special[ type ] ) {
297 - jQuery.event.remove( elem, type );
298 -
299 - // This is a shortcut to avoid jQuery.event.remove's overhead
300 - } else {
301 - jQuery.removeEvent( elem, type, data.handle );
302 - }
303 - }
304 - }
305 -
306 - // Support: Chrome <=35 - 45+
307 - // Assign undefined instead of using delete, see Data#remove
308 - elem[ dataPriv.expando ] = undefined;
309 - }
310 - if ( elem[ dataUser.expando ] ) {
311 -
312 - // Support: Chrome <=35 - 45+
313 - // Assign undefined instead of using delete, see Data#remove
314 - elem[ dataUser.expando ] = undefined;
315 - }
316 - }
317 - }
318 - }
319 - } );
320 -
321 - jQuery.fn.extend( {
322 - detach: function( selector ) {
323 - return remove( this, selector, true );
324 - },
325 -
326 - remove: function( selector ) {
327 - return remove( this, selector );
328 - },
329 -
330 - text: function( value ) {
331 - return access( this, function( value ) {
332 - return value === undefined ?
333 - jQuery.text( this ) :
334 - this.empty().each( function() {
335 - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
336 - this.textContent = value;
337 - }
338 - } );
339 - }, null, value, arguments.length );
340 - },
341 -
342 - append: function() {
343 - return domManip( this, arguments, function( elem ) {
344 - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
345 - var target = manipulationTarget( this, elem );
346 - target.appendChild( elem );
347 - }
348 - } );
349 - },
350 -
351 - prepend: function() {
352 - return domManip( this, arguments, function( elem ) {
353 - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
354 - var target = manipulationTarget( this, elem );
355 - target.insertBefore( elem, target.firstChild );
356 - }
357 - } );
358 - },
359 -
360 - before: function() {
361 - return domManip( this, arguments, function( elem ) {
362 - if ( this.parentNode ) {
363 - this.parentNode.insertBefore( elem, this );
364 - }
365 - } );
366 - },
367 -
368 - after: function() {
369 - return domManip( this, arguments, function( elem ) {
370 - if ( this.parentNode ) {
371 - this.parentNode.insertBefore( elem, this.nextSibling );
372 - }
373 - } );
374 - },
375 -
376 - empty: function() {
377 - var elem,
378 - i = 0;
379 -
380 - for ( ; ( elem = this[ i ] ) != null; i++ ) {
381 - if ( elem.nodeType === 1 ) {
382 -
383 - // Prevent memory leaks
384 - jQuery.cleanData( getAll( elem, false ) );
385 -
386 - // Remove any remaining nodes
387 - elem.textContent = "";
388 - }
389 - }
390 -
391 - return this;
392 - },
393 -
394 - clone: function( dataAndEvents, deepDataAndEvents ) {
395 - dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
396 - deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
397 -
398 - return this.map( function() {
399 - return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
400 - } );
401 - },
402 -
403 - html: function( value ) {
404 - return access( this, function( value ) {
405 - var elem = this[ 0 ] || {},
406 - i = 0,
407 - l = this.length;
408 -
409 - if ( value === undefined && elem.nodeType === 1 ) {
410 - return elem.innerHTML;
411 - }
412 -
413 - // See if we can take a shortcut and just use innerHTML
414 - if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
415 - !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) {
416 -
417 - value = jQuery.htmlPrefilter( value );
418 -
419 - try {
420 - for ( ; i < l; i++ ) {
421 - elem = this[ i ] || {};
422 -
423 - // Remove element nodes and prevent memory leaks
424 - if ( elem.nodeType === 1 ) {
425 - jQuery.cleanData( getAll( elem, false ) );
426 - elem.innerHTML = value;
427 - }
428 - }
429 -
430 - elem = 0;
431 -
432 - // If using innerHTML throws an exception, use the fallback method
433 - } catch ( e ) {}
434 - }
435 -
436 - if ( elem ) {
437 - this.empty().append( value );
438 - }
439 - }, null, value, arguments.length );
440 - },
441 -
442 - replaceWith: function() {
443 - var ignored = [];
444 -
445 - // Make the changes, replacing each non-ignored context element with the new content
446 - return domManip( this, arguments, function( elem ) {
447 - var parent = this.parentNode;
448 -
449 - if ( jQuery.inArray( this, ignored ) < 0 ) {
450 - jQuery.cleanData( getAll( this ) );
451 - if ( parent ) {
452 - parent.replaceChild( elem, this );
453 - }
454 - }
455 -
456 - // Force callback invocation
457 - }, ignored );
458 - }
459 - } );
460 -
461 - jQuery.each( {
462 - appendTo: "append",
463 - prependTo: "prepend",
464 - insertBefore: "before",
465 - insertAfter: "after",
466 - replaceAll: "replaceWith"
467 - }, function( name, original ) {
468 - jQuery.fn[ name ] = function( selector ) {
469 - var elems,
470 - ret = [],
471 - insert = jQuery( selector ),
472 - last = insert.length - 1,
473 - i = 0;
474 -
475 - for ( ; i <= last; i++ ) {
476 - elems = i === last ? this : this.clone( true );
477 - jQuery( insert[ i ] )[ original ]( elems );
478 -
479 - // Support: Android <=4.0 only, PhantomJS 1 only
480 - // .get() because push.apply(_, arraylike) throws on ancient WebKit
481 - push.apply( ret, elems.get() );
482 - }
483 -
484 - return this.pushStack( ret );
485 - };
486 - } );
487 -
488 - return jQuery;
489 - } );
@@ -1,32 +0,0
1 - define( [
2 - "../ajax"
3 - ], function( jQuery ) {
4 -
5 - "use strict";
6 -
7 - jQuery._evalUrl = function( url, options ) {
8 - return jQuery.ajax( {
9 - url: url,
10 -
11 - // Make this explicit, since user can override this through ajaxSetup (#11264)
12 - type: "GET",
13 - dataType: "script",
14 - cache: true,
15 - async: false,
16 - global: false,
17 -
18 - // Only evaluate the response if it is successful (gh-4126)
19 - // dataFilter is not invoked for failure responses, so using it instead
20 - // of the default converter is kludgy but it works.
21 - converters: {
22 - "text script": function() {}
23 - },
24 - dataFilter: function( response ) {
25 - jQuery.globalEval( response, options );
26 - }
27 - } );
28 - };
29 -
30 - return jQuery._evalUrl;
31 -
32 - } );
@@ -1,106 +0,0
1 - define( [
2 - "../core",
3 - "../core/toType",
4 - "../core/isAttached",
5 - "./var/rtagName",
6 - "./var/rscriptType",
7 - "./wrapMap",
8 - "./getAll",
9 - "./setGlobalEval"
10 - ], function( jQuery, toType, isAttached, rtagName, rscriptType, wrapMap, getAll, setGlobalEval ) {
11 -
12 - "use strict";
13 -
14 - var rhtml = /<|&#?\w+;/;
15 -
16 - function buildFragment( elems, context, scripts, selection, ignored ) {
17 - var elem, tmp, tag, wrap, attached, j,
18 - fragment = context.createDocumentFragment(),
19 - nodes = [],
20 - i = 0,
21 - l = elems.length;
22 -
23 - for ( ; i < l; i++ ) {
24 - elem = elems[ i ];
25 -
26 - if ( elem || elem === 0 ) {
27 -
28 - // Add nodes directly
29 - if ( toType( elem ) === "object" ) {
30 -
31 - // Support: Android <=4.0 only, PhantomJS 1 only
32 - // push.apply(_, arraylike) throws on ancient WebKit
33 - jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
34 -
35 - // Convert non-html into a text node
36 - } else if ( !rhtml.test( elem ) ) {
37 - nodes.push( context.createTextNode( elem ) );
38 -
39 - // Convert html into DOM nodes
40 - } else {
41 - tmp = tmp || fragment.appendChild( context.createElement( "div" ) );
42 -
43 - // Deserialize a standard representation
44 - tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();
45 - wrap = wrapMap[ tag ] || wrapMap._default;
46 - tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];
47 -
48 - // Descend through wrappers to the right content
49 - j = wrap[ 0 ];
50 - while ( j-- ) {
51 - tmp = tmp.lastChild;
52 - }
53 -
54 - // Support: Android <=4.0 only, PhantomJS 1 only
55 - // push.apply(_, arraylike) throws on ancient WebKit
56 - jQuery.merge( nodes, tmp.childNodes );
57 -
58 - // Remember the top-level container
59 - tmp = fragment.firstChild;
60 -
61 - // Ensure the created nodes are orphaned (#12392)
62 - tmp.textContent = "";
63 - }
64 - }
65 - }
66 -
67 - // Remove wrapper from fragment
68 - fragment.textContent = "";
69 -
70 - i = 0;
71 - while ( ( elem = nodes[ i++ ] ) ) {
72 -
73 - // Skip elements already in the context collection (trac-4087)
74 - if ( selection && jQuery.inArray( elem, selection ) > -1 ) {
75 - if ( ignored ) {
76 - ignored.push( elem );
77 - }
78 - continue;
79 - }
80 -
81 - attached = isAttached( elem );
82 -
83 - // Append to fragment
84 - tmp = getAll( fragment.appendChild( elem ), "script" );
85 -
86 - // Preserve script evaluation history
87 - if ( attached ) {
88 - setGlobalEval( tmp );
89 - }
90 -
91 - // Capture executables
92 - if ( scripts ) {
93 - j = 0;
94 - while ( ( elem = tmp[ j++ ] ) ) {
95 - if ( rscriptType.test( elem.type || "" ) ) {
96 - scripts.push( elem );
97 - }
98 - }
99 - }
100 - }
101 -
102 - return fragment;
103 - }
104 -
105 - return buildFragment;
106 - } );
@@ -1,32 +0,0
1 - define( [
2 - "../core",
3 - "../core/nodeName"
4 - ], function( jQuery, nodeName ) {
5 -
6 - "use strict";
7 -
8 - function getAll( context, tag ) {
9 -
10 - // Support: IE <=9 - 11 only
11 - // Use typeof to avoid zero-argument method invocation on host objects (#15151)
12 - var ret;
13 -
14 - if ( typeof context.getElementsByTagName !== "undefined" ) {
15 - ret = context.getElementsByTagName( tag || "*" );
16 -
17 - } else if ( typeof context.querySelectorAll !== "undefined" ) {
18 - ret = context.querySelectorAll( tag || "*" );
19 -
20 - } else {
21 - ret = [];
22 - }
23 -
24 - if ( tag === undefined || tag && nodeName( context, tag ) ) {
25 - return jQuery.merge( [ context ], ret );
26 - }
27 -
28 - return ret;
29 - }
30 -
31 - return getAll;
32 - } );
@@ -1,22 +0,0
1 - define( [
2 - "../data/var/dataPriv"
3 - ], function( dataPriv ) {
4 -
5 - "use strict";
6 -
7 - // Mark scripts as having already been evaluated
8 - function setGlobalEval( elems, refElements ) {
9 - var i = 0,
10 - l = elems.length;
11 -
12 - for ( ; i < l; i++ ) {
13 - dataPriv.set(
14 - elems[ i ],
15 - "globalEval",
16 - !refElements || dataPriv.get( refElements[ i ], "globalEval" )
17 - );
18 - }
19 - }
20 -
21 - return setGlobalEval;
22 - } );
@@ -1,35 +0,0
1 - define( [
2 - "../var/document",
3 - "../var/support"
4 - ], function( document, support ) {
5 -
6 - "use strict";
7 -
8 - ( function() {
9 - var fragment = document.createDocumentFragment(),
10 - div = fragment.appendChild( document.createElement( "div" ) ),
11 - input = document.createElement( "input" );
12 -
13 - // Support: Android 4.0 - 4.3 only
14 - // Check state lost if the name is set (#11217)
15 - // Support: Windows Web Apps (WWA)
16 - // `name` and `type` must use .setAttribute for WWA (#14901)
17 - input.setAttribute( "type", "radio" );
18 - input.setAttribute( "checked", "checked" );
19 - input.setAttribute( "name", "t" );
20 -
21 - div.appendChild( input );
22 -
23 - // Support: Android <=4.1 only
24 - // Older WebKit doesn't clone checked state correctly in fragments
25 - support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
26 -
27 - // Support: IE <=11 only
28 - // Make sure textarea (and checkbox) defaultValue is properly cloned
29 - div.innerHTML = "<textarea>x</textarea>";
30 - support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
31 - } )();
32 -
33 - return support;
34 -
35 - } );
@@ -1,5 +0,0
1 - define( function() {
2 - "use strict";
3 -
4 - return ( /^$|^module$|\/(?:java|ecma)script/i );
5 - } );
@@ -1,8 +0,0
1 - define( function() {
2 - "use strict";
3 -
4 - // rtagName captures the name from the first start tag in a string of HTML
5 - // https://html.spec.whatwg.org/multipage/syntax.html#tag-open-state
6 - // https://html.spec.whatwg.org/multipage/syntax.html#tag-name-state
7 - return ( /<([a-z][^\/\0>\x20\t\r\n\f]*)/i );
8 - } );
@@ -1,29 +0,0
1 - define( function() {
2 -
3 - "use strict";
4 -
5 - // We have to close these tags to support XHTML (#13200)
6 - var wrapMap = {
7 -
8 - // Support: IE <=9 only
9 - option: [ 1, "<select multiple='multiple'>", "</select>" ],
10 -
11 - // XHTML parsers do not magically insert elements in the
12 - // same way that tag soup parsers do. So we cannot shorten
13 - // this by omitting <tbody> or other required elements.
14 - thead: [ 1, "<table>", "</table>" ],
15 - col: [ 2, "<table><colgroup>", "</colgroup></table>" ],
16 - tr: [ 2, "<table><tbody>", "</tbody></table>" ],
17 - td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
18 -
19 - _default: [ 0, "", "" ]
20 - };
21 -
22 - // Support: IE <=9 only
23 - wrapMap.optgroup = wrapMap.option;
24 -
25 - wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
26 - wrapMap.th = wrapMap.td;
27 -
28 - return wrapMap;
29 - } );
@@ -1,233 +0,0
1 - define( [
2 - "./core",
3 - "./core/access",
4 - "./var/document",
5 - "./var/documentElement",
6 - "./var/isFunction",
7 - "./css/var/rnumnonpx",
8 - "./css/curCSS",
9 - "./css/addGetHookIf",
10 - "./css/support",
11 - "./var/isWindow",
12 - "./core/init",
13 - "./css",
14 - "./selector" // contains
15 - ], function( jQuery, access, document, documentElement, isFunction, rnumnonpx,
16 - curCSS, addGetHookIf, support, isWindow ) {
17 -
18 - "use strict";
19 -
20 - jQuery.offset = {
21 - setOffset: function( elem, options, i ) {
22 - var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,
23 - position = jQuery.css( elem, "position" ),
24 - curElem = jQuery( elem ),
25 - props = {};
26 -
27 - // Set position first, in-case top/left are set even on static elem
28 - if ( position === "static" ) {
29 - elem.style.position = "relative";
30 - }
31 -
32 - curOffset = curElem.offset();
33 - curCSSTop = jQuery.css( elem, "top" );
34 - curCSSLeft = jQuery.css( elem, "left" );
35 - calculatePosition = ( position === "absolute" || position === "fixed" ) &&
36 - ( curCSSTop + curCSSLeft ).indexOf( "auto" ) > -1;
37 -
38 - // Need to be able to calculate position if either
39 - // top or left is auto and position is either absolute or fixed
40 - if ( calculatePosition ) {
41 - curPosition = curElem.position();
42 - curTop = curPosition.top;
43 - curLeft = curPosition.left;
44 -
45 - } else {
46 - curTop = parseFloat( curCSSTop ) || 0;
47 - curLeft = parseFloat( curCSSLeft ) || 0;
48 - }
49 -
50 - if ( isFunction( options ) ) {
51 -
52 - // Use jQuery.extend here to allow modification of coordinates argument (gh-1848)
53 - options = options.call( elem, i, jQuery.extend( {}, curOffset ) );
54 - }
55 -
56 - if ( options.top != null ) {
57 - props.top = ( options.top - curOffset.top ) + curTop;
58 - }
59 - if ( options.left != null ) {
60 - props.left = ( options.left - curOffset.left ) + curLeft;
61 - }
62 -
63 - if ( "using" in options ) {
64 - options.using.call( elem, props );
65 -
66 - } else {
67 - curElem.css( props );
68 - }
69 - }
70 - };
71 -
72 - jQuery.fn.extend( {
73 -
74 - // offset() relates an element's border box to the document origin
75 - offset: function( options ) {
76 -
77 - // Preserve chaining for setter
78 - if ( arguments.length ) {
79 - return options === undefined ?
80 - this :
81 - this.each( function( i ) {
82 - jQuery.offset.setOffset( this, options, i );
83 - } );
84 - }
85 -
86 - var rect, win,
87 - elem = this[ 0 ];
88 -
89 - if ( !elem ) {
90 - return;
91 - }
92 -
93 - // Return zeros for disconnected and hidden (display: none) elements (gh-2310)
94 - // Support: IE <=11 only
95 - // Running getBoundingClientRect on a
96 - // disconnected node in IE throws an error
97 - if ( !elem.getClientRects().length ) {
98 - return { top: 0, left: 0 };
99 - }
100 -
101 - // Get document-relative position by adding viewport scroll to viewport-relative gBCR
102 - rect = elem.getBoundingClientRect();
103 - win = elem.ownerDocument.defaultView;
104 - return {
105 - top: rect.top + win.pageYOffset,
106 - left: rect.left + win.pageXOffset
107 - };
108 - },
109 -
110 - // position() relates an element's margin box to its offset parent's padding box
111 - // This corresponds to the behavior of CSS absolute positioning
112 - position: function() {
113 - if ( !this[ 0 ] ) {
114 - return;
115 - }
116 -
117 - var offsetParent, offset, doc,
118 - elem = this[ 0 ],
119 - parentOffset = { top: 0, left: 0 };
120 -
121 - // position:fixed elements are offset from the viewport, which itself always has zero offset
122 - if ( jQuery.css( elem, "position" ) === "fixed" ) {
123 -
124 - // Assume position:fixed implies availability of getBoundingClientRect
125 - offset = elem.getBoundingClientRect();
126 -
127 - } else {
128 - offset = this.offset();
129 -
130 - // Account for the *real* offset parent, which can be the document or its root element
131 - // when a statically positioned element is identified
132 - doc = elem.ownerDocument;
133 - offsetParent = elem.offsetParent || doc.documentElement;
134 - while ( offsetParent &&
135 - ( offsetParent === doc.body || offsetParent === doc.documentElement ) &&
136 - jQuery.css( offsetParent, "position" ) === "static" ) {
137 -
138 - offsetParent = offsetParent.parentNode;
139 - }
140 - if ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) {
141 -
142 - // Incorporate borders into its offset, since they are outside its content origin
143 - parentOffset = jQuery( offsetParent ).offset();
144 - parentOffset.top += jQuery.css( offsetParent, "borderTopWidth", true );
145 - parentOffset.left += jQuery.css( offsetParent, "borderLeftWidth", true );
146 - }
147 - }
148 -
149 - // Subtract parent offsets and element margins
150 - return {
151 - top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),
152 - left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true )
153 - };
154 - },
155 -
156 - // This method will return documentElement in the following cases:
157 - // 1) For the element inside the iframe without offsetParent, this method will return
158 - // documentElement of the parent window
159 - // 2) For the hidden or detached element
160 - // 3) For body or html element, i.e. in case of the html node - it will return itself
161 - //
162 - // but those exceptions were never presented as a real life use-cases
163 - // and might be considered as more preferable results.
164 - //
165 - // This logic, however, is not guaranteed and can change at any point in the future
166 - offsetParent: function() {
167 - return this.map( function() {
168 - var offsetParent = this.offsetParent;
169 -
170 - while ( offsetParent && jQuery.css( offsetParent, "position" ) === "static" ) {
171 - offsetParent = offsetParent.offsetParent;
172 - }
173 -
174 - return offsetParent || documentElement;
175 - } );
176 - }
177 - } );
178 -
179 - // Create scrollLeft and scrollTop methods
180 - jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) {
181 - var top = "pageYOffset" === prop;
182 -
183 - jQuery.fn[ method ] = function( val ) {
184 - return access( this, function( elem, method, val ) {
185 -
186 - // Coalesce documents and windows
187 - var win;
188 - if ( isWindow( elem ) ) {
189 - win = elem;
190 - } else if ( elem.nodeType === 9 ) {
191 - win = elem.defaultView;
192 - }
193 -
194 - if ( val === undefined ) {
195 - return win ? win[ prop ] : elem[ method ];
196 - }
197 -
198 - if ( win ) {
199 - win.scrollTo(
200 - !top ? val : win.pageXOffset,
201 - top ? val : win.pageYOffset
202 - );
203 -
204 - } else {
205 - elem[ method ] = val;
206 - }
207 - }, method, val, arguments.length );
208 - };
209 - } );
210 -
211 - // Support: Safari <=7 - 9.1, Chrome <=37 - 49
212 - // Add the top/left cssHooks using jQuery.fn.position
213 - // Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
214 - // Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347
215 - // getComputedStyle returns percent when specified for top/left/bottom/right;
216 - // rather than make the css module depend on the offset module, just check for it here
217 - jQuery.each( [ "top", "left" ], function( i, prop ) {
218 - jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,
219 - function( elem, computed ) {
220 - if ( computed ) {
221 - computed = curCSS( elem, prop );
222 -
223 - // If curCSS returns percentage, fallback to offset
224 - return rnumnonpx.test( computed ) ?
225 - jQuery( elem ).position()[ prop ] + "px" :
226 - computed;
227 - }
228 - }
229 - );
230 - } );
231 -
232 - return jQuery;
233 - } );
@@ -1,145 +0,0
1 - define( [
2 - "./core",
3 - "./data/var/dataPriv",
4 - "./deferred",
5 - "./callbacks"
6 - ], function( jQuery, dataPriv ) {
7 -
8 - "use strict";
9 -
10 - jQuery.extend( {
11 - queue: function( elem, type, data ) {
12 - var queue;
13 -
14 - if ( elem ) {
15 - type = ( type || "fx" ) + "queue";
16 - queue = dataPriv.get( elem, type );
17 -
18 - // Speed up dequeue by getting out quickly if this is just a lookup
19 - if ( data ) {
20 - if ( !queue || Array.isArray( data ) ) {
21 - queue = dataPriv.access( elem, type, jQuery.makeArray( data ) );
22 - } else {
23 - queue.push( data );
24 - }
25 - }
26 - return queue || [];
27 - }
28 - },
29 -
30 - dequeue: function( elem, type ) {
31 - type = type || "fx";
32 -
33 - var queue = jQuery.queue( elem, type ),
34 - startLength = queue.length,
35 - fn = queue.shift(),
36 - hooks = jQuery._queueHooks( elem, type ),
37 - next = function() {
38 - jQuery.dequeue( elem, type );
39 - };
40 -
41 - // If the fx queue is dequeued, always remove the progress sentinel
42 - if ( fn === "inprogress" ) {
43 - fn = queue.shift();
44 - startLength--;
45 - }
46 -
47 - if ( fn ) {
48 -
49 - // Add a progress sentinel to prevent the fx queue from being
50 - // automatically dequeued
51 - if ( type === "fx" ) {
52 - queue.unshift( "inprogress" );
53 - }
54 -
55 - // Clear up the last queue stop function
56 - delete hooks.stop;
57 - fn.call( elem, next, hooks );
58 - }
59 -
60 - if ( !startLength && hooks ) {
61 - hooks.empty.fire();
62 - }
63 - },
64 -
65 - // Not public - generate a queueHooks object, or return the current one
66 - _queueHooks: function( elem, type ) {
67 - var key = type + "queueHooks";
68 - return dataPriv.get( elem, key ) || dataPriv.access( elem, key, {
69 - empty: jQuery.Callbacks( "once memory" ).add( function() {
70 - dataPriv.remove( elem, [ type + "queue", key ] );
71 - } )
72 - } );
73 - }
74 - } );
75 -
76 - jQuery.fn.extend( {
77 - queue: function( type, data ) {
78 - var setter = 2;
79 -
80 - if ( typeof type !== "string" ) {
81 - data = type;
82 - type = "fx";
83 - setter--;
84 - }
85 -
86 - if ( arguments.length < setter ) {
87 - return jQuery.queue( this[ 0 ], type );
88 - }
89 -
90 - return data === undefined ?
91 - this :
92 - this.each( function() {
93 - var queue = jQuery.queue( this, type, data );
94 -
95 - // Ensure a hooks for this queue
96 - jQuery._queueHooks( this, type );
97 -
98 - if ( type === "fx" && queue[ 0 ] !== "inprogress" ) {
99 - jQuery.dequeue( this, type );
100 - }
101 - } );
102 - },
103 - dequeue: function( type ) {
104 - return this.each( function() {
105 - jQuery.dequeue( this, type );
106 - } );
107 - },
108 - clearQueue: function( type ) {
109 - return this.queue( type || "fx", [] );
110 - },
111 -
112 - // Get a promise resolved when queues of a certain type
113 - // are emptied (fx is the type by default)
114 - promise: function( type, obj ) {
115 - var tmp,
116 - count = 1,
117 - defer = jQuery.Deferred(),
118 - elements = this,
119 - i = this.length,
120 - resolve = function() {
121 - if ( !( --count ) ) {
122 - defer.resolveWith( elements, [ elements ] );
123 - }
124 - };
125 -
126 - if ( typeof type !== "string" ) {
127 - obj = type;
128 - type = undefined;
129 - }
130 - type = type || "fx";
131 -
132 - while ( i-- ) {
133 - tmp = dataPriv.get( elements[ i ], type + "queueHooks" );
134 - if ( tmp && tmp.empty ) {
135 - count++;
136 - tmp.empty.add( resolve );
137 - }
138 - }
139 - resolve();
140 - return defer.promise( obj );
141 - }
142 - } );
143 -
144 - return jQuery;
145 - } );
@@ -1,24 +0,0
1 - define( [
2 - "../core",
3 - "../queue",
4 - "../effects" // Delay is optional because of this dependency
5 - ], function( jQuery ) {
6 -
7 - "use strict";
8 -
9 - // Based off of the plugin by Clint Helfers, with permission.
10 - // https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/
11 - jQuery.fn.delay = function( time, type ) {
12 - time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
13 - type = type || "fx";
14 -
15 - return this.queue( type, function( next, hooks ) {
16 - var timeout = window.setTimeout( next, time );
17 - hooks.stop = function() {
18 - window.clearTimeout( timeout );
19 - };
20 - } );
21 - };
22 -
23 - return jQuery.fn.delay;
24 - } );
@@ -1,237 +0,0
1 - define( [
2 - "./core",
3 - "./var/document",
4 - "./var/documentElement",
5 - "./var/hasOwn",
6 - "./var/indexOf"
7 - ], function( jQuery, document, documentElement, hasOwn, indexOf ) {
8 -
9 - "use strict";
10 -
11 - /*
12 - * Optional (non-Sizzle) selector module for custom builds.
13 - *
14 - * Note that this DOES NOT SUPPORT many documented jQuery
15 - * features in exchange for its smaller size:
16 - *
17 - * Attribute not equal selector
18 - * Positional selectors (:first; :eq(n); :odd; etc.)
19 - * Type selectors (:input; :checkbox; :button; etc.)
20 - * State-based selectors (:animated; :visible; :hidden; etc.)
21 - * :has(selector)
22 - * :not(complex selector)
23 - * custom selectors via Sizzle extensions
24 - * Leading combinators (e.g., $collection.find("> *"))
25 - * Reliable functionality on XML fragments
26 - * Requiring all parts of a selector to match elements under context
27 - * (e.g., $div.find("div > *") now matches children of $div)
28 - * Matching against non-elements
29 - * Reliable sorting of disconnected nodes
30 - * querySelectorAll bug fixes (e.g., unreliable :focus on WebKit)
31 - *
32 - * If any of these are unacceptable tradeoffs, either use Sizzle or
33 - * customize this stub for the project's specific needs.
34 - */
35 -
36 - var hasDuplicate, sortInput,
37 - sortStable = jQuery.expando.split( "" ).sort( sortOrder ).join( "" ) === jQuery.expando,
38 - matches = documentElement.matches ||
39 - documentElement.webkitMatchesSelector ||
40 - documentElement.mozMatchesSelector ||
41 - documentElement.oMatchesSelector ||
42 - documentElement.msMatchesSelector,
43 -
44 - // CSS string/identifier serialization
45 - // https://drafts.csswg.org/cssom/#common-serializing-idioms
46 - rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g,
47 - fcssescape = function( ch, asCodePoint ) {
48 - if ( asCodePoint ) {
49 -
50 - // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
51 - if ( ch === "\0" ) {
52 - return "\uFFFD";
53 - }
54 -
55 - // Control characters and (dependent upon position) numbers get escaped as code points
56 - return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
57 - }
58 -
59 - // Other potentially-special ASCII characters get backslash-escaped
60 - return "\\" + ch;
61 - };
62 -
63 - function sortOrder( a, b ) {
64 -
65 - // Flag for duplicate removal
66 - if ( a === b ) {
67 - hasDuplicate = true;
68 - return 0;
69 - }
70 -
71 - // Sort on method existence if only one input has compareDocumentPosition
72 - var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
73 - if ( compare ) {
74 - return compare;
75 - }
76 -
77 - // Calculate position if both inputs belong to the same document
78 - compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
79 - a.compareDocumentPosition( b ) :
80 -
81 - // Otherwise we know they are disconnected
82 - 1;
83 -
84 - // Disconnected nodes
85 - if ( compare & 1 ) {
86 -
87 - // Choose the first element that is related to our preferred document
88 - if ( a === document || a.ownerDocument === document &&
89 - jQuery.contains( document, a ) ) {
90 - return -1;
91 - }
92 - if ( b === document || b.ownerDocument === document &&
93 - jQuery.contains( document, b ) ) {
94 - return 1;
95 - }
96 -
97 - // Maintain original order
98 - return sortInput ?
99 - ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :
100 - 0;
101 - }
102 -
103 - return compare & 4 ? -1 : 1;
104 - }
105 -
106 - function uniqueSort( results ) {
107 - var elem,
108 - duplicates = [],
109 - j = 0,
110 - i = 0;
111 -
112 - hasDuplicate = false;
113 - sortInput = !sortStable && results.slice( 0 );
114 - results.sort( sortOrder );
115 -
116 - if ( hasDuplicate ) {
117 - while ( ( elem = results[ i++ ] ) ) {
118 - if ( elem === results[ i ] ) {
119 - j = duplicates.push( i );
120 - }
121 - }
122 - while ( j-- ) {
123 - results.splice( duplicates[ j ], 1 );
124 - }
125 - }
126 -
127 - // Clear input after sorting to release objects
128 - // See https://github.com/jquery/sizzle/pull/225
129 - sortInput = null;
130 -
131 - return results;
132 - }
133 -
134 - function escape( sel ) {
135 - return ( sel + "" ).replace( rcssescape, fcssescape );
136 - }
137 -
138 - jQuery.extend( {
139 - uniqueSort: uniqueSort,
140 - unique: uniqueSort,
141 - escapeSelector: escape,
142 - find: function( selector, context, results, seed ) {
143 - var elem, nodeType,
144 - i = 0;
145 -
146 - results = results || [];
147 - context = context || document;
148 -
149 - // Same basic safeguard as Sizzle
150 - if ( !selector || typeof selector !== "string" ) {
151 - return results;
152 - }
153 -
154 - // Early return if context is not an element or document
155 - if ( ( nodeType = context.nodeType ) !== 1 && nodeType !== 9 ) {
156 - return [];
157 - }
158 -
159 - if ( seed ) {
160 - while ( ( elem = seed[ i++ ] ) ) {
161 - if ( jQuery.find.matchesSelector( elem, selector ) ) {
162 - results.push( elem );
163 - }
164 - }
165 - } else {
166 - jQuery.merge( results, context.querySelectorAll( selector ) );
167 - }
168 -
169 - return results;
170 - },
171 - text: function( elem ) {
172 - var node,
173 - ret = "",
174 - i = 0,
175 - nodeType = elem.nodeType;
176 -
177 - if ( !nodeType ) {
178 -
179 - // If no nodeType, this is expected to be an array
180 - while ( ( node = elem[ i++ ] ) ) {
181 -
182 - // Do not traverse comment nodes
183 - ret += jQuery.text( node );
184 - }
185 - } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
186 -
187 - // Use textContent for elements
188 - return elem.textContent;
189 - } else if ( nodeType === 3 || nodeType === 4 ) {
190 - return elem.nodeValue;
191 - }
192 -
193 - // Do not include comment or processing instruction nodes
194 -
195 - return ret;
196 - },
197 - contains: function( a, b ) {
198 - var adown = a.nodeType === 9 ? a.documentElement : a,
199 - bup = b && b.parentNode;
200 - return a === bup || !!( bup && bup.nodeType === 1 && adown.contains( bup ) );
201 - },
202 - isXMLDoc: function( elem ) {
203 -
204 - // documentElement is verified for cases where it doesn't yet exist
205 - // (such as loading iframes in IE - #4833)
206 - var documentElement = elem && ( elem.ownerDocument || elem ).documentElement;
207 - return documentElement ? documentElement.nodeName !== "HTML" : false;
208 - },
209 - expr: {
210 - attrHandle: {},
211 - match: {
212 - bool: new RegExp( "^(?:checked|selected|async|autofocus|autoplay|controls|defer" +
213 - "|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped)$", "i" ),
214 - needsContext: /^[\x20\t\r\n\f]*[>+~]/
215 - }
216 - }
217 - } );
218 -
219 - jQuery.extend( jQuery.find, {
220 - matches: function( expr, elements ) {
221 - return jQuery.find( expr, null, null, elements );
222 - },
223 - matchesSelector: function( elem, expr ) {
224 - return matches.call( elem, expr );
225 - },
226 - attr: function( elem, name ) {
227 - var fn = jQuery.expr.attrHandle[ name.toLowerCase() ],
228 -
229 - // Don't get fooled by Object.prototype properties (jQuery #13807)
230 - value = fn && hasOwn.call( jQuery.expr.attrHandle, name.toLowerCase() ) ?
231 - fn( elem, name, jQuery.isXMLDoc( elem ) ) :
232 - undefined;
233 - return value !== undefined ? value : elem.getAttribute( name );
234 - }
235 - } );
236 -
237 - } );
@@ -1,19 +0,0
1 - define( [
2 - "./core",
3 - "../external/sizzle/dist/sizzle"
4 - ], function( jQuery, Sizzle ) {
5 -
6 - "use strict";
7 -
8 - jQuery.find = Sizzle;
9 - jQuery.expr = Sizzle.selectors;
10 -
11 - // Deprecated
12 - jQuery.expr[ ":" ] = jQuery.expr.pseudos;
13 - jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;
14 - jQuery.text = Sizzle.getText;
15 - jQuery.isXMLDoc = Sizzle.isXML;
16 - jQuery.contains = Sizzle.contains;
17 - jQuery.escapeSelector = Sizzle.escape;
18 -
19 - } );
@@ -1,3 +0,0
1 - define( [ "./selector-sizzle" ], function() {
2 - "use strict";
3 - } );
@@ -1,136 +0,0
1 - define( [
2 - "./core",
3 - "./core/toType",
4 - "./var/rcheckableType",
5 - "./var/isFunction",
6 - "./core/init",
7 - "./traversing", // filter
8 - "./attributes/prop"
9 - ], function( jQuery, toType, rcheckableType, isFunction ) {
10 -
11 - "use strict";
12 -
13 - var
14 - rbracket = /\[\]$/,
15 - rCRLF = /\r?\n/g,
16 - rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
17 - rsubmittable = /^(?:input|select|textarea|keygen)/i;
18 -
19 - function buildParams( prefix, obj, traditional, add ) {
20 - var name;
21 -
22 - if ( Array.isArray( obj ) ) {
23 -
24 - // Serialize array item.
25 - jQuery.each( obj, function( i, v ) {
26 - if ( traditional || rbracket.test( prefix ) ) {
27 -
28 - // Treat each array item as a scalar.
29 - add( prefix, v );
30 -
31 - } else {
32 -
33 - // Item is non-scalar (array or object), encode its numeric index.
34 - buildParams(
35 - prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]",
36 - v,
37 - traditional,
38 - add
39 - );
40 - }
41 - } );
42 -
43 - } else if ( !traditional && toType( obj ) === "object" ) {
44 -
45 - // Serialize object item.
46 - for ( name in obj ) {
47 - buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
48 - }
49 -
50 - } else {
51 -
52 - // Serialize scalar item.
53 - add( prefix, obj );
54 - }
55 - }
56 -
57 - // Serialize an array of form elements or a set of
58 - // key/values into a query string
59 - jQuery.param = function( a, traditional ) {
60 - var prefix,
61 - s = [],
62 - add = function( key, valueOrFunction ) {
63 -
64 - // If value is a function, invoke it and use its return value
65 - var value = isFunction( valueOrFunction ) ?
66 - valueOrFunction() :
67 - valueOrFunction;
68 -
69 - s[ s.length ] = encodeURIComponent( key ) + "=" +
70 - encodeURIComponent( value == null ? "" : value );
71 - };
72 -
73 - if ( a == null ) {
74 - return "";
75 - }
76 -
77 - // If an array was passed in, assume that it is an array of form elements.
78 - if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
79 -
80 - // Serialize the form elements
81 - jQuery.each( a, function() {
82 - add( this.name, this.value );
83 - } );
84 -
85 - } else {
86 -
87 - // If traditional, encode the "old" way (the way 1.3.2 or older
88 - // did it), otherwise encode params recursively.
89 - for ( prefix in a ) {
90 - buildParams( prefix, a[ prefix ], traditional, add );
91 - }
92 - }
93 -
94 - // Return the resulting serialization
95 - return s.join( "&" );
96 - };
97 -
98 - jQuery.fn.extend( {
99 - serialize: function() {
100 - return jQuery.param( this.serializeArray() );
101 - },
102 - serializeArray: function() {
103 - return this.map( function() {
104 -
105 - // Can add propHook for "elements" to filter or add form elements
106 - var elements = jQuery.prop( this, "elements" );
107 - return elements ? jQuery.makeArray( elements ) : this;
108 - } )
109 - .filter( function() {
110 - var type = this.type;
111 -
112 - // Use .is( ":disabled" ) so that fieldset[disabled] works
113 - return this.name && !jQuery( this ).is( ":disabled" ) &&
114 - rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
115 - ( this.checked || !rcheckableType.test( type ) );
116 - } )
117 - .map( function( i, elem ) {
118 - var val = jQuery( this ).val();
119 -
120 - if ( val == null ) {
121 - return null;
122 - }
123 -
124 - if ( Array.isArray( val ) ) {
125 - return jQuery.map( val, function( val ) {
126 - return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
127 - } );
128 - }
129 -
130 - return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
131 - } ).get();
132 - }
133 - } );
134 -
135 - return jQuery;
136 - } );
@@ -1,191 +0,0
1 - define( [
2 - "./core",
3 - "./var/indexOf",
4 - "./traversing/var/dir",
5 - "./traversing/var/siblings",
6 - "./traversing/var/rneedsContext",
7 - "./core/nodeName",
8 -
9 - "./core/init",
10 - "./traversing/findFilter",
11 - "./selector"
12 - ], function( jQuery, indexOf, dir, siblings, rneedsContext, nodeName ) {
13 -
14 - "use strict";
15 -
16 - var rparentsprev = /^(?:parents|prev(?:Until|All))/,
17 -
18 - // Methods guaranteed to produce a unique set when starting from a unique set
19 - guaranteedUnique = {
20 - children: true,
21 - contents: true,
22 - next: true,
23 - prev: true
24 - };
25 -
26 - jQuery.fn.extend( {
27 - has: function( target ) {
28 - var targets = jQuery( target, this ),
29 - l = targets.length;
30 -
31 - return this.filter( function() {
32 - var i = 0;
33 - for ( ; i < l; i++ ) {
34 - if ( jQuery.contains( this, targets[ i ] ) ) {
35 - return true;
36 - }
37 - }
38 - } );
39 - },
40 -
41 - closest: function( selectors, context ) {
42 - var cur,
43 - i = 0,
44 - l = this.length,
45 - matched = [],
46 - targets = typeof selectors !== "string" && jQuery( selectors );
47 -
48 - // Positional selectors never match, since there's no _selection_ context
49 - if ( !rneedsContext.test( selectors ) ) {
50 - for ( ; i < l; i++ ) {
51 - for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {
52 -
53 - // Always skip document fragments
54 - if ( cur.nodeType < 11 && ( targets ?
55 - targets.index( cur ) > -1 :
56 -
57 - // Don't pass non-elements to Sizzle
58 - cur.nodeType === 1 &&
59 - jQuery.find.matchesSelector( cur, selectors ) ) ) {
60 -
61 - matched.push( cur );
62 - break;
63 - }
64 - }
65 - }
66 - }
67 -
68 - return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );
69 - },
70 -
71 - // Determine the position of an element within the set
72 - index: function( elem ) {
73 -
74 - // No argument, return index in parent
75 - if ( !elem ) {
76 - return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;
77 - }
78 -
79 - // Index in selector
80 - if ( typeof elem === "string" ) {
81 - return indexOf.call( jQuery( elem ), this[ 0 ] );
82 - }
83 -
84 - // Locate the position of the desired element
85 - return indexOf.call( this,
86 -
87 - // If it receives a jQuery object, the first element is used
88 - elem.jquery ? elem[ 0 ] : elem
89 - );
90 - },
91 -
92 - add: function( selector, context ) {
93 - return this.pushStack(
94 - jQuery.uniqueSort(
95 - jQuery.merge( this.get(), jQuery( selector, context ) )
96 - )
97 - );
98 - },
99 -
100 - addBack: function( selector ) {
101 - return this.add( selector == null ?
102 - this.prevObject : this.prevObject.filter( selector )
103 - );
104 - }
105 - } );
106 -
107 - function sibling( cur, dir ) {
108 - while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}
109 - return cur;
110 - }
111 -
112 - jQuery.each( {
113 - parent: function( elem ) {
114 - var parent = elem.parentNode;
115 - return parent && parent.nodeType !== 11 ? parent : null;
116 - },
117 - parents: function( elem ) {
118 - return dir( elem, "parentNode" );
119 - },
120 - parentsUntil: function( elem, i, until ) {
121 - return dir( elem, "parentNode", until );
122 - },
123 - next: function( elem ) {
124 - return sibling( elem, "nextSibling" );
125 - },
126 - prev: function( elem ) {
127 - return sibling( elem, "previousSibling" );
128 - },
129 - nextAll: function( elem ) {
130 - return dir( elem, "nextSibling" );
131 - },
132 - prevAll: function( elem ) {
133 - return dir( elem, "previousSibling" );
134 - },
135 - nextUntil: function( elem, i, until ) {
136 - return dir( elem, "nextSibling", until );
137 - },
138 - prevUntil: function( elem, i, until ) {
139 - return dir( elem, "previousSibling", until );
140 - },
141 - siblings: function( elem ) {
142 - return siblings( ( elem.parentNode || {} ).firstChild, elem );
143 - },
144 - children: function( elem ) {
145 - return siblings( elem.firstChild );
146 - },
147 - contents: function( elem ) {
148 - if ( typeof elem.contentDocument !== "undefined" ) {
149 - return elem.contentDocument;
150 - }
151 -
152 - // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only
153 - // Treat the template element as a regular one in browsers that
154 - // don't support it.
155 - if ( nodeName( elem, "template" ) ) {
156 - elem = elem.content || elem;
157 - }
158 -
159 - return jQuery.merge( [], elem.childNodes );
160 - }
161 - }, function( name, fn ) {
162 - jQuery.fn[ name ] = function( until, selector ) {
163 - var matched = jQuery.map( this, fn, until );
164 -
165 - if ( name.slice( -5 ) !== "Until" ) {
166 - selector = until;
167 - }
168 -
169 - if ( selector && typeof selector === "string" ) {
170 - matched = jQuery.filter( selector, matched );
171 - }
172 -
173 - if ( this.length > 1 ) {
174 -
175 - // Remove duplicates
176 - if ( !guaranteedUnique[ name ] ) {
177 - jQuery.uniqueSort( matched );
178 - }
179 -
180 - // Reverse order for parents* and prev-derivatives
181 - if ( rparentsprev.test( name ) ) {
182 - matched.reverse();
183 - }
184 - }
185 -
186 - return this.pushStack( matched );
187 - };
188 - } );
189 -
190 - return jQuery;
191 - } );
@@ -1,97 +0,0
1 - define( [
2 - "../core",
3 - "../var/indexOf",
4 - "../var/isFunction",
5 - "./var/rneedsContext",
6 - "../selector"
7 - ], function( jQuery, indexOf, isFunction, rneedsContext ) {
8 -
9 - "use strict";
10 -
11 - // Implement the identical functionality for filter and not
12 - function winnow( elements, qualifier, not ) {
13 - if ( isFunction( qualifier ) ) {
14 - return jQuery.grep( elements, function( elem, i ) {
15 - return !!qualifier.call( elem, i, elem ) !== not;
16 - } );
17 - }
18 -
19 - // Single element
20 - if ( qualifier.nodeType ) {
21 - return jQuery.grep( elements, function( elem ) {
22 - return ( elem === qualifier ) !== not;
23 - } );
24 - }
25 -
26 - // Arraylike of elements (jQuery, arguments, Array)
27 - if ( typeof qualifier !== "string" ) {
28 - return jQuery.grep( elements, function( elem ) {
29 - return ( indexOf.call( qualifier, elem ) > -1 ) !== not;
30 - } );
31 - }
32 -
33 - // Filtered directly for both simple and complex selectors
34 - return jQuery.filter( qualifier, elements, not );
35 - }
36 -
37 - jQuery.filter = function( expr, elems, not ) {
38 - var elem = elems[ 0 ];
39 -
40 - if ( not ) {
41 - expr = ":not(" + expr + ")";
42 - }
43 -
44 - if ( elems.length === 1 && elem.nodeType === 1 ) {
45 - return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];
46 - }
47 -
48 - return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
49 - return elem.nodeType === 1;
50 - } ) );
51 - };
52 -
53 - jQuery.fn.extend( {
54 - find: function( selector ) {
55 - var i, ret,
56 - len = this.length,
57 - self = this;
58 -
59 - if ( typeof selector !== "string" ) {
60 - return this.pushStack( jQuery( selector ).filter( function() {
61 - for ( i = 0; i < len; i++ ) {
62 - if ( jQuery.contains( self[ i ], this ) ) {
63 - return true;
64 - }
65 - }
66 - } ) );
67 - }
68 -
69 - ret = this.pushStack( [] );
70 -
71 - for ( i = 0; i < len; i++ ) {
72 - jQuery.find( selector, self[ i ], ret );
73 - }
74 -
75 - return len > 1 ? jQuery.uniqueSort( ret ) : ret;
76 - },
77 - filter: function( selector ) {
78 - return this.pushStack( winnow( this, selector || [], false ) );
79 - },
80 - not: function( selector ) {
81 - return this.pushStack( winnow( this, selector || [], true ) );
82 - },
83 - is: function( selector ) {
84 - return !!winnow(
85 - this,
86 -
87 - // If this is a positional/relative selector, check membership in the returned set
88 - // so $("p:first").is("p:last") won't return true for a doc with two "p".
89 - typeof selector === "string" && rneedsContext.test( selector ) ?
90 - jQuery( selector ) :
91 - selector || [],
92 - false
93 - ).length;
94 - }
95 - } );
96 -
97 - } );
@@ -1,22 +0,0
1 - define( [
2 - "../../core"
3 - ], function( jQuery ) {
4 -
5 - "use strict";
6 -
7 - return function( elem, dir, until ) {
8 - var matched = [],
9 - truncate = until !== undefined;
10 -
11 - while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {
12 - if ( elem.nodeType === 1 ) {
13 - if ( truncate && jQuery( elem ).is( until ) ) {
14 - break;
15 - }
16 - matched.push( elem );
17 - }
18 - }
19 - return matched;
20 - };
21 -
22 - } );
@@ -1,8 +0,0
1 - define( [
2 - "../../core",
3 - "../../selector"
4 - ], function( jQuery ) {
5 - "use strict";
6 -
7 - return jQuery.expr.match.needsContext;
8 - } );
@@ -1,17 +0,0
1 - define( function() {
2 -
3 - "use strict";
4 -
5 - return function( n, elem ) {
6 - var matched = [];
7 -
8 - for ( ; n; n = n.nextSibling ) {
9 - if ( n.nodeType === 1 && n !== elem ) {
10 - matched.push( n );
11 - }
12 - }
13 -
14 - return matched;
15 - };
16 -
17 - } );
@@ -1,7 +0,0
1 - define( [
2 - "./fnToString"
3 - ], function( fnToString ) {
4 - "use strict";
5 -
6 - return fnToString.call( Object );
7 - } );
@@ -1,5 +0,0
1 - define( function() {
2 - "use strict";
3 -
4 - return [];
5 - } );
@@ -1,6 +0,0
1 - define( function() {
2 - "use strict";
3 -
4 - // [[Class]] -> type pairs
5 - return {};
6 - } );
@@ -1,7 +0,0
1 - define( [
2 - "./arr"
3 - ], function( arr ) {
4 - "use strict";
5 -
6 - return arr.concat;
7 - } );
@@ -1,5 +0,0
1 - define( function() {
2 - "use strict";
3 -
4 - return window.document;
5 - } );
@@ -1,7 +0,0
1 - define( [
2 - "./document"
3 - ], function( document ) {
4 - "use strict";
5 -
6 - return document.documentElement;
7 - } );
@@ -1,7 +0,0
1 - define( [
2 - "./hasOwn"
3 - ], function( hasOwn ) {
4 - "use strict";
5 -
6 - return hasOwn.toString;
7 - } );
@@ -1,5 +0,0
1 - define( function() {
2 - "use strict";
3 -
4 - return Object.getPrototypeOf;
5 - } );
@@ -1,7 +0,0
1 - define( [
2 - "./class2type"
3 - ], function( class2type ) {
4 - "use strict";
5 -
6 - return class2type.hasOwnProperty;
7 - } );
@@ -1,7 +0,0
1 - define( [
2 - "./arr"
3 - ], function( arr ) {
4 - "use strict";
5 -
6 - return arr.indexOf;
7 - } );
@@ -1,13 +0,0
1 - define( function() {
2 - "use strict";
3 -
4 - return function isFunction( obj ) {
5 -
6 - // Support: Chrome <=57, Firefox <=52
7 - // In some browsers, typeof returns "function" for HTML <object> elements
8 - // (i.e., `typeof document.createElement( "object" ) === "function"`).
9 - // We don't want to classify *any* DOM node as a function.
10 - return typeof obj === "function" && typeof obj.nodeType !== "number";
11 - };
12 -
13 - } );
@@ -1,8 +0,0
1 - define( function() {
2 - "use strict";
3 -
4 - return function isWindow( obj ) {
5 - return obj != null && obj === obj.window;
6 - };
7 -
8 - } );
@@ -1,5 +0,0
1 - define( function() {
2 - "use strict";
3 -
4 - return ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source;
5 - } );
@@ -1,7 +0,0
1 - define( [
2 - "./arr"
3 - ], function( arr ) {
4 - "use strict";
5 -
6 - return arr.push;
7 - } );
@@ -1,5 +0,0
1 - define( function() {
2 - "use strict";
3 -
4 - return ( /^(?:checkbox|radio)$/i );
5 - } );
@@ -1,9 +0,0
1 - define( [
2 - "../var/pnum"
3 - ], function( pnum ) {
4 -
5 - "use strict";
6 -
7 - return new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" );
8 -
9 - } );
@@ -1,8 +0,0
1 - define( function() {
2 - "use strict";
3 -
4 - // Only count HTML whitespace
5 - // Other whitespace should count in values
6 - // https://infra.spec.whatwg.org/#ascii-whitespace
7 - return ( /[^\x20\t\r\n\f]+/g );
8 - } );
@@ -1,7 +0,0
1 - define( [
2 - "./arr"
3 - ], function( arr ) {
4 - "use strict";
5 -
6 - return arr.slice;
7 - } );
@@ -1,6 +0,0
1 - define( function() {
2 - "use strict";
3 -
4 - // All support tests are defined in their respective modules.
5 - return {};
6 - } );
@@ -1,7 +0,0
1 - define( [
2 - "./class2type"
3 - ], function( class2type ) {
4 - "use strict";
5 -
6 - return class2type.toString;
7 - } );
@@ -1,78 +0,0
1 - define( [
2 - "./core",
3 - "./var/isFunction",
4 - "./core/init",
5 - "./manipulation", // clone
6 - "./traversing" // parent, contents
7 - ], function( jQuery, isFunction ) {
8 -
9 - "use strict";
10 -
11 - jQuery.fn.extend( {
12 - wrapAll: function( html ) {
13 - var wrap;
14 -
15 - if ( this[ 0 ] ) {
16 - if ( isFunction( html ) ) {
17 - html = html.call( this[ 0 ] );
18 - }
19 -
20 - // The elements to wrap the target around
21 - wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );
22 -
23 - if ( this[ 0 ].parentNode ) {
24 - wrap.insertBefore( this[ 0 ] );
25 - }
26 -
27 - wrap.map( function() {
28 - var elem = this;
29 -
30 - while ( elem.firstElementChild ) {
31 - elem = elem.firstElementChild;
32 - }
33 -
34 - return elem;
35 - } ).append( this );
36 - }
37 -
38 - return this;
39 - },
40 -
41 - wrapInner: function( html ) {
42 - if ( isFunction( html ) ) {
43 - return this.each( function( i ) {
44 - jQuery( this ).wrapInner( html.call( this, i ) );
45 - } );
46 - }
47 -
48 - return this.each( function() {
49 - var self = jQuery( this ),
50 - contents = self.contents();
51 -
52 - if ( contents.length ) {
53 - contents.wrapAll( html );
54 -
55 - } else {
56 - self.append( html );
57 - }
58 - } );
59 - },
60 -
61 - wrap: function( html ) {
62 - var htmlIsFunction = isFunction( html );
63 -
64 - return this.each( function( i ) {
65 - jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );
66 - } );
67 - },
68 -
69 - unwrap: function( selector ) {
70 - this.parent( selector ).not( "body" ).each( function() {
71 - jQuery( this ).replaceWith( this.childNodes );
72 - } );
73 - return this;
74 - }
75 - } );
76 -
77 - return jQuery;
78 - } );
You need to be logged in to leave comments. Login now