diff --git a/sdkjs-plugins/content/pixabay/3rd-Party.txt b/sdkjs-plugins/content/pixabay/3rd-Party.txt new file mode 100644 index 00000000..4ef33ab9 --- /dev/null +++ b/sdkjs-plugins/content/pixabay/3rd-Party.txt @@ -0,0 +1,16 @@ +This plugin uses code from the following 3rd party projects. + +1. jQuery - Query is a fast and concise JavaScript Library that simplifies HTML document traversing, event handling, animating, and Ajax interactions for rapid web development. (http://jquery.com/) + +License: MIT License +License File: jQuery.license + +2. CORS Anywhere - CORS Anywhere is a NodeJS proxy which adds CORS headers to the proxied request. + +License: MIT License +License File: CORSAnywhere.license + +3. Pixabay.com is an international public domain website featuring photographs, vectors and short videos as public domain (under Creative Commons CC0). + +License: Creative Commons CC0 +License File: Paxabay.license \ No newline at end of file diff --git a/sdkjs-plugins/content/pixabay/README.md b/sdkjs-plugins/content/pixabay/README.md new file mode 100644 index 00000000..4acafaa6 --- /dev/null +++ b/sdkjs-plugins/content/pixabay/README.md @@ -0,0 +1,25 @@ +## Overview + +Adds pictures to a document from an open picture collection. + +The plugin uses [Pixabay](https://pixabay.com/), a service that offers copyright free images. + +Pixabay is compatible with [self-hosted](https://github.com/ONLYOFFICE/DocumentServer) and [desktop](https://github.com/ONLYOFFICE/DesktopEditors) versions of ONLYOFFICE editors. It can be added to ONLYOFFICE instances manually. + +## How to use + +1. Open the Plugins tab and click on Pixabay. +2. Insert the keywords for the images you want to find. +3. Use Advanced settings to set search parameters. +4. Click Search. +5. Click on an image to add it to your document. + +## How to install + +Detailed instructions can be found in [ONLYOFFICE API documentation](https://api.onlyoffice.com/plugin/installation). + +## Configuration + +1. Log in to your account on [Pixabay](https://pixabay.com/) or register a new one. +2. Go to [API DOCS](https://pixabay.com/api/docs/) page. +3. Find your API key on page and paste it to the specified field in Pixabay plugin. diff --git a/sdkjs-plugins/content/pixabay/config.json b/sdkjs-plugins/content/pixabay/config.json new file mode 100644 index 00000000..14012594 --- /dev/null +++ b/sdkjs-plugins/content/pixabay/config.json @@ -0,0 +1,122 @@ +{ + "name": "Pixabay", + "nameLocale": { + "ru": "Pixabay", + "fr": "Pixabay", + "es": "Pixabay", + "de": "Pixabay" + }, + "guid": "asc.{1f6b80f3-8b3c-41c7-96a1-4b4386a6bd4c}", + "version": "1.0.0", + + "variations": [ + { + "description": "Pixabay", + "descriptionLocale": { + "ru": "Pixabay", + "fr": "Pixabay", + "es": "Pixabay", + "de": "Pixabay" + }, + "url": "index.html", + + "icons": [ "resources/light/icon.png", "resources/light/icon@2x.png" ], + "icons2": [ + { + "style" : "light", + + "100%": { + "normal": "resources/light/icon.png" + }, + "125%": { + "normal": "resources/light/icon@1.25x.png" + }, + "150%": { + "normal": "resources/light/icon@1.5x.png" + }, + "175%": { + "normal": "resources/light/icon@1.75x.png" + }, + "200%": { + "normal": "resources/light/icon@2x.png" + } + }, + { + "style" : "dark", + + "100%": { + "normal": "resources/dark/icon.png" + }, + "125%": { + "normal": "resources/dark/icon@1.25x.png" + }, + "150%": { + "normal": "resources/dark/icon@1.5x.png" + }, + "175%": { + "normal": "resources/dark/icon@1.75x.png" + }, + "200%": { + "normal": "resources/dark/icon@2x.png" + } + } + ], + "isViewer": false, + "EditorsSupport": [ "word", "slide", "cell" ], + + "isVisual": true, + "isModal": false, + "isInsideMode": true, + + "initDataType": "none", + "initData": "", + + "isUpdateOleOnResize": false, + + "buttons": [ + { + "text": "Close", + "primary": true, + "textLocale": { + "ru": "Закрыть", + "fr": "Fermer", + "es": "Cerrar", + "de": "Schließen" + } + } + ] + }, + { + "description": "About", + "descriptionLocale": { + "ru": "Справка", + "fr": "À propos", + "es": "Sobre programa", + "de": "Über" + }, + "url": "index_about.html", + + "icons": [ "resources/img/icon.png", "resources/img/icon@2x.png", "resources/img/icon2.png", "resources/img/icon2@2x.png" ], + "isViewer": false, + "EditorsSupport": [ "word", "slide", "cell" ], + + "isVisual": true, + "isModal": true, + "isInsideMode": false, + + "initDataType": "none", + "initData": "", + + "isUpdateOleOnResize": false, + + "buttons": [ + { + "text": "Ok", + "primary": true + } + ], + + "size": [ 392, 147 ] + } + ] +} \ No newline at end of file diff --git a/sdkjs-plugins/content/pixabay/index.html b/sdkjs-plugins/content/pixabay/index.html new file mode 100644 index 00000000..269876a1 --- /dev/null +++ b/sdkjs-plugins/content/pixabay/index.html @@ -0,0 +1,407 @@ + + + + + + Title + + + + + + + + + + + + +
+
+
To use Pixabay, create Pixabay account, then copy the API key and insert it in the specified field. Learn more here.
+
+ +
+ + +
+ +
+
+
+
+
+
+ + + + + + + +
+
+
+ + \ No newline at end of file diff --git a/sdkjs-plugins/content/pixabay/index_about.html b/sdkjs-plugins/content/pixabay/index_about.html new file mode 100644 index 00000000..336e3736 --- /dev/null +++ b/sdkjs-plugins/content/pixabay/index_about.html @@ -0,0 +1,63 @@ + + + + + + About + + + + + +

This plugin use:

+

Pixabay is a website for sharing photos, illustrations, vector graphics.

+

Version: 1.0

+ + \ No newline at end of file diff --git a/sdkjs-plugins/content/pixabay/licenses/CORSAnywhere.license b/sdkjs-plugins/content/pixabay/licenses/CORSAnywhere.license new file mode 100644 index 00000000..73419e66 --- /dev/null +++ b/sdkjs-plugins/content/pixabay/licenses/CORSAnywhere.license @@ -0,0 +1,7 @@ +Copyright (C) 2013 - 2016 Rob Wu rob@robwu.nl + +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. \ No newline at end of file diff --git a/sdkjs-plugins/content/pixabay/licenses/Paxabay.license b/sdkjs-plugins/content/pixabay/licenses/Paxabay.license new file mode 100644 index 00000000..45756308 --- /dev/null +++ b/sdkjs-plugins/content/pixabay/licenses/Paxabay.license @@ -0,0 +1,60 @@ +Terms of Service +Date of Last Revision: March 27, 2020 + +The following is a legal agreement between you ("you" or "User/s") and the owners and operators ("we", "us", or "Pixabay") of the site at pixabay.com (the "Website") and all related websites, software, mobile apps, plug-ins and other services that we provide (together, the "Service"). Your use of the Service, and our provision of the Service to you, constitutes an agreement by you and Pixabay to be bound by the terms and conditions in these Terms of Service ("Terms"). + +"Content" shall refer collectively to all Images, Videos and Audio uploaded to Pixabay and made available under the Pixabay License and the Pixabay Audio License. "Image/s" includes photographs, vectors, drawings, and illustrations. "Video" refers to any moving images, animations, films, or other audio/visual representations. "Audio" refers to any music or other audio file. + +We reserve the right, at our sole discretion, to change or modify portions of these Terms at any time. If we do this, we will post the changes on this page and will indicate at the top of this page the date these Terms were last revised. Any such changes will become effective immediately. Your continued use of the Service after the date any such changes become effective constitutes your acceptance of the new Terms. + +Requirements and Registration +You may use the Service only if you can form a binding contract with Pixabay, and only in compliance with these Terms and all applicable laws, rules, and regulations. The Service is not available to any Users previously removed from the Service by Pixabay. You may be required to register with us in order to access and use certain features of the Service. If you choose to register for the Service, you agree to provide and maintain true, accurate, and current information as prompted by the Service's registration form. Registration data and certain other information about you are governed by our Privacy Policy. If you are under 16 years old, you may use the Service only with the approval of your parent, guardian, or teacher. + +Use of the Service +In connection with your use of the Service you must not engage in or use any data mining, robots, scraping or similar data gathering or extraction methods. The technology and software underlying the Service or distributed in connection therewith is the property of Pixabay and our licensors, affiliates and partners and you are granted no license in respect of that Software. You agree not to copy, modify, create a derivative work from, reverse engineer, reverse assemble or otherwise attempt to discover any source code, sell, assign, sublicense, or otherwise transfer any right in such technology or software. Any rights not expressly granted herein are reserved by Pixabay. Large scale or systematic copying of Content, including using any of the methods referred to above, is prohibited except as expressly authorized by Pixabay. + +This applies to all Content, including Content, including Content made available as part of the public domain. The Service is protected by copyright as a collective work and/or compilation, pursuant to copyright laws, international conventions, and other intellectual property laws. + + +License for Content – Pixabay License +Content on Pixabay is made available to you on the following terms ("Pixabay License"). Under the Pixabay License you are granted an irrevocable, worldwide, non-exclusive and royalty free right to use, download, copy, modify or adapt the Content for commercial or non-commercial purposes. Attribution of the photographer, videographer, musician or Pixabay is not required but is always appreciated. + +The Pixabay License does not allow: + +Sale or distribution of Content as digital Content or as digital wallpapers (such as on stock media websites); +Sale or distribution of Content e.g. as a posters, digital prints, music files or physical products, without adding any additional elements or otherwise adding value +Depiction of identifiable persons in an offensive, pornographic, obscene, immoral, defamatory or libelous way; or +Any suggestion that there is an endorsement of products and services by depicted persons, brands, vocalists and organisations, unless permission was granted. +Please be aware that while all Content on Pixabay is free to use for commercial and non-commercial purposes, items in the Content, such as identifiable people, logos, brands, audio samples etc. may be subject to additional copyrights, property rights, privacy rights, trademarks etc. and may require the consent of a third party or the license of these rights - particularly for commercial applications. Pixabay does not represent or warrant that such consents or licenses have been obtained, and expressly disclaims any liability in this respect. + +Uploading Content +By uploading Content to the Website, you grant Pixabay and its users an irrevocable, worldwide, non-exclusive and royalty-free licence to use, download, copy, modify or adapt, the Content (in whole or in part) for any purpose, both commercial and non-commercial. In the case of Audio Content, this includes, without limitation, the right to play the Audio in public and to synchronise the Audio to video content. For the avoidance of doubt, this licence includes the right of Pixabay to distribute the Content under the Pixabay License, the Pixabay Audio License, or any other license offered by Pixabay from time to time, including via the Pixabay API. You acknowledge and confirm that your Content will be made available to the public on and through the Service for personal and commercial use of third parties subject to these Terms without providing you attribution or compensation. + +You are solely responsible for the Content you upload. You warrant that: + +you own all proprietary rights in the Content you upload to the Website and that the Content does not infringe the copyright, property right, trademark or other applicable rights of any third parties; +in the case of Audio Content, use of the Audio as contemplated by these Terms shall not infringe any rights in any underlying musical or literary work subsisting in the Audio; and +you have obtained a non-exclusive, perpetual, irrevocable, worldwide, and royalty-free Model and/or Property Release, and/or any other permission necessary concerning the use of this work for any purpose, without any conditions, unless such conditions are required by law. +You accept that even though we do our best to prevent it from happening, Pixabay cannot be held responsible for the acts or omissions of its users, including any misuse or abuse of any Content you upload. + +We also reserve the right to remove any Content at any time and for any reason, including if we believe it's defective, of poor quality, or in violation of these Terms. Pixabay has adopted a policy of terminating, inappropriate circumstances, users who are deemed to be repeat infringers. + +Notice and Takedown Policy +Pixabay respects the right of creatives. Accordingly, it is our policy to respond to alleged infringement notices promptly.If you believe that your copyright, trademark, or other right has been infringed by Content that is accessible via the Service, we ask that you write to us and provide the following information: + +Identification of the copyright work, trade mark or other right you claim has been infringed; +Identification of the material that is claimed to be infringing, including a URL link to where it appears on the Service; +Your contact details, such as your email address; +A statement that you have a good faith belief that use of the material in the manner complained of is not authorised by the copyright / trademark / other right owner, its agent, or law; and5.A declaration that the above information is accurate and that you are the rights owner (or authorised to act on their behalf). +Please submit the information to by email to info@pixabay.com + +The preceding does not constitute legal advice. It may be advisable to contact an attorney regarding your rights and obligations under applicable laws. + +Termination +We may terminate or suspend your account immediately, without prior notice or liability, for any reason whatsoever, including without limitation if you breach the Terms. Upon termination, your right to use the Website will immediately cease. + +Indemnification for breach of Terms +You agree to indemnify and hold harmless Pixabay from and against any and all loss, expenses, damages, and costs, including without limitation reasonable attorneys fees, resulting, whether directly or indirectly, from your violation of the Terms. You also agree to indemnify and hold harmless Pixabay from and against any and all claims brought by third parties arising out of your use of the Website. + +Warranty and liability +THE WEBSITE AND ITS CONTENT ARE PROVIDED "AS IS". WE OFFER NO WARRANTY, EXPLICIT OR IMPLIED, REGARDING ANY CONTENT, THE WEBSITE, THE ACCURACY OF ANY INFORMATION, OR ANY RIGHTS OR LICENSES UNDER THIS AGREEMENT INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. PIXABAY DOES NOT REPRESENT OR WARRANT THAT THE WEBSITE OR ITS CONTENT WILL MEET YOUR REQUIREMENTS OR THAT THEIR USE WILL BE UNINTERRUPTED OR ERROR FREE. PIXABAY SHALL NOT BE LIABLE TO YOU OR TO ANY OTHER PERSON OR ENTITY FOR ANY GENERAL, PUNITIVE, SPECIAL, INDIRECT, CONSEQUENTIAL OR INCIDENTAL DAMAGES, OR LOST PROFITS OR ANY OTHER DAMAGES, COSTS OR LOSSES ARISING OUT OF YOUR USE OF THE WEBSITE OR ITS CONTENT. \ No newline at end of file diff --git a/sdkjs-plugins/content/pixabay/licenses/jQuery.license b/sdkjs-plugins/content/pixabay/licenses/jQuery.license new file mode 100644 index 00000000..1e8b433d --- /dev/null +++ b/sdkjs-plugins/content/pixabay/licenses/jQuery.license @@ -0,0 +1,20 @@ +Copyright (c) 2009 John Resig, http://jquery.com/ + +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. \ No newline at end of file diff --git a/sdkjs-plugins/content/pixabay/plugin_style.css b/sdkjs-plugins/content/pixabay/plugin_style.css new file mode 100644 index 00000000..b059f280 --- /dev/null +++ b/sdkjs-plugins/content/pixabay/plugin_style.css @@ -0,0 +1,186 @@ +.blur { + filter: blur(3px); +} + +.flex { + display: flex; +} + +.flexSize { + flex: 1; +} + +.flexCenter { + align-items: center; + justify-content: center; +} + +.flexCol { + display: flex; + flex-direction: column; + overflow-y: hidden; +} + +/* loader */ + +.cssload-container { + z-index: 1; + display: flex; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + align-items: center; + justify-content: center; +} + +.cssload-loading i { + width: 19px; + height: 19px; + display: inline-block; + border-radius: 50%; + background: rgb(68, 68, 68); +} + + .cssload-loading i:first-child { + opacity: 0; + animation: cssload-loading-ani2 0.58s linear infinite; + -o-animation: cssload-loading-ani2 0.58s linear infinite; + -ms-animation: cssload-loading-ani2 0.58s linear infinite; + -webkit-animation: cssload-loading-ani2 0.58s linear infinite; + -moz-animation: cssload-loading-ani2 0.58s linear infinite; + transform: translate(-19px); + -o-transform: translate(-19px); + -ms-transform: translate(-19px); + -webkit-transform: translate(-19px); + -moz-transform: translate(-19px); + } + + .cssload-loading i:nth-child(2), + .cssload-loading i:nth-child(3) { + animation: cssload-loading-ani3 0.58s linear infinite; + -o-animation: cssload-loading-ani3 0.58s linear infinite; + -ms-animation: cssload-loading-ani3 0.58s linear infinite; + -webkit-animation: cssload-loading-ani3 0.58s linear infinite; + -moz-animation: cssload-loading-ani3 0.58s linear infinite; + } + + .cssload-loading i:last-child { + animation: cssload-loading-ani1 0.58s linear infinite; + -o-animation: cssload-loading-ani1 0.58s linear infinite; + -ms-animation: cssload-loading-ani1 0.58s linear infinite; + -webkit-animation: cssload-loading-ani1 0.58s linear infinite; + -moz-animation: cssload-loading-ani1 0.58s linear infinite; + } + +.asc-plugin-loader .asc-loader-image { + background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyOCAyOCI+PGNpcmNsZSBjeD0iMTQiIGN5PSIxNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZmZmIiBzdHJva2Utd2lkdGg9IjEuNSIgcj0iMTAuMjUiIHN0cm9rZS1kYXNoYXJyYXk9IjE2MCUsIDQwJSIgLz48L3N2Zz4=) !important; +} + +@keyframes cssload-loading-ani1 { + 100% { + transform: translate(39px); + opacity: 0; + } +} + +@-o-keyframes cssload-loading-ani1 { + 100% { + -o-transform: translate(39px); + opacity: 0; + } +} + +@-ms-keyframes cssload-loading-ani1 { + 100% { + -ms-transform: translate(39px); + opacity: 0; + } +} + +@-webkit-keyframes cssload-loading-ani1 { + 100% { + -webkit-transform: translate(39px); + opacity: 0; + } +} + +@-moz-keyframes cssload-loading-ani1 { + 100% { + -moz-transform: translate(39px); + opacity: 0; + } +} + +@keyframes cssload-loading-ani2 { + 100% { + transform: translate(19px); + opacity: 1; + } +} + +@-o-keyframes cssload-loading-ani2 { + 100% { + -o-transform: translate(19px); + opacity: 1; + } +} + +@-ms-keyframes cssload-loading-ani2 { + 100% { + -ms-transform: translate(19px); + opacity: 1; + } +} + +@-webkit-keyframes cssload-loading-ani2 { + 100% { + -webkit-transform: translate(19px); + opacity: 1; + } +} + +@-moz-keyframes cssload-loading-ani2 { + 100% { + -moz-transform: translate(19px); + opacity: 1; + } +} + +@keyframes cssload-loading-ani3 { + 100% { + transform: translate(19px); + } +} + +@-o-keyframes cssload-loading-ani3 { + 100% { + -o-transform: translate(19px); + } +} + +@-ms-keyframes cssload-loading-ani3 { + 100% { + -ms-transform: translate(19px); + } +} + +@-webkit-keyframes cssload-loading-ani3 { + 100% { + -webkit-transform: translate(19px); + } +} + +@-moz-keyframes cssload-loading-ani3 { + 100% { + -moz-transform: translate(19px); + } +} + + +/* end loader */ + +.display-none { + display: none; +} diff --git a/sdkjs-plugins/content/pixabay/resources/dark/icon.png b/sdkjs-plugins/content/pixabay/resources/dark/icon.png new file mode 100644 index 00000000..5c9c8564 Binary files /dev/null and b/sdkjs-plugins/content/pixabay/resources/dark/icon.png differ diff --git a/sdkjs-plugins/content/pixabay/resources/dark/icon@1.25x.png b/sdkjs-plugins/content/pixabay/resources/dark/icon@1.25x.png new file mode 100644 index 00000000..87e70d4e Binary files /dev/null and b/sdkjs-plugins/content/pixabay/resources/dark/icon@1.25x.png differ diff --git a/sdkjs-plugins/content/pixabay/resources/dark/icon@1.5x.png b/sdkjs-plugins/content/pixabay/resources/dark/icon@1.5x.png new file mode 100644 index 00000000..c31d96c3 Binary files /dev/null and b/sdkjs-plugins/content/pixabay/resources/dark/icon@1.5x.png differ diff --git a/sdkjs-plugins/content/pixabay/resources/dark/icon@1.75x.png b/sdkjs-plugins/content/pixabay/resources/dark/icon@1.75x.png new file mode 100644 index 00000000..c94476b8 Binary files /dev/null and b/sdkjs-plugins/content/pixabay/resources/dark/icon@1.75x.png differ diff --git a/sdkjs-plugins/content/pixabay/resources/dark/icon@2x.png b/sdkjs-plugins/content/pixabay/resources/dark/icon@2x.png new file mode 100644 index 00000000..6c05b69b Binary files /dev/null and b/sdkjs-plugins/content/pixabay/resources/dark/icon@2x.png differ diff --git a/sdkjs-plugins/content/pixabay/resources/light/icon.png b/sdkjs-plugins/content/pixabay/resources/light/icon.png new file mode 100644 index 00000000..c0ae4ece Binary files /dev/null and b/sdkjs-plugins/content/pixabay/resources/light/icon.png differ diff --git a/sdkjs-plugins/content/pixabay/resources/light/icon@1.25x.png b/sdkjs-plugins/content/pixabay/resources/light/icon@1.25x.png new file mode 100644 index 00000000..f29cbe83 Binary files /dev/null and b/sdkjs-plugins/content/pixabay/resources/light/icon@1.25x.png differ diff --git a/sdkjs-plugins/content/pixabay/resources/light/icon@1.5x.png b/sdkjs-plugins/content/pixabay/resources/light/icon@1.5x.png new file mode 100644 index 00000000..b7d264ea Binary files /dev/null and b/sdkjs-plugins/content/pixabay/resources/light/icon@1.5x.png differ diff --git a/sdkjs-plugins/content/pixabay/resources/light/icon@1.75x.png b/sdkjs-plugins/content/pixabay/resources/light/icon@1.75x.png new file mode 100644 index 00000000..63a6667b Binary files /dev/null and b/sdkjs-plugins/content/pixabay/resources/light/icon@1.75x.png differ diff --git a/sdkjs-plugins/content/pixabay/resources/light/icon@2x.png b/sdkjs-plugins/content/pixabay/resources/light/icon@2x.png new file mode 100644 index 00000000..dfdc56bc Binary files /dev/null and b/sdkjs-plugins/content/pixabay/resources/light/icon@2x.png differ diff --git a/sdkjs-plugins/content/pixabay/scripts/pixabay.js b/sdkjs-plugins/content/pixabay/scripts/pixabay.js new file mode 100644 index 00000000..e2905dbc --- /dev/null +++ b/sdkjs-plugins/content/pixabay/scripts/pixabay.js @@ -0,0 +1,595 @@ +/** + * + * (c) Copyright Ascensio System SIA 2020 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +var Ps1, Ps2; + +(function(window, undefined) { + + var displayNoneClass = "display-none"; + var waitForLoad = false; + + function showLoader(elements, show) { + switchClass(elements.loader, displayNoneClass, !show); + } + + function switchClass(el, className, add) { + if (add) { + el.classList.add(className); + } else { + el.classList.remove(className); + } + } + + function SetSavedSettings() { + var allInputs = $('.rule-checkbox'); + + var saved_apikey = localStorage.getItem($(elements.api_input).attr('data-id')); + if (saved_apikey && saved_apikey !== '') { + elements.api_input.value = saved_apikey; + $('#save').trigger('click'); + } + + var savedQuery = localStorage.getItem($(elements.search_phrase).attr('data-id')); + if (savedQuery) { + sLastQuery = savedQuery; + elements.search_phrase.value = sLastQuery; + } + + var locale_saved = localStorage.getItem('pixabay-locale'); + if (locale_saved !== null) { + $('#pixabay-locale').val(locale_saved); + $('#pixabay-locale').trigger('change'); + } + var category_saved = localStorage.getItem('pixabay-category'); + if (category_saved !== null) { + $('#pixabay-category').val(category_saved); + $('#pixabay-category').trigger('change'); + } + + $(allInputs).each(function() { + var savedValue = localStorage.getItem($(this).attr("data-id")); + if (savedValue !== null) + if (savedValue === true.toString()) + $(this).prop("checked", true); + else + $(this).prop("checked", false); + }); + }; + + window.oncontextmenu = function(e) + { + if (e.preventDefault) + e.preventDefault(); + if (e.stopPropagation) + e.stopPropagation(); + return false; + }; + + var widthPix = 185; + var sLastQuery = 'flower'; + var sEmptyQuery = 'summer'; + var elements = {}; + var nLastPage = 1, nLastPageCount = 1; + var nImageWidth = 200; + var nVertGap = 5; + + function createScript(oElement, w, h){ + var sScript = ''; + + if(oElement) { + switch (window.Asc.plugin.info.editorType) { + case 'word': { + sScript += 'var oDocument = Api.GetDocument();'; + sScript += '\nvar oParagraph, oRun, arrInsertResult = [], oImage;'; + + sScript += '\noParagraph = Api.CreateParagraph();'; + sScript += '\narrInsertResult.push(oParagraph);'; + var sSrc = oElement.Src; + var nEmuWidth = ((w / 96) * 914400) >> 0; + var nEmuHeight = ((h / 96) * 914400) >> 0; + sScript += '\n oImage = Api.CreateImage(\'' + sSrc + '\', ' + nEmuWidth + ', ' + nEmuHeight + ');'; + sScript += '\noParagraph.AddDrawing(oImage);'; + sScript += '\noDocument.InsertContent(arrInsertResult);'; + break; + } + case 'slide':{ + sScript += 'var oPresentation = Api.GetPresentation();'; + + sScript += '\nvar oSlide = oPresentation.GetCurrentSlide()'; + sScript += '\nif(oSlide){'; + sScript += '\nvar fSlideWidth = oSlide.GetWidth(), fSlideHeight = oSlide.GetHeight();'; + var sSrc = oElement.Src; + var nEmuWidth = ((w / 96) * 914400) >> 0; + var nEmuHeight = ((h / 96) * 914400) >> 0; + sScript += '\n oImage = Api.CreateImage(\'' + sSrc + '\', ' + nEmuWidth + ', ' + nEmuHeight + ');'; + sScript += '\n oImage.SetPosition((fSlideWidth -' + nEmuWidth + ')/2, (fSlideHeight -' + nEmuHeight + ')/2);'; + sScript += '\n oSlide.AddObject(oImage);'; + sScript += '\n}' + break; + } + case 'cell':{ + sScript += '\nvar oWorksheet = Api.GetActiveSheet();'; + sScript += '\nif(oWorksheet){'; + sScript += '\nvar oActiveCell = oWorksheet.GetActiveCell();'; + sScript += '\nvar nCol = oActiveCell.GetCol(), nRow = oActiveCell.GetRow();'; + var sSrc = oElement.Src; + var nEmuWidth = ((w / 96) * 914400) >> 0; + var nEmuHeight = ((h / 96) * 914400) >> 0; + sScript += '\n oImage = oWorksheet.AddImage(\'' + sSrc + '\', ' + nEmuWidth + ', ' + nEmuHeight + ', nCol, 0, nRow, 0);'; + sScript += '\n}'; + break; + } + } + } + return sScript; + } + + function updatePaddings(){ + var oContainer = $('#preview-images-container-id'); + var nFullWidth = $('#scrollable-container-id').width() - 24; + var nCount = (nFullWidth/(nImageWidth + 2*nVertGap) + 0.01) >> 0; + if(nCount < 1){ + nCount = 1; + } + var nGap = (((nFullWidth - nCount*nImageWidth)/(nCount))/2) >> 0; + var aChildNodes = oContainer[0].childNodes; + + for (var i = 0; i < aChildNodes.length; ++i) { + var oDivElement = aChildNodes[i]; + $(oDivElement).css('margin-left', nGap + 'px'); + $(oDivElement).css('margin-right', nGap + 'px'); + } + }; + + function updateNavigation() { + if(arguments.length == 2){ + nLastPage = arguments[0]; + nLastPageCount = arguments[1]; + } + + if (nLastPage <= nLastPageCount) + var nUsePage = nLastPage - 1; + var oPagesCell = $('#pages-cell-id'); + oPagesCell.empty(); + var nW = $('#pagination-table-container-id').width() - $('#pagination-table-id').width(); + var nMaxCountPages = (nW/22)>>0; + + if(nLastPageCount === 0) + { + $('#pagination-table-id').hide(); + return; + } + else + { + $('#pagination-table-id').show(); + } + var nStart, nEnd; + if(nLastPageCount <= nMaxCountPages){ + nStart = 0; + nEnd = nLastPageCount; + } + else if(nUsePage < nMaxCountPages){ + nStart = 0; + nEnd = nMaxCountPages; + } + else if((nLastPageCount - nUsePage) <= nMaxCountPages){ + nStart = nLastPageCount - nMaxCountPages; + nEnd = nLastPageCount; + } + else { + nStart = nUsePage - ((nMaxCountPages/2)>>0); + nEnd = nUsePage + ((nMaxCountPages/2)>>0); + } + for(var i = nStart; i< nEnd; ++i){ + var oButtonElement = $('

' + (i + 1) +'

'); + oPagesCell.append(oButtonElement); + oButtonElement.attr('data-index', i + ''); + if(i === nUsePage){ + oButtonElement.addClass('pagination-button-div-selected'); + } + oButtonElement.click(function (e) { + $(this).addClass('pagination-button-div-selected'); + loadClipArtPage(parseInt($(this).attr('data-index')) + 1, sLastQuery); + }); + } + }; + + function fillTableFromResponse(imgsInfo) { + var oContainer = $('#preview-images-container-id'); + oContainer.empty(); + + //calculate count images in string + var nFullWidth = $('#scrollable-container-id').width() - 24; + var nCount = (nFullWidth/(nImageWidth + 2*nVertGap) + 0.01) >> 0; + if(nCount < 1){ + nCount = 1; + } + var nGap = 0; + nGap = (((nFullWidth - nCount*nImageWidth)/(nCount))/2) >> 0; + + for (var i = 0; i < imgsInfo.length; ++i) { + var oDivElement = $('
'); + oDivElement.css('display', 'inline-block'); + oDivElement.css('width', nImageWidth + 'px'); + oDivElement.css('height', nImageWidth + 'px'); + oDivElement.css('vertical-align','middle'); + $(oDivElement).addClass('noselect'); + oDivElement.css('margin-left', nGap + 'px'); + oDivElement.css('margin-right', nGap + 'px'); + oDivElement.css('margin-bottom', (nVertGap/2) + 'px'); + + var oImageTh = { + width : imgsInfo[i]["Width"], + height : imgsInfo[i]["Height"] + }; + var nMaxSize = Math.max(oImageTh.width, oImageTh.height); + var fCoeff = nImageWidth/nMaxSize; + var oImgElement = $(''); + var nWidth = (oImageTh.width * fCoeff) >> 0; + var nHeight = (oImageTh.height * fCoeff) >> 0; + if (nWidth === 0 || nHeight === 0) { + oImgElement.on('load', function(event) { + var nMaxSize = Math.max(this.naturalWidth, this.naturalHeight); + var fCoeff = nImageWidth/nMaxSize; + var nWidth = (this.naturalWidth * fCoeff) >> 0; + var nHeight = (this.naturalHeight * fCoeff) >> 0; + + $(this).css('width', nWidth + 'px'); + $(this).css('height', nHeight + 'px'); + $(this).css('margin-left', (((nImageWidth - nWidth)/2) >> 0) + 'px'); + //$(this).css('margin-top', (((nImageWidth - nHeight)/2) >> 0) + 'px'); + }); + } + oImgElement.css('width', nWidth + 'px'); + oImgElement.css('height', nHeight + 'px'); + oImgElement.css('margin-left', (((nImageWidth - nWidth)/2) >> 0) + 'px'); + //oImgElement.css('margin-top', (((nImageWidth - nHeight)/2) >> 0) + 'px'); + oImgElement.attr('src', imgsInfo[i].Src); + oImgElement.attr('data-index', i + ''); + oImgElement.mouseover( + function (e) { + $(this).css('opacity', '0.65'); + } + ); + oImgElement.mouseleave( + function (e) { + $(this).css('opacity', '1'); + } + ); + + function addImg(img) { + window.Asc.plugin.info.recalculate = true; + var oElement = imgsInfo[parseInt(img.dataset.index)]; + window.Asc.plugin.executeCommand("command", createScript(oElement, img.naturalWidth, img.naturalHeight), function() { + img.style.pointerEvents = "auto"; + }); + } + oImgElement.click( + function (e) { + var img = this; + img.style.pointerEvents = "none"; + addImg(img); + } + ); + + oImgElement.on('dragstart', function(event) { event.preventDefault(); }); + + oDivElement.append(oImgElement); + oContainer.append(oDivElement); + } + updateScroll(); + showLoader(elements, false); + }; + + function updateScroll(){ + Ps1.update(); + Ps2.update(); + }; + + window.Asc.plugin.init = function () { + elements = { + loader: document.getElementById("loader-container"), + locale: document.getElementById("pixabay-locale"), + search_phrase: document.getElementById("search-phrase"), + category: document.getElementById("pixabay-category"), + img_type_all: document.getElementById("type-all"), + img_type_photo: document.getElementById("type-photo"), + img_type_illustration: document.getElementById("type-illustration"), + img_type_vector: document.getElementById("type-vector"), + orient_vert: document.getElementById("type-vertical"), + orient_hor: document.getElementById("type-horizontal"), + contentHolder: document.getElementById("main-container-id"), + api: document.getElementById("api"), + api_input: document.getElementById("api-value"), + re_api: document.getElementById("re-api"), + }; + SetSavedSettings(); + + var container = document.getElementsByClassName ('scrollable-container-id'); + Ps1 = new PerfectScrollbar('#scrollable-container-id', {}); + Ps2 = new PerfectScrollbar('#main-container-id', {}); + + $( window ).resize(function(){ + updatePaddings(); + updateScroll(); + updateNavigation(); + }); + $('input').keydown(function(e) { + if(e.keyCode === 13) + $('#button-search-id').trigger('click'); + }); + $('#button-search-id').click(function() { + sLastQuery = elements.search_phrase.value; + if(sLastQuery === ''){ + sLastQuery = sEmptyQuery; + elements.search_phrase.value = sLastQuery; + } + loadClipArtPage(1, sLastQuery); + }); + $('.input_container').click(function() { + localStorage.setItem($(this).find('.rule-checkbox').attr('data-id'), $(this).prop('checked')); + }); + $('.select_example').change(function() { + localStorage.setItem($(this).attr('data-id'), $(this).val()); + }); + + $('#navigation-first-page-id').click(function(e){ + if(nLastPage > 1){ + loadClipArtPage(1, sLastQuery); + } + }); + $('#navigation-prev-page-id').click(function(e){ + if(nLastPage > 1){ + loadClipArtPage(Number(nLastPage) - 1, sLastQuery); + } + }); + $('#navigation-next-page-id').click(function(e){ + if(nLastPage < nLastPageCount){ + loadClipArtPage(Number(nLastPage) + 1, sLastQuery); + } + }); + $('#navigation-last-page-id').click(function(e){ + if(nLastPage < nLastPageCount){ + loadClipArtPage(Number(nLastPageCount), sLastQuery); + } + }); + + $(".hidden").click(function() { + $(this).hide(); + $("#hide_show_reconf").find(".opened").show(); + if ($('#preview-images-container-id')[0].children.length !== 0) + $('#first-separator').show(); + $(document).find("#settings").slideToggle("fast", function() { updateScroll(); }); + }); + $(".opened").click(function() { + $(this).hide(); + $("#hide_show_reconf").find(".hidden").show(); + $('#first-separator').hide(); + $(document).find("#settings").slideToggle("fast", function() { updateScroll(); }); + }); + + $('.select_example').select2({ + minimumResultsForSearch: Infinity, + width : '100%' + }); + + $('#save').on('click', function() { + $('.select_example').select2({ + minimumResultsForSearch: Infinity, + width: "100%" + }); + apikey = elements.api_input.value.trim(); + if (apikey !== '') { + loadClipArtPage(1, sLastQuery); + } + else { + $('#preview-images-container-id').empty(); + + if (!$('#api-value').hasClass('error_api')) + $('#api-value').toggleClass('error_api'); + if (!$('#api-value').hasClass('api_empty')) + $('#api-value').toggleClass('api_empty'); + if ($('#empty-key')) + $('#empty-key').remove(); + $('
', { + id : "empty-key", + "class": "error_color", + text: "API key is empty!" + }).appendTo('#preview-images-container-id'); + updateScroll(); + } + }); + + $(elements.api_input).focus(function(){ + if(this.value !== this.defaultValue){ + this.select(); + } + }); + $('#reconf').on('click', function() { + saved_key = localStorage.getItem($('#api-value').attr('data-id')); + if (saved_key !== null) { + elements.api_input.value = saved_key; + } + if ($('#api-value').hasClass('error_api')) { + $('#api-value').toggleClass('error_api'); + } + $('#api').show(); + $('#main-search-container-id').hide(); + $('#preview-images-container-id').empty(); + $('#pagination-container-id').hide(); + $(elements.api_input).focus(); + }); + + updateScroll(); + if (elements.api_input.value.trim() !== '') + loadClipArtPage(1, sLastQuery); + }; + window.Asc.plugin.onThemeChanged = function(theme) + { + window.Asc.plugin.onThemeChangedBase(theme); + $('#body').css('color', window.Asc.plugin.theme.Color); + $('.hidden, .opened, #reconf').css('border-bottom', '1px dashed ' + window.Asc.plugin.theme.Color); + }; + + function loadClipArtPage(nIndex, sQuery) { + showLoader(elements, true); + var sRequest = CreateRequest(nIndex, sQuery); + $.ajax({ + method: 'GET', + url: 'https://pixabay.com/api/?' + sRequest, + dataType: 'json' + }).success(function (oResponse) { + $('#api').hide(); + $('#main-search-container-id').show(); + $('#scrollable-container-id').show(); + $('#pagination-container-id').show(); + localStorage.setItem($(elements.api_input).attr('data-id'), elements.api_input.value.trim()); + localStorage.setItem($(elements.search_phrase).attr('data-id'), elements.search_phrase.value); + + if ($('#api-value').hasClass('error_api')) + $('#api-value').toggleClass('error_api'); + if ($('#api-value').hasClass('api_empty')) + $('#api-value').toggleClass('api_empty'); + + container = document.getElementById('scrollable-container-id'); + container.scrollTop = 0; + updateScroll(); + updateNavigation(nIndex, Math.ceil(oResponse.totalHits/20) + 1); + + var imgCount = oResponse.hits.length; + var imgsInfo = []; + + function loadImgs(sUrl) + { + var img = new Image(); + img.onload = function() { + var imgInfo = { + "Width": this.width, + "Height": this.height, + "Src": this.src, + "HTML": this.outerHTML + }; + + imgsInfo.push(imgInfo); + + if (imgsInfo.length === imgCount && imgsInfo.length !== 0) { + fillTableFromResponse(imgsInfo); + $('#first-separator').show(); + } + }; + img.onerror = function() { + imgCount--; + } + img.src = sUrl; + } + + if (oResponse.hits.length == 0) { + showLoader(elements, false); + $('#preview-images-container-id').empty(); + $('
', { + "class": "no-results", + text: "No results." + }).appendTo('#preview-images-container-id'); + updateScroll(); + return; + } + for (var nUrl = 0; nUrl < oResponse.hits.length; nUrl++) { + //loadImgs(oResponse.items[nUrl].pngurl[oResponse.items[0].pngurl.length - 1]); + loadImgs(oResponse.hits[nUrl].largeImageURL); + } + }).error(function(oError) { + showLoader(elements, false); + container = document.getElementById('scrollable-container-id'); + container.scrollTop = 0; + updateScroll(); + updateNavigation(0, 0); + var oContainer = $('#preview-images-container-id'); + oContainer.empty(); + if (elements.api_input.value.trim() === '') { + if (!$('#api-value').hasClass('error_api')) + $('#api-value').toggleClass('error_api'); + $('#preview-images-container-id').empty(); + + if ($('#empty-key')) + $('#empty-key').remove(); + $('
', { + id : 'empty-key', + "class": "error_color", + text: "Invalid API key" + }).appendTo('#preview-images-container-id'); + updateScroll(); + } + else { + if ($('#api-value').hasClass('error_api')) + $('#api-value').toggleClass('error_api'); + } + }); + }; + + function CreateRequest(nPageIndex, sQuery) { + var sRequest = 'key='; + + var apikey = elements.api_input.value.trim(); + var lang = elements.locale.value; + var category = elements.category.value; + var search_phrase = elements.search_phrase.value.replace(/ /gi, "+") || sQuery.replace(/ /gi, "+"); + var image_types = []; + if (elements.img_type_all.checked) + image_types.push('all'); + else { + if (elements.img_type_photo.checked) + image_types.push('photo'); + if (elements.img_type_illustration.checked) + image_types.push('illustration'); + if (elements.img_type_vector.checked) + image_types.push('vector'); + } + + var orientations = []; + if (elements.orient_vert.checked) + orientations.push('vertical'); + if (elements.orient_hor.checked) + orientations.push('horizontal'); + + sRequest += apikey + '&lang=' + lang + '&q=' + search_phrase + '&category=' + category + '&page=' + nPageIndex; + for (var nImgType = 0; nImgType < image_types.length; nImgType++) { + sRequest += '&image_type=' + image_types[nImgType]; + } + for (var nOrientType = 0; nOrientType < orientations.length; nOrientType++) { + sRequest += '&orientation=' + orientations[nOrientType]; + } + + return sRequest; + }; + window.Asc.plugin.button = function (id) { + this.executeCommand("close", ''); + }; + + window.Asc.plugin.onExternalMouseUp = function() + { + var evt = document.createEvent("MouseEvents"); + evt.initMouseEvent("mouseup", true, true, window, 1, 0, 0, 0, 0, + false, false, false, false, 0, null); + + document.dispatchEvent(evt); + $('.select_example').select2({ + minimumResultsForSearch: Infinity, + width : '100%' + }); + }; +})(window); \ No newline at end of file diff --git a/sdkjs-plugins/content/pixabay/translations/de-DE.json b/sdkjs-plugins/content/pixabay/translations/de-DE.json new file mode 100644 index 00000000..00cb8daf --- /dev/null +++ b/sdkjs-plugins/content/pixabay/translations/de-DE.json @@ -0,0 +1,7 @@ +{ + "Error has occured when loading data.": "Beim Laden von Daten ist ein Fehler aufgetreten.", + "Submit": "Übermitteln", + "ClipArt Add-on": "ClipArt Add-on", + "The add-on is designed to insert the themed image from Open Clip Art Library into the document editor.": "Mit dem Add-On können Sie das Themenbild aus Clip Art Library öffnen in den Dokumenteditor einfügen.", + "Source code": "Quellcode" +} \ No newline at end of file diff --git a/sdkjs-plugins/content/pixabay/translations/es-ES.json b/sdkjs-plugins/content/pixabay/translations/es-ES.json new file mode 100644 index 00000000..fca0d0ff --- /dev/null +++ b/sdkjs-plugins/content/pixabay/translations/es-ES.json @@ -0,0 +1,7 @@ +{ + "Error has occured when loading data." : "Se ha producido un error al cargar datos.", + "Submit" : "Enviar", + "ClipArt Add-on" : "Complemento ClipArt", + "The add-on is designed to insert the themed image from Open Clip Art Library into the document editor." : "El complemento está diseñado para insertar la imagen temática de Open Clip Art Library al editor de documentos.", + "Source code" : "Código fuente" +} \ No newline at end of file diff --git a/sdkjs-plugins/content/pixabay/translations/fr-FR.json b/sdkjs-plugins/content/pixabay/translations/fr-FR.json new file mode 100644 index 00000000..8219110b --- /dev/null +++ b/sdkjs-plugins/content/pixabay/translations/fr-FR.json @@ -0,0 +1,7 @@ +{ + "Error has occured when loading data." : "Une erreur s'est produite lors du chargement des données.", + "Submit" : "Envoyer", + "ClipArt Add-on" : "Extension ClipArt", + "The add-on is designed to insert the themed image from Open Clip Art Library into the document editor." : "L'extension permet d'inserer des images thématiques de Open Clip Art Library dans un document.", + "Source code" : "Code source" +} \ No newline at end of file diff --git a/sdkjs-plugins/content/pixabay/translations/langs.json b/sdkjs-plugins/content/pixabay/translations/langs.json new file mode 100644 index 00000000..2cd516b3 --- /dev/null +++ b/sdkjs-plugins/content/pixabay/translations/langs.json @@ -0,0 +1,6 @@ +[ + "de-DE", + "es-ES", + "fr-FR", + "ru-RU" +] \ No newline at end of file diff --git a/sdkjs-plugins/content/pixabay/translations/ru-RU.json b/sdkjs-plugins/content/pixabay/translations/ru-RU.json new file mode 100644 index 00000000..c3979cfb --- /dev/null +++ b/sdkjs-plugins/content/pixabay/translations/ru-RU.json @@ -0,0 +1,7 @@ +{ + "Error has occured when loading data." : "Произошла ошибка при загрузке данных.", + "Submit" : "Отправить", + "ClipArt Add-on" : "Плагин Клипарт", + "The add-on is designed to insert the themed image from Open Clip Art Library into the document editor." : "Плагин позволяет вставлять тематические картинки в документ из библиотеки Open Clip Art Library.", + "Source code" : "Исходный код" +} \ No newline at end of file diff --git a/sdkjs-plugins/content/pixabay/vendor/jQuery-2.2.2-min/jquery-v2.2.2-min.js b/sdkjs-plugins/content/pixabay/vendor/jQuery-2.2.2-min/jquery-v2.2.2-min.js new file mode 100644 index 00000000..93dc28a0 --- /dev/null +++ b/sdkjs-plugins/content/pixabay/vendor/jQuery-2.2.2-min/jquery-v2.2.2-min.js @@ -0,0 +1,4 @@ +/*! jQuery v2.2.2 | (c) jQuery Foundation | jquery.org/license */ +!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=a.document,e=c.slice,f=c.concat,g=c.push,h=c.indexOf,i={},j=i.toString,k=i.hasOwnProperty,l={},m="2.2.2",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return e.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:e.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a){return n.each(this,a)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(e.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:g,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){var b=a&&a.toString();return!n.isArray(a)&&b-parseFloat(b)+1>=0},isPlainObject:function(a){var b;if("object"!==n.type(a)||a.nodeType||n.isWindow(a))return!1;if(a.constructor&&!k.call(a,"constructor")&&!k.call(a.constructor.prototype||{},"isPrototypeOf"))return!1;for(b in a);return void 0===b||k.call(a,b)},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?i[j.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=d.createElement("script"),b.text=a,d.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b){var c,d=0;if(s(a)){for(c=a.length;c>d;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):g.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:h.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,g=0,h=[];if(s(a))for(d=a.length;d>g;g++)e=b(a[g],g,c),null!=e&&h.push(e);else for(g in a)e=b(a[g],g,c),null!=e&&h.push(e);return f.apply([],h)},guid:1,proxy:function(a,b){var c,d,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(d=e.call(arguments,2),f=function(){return a.apply(b||this,d.concat(e.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:l}),"function"==typeof Symbol&&(n.fn[Symbol.iterator]=c[Symbol.iterator]),n.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){i["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=!!a&&"length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=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}return 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}),fa}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.uniqueSort=n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},v=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},w=n.expr.match.needsContext,x=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,y=/^.[^:#\[\.,]*$/;function z(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(y.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return h.call(b,a)>-1!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(z(this,a||[],!1))},not:function(a){return this.pushStack(z(this,a||[],!0))},is:function(a){return!!z(this,"string"==typeof a&&w.test(a)?n(a):a||[],!1).length}});var A,B=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=n.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||A,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:B.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),x.test(e[1])&&n.isPlainObject(b))for(e in b)n.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&f.parentNode&&(this.length=1,this[0]=f),this.context=d,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?void 0!==c.ready?c.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};C.prototype=n.fn,A=n(d);var D=/^(?:parents|prev(?:Until|All))/,E={children:!0,contents:!0,next:!0,prev:!0};n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=w.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?h.call(n(a),this[0]):h.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.uniqueSort(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function F(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return u(a,"parentNode")},parentsUntil:function(a,b,c){return u(a,"parentNode",c)},next:function(a){return F(a,"nextSibling")},prev:function(a){return F(a,"previousSibling")},nextAll:function(a){return u(a,"nextSibling")},prevAll:function(a){return u(a,"previousSibling")},nextUntil:function(a,b,c){return u(a,"nextSibling",c)},prevUntil:function(a,b,c){return u(a,"previousSibling",c)},siblings:function(a){return v((a.parentNode||{}).firstChild,a)},children:function(a){return v(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(E[a]||n.uniqueSort(e),D.test(a)&&e.reverse()),this.pushStack(e)}});var G=/\S+/g;function H(a){var b={};return n.each(a.match(G)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?H(a):n.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h-1)f.splice(c,1),h>=c&&h--}),this},has:function(a){return a?n.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().progress(c.notify).done(c.resolve).fail(c.reject):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=e.call(arguments),d=c.length,f=1!==d||a&&n.isFunction(a.promise)?d:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?e.call(arguments):d,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(d>1)for(i=new Array(d),j=new Array(d),k=new Array(d);d>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().progress(h(b,j,i)).done(h(b,k,c)).fail(g.reject):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(d,[n]),n.fn.triggerHandler&&(n(d).triggerHandler("ready"),n(d).off("ready"))))}});function J(){d.removeEventListener("DOMContentLoaded",J),a.removeEventListener("load",J),n.ready()}n.ready.promise=function(b){return I||(I=n.Deferred(),"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(n.ready):(d.addEventListener("DOMContentLoaded",J),a.addEventListener("load",J))),I.promise(b)},n.ready.promise();var K=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)K(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},L=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function M(){this.expando=n.expando+M.uid++}M.uid=1,M.prototype={register:function(a,b){var c=b||{};return a.nodeType?a[this.expando]=c:Object.defineProperty(a,this.expando,{value:c,writable:!0,configurable:!0}),a[this.expando]},cache:function(a){if(!L(a))return{};var b=a[this.expando];return b||(b={},L(a)&&(a.nodeType?a[this.expando]=b:Object.defineProperty(a,this.expando,{value:b,configurable:!0}))),b},set:function(a,b,c){var d,e=this.cache(a);if("string"==typeof b)e[b]=c;else for(d in b)e[d]=b[d];return e},get:function(a,b){return void 0===b?this.cache(a):a[this.expando]&&a[this.expando][b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=a[this.expando];if(void 0!==f){if(void 0===b)this.register(a);else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in f?d=[b,e]:(d=e,d=d in f?[d]:d.match(G)||[])),c=d.length;while(c--)delete f[d[c]]}(void 0===b||n.isEmptyObject(f))&&(a.nodeType?a[this.expando]=void 0:delete a[this.expando])}},hasData:function(a){var b=a[this.expando];return void 0!==b&&!n.isEmptyObject(b)}};var N=new M,O=new M,P=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Q=/[A-Z]/g;function R(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(Q,"-$&").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:P.test(c)?n.parseJSON(c):c; +}catch(e){}O.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return O.hasData(a)||N.hasData(a)},data:function(a,b,c){return O.access(a,b,c)},removeData:function(a,b){O.remove(a,b)},_data:function(a,b,c){return N.access(a,b,c)},_removeData:function(a,b){N.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=O.get(f),1===f.nodeType&&!N.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),R(f,d,e[d])));N.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){O.set(this,a)}):K(this,function(b){var c,d;if(f&&void 0===b){if(c=O.get(f,a)||O.get(f,a.replace(Q,"-$&").toLowerCase()),void 0!==c)return c;if(d=n.camelCase(a),c=O.get(f,d),void 0!==c)return c;if(c=R(f,d,void 0),void 0!==c)return c}else d=n.camelCase(a),this.each(function(){var c=O.get(this,d);O.set(this,d,b),a.indexOf("-")>-1&&void 0!==c&&O.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){O.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=N.get(a,b),c&&(!d||n.isArray(c)?d=N.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return N.get(a,c)||N.access(a,c,{empty:n.Callbacks("once memory").add(function(){N.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length",""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};$.optgroup=$.option,$.tbody=$.tfoot=$.colgroup=$.caption=$.thead,$.th=$.td;function _(a,b){var c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function aa(a,b){for(var c=0,d=a.length;d>c;c++)N.set(a[c],"globalEval",!b||N.get(b[c],"globalEval"))}var ba=/<|&#?\w+;/;function ca(a,b,c,d,e){for(var f,g,h,i,j,k,l=b.createDocumentFragment(),m=[],o=0,p=a.length;p>o;o++)if(f=a[o],f||0===f)if("object"===n.type(f))n.merge(m,f.nodeType?[f]:f);else if(ba.test(f)){g=g||l.appendChild(b.createElement("div")),h=(Y.exec(f)||["",""])[1].toLowerCase(),i=$[h]||$._default,g.innerHTML=i[1]+n.htmlPrefilter(f)+i[2],k=i[0];while(k--)g=g.lastChild;n.merge(m,g.childNodes),g=l.firstChild,g.textContent=""}else m.push(b.createTextNode(f));l.textContent="",o=0;while(f=m[o++])if(d&&n.inArray(f,d)>-1)e&&e.push(f);else if(j=n.contains(f.ownerDocument,f),g=_(l.appendChild(f),"script"),j&&aa(g),c){k=0;while(f=g[k++])Z.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),l.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="",l.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var da=/^key/,ea=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,fa=/^([^.]*)(?:\.(.+)|)/;function ga(){return!0}function ha(){return!1}function ia(){try{return d.activeElement}catch(a){}}function ja(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)ja(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=ha;else if(!e)return a;return 1===f&&(g=e,e=function(a){return n().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=n.guid++)),a.each(function(){n.event.add(this,b,e,d,c)})}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=N.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return"undefined"!=typeof n&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(G)||[""],j=b.length;while(j--)h=fa.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=N.hasData(a)&&N.get(a);if(r&&(i=r.events)){b=(b||"").match(G)||[""],j=b.length;while(j--)if(h=fa.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&N.remove(a,"handle events")}},dispatch:function(a){a=n.event.fix(a);var b,c,d,f,g,h=[],i=e.call(arguments),j=(N.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())a.rnamespace&&!a.rnamespace.test(g.namespace)||(a.handleObj=g,a.data=g.data,d=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==d&&(a.result=d)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&("click"!==a.type||isNaN(a.button)||a.button<1))for(;i!==this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>-1:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h]*)\/>/gi,la=/\s*$/g;function pa(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function qa(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function ra(a){var b=na.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function sa(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(N.hasData(a)&&(f=N.access(a),g=N.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}O.hasData(a)&&(h=O.access(a),i=n.extend({},h),O.set(b,i))}}function ta(a,b){var c=b.nodeName.toLowerCase();"input"===c&&X.test(a.type)?b.checked=a.checked:"input"!==c&&"textarea"!==c||(b.defaultValue=a.defaultValue)}function ua(a,b,c,d){b=f.apply([],b);var e,g,h,i,j,k,m=0,o=a.length,p=o-1,q=b[0],r=n.isFunction(q);if(r||o>1&&"string"==typeof q&&!l.checkClone&&ma.test(q))return a.each(function(e){var f=a.eq(e);r&&(b[0]=q.call(this,e,f.html())),ua(f,b,c,d)});if(o&&(e=ca(b,a[0].ownerDocument,!1,a,d),g=e.firstChild,1===e.childNodes.length&&(e=g),g||d)){for(h=n.map(_(e,"script"),qa),i=h.length;o>m;m++)j=e,m!==p&&(j=n.clone(j,!0,!0),i&&n.merge(h,_(j,"script"))),c.call(a[m],j,m);if(i)for(k=h[h.length-1].ownerDocument,n.map(h,ra),m=0;i>m;m++)j=h[m],Z.test(j.type||"")&&!N.access(j,"globalEval")&&n.contains(k,j)&&(j.src?n._evalUrl&&n._evalUrl(j.src):n.globalEval(j.textContent.replace(oa,"")))}return a}function va(a,b,c){for(var d,e=b?n.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||n.cleanData(_(d)),d.parentNode&&(c&&n.contains(d.ownerDocument,d)&&aa(_(d,"script")),d.parentNode.removeChild(d));return a}n.extend({htmlPrefilter:function(a){return a.replace(ka,"<$1>")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=_(h),f=_(a),d=0,e=f.length;e>d;d++)ta(f[d],g[d]);if(b)if(c)for(f=f||_(a),g=g||_(h),d=0,e=f.length;e>d;d++)sa(f[d],g[d]);else sa(a,h);return g=_(h,"script"),g.length>0&&aa(g,!i&&_(a,"script")),h},cleanData:function(a){for(var b,c,d,e=n.event.special,f=0;void 0!==(c=a[f]);f++)if(L(c)){if(b=c[N.expando]){if(b.events)for(d in b.events)e[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);c[N.expando]=void 0}c[O.expando]&&(c[O.expando]=void 0)}}}),n.fn.extend({domManip:ua,detach:function(a){return va(this,a,!0)},remove:function(a){return va(this,a)},text:function(a){return K(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=a)})},null,a,arguments.length)},append:function(){return ua(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=pa(this,a);b.appendChild(a)}})},prepend:function(){return ua(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=pa(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return ua(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return ua(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(_(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return K(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!la.test(a)&&!$[(Y.exec(a)||["",""])[1].toLowerCase()]){a=n.htmlPrefilter(a);try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(_(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return ua(this,arguments,function(b){var c=this.parentNode;n.inArray(this,a)<0&&(n.cleanData(_(this)),c&&c.replaceChild(b,this))},a)}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),f=e.length-1,h=0;f>=h;h++)c=h===f?this:this.clone(!0),n(e[h])[b](c),g.apply(d,c.get());return this.pushStack(d)}});var wa,xa={HTML:"block",BODY:"block"};function ya(a,b){var c=n(b.createElement(a)).appendTo(b.body),d=n.css(c[0],"display");return c.detach(),d}function za(a){var b=d,c=xa[a];return c||(c=ya(a,b),"none"!==c&&c||(wa=(wa||n("