MDL-53455 libraries: upgrade jquery migrate to version 1.4.0
authorSimey Lameze <simey@moodle.com>
Tue, 15 Mar 2016 02:30:40 +0000 (10:30 +0800)
committerSimey Lameze <simey@moodle.com>
Mon, 21 Mar 2016 05:42:54 +0000 (13:42 +0800)
lib/jquery/jquery-migrate-1.2.1.js [deleted file]
lib/jquery/jquery-migrate-1.2.1.min.js [deleted file]
lib/jquery/jquery-migrate-1.4.0.js [new file with mode: 0644]
lib/jquery/jquery-migrate-1.4.0.min.js [new file with mode: 0644]
lib/jquery/plugins.php
lib/thirdpartylibs.xml

diff --git a/lib/jquery/jquery-migrate-1.2.1.js b/lib/jquery/jquery-migrate-1.2.1.js
deleted file mode 100644 (file)
index dbe8cbd..0000000
+++ /dev/null
@@ -1,521 +0,0 @@
-/*!\r
- * jQuery Migrate - v1.2.1 - 2013-05-08\r
- * https://github.com/jquery/jquery-migrate\r
- * Copyright 2005, 2013 jQuery Foundation, Inc. and other contributors; Licensed MIT\r
- */\r
-(function( jQuery, window, undefined ) {\r
-// See http://bugs.jquery.com/ticket/13335\r
-// "use strict";\r
-\r
-\r
-var warnedAbout = {};\r
-\r
-// List of warnings already given; public read only\r
-jQuery.migrateWarnings = [];\r
-\r
-// Set to true to prevent console output; migrateWarnings still maintained\r
-// jQuery.migrateMute = false;\r
-\r
-// Show a message on the console so devs know we're active\r
-if ( !jQuery.migrateMute && window.console && window.console.log ) {\r
-       window.console.log("JQMIGRATE: Logging is active");\r
-}\r
-\r
-// Set to false to disable traces that appear with warnings\r
-if ( jQuery.migrateTrace === undefined ) {\r
-       jQuery.migrateTrace = true;\r
-}\r
-\r
-// Forget any warnings we've already given; public\r
-jQuery.migrateReset = function() {\r
-       warnedAbout = {};\r
-       jQuery.migrateWarnings.length = 0;\r
-};\r
-\r
-function migrateWarn( msg) {\r
-       var console = window.console;\r
-       if ( !warnedAbout[ msg ] ) {\r
-               warnedAbout[ msg ] = true;\r
-               jQuery.migrateWarnings.push( msg );\r
-               if ( console && console.warn && !jQuery.migrateMute ) {\r
-                       console.warn( "JQMIGRATE: " + msg );\r
-                       if ( jQuery.migrateTrace && console.trace ) {\r
-                               console.trace();\r
-                       }\r
-               }\r
-       }\r
-}\r
-\r
-function migrateWarnProp( obj, prop, value, msg ) {\r
-       if ( Object.defineProperty ) {\r
-               // On ES5 browsers (non-oldIE), warn if the code tries to get prop;\r
-               // allow property to be overwritten in case some other plugin wants it\r
-               try {\r
-                       Object.defineProperty( obj, prop, {\r
-                               configurable: true,\r
-                               enumerable: true,\r
-                               get: function() {\r
-                                       migrateWarn( msg );\r
-                                       return value;\r
-                               },\r
-                               set: function( newValue ) {\r
-                                       migrateWarn( msg );\r
-                                       value = newValue;\r
-                               }\r
-                       });\r
-                       return;\r
-               } catch( err ) {\r
-                       // IE8 is a dope about Object.defineProperty, can't warn there\r
-               }\r
-       }\r
-\r
-       // Non-ES5 (or broken) browser; just set the property\r
-       jQuery._definePropertyBroken = true;\r
-       obj[ prop ] = value;\r
-}\r
-\r
-if ( document.compatMode === "BackCompat" ) {\r
-       // jQuery has never supported or tested Quirks Mode\r
-       migrateWarn( "jQuery is not compatible with Quirks Mode" );\r
-}\r
-\r
-\r
-var attrFn = jQuery( "<input/>", { size: 1 } ).attr("size") && jQuery.attrFn,\r
-       oldAttr = jQuery.attr,\r
-       valueAttrGet = jQuery.attrHooks.value && jQuery.attrHooks.value.get ||\r
-               function() { return null; },\r
-       valueAttrSet = jQuery.attrHooks.value && jQuery.attrHooks.value.set ||\r
-               function() { return undefined; },\r
-       rnoType = /^(?:input|button)$/i,\r
-       rnoAttrNodeType = /^[238]$/,\r
-       rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,\r
-       ruseDefault = /^(?:checked|selected)$/i;\r
-\r
-// jQuery.attrFn\r
-migrateWarnProp( jQuery, "attrFn", attrFn || {}, "jQuery.attrFn is deprecated" );\r
-\r
-jQuery.attr = function( elem, name, value, pass ) {\r
-       var lowerName = name.toLowerCase(),\r
-               nType = elem && elem.nodeType;\r
-\r
-       if ( pass ) {\r
-               // Since pass is used internally, we only warn for new jQuery\r
-               // versions where there isn't a pass arg in the formal params\r
-               if ( oldAttr.length < 4 ) {\r
-                       migrateWarn("jQuery.fn.attr( props, pass ) is deprecated");\r
-               }\r
-               if ( elem && !rnoAttrNodeType.test( nType ) &&\r
-                       (attrFn ? name in attrFn : jQuery.isFunction(jQuery.fn[name])) ) {\r
-                       return jQuery( elem )[ name ]( value );\r
-               }\r
-       }\r
-\r
-       // Warn if user tries to set `type`, since it breaks on IE 6/7/8; by checking\r
-       // for disconnected elements we don't warn on $( "<button>", { type: "button" } ).\r
-       if ( name === "type" && value !== undefined && rnoType.test( elem.nodeName ) && elem.parentNode ) {\r
-               migrateWarn("Can't change the 'type' of an input or button in IE 6/7/8");\r
-       }\r
-\r
-       // Restore boolHook for boolean property/attribute synchronization\r
-       if ( !jQuery.attrHooks[ lowerName ] && rboolean.test( lowerName ) ) {\r
-               jQuery.attrHooks[ lowerName ] = {\r
-                       get: function( elem, name ) {\r
-                               // Align boolean attributes with corresponding properties\r
-                               // Fall back to attribute presence where some booleans are not supported\r
-                               var attrNode,\r
-                                       property = jQuery.prop( elem, name );\r
-                               return property === true || typeof property !== "boolean" &&\r
-                                       ( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ?\r
-\r
-                                       name.toLowerCase() :\r
-                                       undefined;\r
-                       },\r
-                       set: function( elem, value, name ) {\r
-                               var propName;\r
-                               if ( value === false ) {\r
-                                       // Remove boolean attributes when set to false\r
-                                       jQuery.removeAttr( elem, name );\r
-                               } else {\r
-                                       // value is true since we know at this point it's type boolean and not false\r
-                                       // Set boolean attributes to the same name and set the DOM property\r
-                                       propName = jQuery.propFix[ name ] || name;\r
-                                       if ( propName in elem ) {\r
-                                               // Only set the IDL specifically if it already exists on the element\r
-                                               elem[ propName ] = true;\r
-                                       }\r
-\r
-                                       elem.setAttribute( name, name.toLowerCase() );\r
-                               }\r
-                               return name;\r
-                       }\r
-               };\r
-\r
-               // Warn only for attributes that can remain distinct from their properties post-1.9\r
-               if ( ruseDefault.test( lowerName ) ) {\r
-                       migrateWarn( "jQuery.fn.attr('" + lowerName + "') may use property instead of attribute" );\r
-               }\r
-       }\r
-\r
-       return oldAttr.call( jQuery, elem, name, value );\r
-};\r
-\r
-// attrHooks: value\r
-jQuery.attrHooks.value = {\r
-       get: function( elem, name ) {\r
-               var nodeName = ( elem.nodeName || "" ).toLowerCase();\r
-               if ( nodeName === "button" ) {\r
-                       return valueAttrGet.apply( this, arguments );\r
-               }\r
-               if ( nodeName !== "input" && nodeName !== "option" ) {\r
-                       migrateWarn("jQuery.fn.attr('value') no longer gets properties");\r
-               }\r
-               return name in elem ?\r
-                       elem.value :\r
-                       null;\r
-       },\r
-       set: function( elem, value ) {\r
-               var nodeName = ( elem.nodeName || "" ).toLowerCase();\r
-               if ( nodeName === "button" ) {\r
-                       return valueAttrSet.apply( this, arguments );\r
-               }\r
-               if ( nodeName !== "input" && nodeName !== "option" ) {\r
-                       migrateWarn("jQuery.fn.attr('value', val) no longer sets properties");\r
-               }\r
-               // Does not return so that setAttribute is also used\r
-               elem.value = value;\r
-       }\r
-};\r
-\r
-\r
-var matched, browser,\r
-       oldInit = jQuery.fn.init,\r
-       oldParseJSON = jQuery.parseJSON,\r
-       // Note: XSS check is done below after string is trimmed\r
-       rquickExpr = /^([^<]*)(<[\w\W]+>)([^>]*)$/;\r
-\r
-// $(html) "looks like html" rule change\r
-jQuery.fn.init = function( selector, context, rootjQuery ) {\r
-       var match;\r
-\r
-       if ( selector && typeof selector === "string" && !jQuery.isPlainObject( context ) &&\r
-                       (match = rquickExpr.exec( jQuery.trim( selector ) )) && match[ 0 ] ) {\r
-               // This is an HTML string according to the "old" rules; is it still?\r
-               if ( selector.charAt( 0 ) !== "<" ) {\r
-                       migrateWarn("$(html) HTML strings must start with '<' character");\r
-               }\r
-               if ( match[ 3 ] ) {\r
-                       migrateWarn("$(html) HTML text after last tag is ignored");\r
-               }\r
-               // Consistently reject any HTML-like string starting with a hash (#9521)\r
-               // Note that this may break jQuery 1.6.x code that otherwise would work.\r
-               if ( match[ 0 ].charAt( 0 ) === "#" ) {\r
-                       migrateWarn("HTML string cannot start with a '#' character");\r
-                       jQuery.error("JQMIGRATE: Invalid selector string (XSS)");\r
-               }\r
-               // Now process using loose rules; let pre-1.8 play too\r
-               if ( context && context.context ) {\r
-                       // jQuery object as context; parseHTML expects a DOM object\r
-                       context = context.context;\r
-               }\r
-               if ( jQuery.parseHTML ) {\r
-                       return oldInit.call( this, jQuery.parseHTML( match[ 2 ], context, true ),\r
-                                       context, rootjQuery );\r
-               }\r
-       }\r
-       return oldInit.apply( this, arguments );\r
-};\r
-jQuery.fn.init.prototype = jQuery.fn;\r
-\r
-// Let $.parseJSON(falsy_value) return null\r
-jQuery.parseJSON = function( json ) {\r
-       if ( !json && json !== null ) {\r
-               migrateWarn("jQuery.parseJSON requires a valid JSON string");\r
-               return null;\r
-       }\r
-       return oldParseJSON.apply( this, arguments );\r
-};\r
-\r
-jQuery.uaMatch = function( ua ) {\r
-       ua = ua.toLowerCase();\r
-\r
-       var match = /(chrome)[ \/]([\w.]+)/.exec( ua ) ||\r
-               /(webkit)[ \/]([\w.]+)/.exec( ua ) ||\r
-               /(opera)(?:.*version|)[ \/]([\w.]+)/.exec( ua ) ||\r
-               /(msie) ([\w.]+)/.exec( ua ) ||\r
-               ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec( ua ) ||\r
-               [];\r
-\r
-       return {\r
-               browser: match[ 1 ] || "",\r
-               version: match[ 2 ] || "0"\r
-       };\r
-};\r
-\r
-// Don't clobber any existing jQuery.browser in case it's different\r
-if ( !jQuery.browser ) {\r
-       matched = jQuery.uaMatch( navigator.userAgent );\r
-       browser = {};\r
-\r
-       if ( matched.browser ) {\r
-               browser[ matched.browser ] = true;\r
-               browser.version = matched.version;\r
-       }\r
-\r
-       // Chrome is Webkit, but Webkit is also Safari.\r
-       if ( browser.chrome ) {\r
-               browser.webkit = true;\r
-       } else if ( browser.webkit ) {\r
-               browser.safari = true;\r
-       }\r
-\r
-       jQuery.browser = browser;\r
-}\r
-\r
-// Warn if the code tries to get jQuery.browser\r
-migrateWarnProp( jQuery, "browser", jQuery.browser, "jQuery.browser is deprecated" );\r
-\r
-jQuery.sub = function() {\r
-       function jQuerySub( selector, context ) {\r
-               return new jQuerySub.fn.init( selector, context );\r
-       }\r
-       jQuery.extend( true, jQuerySub, this );\r
-       jQuerySub.superclass = this;\r
-       jQuerySub.fn = jQuerySub.prototype = this();\r
-       jQuerySub.fn.constructor = jQuerySub;\r
-       jQuerySub.sub = this.sub;\r
-       jQuerySub.fn.init = function init( selector, context ) {\r
-               if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) {\r
-                       context = jQuerySub( context );\r
-               }\r
-\r
-               return jQuery.fn.init.call( this, selector, context, rootjQuerySub );\r
-       };\r
-       jQuerySub.fn.init.prototype = jQuerySub.fn;\r
-       var rootjQuerySub = jQuerySub(document);\r
-       migrateWarn( "jQuery.sub() is deprecated" );\r
-       return jQuerySub;\r
-};\r
-\r
-\r
-// Ensure that $.ajax gets the new parseJSON defined in core.js\r
-jQuery.ajaxSetup({\r
-       converters: {\r
-               "text json": jQuery.parseJSON\r
-       }\r
-});\r
-\r
-\r
-var oldFnData = jQuery.fn.data;\r
-\r
-jQuery.fn.data = function( name ) {\r
-       var ret, evt,\r
-               elem = this[0];\r
-\r
-       // Handles 1.7 which has this behavior and 1.8 which doesn't\r
-       if ( elem && name === "events" && arguments.length === 1 ) {\r
-               ret = jQuery.data( elem, name );\r
-               evt = jQuery._data( elem, name );\r
-               if ( ( ret === undefined || ret === evt ) && evt !== undefined ) {\r
-                       migrateWarn("Use of jQuery.fn.data('events') is deprecated");\r
-                       return evt;\r
-               }\r
-       }\r
-       return oldFnData.apply( this, arguments );\r
-};\r
-\r
-\r
-var rscriptType = /\/(java|ecma)script/i,\r
-       oldSelf = jQuery.fn.andSelf || jQuery.fn.addBack;\r
-\r
-jQuery.fn.andSelf = function() {\r
-       migrateWarn("jQuery.fn.andSelf() replaced by jQuery.fn.addBack()");\r
-       return oldSelf.apply( this, arguments );\r
-};\r
-\r
-// Since jQuery.clean is used internally on older versions, we only shim if it's missing\r
-if ( !jQuery.clean ) {\r
-       jQuery.clean = function( elems, context, fragment, scripts ) {\r
-               // Set context per 1.8 logic\r
-               context = context || document;\r
-               context = !context.nodeType && context[0] || context;\r
-               context = context.ownerDocument || context;\r
-\r
-               migrateWarn("jQuery.clean() is deprecated");\r
-\r
-               var i, elem, handleScript, jsTags,\r
-                       ret = [];\r
-\r
-               jQuery.merge( ret, jQuery.buildFragment( elems, context ).childNodes );\r
-\r
-               // Complex logic lifted directly from jQuery 1.8\r
-               if ( fragment ) {\r
-                       // Special handling of each script element\r
-                       handleScript = function( elem ) {\r
-                               // Check if we consider it executable\r
-                               if ( !elem.type || rscriptType.test( elem.type ) ) {\r
-                                       // Detach the script and store it in the scripts array (if provided) or the fragment\r
-                                       // Return truthy to indicate that it has been handled\r
-                                       return scripts ?\r
-                                               scripts.push( elem.parentNode ? elem.parentNode.removeChild( elem ) : elem ) :\r
-                                               fragment.appendChild( elem );\r
-                               }\r
-                       };\r
-\r
-                       for ( i = 0; (elem = ret[i]) != null; i++ ) {\r
-                               // Check if we're done after handling an executable script\r
-                               if ( !( jQuery.nodeName( elem, "script" ) && handleScript( elem ) ) ) {\r
-                                       // Append to fragment and handle embedded scripts\r
-                                       fragment.appendChild( elem );\r
-                                       if ( typeof elem.getElementsByTagName !== "undefined" ) {\r
-                                               // handleScript alters the DOM, so use jQuery.merge to ensure snapshot iteration\r
-                                               jsTags = jQuery.grep( jQuery.merge( [], elem.getElementsByTagName("script") ), handleScript );\r
-\r
-                                               // Splice the scripts into ret after their former ancestor and advance our index beyond them\r
-                                               ret.splice.apply( ret, [i + 1, 0].concat( jsTags ) );\r
-                                               i += jsTags.length;\r
-                                       }\r
-                               }\r
-                       }\r
-               }\r
-\r
-               return ret;\r
-       };\r
-}\r
-\r
-var eventAdd = jQuery.event.add,\r
-       eventRemove = jQuery.event.remove,\r
-       eventTrigger = jQuery.event.trigger,\r
-       oldToggle = jQuery.fn.toggle,\r
-       oldLive = jQuery.fn.live,\r
-       oldDie = jQuery.fn.die,\r
-       ajaxEvents = "ajaxStart|ajaxStop|ajaxSend|ajaxComplete|ajaxError|ajaxSuccess",\r
-       rajaxEvent = new RegExp( "\\b(?:" + ajaxEvents + ")\\b" ),\r
-       rhoverHack = /(?:^|\s)hover(\.\S+|)\b/,\r
-       hoverHack = function( events ) {\r
-               if ( typeof( events ) !== "string" || jQuery.event.special.hover ) {\r
-                       return events;\r
-               }\r
-               if ( rhoverHack.test( events ) ) {\r
-                       migrateWarn("'hover' pseudo-event is deprecated, use 'mouseenter mouseleave'");\r
-               }\r
-               return events && events.replace( rhoverHack, "mouseenter$1 mouseleave$1" );\r
-       };\r
-\r
-// Event props removed in 1.9, put them back if needed; no practical way to warn them\r
-if ( jQuery.event.props && jQuery.event.props[ 0 ] !== "attrChange" ) {\r
-       jQuery.event.props.unshift( "attrChange", "attrName", "relatedNode", "srcElement" );\r
-}\r
-\r
-// Undocumented jQuery.event.handle was "deprecated" in jQuery 1.7\r
-if ( jQuery.event.dispatch ) {\r
-       migrateWarnProp( jQuery.event, "handle", jQuery.event.dispatch, "jQuery.event.handle is undocumented and deprecated" );\r
-}\r
-\r
-// Support for 'hover' pseudo-event and ajax event warnings\r
-jQuery.event.add = function( elem, types, handler, data, selector ){\r
-       if ( elem !== document && rajaxEvent.test( types ) ) {\r
-               migrateWarn( "AJAX events should be attached to document: " + types );\r
-       }\r
-       eventAdd.call( this, elem, hoverHack( types || "" ), handler, data, selector );\r
-};\r
-jQuery.event.remove = function( elem, types, handler, selector, mappedTypes ){\r
-       eventRemove.call( this, elem, hoverHack( types ) || "", handler, selector, mappedTypes );\r
-};\r
-\r
-jQuery.fn.error = function() {\r
-       var args = Array.prototype.slice.call( arguments, 0);\r
-       migrateWarn("jQuery.fn.error() is deprecated");\r
-       args.splice( 0, 0, "error" );\r
-       if ( arguments.length ) {\r
-               return this.bind.apply( this, args );\r
-       }\r
-       // error event should not bubble to window, although it does pre-1.7\r
-       this.triggerHandler.apply( this, args );\r
-       return this;\r
-};\r
-\r
-jQuery.fn.toggle = function( fn, fn2 ) {\r
-\r
-       // Don't mess with animation or css toggles\r
-       if ( !jQuery.isFunction( fn ) || !jQuery.isFunction( fn2 ) ) {\r
-               return oldToggle.apply( this, arguments );\r
-       }\r
-       migrateWarn("jQuery.fn.toggle(handler, handler...) is deprecated");\r
-\r
-       // Save reference to arguments for access in closure\r
-       var args = arguments,\r
-               guid = fn.guid || jQuery.guid++,\r
-               i = 0,\r
-               toggler = function( event ) {\r
-                       // Figure out which function to execute\r
-                       var lastToggle = ( jQuery._data( this, "lastToggle" + fn.guid ) || 0 ) % i;\r
-                       jQuery._data( this, "lastToggle" + fn.guid, lastToggle + 1 );\r
-\r
-                       // Make sure that clicks stop\r
-                       event.preventDefault();\r
-\r
-                       // and execute the function\r
-                       return args[ lastToggle ].apply( this, arguments ) || false;\r
-               };\r
-\r
-       // link all the functions, so any of them can unbind this click handler\r
-       toggler.guid = guid;\r
-       while ( i < args.length ) {\r
-               args[ i++ ].guid = guid;\r
-       }\r
-\r
-       return this.click( toggler );\r
-};\r
-\r
-jQuery.fn.live = function( types, data, fn ) {\r
-       migrateWarn("jQuery.fn.live() is deprecated");\r
-       if ( oldLive ) {\r
-               return oldLive.apply( this, arguments );\r
-       }\r
-       jQuery( this.context ).on( types, this.selector, data, fn );\r
-       return this;\r
-};\r
-\r
-jQuery.fn.die = function( types, fn ) {\r
-       migrateWarn("jQuery.fn.die() is deprecated");\r
-       if ( oldDie ) {\r
-               return oldDie.apply( this, arguments );\r
-       }\r
-       jQuery( this.context ).off( types, this.selector || "**", fn );\r
-       return this;\r
-};\r
-\r
-// Turn global events into document-triggered events\r
-jQuery.event.trigger = function( event, data, elem, onlyHandlers  ){\r
-       if ( !elem && !rajaxEvent.test( event ) ) {\r
-               migrateWarn( "Global events are undocumented and deprecated" );\r
-       }\r
-       return eventTrigger.call( this,  event, data, elem || document, onlyHandlers  );\r
-};\r
-jQuery.each( ajaxEvents.split("|"),\r
-       function( _, name ) {\r
-               jQuery.event.special[ name ] = {\r
-                       setup: function() {\r
-                               var elem = this;\r
-\r
-                               // The document needs no shimming; must be !== for oldIE\r
-                               if ( elem !== document ) {\r
-                                       jQuery.event.add( document, name + "." + jQuery.guid, function() {\r
-                                               jQuery.event.trigger( name, null, elem, true );\r
-                                       });\r
-                                       jQuery._data( this, name, jQuery.guid++ );\r
-                               }\r
-                               return false;\r
-                       },\r
-                       teardown: function() {\r
-                               if ( this !== document ) {\r
-                                       jQuery.event.remove( document, name + "." + jQuery._data( this, name ) );\r
-                               }\r
-                               return false;\r
-                       }\r
-               };\r
-       }\r
-);\r
-\r
-\r
-})( jQuery, window );\r
diff --git a/lib/jquery/jquery-migrate-1.2.1.min.js b/lib/jquery/jquery-migrate-1.2.1.min.js
deleted file mode 100644 (file)
index 8b7ec47..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! jQuery Migrate v1.2.1 | (c) 2005, 2013 jQuery Foundation, Inc. and other contributors | jquery.org/license */\r
-jQuery.migrateMute===void 0&&(jQuery.migrateMute=!0),function(e,t,n){function r(n){var r=t.console;i[n]||(i[n]=!0,e.migrateWarnings.push(n),r&&r.warn&&!e.migrateMute&&(r.warn("JQMIGRATE: "+n),e.migrateTrace&&r.trace&&r.trace()))}function a(t,a,i,o){if(Object.defineProperty)try{return Object.defineProperty(t,a,{configurable:!0,enumerable:!0,get:function(){return r(o),i},set:function(e){r(o),i=e}}),n}catch(s){}e._definePropertyBroken=!0,t[a]=i}var i={};e.migrateWarnings=[],!e.migrateMute&&t.console&&t.console.log&&t.console.log("JQMIGRATE: Logging is active"),e.migrateTrace===n&&(e.migrateTrace=!0),e.migrateReset=function(){i={},e.migrateWarnings.length=0},"BackCompat"===document.compatMode&&r("jQuery is not compatible with Quirks Mode");var o=e("<input/>",{size:1}).attr("size")&&e.attrFn,s=e.attr,u=e.attrHooks.value&&e.attrHooks.value.get||function(){return null},c=e.attrHooks.value&&e.attrHooks.value.set||function(){return n},l=/^(?:input|button)$/i,d=/^[238]$/,p=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,f=/^(?:checked|selected)$/i;a(e,"attrFn",o||{},"jQuery.attrFn is deprecated"),e.attr=function(t,a,i,u){var c=a.toLowerCase(),g=t&&t.nodeType;return u&&(4>s.length&&r("jQuery.fn.attr( props, pass ) is deprecated"),t&&!d.test(g)&&(o?a in o:e.isFunction(e.fn[a])))?e(t)[a](i):("type"===a&&i!==n&&l.test(t.nodeName)&&t.parentNode&&r("Can't change the 'type' of an input or button in IE 6/7/8"),!e.attrHooks[c]&&p.test(c)&&(e.attrHooks[c]={get:function(t,r){var a,i=e.prop(t,r);return i===!0||"boolean"!=typeof i&&(a=t.getAttributeNode(r))&&a.nodeValue!==!1?r.toLowerCase():n},set:function(t,n,r){var a;return n===!1?e.removeAttr(t,r):(a=e.propFix[r]||r,a in t&&(t[a]=!0),t.setAttribute(r,r.toLowerCase())),r}},f.test(c)&&r("jQuery.fn.attr('"+c+"') may use property instead of attribute")),s.call(e,t,a,i))},e.attrHooks.value={get:function(e,t){var n=(e.nodeName||"").toLowerCase();return"button"===n?u.apply(this,arguments):("input"!==n&&"option"!==n&&r("jQuery.fn.attr('value') no longer gets properties"),t in e?e.value:null)},set:function(e,t){var a=(e.nodeName||"").toLowerCase();return"button"===a?c.apply(this,arguments):("input"!==a&&"option"!==a&&r("jQuery.fn.attr('value', val) no longer sets properties"),e.value=t,n)}};var g,h,v=e.fn.init,m=e.parseJSON,y=/^([^<]*)(<[\w\W]+>)([^>]*)$/;e.fn.init=function(t,n,a){var i;return t&&"string"==typeof t&&!e.isPlainObject(n)&&(i=y.exec(e.trim(t)))&&i[0]&&("<"!==t.charAt(0)&&r("$(html) HTML strings must start with '<' character"),i[3]&&r("$(html) HTML text after last tag is ignored"),"#"===i[0].charAt(0)&&(r("HTML string cannot start with a '#' character"),e.error("JQMIGRATE: Invalid selector string (XSS)")),n&&n.context&&(n=n.context),e.parseHTML)?v.call(this,e.parseHTML(i[2],n,!0),n,a):v.apply(this,arguments)},e.fn.init.prototype=e.fn,e.parseJSON=function(e){return e||null===e?m.apply(this,arguments):(r("jQuery.parseJSON requires a valid JSON string"),null)},e.uaMatch=function(e){e=e.toLowerCase();var t=/(chrome)[ \/]([\w.]+)/.exec(e)||/(webkit)[ \/]([\w.]+)/.exec(e)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(e)||/(msie) ([\w.]+)/.exec(e)||0>e.indexOf("compatible")&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(e)||[];return{browser:t[1]||"",version:t[2]||"0"}},e.browser||(g=e.uaMatch(navigator.userAgent),h={},g.browser&&(h[g.browser]=!0,h.version=g.version),h.chrome?h.webkit=!0:h.webkit&&(h.safari=!0),e.browser=h),a(e,"browser",e.browser,"jQuery.browser is deprecated"),e.sub=function(){function t(e,n){return new t.fn.init(e,n)}e.extend(!0,t,this),t.superclass=this,t.fn=t.prototype=this(),t.fn.constructor=t,t.sub=this.sub,t.fn.init=function(r,a){return a&&a instanceof e&&!(a instanceof t)&&(a=t(a)),e.fn.init.call(this,r,a,n)},t.fn.init.prototype=t.fn;var n=t(document);return r("jQuery.sub() is deprecated"),t},e.ajaxSetup({converters:{"text json":e.parseJSON}});var b=e.fn.data;e.fn.data=function(t){var a,i,o=this[0];return!o||"events"!==t||1!==arguments.length||(a=e.data(o,t),i=e._data(o,t),a!==n&&a!==i||i===n)?b.apply(this,arguments):(r("Use of jQuery.fn.data('events') is deprecated"),i)};var j=/\/(java|ecma)script/i,w=e.fn.andSelf||e.fn.addBack;e.fn.andSelf=function(){return r("jQuery.fn.andSelf() replaced by jQuery.fn.addBack()"),w.apply(this,arguments)},e.clean||(e.clean=function(t,a,i,o){a=a||document,a=!a.nodeType&&a[0]||a,a=a.ownerDocument||a,r("jQuery.clean() is deprecated");var s,u,c,l,d=[];if(e.merge(d,e.buildFragment(t,a).childNodes),i)for(c=function(e){return!e.type||j.test(e.type)?o?o.push(e.parentNode?e.parentNode.removeChild(e):e):i.appendChild(e):n},s=0;null!=(u=d[s]);s++)e.nodeName(u,"script")&&c(u)||(i.appendChild(u),u.getElementsByTagName!==n&&(l=e.grep(e.merge([],u.getElementsByTagName("script")),c),d.splice.apply(d,[s+1,0].concat(l)),s+=l.length));return d});var Q=e.event.add,x=e.event.remove,k=e.event.trigger,N=e.fn.toggle,T=e.fn.live,M=e.fn.die,S="ajaxStart|ajaxStop|ajaxSend|ajaxComplete|ajaxError|ajaxSuccess",C=RegExp("\\b(?:"+S+")\\b"),H=/(?:^|\s)hover(\.\S+|)\b/,A=function(t){return"string"!=typeof t||e.event.special.hover?t:(H.test(t)&&r("'hover' pseudo-event is deprecated, use 'mouseenter mouseleave'"),t&&t.replace(H,"mouseenter$1 mouseleave$1"))};e.event.props&&"attrChange"!==e.event.props[0]&&e.event.props.unshift("attrChange","attrName","relatedNode","srcElement"),e.event.dispatch&&a(e.event,"handle",e.event.dispatch,"jQuery.event.handle is undocumented and deprecated"),e.event.add=function(e,t,n,a,i){e!==document&&C.test(t)&&r("AJAX events should be attached to document: "+t),Q.call(this,e,A(t||""),n,a,i)},e.event.remove=function(e,t,n,r,a){x.call(this,e,A(t)||"",n,r,a)},e.fn.error=function(){var e=Array.prototype.slice.call(arguments,0);return r("jQuery.fn.error() is deprecated"),e.splice(0,0,"error"),arguments.length?this.bind.apply(this,e):(this.triggerHandler.apply(this,e),this)},e.fn.toggle=function(t,n){if(!e.isFunction(t)||!e.isFunction(n))return N.apply(this,arguments);r("jQuery.fn.toggle(handler, handler...) is deprecated");var a=arguments,i=t.guid||e.guid++,o=0,s=function(n){var r=(e._data(this,"lastToggle"+t.guid)||0)%o;return e._data(this,"lastToggle"+t.guid,r+1),n.preventDefault(),a[r].apply(this,arguments)||!1};for(s.guid=i;a.length>o;)a[o++].guid=i;return this.click(s)},e.fn.live=function(t,n,a){return r("jQuery.fn.live() is deprecated"),T?T.apply(this,arguments):(e(this.context).on(t,this.selector,n,a),this)},e.fn.die=function(t,n){return r("jQuery.fn.die() is deprecated"),M?M.apply(this,arguments):(e(this.context).off(t,this.selector||"**",n),this)},e.event.trigger=function(e,t,n,a){return n||C.test(e)||r("Global events are undocumented and deprecated"),k.call(this,e,t,n||document,a)},e.each(S.split("|"),function(t,n){e.event.special[n]={setup:function(){var t=this;return t!==document&&(e.event.add(document,n+"."+e.guid,function(){e.event.trigger(n,null,t,!0)}),e._data(this,n,e.guid++)),!1},teardown:function(){return this!==document&&e.event.remove(document,n+"."+e._data(this,n)),!1}}})}(jQuery,window);
\ No newline at end of file
diff --git a/lib/jquery/jquery-migrate-1.4.0.js b/lib/jquery/jquery-migrate-1.4.0.js
new file mode 100644 (file)
index 0000000..2e3725c
--- /dev/null
@@ -0,0 +1,717 @@
+/*!\r
+ * jQuery Migrate - v1.4.0 - 2016-02-26\r
+ * Copyright jQuery Foundation and other contributors\r
+ */\r
+(function( jQuery, window, undefined ) {\r
+// See http://bugs.jquery.com/ticket/13335\r
+// "use strict";\r
+\r
+\r
+       jQuery.migrateVersion = "1.4.0";\r
+\r
+\r
+       var warnedAbout = {};\r
+\r
+// List of warnings already given; public read only\r
+       jQuery.migrateWarnings = [];\r
+\r
+// Set to true to prevent console output; migrateWarnings still maintained\r
+// jQuery.migrateMute = false;\r
+\r
+// Show a message on the console so devs know we're active\r
+       if ( window.console && window.console.log ) {\r
+               window.console.log( "JQMIGRATE: Migrate is installed" +\r
+                               ( jQuery.migrateMute ? "" : " with logging active" ) +\r
+                               ", version " + jQuery.migrateVersion );\r
+       }\r
+\r
+// Set to false to disable traces that appear with warnings\r
+       if ( jQuery.migrateTrace === undefined ) {\r
+               jQuery.migrateTrace = true;\r
+       }\r
+\r
+// Forget any warnings we've already given; public\r
+       jQuery.migrateReset = function() {\r
+               warnedAbout = {};\r
+               jQuery.migrateWarnings.length = 0;\r
+       };\r
+\r
+       function migrateWarn( msg) {\r
+               var console = window.console;\r
+               if ( !warnedAbout[ msg ] ) {\r
+                       warnedAbout[ msg ] = true;\r
+                       jQuery.migrateWarnings.push( msg );\r
+                       if ( console && console.warn && !jQuery.migrateMute ) {\r
+                               console.warn( "JQMIGRATE: " + msg );\r
+                               if ( jQuery.migrateTrace && console.trace ) {\r
+                                       console.trace();\r
+                               }\r
+                       }\r
+               }\r
+       }\r
+\r
+       function migrateWarnProp( obj, prop, value, msg ) {\r
+               if ( Object.defineProperty ) {\r
+                       // On ES5 browsers (non-oldIE), warn if the code tries to get prop;\r
+                       // allow property to be overwritten in case some other plugin wants it\r
+                       try {\r
+                               Object.defineProperty( obj, prop, {\r
+                                       configurable: true,\r
+                                       enumerable: true,\r
+                                       get: function() {\r
+                                               migrateWarn( msg );\r
+                                               return value;\r
+                                       },\r
+                                       set: function( newValue ) {\r
+                                               migrateWarn( msg );\r
+                                               value = newValue;\r
+                                       }\r
+                               });\r
+                               return;\r
+                       } catch( err ) {\r
+                               // IE8 is a dope about Object.defineProperty, can't warn there\r
+                       }\r
+               }\r
+\r
+               // Non-ES5 (or broken) browser; just set the property\r
+               jQuery._definePropertyBroken = true;\r
+               obj[ prop ] = value;\r
+       }\r
+\r
+       if ( document.compatMode === "BackCompat" ) {\r
+               // jQuery has never supported or tested Quirks Mode\r
+               migrateWarn( "jQuery is not compatible with Quirks Mode" );\r
+       }\r
+\r
+\r
+       var attrFn = jQuery( "<input/>", { size: 1 } ).attr("size") && jQuery.attrFn,\r
+                       oldAttr = jQuery.attr,\r
+                       valueAttrGet = jQuery.attrHooks.value && jQuery.attrHooks.value.get ||\r
+                                       function() { return null; },\r
+                       valueAttrSet = jQuery.attrHooks.value && jQuery.attrHooks.value.set ||\r
+                                       function() { return undefined; },\r
+                       rnoType = /^(?:input|button)$/i,\r
+                       rnoAttrNodeType = /^[238]$/,\r
+                       rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,\r
+                       ruseDefault = /^(?:checked|selected)$/i;\r
+\r
+// jQuery.attrFn\r
+       migrateWarnProp( jQuery, "attrFn", attrFn || {}, "jQuery.attrFn is deprecated" );\r
+\r
+       jQuery.attr = function( elem, name, value, pass ) {\r
+               var lowerName = name.toLowerCase(),\r
+                               nType = elem && elem.nodeType;\r
+\r
+               if ( pass ) {\r
+                       // Since pass is used internally, we only warn for new jQuery\r
+                       // versions where there isn't a pass arg in the formal params\r
+                       if ( oldAttr.length < 4 ) {\r
+                               migrateWarn("jQuery.fn.attr( props, pass ) is deprecated");\r
+                       }\r
+                       if ( elem && !rnoAttrNodeType.test( nType ) &&\r
+                                       (attrFn ? name in attrFn : jQuery.isFunction(jQuery.fn[name])) ) {\r
+                               return jQuery( elem )[ name ]( value );\r
+                       }\r
+               }\r
+\r
+               // Warn if user tries to set `type`, since it breaks on IE 6/7/8; by checking\r
+               // for disconnected elements we don't warn on $( "<button>", { type: "button" } ).\r
+               if ( name === "type" && value !== undefined && rnoType.test( elem.nodeName ) && elem.parentNode ) {\r
+                       migrateWarn("Can't change the 'type' of an input or button in IE 6/7/8");\r
+               }\r
+\r
+               // Restore boolHook for boolean property/attribute synchronization\r
+               if ( !jQuery.attrHooks[ lowerName ] && rboolean.test( lowerName ) ) {\r
+                       jQuery.attrHooks[ lowerName ] = {\r
+                               get: function( elem, name ) {\r
+                                       // Align boolean attributes with corresponding properties\r
+                                       // Fall back to attribute presence where some booleans are not supported\r
+                                       var attrNode,\r
+                                                       property = jQuery.prop( elem, name );\r
+                                       return property === true || typeof property !== "boolean" &&\r
+                                       ( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ?\r
+\r
+                                                       name.toLowerCase() :\r
+                                                       undefined;\r
+                               },\r
+                               set: function( elem, value, name ) {\r
+                                       var propName;\r
+                                       if ( value === false ) {\r
+                                               // Remove boolean attributes when set to false\r
+                                               jQuery.removeAttr( elem, name );\r
+                                       } else {\r
+                                               // value is true since we know at this point it's type boolean and not false\r
+                                               // Set boolean attributes to the same name and set the DOM property\r
+                                               propName = jQuery.propFix[ name ] || name;\r
+                                               if ( propName in elem ) {\r
+                                                       // Only set the IDL specifically if it already exists on the element\r
+                                                       elem[ propName ] = true;\r
+                                               }\r
+\r
+                                               elem.setAttribute( name, name.toLowerCase() );\r
+                                       }\r
+                                       return name;\r
+                               }\r
+                       };\r
+\r
+                       // Warn only for attributes that can remain distinct from their properties post-1.9\r
+                       if ( ruseDefault.test( lowerName ) ) {\r
+                               migrateWarn( "jQuery.fn.attr('" + lowerName + "') might use property instead of attribute" );\r
+                       }\r
+               }\r
+\r
+               return oldAttr.call( jQuery, elem, name, value );\r
+       };\r
+\r
+// attrHooks: value\r
+       jQuery.attrHooks.value = {\r
+               get: function( elem, name ) {\r
+                       var nodeName = ( elem.nodeName || "" ).toLowerCase();\r
+                       if ( nodeName === "button" ) {\r
+                               return valueAttrGet.apply( this, arguments );\r
+                       }\r
+                       if ( nodeName !== "input" && nodeName !== "option" ) {\r
+                               migrateWarn("jQuery.fn.attr('value') no longer gets properties");\r
+                       }\r
+                       return name in elem ?\r
+                                       elem.value :\r
+                                       null;\r
+               },\r
+               set: function( elem, value ) {\r
+                       var nodeName = ( elem.nodeName || "" ).toLowerCase();\r
+                       if ( nodeName === "button" ) {\r
+                               return valueAttrSet.apply( this, arguments );\r
+                       }\r
+                       if ( nodeName !== "input" && nodeName !== "option" ) {\r
+                               migrateWarn("jQuery.fn.attr('value', val) no longer sets properties");\r
+                       }\r
+                       // Does not return so that setAttribute is also used\r
+                       elem.value = value;\r
+               }\r
+       };\r
+\r
+\r
+       var matched, browser,\r
+                       oldInit = jQuery.fn.init,\r
+                       oldParseJSON = jQuery.parseJSON,\r
+                       rspaceAngle = /^\s*</,\r
+                       rattrHash = /\[\s*\w+\s*[~|^$*]?=\s*(?![\s'"])[^#\]]*#/,\r
+       // Note: XSS check is done below after string is trimmed\r
+                       rquickExpr = /^([^<]*)(<[\w\W]+>)([^>]*)$/;\r
+\r
+// $(html) "looks like html" rule change\r
+       jQuery.fn.init = function( selector, context, rootjQuery ) {\r
+               var match, ret;\r
+\r
+               if ( selector && typeof selector === "string" && !jQuery.isPlainObject( context ) &&\r
+                               (match = rquickExpr.exec( jQuery.trim( selector ) )) && match[ 0 ] ) {\r
+                       // This is an HTML string according to the "old" rules; is it still?\r
+                       if ( !rspaceAngle.test( selector ) ) {\r
+                               migrateWarn("$(html) HTML strings must start with '<' character");\r
+                       }\r
+                       if ( match[ 3 ] ) {\r
+                               migrateWarn("$(html) HTML text after last tag is ignored");\r
+                       }\r
+\r
+                       // Consistently reject any HTML-like string starting with a hash (#9521)\r
+                       // Note that this may break jQuery 1.6.x code that otherwise would work.\r
+                       if ( match[ 0 ].charAt( 0 ) === "#" ) {\r
+                               migrateWarn("HTML string cannot start with a '#' character");\r
+                               jQuery.error("JQMIGRATE: Invalid selector string (XSS)");\r
+                       }\r
+                       // Now process using loose rules; let pre-1.8 play too\r
+                       if ( context && context.context ) {\r
+                               // jQuery object as context; parseHTML expects a DOM object\r
+                               context = context.context;\r
+                       }\r
+                       if ( jQuery.parseHTML ) {\r
+                               return oldInit.call( this,\r
+                                               jQuery.parseHTML( match[ 2 ], context && context.ownerDocument ||\r
+                                                               context || document, true ), context, rootjQuery );\r
+                       }\r
+               }\r
+\r
+               if ( selector === "#" ) {\r
+\r
+                       // jQuery( "#" ) is a bogus ID selector, but it returned an empty set before jQuery 3.0\r
+                       migrateWarn( "jQuery( '#' ) is not a valid selector" );\r
+                       selector = [];\r
+\r
+               } else if ( rattrHash.test( selector ) ) {\r
+\r
+                       // The nonstandard and undocumented unquoted-hash was removed in jQuery 1.12.0\r
+                       // Note that this doesn't actually fix the selector due to potential false positives\r
+                       migrateWarn( "Attribute selectors with '#' must be quoted: '" + selector + "'" );\r
+               }\r
+\r
+               ret = oldInit.apply( this, arguments );\r
+\r
+               // Fill in selector and context properties so .live() works\r
+               if ( selector && selector.selector !== undefined ) {\r
+                       // A jQuery object, copy its properties\r
+                       ret.selector = selector.selector;\r
+                       ret.context = selector.context;\r
+\r
+               } else {\r
+                       ret.selector = typeof selector === "string" ? selector : "";\r
+                       if ( selector ) {\r
+                               ret.context = selector.nodeType? selector : context || document;\r
+                       }\r
+               }\r
+\r
+               return ret;\r
+       };\r
+       jQuery.fn.init.prototype = jQuery.fn;\r
+\r
+// Let $.parseJSON(falsy_value) return null\r
+       jQuery.parseJSON = function( json ) {\r
+               if ( !json ) {\r
+                       migrateWarn("jQuery.parseJSON requires a valid JSON string");\r
+                       return null;\r
+               }\r
+               return oldParseJSON.apply( this, arguments );\r
+       };\r
+\r
+       jQuery.uaMatch = function( ua ) {\r
+               ua = ua.toLowerCase();\r
+\r
+               var match = /(chrome)[ \/]([\w.]+)/.exec( ua ) ||\r
+                               /(webkit)[ \/]([\w.]+)/.exec( ua ) ||\r
+                               /(opera)(?:.*version|)[ \/]([\w.]+)/.exec( ua ) ||\r
+                               /(msie) ([\w.]+)/.exec( ua ) ||\r
+                               ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec( ua ) ||\r
+                               [];\r
+\r
+               return {\r
+                       browser: match[ 1 ] || "",\r
+                       version: match[ 2 ] || "0"\r
+               };\r
+       };\r
+\r
+// Don't clobber any existing jQuery.browser in case it's different\r
+       if ( !jQuery.browser ) {\r
+               matched = jQuery.uaMatch( navigator.userAgent );\r
+               browser = {};\r
+\r
+               if ( matched.browser ) {\r
+                       browser[ matched.browser ] = true;\r
+                       browser.version = matched.version;\r
+               }\r
+\r
+               // Chrome is Webkit, but Webkit is also Safari.\r
+               if ( browser.chrome ) {\r
+                       browser.webkit = true;\r
+               } else if ( browser.webkit ) {\r
+                       browser.safari = true;\r
+               }\r
+\r
+               jQuery.browser = browser;\r
+       }\r
+\r
+// Warn if the code tries to get jQuery.browser\r
+       migrateWarnProp( jQuery, "browser", jQuery.browser, "jQuery.browser is deprecated" );\r
+\r
+// jQuery.boxModel deprecated in 1.3, jQuery.support.boxModel deprecated in 1.7\r
+       jQuery.boxModel = jQuery.support.boxModel = (document.compatMode === "CSS1Compat");\r
+       migrateWarnProp( jQuery, "boxModel", jQuery.boxModel, "jQuery.boxModel is deprecated" );\r
+       migrateWarnProp( jQuery.support, "boxModel", jQuery.support.boxModel, "jQuery.support.boxModel is deprecated" );\r
+\r
+       jQuery.sub = function() {\r
+               function jQuerySub( selector, context ) {\r
+                       return new jQuerySub.fn.init( selector, context );\r
+               }\r
+               jQuery.extend( true, jQuerySub, this );\r
+               jQuerySub.superclass = this;\r
+               jQuerySub.fn = jQuerySub.prototype = this();\r
+               jQuerySub.fn.constructor = jQuerySub;\r
+               jQuerySub.sub = this.sub;\r
+               jQuerySub.fn.init = function init( selector, context ) {\r
+                       var instance = jQuery.fn.init.call( this, selector, context, rootjQuerySub );\r
+                       return instance instanceof jQuerySub ?\r
+                                       instance :\r
+                                       jQuerySub( instance );\r
+               };\r
+               jQuerySub.fn.init.prototype = jQuerySub.fn;\r
+               var rootjQuerySub = jQuerySub(document);\r
+               migrateWarn( "jQuery.sub() is deprecated" );\r
+               return jQuerySub;\r
+       };\r
+\r
+// The number of elements contained in the matched element set\r
+       jQuery.fn.size = function() {\r
+               migrateWarn( "jQuery.fn.size() is deprecated; use the .length property" );\r
+               return this.length;\r
+       };\r
+\r
+\r
+       var internalSwapCall = false;\r
+\r
+// If this version of jQuery has .swap(), don't false-alarm on internal uses\r
+       if ( jQuery.swap ) {\r
+               jQuery.each( [ "height", "width", "reliableMarginRight" ], function( _, name ) {\r
+                       var oldHook = jQuery.cssHooks[ name ] && jQuery.cssHooks[ name ].get;\r
+\r
+                       if ( oldHook ) {\r
+                               jQuery.cssHooks[ name ].get = function() {\r
+                                       var ret;\r
+\r
+                                       internalSwapCall = true;\r
+                                       ret = oldHook.apply( this, arguments );\r
+                                       internalSwapCall = false;\r
+                                       return ret;\r
+                               };\r
+                       }\r
+               });\r
+       }\r
+\r
+       jQuery.swap = function( elem, options, callback, args ) {\r
+               var ret, name,\r
+                               old = {};\r
+\r
+               if ( !internalSwapCall ) {\r
+                       migrateWarn( "jQuery.swap() is undocumented and deprecated" );\r
+               }\r
+\r
+               // Remember the old values, and insert the new ones\r
+               for ( name in options ) {\r
+                       old[ name ] = elem.style[ name ];\r
+                       elem.style[ name ] = options[ name ];\r
+               }\r
+\r
+               ret = callback.apply( elem, args || [] );\r
+\r
+               // Revert the old values\r
+               for ( name in options ) {\r
+                       elem.style[ name ] = old[ name ];\r
+               }\r
+\r
+               return ret;\r
+       };\r
+\r
+\r
+// Ensure that $.ajax gets the new parseJSON defined in core.js\r
+       jQuery.ajaxSetup({\r
+               converters: {\r
+                       "text json": jQuery.parseJSON\r
+               }\r
+       });\r
+\r
+\r
+       var oldFnData = jQuery.fn.data;\r
+\r
+       jQuery.fn.data = function( name ) {\r
+               var ret, evt,\r
+                               elem = this[0];\r
+\r
+               // Handles 1.7 which has this behavior and 1.8 which doesn't\r
+               if ( elem && name === "events" && arguments.length === 1 ) {\r
+                       ret = jQuery.data( elem, name );\r
+                       evt = jQuery._data( elem, name );\r
+                       if ( ( ret === undefined || ret === evt ) && evt !== undefined ) {\r
+                               migrateWarn("Use of jQuery.fn.data('events') is deprecated");\r
+                               return evt;\r
+                       }\r
+               }\r
+               return oldFnData.apply( this, arguments );\r
+       };\r
+\r
+\r
+       var rscriptType = /\/(java|ecma)script/i;\r
+\r
+// Since jQuery.clean is used internally on older versions, we only shim if it's missing\r
+       if ( !jQuery.clean ) {\r
+               jQuery.clean = function( elems, context, fragment, scripts ) {\r
+                       // Set context per 1.8 logic\r
+                       context = context || document;\r
+                       context = !context.nodeType && context[0] || context;\r
+                       context = context.ownerDocument || context;\r
+\r
+                       migrateWarn("jQuery.clean() is deprecated");\r
+\r
+                       var i, elem, handleScript, jsTags,\r
+                                       ret = [];\r
+\r
+                       jQuery.merge( ret, jQuery.buildFragment( elems, context ).childNodes );\r
+\r
+                       // Complex logic lifted directly from jQuery 1.8\r
+                       if ( fragment ) {\r
+                               // Special handling of each script element\r
+                               handleScript = function( elem ) {\r
+                                       // Check if we consider it executable\r
+                                       if ( !elem.type || rscriptType.test( elem.type ) ) {\r
+                                               // Detach the script and store it in the scripts array (if provided) or the fragment\r
+                                               // Return truthy to indicate that it has been handled\r
+                                               return scripts ?\r
+                                                               scripts.push( elem.parentNode ? elem.parentNode.removeChild( elem ) : elem ) :\r
+                                                               fragment.appendChild( elem );\r
+                                       }\r
+                               };\r
+\r
+                               for ( i = 0; (elem = ret[i]) != null; i++ ) {\r
+                                       // Check if we're done after handling an executable script\r
+                                       if ( !( jQuery.nodeName( elem, "script" ) && handleScript( elem ) ) ) {\r
+                                               // Append to fragment and handle embedded scripts\r
+                                               fragment.appendChild( elem );\r
+                                               if ( typeof elem.getElementsByTagName !== "undefined" ) {\r
+                                                       // handleScript alters the DOM, so use jQuery.merge to ensure snapshot iteration\r
+                                                       jsTags = jQuery.grep( jQuery.merge( [], elem.getElementsByTagName("script") ), handleScript );\r
+\r
+                                                       // Splice the scripts into ret after their former ancestor and advance our index beyond them\r
+                                                       ret.splice.apply( ret, [i + 1, 0].concat( jsTags ) );\r
+                                                       i += jsTags.length;\r
+                                               }\r
+                                       }\r
+                               }\r
+                       }\r
+\r
+                       return ret;\r
+               };\r
+       }\r
+\r
+       var eventAdd = jQuery.event.add,\r
+                       eventRemove = jQuery.event.remove,\r
+                       eventTrigger = jQuery.event.trigger,\r
+                       oldToggle = jQuery.fn.toggle,\r
+                       oldLive = jQuery.fn.live,\r
+                       oldDie = jQuery.fn.die,\r
+                       oldLoad = jQuery.fn.load,\r
+                       ajaxEvents = "ajaxStart|ajaxStop|ajaxSend|ajaxComplete|ajaxError|ajaxSuccess",\r
+                       rajaxEvent = new RegExp( "\\b(?:" + ajaxEvents + ")\\b" ),\r
+                       rhoverHack = /(?:^|\s)hover(\.\S+|)\b/,\r
+                       hoverHack = function( events ) {\r
+                               if ( typeof( events ) !== "string" || jQuery.event.special.hover ) {\r
+                                       return events;\r
+                               }\r
+                               if ( rhoverHack.test( events ) ) {\r
+                                       migrateWarn("'hover' pseudo-event is deprecated, use 'mouseenter mouseleave'");\r
+                               }\r
+                               return events && events.replace( rhoverHack, "mouseenter$1 mouseleave$1" );\r
+                       };\r
+\r
+// Event props removed in 1.9, put them back if needed; no practical way to warn them\r
+       if ( jQuery.event.props && jQuery.event.props[ 0 ] !== "attrChange" ) {\r
+               jQuery.event.props.unshift( "attrChange", "attrName", "relatedNode", "srcElement" );\r
+       }\r
+\r
+// Undocumented jQuery.event.handle was "deprecated" in jQuery 1.7\r
+       if ( jQuery.event.dispatch ) {\r
+               migrateWarnProp( jQuery.event, "handle", jQuery.event.dispatch, "jQuery.event.handle is undocumented and deprecated" );\r
+       }\r
+\r
+// Support for 'hover' pseudo-event and ajax event warnings\r
+       jQuery.event.add = function( elem, types, handler, data, selector ){\r
+               if ( elem !== document && rajaxEvent.test( types ) ) {\r
+                       migrateWarn( "AJAX events should be attached to document: " + types );\r
+               }\r
+               eventAdd.call( this, elem, hoverHack( types || "" ), handler, data, selector );\r
+       };\r
+       jQuery.event.remove = function( elem, types, handler, selector, mappedTypes ){\r
+               eventRemove.call( this, elem, hoverHack( types ) || "", handler, selector, mappedTypes );\r
+       };\r
+\r
+       jQuery.each( [ "load", "unload", "error" ], function( _, name ) {\r
+\r
+               jQuery.fn[ name ] = function() {\r
+                       var args = Array.prototype.slice.call( arguments, 0 );\r
+\r
+                       // If this is an ajax load() the first arg should be the string URL;\r
+                       // technically this could also be the "Anything" arg of the event .load()\r
+                       // which just goes to show why this dumb signature has been deprecated!\r
+                       // jQuery custom builds that exclude the Ajax module justifiably die here.\r
+                       if ( name === "load" && typeof args[ 0 ] === "string" ) {\r
+                               return oldLoad.apply( this, args );\r
+                       }\r
+\r
+                       migrateWarn( "jQuery.fn." + name + "() is deprecated" );\r
+\r
+                       args.splice( 0, 0, name );\r
+                       if ( arguments.length ) {\r
+                               return this.bind.apply( this, args );\r
+                       }\r
+\r
+                       // Use .triggerHandler here because:\r
+                       // - load and unload events don't need to bubble, only applied to window or image\r
+                       // - error event should not bubble to window, although it does pre-1.7\r
+                       // See http://bugs.jquery.com/ticket/11820\r
+                       this.triggerHandler.apply( this, args );\r
+                       return this;\r
+               };\r
+\r
+       });\r
+\r
+       jQuery.fn.toggle = function( fn, fn2 ) {\r
+\r
+               // Don't mess with animation or css toggles\r
+               if ( !jQuery.isFunction( fn ) || !jQuery.isFunction( fn2 ) ) {\r
+                       return oldToggle.apply( this, arguments );\r
+               }\r
+               migrateWarn("jQuery.fn.toggle(handler, handler...) is deprecated");\r
+\r
+               // Save reference to arguments for access in closure\r
+               var args = arguments,\r
+                               guid = fn.guid || jQuery.guid++,\r
+                               i = 0,\r
+                               toggler = function( event ) {\r
+                                       // Figure out which function to execute\r
+                                       var lastToggle = ( jQuery._data( this, "lastToggle" + fn.guid ) || 0 ) % i;\r
+                                       jQuery._data( this, "lastToggle" + fn.guid, lastToggle + 1 );\r
+\r
+                                       // Make sure that clicks stop\r
+                                       event.preventDefault();\r
+\r
+                                       // and execute the function\r
+                                       return args[ lastToggle ].apply( this, arguments ) || false;\r
+                               };\r
+\r
+               // link all the functions, so any of them can unbind this click handler\r
+               toggler.guid = guid;\r
+               while ( i < args.length ) {\r
+                       args[ i++ ].guid = guid;\r
+               }\r
+\r
+               return this.click( toggler );\r
+       };\r
+\r
+       jQuery.fn.live = function( types, data, fn ) {\r
+               migrateWarn("jQuery.fn.live() is deprecated");\r
+               if ( oldLive ) {\r
+                       return oldLive.apply( this, arguments );\r
+               }\r
+               jQuery( this.context ).on( types, this.selector, data, fn );\r
+               return this;\r
+       };\r
+\r
+       jQuery.fn.die = function( types, fn ) {\r
+               migrateWarn("jQuery.fn.die() is deprecated");\r
+               if ( oldDie ) {\r
+                       return oldDie.apply( this, arguments );\r
+               }\r
+               jQuery( this.context ).off( types, this.selector || "**", fn );\r
+               return this;\r
+       };\r
+\r
+// Turn global events into document-triggered events\r
+       jQuery.event.trigger = function( event, data, elem, onlyHandlers  ){\r
+               if ( !elem && !rajaxEvent.test( event ) ) {\r
+                       migrateWarn( "Global events are undocumented and deprecated" );\r
+               }\r
+               return eventTrigger.call( this,  event, data, elem || document, onlyHandlers  );\r
+       };\r
+       jQuery.each( ajaxEvents.split("|"),\r
+                       function( _, name ) {\r
+                               jQuery.event.special[ name ] = {\r
+                                       setup: function() {\r
+                                               var elem = this;\r
+\r
+                                               // The document needs no shimming; must be !== for oldIE\r
+                                               if ( elem !== document ) {\r
+                                                       jQuery.event.add( document, name + "." + jQuery.guid, function() {\r
+                                                               jQuery.event.trigger( name, Array.prototype.slice.call( arguments, 1 ), elem, true );\r
+                                                       });\r
+                                                       jQuery._data( this, name, jQuery.guid++ );\r
+                                               }\r
+                                               return false;\r
+                                       },\r
+                                       teardown: function() {\r
+                                               if ( this !== document ) {\r
+                                                       jQuery.event.remove( document, name + "." + jQuery._data( this, name ) );\r
+                                               }\r
+                                               return false;\r
+                                       }\r
+                               };\r
+                       }\r
+       );\r
+\r
+       jQuery.event.special.ready = {\r
+               setup: function() {\r
+                       if ( this === document ) {\r
+                               migrateWarn( "'ready' event is deprecated" );\r
+                       }\r
+               }\r
+       };\r
+\r
+       var oldSelf = jQuery.fn.andSelf || jQuery.fn.addBack,\r
+                       oldFind = jQuery.fn.find;\r
+\r
+       jQuery.fn.andSelf = function() {\r
+               migrateWarn("jQuery.fn.andSelf() replaced by jQuery.fn.addBack()");\r
+               return oldSelf.apply( this, arguments );\r
+       };\r
+\r
+       jQuery.fn.find = function( selector ) {\r
+               var ret = oldFind.apply( this, arguments );\r
+               ret.context = this.context;\r
+               ret.selector = this.selector ? this.selector + " " + selector : selector;\r
+               return ret;\r
+       };\r
+\r
+\r
+// jQuery 1.6 did not support Callbacks, do not warn there\r
+       if ( jQuery.Callbacks ) {\r
+\r
+               var oldDeferred = jQuery.Deferred,\r
+                               tuples = [\r
+                                       // action, add listener, callbacks, .then handlers, final state\r
+                                       [ "resolve", "done", jQuery.Callbacks("once memory"),\r
+                                               jQuery.Callbacks("once memory"), "resolved" ],\r
+                                       [ "reject", "fail", jQuery.Callbacks("once memory"),\r
+                                               jQuery.Callbacks("once memory"), "rejected" ],\r
+                                       [ "notify", "progress", jQuery.Callbacks("memory"),\r
+                                               jQuery.Callbacks("memory") ]\r
+                               ];\r
+\r
+               jQuery.Deferred = function( func ) {\r
+                       var deferred = oldDeferred(),\r
+                                       promise = deferred.promise();\r
+\r
+                       deferred.pipe = promise.pipe = function( /* fnDone, fnFail, fnProgress */ ) {\r
+                               var fns = arguments;\r
+\r
+                               migrateWarn( "deferred.pipe() is deprecated" );\r
+\r
+                               return jQuery.Deferred(function( newDefer ) {\r
+                                       jQuery.each( tuples, function( i, tuple ) {\r
+                                               var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];\r
+                                               // deferred.done(function() { bind to newDefer or newDefer.resolve })\r
+                                               // deferred.fail(function() { bind to newDefer or newDefer.reject })\r
+                                               // deferred.progress(function() { bind to newDefer or newDefer.notify })\r
+                                               deferred[ tuple[1] ](function() {\r
+                                                       var returned = fn && fn.apply( this, arguments );\r
+                                                       if ( returned && jQuery.isFunction( returned.promise ) ) {\r
+                                                               returned.promise()\r
+                                                                               .done( newDefer.resolve )\r
+                                                                               .fail( newDefer.reject )\r
+                                                                               .progress( newDefer.notify );\r
+                                                       } else {\r
+                                                               newDefer[ tuple[ 0 ] + "With" ](\r
+                                                                               this === promise ? newDefer.promise() : this,\r
+                                                                               fn ? [ returned ] : arguments\r
+                                                               );\r
+                                                       }\r
+                                               });\r
+                                       });\r
+                                       fns = null;\r
+                               }).promise();\r
+\r
+                       };\r
+\r
+                       deferred.isResolved = function() {\r
+                               migrateWarn( "deferred.isResolved is deprecated" );\r
+                               return deferred.state() === "resolved";\r
+                       };\r
+\r
+                       deferred.isRejected = function() {\r
+                               migrateWarn( "deferred.isRejected is deprecated" );\r
+                               return deferred.state() === "rejected";\r
+                       };\r
+\r
+                       if ( func ) {\r
+                               func.call( deferred, deferred );\r
+                       }\r
+\r
+                       return deferred;\r
+               };\r
+\r
+       }\r
+\r
+})( jQuery, window );
\ No newline at end of file
diff --git a/lib/jquery/jquery-migrate-1.4.0.min.js b/lib/jquery/jquery-migrate-1.4.0.min.js
new file mode 100644 (file)
index 0000000..19a2b33
--- /dev/null
@@ -0,0 +1,2 @@
+/*! jQuery Migrate v1.4.0 | (c) jQuery Foundation and other contributors | jquery.org/license */\r
+"undefined"==typeof jQuery.migrateMute&&(jQuery.migrateMute=!0),function(a,b,c){function d(c){var d=b.console;f[c]||(f[c]=!0,a.migrateWarnings.push(c),d&&d.warn&&!a.migrateMute&&(d.warn("JQMIGRATE: "+c),a.migrateTrace&&d.trace&&d.trace()))}function e(b,c,e,f){if(Object.defineProperty)try{return void Object.defineProperty(b,c,{configurable:!0,enumerable:!0,get:function(){return d(f),e},set:function(a){d(f),e=a}})}catch(g){}a._definePropertyBroken=!0,b[c]=e}a.migrateVersion="1.4.0";var f={};a.migrateWarnings=[],b.console&&b.console.log&&b.console.log("JQMIGRATE: Migrate is installed"+(a.migrateMute?"":" with logging active")+", version "+a.migrateVersion),a.migrateTrace===c&&(a.migrateTrace=!0),a.migrateReset=function(){f={},a.migrateWarnings.length=0},"BackCompat"===document.compatMode&&d("jQuery is not compatible with Quirks Mode");var g=a("<input/>",{size:1}).attr("size")&&a.attrFn,h=a.attr,i=a.attrHooks.value&&a.attrHooks.value.get||function(){return null},j=a.attrHooks.value&&a.attrHooks.value.set||function(){return c},k=/^(?:input|button)$/i,l=/^[238]$/,m=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,n=/^(?:checked|selected)$/i;e(a,"attrFn",g||{},"jQuery.attrFn is deprecated"),a.attr=function(b,e,f,i){var j=e.toLowerCase(),o=b&&b.nodeType;return i&&(h.length<4&&d("jQuery.fn.attr( props, pass ) is deprecated"),b&&!l.test(o)&&(g?e in g:a.isFunction(a.fn[e])))?a(b)[e](f):("type"===e&&f!==c&&k.test(b.nodeName)&&b.parentNode&&d("Can't change the 'type' of an input or button in IE 6/7/8"),!a.attrHooks[j]&&m.test(j)&&(a.attrHooks[j]={get:function(b,d){var e,f=a.prop(b,d);return f===!0||"boolean"!=typeof f&&(e=b.getAttributeNode(d))&&e.nodeValue!==!1?d.toLowerCase():c},set:function(b,c,d){var e;return c===!1?a.removeAttr(b,d):(e=a.propFix[d]||d,e in b&&(b[e]=!0),b.setAttribute(d,d.toLowerCase())),d}},n.test(j)&&d("jQuery.fn.attr('"+j+"') might use property instead of attribute")),h.call(a,b,e,f))},a.attrHooks.value={get:function(a,b){var c=(a.nodeName||"").toLowerCase();return"button"===c?i.apply(this,arguments):("input"!==c&&"option"!==c&&d("jQuery.fn.attr('value') no longer gets properties"),b in a?a.value:null)},set:function(a,b){var c=(a.nodeName||"").toLowerCase();return"button"===c?j.apply(this,arguments):("input"!==c&&"option"!==c&&d("jQuery.fn.attr('value', val) no longer sets properties"),void(a.value=b))}};var o,p,q=a.fn.init,r=a.parseJSON,s=/^\s*</,t=/\[\s*\w+\s*[~|^$*]?=\s*(?![\s'"])[^#\]]*#/,u=/^([^<]*)(<[\w\W]+>)([^>]*)$/;a.fn.init=function(b,e,f){var g,h;return b&&"string"==typeof b&&!a.isPlainObject(e)&&(g=u.exec(a.trim(b)))&&g[0]&&(s.test(b)||d("$(html) HTML strings must start with '<' character"),g[3]&&d("$(html) HTML text after last tag is ignored"),"#"===g[0].charAt(0)&&(d("HTML string cannot start with a '#' character"),a.error("JQMIGRATE: Invalid selector string (XSS)")),e&&e.context&&(e=e.context),a.parseHTML)?q.call(this,a.parseHTML(g[2],e&&e.ownerDocument||e||document,!0),e,f):("#"===b?(d("jQuery( '#' ) is not a valid selector"),b=[]):t.test(b)&&d("Attribute selectors with '#' must be quoted: '"+b+"'"),h=q.apply(this,arguments),b&&b.selector!==c?(h.selector=b.selector,h.context=b.context):(h.selector="string"==typeof b?b:"",b&&(h.context=b.nodeType?b:e||document)),h)},a.fn.init.prototype=a.fn,a.parseJSON=function(a){return a?r.apply(this,arguments):(d("jQuery.parseJSON requires a valid JSON string"),null)},a.uaMatch=function(a){a=a.toLowerCase();var b=/(chrome)[ \/]([\w.]+)/.exec(a)||/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||a.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},a.browser||(o=a.uaMatch(navigator.userAgent),p={},o.browser&&(p[o.browser]=!0,p.version=o.version),p.chrome?p.webkit=!0:p.webkit&&(p.safari=!0),a.browser=p),e(a,"browser",a.browser,"jQuery.browser is deprecated"),a.boxModel=a.support.boxModel="CSS1Compat"===document.compatMode,e(a,"boxModel",a.boxModel,"jQuery.boxModel is deprecated"),e(a.support,"boxModel",a.support.boxModel,"jQuery.support.boxModel is deprecated"),a.sub=function(){function b(a,c){return new b.fn.init(a,c)}a.extend(!0,b,this),b.superclass=this,b.fn=b.prototype=this(),b.fn.constructor=b,b.sub=this.sub,b.fn.init=function(d,e){var f=a.fn.init.call(this,d,e,c);return f instanceof b?f:b(f)},b.fn.init.prototype=b.fn;var c=b(document);return d("jQuery.sub() is deprecated"),b},a.fn.size=function(){return d("jQuery.fn.size() is deprecated; use the .length property"),this.length};var v=!1;a.swap&&a.each(["height","width","reliableMarginRight"],function(b,c){var d=a.cssHooks[c]&&a.cssHooks[c].get;d&&(a.cssHooks[c].get=function(){var a;return v=!0,a=d.apply(this,arguments),v=!1,a})}),a.swap=function(a,b,c,e){var f,g,h={};v||d("jQuery.swap() is undocumented and deprecated");for(g in b)h[g]=a.style[g],a.style[g]=b[g];f=c.apply(a,e||[]);for(g in b)a.style[g]=h[g];return f},a.ajaxSetup({converters:{"text json":a.parseJSON}});var w=a.fn.data;a.fn.data=function(b){var e,f,g=this[0];return!g||"events"!==b||1!==arguments.length||(e=a.data(g,b),f=a._data(g,b),e!==c&&e!==f||f===c)?w.apply(this,arguments):(d("Use of jQuery.fn.data('events') is deprecated"),f)};var x=/\/(java|ecma)script/i;a.clean||(a.clean=function(b,c,e,f){c=c||document,c=!c.nodeType&&c[0]||c,c=c.ownerDocument||c,d("jQuery.clean() is deprecated");var g,h,i,j,k=[];if(a.merge(k,a.buildFragment(b,c).childNodes),e)for(i=function(a){return!a.type||x.test(a.type)?f?f.push(a.parentNode?a.parentNode.removeChild(a):a):e.appendChild(a):void 0},g=0;null!=(h=k[g]);g++)a.nodeName(h,"script")&&i(h)||(e.appendChild(h),"undefined"!=typeof h.getElementsByTagName&&(j=a.grep(a.merge([],h.getElementsByTagName("script")),i),k.splice.apply(k,[g+1,0].concat(j)),g+=j.length));return k});var y=a.event.add,z=a.event.remove,A=a.event.trigger,B=a.fn.toggle,C=a.fn.live,D=a.fn.die,E=a.fn.load,F="ajaxStart|ajaxStop|ajaxSend|ajaxComplete|ajaxError|ajaxSuccess",G=new RegExp("\\b(?:"+F+")\\b"),H=/(?:^|\s)hover(\.\S+|)\b/,I=function(b){return"string"!=typeof b||a.event.special.hover?b:(H.test(b)&&d("'hover' pseudo-event is deprecated, use 'mouseenter mouseleave'"),b&&b.replace(H,"mouseenter$1 mouseleave$1"))};a.event.props&&"attrChange"!==a.event.props[0]&&a.event.props.unshift("attrChange","attrName","relatedNode","srcElement"),a.event.dispatch&&e(a.event,"handle",a.event.dispatch,"jQuery.event.handle is undocumented and deprecated"),a.event.add=function(a,b,c,e,f){a!==document&&G.test(b)&&d("AJAX events should be attached to document: "+b),y.call(this,a,I(b||""),c,e,f)},a.event.remove=function(a,b,c,d,e){z.call(this,a,I(b)||"",c,d,e)},a.each(["load","unload","error"],function(b,c){a.fn[c]=function(){var a=Array.prototype.slice.call(arguments,0);return"load"===c&&"string"==typeof a[0]?E.apply(this,a):(d("jQuery.fn."+c+"() is deprecated"),a.splice(0,0,c),arguments.length?this.bind.apply(this,a):(this.triggerHandler.apply(this,a),this))}}),a.fn.toggle=function(b,c){if(!a.isFunction(b)||!a.isFunction(c))return B.apply(this,arguments);d("jQuery.fn.toggle(handler, handler...) is deprecated");var e=arguments,f=b.guid||a.guid++,g=0,h=function(c){var d=(a._data(this,"lastToggle"+b.guid)||0)%g;return a._data(this,"lastToggle"+b.guid,d+1),c.preventDefault(),e[d].apply(this,arguments)||!1};for(h.guid=f;g<e.length;)e[g++].guid=f;return this.click(h)},a.fn.live=function(b,c,e){return d("jQuery.fn.live() is deprecated"),C?C.apply(this,arguments):(a(this.context).on(b,this.selector,c,e),this)},a.fn.die=function(b,c){return d("jQuery.fn.die() is deprecated"),D?D.apply(this,arguments):(a(this.context).off(b,this.selector||"**",c),this)},a.event.trigger=function(a,b,c,e){return c||G.test(a)||d("Global events are undocumented and deprecated"),A.call(this,a,b,c||document,e)},a.each(F.split("|"),function(b,c){a.event.special[c]={setup:function(){var b=this;return b!==document&&(a.event.add(document,c+"."+a.guid,function(){a.event.trigger(c,Array.prototype.slice.call(arguments,1),b,!0)}),a._data(this,c,a.guid++)),!1},teardown:function(){return this!==document&&a.event.remove(document,c+"."+a._data(this,c)),!1}}}),a.event.special.ready={setup:function(){this===document&&d("'ready' event is deprecated")}};var J=a.fn.andSelf||a.fn.addBack,K=a.fn.find;if(a.fn.andSelf=function(){return d("jQuery.fn.andSelf() replaced by jQuery.fn.addBack()"),J.apply(this,arguments)},a.fn.find=function(a){var b=K.apply(this,arguments);return b.context=this.context,b.selector=this.selector?this.selector+" "+a:a,b},a.Callbacks){var L=a.Deferred,M=[["resolve","done",a.Callbacks("once memory"),a.Callbacks("once memory"),"resolved"],["reject","fail",a.Callbacks("once memory"),a.Callbacks("once memory"),"rejected"],["notify","progress",a.Callbacks("memory"),a.Callbacks("memory")]];a.Deferred=function(b){var c=L(),e=c.promise();return c.pipe=e.pipe=function(){var b=arguments;return d("deferred.pipe() is deprecated"),a.Deferred(function(d){a.each(M,function(f,g){var h=a.isFunction(b[f])&&b[f];c[g[1]](function(){var b=h&&h.apply(this,arguments);b&&a.isFunction(b.promise)?b.promise().done(d.resolve).fail(d.reject).progress(d.notify):d[g[0]+"With"](this===e?d.promise():this,h?[b]:arguments)})}),b=null}).promise()},c.isResolved=function(){return d("deferred.isResolved is deprecated"),"resolved"===c.state()},c.isRejected=function(){return d("deferred.isRejected is deprecated"),"rejected"===c.state()},b&&b.call(c,c),c}}}(jQuery,window);
\ No newline at end of file
index f79b13c..92cf530 100644 (file)
@@ -38,7 +38,7 @@
 
 $plugins = array(
     'jquery'  => array('files' => array('jquery-1.11.3.min.js')),
-    'migrate' => array('files' => array('jquery-migrate-1.2.1.min.js')),
+    'migrate' => array('files' => array('jquery-migrate-1.4.0.min.js')),
     'ui'      => array('files' => array('ui-1.11.4/jquery-ui.min.js')),
     'ui-css'  => array('files' => array('ui-1.11.4/theme/smoothness/jquery-ui.min.css')),
 );
index fc8ffe0..2b9325d 100644 (file)
     <location>jquery</location>
     <name>jQuery Migrate</name>
     <license>MIT</license>
-    <version>1.2.1</version>
+    <version>1.4.0</version>
     <licenseversion></licenseversion>
   </library>
   <library>