From bb60d2fc7c06ec661e4c66ac8778e1f2070103cd Mon Sep 17 00:00:00 2001 From: "Eran (ev672n), Vosk" Date: Mon, 29 Oct 2018 18:38:10 +0200 Subject: Sync code Sync the code between repositories Change-Id: Ic431c58c68716b6d401954fb854a183e0d222f57 Issue-ID: SDC-1874 Signed-off-by: Eran (ev672n), Vosk --- app/bower_components/jquery/.bower.json | 25 + app/bower_components/jquery/AUTHORS.txt | 278 +++ app/bower_components/jquery/LICENSE.txt | 36 + app/bower_components/jquery/README.md | 65 + app/bower_components/jquery/bower.json | 14 + .../jquery/external/sizzle/LICENSE.txt | 36 + .../jquery/external/sizzle/dist/sizzle.js | 2143 ++++++++++++++++++++ .../jquery/external/sizzle/dist/sizzle.min.js | 3 + .../jquery/external/sizzle/dist/sizzle.min.map | 1 + app/bower_components/jquery/src/.jshintrc | 29 + app/bower_components/jquery/src/ajax.js | 845 ++++++++ app/bower_components/jquery/src/ajax/jsonp.js | 100 + app/bower_components/jquery/src/ajax/load.js | 83 + app/bower_components/jquery/src/ajax/parseJSON.js | 13 + app/bower_components/jquery/src/ajax/parseXML.js | 27 + app/bower_components/jquery/src/ajax/script.js | 68 + .../jquery/src/ajax/var/location.js | 3 + app/bower_components/jquery/src/ajax/var/nonce.js | 5 + app/bower_components/jquery/src/ajax/var/rquery.js | 3 + app/bower_components/jquery/src/ajax/xhr.js | 167 ++ app/bower_components/jquery/src/attributes.js | 11 + app/bower_components/jquery/src/attributes/attr.js | 142 ++ .../jquery/src/attributes/classes.js | 177 ++ app/bower_components/jquery/src/attributes/prop.js | 125 ++ .../jquery/src/attributes/support.js | 36 + app/bower_components/jquery/src/attributes/val.js | 177 ++ app/bower_components/jquery/src/callbacks.js | 232 +++ app/bower_components/jquery/src/core.js | 494 +++++ app/bower_components/jquery/src/core/access.js | 65 + app/bower_components/jquery/src/core/init.js | 134 ++ app/bower_components/jquery/src/core/parseHTML.js | 41 + app/bower_components/jquery/src/core/ready.js | 103 + .../jquery/src/core/var/rsingleTag.js | 5 + app/bower_components/jquery/src/css.js | 502 +++++ .../jquery/src/css/addGetHookIf.js | 24 + app/bower_components/jquery/src/css/adjustCSS.js | 65 + app/bower_components/jquery/src/css/curCSS.js | 60 + .../jquery/src/css/defaultDisplay.js | 72 + .../jquery/src/css/hiddenVisibleSelectors.js | 18 + app/bower_components/jquery/src/css/showHide.js | 48 + app/bower_components/jquery/src/css/support.js | 121 ++ .../jquery/src/css/var/cssExpand.js | 3 + .../jquery/src/css/var/getStyles.js | 15 + .../jquery/src/css/var/isHidden.js | 16 + app/bower_components/jquery/src/css/var/rmargin.js | 3 + .../jquery/src/css/var/rnumnonpx.js | 5 + app/bower_components/jquery/src/css/var/swap.js | 24 + app/bower_components/jquery/src/data.js | 187 ++ app/bower_components/jquery/src/data/Data.js | 200 ++ .../jquery/src/data/var/acceptData.js | 18 + .../jquery/src/data/var/dataPriv.js | 5 + .../jquery/src/data/var/dataUser.js | 5 + app/bower_components/jquery/src/deferred.js | 158 ++ app/bower_components/jquery/src/deprecated.js | 32 + app/bower_components/jquery/src/dimensions.js | 54 + app/bower_components/jquery/src/effects.js | 629 ++++++ app/bower_components/jquery/src/effects/Tween.js | 121 ++ .../jquery/src/effects/animatedSelector.js | 13 + app/bower_components/jquery/src/event.js | 711 +++++++ app/bower_components/jquery/src/event/ajax.js | 20 + app/bower_components/jquery/src/event/alias.js | 27 + app/bower_components/jquery/src/event/focusin.js | 53 + app/bower_components/jquery/src/event/support.js | 9 + app/bower_components/jquery/src/event/trigger.js | 183 ++ app/bower_components/jquery/src/exports/amd.js | 24 + app/bower_components/jquery/src/exports/global.js | 26 + app/bower_components/jquery/src/intro.js | 44 + app/bower_components/jquery/src/jquery.js | 37 + app/bower_components/jquery/src/manipulation.js | 481 +++++ .../jquery/src/manipulation/_evalUrl.js | 20 + .../jquery/src/manipulation/buildFragment.js | 102 + .../jquery/src/manipulation/getAll.js | 21 + .../jquery/src/manipulation/setGlobalEval.js | 20 + .../jquery/src/manipulation/support.js | 33 + .../jquery/src/manipulation/var/rcheckableType.js | 3 + .../jquery/src/manipulation/var/rscriptType.js | 3 + .../jquery/src/manipulation/var/rtagName.js | 3 + .../jquery/src/manipulation/wrapMap.js | 27 + app/bower_components/jquery/src/offset.js | 218 ++ app/bower_components/jquery/src/outro.js | 2 + app/bower_components/jquery/src/queue.js | 143 ++ app/bower_components/jquery/src/queue/delay.js | 22 + app/bower_components/jquery/src/selector-native.js | 211 ++ app/bower_components/jquery/src/selector-sizzle.js | 14 + app/bower_components/jquery/src/selector.js | 1 + app/bower_components/jquery/src/serialize.js | 125 ++ app/bower_components/jquery/src/traversing.js | 175 ++ .../jquery/src/traversing/findFilter.js | 100 + .../jquery/src/traversing/var/dir.js | 20 + .../jquery/src/traversing/var/rneedsContext.js | 6 + .../jquery/src/traversing/var/siblings.js | 15 + app/bower_components/jquery/src/var/arr.js | 3 + app/bower_components/jquery/src/var/class2type.js | 5 + app/bower_components/jquery/src/var/concat.js | 5 + app/bower_components/jquery/src/var/document.js | 3 + .../jquery/src/var/documentElement.js | 5 + app/bower_components/jquery/src/var/hasOwn.js | 5 + app/bower_components/jquery/src/var/indexOf.js | 5 + app/bower_components/jquery/src/var/pnum.js | 3 + app/bower_components/jquery/src/var/push.js | 5 + app/bower_components/jquery/src/var/rcssNum.js | 7 + app/bower_components/jquery/src/var/rnotwhite.js | 3 + app/bower_components/jquery/src/var/slice.js | 5 + app/bower_components/jquery/src/var/support.js | 5 + app/bower_components/jquery/src/var/toString.js | 5 + app/bower_components/jquery/src/wrap.js | 79 + 106 files changed, 11126 insertions(+) create mode 100644 app/bower_components/jquery/.bower.json create mode 100644 app/bower_components/jquery/AUTHORS.txt create mode 100644 app/bower_components/jquery/LICENSE.txt create mode 100644 app/bower_components/jquery/README.md create mode 100644 app/bower_components/jquery/bower.json create mode 100644 app/bower_components/jquery/external/sizzle/LICENSE.txt create mode 100644 app/bower_components/jquery/external/sizzle/dist/sizzle.js create mode 100644 app/bower_components/jquery/external/sizzle/dist/sizzle.min.js create mode 100644 app/bower_components/jquery/external/sizzle/dist/sizzle.min.map create mode 100644 app/bower_components/jquery/src/.jshintrc create mode 100644 app/bower_components/jquery/src/ajax.js create mode 100644 app/bower_components/jquery/src/ajax/jsonp.js create mode 100644 app/bower_components/jquery/src/ajax/load.js create mode 100644 app/bower_components/jquery/src/ajax/parseJSON.js create mode 100644 app/bower_components/jquery/src/ajax/parseXML.js create mode 100644 app/bower_components/jquery/src/ajax/script.js create mode 100644 app/bower_components/jquery/src/ajax/var/location.js create mode 100644 app/bower_components/jquery/src/ajax/var/nonce.js create mode 100644 app/bower_components/jquery/src/ajax/var/rquery.js create mode 100644 app/bower_components/jquery/src/ajax/xhr.js create mode 100644 app/bower_components/jquery/src/attributes.js create mode 100644 app/bower_components/jquery/src/attributes/attr.js create mode 100644 app/bower_components/jquery/src/attributes/classes.js create mode 100644 app/bower_components/jquery/src/attributes/prop.js create mode 100644 app/bower_components/jquery/src/attributes/support.js create mode 100644 app/bower_components/jquery/src/attributes/val.js create mode 100644 app/bower_components/jquery/src/callbacks.js create mode 100644 app/bower_components/jquery/src/core.js create mode 100644 app/bower_components/jquery/src/core/access.js create mode 100644 app/bower_components/jquery/src/core/init.js create mode 100644 app/bower_components/jquery/src/core/parseHTML.js create mode 100644 app/bower_components/jquery/src/core/ready.js create mode 100644 app/bower_components/jquery/src/core/var/rsingleTag.js create mode 100644 app/bower_components/jquery/src/css.js create mode 100644 app/bower_components/jquery/src/css/addGetHookIf.js create mode 100644 app/bower_components/jquery/src/css/adjustCSS.js create mode 100644 app/bower_components/jquery/src/css/curCSS.js create mode 100644 app/bower_components/jquery/src/css/defaultDisplay.js create mode 100644 app/bower_components/jquery/src/css/hiddenVisibleSelectors.js create mode 100644 app/bower_components/jquery/src/css/showHide.js create mode 100644 app/bower_components/jquery/src/css/support.js create mode 100644 app/bower_components/jquery/src/css/var/cssExpand.js create mode 100644 app/bower_components/jquery/src/css/var/getStyles.js create mode 100644 app/bower_components/jquery/src/css/var/isHidden.js create mode 100644 app/bower_components/jquery/src/css/var/rmargin.js create mode 100644 app/bower_components/jquery/src/css/var/rnumnonpx.js create mode 100644 app/bower_components/jquery/src/css/var/swap.js create mode 100644 app/bower_components/jquery/src/data.js create mode 100644 app/bower_components/jquery/src/data/Data.js create mode 100644 app/bower_components/jquery/src/data/var/acceptData.js create mode 100644 app/bower_components/jquery/src/data/var/dataPriv.js create mode 100644 app/bower_components/jquery/src/data/var/dataUser.js create mode 100644 app/bower_components/jquery/src/deferred.js create mode 100644 app/bower_components/jquery/src/deprecated.js create mode 100644 app/bower_components/jquery/src/dimensions.js create mode 100644 app/bower_components/jquery/src/effects.js create mode 100644 app/bower_components/jquery/src/effects/Tween.js create mode 100644 app/bower_components/jquery/src/effects/animatedSelector.js create mode 100644 app/bower_components/jquery/src/event.js create mode 100644 app/bower_components/jquery/src/event/ajax.js create mode 100644 app/bower_components/jquery/src/event/alias.js create mode 100644 app/bower_components/jquery/src/event/focusin.js create mode 100644 app/bower_components/jquery/src/event/support.js create mode 100644 app/bower_components/jquery/src/event/trigger.js create mode 100644 app/bower_components/jquery/src/exports/amd.js create mode 100644 app/bower_components/jquery/src/exports/global.js create mode 100644 app/bower_components/jquery/src/intro.js create mode 100644 app/bower_components/jquery/src/jquery.js create mode 100644 app/bower_components/jquery/src/manipulation.js create mode 100644 app/bower_components/jquery/src/manipulation/_evalUrl.js create mode 100644 app/bower_components/jquery/src/manipulation/buildFragment.js create mode 100644 app/bower_components/jquery/src/manipulation/getAll.js create mode 100644 app/bower_components/jquery/src/manipulation/setGlobalEval.js create mode 100644 app/bower_components/jquery/src/manipulation/support.js create mode 100644 app/bower_components/jquery/src/manipulation/var/rcheckableType.js create mode 100644 app/bower_components/jquery/src/manipulation/var/rscriptType.js create mode 100644 app/bower_components/jquery/src/manipulation/var/rtagName.js create mode 100644 app/bower_components/jquery/src/manipulation/wrapMap.js create mode 100644 app/bower_components/jquery/src/offset.js create mode 100644 app/bower_components/jquery/src/outro.js create mode 100644 app/bower_components/jquery/src/queue.js create mode 100644 app/bower_components/jquery/src/queue/delay.js create mode 100644 app/bower_components/jquery/src/selector-native.js create mode 100644 app/bower_components/jquery/src/selector-sizzle.js create mode 100644 app/bower_components/jquery/src/selector.js create mode 100644 app/bower_components/jquery/src/serialize.js create mode 100644 app/bower_components/jquery/src/traversing.js create mode 100644 app/bower_components/jquery/src/traversing/findFilter.js create mode 100644 app/bower_components/jquery/src/traversing/var/dir.js create mode 100644 app/bower_components/jquery/src/traversing/var/rneedsContext.js create mode 100644 app/bower_components/jquery/src/traversing/var/siblings.js create mode 100644 app/bower_components/jquery/src/var/arr.js create mode 100644 app/bower_components/jquery/src/var/class2type.js create mode 100644 app/bower_components/jquery/src/var/concat.js create mode 100644 app/bower_components/jquery/src/var/document.js create mode 100644 app/bower_components/jquery/src/var/documentElement.js create mode 100644 app/bower_components/jquery/src/var/hasOwn.js create mode 100644 app/bower_components/jquery/src/var/indexOf.js create mode 100644 app/bower_components/jquery/src/var/pnum.js create mode 100644 app/bower_components/jquery/src/var/push.js create mode 100644 app/bower_components/jquery/src/var/rcssNum.js create mode 100644 app/bower_components/jquery/src/var/rnotwhite.js create mode 100644 app/bower_components/jquery/src/var/slice.js create mode 100644 app/bower_components/jquery/src/var/support.js create mode 100644 app/bower_components/jquery/src/var/toString.js create mode 100644 app/bower_components/jquery/src/wrap.js (limited to 'app/bower_components/jquery') diff --git a/app/bower_components/jquery/.bower.json b/app/bower_components/jquery/.bower.json new file mode 100644 index 0000000..8825f0d --- /dev/null +++ b/app/bower_components/jquery/.bower.json @@ -0,0 +1,25 @@ +{ + "name": "jquery", + "main": "dist/jquery.js", + "license": "MIT", + "ignore": [ + "package.json" + ], + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "homepage": "https://github.com/jquery/jquery-dist", + "version": "2.2.4", + "_release": "2.2.4", + "_resolution": { + "type": "version", + "tag": "2.2.4", + "commit": "c0185ab7c75aab88762c5aae780b9d83b80eda72" + }, + "_source": "https://github.com/jquery/jquery-dist.git", + "_target": "2.2.4", + "_originalSource": "jquery" +} \ No newline at end of file diff --git a/app/bower_components/jquery/AUTHORS.txt b/app/bower_components/jquery/AUTHORS.txt new file mode 100644 index 0000000..dde64ca --- /dev/null +++ b/app/bower_components/jquery/AUTHORS.txt @@ -0,0 +1,278 @@ +Authors ordered by first contribution. + +John Resig +Gilles van den Hoven +Michael Geary +Stefan Petre +Yehuda Katz +Corey Jewett +Klaus Hartl +Franck Marcia +Jörn Zaefferer +Paul Bakaus +Brandon Aaron +Mike Alsup +Dave Methvin +Ed Engelhardt +Sean Catchpole +Paul Mclanahan +David Serduke +Richard D. Worth +Scott González +Ariel Flesler +Jon Evans +TJ Holowaychuk +Michael Bensoussan +Robert Katić +Louis-Rémi Babé +Earle Castledine +Damian Janowski +Rich Dougherty +Kim Dalsgaard +Andrea Giammarchi +Mark Gibson +Karl Swedberg +Justin Meyer +Ben Alman +James Padolsey +David Petersen +Batiste Bieler +Alexander Farkas +Rick Waldron +Filipe Fortes +Neeraj Singh +Paul Irish +Iraê Carvalho +Matt Curry +Michael Monteleone +Noah Sloan +Tom Viner +Douglas Neiner +Adam J. Sontag +Dave Reed +Ralph Whitbeck +Carl Fürstenberg +Jacob Wright +J. Ryan Stinnett +unknown +temp01 +Heungsub Lee +Colin Snover +Ryan W Tenney +Pinhook +Ron Otten +Jephte Clain +Anton Matzneller +Alex Sexton +Dan Heberden +Henri Wiechers +Russell Holbrook +Julian Aubourg +Gianni Alessandro Chiappetta +Scott Jehl +James Burke +Jonas Pfenniger +Xavi Ramirez +Jared Grippe +Sylvester Keil +Brandon Sterne +Mathias Bynens +Timmy Willison +Corey Frang +Digitalxero +Anton Kovalyov +David Murdoch +Josh Varner +Charles McNulty +Jordan Boesch +Jess Thrysoee +Michael Murray +Lee Carpenter +Alexis Abril +Rob Morgan +John Firebaugh +Sam Bisbee +Gilmore Davidson +Brian Brennan +Xavier Montillet +Daniel Pihlstrom +Sahab Yazdani +avaly +Scott Hughes +Mike Sherov +Greg Hazel +Schalk Neethling +Denis Knauf +Timo Tijhof +Steen Nielsen +Anton Ryzhov +Shi Chuan +Berker Peksag +Toby Brain +Matt Mueller +Justin +Daniel Herman +Oleg Gaidarenko +Richard Gibson +Rafaël Blais Masson +cmc3cn <59194618@qq.com> +Joe Presbrey +Sindre Sorhus +Arne de Bree +Vladislav Zarakovsky +Andrew E Monat +Oskari +Joao Henrique de Andrade Bruni +tsinha +Matt Farmer +Trey Hunner +Jason Moon +Jeffery To +Kris Borchers +Vladimir Zhuravlev +Jacob Thornton +Chad Killingsworth +Nowres Rafid +David Benjamin +Uri Gilad +Chris Faulkner +Elijah Manor +Daniel Chatfield +Nikita Govorov +Wesley Walser +Mike Pennisi +Markus Staab +Dave Riddle +Callum Macrae +Benjamin Truyman +James Huston +Erick Ruiz de Chávez +David Bonner +Akintayo Akinwunmi +MORGAN +Ismail Khair +Carl Danley +Mike Petrovich +Greg Lavallee +Daniel Gálvez +Sai Lung Wong +Tom H Fuertes +Roland Eckl +Jay Merrifield +Allen J Schmidt Jr +Jonathan Sampson +Marcel Greter +Matthias Jäggli +David Fox +Yiming He +Devin Cooper +Paul Ramos +Rod Vagg +Bennett Sorbo +Sebastian Burkhard +Zachary Adam Kaplan +nanto_vi +nanto +Danil Somsikov +Ryunosuke SATO +Jean Boussier +Adam Coulombe +Andrew Plummer +Mark Raddatz +Isaac Z. Schlueter +Karl Sieburg +Pascal Borreli +Nguyen Phuc Lam +Dmitry Gusev +Michał Gołębiowski +Li Xudong +Steven Benner +Tom H Fuertes +Renato Oliveira dos Santos +ros3cin +Jason Bedard +Kyle Robinson Young +Chris Talkington +Eddie Monge +Terry Jones +Jason Merino +Jeremy Dunck +Chris Price +Guy Bedford +Amey Sakhadeo +Mike Sidorov +Anthony Ryan +Dominik D. Geyer +George Kats +Lihan Li +Ronny Springer +Chris Antaki +Marian Sollmann +njhamann +Ilya Kantor +David Hong +John Paul +Jakob Stoeck +Christopher Jones +Forbes Lindesay +S. Andrew Sheppard +Leonardo Balter +Roman Reiß +Benjy Cui +Rodrigo Rosenfeld Rosas +John Hoven +Philip Jägenstedt +Christian Kosmowski +Liang Peng +TJ VanToll +Senya Pugach +Aurelio De Rosa +Nazar Mokrynskyi +Amit Merchant +Jason Bedard +Arthur Verschaeve +Dan Hart +Bin Xin +David Corbacho +Veaceslav Grimalschi +Daniel Husar +Frederic Hemberger +Ben Toews +Aditya Raghavan +Victor Homyakov +Shivaji Varma +Nicolas HENRY +Anne-Gaelle Colom +George Mauer +Leonardo Braga +Stephen Edgar +Thomas Tortorini +Winston Howes +Jon Hester +Alexander O'Mara +Bastian Buchholz +Arthur Stolyar +Calvin Metcalf +Mu Haibao +Richard McDaniel +Chris Rebert +Gabriel Schulhof +Gilad Peleg +Martin Naumann +Marek Lewandowski +Bruno Pérel +Reed Loden +Daniel Nill +Yongwoo Jeon +Sean Henderson +Richard Kraaijenhagen +Connor Atherton +Gary Ye +Christian Grete +Liza Ramo +Julian Alexander Murillo +Joelle Fleurantin +Jun Sun +Devin Wilson +Todor Prikumov +Zack Hall diff --git a/app/bower_components/jquery/LICENSE.txt b/app/bower_components/jquery/LICENSE.txt new file mode 100644 index 0000000..5312a4c --- /dev/null +++ b/app/bower_components/jquery/LICENSE.txt @@ -0,0 +1,36 @@ +Copyright jQuery Foundation and other contributors, https://jquery.org/ + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/jquery/jquery + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +All files located in the node_modules and external directories are +externally maintained libraries used by this software which have their +own licenses; we recommend you read them, as their terms may differ from +the terms above. diff --git a/app/bower_components/jquery/README.md b/app/bower_components/jquery/README.md new file mode 100644 index 0000000..ba3174a --- /dev/null +++ b/app/bower_components/jquery/README.md @@ -0,0 +1,65 @@ +# jQuery + +> jQuery is a fast, small, and feature-rich JavaScript library. + +For information on how to get started and how to use jQuery, please see [jQuery's documentation](http://api.jquery.com/). +For source files and issues, please visit the [jQuery repo](https://github.com/jquery/jquery). + +## Including jQuery + +Below are some of the most common ways to include jQuery. + +### Browser + +#### Script tag + +```html + +``` + +#### Babel + +[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. + +```js +import $ from "jquery"; +``` + +#### Browserify/Webpack + +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... + +```js +var $ = require("jquery"); +``` + +#### AMD (Asynchronous Module Definition) + +AMD is a module format built for the browser. For more information, we recommend [require.js' documentation](http://requirejs.org/docs/whyamd.html). + +```js +define(["jquery"], function($) { + +}); +``` + +### Node + +To include jQuery in [Node](nodejs.org), first install with npm. + +```sh +npm install jquery +``` + +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. + +```js +require("jsdom").env("", function(err, window) { + if (err) { + console.error(err); + return; + } + + var $ = require("jquery")(window); +}); +``` diff --git a/app/bower_components/jquery/bower.json b/app/bower_components/jquery/bower.json new file mode 100644 index 0000000..95798d5 --- /dev/null +++ b/app/bower_components/jquery/bower.json @@ -0,0 +1,14 @@ +{ + "name": "jquery", + "main": "dist/jquery.js", + "license": "MIT", + "ignore": [ + "package.json" + ], + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ] +} \ No newline at end of file diff --git a/app/bower_components/jquery/external/sizzle/LICENSE.txt b/app/bower_components/jquery/external/sizzle/LICENSE.txt new file mode 100644 index 0000000..dd7ce94 --- /dev/null +++ b/app/bower_components/jquery/external/sizzle/LICENSE.txt @@ -0,0 +1,36 @@ +Copyright jQuery Foundation and other contributors, https://jquery.org/ + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/jquery/sizzle + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +All files located in the node_modules and external directories are +externally maintained libraries used by this software which have their +own licenses; we recommend you read them, as their terms may differ from +the terms above. diff --git a/app/bower_components/jquery/external/sizzle/dist/sizzle.js b/app/bower_components/jquery/external/sizzle/dist/sizzle.js new file mode 100644 index 0000000..9b1e5ba --- /dev/null +++ b/app/bower_components/jquery/external/sizzle/dist/sizzle.js @@ -0,0 +1,2143 @@ +/*! + * Sizzle CSS Selector Engine v2.2.1 + * http://sizzlejs.com/ + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2015-10-17 + */ +(function( window ) { + +var i, + support, + Expr, + getText, + isXML, + tokenize, + compile, + select, + outermostContext, + sortInput, + hasDuplicate, + + // Local document vars + setDocument, + document, + docElem, + documentIsHTML, + rbuggyQSA, + rbuggyMatches, + matches, + contains, + + // Instance-specific data + expando = "sizzle" + 1 * new Date(), + preferredDoc = window.document, + dirruns = 0, + done = 0, + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + } + return 0; + }, + + // General-purpose constants + MAX_NEGATIVE = 1 << 31, + + // Instance methods + hasOwn = ({}).hasOwnProperty, + arr = [], + pop = arr.pop, + push_native = arr.push, + push = arr.push, + slice = arr.slice, + // Use a stripped-down indexOf as it's faster than native + // http://jsperf.com/thor-indexof-vs-for/5 + indexOf = function( list, elem ) { + var i = 0, + len = list.length; + for ( ; i < len; i++ ) { + if ( list[i] === elem ) { + return i; + } + } + return -1; + }, + + booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", + + // Regular expressions + + // http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + + // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier + identifier = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", + + // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors + attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + + // Operator (capture 2) + "*([*^$|!~]?=)" + whitespace + + // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + + "*\\]", + + pseudos = ":(" + identifier + ")(?:\\((" + + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: + // 1. quoted (capture 3; capture 4 or capture 5) + "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + + // 2. simple (capture 6) + "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + + // 3. anything else (capture 2) + ".*" + + ")\\)|)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rwhitespace = new RegExp( whitespace + "+", "g" ), + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), + + rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), + + rpseudo = new RegExp( pseudos ), + ridentifier = new RegExp( "^" + identifier + "$" ), + + matchExpr = { + "ID": new RegExp( "^#(" + identifier + ")" ), + "CLASS": new RegExp( "^\\.(" + identifier + ")" ), + "TAG": new RegExp( "^(" + identifier + "|[*])" ), + "ATTR": new RegExp( "^" + attributes ), + "PSEUDO": new RegExp( "^" + pseudos ), + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), + // For use in libraries implementing .is() + // We use this for POS matching in `select` + "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + }, + + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + + rnative = /^[^{]+\{\s*\[native \w/, + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rsibling = /[+~]/, + rescape = /'|\\/g, + + // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), + funescape = function( _, escaped, escapedWhitespace ) { + var high = "0x" + escaped - 0x10000; + // NaN means non-codepoint + // Support: Firefox<24 + // Workaround erroneous numeric interpretation of +"0x" + return high !== high || escapedWhitespace ? + escaped : + high < 0 ? + // BMP codepoint + String.fromCharCode( high + 0x10000 ) : + // Supplemental Plane codepoint (surrogate pair) + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }, + + // Used for iframes + // See setDocument() + // Removing the function wrapper causes a "Permission Denied" + // error in IE + unloadHandler = function() { + setDocument(); + }; + +// Optimize for push.apply( _, NodeList ) +try { + push.apply( + (arr = slice.call( preferredDoc.childNodes )), + preferredDoc.childNodes + ); + // Support: Android<4.0 + // Detect silently failing push.apply + arr[ preferredDoc.childNodes.length ].nodeType; +} catch ( e ) { + push = { apply: arr.length ? + + // Leverage slice if possible + function( target, els ) { + push_native.apply( target, slice.call(els) ); + } : + + // Support: IE<9 + // Otherwise append directly + function( target, els ) { + var j = target.length, + i = 0; + // Can't trust NodeList.length + while ( (target[j++] = els[i++]) ) {} + target.length = j - 1; + } + }; +} + +function Sizzle( selector, context, results, seed ) { + var m, i, elem, nid, nidselect, match, groups, newSelector, + newContext = context && context.ownerDocument, + + // nodeType defaults to 9, since context defaults to document + nodeType = context ? context.nodeType : 9; + + results = results || []; + + // Return early from calls with invalid selector or context + if ( typeof selector !== "string" || !selector || + nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { + + return results; + } + + // Try to shortcut find operations (as opposed to filters) in HTML documents + if ( !seed ) { + + if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { + setDocument( context ); + } + context = context || document; + + if ( documentIsHTML ) { + + // If the selector is sufficiently simple, try using a "get*By*" DOM method + // (excepting DocumentFragment context, where the methods don't exist) + if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) { + + // ID selector + if ( (m = match[1]) ) { + + // Document context + if ( nodeType === 9 ) { + if ( (elem = context.getElementById( m )) ) { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + + // Element context + } else { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( newContext && (elem = newContext.getElementById( m )) && + contains( context, elem ) && + elem.id === m ) { + + results.push( elem ); + return results; + } + } + + // Type selector + } else if ( match[2] ) { + push.apply( results, context.getElementsByTagName( selector ) ); + return results; + + // Class selector + } else if ( (m = match[3]) && support.getElementsByClassName && + context.getElementsByClassName ) { + + push.apply( results, context.getElementsByClassName( m ) ); + return results; + } + } + + // Take advantage of querySelectorAll + if ( support.qsa && + !compilerCache[ selector + " " ] && + (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { + + if ( nodeType !== 1 ) { + newContext = context; + newSelector = selector; + + // qSA looks outside Element context, which is not what we want + // Thanks to Andrew Dupont for this workaround technique + // Support: IE <=8 + // Exclude object elements + } else if ( context.nodeName.toLowerCase() !== "object" ) { + + // Capture the context ID, setting it first if necessary + if ( (nid = context.getAttribute( "id" )) ) { + nid = nid.replace( rescape, "\\$&" ); + } else { + context.setAttribute( "id", (nid = expando) ); + } + + // Prefix every selector in the list + groups = tokenize( selector ); + i = groups.length; + nidselect = ridentifier.test( nid ) ? "#" + nid : "[id='" + nid + "']"; + while ( i-- ) { + groups[i] = nidselect + " " + toSelector( groups[i] ); + } + newSelector = groups.join( "," ); + + // Expand context for sibling selectors + newContext = rsibling.test( selector ) && testContext( context.parentNode ) || + context; + } + + if ( newSelector ) { + try { + push.apply( results, + newContext.querySelectorAll( newSelector ) + ); + return results; + } catch ( qsaError ) { + } finally { + if ( nid === expando ) { + context.removeAttribute( "id" ); + } + } + } + } + } + } + + // All others + return select( selector.replace( rtrim, "$1" ), context, results, seed ); +} + +/** + * Create key-value caches of limited size + * @returns {function(string, object)} Returns the Object data after storing it on itself with + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) + * deleting the oldest entry + */ +function createCache() { + var keys = []; + + function cache( key, value ) { + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) + if ( keys.push( key + " " ) > Expr.cacheLength ) { + // Only keep the most recent entries + delete cache[ keys.shift() ]; + } + return (cache[ key + " " ] = value); + } + return cache; +} + +/** + * Mark a function for special use by Sizzle + * @param {Function} fn The function to mark + */ +function markFunction( fn ) { + fn[ expando ] = true; + return fn; +} + +/** + * Support testing using an element + * @param {Function} fn Passed the created div and expects a boolean result + */ +function assert( fn ) { + var div = document.createElement("div"); + + try { + return !!fn( div ); + } catch (e) { + return false; + } finally { + // Remove from its parent by default + if ( div.parentNode ) { + div.parentNode.removeChild( div ); + } + // release memory in IE + div = null; + } +} + +/** + * Adds the same handler for all of the specified attrs + * @param {String} attrs Pipe-separated list of attributes + * @param {Function} handler The method that will be applied + */ +function addHandle( attrs, handler ) { + var arr = attrs.split("|"), + i = arr.length; + + while ( i-- ) { + Expr.attrHandle[ arr[i] ] = handler; + } +} + +/** + * Checks document order of two siblings + * @param {Element} a + * @param {Element} b + * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b + */ +function siblingCheck( a, b ) { + var cur = b && a, + diff = cur && a.nodeType === 1 && b.nodeType === 1 && + ( ~b.sourceIndex || MAX_NEGATIVE ) - + ( ~a.sourceIndex || MAX_NEGATIVE ); + + // Use IE sourceIndex if available on both nodes + if ( diff ) { + return diff; + } + + // Check if b follows a + if ( cur ) { + while ( (cur = cur.nextSibling) ) { + if ( cur === b ) { + return -1; + } + } + } + + return a ? 1 : -1; +} + +/** + * Returns a function to use in pseudos for input types + * @param {String} type + */ +function createInputPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for buttons + * @param {String} type + */ +function createButtonPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for positionals + * @param {Function} fn + */ +function createPositionalPseudo( fn ) { + return markFunction(function( argument ) { + argument = +argument; + return markFunction(function( seed, matches ) { + var j, + matchIndexes = fn( [], seed.length, argument ), + i = matchIndexes.length; + + // Match elements found at the specified indexes + while ( i-- ) { + if ( seed[ (j = matchIndexes[i]) ] ) { + seed[j] = !(matches[j] = seed[j]); + } + } + }); + }); +} + +/** + * Checks a node for validity as a Sizzle context + * @param {Element|Object=} context + * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value + */ +function testContext( context ) { + return context && typeof context.getElementsByTagName !== "undefined" && context; +} + +// Expose support vars for convenience +support = Sizzle.support = {}; + +/** + * Detects XML nodes + * @param {Element|Object} elem An element or a document + * @returns {Boolean} True iff elem is a non-HTML XML node + */ +isXML = Sizzle.isXML = function( elem ) { + // documentElement is verified for cases where it doesn't yet exist + // (such as loading iframes in IE - #4833) + var documentElement = elem && (elem.ownerDocument || elem).documentElement; + return documentElement ? documentElement.nodeName !== "HTML" : false; +}; + +/** + * Sets document-related variables once based on the current document + * @param {Element|Object} [doc] An element or document object to use to set the document + * @returns {Object} Returns the current document + */ +setDocument = Sizzle.setDocument = function( node ) { + var hasCompare, parent, + doc = node ? node.ownerDocument || node : preferredDoc; + + // Return early if doc is invalid or already selected + if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { + return document; + } + + // Update global variables + document = doc; + docElem = document.documentElement; + documentIsHTML = !isXML( document ); + + // Support: IE 9-11, Edge + // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) + if ( (parent = document.defaultView) && parent.top !== parent ) { + // Support: IE 11 + if ( parent.addEventListener ) { + parent.addEventListener( "unload", unloadHandler, false ); + + // Support: IE 9 - 10 only + } else if ( parent.attachEvent ) { + parent.attachEvent( "onunload", unloadHandler ); + } + } + + /* Attributes + ---------------------------------------------------------------------- */ + + // Support: IE<8 + // Verify that getAttribute really returns attributes and not properties + // (excepting IE8 booleans) + support.attributes = assert(function( div ) { + div.className = "i"; + return !div.getAttribute("className"); + }); + + /* getElement(s)By* + ---------------------------------------------------------------------- */ + + // Check if getElementsByTagName("*") returns only elements + support.getElementsByTagName = assert(function( div ) { + div.appendChild( document.createComment("") ); + return !div.getElementsByTagName("*").length; + }); + + // Support: IE<9 + support.getElementsByClassName = rnative.test( document.getElementsByClassName ); + + // Support: IE<10 + // Check if getElementById returns elements by name + // The broken getElementById methods don't pick up programatically-set names, + // so use a roundabout getElementsByName test + support.getById = assert(function( div ) { + docElem.appendChild( div ).id = expando; + return !document.getElementsByName || !document.getElementsByName( expando ).length; + }); + + // ID find and filter + if ( support.getById ) { + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var m = context.getElementById( id ); + return m ? [ m ] : []; + } + }; + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + return elem.getAttribute("id") === attrId; + }; + }; + } else { + // Support: IE6/7 + // getElementById is not reliable as a find shortcut + delete Expr.find["ID"]; + + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== "undefined" && + elem.getAttributeNode("id"); + return node && node.value === attrId; + }; + }; + } + + // Tag + Expr.find["TAG"] = support.getElementsByTagName ? + function( tag, context ) { + if ( typeof context.getElementsByTagName !== "undefined" ) { + return context.getElementsByTagName( tag ); + + // DocumentFragment nodes don't have gEBTN + } else if ( support.qsa ) { + return context.querySelectorAll( tag ); + } + } : + + function( tag, context ) { + var elem, + tmp = [], + i = 0, + // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too + results = context.getElementsByTagName( tag ); + + // Filter out possible comments + if ( tag === "*" ) { + while ( (elem = results[i++]) ) { + if ( elem.nodeType === 1 ) { + tmp.push( elem ); + } + } + + return tmp; + } + return results; + }; + + // Class + Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { + if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { + return context.getElementsByClassName( className ); + } + }; + + /* QSA/matchesSelector + ---------------------------------------------------------------------- */ + + // QSA and matchesSelector support + + // matchesSelector(:active) reports false when true (IE9/Opera 11.5) + rbuggyMatches = []; + + // qSa(:focus) reports false when true (Chrome 21) + // We allow this because of a bug in IE8/9 that throws an error + // whenever `document.activeElement` is accessed on an iframe + // So, we allow :focus to pass through QSA all the time to avoid the IE error + // See http://bugs.jquery.com/ticket/13378 + rbuggyQSA = []; + + if ( (support.qsa = rnative.test( document.querySelectorAll )) ) { + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert(function( div ) { + // Select is set to empty string on purpose + // This is to test IE's treatment of not explicitly + // setting a boolean content attribute, + // since its presence should be enough + // http://bugs.jquery.com/ticket/12359 + docElem.appendChild( div ).innerHTML = "" + + ""; + + // Support: IE8, Opera 11-12.16 + // Nothing should be selected when empty strings follow ^= or $= or *= + // The test attribute must be unknown in Opera but "safe" for WinRT + // http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section + if ( div.querySelectorAll("[msallowcapture^='']").length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); + } + + // Support: IE8 + // Boolean attributes and "value" are not treated correctly + if ( !div.querySelectorAll("[selected]").length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); + } + + // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ + if ( !div.querySelectorAll( "[id~=" + expando + "-]" ).length ) { + rbuggyQSA.push("~="); + } + + // Webkit/Opera - :checked should return selected option elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // IE8 throws error here and will not see later tests + if ( !div.querySelectorAll(":checked").length ) { + rbuggyQSA.push(":checked"); + } + + // Support: Safari 8+, iOS 8+ + // https://bugs.webkit.org/show_bug.cgi?id=136851 + // In-page `selector#id sibing-combinator selector` fails + if ( !div.querySelectorAll( "a#" + expando + "+*" ).length ) { + rbuggyQSA.push(".#.+[+~]"); + } + }); + + assert(function( div ) { + // Support: Windows 8 Native Apps + // The type and name attributes are restricted during .innerHTML assignment + var input = document.createElement("input"); + input.setAttribute( "type", "hidden" ); + div.appendChild( input ).setAttribute( "name", "D" ); + + // Support: IE8 + // Enforce case-sensitivity of name attribute + if ( div.querySelectorAll("[name=d]").length ) { + rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); + } + + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) + // IE8 throws error here and will not see later tests + if ( !div.querySelectorAll(":enabled").length ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Opera 10-11 does not throw on post-comma invalid pseudos + div.querySelectorAll("*,:x"); + rbuggyQSA.push(",.*:"); + }); + } + + if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || + docElem.webkitMatchesSelector || + docElem.mozMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector) )) ) { + + assert(function( div ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + support.disconnectedMatch = matches.call( div, "div" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( div, "[s!='']:x" ); + rbuggyMatches.push( "!=", pseudos ); + }); + } + + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); + rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); + + /* Contains + ---------------------------------------------------------------------- */ + hasCompare = rnative.test( docElem.compareDocumentPosition ); + + // Element contains another + // Purposefully self-exclusive + // As in, an element does not contain itself + contains = hasCompare || rnative.test( docElem.contains ) ? + function( a, b ) { + var adown = a.nodeType === 9 ? a.documentElement : a, + bup = b && b.parentNode; + return a === bup || !!( bup && bup.nodeType === 1 && ( + adown.contains ? + adown.contains( bup ) : + a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 + )); + } : + function( a, b ) { + if ( b ) { + while ( (b = b.parentNode) ) { + if ( b === a ) { + return true; + } + } + } + return false; + }; + + /* Sorting + ---------------------------------------------------------------------- */ + + // Document order sorting + sortOrder = hasCompare ? + function( a, b ) { + + // Flag for duplicate removal + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + // Sort on method existence if only one input has compareDocumentPosition + var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; + if ( compare ) { + return compare; + } + + // Calculate position if both inputs belong to the same document + compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? + a.compareDocumentPosition( b ) : + + // Otherwise we know they are disconnected + 1; + + // Disconnected nodes + if ( compare & 1 || + (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { + + // Choose the first element that is related to our preferred document + if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { + return -1; + } + if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { + return 1; + } + + // Maintain original order + return sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + } + + return compare & 4 ? -1 : 1; + } : + function( a, b ) { + // Exit early if the nodes are identical + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + var cur, + i = 0, + aup = a.parentNode, + bup = b.parentNode, + ap = [ a ], + bp = [ b ]; + + // Parentless nodes are either documents or disconnected + if ( !aup || !bup ) { + return a === document ? -1 : + b === document ? 1 : + aup ? -1 : + bup ? 1 : + sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + + // If the nodes are siblings, we can do a quick check + } else if ( aup === bup ) { + return siblingCheck( a, b ); + } + + // Otherwise we need full lists of their ancestors for comparison + cur = a; + while ( (cur = cur.parentNode) ) { + ap.unshift( cur ); + } + cur = b; + while ( (cur = cur.parentNode) ) { + bp.unshift( cur ); + } + + // Walk down the tree looking for a discrepancy + while ( ap[i] === bp[i] ) { + i++; + } + + return i ? + // Do a sibling check if the nodes have a common ancestor + siblingCheck( ap[i], bp[i] ) : + + // Otherwise nodes in our document sort first + ap[i] === preferredDoc ? -1 : + bp[i] === preferredDoc ? 1 : + 0; + }; + + return document; +}; + +Sizzle.matches = function( expr, elements ) { + return Sizzle( expr, null, null, elements ); +}; + +Sizzle.matchesSelector = function( elem, expr ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + // Make sure that attribute selectors are quoted + expr = expr.replace( rattributeQuotes, "='$1']" ); + + if ( support.matchesSelector && documentIsHTML && + !compilerCache[ expr + " " ] && + ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && + ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { + + try { + var ret = matches.call( elem, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || support.disconnectedMatch || + // As well, disconnected nodes are said to be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11 ) { + return ret; + } + } catch (e) {} + } + + return Sizzle( expr, document, null, [ elem ] ).length > 0; +}; + +Sizzle.contains = function( context, elem ) { + // Set document vars if needed + if ( ( context.ownerDocument || context ) !== document ) { + setDocument( context ); + } + return contains( context, elem ); +}; + +Sizzle.attr = function( elem, name ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + var fn = Expr.attrHandle[ name.toLowerCase() ], + // Don't get fooled by Object.prototype properties (jQuery #13807) + val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? + fn( elem, name, !documentIsHTML ) : + undefined; + + return val !== undefined ? + val : + support.attributes || !documentIsHTML ? + elem.getAttribute( name ) : + (val = elem.getAttributeNode(name)) && val.specified ? + val.value : + null; +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +/** + * Document sorting and removing duplicates + * @param {ArrayLike} results + */ +Sizzle.uniqueSort = function( results ) { + var elem, + duplicates = [], + j = 0, + i = 0; + + // Unless we *know* we can detect duplicates, assume their presence + hasDuplicate = !support.detectDuplicates; + sortInput = !support.sortStable && results.slice( 0 ); + results.sort( sortOrder ); + + if ( hasDuplicate ) { + while ( (elem = results[i++]) ) { + if ( elem === results[ i ] ) { + j = duplicates.push( i ); + } + } + while ( j-- ) { + results.splice( duplicates[ j ], 1 ); + } + } + + // Clear input after sorting to release objects + // See https://github.com/jquery/sizzle/pull/225 + sortInput = null; + + return results; +}; + +/** + * Utility function for retrieving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +getText = Sizzle.getText = function( elem ) { + var node, + ret = "", + i = 0, + nodeType = elem.nodeType; + + if ( !nodeType ) { + // If no nodeType, this is expected to be an array + while ( (node = elem[i++]) ) { + // Do not traverse comment nodes + ret += getText( node ); + } + } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { + // Use textContent for elements + // innerText usage removed for consistency of new lines (jQuery #11153) + if ( typeof elem.textContent === "string" ) { + return elem.textContent; + } else { + // Traverse its children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + // Do not include comment or processing instruction nodes + + return ret; +}; + +Expr = Sizzle.selectors = { + + // Can be adjusted by the user + cacheLength: 50, + + createPseudo: markFunction, + + match: matchExpr, + + attrHandle: {}, + + find: {}, + + relative: { + ">": { dir: "parentNode", first: true }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: true }, + "~": { dir: "previousSibling" } + }, + + preFilter: { + "ATTR": function( match ) { + match[1] = match[1].replace( runescape, funescape ); + + // Move the given value to match[3] whether quoted or unquoted + match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); + + if ( match[2] === "~=" ) { + match[3] = " " + match[3] + " "; + } + + return match.slice( 0, 4 ); + }, + + "CHILD": function( match ) { + /* matches from matchExpr["CHILD"] + 1 type (only|nth|...) + 2 what (child|of-type) + 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 4 xn-component of xn+y argument ([+-]?\d*n|) + 5 sign of xn-component + 6 x of xn-component + 7 sign of y-component + 8 y of y-component + */ + match[1] = match[1].toLowerCase(); + + if ( match[1].slice( 0, 3 ) === "nth" ) { + // nth-* requires argument + if ( !match[3] ) { + Sizzle.error( match[0] ); + } + + // numeric x and y parameters for Expr.filter.CHILD + // remember that false/true cast respectively to 0/1 + match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); + match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); + + // other types prohibit arguments + } else if ( match[3] ) { + Sizzle.error( match[0] ); + } + + return match; + }, + + "PSEUDO": function( match ) { + var excess, + unquoted = !match[6] && match[2]; + + if ( matchExpr["CHILD"].test( match[0] ) ) { + return null; + } + + // Accept quoted arguments as-is + if ( match[3] ) { + match[2] = match[4] || match[5] || ""; + + // Strip excess characters from unquoted arguments + } else if ( unquoted && rpseudo.test( unquoted ) && + // Get excess from tokenize (recursively) + (excess = tokenize( unquoted, true )) && + // advance to the next closing parenthesis + (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { + + // excess is a negative index + match[0] = match[0].slice( 0, excess ); + match[2] = unquoted.slice( 0, excess ); + } + + // Return only captures needed by the pseudo filter method (type and argument) + return match.slice( 0, 3 ); + } + }, + + filter: { + + "TAG": function( nodeNameSelector ) { + var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); + return nodeNameSelector === "*" ? + function() { return true; } : + function( elem ) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + + "CLASS": function( className ) { + var pattern = classCache[ className + " " ]; + + return pattern || + (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && + classCache( className, function( elem ) { + return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" ); + }); + }, + + "ATTR": function( name, operator, check ) { + return function( elem ) { + var result = Sizzle.attr( elem, name ); + + if ( result == null ) { + return operator === "!="; + } + if ( !operator ) { + return true; + } + + result += ""; + + return operator === "=" ? result === check : + operator === "!=" ? result !== check : + operator === "^=" ? check && result.indexOf( check ) === 0 : + operator === "*=" ? check && result.indexOf( check ) > -1 : + operator === "$=" ? check && result.slice( -check.length ) === check : + operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : + operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : + false; + }; + }, + + "CHILD": function( type, what, argument, first, last ) { + var simple = type.slice( 0, 3 ) !== "nth", + forward = type.slice( -4 ) !== "last", + ofType = what === "of-type"; + + return first === 1 && last === 0 ? + + // Shortcut for :nth-*(n) + function( elem ) { + return !!elem.parentNode; + } : + + function( elem, context, xml ) { + var cache, uniqueCache, outerCache, node, nodeIndex, start, + dir = simple !== forward ? "nextSibling" : "previousSibling", + parent = elem.parentNode, + name = ofType && elem.nodeName.toLowerCase(), + useCache = !xml && !ofType, + diff = false; + + if ( parent ) { + + // :(first|last|only)-(child|of-type) + if ( simple ) { + while ( dir ) { + node = elem; + while ( (node = node[ dir ]) ) { + if ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) { + + return false; + } + } + // Reverse direction for :only-* (if we haven't yet done so) + start = dir = type === "only" && !start && "nextSibling"; + } + return true; + } + + start = [ forward ? parent.firstChild : parent.lastChild ]; + + // non-xml :nth-child(...) stores cache data on `parent` + if ( forward && useCache ) { + + // Seek `elem` from a previously-cached index + + // ...in a gzip-friendly way + node = parent; + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex && cache[ 2 ]; + node = nodeIndex && parent.childNodes[ nodeIndex ]; + + while ( (node = ++nodeIndex && node && node[ dir ] || + + // Fallback to seeking `elem` from the start + (diff = nodeIndex = 0) || start.pop()) ) { + + // When found, cache indexes on `parent` and break + if ( node.nodeType === 1 && ++diff && node === elem ) { + uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; + break; + } + } + + } else { + // Use previously-cached element index if available + if ( useCache ) { + // ...in a gzip-friendly way + node = elem; + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex; + } + + // xml :nth-child(...) + // or :nth-last-child(...) or :nth(-last)?-of-type(...) + if ( diff === false ) { + // Use the same loop as above to seek `elem` from the start + while ( (node = ++nodeIndex && node && node[ dir ] || + (diff = nodeIndex = 0) || start.pop()) ) { + + if ( ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) && + ++diff ) { + + // Cache the index of each encountered element + if ( useCache ) { + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + uniqueCache[ type ] = [ dirruns, diff ]; + } + + if ( node === elem ) { + break; + } + } + } + } + } + + // Incorporate the offset, then check against cycle size + diff -= last; + return diff === first || ( diff % first === 0 && diff / first >= 0 ); + } + }; + }, + + "PSEUDO": function( pseudo, argument ) { + // pseudo-class names are case-insensitive + // http://www.w3.org/TR/selectors/#pseudo-classes + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters + // Remember that setFilters inherits from pseudos + var args, + fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || + Sizzle.error( "unsupported pseudo: " + pseudo ); + + // The user may use createPseudo to indicate that + // arguments are needed to create the filter function + // just as Sizzle does + if ( fn[ expando ] ) { + return fn( argument ); + } + + // But maintain support for old signatures + if ( fn.length > 1 ) { + args = [ pseudo, pseudo, "", argument ]; + return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? + markFunction(function( seed, matches ) { + var idx, + matched = fn( seed, argument ), + i = matched.length; + while ( i-- ) { + idx = indexOf( seed, matched[i] ); + seed[ idx ] = !( matches[ idx ] = matched[i] ); + } + }) : + function( elem ) { + return fn( elem, 0, args ); + }; + } + + return fn; + } + }, + + pseudos: { + // Potentially complex pseudos + "not": markFunction(function( selector ) { + // Trim the selector passed to compile + // to avoid treating leading and trailing + // spaces as combinators + var input = [], + results = [], + matcher = compile( selector.replace( rtrim, "$1" ) ); + + return matcher[ expando ] ? + markFunction(function( seed, matches, context, xml ) { + var elem, + unmatched = matcher( seed, null, xml, [] ), + i = seed.length; + + // Match elements unmatched by `matcher` + while ( i-- ) { + if ( (elem = unmatched[i]) ) { + seed[i] = !(matches[i] = elem); + } + } + }) : + function( elem, context, xml ) { + input[0] = elem; + matcher( input, null, xml, results ); + // Don't keep the element (issue #299) + input[0] = null; + return !results.pop(); + }; + }), + + "has": markFunction(function( selector ) { + return function( elem ) { + return Sizzle( selector, elem ).length > 0; + }; + }), + + "contains": markFunction(function( text ) { + text = text.replace( runescape, funescape ); + return function( elem ) { + return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; + }; + }), + + // "Whether an element is represented by a :lang() selector + // is based solely on the element's language value + // being equal to the identifier C, + // or beginning with the identifier C immediately followed by "-". + // The matching of C against the element's language value is performed case-insensitively. + // The identifier C does not have to be a valid language name." + // http://www.w3.org/TR/selectors/#lang-pseudo + "lang": markFunction( function( lang ) { + // lang value must be a valid identifier + if ( !ridentifier.test(lang || "") ) { + Sizzle.error( "unsupported lang: " + lang ); + } + lang = lang.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + var elemLang; + do { + if ( (elemLang = documentIsHTML ? + elem.lang : + elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { + + elemLang = elemLang.toLowerCase(); + return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; + } + } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); + return false; + }; + }), + + // Miscellaneous + "target": function( elem ) { + var hash = window.location && window.location.hash; + return hash && hash.slice( 1 ) === elem.id; + }, + + "root": function( elem ) { + return elem === docElem; + }, + + "focus": function( elem ) { + return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); + }, + + // Boolean properties + "enabled": function( elem ) { + return elem.disabled === false; + }, + + "disabled": function( elem ) { + return elem.disabled === true; + }, + + "checked": function( elem ) { + // In CSS3, :checked should return both checked and selected elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + var nodeName = elem.nodeName.toLowerCase(); + return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); + }, + + "selected": function( elem ) { + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + // Contents + "empty": function( elem ) { + // http://www.w3.org/TR/selectors/#empty-pseudo + // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), + // but not by others (comment: 8; processing instruction: 7; etc.) + // nodeType < 6 works because attributes (2) do not appear as children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + if ( elem.nodeType < 6 ) { + return false; + } + } + return true; + }, + + "parent": function( elem ) { + return !Expr.pseudos["empty"]( elem ); + }, + + // Element/input types + "header": function( elem ) { + return rheader.test( elem.nodeName ); + }, + + "input": function( elem ) { + return rinputs.test( elem.nodeName ); + }, + + "button": function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === "button" || name === "button"; + }, + + "text": function( elem ) { + var attr; + return elem.nodeName.toLowerCase() === "input" && + elem.type === "text" && + + // Support: IE<8 + // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" + ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); + }, + + // Position-in-collection + "first": createPositionalPseudo(function() { + return [ 0 ]; + }), + + "last": createPositionalPseudo(function( matchIndexes, length ) { + return [ length - 1 ]; + }), + + "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { + return [ argument < 0 ? argument + length : argument ]; + }), + + "even": createPositionalPseudo(function( matchIndexes, length ) { + var i = 0; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "odd": createPositionalPseudo(function( matchIndexes, length ) { + var i = 1; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; --i >= 0; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; ++i < length; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }) + } +}; + +Expr.pseudos["nth"] = Expr.pseudos["eq"]; + +// Add button/input type pseudos +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { + Expr.pseudos[ i ] = createInputPseudo( i ); +} +for ( i in { submit: true, reset: true } ) { + Expr.pseudos[ i ] = createButtonPseudo( i ); +} + +// Easy API for creating new setFilters +function setFilters() {} +setFilters.prototype = Expr.filters = Expr.pseudos; +Expr.setFilters = new setFilters(); + +tokenize = Sizzle.tokenize = function( selector, parseOnly ) { + var matched, match, tokens, type, + soFar, groups, preFilters, + cached = tokenCache[ selector + " " ]; + + if ( cached ) { + return parseOnly ? 0 : cached.slice( 0 ); + } + + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + + while ( soFar ) { + + // Comma and first run + if ( !matched || (match = rcomma.exec( soFar )) ) { + if ( match ) { + // Don't consume trailing commas as valid + soFar = soFar.slice( match[0].length ) || soFar; + } + groups.push( (tokens = []) ); + } + + matched = false; + + // Combinators + if ( (match = rcombinators.exec( soFar )) ) { + matched = match.shift(); + tokens.push({ + value: matched, + // Cast descendant combinators to space + type: match[0].replace( rtrim, " " ) + }); + soFar = soFar.slice( matched.length ); + } + + // Filters + for ( type in Expr.filter ) { + if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || + (match = preFilters[ type ]( match ))) ) { + matched = match.shift(); + tokens.push({ + value: matched, + type: type, + matches: match + }); + soFar = soFar.slice( matched.length ); + } + } + + if ( !matched ) { + break; + } + } + + // Return the length of the invalid excess + // if we're just parsing + // Otherwise, throw an error or return tokens + return parseOnly ? + soFar.length : + soFar ? + Sizzle.error( selector ) : + // Cache the tokens + tokenCache( selector, groups ).slice( 0 ); +}; + +function toSelector( tokens ) { + var i = 0, + len = tokens.length, + selector = ""; + for ( ; i < len; i++ ) { + selector += tokens[i].value; + } + return selector; +} + +function addCombinator( matcher, combinator, base ) { + var dir = combinator.dir, + checkNonElements = base && dir === "parentNode", + doneName = done++; + + return combinator.first ? + // Check against closest ancestor/preceding element + function( elem, context, xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + return matcher( elem, context, xml ); + } + } + } : + + // Check against all ancestor/preceding elements + function( elem, context, xml ) { + var oldCache, uniqueCache, outerCache, + newCache = [ dirruns, doneName ]; + + // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching + if ( xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + if ( matcher( elem, context, xml ) ) { + return true; + } + } + } + } else { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + outerCache = elem[ expando ] || (elem[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {}); + + if ( (oldCache = uniqueCache[ dir ]) && + oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { + + // Assign to newCache so results back-propagate to previous elements + return (newCache[ 2 ] = oldCache[ 2 ]); + } else { + // Reuse newcache so results back-propagate to previous elements + uniqueCache[ dir ] = newCache; + + // A match means we're done; a fail means we have to keep checking + if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { + return true; + } + } + } + } + } + }; +} + +function elementMatcher( matchers ) { + return matchers.length > 1 ? + function( elem, context, xml ) { + var i = matchers.length; + while ( i-- ) { + if ( !matchers[i]( elem, context, xml ) ) { + return false; + } + } + return true; + } : + matchers[0]; +} + +function multipleContexts( selector, contexts, results ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + Sizzle( selector, contexts[i], results ); + } + return results; +} + +function condense( unmatched, map, filter, context, xml ) { + var elem, + newUnmatched = [], + i = 0, + len = unmatched.length, + mapped = map != null; + + for ( ; i < len; i++ ) { + if ( (elem = unmatched[i]) ) { + if ( !filter || filter( elem, context, xml ) ) { + newUnmatched.push( elem ); + if ( mapped ) { + map.push( i ); + } + } + } + } + + return newUnmatched; +} + +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { + if ( postFilter && !postFilter[ expando ] ) { + postFilter = setMatcher( postFilter ); + } + if ( postFinder && !postFinder[ expando ] ) { + postFinder = setMatcher( postFinder, postSelector ); + } + return markFunction(function( seed, results, context, xml ) { + var temp, i, elem, + preMap = [], + postMap = [], + preexisting = results.length, + + // Get initial elements from seed or context + elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), + + // Prefilter to get matcher input, preserving a map for seed-results synchronization + matcherIn = preFilter && ( seed || !selector ) ? + condense( elems, preMap, preFilter, context, xml ) : + elems, + + matcherOut = matcher ? + // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, + postFinder || ( seed ? preFilter : preexisting || postFilter ) ? + + // ...intermediate processing is necessary + [] : + + // ...otherwise use results directly + results : + matcherIn; + + // Find primary matches + if ( matcher ) { + matcher( matcherIn, matcherOut, context, xml ); + } + + // Apply postFilter + if ( postFilter ) { + temp = condense( matcherOut, postMap ); + postFilter( temp, [], context, xml ); + + // Un-match failing elements by moving them back to matcherIn + i = temp.length; + while ( i-- ) { + if ( (elem = temp[i]) ) { + matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); + } + } + } + + if ( seed ) { + if ( postFinder || preFilter ) { + if ( postFinder ) { + // Get the final matcherOut by condensing this intermediate into postFinder contexts + temp = []; + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) ) { + // Restore matcherIn since elem is not yet a final match + temp.push( (matcherIn[i] = elem) ); + } + } + postFinder( null, (matcherOut = []), temp, xml ); + } + + // Move matched elements from seed to results to keep them synchronized + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) && + (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) { + + seed[temp] = !(results[temp] = elem); + } + } + } + + // Add elements to results, through postFinder if defined + } else { + matcherOut = condense( + matcherOut === results ? + matcherOut.splice( preexisting, matcherOut.length ) : + matcherOut + ); + if ( postFinder ) { + postFinder( null, results, matcherOut, xml ); + } else { + push.apply( results, matcherOut ); + } + } + }); +} + +function matcherFromTokens( tokens ) { + var checkContext, matcher, j, + len = tokens.length, + leadingRelative = Expr.relative[ tokens[0].type ], + implicitRelative = leadingRelative || Expr.relative[" "], + i = leadingRelative ? 1 : 0, + + // The foundational matcher ensures that elements are reachable from top-level context(s) + matchContext = addCombinator( function( elem ) { + return elem === checkContext; + }, implicitRelative, true ), + matchAnyContext = addCombinator( function( elem ) { + return indexOf( checkContext, elem ) > -1; + }, implicitRelative, true ), + matchers = [ function( elem, context, xml ) { + var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( + (checkContext = context).nodeType ? + matchContext( elem, context, xml ) : + matchAnyContext( elem, context, xml ) ); + // Avoid hanging onto element (issue #299) + checkContext = null; + return ret; + } ]; + + for ( ; i < len; i++ ) { + if ( (matcher = Expr.relative[ tokens[i].type ]) ) { + matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; + } else { + matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); + + // Return special upon seeing a positional matcher + if ( matcher[ expando ] ) { + // Find the next relative operator (if any) for proper handling + j = ++i; + for ( ; j < len; j++ ) { + if ( Expr.relative[ tokens[j].type ] ) { + break; + } + } + return setMatcher( + i > 1 && elementMatcher( matchers ), + i > 1 && toSelector( + // If the preceding token was a descendant combinator, insert an implicit any-element `*` + tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) + ).replace( rtrim, "$1" ), + matcher, + i < j && matcherFromTokens( tokens.slice( i, j ) ), + j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), + j < len && toSelector( tokens ) + ); + } + matchers.push( matcher ); + } + } + + return elementMatcher( matchers ); +} + +function matcherFromGroupMatchers( elementMatchers, setMatchers ) { + var bySet = setMatchers.length > 0, + byElement = elementMatchers.length > 0, + superMatcher = function( seed, context, xml, results, outermost ) { + var elem, j, matcher, + matchedCount = 0, + i = "0", + unmatched = seed && [], + setMatched = [], + contextBackup = outermostContext, + // We must always have either seed elements or outermost context + elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), + // Use integer dirruns iff this is the outermost matcher + dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), + len = elems.length; + + if ( outermost ) { + outermostContext = context === document || context || outermost; + } + + // Add elements passing elementMatchers directly to results + // Support: IE<9, Safari + // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id + for ( ; i !== len && (elem = elems[i]) != null; i++ ) { + if ( byElement && elem ) { + j = 0; + if ( !context && elem.ownerDocument !== document ) { + setDocument( elem ); + xml = !documentIsHTML; + } + while ( (matcher = elementMatchers[j++]) ) { + if ( matcher( elem, context || document, xml) ) { + results.push( elem ); + break; + } + } + if ( outermost ) { + dirruns = dirrunsUnique; + } + } + + // Track unmatched elements for set filters + if ( bySet ) { + // They will have gone through all possible matchers + if ( (elem = !matcher && elem) ) { + matchedCount--; + } + + // Lengthen the array for every element, matched or not + if ( seed ) { + unmatched.push( elem ); + } + } + } + + // `i` is now the count of elements visited above, and adding it to `matchedCount` + // makes the latter nonnegative. + matchedCount += i; + + // Apply set filters to unmatched elements + // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` + // equals `i`), unless we didn't visit _any_ elements in the above loop because we have + // no element matchers and no seed. + // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that + // case, which will result in a "00" `matchedCount` that differs from `i` but is also + // numerically zero. + if ( bySet && i !== matchedCount ) { + j = 0; + while ( (matcher = setMatchers[j++]) ) { + matcher( unmatched, setMatched, context, xml ); + } + + if ( seed ) { + // Reintegrate element matches to eliminate the need for sorting + if ( matchedCount > 0 ) { + while ( i-- ) { + if ( !(unmatched[i] || setMatched[i]) ) { + setMatched[i] = pop.call( results ); + } + } + } + + // Discard index placeholder values to get only actual matches + setMatched = condense( setMatched ); + } + + // Add matches to results + push.apply( results, setMatched ); + + // Seedless set matches succeeding multiple successful matchers stipulate sorting + if ( outermost && !seed && setMatched.length > 0 && + ( matchedCount + setMatchers.length ) > 1 ) { + + Sizzle.uniqueSort( results ); + } + } + + // Override manipulation of globals by nested matchers + if ( outermost ) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + + return unmatched; + }; + + return bySet ? + markFunction( superMatcher ) : + superMatcher; +} + +compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { + var i, + setMatchers = [], + elementMatchers = [], + cached = compilerCache[ selector + " " ]; + + if ( !cached ) { + // Generate a function of recursive functions that can be used to check each element + if ( !match ) { + match = tokenize( selector ); + } + i = match.length; + while ( i-- ) { + cached = matcherFromTokens( match[i] ); + if ( cached[ expando ] ) { + setMatchers.push( cached ); + } else { + elementMatchers.push( cached ); + } + } + + // Cache the compiled function + cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); + + // Save selector and tokenization + cached.selector = selector; + } + return cached; +}; + +/** + * A low-level selection function that works with Sizzle's compiled + * selector functions + * @param {String|Function} selector A selector or a pre-compiled + * selector function built with Sizzle.compile + * @param {Element} context + * @param {Array} [results] + * @param {Array} [seed] A set of elements to match against + */ +select = Sizzle.select = function( selector, context, results, seed ) { + var i, tokens, token, type, find, + compiled = typeof selector === "function" && selector, + match = !seed && tokenize( (selector = compiled.selector || selector) ); + + results = results || []; + + // Try to minimize operations if there is only one selector in the list and no seed + // (the latter of which guarantees us context) + if ( match.length === 1 ) { + + // Reduce context if the leading compound selector is an ID + tokens = match[0] = match[0].slice( 0 ); + if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && + support.getById && context.nodeType === 9 && documentIsHTML && + Expr.relative[ tokens[1].type ] ) { + + context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; + if ( !context ) { + return results; + + // Precompiled matchers will still verify ancestry, so step up a level + } else if ( compiled ) { + context = context.parentNode; + } + + selector = selector.slice( tokens.shift().value.length ); + } + + // Fetch a seed set for right-to-left matching + i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; + while ( i-- ) { + token = tokens[i]; + + // Abort if we hit a combinator + if ( Expr.relative[ (type = token.type) ] ) { + break; + } + if ( (find = Expr.find[ type ]) ) { + // Search, expanding context for leading sibling combinators + if ( (seed = find( + token.matches[0].replace( runescape, funescape ), + rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context + )) ) { + + // If seed is empty or no tokens remain, we can return early + tokens.splice( i, 1 ); + selector = seed.length && toSelector( tokens ); + if ( !selector ) { + push.apply( results, seed ); + return results; + } + + break; + } + } + } + } + + // Compile and execute a filtering function if one is not provided + // Provide `match` to avoid retokenization if we modified the selector above + ( compiled || compile( selector, match ) )( + seed, + context, + !documentIsHTML, + results, + !context || rsibling.test( selector ) && testContext( context.parentNode ) || context + ); + return results; +}; + +// One-time assignments + +// Sort stability +support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; + +// Support: Chrome 14-35+ +// Always assume duplicates if they aren't passed to the comparison function +support.detectDuplicates = !!hasDuplicate; + +// Initialize against the default document +setDocument(); + +// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) +// Detached nodes confoundingly follow *each other* +support.sortDetached = assert(function( div1 ) { + // Should return 1, but returns 4 (following) + return div1.compareDocumentPosition( document.createElement("div") ) & 1; +}); + +// Support: IE<8 +// Prevent attribute/property "interpolation" +// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !assert(function( div ) { + div.innerHTML = ""; + return div.firstChild.getAttribute("href") === "#" ; +}) ) { + addHandle( "type|href|height|width", function( elem, name, isXML ) { + if ( !isXML ) { + return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); + } + }); +} + +// Support: IE<9 +// Use defaultValue in place of getAttribute("value") +if ( !support.attributes || !assert(function( div ) { + div.innerHTML = ""; + div.firstChild.setAttribute( "value", "" ); + return div.firstChild.getAttribute( "value" ) === ""; +}) ) { + addHandle( "value", function( elem, name, isXML ) { + if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { + return elem.defaultValue; + } + }); +} + +// Support: IE<9 +// Use getAttributeNode to fetch booleans when getAttribute lies +if ( !assert(function( div ) { + return div.getAttribute("disabled") == null; +}) ) { + addHandle( booleans, function( elem, name, isXML ) { + var val; + if ( !isXML ) { + return elem[ name ] === true ? name.toLowerCase() : + (val = elem.getAttributeNode( name )) && val.specified ? + val.value : + null; + } + }); +} + +// EXPOSE +if ( typeof define === "function" && define.amd ) { + define(function() { return Sizzle; }); +// Sizzle requires that there be a global window in Common-JS like environments +} else if ( typeof module !== "undefined" && module.exports ) { + module.exports = Sizzle; +} else { + window.Sizzle = Sizzle; +} +// EXPOSE + +})( window ); diff --git a/app/bower_components/jquery/external/sizzle/dist/sizzle.min.js b/app/bower_components/jquery/external/sizzle/dist/sizzle.min.js new file mode 100644 index 0000000..8558975 --- /dev/null +++ b/app/bower_components/jquery/external/sizzle/dist/sizzle.min.js @@ -0,0 +1,3 @@ +/*! Sizzle v2.2.1 | (c) jQuery Foundation, Inc. | jquery.org/license */ +!function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ga(),z=ga(),A=ga(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+M+"))|)"+L+"*\\]",O=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+N+")*)|.*)\\)|)",P=new RegExp(L+"+","g"),Q=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),R=new RegExp("^"+L+"*,"+L+"*"),S=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),T=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),U=new RegExp(O),V=new RegExp("^"+M+"$"),W={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M+"|[*])"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},X=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Z=/^[^{]+\{\s*\[native \w/,$=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,_=/[+~]/,aa=/'|\\/g,ba=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),ca=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},da=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(ea){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fa(a,b,d,e){var f,h,j,k,l,o,r,s,w=b&&b.ownerDocument,x=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==x&&9!==x&&11!==x)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==x&&(o=$.exec(a)))if(f=o[1]){if(9===x){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(w&&(j=w.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(o[2])return H.apply(d,b.getElementsByTagName(a)),d;if((f=o[3])&&c.getElementsByClassName&&b.getElementsByClassName)return H.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==x)w=b,s=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(aa,"\\$&"):b.setAttribute("id",k=u),r=g(a),h=r.length,l=V.test(k)?"#"+k:"[id='"+k+"']";while(h--)r[h]=l+" "+qa(r[h]);s=r.join(","),w=_.test(a)&&oa(b.parentNode)||b}if(s)try{return H.apply(d,w.querySelectorAll(s)),d}catch(y){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(Q,"$1"),b,d,e)}function ga(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ha(a){return a[u]=!0,a}function ia(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ja(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function ka(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function la(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function na(a){return ha(function(b){return b=+b,ha(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function oa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=fa.support={},f=fa.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fa.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ia(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ia(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Z.test(n.getElementsByClassName),c.getById=ia(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return"undefined"!=typeof b.getElementsByClassName&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=Z.test(n.querySelectorAll))&&(ia(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ia(function(a){var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Z.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ia(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",O)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Z.test(o.compareDocumentPosition),t=b||Z.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return ka(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?ka(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},fa.matches=function(a,b){return fa(a,null,null,b)},fa.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(T,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fa(b,n,null,[a]).length>0},fa.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fa.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fa.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fa.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fa.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fa.selectors={cacheLength:50,createPseudo:ha,match:W,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ba,ca),a[3]=(a[3]||a[4]||a[5]||"").replace(ba,ca),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fa.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fa.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return W.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&U.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ba,ca).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fa.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(P," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fa.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ha(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ha(function(a){var b=[],c=[],d=h(a.replace(Q,"$1"));return d[u]?ha(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ha(function(a){return function(b){return fa(a,b).length>0}}),contains:ha(function(a){return a=a.replace(ba,ca),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ha(function(a){return V.test(a||"")||fa.error("unsupported lang: "+a),a=a.replace(ba,ca).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Y.test(a.nodeName)},input:function(a){return X.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:na(function(){return[0]}),last:na(function(a,b){return[b-1]}),eq:na(function(a,b,c){return[0>c?c+b:c]}),even:na(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:na(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:na(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:na(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function ra(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j,k=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(j=b[u]||(b[u]={}),i=j[b.uniqueID]||(j[b.uniqueID]={}),(h=i[d])&&h[0]===w&&h[1]===f)return k[2]=h[2];if(i[d]=k,k[2]=a(b,c,g))return!0}}}function sa(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ta(a,b,c){for(var d=0,e=b.length;e>d;d++)fa(a,b[d],c);return c}function ua(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function va(a,b,c,d,e,f){return d&&!d[u]&&(d=va(d)),e&&!e[u]&&(e=va(e,f)),ha(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ta(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ua(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ua(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ua(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function wa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ra(function(a){return a===b},h,!0),l=ra(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[ra(sa(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return va(i>1&&sa(m),i>1&&qa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(Q,"$1"),c,e>i&&wa(a.slice(i,e)),f>e&&wa(a=a.slice(e)),f>e&&qa(a))}m.push(c)}return sa(m)}function xa(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=F.call(i));u=ua(u)}H.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&fa.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ha(f):f}h=fa.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xa(e,d)),f.selector=a}return f},i=fa.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ba,ca),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=W.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ba,ca),_.test(j[0].type)&&oa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qa(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,!b||_.test(a)&&oa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ia(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ia(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ja("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ia(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ja("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ia(function(a){return null==a.getAttribute("disabled")})||ja(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),"function"==typeof define&&define.amd?define(function(){return fa}):"undefined"!=typeof module&&module.exports?module.exports=fa:a.Sizzle=fa}(window); +//# sourceMappingURL=sizzle.min.map \ No newline at end of file diff --git a/app/bower_components/jquery/external/sizzle/dist/sizzle.min.map b/app/bower_components/jquery/external/sizzle/dist/sizzle.min.map new file mode 100644 index 0000000..5438e0e --- /dev/null +++ b/app/bower_components/jquery/external/sizzle/dist/sizzle.min.map @@ -0,0 +1 @@ +{"version":3,"file":"sizzle.min.js","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","sortOrder","a","b","MAX_NEGATIVE","hasOwn","hasOwnProperty","arr","pop","push_native","push","slice","indexOf","list","elem","len","length","booleans","whitespace","identifier","attributes","pseudos","rwhitespace","RegExp","rtrim","rcomma","rcombinators","rattributeQuotes","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rnative","rquickExpr","rsibling","rescape","runescape","funescape","_","escaped","escapedWhitespace","high","String","fromCharCode","unloadHandler","apply","call","childNodes","nodeType","e","target","els","j","Sizzle","selector","context","results","seed","m","nid","nidselect","match","groups","newSelector","newContext","ownerDocument","exec","getElementById","id","getElementsByTagName","getElementsByClassName","qsa","test","nodeName","toLowerCase","getAttribute","replace","setAttribute","toSelector","join","testContext","parentNode","querySelectorAll","qsaError","removeAttribute","keys","cache","key","value","cacheLength","shift","markFunction","fn","assert","div","createElement","removeChild","addHandle","attrs","handler","split","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createInputPseudo","type","name","createButtonPseudo","createPositionalPseudo","argument","matchIndexes","documentElement","node","hasCompare","parent","doc","defaultView","top","addEventListener","attachEvent","className","appendChild","createComment","getById","getElementsByName","find","filter","attrId","getAttributeNode","tag","tmp","innerHTML","input","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","expr","elements","ret","attr","val","undefined","specified","error","msg","Error","uniqueSort","duplicates","detectDuplicates","sortStable","sort","splice","textContent","firstChild","nodeValue","selectors","createPseudo","relative",">","dir","first"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","result","what","last","simple","forward","ofType","xml","uniqueCache","outerCache","nodeIndex","start","useCache","lastChild","uniqueID","pseudo","args","setFilters","idx","matched","not","matcher","unmatched","has","text","innerText","lang","elemLang","hash","location","root","focus","activeElement","hasFocus","href","tabIndex","enabled","disabled","checked","selected","selectedIndex","empty","header","button","eq","even","odd","lt","gt","radio","checkbox","file","password","image","submit","reset","prototype","filters","parseOnly","tokens","soFar","preFilters","cached","addCombinator","combinator","base","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","multipleContexts","contexts","condense","map","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","elems","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","concat","matcherFromGroupMatchers","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","Math","random","token","compiled","div1","defaultValue","define","amd","module","exports"],"mappings":"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"} \ No newline at end of file diff --git a/app/bower_components/jquery/src/.jshintrc b/app/bower_components/jquery/src/.jshintrc new file mode 100644 index 0000000..ea3549d --- /dev/null +++ b/app/bower_components/jquery/src/.jshintrc @@ -0,0 +1,29 @@ +{ + "boss": true, + "curly": true, + "eqeqeq": true, + "eqnull": true, + "expr": true, + "immed": true, + "noarg": true, + "quotmark": "double", + "undef": true, + "unused": true, + + "sub": true, + + // Support: IE < 10, Android < 4.1 + // The above browsers are failing a lot of tests in the ES5 + // test suite at http://test262.ecmascript.org. + "es3": true, + + "globals": { + "window": true, + "JSON": false, + + "jQuery": true, + "define": true, + "module": true, + "noGlobal": true + } +} diff --git a/app/bower_components/jquery/src/ajax.js b/app/bower_components/jquery/src/ajax.js new file mode 100644 index 0000000..ba32248 --- /dev/null +++ b/app/bower_components/jquery/src/ajax.js @@ -0,0 +1,845 @@ +define( [ + "./core", + "./var/document", + "./var/rnotwhite", + "./ajax/var/location", + "./ajax/var/nonce", + "./ajax/var/rquery", + + "./core/init", + "./ajax/parseJSON", + "./ajax/parseXML", + "./event/trigger", + "./deferred" +], function( jQuery, document, rnotwhite, location, nonce, rquery ) { + +var + rhash = /#.*$/, + rts = /([?&])_=[^&]*/, + rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, + + // #7653, #8125, #8152: local protocol detection + rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, + rnoContent = /^(?:GET|HEAD)$/, + rprotocol = /^\/\//, + + /* Prefilters + * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) + * 2) These are called: + * - BEFORE asking for a transport + * - AFTER param serialization (s.data is a string if s.processData is true) + * 3) key is the dataType + * 4) the catchall symbol "*" can be used + * 5) execution will start with transport dataType and THEN continue down to "*" if needed + */ + prefilters = {}, + + /* Transports bindings + * 1) key is the dataType + * 2) the catchall symbol "*" can be used + * 3) selection will start with transport dataType and THEN go to "*" if needed + */ + transports = {}, + + // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression + allTypes = "*/".concat( "*" ), + + // Anchor tag for parsing the document origin + originAnchor = document.createElement( "a" ); + originAnchor.href = location.href; + +// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport +function addToPrefiltersOrTransports( structure ) { + + // dataTypeExpression is optional and defaults to "*" + return function( dataTypeExpression, func ) { + + if ( typeof dataTypeExpression !== "string" ) { + func = dataTypeExpression; + dataTypeExpression = "*"; + } + + var dataType, + i = 0, + dataTypes = dataTypeExpression.toLowerCase().match( rnotwhite ) || []; + + if ( jQuery.isFunction( func ) ) { + + // For each dataType in the dataTypeExpression + while ( ( dataType = dataTypes[ i++ ] ) ) { + + // Prepend if requested + if ( dataType[ 0 ] === "+" ) { + dataType = dataType.slice( 1 ) || "*"; + ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func ); + + // Otherwise append + } else { + ( structure[ dataType ] = structure[ dataType ] || [] ).push( func ); + } + } + } + }; +} + +// Base inspection function for prefilters and transports +function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { + + var inspected = {}, + seekingTransport = ( structure === transports ); + + function inspect( dataType ) { + var selected; + inspected[ dataType ] = true; + jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { + var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); + if ( typeof dataTypeOrTransport === "string" && + !seekingTransport && !inspected[ dataTypeOrTransport ] ) { + + options.dataTypes.unshift( dataTypeOrTransport ); + inspect( dataTypeOrTransport ); + return false; + } else if ( seekingTransport ) { + return !( selected = dataTypeOrTransport ); + } + } ); + return selected; + } + + return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); +} + +// A special extend for ajax options +// that takes "flat" options (not to be deep extended) +// Fixes #9887 +function ajaxExtend( target, src ) { + var key, deep, + flatOptions = jQuery.ajaxSettings.flatOptions || {}; + + for ( key in src ) { + if ( src[ key ] !== undefined ) { + ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; + } + } + if ( deep ) { + jQuery.extend( true, target, deep ); + } + + return target; +} + +/* Handles responses to an ajax request: + * - finds the right dataType (mediates between content-type and expected dataType) + * - returns the corresponding response + */ +function ajaxHandleResponses( s, jqXHR, responses ) { + + var ct, type, finalDataType, firstDataType, + contents = s.contents, + dataTypes = s.dataTypes; + + // Remove auto dataType and get content-type in the process + while ( dataTypes[ 0 ] === "*" ) { + dataTypes.shift(); + if ( ct === undefined ) { + ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" ); + } + } + + // Check if we're dealing with a known content-type + if ( ct ) { + for ( type in contents ) { + if ( contents[ type ] && contents[ type ].test( ct ) ) { + dataTypes.unshift( type ); + break; + } + } + } + + // Check to see if we have a response for the expected dataType + if ( dataTypes[ 0 ] in responses ) { + finalDataType = dataTypes[ 0 ]; + } else { + + // Try convertible dataTypes + for ( type in responses ) { + if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) { + finalDataType = type; + break; + } + if ( !firstDataType ) { + firstDataType = type; + } + } + + // Or just use first one + finalDataType = finalDataType || firstDataType; + } + + // If we found a dataType + // We add the dataType to the list if needed + // and return the corresponding response + if ( finalDataType ) { + if ( finalDataType !== dataTypes[ 0 ] ) { + dataTypes.unshift( finalDataType ); + } + return responses[ finalDataType ]; + } +} + +/* Chain conversions given the request and the original response + * Also sets the responseXXX fields on the jqXHR instance + */ +function ajaxConvert( s, response, jqXHR, isSuccess ) { + var conv2, current, conv, tmp, prev, + converters = {}, + + // Work with a copy of dataTypes in case we need to modify it for conversion + dataTypes = s.dataTypes.slice(); + + // Create converters map with lowercased keys + if ( dataTypes[ 1 ] ) { + for ( conv in s.converters ) { + converters[ conv.toLowerCase() ] = s.converters[ conv ]; + } + } + + current = dataTypes.shift(); + + // Convert to each sequential dataType + while ( current ) { + + if ( s.responseFields[ current ] ) { + jqXHR[ s.responseFields[ current ] ] = response; + } + + // Apply the dataFilter if provided + if ( !prev && isSuccess && s.dataFilter ) { + response = s.dataFilter( response, s.dataType ); + } + + prev = current; + current = dataTypes.shift(); + + if ( current ) { + + // There's only work to do if current dataType is non-auto + if ( current === "*" ) { + + current = prev; + + // Convert response if prev dataType is non-auto and differs from current + } else if ( prev !== "*" && prev !== current ) { + + // Seek a direct converter + conv = converters[ prev + " " + current ] || converters[ "* " + current ]; + + // If none found, seek a pair + if ( !conv ) { + for ( conv2 in converters ) { + + // If conv2 outputs current + tmp = conv2.split( " " ); + if ( tmp[ 1 ] === current ) { + + // If prev can be converted to accepted input + conv = converters[ prev + " " + tmp[ 0 ] ] || + converters[ "* " + tmp[ 0 ] ]; + if ( conv ) { + + // Condense equivalence converters + if ( conv === true ) { + conv = converters[ conv2 ]; + + // Otherwise, insert the intermediate dataType + } else if ( converters[ conv2 ] !== true ) { + current = tmp[ 0 ]; + dataTypes.unshift( tmp[ 1 ] ); + } + break; + } + } + } + } + + // Apply converter (if not an equivalence) + if ( conv !== true ) { + + // Unless errors are allowed to bubble, catch and return them + if ( conv && s.throws ) { + response = conv( response ); + } else { + try { + response = conv( response ); + } catch ( e ) { + return { + state: "parsererror", + error: conv ? e : "No conversion from " + prev + " to " + current + }; + } + } + } + } + } + } + + return { state: "success", data: response }; +} + +jQuery.extend( { + + // Counter for holding the number of active queries + active: 0, + + // Last-Modified header cache for next request + lastModified: {}, + etag: {}, + + ajaxSettings: { + url: location.href, + type: "GET", + isLocal: rlocalProtocol.test( location.protocol ), + global: true, + processData: true, + async: true, + contentType: "application/x-www-form-urlencoded; charset=UTF-8", + /* + timeout: 0, + data: null, + dataType: null, + username: null, + password: null, + cache: null, + throws: false, + traditional: false, + headers: {}, + */ + + accepts: { + "*": allTypes, + 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" + }, + + // Data converters + // Keys separate source (or catchall "*") and destination types with a single space + converters: { + + // Convert anything to text + "* text": String, + + // Text to html (true = no transformation) + "text html": true, + + // Evaluate text as a json expression + "text json": jQuery.parseJSON, + + // Parse text as xml + "text xml": jQuery.parseXML + }, + + // For options that shouldn't be deep extended: + // you can add your own custom options here if + // and when you create one that shouldn't be + // deep extended (see ajaxExtend) + flatOptions: { + url: true, + context: true + } + }, + + // Creates a full fledged settings object into target + // with both ajaxSettings and settings fields. + // If target is omitted, writes into ajaxSettings. + ajaxSetup: function( target, settings ) { + return settings ? + + // Building a settings object + ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : + + // Extending ajaxSettings + ajaxExtend( jQuery.ajaxSettings, target ); + }, + + ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), + ajaxTransport: addToPrefiltersOrTransports( transports ), + + // Main method + ajax: function( url, options ) { + + // If url is an object, simulate pre-1.5 signature + if ( typeof url === "object" ) { + options = url; + url = undefined; + } + + // Force options to be an object + options = options || {}; + + var transport, + + // URL without anti-cache param + cacheURL, + + // Response headers + responseHeadersString, + responseHeaders, + + // timeout handle + timeoutTimer, + + // Url cleanup var + urlAnchor, + + // To know if global events are to be dispatched + fireGlobals, + + // Loop variable + i, + + // Create the final options object + s = jQuery.ajaxSetup( {}, options ), + + // Callbacks context + callbackContext = s.context || s, + + // Context for global events is callbackContext if it is a DOM node or jQuery collection + globalEventContext = s.context && + ( callbackContext.nodeType || callbackContext.jquery ) ? + jQuery( callbackContext ) : + jQuery.event, + + // Deferreds + deferred = jQuery.Deferred(), + completeDeferred = jQuery.Callbacks( "once memory" ), + + // Status-dependent callbacks + statusCode = s.statusCode || {}, + + // Headers (they are sent all at once) + requestHeaders = {}, + requestHeadersNames = {}, + + // The jqXHR state + state = 0, + + // Default abort message + strAbort = "canceled", + + // Fake xhr + jqXHR = { + readyState: 0, + + // Builds headers hashtable if needed + getResponseHeader: function( key ) { + var match; + if ( state === 2 ) { + if ( !responseHeaders ) { + responseHeaders = {}; + while ( ( match = rheaders.exec( responseHeadersString ) ) ) { + responseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ]; + } + } + match = responseHeaders[ key.toLowerCase() ]; + } + return match == null ? null : match; + }, + + // Raw string + getAllResponseHeaders: function() { + return state === 2 ? responseHeadersString : null; + }, + + // Caches the header + setRequestHeader: function( name, value ) { + var lname = name.toLowerCase(); + if ( !state ) { + name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name; + requestHeaders[ name ] = value; + } + return this; + }, + + // Overrides response content-type header + overrideMimeType: function( type ) { + if ( !state ) { + s.mimeType = type; + } + return this; + }, + + // Status-dependent callbacks + statusCode: function( map ) { + var code; + if ( map ) { + if ( state < 2 ) { + for ( code in map ) { + + // Lazy-add the new callback in a way that preserves old ones + statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; + } + } else { + + // Execute the appropriate callbacks + jqXHR.always( map[ jqXHR.status ] ); + } + } + return this; + }, + + // Cancel the request + abort: function( statusText ) { + var finalText = statusText || strAbort; + if ( transport ) { + transport.abort( finalText ); + } + done( 0, finalText ); + return this; + } + }; + + // Attach deferreds + deferred.promise( jqXHR ).complete = completeDeferred.add; + jqXHR.success = jqXHR.done; + jqXHR.error = jqXHR.fail; + + // Remove hash character (#7531: and string promotion) + // Add protocol if not provided (prefilters might expect it) + // Handle falsy url in the settings object (#10093: consistency with old signature) + // We also use the url parameter if available + s.url = ( ( url || s.url || location.href ) + "" ).replace( rhash, "" ) + .replace( rprotocol, location.protocol + "//" ); + + // Alias method option to type as per ticket #12004 + s.type = options.method || options.type || s.method || s.type; + + // Extract dataTypes list + s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().match( rnotwhite ) || [ "" ]; + + // A cross-domain request is in order when the origin doesn't match the current origin. + if ( s.crossDomain == null ) { + urlAnchor = document.createElement( "a" ); + + // Support: IE8-11+ + // IE throws exception if url is malformed, e.g. http://example.com:80x/ + try { + urlAnchor.href = s.url; + + // Support: IE8-11+ + // Anchor's host property isn't correctly set when s.url is relative + urlAnchor.href = urlAnchor.href; + s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== + urlAnchor.protocol + "//" + urlAnchor.host; + } catch ( e ) { + + // If there is an error parsing the URL, assume it is crossDomain, + // it can be rejected by the transport if it is invalid + s.crossDomain = true; + } + } + + // Convert data if not already a string + if ( s.data && s.processData && typeof s.data !== "string" ) { + s.data = jQuery.param( s.data, s.traditional ); + } + + // Apply prefilters + inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); + + // If request was aborted inside a prefilter, stop there + if ( state === 2 ) { + return jqXHR; + } + + // We can fire global events as of now if asked to + // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118) + fireGlobals = jQuery.event && s.global; + + // Watch for a new set of requests + if ( fireGlobals && jQuery.active++ === 0 ) { + jQuery.event.trigger( "ajaxStart" ); + } + + // Uppercase the type + s.type = s.type.toUpperCase(); + + // Determine if request has content + s.hasContent = !rnoContent.test( s.type ); + + // Save the URL in case we're toying with the If-Modified-Since + // and/or If-None-Match header later on + cacheURL = s.url; + + // More options handling for requests with no content + if ( !s.hasContent ) { + + // If data is available, append data to url + if ( s.data ) { + cacheURL = ( s.url += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data ); + + // #9682: remove data so that it's not used in an eventual retry + delete s.data; + } + + // Add anti-cache in url if needed + if ( s.cache === false ) { + s.url = rts.test( cacheURL ) ? + + // If there is already a '_' parameter, set its value + cacheURL.replace( rts, "$1_=" + nonce++ ) : + + // Otherwise add one to the end + cacheURL + ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + nonce++; + } + } + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + if ( jQuery.lastModified[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); + } + if ( jQuery.etag[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); + } + } + + // Set the correct header, if data is being sent + if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { + jqXHR.setRequestHeader( "Content-Type", s.contentType ); + } + + // Set the Accepts header for the server, depending on the dataType + jqXHR.setRequestHeader( + "Accept", + s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ? + s.accepts[ s.dataTypes[ 0 ] ] + + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : + s.accepts[ "*" ] + ); + + // Check for headers option + for ( i in s.headers ) { + jqXHR.setRequestHeader( i, s.headers[ i ] ); + } + + // Allow custom headers/mimetypes and early abort + if ( s.beforeSend && + ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) { + + // Abort if not done already and return + return jqXHR.abort(); + } + + // Aborting is no longer a cancellation + strAbort = "abort"; + + // Install callbacks on deferreds + for ( i in { success: 1, error: 1, complete: 1 } ) { + jqXHR[ i ]( s[ i ] ); + } + + // Get transport + transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); + + // If no transport, we auto-abort + if ( !transport ) { + done( -1, "No Transport" ); + } else { + jqXHR.readyState = 1; + + // Send global event + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); + } + + // If request was aborted inside ajaxSend, stop there + if ( state === 2 ) { + return jqXHR; + } + + // Timeout + if ( s.async && s.timeout > 0 ) { + timeoutTimer = window.setTimeout( function() { + jqXHR.abort( "timeout" ); + }, s.timeout ); + } + + try { + state = 1; + transport.send( requestHeaders, done ); + } catch ( e ) { + + // Propagate exception as error if not done + if ( state < 2 ) { + done( -1, e ); + + // Simply rethrow otherwise + } else { + throw e; + } + } + } + + // Callback for when everything is done + function done( status, nativeStatusText, responses, headers ) { + var isSuccess, success, error, response, modified, + statusText = nativeStatusText; + + // Called once + if ( state === 2 ) { + return; + } + + // State is "done" now + state = 2; + + // Clear timeout if it exists + if ( timeoutTimer ) { + window.clearTimeout( timeoutTimer ); + } + + // Dereference transport for early garbage collection + // (no matter how long the jqXHR object will be used) + transport = undefined; + + // Cache response headers + responseHeadersString = headers || ""; + + // Set readyState + jqXHR.readyState = status > 0 ? 4 : 0; + + // Determine if successful + isSuccess = status >= 200 && status < 300 || status === 304; + + // Get response data + if ( responses ) { + response = ajaxHandleResponses( s, jqXHR, responses ); + } + + // Convert no matter what (that way responseXXX fields are always set) + response = ajaxConvert( s, response, jqXHR, isSuccess ); + + // If successful, handle type chaining + if ( isSuccess ) { + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + modified = jqXHR.getResponseHeader( "Last-Modified" ); + if ( modified ) { + jQuery.lastModified[ cacheURL ] = modified; + } + modified = jqXHR.getResponseHeader( "etag" ); + if ( modified ) { + jQuery.etag[ cacheURL ] = modified; + } + } + + // if no content + if ( status === 204 || s.type === "HEAD" ) { + statusText = "nocontent"; + + // if not modified + } else if ( status === 304 ) { + statusText = "notmodified"; + + // If we have data, let's convert it + } else { + statusText = response.state; + success = response.data; + error = response.error; + isSuccess = !error; + } + } else { + + // Extract error from statusText and normalize for non-aborts + error = statusText; + if ( status || !statusText ) { + statusText = "error"; + if ( status < 0 ) { + status = 0; + } + } + } + + // Set data for the fake xhr object + jqXHR.status = status; + jqXHR.statusText = ( nativeStatusText || statusText ) + ""; + + // Success/Error + if ( isSuccess ) { + deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); + } else { + deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); + } + + // Status-dependent callbacks + jqXHR.statusCode( statusCode ); + statusCode = undefined; + + if ( fireGlobals ) { + globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", + [ jqXHR, s, isSuccess ? success : error ] ); + } + + // Complete + completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); + + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); + + // Handle the global AJAX counter + if ( !( --jQuery.active ) ) { + jQuery.event.trigger( "ajaxStop" ); + } + } + } + + return jqXHR; + }, + + getJSON: function( url, data, callback ) { + return jQuery.get( url, data, callback, "json" ); + }, + + getScript: function( url, callback ) { + return jQuery.get( url, undefined, callback, "script" ); + } +} ); + +jQuery.each( [ "get", "post" ], function( i, method ) { + jQuery[ method ] = function( url, data, callback, type ) { + + // Shift arguments if data argument was omitted + if ( jQuery.isFunction( data ) ) { + type = type || callback; + callback = data; + data = undefined; + } + + // The url can be an options object (which then must have .url) + return jQuery.ajax( jQuery.extend( { + url: url, + type: method, + dataType: type, + data: data, + success: callback + }, jQuery.isPlainObject( url ) && url ) ); + }; +} ); + +return jQuery; +} ); diff --git a/app/bower_components/jquery/src/ajax/jsonp.js b/app/bower_components/jquery/src/ajax/jsonp.js new file mode 100644 index 0000000..666e5d1 --- /dev/null +++ b/app/bower_components/jquery/src/ajax/jsonp.js @@ -0,0 +1,100 @@ +define( [ + "../core", + "./var/nonce", + "./var/rquery", + "../ajax" +], function( jQuery, nonce, rquery ) { + +var oldCallbacks = [], + rjsonp = /(=)\?(?=&|$)|\?\?/; + +// Default jsonp settings +jQuery.ajaxSetup( { + jsonp: "callback", + jsonpCallback: function() { + var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) ); + this[ callback ] = true; + return callback; + } +} ); + +// Detect, normalize options and install callbacks for jsonp requests +jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) { + + var callbackName, overwritten, responseContainer, + jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ? + "url" : + typeof s.data === "string" && + ( s.contentType || "" ) + .indexOf( "application/x-www-form-urlencoded" ) === 0 && + rjsonp.test( s.data ) && "data" + ); + + // Handle iff the expected data type is "jsonp" or we have a parameter to set + if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) { + + // Get callback name, remembering preexisting value associated with it + callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ? + s.jsonpCallback() : + s.jsonpCallback; + + // Insert callback into url or form data + if ( jsonProp ) { + s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName ); + } else if ( s.jsonp !== false ) { + s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName; + } + + // Use data converter to retrieve json after script execution + s.converters[ "script json" ] = function() { + if ( !responseContainer ) { + jQuery.error( callbackName + " was not called" ); + } + return responseContainer[ 0 ]; + }; + + // Force json dataType + s.dataTypes[ 0 ] = "json"; + + // Install callback + overwritten = window[ callbackName ]; + window[ callbackName ] = function() { + responseContainer = arguments; + }; + + // Clean-up function (fires after converters) + jqXHR.always( function() { + + // If previous value didn't exist - remove it + if ( overwritten === undefined ) { + jQuery( window ).removeProp( callbackName ); + + // Otherwise restore preexisting value + } else { + window[ callbackName ] = overwritten; + } + + // Save back as free + if ( s[ callbackName ] ) { + + // Make sure that re-using the options doesn't screw things around + s.jsonpCallback = originalSettings.jsonpCallback; + + // Save the callback name for future use + oldCallbacks.push( callbackName ); + } + + // Call if it was a function and we have a response + if ( responseContainer && jQuery.isFunction( overwritten ) ) { + overwritten( responseContainer[ 0 ] ); + } + + responseContainer = overwritten = undefined; + } ); + + // Delegate to script + return "script"; + } +} ); + +} ); diff --git a/app/bower_components/jquery/src/ajax/load.js b/app/bower_components/jquery/src/ajax/load.js new file mode 100644 index 0000000..5ec3fa2 --- /dev/null +++ b/app/bower_components/jquery/src/ajax/load.js @@ -0,0 +1,83 @@ +define( [ + "../core", + "../core/parseHTML", + "../ajax", + "../traversing", + "../manipulation", + "../selector", + + // Optional event/alias dependency + "../event/alias" +], function( jQuery ) { + +// Keep a copy of the old load method +var _load = jQuery.fn.load; + +/** + * Load a url into a page + */ +jQuery.fn.load = function( url, params, callback ) { + if ( typeof url !== "string" && _load ) { + return _load.apply( this, arguments ); + } + + var selector, type, response, + self = this, + off = url.indexOf( " " ); + + if ( off > -1 ) { + selector = jQuery.trim( url.slice( off ) ); + url = url.slice( 0, off ); + } + + // If it's a function + if ( jQuery.isFunction( params ) ) { + + // We assume that it's the callback + callback = params; + params = undefined; + + // Otherwise, build a param string + } else if ( params && typeof params === "object" ) { + type = "POST"; + } + + // If we have elements to modify, make the request + if ( self.length > 0 ) { + jQuery.ajax( { + url: url, + + // If "type" variable is undefined, then "GET" method will be used. + // Make value of this field explicit since + // user can override it through ajaxSetup method + type: type || "GET", + dataType: "html", + data: params + } ).done( function( responseText ) { + + // Save response for use in complete callback + response = arguments; + + self.html( selector ? + + // If a selector was specified, locate the right elements in a dummy div + // Exclude scripts to avoid IE 'Permission Denied' errors + jQuery( "
" ).append( jQuery.parseHTML( responseText ) ).find( selector ) : + + // Otherwise use the full result + responseText ); + + // If the request succeeds, this function gets "data", "status", "jqXHR" + // but they are ignored because response was set above. + // If it fails, this function gets "jqXHR", "status", "error" + } ).always( callback && function( jqXHR, status ) { + self.each( function() { + callback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] ); + } ); + } ); + } + + return this; +}; + +} ); diff --git a/app/bower_components/jquery/src/ajax/parseJSON.js b/app/bower_components/jquery/src/ajax/parseJSON.js new file mode 100644 index 0000000..11918b0 --- /dev/null +++ b/app/bower_components/jquery/src/ajax/parseJSON.js @@ -0,0 +1,13 @@ +define( [ + "../core" +], function( jQuery ) { + +// Support: Android 2.3 +// Workaround failure to string-cast null input +jQuery.parseJSON = function( data ) { + return JSON.parse( data + "" ); +}; + +return jQuery.parseJSON; + +} ); diff --git a/app/bower_components/jquery/src/ajax/parseXML.js b/app/bower_components/jquery/src/ajax/parseXML.js new file mode 100644 index 0000000..6599aaf --- /dev/null +++ b/app/bower_components/jquery/src/ajax/parseXML.js @@ -0,0 +1,27 @@ +define( [ + "../core" +], function( jQuery ) { + +// Cross-browser xml parsing +jQuery.parseXML = function( data ) { + var xml; + if ( !data || typeof data !== "string" ) { + return null; + } + + // Support: IE9 + try { + xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); + } catch ( e ) { + xml = undefined; + } + + if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { + jQuery.error( "Invalid XML: " + data ); + } + return xml; +}; + +return jQuery.parseXML; + +} ); diff --git a/app/bower_components/jquery/src/ajax/script.js b/app/bower_components/jquery/src/ajax/script.js new file mode 100644 index 0000000..945bea9 --- /dev/null +++ b/app/bower_components/jquery/src/ajax/script.js @@ -0,0 +1,68 @@ +define( [ + "../core", + "../var/document", + "../ajax" +], function( jQuery, document ) { + +// Install script dataType +jQuery.ajaxSetup( { + accepts: { + script: "text/javascript, application/javascript, " + + "application/ecmascript, application/x-ecmascript" + }, + contents: { + script: /\b(?:java|ecma)script\b/ + }, + converters: { + "text script": function( text ) { + jQuery.globalEval( text ); + return text; + } + } +} ); + +// Handle cache's special case and crossDomain +jQuery.ajaxPrefilter( "script", function( s ) { + if ( s.cache === undefined ) { + s.cache = false; + } + if ( s.crossDomain ) { + s.type = "GET"; + } +} ); + +// Bind script tag hack transport +jQuery.ajaxTransport( "script", function( s ) { + + // This transport only deals with cross domain requests + if ( s.crossDomain ) { + var script, callback; + return { + send: function( _, complete ) { + script = jQuery( "