on master help sign in
gh-pages: updated
commit91322f3012a1bc061f14a862f438e0734e28fc8f authorAdam Tauber <asciimoo@gmail.com> dateWed 2 Sep 2020, 00:33 (6 years ago) parent4e206cf
54 files changed+782−1956
_images/arch_public.svg+4−4 _images/hello.svg+8−8 _images/math/07c9ff4251510b06013159f4e45ec9ab97044096.svg−25 _images/math/3b8127a8eed95247f9249ea6c85e8e86df1baa82.svg−25 _images/math/6673b43f9fe29455c1fcd1164e5844698cc64d38.svg−22 _images/math/a6a994cb6e7278ec30eaebe7e636046d3deccb5b.svg−43 _sources/dev/engine_overview.rst.txt+6−3 _sources/dev/plugins.rst.txt+7 _static/basic.css+27−114 _static/jquery-3.5.1.js → _static/jquery-3.4.1.js+482−756 _static/jquery.js+2−2 admin/api.html+2−5 admin/architecture.html+2−5 admin/buildhosts.html+2−94 admin/engines.html+112−40 admin/filtron.html+2−5 admin/index.html+2−5 admin/installation-apache.html+2−5 admin/installation-docker.html+2−5 admin/installation-nginx.html+3−6 admin/installation-searx.html+2−213 admin/installation-uwsgi.html+2−298 admin/installation.html+2−5 admin/morty.html+2−5 admin/plugins.html+6−17 admin/settings.html+2−5 admin/update-searx.html+2−5 blog/admin.html+2−5 blog/index.html+2−5 blog/intro-offline.html+2−5 blog/lxcdev-202006.html+2−5 blog/private-engines.html+2−5 blog/python3.html+2−5 dev/contribution_guide.html+2−5 dev/engine_overview.html+10−7 dev/index.html+3−5 dev/makefile.html+2−5 dev/plugins.html+8−5 dev/quickstart.html+2−5 dev/reST.html+16−19 dev/search_api.html+2−5 dev/translation.html+2−5 genindex.html+3−5 index.html+2−5 search.html+2−5 searchindex.js+1−1 user/index.html+2−5 user/own-instance.html+2−5 user/search_syntax.html+2−5 utils/filtron.sh.html+6−9 utils/index.html+2−5 utils/lxc.sh.html+9−43 utils/morty.sh.html+6−9 utils/searx.sh.html+3−48
_images/arch_public.svg+4−4
@@ -28,7 +28,7 @@
2828<g id="node2" class="node">
2929<title>rp</title>
3030<g id="a_node2"><a xlink:href="https://asciimoo.github.io/searx/utils/filtron.sh.html#public-reverse-proxy" xlink:title="Reverse Proxy">
31−<polygon fill="#ffffcc" stroke="black" points="131.5,-299 16.5,-299 16.5,-263 131.5,-263 131.5,-299"/>
31+<polygon fill="#ffffcc" stroke="black" points="132,-299 16,-299 16,-263 132,-263 132,-299"/>
3232<text text-anchor="middle" x="74" y="-277.3" font-family="Sans" font-size="14.00">Reverse Proxy</text>
3333</a>
3434</g>
@@ -84,9 +84,9 @@
8484<!-- rp&#45;&gt;static -->
8585<g id="edge3" class="edge">
8686<title>rp&#45;&gt;static</title>
87−<path fill="none" stroke="black" d="M131.92,-281C221.59,-281 392.81,-281 480.41,-281"/>
88−<polygon fill="black" stroke="black" points="480.41,-284.5 490.41,-281 480.41,-277.5 480.41,-284.5"/>
89−<text text-anchor="middle" x="311" y="-287.8" font-family="Sans" font-size="14.00">optional: reverse proxy serves directly static files</text>
87+<path fill="none" stroke="black" d="M132.39,-281C222.02,-281 392.33,-281 479.93,-281"/>
88+<polygon fill="black" stroke="black" points="480.19,-284.5 490.19,-281 480.19,-277.5 480.19,-284.5"/>
89+<text text-anchor="middle" x="311.25" y="-287.8" font-family="Sans" font-size="14.00">optional: reverse proxy serves directly static files</text>
9090</g>
9191<!-- uwsgi -->
9292<g id="node6" class="node">
_images/hello.svg+8−8
@@ -4,27 +4,27 @@
44<!-- Generated by graphviz version 2.43.0 (0)
55 -->
66<!-- Title: G Pages: 1 -->
7−<svg width="74pt" height="116pt"
8− viewBox="0.00 0.00 74.29 116.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
7+<svg width="85pt" height="116pt"
8+ viewBox="0.00 0.00 84.69 116.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
99<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 112)">
1010<title>G</title>
11−<polygon fill="white" stroke="transparent" points="-4,4 -4,-112 70.29,-112 70.29,4 -4,4"/>
11+<polygon fill="white" stroke="transparent" points="-4,4 -4,-112 80.69,-112 80.69,4 -4,4"/>
1212<!-- Hello -->
1313<g id="node1" class="node">
1414<title>Hello</title>
15−<ellipse fill="none" stroke="black" cx="33.15" cy="-90" rx="30.59" ry="18"/>
16−<text text-anchor="middle" x="33.15" y="-86.3" font-family="Times,serif" font-size="14.00">Hello</text>
15+<ellipse fill="none" stroke="black" cx="38.35" cy="-90" rx="35.19" ry="18"/>
16+<text text-anchor="middle" x="38.35" y="-86.3" font-family="Times,serif" font-size="14.00">Hello</text>
1717</g>
1818<!-- World -->
1919<g id="node2" class="node">
2020<title>World</title>
21−<ellipse fill="none" stroke="black" cx="33.15" cy="-18" rx="33.29" ry="18"/>
22−<text text-anchor="middle" x="33.15" y="-14.3" font-family="Times,serif" font-size="14.00">World</text>
21+<ellipse fill="none" stroke="black" cx="38.35" cy="-18" rx="38.19" ry="18"/>
22+<text text-anchor="middle" x="38.35" y="-14.3" font-family="Times,serif" font-size="14.00">World</text>
2323</g>
2424<!-- Hello&#45;&#45;World -->
2525<g id="edge1" class="edge">
2626<title>Hello&#45;&#45;World</title>
27−<path fill="none" stroke="black" d="M33.15,-71.7C33.15,-60.85 33.15,-46.92 33.15,-36.1"/>
27+<path fill="none" stroke="black" d="M38.35,-71.7C38.35,-60.85 38.35,-46.92 38.35,-36.1"/>
2828</g>
2929</g>
3030</svg>
_images/math/07c9ff4251510b06013159f4e45ec9ab97044096.svgdeleted−25
@@ -1,25 +0,0 @@
1−<?xml version='1.0' encoding='UTF-8'?>
2−<!-- This file was generated by dvisvgm 2.8.1 -->
3−<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' width='36.523255pt' height='48.422712pt' viewBox='57.608781 53.798251 36.523255 48.422712'>
4−<defs>
5−<path id='g0-0' d='M9.191532-3.20797C9.428643-3.20797 9.679701-3.20797 9.679701-3.486924S9.428643-3.765878 9.191532-3.765878H1.645828C1.408717-3.765878 1.157659-3.765878 1.157659-3.486924S1.408717-3.20797 1.645828-3.20797H9.191532Z'/>
6−<path id='g1-120' d='M6.611208-5.69066C6.164882-5.606974 5.997509-5.272229 5.997509-5.007223C5.997509-4.672478 6.262516-4.560897 6.457783-4.560897C6.876214-4.560897 7.169116-4.923537 7.169116-5.300125C7.169116-5.885928 6.499626-6.150934 5.913823-6.150934C5.063014-6.150934 4.588792-5.314072 4.463263-5.049066C4.142466-6.095143 3.277709-6.150934 3.02665-6.150934C1.603985-6.150934 .850809-4.323786 .850809-4.016936C.850809-3.961146 .9066-3.891407 1.004234-3.891407C1.115816-3.891407 1.143711-3.975093 1.171606-4.030884C1.645828-5.579078 2.580324-5.87198 2.984807-5.87198C3.612453-5.87198 3.737983-5.286177 3.737983-4.951432C3.737983-4.644583 3.654296-4.323786 3.486924-3.654296L3.012702-1.743462C2.803487-.9066 2.399004-.139477 1.659776-.139477C1.590037-.139477 1.241345-.139477 .948443-.320797C1.45056-.418431 1.562142-.836862 1.562142-1.004234C1.562142-1.283188 1.352927-1.45056 1.08792-1.45056C.753176-1.45056 .390535-1.157659 .390535-.711333C.390535-.125529 1.046077 .139477 1.645828 .139477C2.315318 .139477 2.789539-.390535 3.082441-.962391C3.305604-.139477 4.002989 .139477 4.519054 .139477C5.941719 .139477 6.694894-1.687671 6.694894-1.994521C6.694894-2.064259 6.639103-2.12005 6.555417-2.12005C6.429888-2.12005 6.41594-2.050311 6.374097-1.93873C5.997509-.711333 5.188543-.139477 4.560897-.139477C4.072727-.139477 3.807721-.502117 3.807721-1.073973C3.807721-1.380822 3.863512-1.603985 4.086675-2.524533L4.574844-4.42142C4.78406-5.258281 5.258281-5.87198 5.899875-5.87198C5.927771-5.87198 6.318306-5.87198 6.611208-5.69066Z'/>
7−<path id='g1-121' d='M3.668244 1.562142C3.291656 2.092154 2.747696 2.566376 2.064259 2.566376C1.896887 2.566376 1.227397 2.538481 1.018182 1.896887C1.060025 1.910834 1.129763 1.910834 1.157659 1.910834C1.57609 1.910834 1.855044 1.548194 1.855044 1.227397S1.590037 .795019 1.380822 .795019C1.157659 .795019 .669489 .962391 .669489 1.645828C.669489 2.357161 1.26924 2.84533 2.064259 2.84533C3.459029 2.84533 4.867746 1.562142 5.258281 .013948L6.625156-5.425654C6.639103-5.495392 6.666999-5.579078 6.666999-5.662765C6.666999-5.87198 6.499626-6.011457 6.290411-6.011457C6.164882-6.011457 5.87198-5.955666 5.760399-5.537235L4.728269-1.436613C4.658531-1.185554 4.658531-1.157659 4.546949-1.004234C4.267995-.613699 3.807721-.139477 3.138232-.139477C2.357161-.139477 2.287422-.9066 2.287422-1.283188C2.287422-2.078207 2.66401-3.152179 3.040598-4.156413C3.194022-4.560897 3.277709-4.756164 3.277709-5.035118C3.277709-5.620922 2.859278-6.150934 2.175841-6.150934C.892653-6.150934 .376588-4.128518 .376588-4.016936C.376588-3.961146 .432379-3.891407 .530012-3.891407C.655542-3.891407 .669489-3.947198 .72528-4.142466C1.060025-5.314072 1.590037-5.87198 2.133998-5.87198C2.259527-5.87198 2.496638-5.87198 2.496638-5.411706C2.496638-5.049066 2.343213-4.644583 2.133998-4.11457C1.45056-2.287422 1.45056-1.827148 1.45056-1.492403C1.45056-.167372 2.399004 .139477 3.096389 .139477C3.500872 .139477 4.002989 .013948 4.491158-.502117L4.505106-.488169C4.29589 .334745 4.156413 .878705 3.668244 1.562142Z'/>
8−<path id='g1-122' d='M1.771357-1.129763C2.371108-1.8132 2.859278-2.245579 3.556663-2.873225C4.393524-3.598506 4.756164-3.947198 4.951432-4.156413C5.927771-5.118804 6.41594-5.927771 6.41594-6.039352S6.304359-6.150934 6.276463-6.150934C6.178829-6.150934 6.150934-6.095143 6.081196-5.997509C5.732503-5.397758 5.397758-5.104857 5.035118-5.104857C4.742217-5.104857 4.588792-5.230386 4.323786-5.565131C4.030884-5.913823 3.793773-6.150934 3.38929-6.150934C2.371108-6.150934 1.75741-4.881694 1.75741-4.588792C1.75741-4.546949 1.771357-4.463263 1.896887-4.463263C2.008468-4.463263 2.022416-4.519054 2.064259-4.616687C2.30137-5.174595 2.970859-5.272229 3.235866-5.272229C3.528767-5.272229 3.807721-5.174595 4.100623-5.049066C4.630635-4.825903 4.853798-4.825903 4.993275-4.825903C5.090909-4.825903 5.1467-4.825903 5.216438-4.839851C4.756164-4.29589 4.002989-3.626401 3.375342-3.054545L1.966625-1.75741C1.115816-.892653 .599751-.069738 .599751 .027895C.599751 .111582 .669489 .139477 .753176 .139477S.850809 .125529 .948443-.041843C1.171606-.390535 1.617933-.9066 2.133998-.9066C2.426899-.9066 2.566376-.808966 2.84533-.460274C3.110336-.153425 3.347447 .139477 3.793773 .139477C5.160648 .139477 5.941719-1.63188 5.941719-1.952677C5.941719-2.008468 5.927771-2.092154 5.788294-2.092154C5.676712-2.092154 5.662765-2.036364 5.620922-1.896887C5.314072-1.073973 4.491158-.739228 3.947198-.739228C3.654296-.739228 3.375342-.836862 3.082441-.962391C2.524533-1.185554 2.371108-1.185554 2.189788-1.185554C2.050311-1.185554 1.896887-1.185554 1.771357-1.129763Z'/>
9−<path id='g2-43' d='M5.565131-3.221918H9.414695C9.609963-3.221918 9.861021-3.221918 9.861021-3.472976C9.861021-3.737983 9.62391-3.737983 9.414695-3.737983H5.565131V-7.587547C5.565131-7.782814 5.565131-8.033873 5.314072-8.033873C5.049066-8.033873 5.049066-7.796762 5.049066-7.587547V-3.737983H1.199502C1.004234-3.737983 .753176-3.737983 .753176-3.486924C.753176-3.221918 .990286-3.221918 1.199502-3.221918H5.049066V.627646C5.049066 .822914 5.049066 1.073973 5.300125 1.073973C5.565131 1.073973 5.565131 .836862 5.565131 .627646V-3.221918Z'/>
10−<path id='g2-49' d='M4.016936-8.940473C4.016936-9.26127 4.016936-9.275218 3.737983-9.275218C3.403238-8.89863 2.705853-8.382565 1.26924-8.382565V-7.978082C1.590037-7.978082 2.287422-7.978082 3.054545-8.340722V-1.073973C3.054545-.571856 3.012702-.404483 1.785305-.404483H1.352927V0C1.729514-.027895 3.082441-.027895 3.542715-.027895S5.341968-.027895 5.718555 0V-.404483H5.286177C4.05878-.404483 4.016936-.571856 4.016936-1.073973V-8.940473Z'/>
11−</defs>
12−<g id='page1'>
13−<use x='59.270442' y='62.786766' xlink:href='#g2-49'/>
14−<rect x='58.804295' y='68.456606' height='.55789' width='7.760768'/>
15−<use x='58.804295' y='81.789907' xlink:href='#g1-120'/>
16−<use x='70.860038' y='72.222482' xlink:href='#g2-43'/>
17−<use x='85.942577' y='62.786766' xlink:href='#g2-49'/>
18−<rect x='85.777106' y='68.456606' height='.55789' width='7.159416'/>
19−<use x='85.777106' y='81.789907' xlink:href='#g1-121'/>
20−<rect x='57.608781' y='86.175621' height='.55789' width='36.523255'/>
21−<use x='60.284264' y='99.508922' xlink:href='#g1-121'/>
22−<use x='70.543155' y='99.508922' xlink:href='#g0-0'/>
23−<use x='84.490862' y='99.508922' xlink:href='#g1-122'/>
24−</g>
25−</svg>
_images/math/3b8127a8eed95247f9249ea6c85e8e86df1baa82.svgdeleted−25
@@ -1,25 +0,0 @@
1−<?xml version='1.0' encoding='UTF-8'?>
2−<!-- This file was generated by dvisvgm 2.8.1 -->
3−<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' width='23.092891pt' height='29.523663pt' viewBox='57.608781 53.79825 23.092891 29.523663'>
4−<defs>
5−<path id='g0-0' d='M6.434044-2.245569C6.600021-2.245569 6.775761-2.245569 6.775761-2.440836S6.600021-2.636103 6.434044-2.636103H1.152075C.986098-2.636103 .810358-2.636103 .810358-2.440836S.986098-2.245569 1.152075-2.245569H6.434044Z'/>
6−<path id='g1-120' d='M3.260957-2.94853C3.319537-3.202377 3.544094-4.100605 4.227528-4.100605C4.276345-4.100605 4.510665-4.100605 4.715696-3.973681C4.442322-3.924865 4.247055-3.680781 4.247055-3.446461C4.247055-3.290247 4.354452-3.104744 4.618062-3.104744C4.832856-3.104744 5.145283-3.280484 5.145283-3.671018C5.145283-4.178712 4.569245-4.315398 4.237292-4.315398C3.671018-4.315398 3.329301-3.797941 3.21214-3.573384C2.968057-4.217765 2.440836-4.315398 2.157699-4.315398C1.142311-4.315398 .585801-3.055927 .585801-2.811843C.585801-2.71421 .683434-2.71421 .702961-2.71421C.781068-2.71421 .810358-2.733737 .829884-2.821607C1.161838-3.856521 1.806219-4.100605 2.138172-4.100605C2.323676-4.100605 2.665393-4.012735 2.665393-3.446461C2.665393-3.143797 2.499416-2.489653 2.138172-1.122785C1.981959-.517457 1.640242-.107397 1.210655-.107397C1.152075-.107397 .927518-.107397 .722488-.23432C.966571-.283137 1.181365-.488167 1.181365-.761541C1.181365-1.025151 .966571-1.103258 .820121-1.103258C.527221-1.103258 .283137-.849411 .283137-.536984C.283137-.08787 .771304 .107397 1.200891 .107397C1.845272 .107397 2.196753-.576037 2.226043-.634617C2.343203-.273374 2.694683 .107397 3.280484 .107397C4.286108 .107397 4.842619-1.152075 4.842619-1.396158C4.842619-1.493792 4.754749-1.493792 4.725459-1.493792C4.637589-1.493792 4.618062-1.454738 4.598535-1.386395C4.276345-.341717 3.612438-.107397 3.300011-.107397C2.91924-.107397 2.763027-.419824 2.763027-.751778C2.763027-.966571 2.821607-1.181365 2.929003-1.610952L3.260957-2.94853Z'/>
7−<path id='g1-121' d='M4.744986-3.719834C4.784039-3.856521 4.784039-3.876048 4.784039-3.944391C4.784039-4.120131 4.647352-4.208002 4.500902-4.208002C4.403268-4.208002 4.247055-4.149422 4.159185-4.002971C4.139658-3.954155 4.061551-3.651491 4.022498-3.475751C3.954155-3.221904 3.885811-2.958293 3.827231-2.694683L3.387881-.937281C3.348827-.790831 2.929003-.107397 2.284623-.107397C1.786692-.107397 1.679295-.536984 1.679295-.898228C1.679295-1.347342 1.845272-1.952669 2.177226-2.811843C2.333439-3.21214 2.372493-3.319537 2.372493-3.514804C2.372493-3.954155 2.060066-4.315398 1.571899-4.315398C.644381-4.315398 .283137-2.899713 .283137-2.811843C.283137-2.71421 .38077-2.71421 .400297-2.71421C.497931-2.71421 .507694-2.733737 .556511-2.88995C.820121-3.807704 1.210655-4.100605 1.542608-4.100605C1.620715-4.100605 1.786692-4.100605 1.786692-3.788178C1.786692-3.544094 1.689059-3.290247 1.620715-3.104744C1.230181-2.069829 1.054441-1.513318 1.054441-1.054441C1.054441-.185504 1.669532 .107397 2.245569 .107397C2.62634 .107397 2.958293-.05858 3.231667-.331954C3.104744 .17574 2.987583 .654144 2.59705 1.171601C2.343203 1.503555 1.972196 1.786692 1.523082 1.786692C1.386395 1.786692 .947044 1.757402 .781068 1.376632C.937281 1.376632 1.064205 1.376632 1.200891 1.259471C1.298525 1.171601 1.396158 1.044678 1.396158 .859174C1.396158 .556511 1.132548 .517457 1.034915 .517457C.810358 .517457 .488167 .673671 .488167 1.152075C.488167 1.640242 .917754 2.001486 1.523082 2.001486C2.528706 2.001486 3.534331 1.113021 3.807704 .009763L4.744986-3.719834Z'/>
8−<path id='g1-122' d='M1.298525-.810358C1.825745-1.376632 2.108882-1.620715 2.460363-1.923379C2.460363-1.933142 3.06569-2.4506 3.417171-2.80208C4.344688-3.710071 4.559482-4.178712 4.559482-4.217765C4.559482-4.315398 4.471612-4.315398 4.452085-4.315398C4.383742-4.315398 4.354452-4.295872 4.305635-4.208002C4.012735-3.739361 3.807704-3.583148 3.573384-3.583148S3.221904-3.729598 3.075454-3.895575C2.88995-4.120131 2.723973-4.315398 2.401783-4.315398C1.669532-4.315398 1.220418-3.407407 1.220418-3.202377C1.220418-3.15356 1.249708-3.09498 1.337578-3.09498S1.444975-3.143797 1.464502-3.202377C1.650005-3.651491 2.216279-3.661254 2.294386-3.661254C2.499416-3.661254 2.68492-3.592911 2.909477-3.514804C3.300011-3.368354 3.407407-3.368354 3.661254-3.368354C3.309774-2.94853 2.489653-2.245569 2.304149-2.089356L1.425448-1.269235C.761541-.615091 .419824-.05858 .419824 .009763C.419824 .107397 .517457 .107397 .536984 .107397C.615091 .107397 .634617 .08787 .693197-.019527C.917754-.361244 1.210655-.624854 1.523082-.624854C1.747639-.624854 1.845272-.536984 2.089356-.253847C2.255333-.048817 2.431073 .107397 2.71421 .107397C3.680781 .107397 4.247055-1.132548 4.247055-1.396158C4.247055-1.444975 4.208002-1.493792 4.129895-1.493792C4.042025-1.493792 4.022498-1.435212 3.993208-1.366868C3.768651-.732251 3.143797-.546747 2.821607-.546747C2.62634-.546747 2.4506-.605327 2.245569-.673671C1.913616-.800594 1.767165-.839648 1.562135-.839648C1.542608-.839648 1.386395-.839648 1.298525-.810358Z'/>
9−<path id='g2-43' d='M3.993208-2.245569H6.717181C6.853868-2.245569 7.039372-2.245569 7.039372-2.440836S6.853868-2.636103 6.717181-2.636103H3.993208V-5.36984C3.993208-5.506526 3.993208-5.69203 3.797941-5.69203S3.602674-5.506526 3.602674-5.36984V-2.636103H.868938C.732251-2.636103 .546747-2.636103 .546747-2.440836S.732251-2.245569 .868938-2.245569H3.602674V.488167C3.602674 .624854 3.602674 .810358 3.797941 .810358S3.993208 .624854 3.993208 .488167V-2.245569Z'/>
10−<path id='g2-49' d='M2.870423-6.248541C2.870423-6.482861 2.870423-6.502388 2.645866-6.502388C2.040539-5.877534 1.181365-5.877534 .868938-5.877534V-5.57487C1.064205-5.57487 1.640242-5.57487 2.147936-5.828717V-.771304C2.147936-.419824 2.118646-.302664 1.239945-.302664H.927518V0C1.269235-.02929 2.118646-.02929 2.50918-.02929S3.749124-.02929 4.090841 0V-.302664H3.778414C2.899713-.302664 2.870423-.41006 2.870423-.771304V-6.248541Z'/>
11−</defs>
12−<g id='page1'>
13−<use x='59.153464' y='60.090183' xlink:href='#g2-49'/>
14−<rect x='58.804295' y='61.81595' height='.55789' width='5.580027'/>
15−<use x='58.804295' y='70.391549' xlink:href='#g1-120'/>
16−<use x='65.579836' y='65.581827' xlink:href='#g2-43'/>
17−<use x='74.496784' y='60.090183' xlink:href='#g2-49'/>
18−<rect x='74.369089' y='61.81595' height='.55789' width='5.137078'/>
19−<use x='74.369089' y='70.391549' xlink:href='#g1-121'/>
20−<rect x='57.608781' y='72.847884' height='.55789' width='23.092891'/>
21−<use x='60.304908' y='81.423483' xlink:href='#g1-121'/>
22−<use x='65.441996' y='81.423483' xlink:href='#g0-0'/>
23−<use x='73.035735' y='81.423483' xlink:href='#g1-122'/>
24−</g>
25−</svg>
_images/math/6673b43f9fe29455c1fcd1164e5844698cc64d38.svgdeleted−22
@@ -1,22 +0,0 @@
1−<?xml version='1.0' encoding='UTF-8'?>
2−<!-- This file was generated by dvisvgm 2.8.1 -->
3−<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' width='69.686469pt' height='12.418845pt' viewBox='56.413267 54.399982 69.686469 12.418845'>
4−<defs>
5−<path id='g2-43' d='M5.565131-3.221918H9.414695C9.609963-3.221918 9.861021-3.221918 9.861021-3.472976C9.861021-3.737983 9.62391-3.737983 9.414695-3.737983H5.565131V-7.587547C5.565131-7.782814 5.565131-8.033873 5.314072-8.033873C5.049066-8.033873 5.049066-7.796762 5.049066-7.587547V-3.737983H1.199502C1.004234-3.737983 .753176-3.737983 .753176-3.486924C.753176-3.221918 .990286-3.221918 1.199502-3.221918H5.049066V.627646C5.049066 .822914 5.049066 1.073973 5.300125 1.073973C5.565131 1.073973 5.565131 .836862 5.565131 .627646V-3.221918Z'/>
6−<path id='g2-61' d='M9.414695-4.519054C9.609963-4.519054 9.861021-4.519054 9.861021-4.770112C9.861021-5.035118 9.62391-5.035118 9.414695-5.035118H1.199502C1.004234-5.035118 .753176-5.035118 .753176-4.78406C.753176-4.519054 .990286-4.519054 1.199502-4.519054H9.414695ZM9.414695-1.924782C9.609963-1.924782 9.861021-1.924782 9.861021-2.175841C9.861021-2.440847 9.62391-2.440847 9.414695-2.440847H1.199502C1.004234-2.440847 .753176-2.440847 .753176-2.189788C.753176-1.924782 .990286-1.924782 1.199502-1.924782H9.414695Z'/>
7−<path id='g1-50' d='M1.239945-.751778L2.274859-1.757402C3.797941-3.104744 4.383742-3.631964 4.383742-4.608299C4.383742-5.72132 3.505041-6.502388 2.313913-6.502388C1.210655-6.502388 .488167-5.60416 .488167-4.735222C.488167-4.188475 .976334-4.188475 1.005625-4.188475C1.171601-4.188475 1.513318-4.305635 1.513318-4.705932C1.513318-4.959779 1.337578-5.213626 .995861-5.213626C.917754-5.213626 .898228-5.213626 .868938-5.203863C1.093495-5.83848 1.620715-6.199724 2.186989-6.199724C3.075454-6.199724 3.495277-5.408893 3.495277-4.608299C3.495277-3.827231 3.00711-3.055927 2.470126-2.4506L.595564-.361244C.488167-.253847 .488167-.23432 .488167 0H4.110368L4.383742-1.698822H4.139658C4.090841-1.405922 4.022498-.976334 3.924865-.829884C3.856521-.751778 3.21214-.751778 2.997347-.751778H1.239945Z'/>
8−<path id='g0-97' d='M4.198257-1.659776C4.128518-1.422665 4.128518-1.39477 3.93325-1.129763C3.626401-.739228 3.012702-.139477 2.357161-.139477C1.785305-.139477 1.464508-.655542 1.464508-1.478456C1.464508-2.245579 1.896887-3.807721 2.161893-4.393524C2.636115-5.369863 3.291656-5.87198 3.835616-5.87198C4.756164-5.87198 4.937484-4.728269 4.937484-4.616687C4.937484-4.60274 4.895641-4.42142 4.881694-4.393524L4.198257-1.659776ZM5.090909-5.230386C4.937484-5.593026 4.560897-6.150934 3.835616-6.150934C2.259527-6.150934 .557908-4.11457 .557908-2.050311C.557908-.669489 1.366874 .139477 2.315318 .139477C3.082441 .139477 3.737983-.460274 4.128518-.920548C4.267995-.097634 4.923537 .139477 5.341968 .139477S6.095143-.111582 6.346202-.613699C6.569365-1.08792 6.764633-1.93873 6.764633-1.994521C6.764633-2.064259 6.708842-2.12005 6.625156-2.12005C6.499626-2.12005 6.485679-2.050311 6.429888-1.841096C6.220672-1.018182 5.955666-.139477 5.383811-.139477C4.979328-.139477 4.951432-.502117 4.951432-.781071C4.951432-1.101868 4.993275-1.255293 5.118804-1.799253C5.216438-2.147945 5.286177-2.454795 5.397758-2.859278C5.913823-4.951432 6.039352-5.453549 6.039352-5.537235C6.039352-5.732503 5.885928-5.885928 5.676712-5.885928C5.230386-5.885928 5.118804-5.397758 5.090909-5.230386Z'/>
9−<path id='g0-98' d='M3.221918-9.331009C3.235866-9.3868 3.263761-9.470486 3.263761-9.540224C3.263761-9.679701 3.124284-9.679701 3.096389-9.679701C3.082441-9.679701 2.580324-9.637858 2.329265-9.609963C2.092154-9.596015 1.882939-9.56812 1.63188-9.554172C1.297136-9.526276 1.199502-9.512329 1.199502-9.26127C1.199502-9.121793 1.338979-9.121793 1.478456-9.121793C2.189788-9.121793 2.189788-8.996264 2.189788-8.856787C2.189788-8.759153 2.078207-8.35467 2.022416-8.103611L1.687671-6.764633C1.548194-6.206725 .753176-3.040598 .697385-2.789539C.627646-2.440847 .627646-2.203736 .627646-2.022416C.627646-.599751 1.422665 .139477 2.329265 .139477C3.947198 .139477 5.620922-1.93873 5.620922-3.961146C5.620922-5.244334 4.895641-6.150934 3.849564-6.150934C3.124284-6.150934 2.468742-5.551183 2.203736-5.272229L3.221918-9.331009ZM2.343213-.139477C1.896887-.139477 1.408717-.474222 1.408717-1.562142C1.408717-2.022416 1.45056-2.287422 1.701619-3.263761C1.743462-3.445081 1.966625-4.337733 2.022416-4.519054C2.050311-4.630635 2.873225-5.87198 3.821669-5.87198C4.435367-5.87198 4.714321-5.258281 4.714321-4.533001C4.714321-3.863512 4.323786-2.287422 3.975093-1.562142C3.626401-.808966 2.984807-.139477 2.343213-.139477Z'/>
10−<path id='g0-99' d='M5.453549-5.244334C5.188543-5.244334 5.063014-5.244334 4.867746-5.076961C4.78406-5.007223 4.630635-4.798007 4.630635-4.574844C4.630635-4.29589 4.839851-4.128518 5.104857-4.128518C5.439601-4.128518 5.816189-4.407472 5.816189-4.96538C5.816189-5.634869 5.174595-6.150934 4.212204-6.150934C2.385056-6.150934 .557908-4.156413 .557908-2.175841C.557908-.962391 1.311083 .139477 2.733748 .139477C4.630635 .139477 5.830137-1.338979 5.830137-1.520299C5.830137-1.603985 5.746451-1.673724 5.69066-1.673724C5.648817-1.673724 5.634869-1.659776 5.50934-1.534247C4.616687-.348692 3.291656-.139477 2.761644-.139477C1.799253-.139477 1.492403-.976339 1.492403-1.673724C1.492403-2.161893 1.729514-3.514819 2.231631-4.463263C2.594271-5.118804 3.347447-5.87198 4.226152-5.87198C4.407472-5.87198 5.174595-5.844085 5.453549-5.244334Z'/>
11−</defs>
12−<g id='page1'>
13−<use x='56.413267' y='65.753425' xlink:href='#g0-97'/>
14−<use x='63.582369' y='60.691915' xlink:href='#g1-50'/>
15−<use x='72.061649' y='65.753425' xlink:href='#g2-43'/>
16−<use x='85.783204' y='65.753425' xlink:href='#g0-98'/>
17−<use x='91.589827' y='60.691915' xlink:href='#g1-50'/>
18−<use x='100.843973' y='65.753425' xlink:href='#g2-61'/>
19−<use x='115.340392' y='65.753425' xlink:href='#g0-99'/>
20−<use x='121.218045' y='60.691915' xlink:href='#g1-50'/>
21−</g>
22−</svg>
_images/math/a6a994cb6e7278ec30eaebe7e636046d3deccb5b.svgdeleted−43
@@ -1,43 +0,0 @@
1−<?xml version='1.0' encoding='UTF-8'?>
2−<!-- This file was generated by dvisvgm 2.8.1 -->
3−<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' width='134.289458pt' height='28.68903pt' viewBox='165.981071 78.308016 134.289458 28.68903'>
4−<defs>
5−<path id='g1-105' d='M3.807721-3.249813C3.87746-3.417186 3.87746-3.445081 3.87746-3.486924S3.87746-3.556663 3.807721-3.724035L1.366874-10.139975C1.283188-10.377086 1.199502-10.460772 1.046077-10.460772S.767123-10.335243 .767123-10.181818C.767123-10.139975 .767123-10.11208 .836862-9.958655L3.305604-3.486924L.836862 2.956912C.767123 3.110336 .767123 3.138232 .767123 3.20797C.767123 3.361395 .892653 3.486924 1.046077 3.486924C1.227397 3.486924 1.283188 3.347447 1.338979 3.20797L3.807721-3.249813Z'/>
6−<path id='g1-106' d='M2.217684-9.958655C2.217684-10.209714 2.217684-10.460772 1.93873-10.460772S1.659776-10.209714 1.659776-9.958655V2.984807C1.659776 3.235866 1.659776 3.486924 1.93873 3.486924S2.217684 3.235866 2.217684 2.984807V-9.958655Z'/>
7−<path id='g2-32' d='M6.555417-9.344956C6.555417-9.358904 6.611208-9.540224 6.611208-9.554172C6.611208-9.679701 6.499626-9.679701 6.457783-9.679701C6.332254-9.679701 6.318306-9.609963 6.262516-9.400747L3.961146-.167372C2.803487-.306849 2.371108-.892653 2.371108-1.729514C2.371108-2.036364 2.371108-2.357161 3.02665-4.086675C3.20797-4.588792 3.277709-4.770112 3.277709-5.021171C3.277709-5.648817 2.831382-6.150934 2.175841-6.150934C.892653-6.150934 .376588-4.128518 .376588-4.016936C.376588-3.961146 .432379-3.891407 .530012-3.891407C.655542-3.891407 .669489-3.947198 .72528-4.142466C1.060025-5.355915 1.617933-5.87198 2.133998-5.87198C2.259527-5.87198 2.496638-5.858032 2.496638-5.411706C2.496638-5.355915 2.496638-5.049066 2.259527-4.435367C1.506351-2.454795 1.506351-2.147945 1.506351-1.827148C1.506351-.488169 2.622167 .027895 3.87746 .125529C3.765878 .557908 3.668244 1.004234 3.556663 1.436613C3.333499 2.273474 3.235866 2.66401 3.235866 2.719801C3.235866 2.84533 3.347447 2.84533 3.38929 2.84533C3.417186 2.84533 3.472976 2.84533 3.500872 2.789539C3.556663 2.733748 4.128518 .390535 4.184309 .139477C4.700374 .139477 5.802242 .139477 7.057534-1.157659C7.517808-1.659776 7.936239-2.30137 8.17335-2.901121C8.312827-3.263761 8.647572-4.505106 8.647572-5.216438C8.647572-6.0533 8.229141-6.150934 8.089664-6.150934C7.754919-6.150934 7.44807-5.816189 7.44807-5.537235C7.44807-5.369863 7.545704-5.272229 7.601494-5.216438C7.727024-5.090909 8.103611-4.714321 8.103611-3.989041C8.103611-3.486924 7.824658-2.454795 6.932005-1.45056C5.760399-.139477 4.686426-.139477 4.267995-.139477L6.555417-9.344956Z'/>
8−<path id='g2-58' d='M2.566376-.669489C2.566376-1.073973 2.231631-1.352927 1.896887-1.352927C1.492403-1.352927 1.21345-1.018182 1.21345-.683437C1.21345-.278954 1.548194 0 1.882939 0C2.287422 0 2.566376-.334745 2.566376-.669489Z'/>
9−<path id='g2-64' d='M6.332254-4.658531C6.248568-5.439601 5.760399-6.374097 4.505106-6.374097C2.538481-6.374097 .530012-4.379577 .530012-2.161893C.530012-1.311083 1.115816 .292902 3.012702 .292902C6.304359 .292902 7.713076-4.505106 7.713076-6.41594C7.713076-8.424408 6.583313-9.972603 4.798007-9.972603C2.775592-9.972603 2.175841-8.201245 2.175841-7.824658C2.175841-7.699128 2.259527-7.392279 2.650062-7.392279C3.138232-7.392279 3.347447-7.838605 3.347447-8.075716C3.347447-8.508095 2.915068-8.508095 2.733748-8.508095C3.305604-9.540224 4.365629-9.637858 4.742217-9.637858C5.969614-9.637858 6.750685-8.661519 6.750685-7.099377C6.750685-6.206725 6.485679-5.174595 6.346202-4.658531H6.332254ZM3.054545-.083686C1.743462-.083686 1.520299-1.115816 1.520299-1.701619C1.520299-2.315318 1.910834-3.75193 2.12005-4.267995C2.30137-4.686426 3.096389-6.095143 4.546949-6.095143C5.816189-6.095143 6.109091-4.993275 6.109091-4.2401C6.109091-3.20797 5.202491-.083686 3.054545-.083686Z'/>
10−<path id='g2-72' d='M10.432877-8.508095C10.558406-8.982316 10.586301-9.121793 11.576588-9.121793C11.827646-9.121793 11.967123-9.121793 11.967123-9.372852C11.967123-9.526276 11.841594-9.526276 11.757908-9.526276C11.506849-9.526276 11.213948-9.498381 10.948941-9.498381H9.303113C9.038107-9.498381 8.745205-9.526276 8.480199-9.526276C8.382565-9.526276 8.215193-9.526276 8.215193-9.26127C8.215193-9.121793 8.312827-9.121793 8.577833-9.121793C9.414695-9.121793 9.414695-9.010212 9.414695-8.856787C9.414695-8.828892 9.414695-8.745205 9.358904-8.53599L8.508095-5.160648H4.29589L5.132752-8.508095C5.258281-8.982316 5.286177-9.121793 6.276463-9.121793C6.527522-9.121793 6.666999-9.121793 6.666999-9.372852C6.666999-9.526276 6.541469-9.526276 6.457783-9.526276C6.206725-9.526276 5.913823-9.498381 5.648817-9.498381H4.002989C3.737983-9.498381 3.445081-9.526276 3.180075-9.526276C3.082441-9.526276 2.915068-9.526276 2.915068-9.26127C2.915068-9.121793 3.012702-9.121793 3.277709-9.121793C4.11457-9.121793 4.11457-9.010212 4.11457-8.856787C4.11457-8.828892 4.11457-8.745205 4.05878-8.53599L2.175841-1.03213C2.050311-.54396 2.022416-.404483 1.060025-.404483C.739228-.404483 .641594-.404483 .641594-.139477C.641594 0 .795019 0 .836862 0C1.08792 0 1.380822-.027895 1.645828-.027895H3.291656C3.556663-.027895 3.849564 0 4.11457 0C4.226152 0 4.379577 0 4.379577-.265006C4.379577-.404483 4.254047-.404483 4.044832-.404483C3.194022-.404483 3.194022-.516065 3.194022-.655542C3.194022-.669489 3.194022-.767123 3.221918-.878705L4.184309-4.756164H8.410461C8.17335-3.835616 7.462017-.920548 7.434122-.836862C7.280697-.418431 7.057534-.418431 6.23462-.404483C6.067248-.404483 5.941719-.404483 5.941719-.139477C5.941719 0 6.095143 0 6.136986 0C6.388045 0 6.680946-.027895 6.945953-.027895H8.591781C8.856787-.027895 9.149689 0 9.414695 0C9.526276 0 9.679701 0 9.679701-.265006C9.679701-.404483 9.554172-.404483 9.344956-.404483C8.494147-.404483 8.494147-.516065 8.494147-.655542C8.494147-.669489 8.494147-.767123 8.522042-.878705L10.432877-8.508095Z'/>
11−<path id='g2-116' d='M2.803487-5.606974H4.086675C4.351681-5.606974 4.491158-5.606974 4.491158-5.858032C4.491158-6.011457 4.407472-6.011457 4.128518-6.011457H2.901121L3.417186-8.047821C3.472976-8.243088 3.472976-8.270984 3.472976-8.368618C3.472976-8.591781 3.291656-8.71731 3.110336-8.71731C2.998755-8.71731 2.677958-8.675467 2.566376-8.229141L2.022416-6.011457H.711333C.432379-6.011457 .306849-6.011457 .306849-5.746451C.306849-5.606974 .404483-5.606974 .669489-5.606974H1.910834L.990286-1.924782C.878705-1.436613 .836862-1.297136 .836862-1.115816C.836862-.460274 1.297136 .139477 2.078207 .139477C3.486924 .139477 4.2401-1.896887 4.2401-1.994521C4.2401-2.078207 4.184309-2.12005 4.100623-2.12005C4.072727-2.12005 4.016936-2.12005 3.989041-2.064259C3.975093-2.050311 3.961146-2.036364 3.863512-1.8132C3.57061-1.115816 2.929016-.139477 2.12005-.139477C1.701619-.139477 1.673724-.488169 1.673724-.795019C1.673724-.808966 1.673724-1.073973 1.715567-1.241345L2.803487-5.606974Z'/>
12−<path id='g0-126' d='M3.556663-7.671233H6.262516C6.499626-7.671233 6.653051-7.671233 6.653051-7.838605C6.653051-8.019925 6.485679-8.019925 6.220672-8.019925H3.640349C3.737983-8.368618 3.737983-8.396513 3.821669-8.745205C3.891407-8.996264 4.016936-9.484433 4.016936-9.512329C4.016936-9.637858 3.93325-9.679701 3.821669-9.679701C3.556663-9.679701 2.454795-9.56812 2.12005-9.540224C2.008468-9.526276 1.855044-9.512329 1.855044-9.247323C1.855044-9.093898 1.994521-9.093898 2.189788-9.093898C2.859278-9.093898 2.887173-8.996264 2.887173-8.856787C2.887173-8.759153 2.761644-8.298879 2.691905-8.019925H1.910834C1.63188-8.019925 1.478456-8.019925 1.478456-7.838605C1.478456-7.671233 1.603985-7.671233 1.868991-7.671233H2.608219L.822914-.557908C.767123-.348692 .767123-.320797 .767123-.237111C.767123 .069738 1.004234 .153425 1.171606 .153425C1.436613 .153425 1.63188-.041843 1.687671-.223163C1.715567-.292902 1.868991-.920548 1.952677-1.26924L2.273474-2.510585C2.315318-2.719801 2.454795-3.249813 2.496638-3.459029C2.566376-3.682192 2.66401-4.11457 2.677958-4.156413C2.789539-4.393524 3.542715-5.858032 4.937484-5.858032C5.551183-5.858032 5.69066-5.355915 5.69066-4.895641C5.69066-4.030884 5.049066-2.329265 4.798007-1.687671C4.714321-1.464508 4.644583-1.26924 4.644583-1.004234C4.644583-.278954 5.160648 .153425 5.788294 .153425C7.127273 .153425 7.615442-1.910834 7.615442-1.994521C7.615442-2.133998 7.489913-2.133998 7.44807-2.133998C7.308593-2.133998 7.308593-2.092154 7.238854-1.882939C6.834371-.460274 6.206725-.153425 5.830137-.153425C5.565131-.153425 5.481445-.320797 5.481445-.613699C5.481445-.962391 5.634869-1.352927 5.718555-1.590037C5.955666-2.203736 6.583313-3.87746 6.583313-4.658531C6.583313-5.676712 5.941719-6.164882 4.979328-6.164882C4.546949-6.164882 3.710087-6.067248 2.915068-5.104857L3.556663-7.671233Z'/>
13−<path id='g3-40' d='M4.533001 3.38929C4.533001 3.347447 4.533001 3.319552 4.29589 3.082441C2.901121 1.673724 2.12005-.627646 2.12005-3.472976C2.12005-6.178829 2.775592-8.508095 4.393524-10.153923C4.533001-10.279452 4.533001-10.307347 4.533001-10.349191C4.533001-10.432877 4.463263-10.460772 4.407472-10.460772C4.226152-10.460772 3.082441-9.456538 2.399004-8.089664C1.687671-6.680946 1.366874-5.188543 1.366874-3.472976C1.366874-2.231631 1.562142-.571856 2.287422 .920548C3.110336 2.594271 4.254047 3.500872 4.407472 3.500872C4.463263 3.500872 4.533001 3.472976 4.533001 3.38929Z'/>
14−<path id='g3-41' d='M3.93325-3.472976C3.93325-4.533001 3.793773-6.262516 3.012702-7.880448C2.189788-9.554172 1.046077-10.460772 .892653-10.460772C.836862-10.460772 .767123-10.432877 .767123-10.349191C.767123-10.307347 .767123-10.279452 1.004234-10.042341C2.399004-8.633624 3.180075-6.332254 3.180075-3.486924C3.180075-.781071 2.524533 1.548194 .9066 3.194022C.767123 3.319552 .767123 3.347447 .767123 3.38929C.767123 3.472976 .836862 3.500872 .892653 3.500872C1.073973 3.500872 2.217684 2.496638 2.901121 1.129763C3.612453-.292902 3.93325-1.799253 3.93325-3.472976Z'/>
15−<path id='g3-61' d='M9.414695-4.519054C9.609963-4.519054 9.861021-4.519054 9.861021-4.770112C9.861021-5.035118 9.62391-5.035118 9.414695-5.035118H1.199502C1.004234-5.035118 .753176-5.035118 .753176-4.78406C.753176-4.519054 .990286-4.519054 1.199502-4.519054H9.414695ZM9.414695-1.924782C9.609963-1.924782 9.861021-1.924782 9.861021-2.175841C9.861021-2.440847 9.62391-2.440847 9.414695-2.440847H1.199502C1.004234-2.440847 .753176-2.440847 .753176-2.189788C.753176-1.924782 .990286-1.924782 1.199502-1.924782H9.414695Z'/>
16−<path id='g3-94' d='M3.417186-9.679701L1.590037-7.782814L1.8132-7.573599L3.403238-9.010212L5.007223-7.573599L5.230386-7.782814L3.417186-9.679701Z'/>
17−<path id='g3-105' d='M2.426899-8.591781C2.426899-8.954421 2.133998-9.275218 1.743462-9.275218C1.380822-9.275218 1.073973-8.982316 1.073973-8.605729C1.073973-8.187298 1.408717-7.922291 1.743462-7.922291C2.175841-7.922291 2.426899-8.284932 2.426899-8.591781ZM.502117-5.997509V-5.593026C1.39477-5.593026 1.520299-5.50934 1.520299-4.825903V-1.03213C1.520299-.404483 1.366874-.404483 .460274-.404483V0C.850809-.027895 1.520299-.027895 1.924782-.027895C2.078207-.027895 2.887173-.027895 3.361395 0V-.404483C2.454795-.404483 2.399004-.474222 2.399004-1.018182V-6.150934L.502117-5.997509Z'/>
18−</defs>
19−<g id='page1'>
20−<use x='165.981071' y='97.429622' xlink:href='#g3-105'/>
21−<use x='169.774676' y='97.429622' xlink:href='#g0-126'/>
22−<use x='180.971707' y='87.993906' xlink:href='#g2-64'/>
23−<rect x='178.505856' y='93.663745' height='.55789' width='12.899852'/>
24−<use x='178.505856' y='106.997046' xlink:href='#g2-64'/>
25−<use x='186.474036' y='106.997046' xlink:href='#g2-116'/>
26−<use x='192.601222' y='97.429622' xlink:href='#g1-106'/>
27−<use x='198.80019' y='97.429622' xlink:href='#g2-32'/>
28−<use x='208.179277' y='97.429622' xlink:href='#g3-40'/>
29−<use x='213.490324' y='97.429622' xlink:href='#g2-116'/>
30−<use x='218.42201' y='97.429622' xlink:href='#g3-41'/>
31−<use x='223.733057' y='97.429622' xlink:href='#g1-105'/>
32−<use x='233.031506' y='97.429622' xlink:href='#g3-61'/>
33−<use x='251.068923' y='93.903964' xlink:href='#g3-94'/>
34−<use x='247.527926' y='97.429622' xlink:href='#g2-72'/>
35−<use x='259.920966' y='97.429622' xlink:href='#g1-106'/>
36−<use x='266.119934' y='97.429622' xlink:href='#g2-32'/>
37−<use x='275.499021' y='97.429622' xlink:href='#g3-40'/>
38−<use x='280.810068' y='97.429622' xlink:href='#g2-116'/>
39−<use x='285.741754' y='97.429622' xlink:href='#g3-41'/>
40−<use x='291.052801' y='97.429622' xlink:href='#g1-105'/>
41−<use x='296.476924' y='97.429622' xlink:href='#g2-58'/>
42−</g>
43−</svg>
_sources/dev/engine_overview.rst.txt+6−3
@@ -49,16 +49,19 @@ offline boolean engine runs offline
4949settings.yml
5050------------
5151
52−======================= =========== ===========================================
52+======================= =========== =============================================
5353argument type information
54−======================= =========== ===========================================
54+======================= =========== =============================================
5555name string name of search-engine
5656engine string name of searx-engine
5757 (filename without ``.py``)
5858shortcut string shortcut of search-engine
5959timeout string specific timeout for search-engine
6060display_error_messages boolean display error messages on the web UI
61−======================= =========== ===========================================
61+proxies dict set proxies for a specific engine
62+ (e.g. ``proxies : {http: socks5://proxy:port,
63+ https: socks5://proxy:port}``)
64+======================= =========== =============================================
6265
6366
6467overrides
_sources/dev/plugins.rst.txt+7
@@ -30,6 +30,13 @@ Example plugin
3030 ctx['search'].suggestions.add('example')
3131 return True
3232
33+External plugins
34+================
35+
36+External plugins are standard python modules implementing all the requirements of the standard plugins.
37+Plugins can be enabled by adding them to :ref:`settings.yml`'s ``plugins`` section.
38+Example external plugin can be found `here <https://github.com/asciimoo/searx_external_plugin_example>`_.
39+
3340Register your plugin
3441====================
3542
_static/basic.css+27−114
@@ -15,12 +15,6 @@ div.clearer {
1515 clear: both;
1616}
1717
18−div.section::after {
19− display: block;
20− content: '';
21− clear: left;
22−}
23−
2418/* -- relbar ---------------------------------------------------------------- */
2519
2620div.related {
@@ -322,27 +316,21 @@ img.align-default, .figure.align-default {
322316div.sidebar {
323317 margin: 0 0 0.5em 1em;
324318 border: 1px solid #ddb;
325− padding: 7px;
319+ padding: 7px 7px 0 7px;
326320 background-color: #ffe;
327321 width: 40%;
328322 float: right;
329− clear: right;
330− overflow-x: auto;
331323}
332324
333325p.sidebar-title {
334326 font-weight: bold;
335327}
336328
337−div.admonition, div.topic, blockquote {
338− clear: left;
339−}
340−
341329/* -- topics ---------------------------------------------------------------- */
342330
343331div.topic {
344332 border: 1px solid #ccc;
345− padding: 7px;
333+ padding: 7px 7px 0 7px;
346334 margin: 10px 0 10px 0;
347335}
348336
@@ -364,6 +352,10 @@ div.admonition dt {
364352 font-weight: bold;
365353}
366354
355+div.admonition dl {
356+ margin-bottom: 0;
357+}
358+
367359p.admonition-title {
368360 margin: 0px 10px 5px 0px;
369361 font-weight: bold;
@@ -374,28 +366,9 @@ div.body p.centered {
374366 margin-top: 25px;
375367}
376368
377−/* -- content of sidebars/topics/admonitions -------------------------------- */
378−
379−div.sidebar > :last-child,
380−div.topic > :last-child,
381−div.admonition > :last-child {
382− margin-bottom: 0;
383−}
384−
385−div.sidebar::after,
386−div.topic::after,
387−div.admonition::after,
388−blockquote::after {
389− display: block;
390− content: '';
391− clear: both;
392−}
393−
394369/* -- tables ---------------------------------------------------------------- */
395370
396371table.docutils {
397− margin-top: 10px;
398− margin-bottom: 10px;
399372 border: 0;
400373 border-collapse: collapse;
401374}
@@ -443,13 +416,13 @@ table.citation td {
443416 border-bottom: none;
444417}
445418
446−th > :first-child,
447−td > :first-child {
419+th > p:first-child,
420+td > p:first-child {
448421 margin-top: 0px;
449422}
450423
451−th > :last-child,
452−td > :last-child {
424+th > p:last-child,
425+td > p:last-child {
453426 margin-bottom: 0px;
454427}
455428
@@ -495,10 +468,6 @@ table.field-list td, table.field-list th {
495468
496469/* -- hlist styles ---------------------------------------------------------- */
497470
498−table.hlist {
499− margin: 1em 0;
500−}
501−
502471table.hlist td {
503472 vertical-align: top;
504473}
@@ -526,37 +495,17 @@ ol.upperroman {
526495 list-style: upper-roman;
527496}
528497
529−:not(li) > ol > li:first-child > :first-child,
530−:not(li) > ul > li:first-child > :first-child {
498+li > p:first-child {
531499 margin-top: 0px;
532500}
533501
534−:not(li) > ol > li:last-child > :last-child,
535−:not(li) > ul > li:last-child > :last-child {
502+li > p:last-child {
536503 margin-bottom: 0px;
537504}
538505
539−ol.simple ol p,
540−ol.simple ul p,
541−ul.simple ol p,
542−ul.simple ul p {
543− margin-top: 0;
544−}
545−
546−ol.simple > li:not(:first-child) > p,
547−ul.simple > li:not(:first-child) > p {
548− margin-top: 0;
549−}
550−
551−ol.simple p,
552−ul.simple p {
553− margin-bottom: 0;
554−}
555−
556506dl.footnote > dt,
557507dl.citation > dt {
558508 float: left;
559− margin-right: 0.5em;
560509}
561510
562511dl.footnote > dd,
@@ -597,7 +546,7 @@ dl {
597546 margin-bottom: 15px;
598547}
599548
600−dd > :first-child {
549+dd > p:first-child {
601550 margin-top: 0px;
602551}
603552
@@ -611,11 +560,6 @@ dd {
611560 margin-left: 30px;
612561}
613562
614−dl > dd:last-child,
615−dl > dd:last-child > :last-child {
616− margin-bottom: 0;
617−}
618−
619563dt:target, span.highlighted {
620564 background-color: #fbe54e;
621565}
@@ -693,10 +637,6 @@ pre {
693637 overflow-y: hidden; /* fixes display issues on Chrome browsers */
694638}
695639
696−pre, div[class|="highlight"] {
697− clear: both;
698−}
699−
700640span.pre {
701641 -moz-hyphens: none;
702642 -ms-hyphens: none;
@@ -704,57 +644,22 @@ span.pre {
704644 hyphens: none;
705645}
706646
707−div[class^="highlight-"] {
708− margin: 1em 0;
709−}
710−
711647td.linenos pre {
648+ padding: 5px 0px;
712649 border: 0;
713650 background-color: transparent;
714651 color: #aaa;
715652}
716653
717654table.highlighttable {
718− display: block;
719−}
720−
721−table.highlighttable tbody {
722− display: block;
723−}
724−
725−table.highlighttable tr {
726− display: flex;
655+ margin-left: 0.5em;
727656}
728657
729658table.highlighttable td {
730− margin: 0;
731− padding: 0;
732−}
733−
734−table.highlighttable td.linenos {
735− padding-right: 0.5em;
736−}
737−
738−table.highlighttable td.code {
739− flex: 1;
740− overflow: hidden;
741−}
742−
743−.highlight .hll {
744− display: block;
745−}
746−
747−div.highlight pre,
748−table.highlighttable pre {
749− margin: 0;
750−}
751−
752−div.code-block-caption + div {
753− margin-top: 0;
659+ padding: 0 0.5em 0 0.5em;
754660}
755661
756662div.code-block-caption {
757− margin-top: 1em;
758663 padding: 2px 5px;
759664 font-size: small;
760665}
@@ -763,7 +668,10 @@ div.code-block-caption code {
763668 background-color: transparent;
764669}
765670
766−table.highlighttable td.linenos,
671+div.code-block-caption + div > div.highlight > pre {
672+ margin-top: 0;
673+}
674+
767675div.doctest > div.highlight span.gp { /* gp: Generic.Prompt */
768676 user-select: none;
769677}
@@ -777,7 +685,11 @@ div.code-block-caption span.caption-text {
777685}
778686
779687div.literal-block-wrapper {
780− margin: 1em 0;
688+ padding: 1em 1em 0;
689+}
690+
691+div.literal-block-wrapper div.highlight {
692+ margin: 0;
781693}
782694
783695code.descname {
@@ -828,7 +740,8 @@ span.eqno {
828740}
829741
830742span.eqno a.headerlink {
831− position: absolute;
743+ position: relative;
744+ left: 0px;
832745 z-index: 1;
833746}
834747
_static/jquery-3.5.1.js → _static/jquery-3.4.1.jsrenamed+482−756
@@ -1,5 +1,5 @@
11/*!
2− * jQuery JavaScript Library v3.5.1
2+ * jQuery JavaScript Library v3.4.1
33 * https://jquery.com/
44 *
55 * Includes Sizzle.js
@@ -9,7 +9,7 @@
99 * Released under the MIT license
1010 * https://jquery.org/license
1111 *
12− * Date: 2020-05-04T22:49Z
12+ * Date: 2019-05-01T21:04Z
1313 */
1414( function( global, factory ) {
1515
@@ -47,16 +47,13 @@
4747
4848var arr = [];
4949
50+var document = window.document;
51+
5052var getProto = Object.getPrototypeOf;
5153
5254var slice = arr.slice;
5355
54−var flat = arr.flat ? function( array ) {
55− return arr.flat.call( array );
56−} : function( array ) {
57− return arr.concat.apply( [], array );
58−};
59−
56+var concat = arr.concat;
6057
6158var push = arr.push;
6259
@@ -89,8 +86,6 @@ var isWindow = function isWindow( obj ) {
8986 };
9087
9188
92−var document = window.document;
93−
9489
9590
9691 var preservedScriptAttributes = {
@@ -147,7 +142,7 @@ function toType( obj ) {
147142
148143
149144var
150− version = "3.5.1",
145+ version = "3.4.1",
151146
152147 // Define a local copy of jQuery
153148 jQuery = function( selector, context ) {
@@ -155,7 +150,11 @@ var
155150 // The jQuery object is actually just the init constructor 'enhanced'
156151 // Need init if jQuery is called (just allow error to be thrown if not included)
157152 return new jQuery.fn.init( selector, context );
158− };
153+ },
154+
155+ // Support: Android <=4.0 only
156+ // Make sure we trim BOM and NBSP
157+ rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
159158
160159jQuery.fn = jQuery.prototype = {
161160
@@ -221,18 +220,6 @@ jQuery.fn = jQuery.prototype = {
221220 return this.eq( -1 );
222221 },
223222
224− even: function() {
225− return this.pushStack( jQuery.grep( this, function( _elem, i ) {
226− return ( i + 1 ) % 2;
227− } ) );
228− },
229−
230− odd: function() {
231− return this.pushStack( jQuery.grep( this, function( _elem, i ) {
232− return i % 2;
233− } ) );
234− },
235−
236223 eq: function( i ) {
237224 var len = this.length,
238225 j = +i + ( i < 0 ? len : 0 );
@@ -366,10 +353,9 @@ jQuery.extend( {
366353 return true;
367354 },
368355
369− // Evaluates a script in a provided context; falls back to the global one
370− // if not specified.
371− globalEval: function( code, options, doc ) {
372− DOMEval( code, { nonce: options && options.nonce }, doc );
356+ // Evaluates a script in a global context
357+ globalEval: function( code, options ) {
358+ DOMEval( code, { nonce: options && options.nonce } );
373359 },
374360
375361 each: function( obj, callback ) {
@@ -393,6 +379,13 @@ jQuery.extend( {
393379 return obj;
394380 },
395381
382+ // Support: Android <=4.0 only
383+ trim: function( text ) {
384+ return text == null ?
385+ "" :
386+ ( text + "" ).replace( rtrim, "" );
387+ },
388+
396389 // results is for internal usage only
397390 makeArray: function( arr, results ) {
398391 var ret = results || [];
@@ -479,7 +472,7 @@ jQuery.extend( {
479472 }
480473
481474 // Flatten any nested arrays
482− return flat( ret );
475+ return concat.apply( [], ret );
483476 },
484477
485478 // A global GUID counter for objects
@@ -496,7 +489,7 @@ if ( typeof Symbol === "function" ) {
496489
497490// Populate the class2type map
498491jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
499−function( _i, name ) {
492+function( i, name ) {
500493 class2type[ "[object " + name + "]" ] = name.toLowerCase();
501494} );
502495
@@ -518,16 +511,17 @@ function isArrayLike( obj ) {
518511}
519512var Sizzle =
520513/*!
521− * Sizzle CSS Selector Engine v2.3.5
514+ * Sizzle CSS Selector Engine v2.3.4
522515 * https://sizzlejs.com/
523516 *
524517 * Copyright JS Foundation and other contributors
525518 * Released under the MIT license
526519 * https://js.foundation/
527520 *
528− * Date: 2020-03-14
521+ * Date: 2019-04-08
529522 */
530−( function( window ) {
523+(function( window ) {
524+
531525var i,
532526 support,
533527 Expr,
@@ -567,70 +561,59 @@ var i,
567561 },
568562
569563 // Instance methods
570− hasOwn = ( {} ).hasOwnProperty,
564+ hasOwn = ({}).hasOwnProperty,
571565 arr = [],
572566 pop = arr.pop,
573− pushNative = arr.push,
567+ push_native = arr.push,
574568 push = arr.push,
575569 slice = arr.slice,
576−
577570 // Use a stripped-down indexOf as it's faster than native
578571 // https://jsperf.com/thor-indexof-vs-for/5
579572 indexOf = function( list, elem ) {
580573 var i = 0,
581574 len = list.length;
582575 for ( ; i < len; i++ ) {
583− if ( list[ i ] === elem ) {
576+ if ( list[i] === elem ) {
584577 return i;
585578 }
586579 }
587580 return -1;
588581 },
589582
590− booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|" +
591− "ismap|loop|multiple|open|readonly|required|scoped",
583+ booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
592584
593585 // Regular expressions
594586
595587 // http://www.w3.org/TR/css3-selectors/#whitespace
596588 whitespace = "[\\x20\\t\\r\\n\\f]",
597589
598− // https://www.w3.org/TR/css-syntax-3/#ident-token-diagram
599− identifier = "(?:\\\\[\\da-fA-F]{1,6}" + whitespace +
600− "?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",
590+ // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
591+ identifier = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+",
601592
602593 // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
603594 attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace +
604−
605595 // Operator (capture 2)
606596 "*([*^$|!~]?=)" + whitespace +
607−
608− // "Attribute values must be CSS identifiers [capture 5]
609− // or strings [capture 3 or capture 4]"
610− "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" +
611− whitespace + "*\\]",
597+ // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
598+ "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace +
599+ "*\\]",
612600
613601 pseudos = ":(" + identifier + ")(?:\\((" +
614−
615602 // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
616603 // 1. quoted (capture 3; capture 4 or capture 5)
617604 "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
618−
619605 // 2. simple (capture 6)
620606 "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
621−
622607 // 3. anything else (capture 2)
623608 ".*" +
624609 ")\\)|)",
625610
626611 // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
627612 rwhitespace = new RegExp( whitespace + "+", "g" ),
628− rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" +
629− whitespace + "+$", "g" ),
613+ rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
630614
631615 rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
632− rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace +
633− "*" ),
616+ rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
634617 rdescend = new RegExp( whitespace + "|>" ),
635618
636619 rpseudo = new RegExp( pseudos ),
@@ -642,16 +625,14 @@ var i,
642625 "TAG": new RegExp( "^(" + identifier + "|[*])" ),
643626 "ATTR": new RegExp( "^" + attributes ),
644627 "PSEUDO": new RegExp( "^" + pseudos ),
645− "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" +
646− whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" +
647− whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
628+ "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
629+ "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
630+ "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
648631 "bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
649−
650632 // For use in libraries implementing .is()
651633 // We use this for POS matching in `select`
652− "needsContext": new RegExp( "^" + whitespace +
653− "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace +
654− "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
634+ "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
635+ whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
655636 },
656637
657638 rhtml = /HTML$/i,
@@ -667,21 +648,18 @@ var i,
667648
668649 // CSS escapes
669650 // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
670− runescape = new RegExp( "\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\([^\\r\\n\\f])", "g" ),
671− funescape = function( escape, nonHex ) {
672− var high = "0x" + escape.slice( 1 ) - 0x10000;
673−
674− return nonHex ?
675−
676− // Strip the backslash prefix from a non-hex escape sequence
677− nonHex :
678−
679− // Replace a hexadecimal escape sequence with the encoded Unicode code point
680− // Support: IE <=11+
681− // For values outside the Basic Multilingual Plane (BMP), manually construct a
682− // surrogate pair
651+ runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
652+ funescape = function( _, escaped, escapedWhitespace ) {
653+ var high = "0x" + escaped - 0x10000;
654+ // NaN means non-codepoint
655+ // Support: Firefox<24
656+ // Workaround erroneous numeric interpretation of +"0x"
657+ return high !== high || escapedWhitespace ?
658+ escaped :
683659 high < 0 ?
660+ // BMP codepoint
684661 String.fromCharCode( high + 0x10000 ) :
662+ // Supplemental Plane codepoint (surrogate pair)
685663 String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
686664 },
687665
@@ -697,8 +675,7 @@ var i,
697675 }
698676
699677 // Control characters and (dependent upon position) numbers get escaped as code points
700− return ch.slice( 0, -1 ) + "\\" +
701− ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
678+ return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
702679 }
703680
704681 // Other potentially-special ASCII characters get backslash-escaped
@@ -723,20 +700,18 @@ var i,
723700// Optimize for push.apply( _, NodeList )
724701try {
725702 push.apply(
726− ( arr = slice.call( preferredDoc.childNodes ) ),
703+ (arr = slice.call( preferredDoc.childNodes )),
727704 preferredDoc.childNodes
728705 );
729−
730706 // Support: Android<4.0
731707 // Detect silently failing push.apply
732− // eslint-disable-next-line no-unused-expressions
733708 arr[ preferredDoc.childNodes.length ].nodeType;
734709} catch ( e ) {
735710 push = { apply: arr.length ?
736711
737712 // Leverage slice if possible
738713 function( target, els ) {
739− pushNative.apply( target, slice.call( els ) );
714+ push_native.apply( target, slice.call(els) );
740715 } :
741716
742717 // Support: IE<9
@@ -744,9 +719,8 @@ try {
744719 function( target, els ) {
745720 var j = target.length,
746721 i = 0;
747−
748722 // Can't trust NodeList.length
749− while ( ( target[ j++ ] = els[ i++ ] ) ) {}
723+ while ( (target[j++] = els[i++]) ) {}
750724 target.length = j - 1;
751725 }
752726 };
@@ -770,21 +744,24 @@ function Sizzle( selector, context, results, seed ) {
770744
771745 // Try to shortcut find operations (as opposed to filters) in HTML documents
772746 if ( !seed ) {
773− setDocument( context );
747+
748+ if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
749+ setDocument( context );
750+ }
774751 context = context || document;
775752
776753 if ( documentIsHTML ) {
777754
778755 // If the selector is sufficiently simple, try using a "get*By*" DOM method
779756 // (excepting DocumentFragment context, where the methods don't exist)
780− if ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {
757+ if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {
781758
782759 // ID selector
783− if ( ( m = match[ 1 ] ) ) {
760+ if ( (m = match[1]) ) {
784761
785762 // Document context
786763 if ( nodeType === 9 ) {
787− if ( ( elem = context.getElementById( m ) ) ) {
764+ if ( (elem = context.getElementById( m )) ) {
788765
789766 // Support: IE, Opera, Webkit
790767 // TODO: identify versions
@@ -803,7 +780,7 @@ function Sizzle( selector, context, results, seed ) {
803780 // Support: IE, Opera, Webkit
804781 // TODO: identify versions
805782 // getElementById can match elements by name instead of ID
806− if ( newContext && ( elem = newContext.getElementById( m ) ) &&
783+ if ( newContext && (elem = newContext.getElementById( m )) &&
807784 contains( context, elem ) &&
808785 elem.id === m ) {
809786
@@ -813,12 +790,12 @@ function Sizzle( selector, context, results, seed ) {
813790 }
814791
815792 // Type selector
816− } else if ( match[ 2 ] ) {
793+ } else if ( match[2] ) {
817794 push.apply( results, context.getElementsByTagName( selector ) );
818795 return results;
819796
820797 // Class selector
821− } else if ( ( m = match[ 3 ] ) && support.getElementsByClassName &&
798+ } else if ( (m = match[3]) && support.getElementsByClassName &&
822799 context.getElementsByClassName ) {
823800
824801 push.apply( results, context.getElementsByClassName( m ) );
@@ -829,11 +806,11 @@ function Sizzle( selector, context, results, seed ) {
829806 // Take advantage of querySelectorAll
830807 if ( support.qsa &&
831808 !nonnativeSelectorCache[ selector + " " ] &&
832− ( !rbuggyQSA || !rbuggyQSA.test( selector ) ) &&
809+ (!rbuggyQSA || !rbuggyQSA.test( selector )) &&
833810
834811 // Support: IE 8 only
835812 // Exclude object elements
836− ( nodeType !== 1 || context.nodeName.toLowerCase() !== "object" ) ) {
813+ (nodeType !== 1 || context.nodeName.toLowerCase() !== "object") ) {
837814
838815 newSelector = selector;
839816 newContext = context;
@@ -842,36 +819,27 @@ function Sizzle( selector, context, results, seed ) {
842819 // descendant combinators, which is not what we want.
843820 // In such cases, we work around the behavior by prefixing every selector in the
844821 // list with an ID selector referencing the scope context.
845− // The technique has to be used as well when a leading combinator is used
846− // as such selectors are not recognized by querySelectorAll.
847822 // Thanks to Andrew Dupont for this technique.
848− if ( nodeType === 1 &&
849− ( rdescend.test( selector ) || rcombinators.test( selector ) ) ) {
850−
851− // Expand context for sibling selectors
852− newContext = rsibling.test( selector ) && testContext( context.parentNode ) ||
853− context;
854−
855− // We can use :scope instead of the ID hack if the browser
856− // supports it & if we're not changing the context.
857− if ( newContext !== context || !support.scope ) {
823+ if ( nodeType === 1 && rdescend.test( selector ) ) {
858824
859− // Capture the context ID, setting it first if necessary
860− if ( ( nid = context.getAttribute( "id" ) ) ) {
861− nid = nid.replace( rcssescape, fcssescape );
862− } else {
863− context.setAttribute( "id", ( nid = expando ) );
864− }
825+ // Capture the context ID, setting it first if necessary
826+ if ( (nid = context.getAttribute( "id" )) ) {
827+ nid = nid.replace( rcssescape, fcssescape );
828+ } else {
829+ context.setAttribute( "id", (nid = expando) );
865830 }
866831
867832 // Prefix every selector in the list
868833 groups = tokenize( selector );
869834 i = groups.length;
870835 while ( i-- ) {
871− groups[ i ] = ( nid ? "#" + nid : ":scope" ) + " " +
872− toSelector( groups[ i ] );
836+ groups[i] = "#" + nid + " " + toSelector( groups[i] );
873837 }
874838 newSelector = groups.join( "," );
839+
840+ // Expand context for sibling selectors
841+ newContext = rsibling.test( selector ) && testContext( context.parentNode ) ||
842+ context;
875843 }
876844
877845 try {
@@ -904,14 +872,12 @@ function createCache() {
904872 var keys = [];
905873
906874 function cache( key, value ) {
907−
908875 // Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
909876 if ( keys.push( key + " " ) > Expr.cacheLength ) {
910−
911877 // Only keep the most recent entries
912878 delete cache[ keys.shift() ];
913879 }
914− return ( cache[ key + " " ] = value );
880+ return (cache[ key + " " ] = value);
915881 }
916882 return cache;
917883}
@@ -930,19 +896,17 @@ function markFunction( fn ) {
930896 * @param {Function} fn Passed the created element and returns a boolean result
931897 */
932898function assert( fn ) {
933− var el = document.createElement( "fieldset" );
899+ var el = document.createElement("fieldset");
934900
935901 try {
936902 return !!fn( el );
937− } catch ( e ) {
903+ } catch (e) {
938904 return false;
939905 } finally {
940−
941906 // Remove from its parent by default
942907 if ( el.parentNode ) {
943908 el.parentNode.removeChild( el );
944909 }
945−
946910 // release memory in IE
947911 el = null;
948912 }
@@ -954,11 +918,11 @@ function assert( fn ) {
954918 * @param {Function} handler The method that will be applied
955919 */
956920function addHandle( attrs, handler ) {
957− var arr = attrs.split( "|" ),
921+ var arr = attrs.split("|"),
958922 i = arr.length;
959923
960924 while ( i-- ) {
961− Expr.attrHandle[ arr[ i ] ] = handler;
925+ Expr.attrHandle[ arr[i] ] = handler;
962926 }
963927}
964928
@@ -980,7 +944,7 @@ function siblingCheck( a, b ) {
980944
981945 // Check if b follows a
982946 if ( cur ) {
983− while ( ( cur = cur.nextSibling ) ) {
947+ while ( (cur = cur.nextSibling) ) {
984948 if ( cur === b ) {
985949 return -1;
986950 }
@@ -1008,7 +972,7 @@ function createInputPseudo( type ) {
1008972function createButtonPseudo( type ) {
1009973 return function( elem ) {
1010974 var name = elem.nodeName.toLowerCase();
1011− return ( name === "input" || name === "button" ) && elem.type === type;
975+ return (name === "input" || name === "button") && elem.type === type;
1012976 };
1013977}
1014978
@@ -1051,7 +1015,7 @@ function createDisabledPseudo( disabled ) {
10511015 // Where there is no isDisabled, check manually
10521016 /* jshint -W018 */
10531017 elem.isDisabled !== !disabled &&
1054− inDisabledFieldset( elem ) === disabled;
1018+ inDisabledFieldset( elem ) === disabled;
10551019 }
10561020
10571021 return elem.disabled === disabled;
@@ -1073,21 +1037,21 @@ function createDisabledPseudo( disabled ) {
10731037 * @param {Function} fn
10741038 */
10751039function createPositionalPseudo( fn ) {
1076− return markFunction( function( argument ) {
1040+ return markFunction(function( argument ) {
10771041 argument = +argument;
1078− return markFunction( function( seed, matches ) {
1042+ return markFunction(function( seed, matches ) {
10791043 var j,
10801044 matchIndexes = fn( [], seed.length, argument ),
10811045 i = matchIndexes.length;
10821046
10831047 // Match elements found at the specified indexes
10841048 while ( i-- ) {
1085− if ( seed[ ( j = matchIndexes[ i ] ) ] ) {
1086− seed[ j ] = !( matches[ j ] = seed[ j ] );
1049+ if ( seed[ (j = matchIndexes[i]) ] ) {
1050+ seed[j] = !(matches[j] = seed[j]);
10871051 }
10881052 }
1089− } );
1090− } );
1053+ });
1054+ });
10911055}
10921056
10931057/**
@@ -1109,7 +1073,7 @@ support = Sizzle.support = {};
11091073 */
11101074isXML = Sizzle.isXML = function( elem ) {
11111075 var namespace = elem.namespaceURI,
1112− docElem = ( elem.ownerDocument || elem ).documentElement;
1076+ docElem = (elem.ownerDocument || elem).documentElement;
11131077
11141078 // Support: IE <=8
11151079 // Assume HTML when documentElement doesn't yet exist, such as inside loading iframes
@@ -1127,11 +1091,7 @@ setDocument = Sizzle.setDocument = function( node ) {
11271091 doc = node ? node.ownerDocument || node : preferredDoc;
11281092
11291093 // Return early if doc is invalid or already selected
1130− // Support: IE 11+, Edge 17 - 18+
1131− // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
1132− // two documents; shallow comparisons work.
1133− // eslint-disable-next-line eqeqeq
1134− if ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {
1094+ if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
11351095 return document;
11361096 }
11371097
@@ -1140,14 +1100,10 @@ setDocument = Sizzle.setDocument = function( node ) {
11401100 docElem = document.documentElement;
11411101 documentIsHTML = !isXML( document );
11421102
1143− // Support: IE 9 - 11+, Edge 12 - 18+
1103+ // Support: IE 9-11, Edge
11441104 // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936)
1145− // Support: IE 11+, Edge 17 - 18+
1146− // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
1147− // two documents; shallow comparisons work.
1148− // eslint-disable-next-line eqeqeq
1149− if ( preferredDoc != document &&
1150− ( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {
1105+ if ( preferredDoc !== document &&
1106+ (subWindow = document.defaultView) && subWindow.top !== subWindow ) {
11511107
11521108 // Support: IE 11, Edge
11531109 if ( subWindow.addEventListener ) {
@@ -1159,36 +1115,25 @@ setDocument = Sizzle.setDocument = function( node ) {
11591115 }
11601116 }
11611117
1162− // Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only,
1163− // Safari 4 - 5 only, Opera <=11.6 - 12.x only
1164− // IE/Edge & older browsers don't support the :scope pseudo-class.
1165− // Support: Safari 6.0 only
1166− // Safari 6.0 supports :scope but it's an alias of :root there.
1167− support.scope = assert( function( el ) {
1168− docElem.appendChild( el ).appendChild( document.createElement( "div" ) );
1169− return typeof el.querySelectorAll !== "undefined" &&
1170− !el.querySelectorAll( ":scope fieldset div" ).length;
1171− } );
1172−
11731118 /* Attributes
11741119 ---------------------------------------------------------------------- */
11751120
11761121 // Support: IE<8
11771122 // Verify that getAttribute really returns attributes and not properties
11781123 // (excepting IE8 booleans)
1179− support.attributes = assert( function( el ) {
1124+ support.attributes = assert(function( el ) {
11801125 el.className = "i";
1181− return !el.getAttribute( "className" );
1182− } );
1126+ return !el.getAttribute("className");
1127+ });
11831128
11841129 /* getElement(s)By*
11851130 ---------------------------------------------------------------------- */
11861131
11871132 // Check if getElementsByTagName("*") returns only elements
1188− support.getElementsByTagName = assert( function( el ) {
1189− el.appendChild( document.createComment( "" ) );
1190− return !el.getElementsByTagName( "*" ).length;
1191− } );
1133+ support.getElementsByTagName = assert(function( el ) {
1134+ el.appendChild( document.createComment("") );
1135+ return !el.getElementsByTagName("*").length;
1136+ });
11921137
11931138 // Support: IE<9
11941139 support.getElementsByClassName = rnative.test( document.getElementsByClassName );
@@ -1197,38 +1142,38 @@ setDocument = Sizzle.setDocument = function( node ) {
11971142 // Check if getElementById returns elements by name
11981143 // The broken getElementById methods don't pick up programmatically-set names,
11991144 // so use a roundabout getElementsByName test
1200− support.getById = assert( function( el ) {
1145+ support.getById = assert(function( el ) {
12011146 docElem.appendChild( el ).id = expando;
12021147 return !document.getElementsByName || !document.getElementsByName( expando ).length;
1203− } );
1148+ });
12041149
12051150 // ID filter and find
12061151 if ( support.getById ) {
1207− Expr.filter[ "ID" ] = function( id ) {
1152+ Expr.filter["ID"] = function( id ) {
12081153 var attrId = id.replace( runescape, funescape );
12091154 return function( elem ) {
1210− return elem.getAttribute( "id" ) === attrId;
1155+ return elem.getAttribute("id") === attrId;
12111156 };
12121157 };
1213− Expr.find[ "ID" ] = function( id, context ) {
1158+ Expr.find["ID"] = function( id, context ) {
12141159 if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
12151160 var elem = context.getElementById( id );
12161161 return elem ? [ elem ] : [];
12171162 }
12181163 };
12191164 } else {
1220− Expr.filter[ "ID" ] = function( id ) {
1165+ Expr.filter["ID"] = function( id ) {
12211166 var attrId = id.replace( runescape, funescape );
12221167 return function( elem ) {
12231168 var node = typeof elem.getAttributeNode !== "undefined" &&
1224− elem.getAttributeNode( "id" );
1169+ elem.getAttributeNode("id");
12251170 return node && node.value === attrId;
12261171 };
12271172 };
12281173
12291174 // Support: IE 6 - 7 only
12301175 // getElementById is not reliable as a find shortcut
1231− Expr.find[ "ID" ] = function( id, context ) {
1176+ Expr.find["ID"] = function( id, context ) {
12321177 if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
12331178 var node, i, elems,
12341179 elem = context.getElementById( id );
@@ -1236,7 +1181,7 @@ setDocument = Sizzle.setDocument = function( node ) {
12361181 if ( elem ) {
12371182
12381183 // Verify the id attribute
1239− node = elem.getAttributeNode( "id" );
1184+ node = elem.getAttributeNode("id");
12401185 if ( node && node.value === id ) {
12411186 return [ elem ];
12421187 }
@@ -1244,8 +1189,8 @@ setDocument = Sizzle.setDocument = function( node ) {
12441189 // Fall back on getElementsByName
12451190 elems = context.getElementsByName( id );
12461191 i = 0;
1247− while ( ( elem = elems[ i++ ] ) ) {
1248− node = elem.getAttributeNode( "id" );
1192+ while ( (elem = elems[i++]) ) {
1193+ node = elem.getAttributeNode("id");
12491194 if ( node && node.value === id ) {
12501195 return [ elem ];
12511196 }
@@ -1258,7 +1203,7 @@ setDocument = Sizzle.setDocument = function( node ) {
12581203 }
12591204
12601205 // Tag
1261− Expr.find[ "TAG" ] = support.getElementsByTagName ?
1206+ Expr.find["TAG"] = support.getElementsByTagName ?
12621207 function( tag, context ) {
12631208 if ( typeof context.getElementsByTagName !== "undefined" ) {
12641209 return context.getElementsByTagName( tag );
@@ -1273,13 +1218,12 @@ setDocument = Sizzle.setDocument = function( node ) {
12731218 var elem,
12741219 tmp = [],
12751220 i = 0,
1276−
12771221 // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too
12781222 results = context.getElementsByTagName( tag );
12791223
12801224 // Filter out possible comments
12811225 if ( tag === "*" ) {
1282− while ( ( elem = results[ i++ ] ) ) {
1226+ while ( (elem = results[i++]) ) {
12831227 if ( elem.nodeType === 1 ) {
12841228 tmp.push( elem );
12851229 }
@@ -1291,7 +1235,7 @@ setDocument = Sizzle.setDocument = function( node ) {
12911235 };
12921236
12931237 // Class
1294− Expr.find[ "CLASS" ] = support.getElementsByClassName && function( className, context ) {
1238+ Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
12951239 if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) {
12961240 return context.getElementsByClassName( className );
12971241 }
@@ -1312,14 +1256,10 @@ setDocument = Sizzle.setDocument = function( node ) {
13121256 // See https://bugs.jquery.com/ticket/13378
13131257 rbuggyQSA = [];
13141258
1315− if ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) {
1316−
1259+ if ( (support.qsa = rnative.test( document.querySelectorAll )) ) {
13171260 // Build QSA regex
13181261 // Regex strategy adopted from Diego Perini
1319− assert( function( el ) {
1320−
1321− var input;
1322−
1262+ assert(function( el ) {
13231263 // Select is set to empty string on purpose
13241264 // This is to test IE's treatment of not explicitly
13251265 // setting a boolean content attribute,
@@ -1333,98 +1273,78 @@ setDocument = Sizzle.setDocument = function( node ) {
13331273 // Nothing should be selected when empty strings follow ^= or $= or *=
13341274 // The test attribute must be unknown in Opera but "safe" for WinRT
13351275 // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
1336− if ( el.querySelectorAll( "[msallowcapture^='']" ).length ) {
1276+ if ( el.querySelectorAll("[msallowcapture^='']").length ) {
13371277 rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
13381278 }
13391279
13401280 // Support: IE8
13411281 // Boolean attributes and "value" are not treated correctly
1342− if ( !el.querySelectorAll( "[selected]" ).length ) {
1282+ if ( !el.querySelectorAll("[selected]").length ) {
13431283 rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
13441284 }
13451285
13461286 // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+
13471287 if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
1348− rbuggyQSA.push( "~=" );
1349− }
1350−
1351− // Support: IE 11+, Edge 15 - 18+
1352− // IE 11/Edge don't find elements on a `[name='']` query in some cases.
1353− // Adding a temporary attribute to the document before the selection works
1354− // around the issue.
1355− // Interestingly, IE 10 & older don't seem to have the issue.
1356− input = document.createElement( "input" );
1357− input.setAttribute( "name", "" );
1358− el.appendChild( input );
1359− if ( !el.querySelectorAll( "[name='']" ).length ) {
1360− rbuggyQSA.push( "\\[" + whitespace + "*name" + whitespace + "*=" +
1361− whitespace + "*(?:''|\"\")" );
1288+ rbuggyQSA.push("~=");
13621289 }
13631290
13641291 // Webkit/Opera - :checked should return selected option elements
13651292 // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
13661293 // IE8 throws error here and will not see later tests
1367− if ( !el.querySelectorAll( ":checked" ).length ) {
1368− rbuggyQSA.push( ":checked" );
1294+ if ( !el.querySelectorAll(":checked").length ) {
1295+ rbuggyQSA.push(":checked");
13691296 }
13701297
13711298 // Support: Safari 8+, iOS 8+
13721299 // https://bugs.webkit.org/show_bug.cgi?id=136851
13731300 // In-page `selector#id sibling-combinator selector` fails
13741301 if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) {
1375− rbuggyQSA.push( ".#.+[+~]" );
1302+ rbuggyQSA.push(".#.+[+~]");
13761303 }
1304+ });
13771305
1378− // Support: Firefox <=3.6 - 5 only
1379− // Old Firefox doesn't throw on a badly-escaped identifier.
1380− el.querySelectorAll( "\\\f" );
1381− rbuggyQSA.push( "[\\r\\n\\f]" );
1382− } );
1383−
1384− assert( function( el ) {
1306+ assert(function( el ) {
13851307 el.innerHTML = "<a href='' disabled='disabled'></a>" +
13861308 "<select disabled='disabled'><option/></select>";
13871309
13881310 // Support: Windows 8 Native Apps
13891311 // The type and name attributes are restricted during .innerHTML assignment
1390− var input = document.createElement( "input" );
1312+ var input = document.createElement("input");
13911313 input.setAttribute( "type", "hidden" );
13921314 el.appendChild( input ).setAttribute( "name", "D" );
13931315
13941316 // Support: IE8
13951317 // Enforce case-sensitivity of name attribute
1396− if ( el.querySelectorAll( "[name=d]" ).length ) {
1318+ if ( el.querySelectorAll("[name=d]").length ) {
13971319 rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
13981320 }
13991321
14001322 // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
14011323 // IE8 throws error here and will not see later tests
1402− if ( el.querySelectorAll( ":enabled" ).length !== 2 ) {
1324+ if ( el.querySelectorAll(":enabled").length !== 2 ) {
14031325 rbuggyQSA.push( ":enabled", ":disabled" );
14041326 }
14051327
14061328 // Support: IE9-11+
14071329 // IE's :disabled selector does not pick up the children of disabled fieldsets
14081330 docElem.appendChild( el ).disabled = true;
1409− if ( el.querySelectorAll( ":disabled" ).length !== 2 ) {
1331+ if ( el.querySelectorAll(":disabled").length !== 2 ) {
14101332 rbuggyQSA.push( ":enabled", ":disabled" );
14111333 }
14121334
1413− // Support: Opera 10 - 11 only
14141335 // Opera 10-11 does not throw on post-comma invalid pseudos
1415− el.querySelectorAll( "*,:x" );
1416− rbuggyQSA.push( ",.*:" );
1417− } );
1336+ el.querySelectorAll("*,:x");
1337+ rbuggyQSA.push(",.*:");
1338+ });
14181339 }
14191340
1420− if ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches ||
1341+ if ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||
14211342 docElem.webkitMatchesSelector ||
14221343 docElem.mozMatchesSelector ||
14231344 docElem.oMatchesSelector ||
1424− docElem.msMatchesSelector ) ) ) ) {
1425−
1426− assert( function( el ) {
1345+ docElem.msMatchesSelector) )) ) {
14271346
1347+ assert(function( el ) {
14281348 // Check to see if it's possible to do matchesSelector
14291349 // on a disconnected node (IE 9)
14301350 support.disconnectedMatch = matches.call( el, "*" );
@@ -1433,11 +1353,11 @@ setDocument = Sizzle.setDocument = function( node ) {
14331353 // Gecko does not error, returns false instead
14341354 matches.call( el, "[s!='']:x" );
14351355 rbuggyMatches.push( "!=", pseudos );
1436− } );
1356+ });
14371357 }
14381358
1439− rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( "|" ) );
1440− rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( "|" ) );
1359+ rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
1360+ rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
14411361
14421362 /* Contains
14431363 ---------------------------------------------------------------------- */
@@ -1454,11 +1374,11 @@ setDocument = Sizzle.setDocument = function( node ) {
14541374 adown.contains ?
14551375 adown.contains( bup ) :
14561376 a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
1457− ) );
1377+ ));
14581378 } :
14591379 function( a, b ) {
14601380 if ( b ) {
1461− while ( ( b = b.parentNode ) ) {
1381+ while ( (b = b.parentNode) ) {
14621382 if ( b === a ) {
14631383 return true;
14641384 }
@@ -1487,11 +1407,7 @@ setDocument = Sizzle.setDocument = function( node ) {
14871407 }
14881408
14891409 // Calculate position if both inputs belong to the same document
1490− // Support: IE 11+, Edge 17 - 18+
1491− // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
1492− // two documents; shallow comparisons work.
1493− // eslint-disable-next-line eqeqeq
1494− compare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?
1410+ compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
14951411 a.compareDocumentPosition( b ) :
14961412
14971413 // Otherwise we know they are disconnected
@@ -1499,24 +1415,13 @@ setDocument = Sizzle.setDocument = function( node ) {
14991415
15001416 // Disconnected nodes
15011417 if ( compare & 1 ||
1502− ( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {
1418+ (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
15031419
15041420 // Choose the first element that is related to our preferred document
1505− // Support: IE 11+, Edge 17 - 18+
1506− // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
1507− // two documents; shallow comparisons work.
1508− // eslint-disable-next-line eqeqeq
1509− if ( a == document || a.ownerDocument == preferredDoc &&
1510− contains( preferredDoc, a ) ) {
1421+ if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {
15111422 return -1;
15121423 }
1513−
1514− // Support: IE 11+, Edge 17 - 18+
1515− // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
1516− // two documents; shallow comparisons work.
1517− // eslint-disable-next-line eqeqeq
1518− if ( b == document || b.ownerDocument == preferredDoc &&
1519− contains( preferredDoc, b ) ) {
1424+ if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {
15201425 return 1;
15211426 }
15221427
@@ -1529,7 +1434,6 @@ setDocument = Sizzle.setDocument = function( node ) {
15291434 return compare & 4 ? -1 : 1;
15301435 } :
15311436 function( a, b ) {
1532−
15331437 // Exit early if the nodes are identical
15341438 if ( a === b ) {
15351439 hasDuplicate = true;
@@ -1545,14 +1449,8 @@ setDocument = Sizzle.setDocument = function( node ) {
15451449
15461450 // Parentless nodes are either documents or disconnected
15471451 if ( !aup || !bup ) {
1548−
1549− // Support: IE 11+, Edge 17 - 18+
1550− // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
1551− // two documents; shallow comparisons work.
1552− /* eslint-disable eqeqeq */
1553− return a == document ? -1 :
1554− b == document ? 1 :
1555− /* eslint-enable eqeqeq */
1452+ return a === document ? -1 :
1453+ b === document ? 1 :
15561454 aup ? -1 :
15571455 bup ? 1 :
15581456 sortInput ?
@@ -1566,32 +1464,26 @@ setDocument = Sizzle.setDocument = function( node ) {
15661464
15671465 // Otherwise we need full lists of their ancestors for comparison
15681466 cur = a;
1569− while ( ( cur = cur.parentNode ) ) {
1467+ while ( (cur = cur.parentNode) ) {
15701468 ap.unshift( cur );
15711469 }
15721470 cur = b;
1573− while ( ( cur = cur.parentNode ) ) {
1471+ while ( (cur = cur.parentNode) ) {
15741472 bp.unshift( cur );
15751473 }
15761474
15771475 // Walk down the tree looking for a discrepancy
1578− while ( ap[ i ] === bp[ i ] ) {
1476+ while ( ap[i] === bp[i] ) {
15791477 i++;
15801478 }
15811479
15821480 return i ?
1583−
15841481 // Do a sibling check if the nodes have a common ancestor
1585− siblingCheck( ap[ i ], bp[ i ] ) :
1482+ siblingCheck( ap[i], bp[i] ) :
15861483
15871484 // Otherwise nodes in our document sort first
1588− // Support: IE 11+, Edge 17 - 18+
1589− // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
1590− // two documents; shallow comparisons work.
1591− /* eslint-disable eqeqeq */
1592− ap[ i ] == preferredDoc ? -1 :
1593− bp[ i ] == preferredDoc ? 1 :
1594− /* eslint-enable eqeqeq */
1485+ ap[i] === preferredDoc ? -1 :
1486+ bp[i] === preferredDoc ? 1 :
15951487 0;
15961488 };
15971489
@@ -1603,7 +1495,10 @@ Sizzle.matches = function( expr, elements ) {
16031495};
16041496
16051497Sizzle.matchesSelector = function( elem, expr ) {
1606− setDocument( elem );
1498+ // Set document vars if needed
1499+ if ( ( elem.ownerDocument || elem ) !== document ) {
1500+ setDocument( elem );
1501+ }
16071502
16081503 if ( support.matchesSelector && documentIsHTML &&
16091504 !nonnativeSelectorCache[ expr + " " ] &&
@@ -1615,13 +1510,12 @@ Sizzle.matchesSelector = function( elem, expr ) {
16151510
16161511 // IE 9's matchesSelector returns false on disconnected nodes
16171512 if ( ret || support.disconnectedMatch ||
1618−
1619− // As well, disconnected nodes are said to be in a document
1620− // fragment in IE 9
1621− elem.document && elem.document.nodeType !== 11 ) {
1513+ // As well, disconnected nodes are said to be in a document
1514+ // fragment in IE 9
1515+ elem.document && elem.document.nodeType !== 11 ) {
16221516 return ret;
16231517 }
1624− } catch ( e ) {
1518+ } catch (e) {
16251519 nonnativeSelectorCache( expr, true );
16261520 }
16271521 }
@@ -1630,31 +1524,20 @@ Sizzle.matchesSelector = function( elem, expr ) {
16301524};
16311525
16321526Sizzle.contains = function( context, elem ) {
1633−
16341527 // Set document vars if needed
1635− // Support: IE 11+, Edge 17 - 18+
1636− // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
1637− // two documents; shallow comparisons work.
1638− // eslint-disable-next-line eqeqeq
1639− if ( ( context.ownerDocument || context ) != document ) {
1528+ if ( ( context.ownerDocument || context ) !== document ) {
16401529 setDocument( context );
16411530 }
16421531 return contains( context, elem );
16431532};
16441533
16451534Sizzle.attr = function( elem, name ) {
1646−
16471535 // Set document vars if needed
1648− // Support: IE 11+, Edge 17 - 18+
1649− // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
1650− // two documents; shallow comparisons work.
1651− // eslint-disable-next-line eqeqeq
1652− if ( ( elem.ownerDocument || elem ) != document ) {
1536+ if ( ( elem.ownerDocument || elem ) !== document ) {
16531537 setDocument( elem );
16541538 }
16551539
16561540 var fn = Expr.attrHandle[ name.toLowerCase() ],
1657−
16581541 // Don't get fooled by Object.prototype properties (jQuery #13807)
16591542 val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
16601543 fn( elem, name, !documentIsHTML ) :
@@ -1664,13 +1547,13 @@ Sizzle.attr = function( elem, name ) {
16641547 val :
16651548 support.attributes || !documentIsHTML ?
16661549 elem.getAttribute( name ) :
1667− ( val = elem.getAttributeNode( name ) ) && val.specified ?
1550+ (val = elem.getAttributeNode(name)) && val.specified ?
16681551 val.value :
16691552 null;
16701553};
16711554
16721555Sizzle.escape = function( sel ) {
1673− return ( sel + "" ).replace( rcssescape, fcssescape );
1556+ return (sel + "").replace( rcssescape, fcssescape );
16741557};
16751558
16761559Sizzle.error = function( msg ) {
@@ -1693,7 +1576,7 @@ Sizzle.uniqueSort = function( results ) {
16931576 results.sort( sortOrder );
16941577
16951578 if ( hasDuplicate ) {
1696− while ( ( elem = results[ i++ ] ) ) {
1579+ while ( (elem = results[i++]) ) {
16971580 if ( elem === results[ i ] ) {
16981581 j = duplicates.push( i );
16991582 }
@@ -1721,21 +1604,17 @@ getText = Sizzle.getText = function( elem ) {
17211604 nodeType = elem.nodeType;
17221605
17231606 if ( !nodeType ) {
1724−
17251607 // If no nodeType, this is expected to be an array
1726− while ( ( node = elem[ i++ ] ) ) {
1727−
1608+ while ( (node = elem[i++]) ) {
17281609 // Do not traverse comment nodes
17291610 ret += getText( node );
17301611 }
17311612 } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
1732−
17331613 // Use textContent for elements
17341614 // innerText usage removed for consistency of new lines (jQuery #11153)
17351615 if ( typeof elem.textContent === "string" ) {
17361616 return elem.textContent;
17371617 } else {
1738−
17391618 // Traverse its children
17401619 for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
17411620 ret += getText( elem );
@@ -1744,7 +1623,6 @@ getText = Sizzle.getText = function( elem ) {
17441623 } else if ( nodeType === 3 || nodeType === 4 ) {
17451624 return elem.nodeValue;
17461625 }
1747−
17481626 // Do not include comment or processing instruction nodes
17491627
17501628 return ret;
@@ -1772,21 +1650,19 @@ Expr = Sizzle.selectors = {
17721650
17731651 preFilter: {
17741652 "ATTR": function( match ) {
1775− match[ 1 ] = match[ 1 ].replace( runescape, funescape );
1653+ match[1] = match[1].replace( runescape, funescape );
17761654
17771655 // Move the given value to match[3] whether quoted or unquoted
1778− match[ 3 ] = ( match[ 3 ] || match[ 4 ] ||
1779− match[ 5 ] || "" ).replace( runescape, funescape );
1656+ match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape );
17801657
1781− if ( match[ 2 ] === "~=" ) {
1782− match[ 3 ] = " " + match[ 3 ] + " ";
1658+ if ( match[2] === "~=" ) {
1659+ match[3] = " " + match[3] + " ";
17831660 }
17841661
17851662 return match.slice( 0, 4 );
17861663 },
17871664
17881665 "CHILD": function( match ) {
1789−
17901666 /* matches from matchExpr["CHILD"]
17911667 1 type (only|nth|...)
17921668 2 what (child|of-type)
@@ -1797,25 +1673,22 @@ Expr = Sizzle.selectors = {
17971673 7 sign of y-component
17981674 8 y of y-component
17991675 */
1800− match[ 1 ] = match[ 1 ].toLowerCase();
1801−
1802− if ( match[ 1 ].slice( 0, 3 ) === "nth" ) {
1676+ match[1] = match[1].toLowerCase();
18031677
1678+ if ( match[1].slice( 0, 3 ) === "nth" ) {
18041679 // nth-* requires argument
1805− if ( !match[ 3 ] ) {
1806− Sizzle.error( match[ 0 ] );
1680+ if ( !match[3] ) {
1681+ Sizzle.error( match[0] );
18071682 }
18081683
18091684 // numeric x and y parameters for Expr.filter.CHILD
18101685 // remember that false/true cast respectively to 0/1
1811− match[ 4 ] = +( match[ 4 ] ?
1812− match[ 5 ] + ( match[ 6 ] || 1 ) :
1813− 2 * ( match[ 3 ] === "even" || match[ 3 ] === "odd" ) );
1814− match[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === "odd" );
1686+ match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
1687+ match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
18151688
1816− // other types prohibit arguments
1817− } else if ( match[ 3 ] ) {
1818− Sizzle.error( match[ 0 ] );
1689+ // other types prohibit arguments
1690+ } else if ( match[3] ) {
1691+ Sizzle.error( match[0] );
18191692 }
18201693
18211694 return match;
@@ -1823,28 +1696,26 @@ Expr = Sizzle.selectors = {
18231696
18241697 "PSEUDO": function( match ) {
18251698 var excess,
1826− unquoted = !match[ 6 ] && match[ 2 ];
1699+ unquoted = !match[6] && match[2];
18271700
1828− if ( matchExpr[ "CHILD" ].test( match[ 0 ] ) ) {
1701+ if ( matchExpr["CHILD"].test( match[0] ) ) {
18291702 return null;
18301703 }
18311704
18321705 // Accept quoted arguments as-is
1833− if ( match[ 3 ] ) {
1834− match[ 2 ] = match[ 4 ] || match[ 5 ] || "";
1706+ if ( match[3] ) {
1707+ match[2] = match[4] || match[5] || "";
18351708
18361709 // Strip excess characters from unquoted arguments
18371710 } else if ( unquoted && rpseudo.test( unquoted ) &&
1838−
18391711 // Get excess from tokenize (recursively)
1840− ( excess = tokenize( unquoted, true ) ) &&
1841−
1712+ (excess = tokenize( unquoted, true )) &&
18421713 // advance to the next closing parenthesis
1843− ( excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length ) ) {
1714+ (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
18441715
18451716 // excess is a negative index
1846− match[ 0 ] = match[ 0 ].slice( 0, excess );
1847− match[ 2 ] = unquoted.slice( 0, excess );
1717+ match[0] = match[0].slice( 0, excess );
1718+ match[2] = unquoted.slice( 0, excess );
18481719 }
18491720
18501721 // Return only captures needed by the pseudo filter method (type and argument)
@@ -1857,9 +1728,7 @@ Expr = Sizzle.selectors = {
18571728 "TAG": function( nodeNameSelector ) {
18581729 var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
18591730 return nodeNameSelector === "*" ?
1860− function() {
1861− return true;
1862− } :
1731+ function() { return true; } :
18631732 function( elem ) {
18641733 return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
18651734 };
@@ -1869,16 +1738,10 @@ Expr = Sizzle.selectors = {
18691738 var pattern = classCache[ className + " " ];
18701739
18711740 return pattern ||
1872− ( pattern = new RegExp( "(^|" + whitespace +
1873− ")" + className + "(" + whitespace + "|$)" ) ) && classCache(
1874− className, function( elem ) {
1875− return pattern.test(
1876− typeof elem.className === "string" && elem.className ||
1877− typeof elem.getAttribute !== "undefined" &&
1878− elem.getAttribute( "class" ) ||
1879− ""
1880− );
1881− } );
1741+ (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
1742+ classCache( className, function( elem ) {
1743+ return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" );
1744+ });
18821745 },
18831746
18841747 "ATTR": function( name, operator, check ) {
@@ -1894,8 +1757,6 @@ Expr = Sizzle.selectors = {
18941757
18951758 result += "";
18961759
1897− /* eslint-disable max-len */
1898−
18991760 return operator === "=" ? result === check :
19001761 operator === "!=" ? result !== check :
19011762 operator === "^=" ? check && result.indexOf( check ) === 0 :
@@ -1904,12 +1765,10 @@ Expr = Sizzle.selectors = {
19041765 operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 :
19051766 operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
19061767 false;
1907− /* eslint-enable max-len */
1908−
19091768 };
19101769 },
19111770
1912− "CHILD": function( type, what, _argument, first, last ) {
1771+ "CHILD": function( type, what, argument, first, last ) {
19131772 var simple = type.slice( 0, 3 ) !== "nth",
19141773 forward = type.slice( -4 ) !== "last",
19151774 ofType = what === "of-type";
@@ -1921,7 +1780,7 @@ Expr = Sizzle.selectors = {
19211780 return !!elem.parentNode;
19221781 } :
19231782
1924− function( elem, _context, xml ) {
1783+ function( elem, context, xml ) {
19251784 var cache, uniqueCache, outerCache, node, nodeIndex, start,
19261785 dir = simple !== forward ? "nextSibling" : "previousSibling",
19271786 parent = elem.parentNode,
@@ -1935,7 +1794,7 @@ Expr = Sizzle.selectors = {
19351794 if ( simple ) {
19361795 while ( dir ) {
19371796 node = elem;
1938− while ( ( node = node[ dir ] ) ) {
1797+ while ( (node = node[ dir ]) ) {
19391798 if ( ofType ?
19401799 node.nodeName.toLowerCase() === name :
19411800 node.nodeType === 1 ) {
@@ -1943,7 +1802,6 @@ Expr = Sizzle.selectors = {
19431802 return false;
19441803 }
19451804 }
1946−
19471805 // Reverse direction for :only-* (if we haven't yet done so)
19481806 start = dir = type === "only" && !start && "nextSibling";
19491807 }
@@ -1959,22 +1817,22 @@ Expr = Sizzle.selectors = {
19591817
19601818 // ...in a gzip-friendly way
19611819 node = parent;
1962− outerCache = node[ expando ] || ( node[ expando ] = {} );
1820+ outerCache = node[ expando ] || (node[ expando ] = {});
19631821
19641822 // Support: IE <9 only
19651823 // Defend against cloned attroperties (jQuery gh-1709)
19661824 uniqueCache = outerCache[ node.uniqueID ] ||
1967− ( outerCache[ node.uniqueID ] = {} );
1825+ (outerCache[ node.uniqueID ] = {});
19681826
19691827 cache = uniqueCache[ type ] || [];
19701828 nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
19711829 diff = nodeIndex && cache[ 2 ];
19721830 node = nodeIndex && parent.childNodes[ nodeIndex ];
19731831
1974− while ( ( node = ++nodeIndex && node && node[ dir ] ||
1832+ while ( (node = ++nodeIndex && node && node[ dir ] ||
19751833
19761834 // Fallback to seeking `elem` from the start
1977− ( diff = nodeIndex = 0 ) || start.pop() ) ) {
1835+ (diff = nodeIndex = 0) || start.pop()) ) {
19781836
19791837 // When found, cache indexes on `parent` and break
19801838 if ( node.nodeType === 1 && ++diff && node === elem ) {
@@ -1984,18 +1842,16 @@ Expr = Sizzle.selectors = {
19841842 }
19851843
19861844 } else {
1987−
19881845 // Use previously-cached element index if available
19891846 if ( useCache ) {
1990−
19911847 // ...in a gzip-friendly way
19921848 node = elem;
1993− outerCache = node[ expando ] || ( node[ expando ] = {} );
1849+ outerCache = node[ expando ] || (node[ expando ] = {});
19941850
19951851 // Support: IE <9 only
19961852 // Defend against cloned attroperties (jQuery gh-1709)
19971853 uniqueCache = outerCache[ node.uniqueID ] ||
1998− ( outerCache[ node.uniqueID ] = {} );
1854+ (outerCache[ node.uniqueID ] = {});
19991855
20001856 cache = uniqueCache[ type ] || [];
20011857 nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
@@ -2005,10 +1861,9 @@ Expr = Sizzle.selectors = {
20051861 // xml :nth-child(...)
20061862 // or :nth-last-child(...) or :nth(-last)?-of-type(...)
20071863 if ( diff === false ) {
2008−
20091864 // Use the same loop as above to seek `elem` from the start
2010− while ( ( node = ++nodeIndex && node && node[ dir ] ||
2011− ( diff = nodeIndex = 0 ) || start.pop() ) ) {
1865+ while ( (node = ++nodeIndex && node && node[ dir ] ||
1866+ (diff = nodeIndex = 0) || start.pop()) ) {
20121867
20131868 if ( ( ofType ?
20141869 node.nodeName.toLowerCase() === name :
@@ -2017,13 +1872,12 @@ Expr = Sizzle.selectors = {
20171872
20181873 // Cache the index of each encountered element
20191874 if ( useCache ) {
2020− outerCache = node[ expando ] ||
2021− ( node[ expando ] = {} );
1875+ outerCache = node[ expando ] || (node[ expando ] = {});
20221876
20231877 // Support: IE <9 only
20241878 // Defend against cloned attroperties (jQuery gh-1709)
20251879 uniqueCache = outerCache[ node.uniqueID ] ||
2026− ( outerCache[ node.uniqueID ] = {} );
1880+ (outerCache[ node.uniqueID ] = {});
20271881
20281882 uniqueCache[ type ] = [ dirruns, diff ];
20291883 }
@@ -2044,7 +1898,6 @@ Expr = Sizzle.selectors = {
20441898 },
20451899
20461900 "PSEUDO": function( pseudo, argument ) {
2047−
20481901 // pseudo-class names are case-insensitive
20491902 // http://www.w3.org/TR/selectors/#pseudo-classes
20501903 // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
@@ -2064,15 +1917,15 @@ Expr = Sizzle.selectors = {
20641917 if ( fn.length > 1 ) {
20651918 args = [ pseudo, pseudo, "", argument ];
20661919 return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
2067− markFunction( function( seed, matches ) {
1920+ markFunction(function( seed, matches ) {
20681921 var idx,
20691922 matched = fn( seed, argument ),
20701923 i = matched.length;
20711924 while ( i-- ) {
2072− idx = indexOf( seed, matched[ i ] );
2073− seed[ idx ] = !( matches[ idx ] = matched[ i ] );
1925+ idx = indexOf( seed, matched[i] );
1926+ seed[ idx ] = !( matches[ idx ] = matched[i] );
20741927 }
2075− } ) :
1928+ }) :
20761929 function( elem ) {
20771930 return fn( elem, 0, args );
20781931 };
@@ -2083,10 +1936,8 @@ Expr = Sizzle.selectors = {
20831936 },
20841937
20851938 pseudos: {
2086−
20871939 // Potentially complex pseudos
2088− "not": markFunction( function( selector ) {
2089−
1940+ "not": markFunction(function( selector ) {
20901941 // Trim the selector passed to compile
20911942 // to avoid treating leading and trailing
20921943 // spaces as combinators
@@ -2095,40 +1946,39 @@ Expr = Sizzle.selectors = {
20951946 matcher = compile( selector.replace( rtrim, "$1" ) );
20961947
20971948 return matcher[ expando ] ?
2098− markFunction( function( seed, matches, _context, xml ) {
1949+ markFunction(function( seed, matches, context, xml ) {
20991950 var elem,
21001951 unmatched = matcher( seed, null, xml, [] ),
21011952 i = seed.length;
21021953
21031954 // Match elements unmatched by `matcher`
21041955 while ( i-- ) {
2105− if ( ( elem = unmatched[ i ] ) ) {
2106− seed[ i ] = !( matches[ i ] = elem );
1956+ if ( (elem = unmatched[i]) ) {
1957+ seed[i] = !(matches[i] = elem);
21071958 }
21081959 }
2109− } ) :
2110− function( elem, _context, xml ) {
2111− input[ 0 ] = elem;
1960+ }) :
1961+ function( elem, context, xml ) {
1962+ input[0] = elem;
21121963 matcher( input, null, xml, results );
2113−
21141964 // Don't keep the element (issue #299)
2115− input[ 0 ] = null;
1965+ input[0] = null;
21161966 return !results.pop();
21171967 };
2118− } ),
1968+ }),
21191969
2120− "has": markFunction( function( selector ) {
1970+ "has": markFunction(function( selector ) {
21211971 return function( elem ) {
21221972 return Sizzle( selector, elem ).length > 0;
21231973 };
2124− } ),
1974+ }),
21251975
2126− "contains": markFunction( function( text ) {
1976+ "contains": markFunction(function( text ) {
21271977 text = text.replace( runescape, funescape );
21281978 return function( elem ) {
21291979 return ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;
21301980 };
2131− } ),
1981+ }),
21321982
21331983 // "Whether an element is represented by a :lang() selector
21341984 // is based solely on the element's language value
@@ -2138,26 +1988,25 @@ Expr = Sizzle.selectors = {
21381988 // The identifier C does not have to be a valid language name."
21391989 // http://www.w3.org/TR/selectors/#lang-pseudo
21401990 "lang": markFunction( function( lang ) {
2141−
21421991 // lang value must be a valid identifier
2143− if ( !ridentifier.test( lang || "" ) ) {
1992+ if ( !ridentifier.test(lang || "") ) {
21441993 Sizzle.error( "unsupported lang: " + lang );
21451994 }
21461995 lang = lang.replace( runescape, funescape ).toLowerCase();
21471996 return function( elem ) {
21481997 var elemLang;
21491998 do {
2150− if ( ( elemLang = documentIsHTML ?
1999+ if ( (elemLang = documentIsHTML ?
21512000 elem.lang :
2152− elem.getAttribute( "xml:lang" ) || elem.getAttribute( "lang" ) ) ) {
2001+ elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {
21532002
21542003 elemLang = elemLang.toLowerCase();
21552004 return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
21562005 }
2157− } while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );
2006+ } while ( (elem = elem.parentNode) && elem.nodeType === 1 );
21582007 return false;
21592008 };
2160− } ),
2009+ }),
21612010
21622011 // Miscellaneous
21632012 "target": function( elem ) {
@@ -2170,9 +2019,7 @@ Expr = Sizzle.selectors = {
21702019 },
21712020
21722021 "focus": function( elem ) {
2173− return elem === document.activeElement &&
2174− ( !document.hasFocus || document.hasFocus() ) &&
2175− !!( elem.type || elem.href || ~elem.tabIndex );
2022+ return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
21762023 },
21772024
21782025 // Boolean properties
@@ -2180,20 +2027,16 @@ Expr = Sizzle.selectors = {
21802027 "disabled": createDisabledPseudo( true ),
21812028
21822029 "checked": function( elem ) {
2183−
21842030 // In CSS3, :checked should return both checked and selected elements
21852031 // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
21862032 var nodeName = elem.nodeName.toLowerCase();
2187− return ( nodeName === "input" && !!elem.checked ) ||
2188− ( nodeName === "option" && !!elem.selected );
2033+ return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
21892034 },
21902035
21912036 "selected": function( elem ) {
2192−
21932037 // Accessing this property makes selected-by-default
21942038 // options in Safari work properly
21952039 if ( elem.parentNode ) {
2196− // eslint-disable-next-line no-unused-expressions
21972040 elem.parentNode.selectedIndex;
21982041 }
21992042
@@ -2202,7 +2045,6 @@ Expr = Sizzle.selectors = {
22022045
22032046 // Contents
22042047 "empty": function( elem ) {
2205−
22062048 // http://www.w3.org/TR/selectors/#empty-pseudo
22072049 // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
22082050 // but not by others (comment: 8; processing instruction: 7; etc.)
@@ -2216,7 +2058,7 @@ Expr = Sizzle.selectors = {
22162058 },
22172059
22182060 "parent": function( elem ) {
2219− return !Expr.pseudos[ "empty" ]( elem );
2061+ return !Expr.pseudos["empty"]( elem );
22202062 },
22212063
22222064 // Element/input types
@@ -2240,40 +2082,39 @@ Expr = Sizzle.selectors = {
22402082
22412083 // Support: IE<8
22422084 // New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
2243− ( ( attr = elem.getAttribute( "type" ) ) == null ||
2244− attr.toLowerCase() === "text" );
2085+ ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" );
22452086 },
22462087
22472088 // Position-in-collection
2248− "first": createPositionalPseudo( function() {
2089+ "first": createPositionalPseudo(function() {
22492090 return [ 0 ];
2250− } ),
2091+ }),
22512092
2252− "last": createPositionalPseudo( function( _matchIndexes, length ) {
2093+ "last": createPositionalPseudo(function( matchIndexes, length ) {
22532094 return [ length - 1 ];
2254− } ),
2095+ }),
22552096
2256− "eq": createPositionalPseudo( function( _matchIndexes, length, argument ) {
2097+ "eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
22572098 return [ argument < 0 ? argument + length : argument ];
2258− } ),
2099+ }),
22592100
2260− "even": createPositionalPseudo( function( matchIndexes, length ) {
2101+ "even": createPositionalPseudo(function( matchIndexes, length ) {
22612102 var i = 0;
22622103 for ( ; i < length; i += 2 ) {
22632104 matchIndexes.push( i );
22642105 }
22652106 return matchIndexes;
2266− } ),
2107+ }),
22672108
2268− "odd": createPositionalPseudo( function( matchIndexes, length ) {
2109+ "odd": createPositionalPseudo(function( matchIndexes, length ) {
22692110 var i = 1;
22702111 for ( ; i < length; i += 2 ) {
22712112 matchIndexes.push( i );
22722113 }
22732114 return matchIndexes;
2274− } ),
2115+ }),
22752116
2276− "lt": createPositionalPseudo( function( matchIndexes, length, argument ) {
2117+ "lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
22772118 var i = argument < 0 ?
22782119 argument + length :
22792120 argument > length ?
@@ -2283,19 +2124,19 @@ Expr = Sizzle.selectors = {
22832124 matchIndexes.push( i );
22842125 }
22852126 return matchIndexes;
2286− } ),
2127+ }),
22872128
2288− "gt": createPositionalPseudo( function( matchIndexes, length, argument ) {
2129+ "gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
22892130 var i = argument < 0 ? argument + length : argument;
22902131 for ( ; ++i < length; ) {
22912132 matchIndexes.push( i );
22922133 }
22932134 return matchIndexes;
2294− } )
2135+ })
22952136 }
22962137};
22972138
2298−Expr.pseudos[ "nth" ] = Expr.pseudos[ "eq" ];
2139+Expr.pseudos["nth"] = Expr.pseudos["eq"];
22992140
23002141// Add button/input type pseudos
23012142for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
@@ -2326,39 +2167,37 @@ tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
23262167 while ( soFar ) {
23272168
23282169 // Comma and first run
2329− if ( !matched || ( match = rcomma.exec( soFar ) ) ) {
2170+ if ( !matched || (match = rcomma.exec( soFar )) ) {
23302171 if ( match ) {
2331−
23322172 // Don't consume trailing commas as valid
2333− soFar = soFar.slice( match[ 0 ].length ) || soFar;
2173+ soFar = soFar.slice( match[0].length ) || soFar;
23342174 }
2335− groups.push( ( tokens = [] ) );
2175+ groups.push( (tokens = []) );
23362176 }
23372177
23382178 matched = false;
23392179
23402180 // Combinators
2341− if ( ( match = rcombinators.exec( soFar ) ) ) {
2181+ if ( (match = rcombinators.exec( soFar )) ) {
23422182 matched = match.shift();
2343− tokens.push( {
2183+ tokens.push({
23442184 value: matched,
2345−
23462185 // Cast descendant combinators to space
2347− type: match[ 0 ].replace( rtrim, " " )
2348− } );
2186+ type: match[0].replace( rtrim, " " )
2187+ });
23492188 soFar = soFar.slice( matched.length );
23502189 }
23512190
23522191 // Filters
23532192 for ( type in Expr.filter ) {
2354− if ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||
2355− ( match = preFilters[ type ]( match ) ) ) ) {
2193+ if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
2194+ (match = preFilters[ type ]( match ))) ) {
23562195 matched = match.shift();
2357− tokens.push( {
2196+ tokens.push({
23582197 value: matched,
23592198 type: type,
23602199 matches: match
2361− } );
2200+ });
23622201 soFar = soFar.slice( matched.length );
23632202 }
23642203 }
@@ -2375,7 +2214,6 @@ tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
23752214 soFar.length :
23762215 soFar ?
23772216 Sizzle.error( selector ) :
2378−
23792217 // Cache the tokens
23802218 tokenCache( selector, groups ).slice( 0 );
23812219};
@@ -2385,7 +2223,7 @@ function toSelector( tokens ) {
23852223 len = tokens.length,
23862224 selector = "";
23872225 for ( ; i < len; i++ ) {
2388− selector += tokens[ i ].value;
2226+ selector += tokens[i].value;
23892227 }
23902228 return selector;
23912229}
@@ -2398,10 +2236,9 @@ function addCombinator( matcher, combinator, base ) {
23982236 doneName = done++;
23992237
24002238 return combinator.first ?
2401−
24022239 // Check against closest ancestor/preceding element
24032240 function( elem, context, xml ) {
2404− while ( ( elem = elem[ dir ] ) ) {
2241+ while ( (elem = elem[ dir ]) ) {
24052242 if ( elem.nodeType === 1 || checkNonElements ) {
24062243 return matcher( elem, context, xml );
24072244 }
@@ -2416,7 +2253,7 @@ function addCombinator( matcher, combinator, base ) {
24162253
24172254 // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching
24182255 if ( xml ) {
2419− while ( ( elem = elem[ dir ] ) ) {
2256+ while ( (elem = elem[ dir ]) ) {
24202257 if ( elem.nodeType === 1 || checkNonElements ) {
24212258 if ( matcher( elem, context, xml ) ) {
24222259 return true;
@@ -2424,29 +2261,27 @@ function addCombinator( matcher, combinator, base ) {
24242261 }
24252262 }
24262263 } else {
2427− while ( ( elem = elem[ dir ] ) ) {
2264+ while ( (elem = elem[ dir ]) ) {
24282265 if ( elem.nodeType === 1 || checkNonElements ) {
2429− outerCache = elem[ expando ] || ( elem[ expando ] = {} );
2266+ outerCache = elem[ expando ] || (elem[ expando ] = {});
24302267
24312268 // Support: IE <9 only
24322269 // Defend against cloned attroperties (jQuery gh-1709)
2433− uniqueCache = outerCache[ elem.uniqueID ] ||
2434− ( outerCache[ elem.uniqueID ] = {} );
2270+ uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});
24352271
24362272 if ( skip && skip === elem.nodeName.toLowerCase() ) {
24372273 elem = elem[ dir ] || elem;
2438− } else if ( ( oldCache = uniqueCache[ key ] ) &&
2274+ } else if ( (oldCache = uniqueCache[ key ]) &&
24392275 oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
24402276
24412277 // Assign to newCache so results back-propagate to previous elements
2442− return ( newCache[ 2 ] = oldCache[ 2 ] );
2278+ return (newCache[ 2 ] = oldCache[ 2 ]);
24432279 } else {
2444−
24452280 // Reuse newcache so results back-propagate to previous elements
24462281 uniqueCache[ key ] = newCache;
24472282
24482283 // A match means we're done; a fail means we have to keep checking
2449− if ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {
2284+ if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {
24502285 return true;
24512286 }
24522287 }
@@ -2462,20 +2297,20 @@ function elementMatcher( matchers ) {
24622297 function( elem, context, xml ) {
24632298 var i = matchers.length;
24642299 while ( i-- ) {
2465− if ( !matchers[ i ]( elem, context, xml ) ) {
2300+ if ( !matchers[i]( elem, context, xml ) ) {
24662301 return false;
24672302 }
24682303 }
24692304 return true;
24702305 } :
2471− matchers[ 0 ];
2306+ matchers[0];
24722307}
24732308
24742309function multipleContexts( selector, contexts, results ) {
24752310 var i = 0,
24762311 len = contexts.length;
24772312 for ( ; i < len; i++ ) {
2478− Sizzle( selector, contexts[ i ], results );
2313+ Sizzle( selector, contexts[i], results );
24792314 }
24802315 return results;
24812316}
@@ -2488,7 +2323,7 @@ function condense( unmatched, map, filter, context, xml ) {
24882323 mapped = map != null;
24892324
24902325 for ( ; i < len; i++ ) {
2491− if ( ( elem = unmatched[ i ] ) ) {
2326+ if ( (elem = unmatched[i]) ) {
24922327 if ( !filter || filter( elem, context, xml ) ) {
24932328 newUnmatched.push( elem );
24942329 if ( mapped ) {
@@ -2508,18 +2343,14 @@ function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postS
25082343 if ( postFinder && !postFinder[ expando ] ) {
25092344 postFinder = setMatcher( postFinder, postSelector );
25102345 }
2511− return markFunction( function( seed, results, context, xml ) {
2346+ return markFunction(function( seed, results, context, xml ) {
25122347 var temp, i, elem,
25132348 preMap = [],
25142349 postMap = [],
25152350 preexisting = results.length,
25162351
25172352 // Get initial elements from seed or context
2518− elems = seed || multipleContexts(
2519− selector || "*",
2520− context.nodeType ? [ context ] : context,
2521− []
2522− ),
2353+ elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
25232354
25242355 // Prefilter to get matcher input, preserving a map for seed-results synchronization
25252356 matcherIn = preFilter && ( seed || !selector ) ?
@@ -2527,7 +2358,6 @@ function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postS
25272358 elems,
25282359
25292360 matcherOut = matcher ?
2530−
25312361 // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
25322362 postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
25332363
@@ -2551,8 +2381,8 @@ function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postS
25512381 // Un-match failing elements by moving them back to matcherIn
25522382 i = temp.length;
25532383 while ( i-- ) {
2554− if ( ( elem = temp[ i ] ) ) {
2555− matcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );
2384+ if ( (elem = temp[i]) ) {
2385+ matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
25562386 }
25572387 }
25582388 }
@@ -2560,27 +2390,25 @@ function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postS
25602390 if ( seed ) {
25612391 if ( postFinder || preFilter ) {
25622392 if ( postFinder ) {
2563−
25642393 // Get the final matcherOut by condensing this intermediate into postFinder contexts
25652394 temp = [];
25662395 i = matcherOut.length;
25672396 while ( i-- ) {
2568− if ( ( elem = matcherOut[ i ] ) ) {
2569−
2397+ if ( (elem = matcherOut[i]) ) {
25702398 // Restore matcherIn since elem is not yet a final match
2571− temp.push( ( matcherIn[ i ] = elem ) );
2399+ temp.push( (matcherIn[i] = elem) );
25722400 }
25732401 }
2574− postFinder( null, ( matcherOut = [] ), temp, xml );
2402+ postFinder( null, (matcherOut = []), temp, xml );
25752403 }
25762404
25772405 // Move matched elements from seed to results to keep them synchronized
25782406 i = matcherOut.length;
25792407 while ( i-- ) {
2580− if ( ( elem = matcherOut[ i ] ) &&
2581− ( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) {
2408+ if ( (elem = matcherOut[i]) &&
2409+ (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {
25822410
2583− seed[ temp ] = !( results[ temp ] = elem );
2411+ seed[temp] = !(results[temp] = elem);
25842412 }
25852413 }
25862414 }
@@ -2598,14 +2426,14 @@ function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postS
25982426 push.apply( results, matcherOut );
25992427 }
26002428 }
2601− } );
2429+ });
26022430}
26032431
26042432function matcherFromTokens( tokens ) {
26052433 var checkContext, matcher, j,
26062434 len = tokens.length,
2607− leadingRelative = Expr.relative[ tokens[ 0 ].type ],
2608− implicitRelative = leadingRelative || Expr.relative[ " " ],
2435+ leadingRelative = Expr.relative[ tokens[0].type ],
2436+ implicitRelative = leadingRelative || Expr.relative[" "],
26092437 i = leadingRelative ? 1 : 0,
26102438
26112439 // The foundational matcher ensures that elements are reachable from top-level context(s)
@@ -2617,43 +2445,38 @@ function matcherFromTokens( tokens ) {
26172445 }, implicitRelative, true ),
26182446 matchers = [ function( elem, context, xml ) {
26192447 var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
2620− ( checkContext = context ).nodeType ?
2448+ (checkContext = context).nodeType ?
26212449 matchContext( elem, context, xml ) :
26222450 matchAnyContext( elem, context, xml ) );
2623−
26242451 // Avoid hanging onto element (issue #299)
26252452 checkContext = null;
26262453 return ret;
26272454 } ];
26282455
26292456 for ( ; i < len; i++ ) {
2630− if ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {
2631− matchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];
2457+ if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
2458+ matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
26322459 } else {
2633− matcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );
2460+ matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
26342461
26352462 // Return special upon seeing a positional matcher
26362463 if ( matcher[ expando ] ) {
2637−
26382464 // Find the next relative operator (if any) for proper handling
26392465 j = ++i;
26402466 for ( ; j < len; j++ ) {
2641− if ( Expr.relative[ tokens[ j ].type ] ) {
2467+ if ( Expr.relative[ tokens[j].type ] ) {
26422468 break;
26432469 }
26442470 }
26452471 return setMatcher(
26462472 i > 1 && elementMatcher( matchers ),
26472473 i > 1 && toSelector(
2648−
2649− // If the preceding token was a descendant combinator, insert an implicit any-element `*`
2650− tokens
2651− .slice( 0, i - 1 )
2652− .concat( { value: tokens[ i - 2 ].type === " " ? "*" : "" } )
2474+ // If the preceding token was a descendant combinator, insert an implicit any-element `*`
2475+ tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })
26532476 ).replace( rtrim, "$1" ),
26542477 matcher,
26552478 i < j && matcherFromTokens( tokens.slice( i, j ) ),
2656− j < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),
2479+ j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
26572480 j < len && toSelector( tokens )
26582481 );
26592482 }
@@ -2674,40 +2497,28 @@ function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
26742497 unmatched = seed && [],
26752498 setMatched = [],
26762499 contextBackup = outermostContext,
2677−
26782500 // We must always have either seed elements or outermost context
2679− elems = seed || byElement && Expr.find[ "TAG" ]( "*", outermost ),
2680−
2501+ elems = seed || byElement && Expr.find["TAG"]( "*", outermost ),
26812502 // Use integer dirruns iff this is the outermost matcher
2682− dirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),
2503+ dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),
26832504 len = elems.length;
26842505
26852506 if ( outermost ) {
2686−
2687− // Support: IE 11+, Edge 17 - 18+
2688− // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
2689− // two documents; shallow comparisons work.
2690− // eslint-disable-next-line eqeqeq
2691− outermostContext = context == document || context || outermost;
2507+ outermostContext = context === document || context || outermost;
26922508 }
26932509
26942510 // Add elements passing elementMatchers directly to results
26952511 // Support: IE<9, Safari
26962512 // Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
2697− for ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {
2513+ for ( ; i !== len && (elem = elems[i]) != null; i++ ) {
26982514 if ( byElement && elem ) {
26992515 j = 0;
2700−
2701− // Support: IE 11+, Edge 17 - 18+
2702− // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
2703− // two documents; shallow comparisons work.
2704− // eslint-disable-next-line eqeqeq
2705− if ( !context && elem.ownerDocument != document ) {
2516+ if ( !context && elem.ownerDocument !== document ) {
27062517 setDocument( elem );
27072518 xml = !documentIsHTML;
27082519 }
2709− while ( ( matcher = elementMatchers[ j++ ] ) ) {
2710− if ( matcher( elem, context || document, xml ) ) {
2520+ while ( (matcher = elementMatchers[j++]) ) {
2521+ if ( matcher( elem, context || document, xml) ) {
27112522 results.push( elem );
27122523 break;
27132524 }
@@ -2719,9 +2530,8 @@ function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
27192530
27202531 // Track unmatched elements for set filters
27212532 if ( bySet ) {
2722−
27232533 // They will have gone through all possible matchers
2724− if ( ( elem = !matcher && elem ) ) {
2534+ if ( (elem = !matcher && elem) ) {
27252535 matchedCount--;
27262536 }
27272537
@@ -2745,17 +2555,16 @@ function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
27452555 // numerically zero.
27462556 if ( bySet && i !== matchedCount ) {
27472557 j = 0;
2748− while ( ( matcher = setMatchers[ j++ ] ) ) {
2558+ while ( (matcher = setMatchers[j++]) ) {
27492559 matcher( unmatched, setMatched, context, xml );
27502560 }
27512561
27522562 if ( seed ) {
2753−
27542563 // Reintegrate element matches to eliminate the need for sorting
27552564 if ( matchedCount > 0 ) {
27562565 while ( i-- ) {
2757− if ( !( unmatched[ i ] || setMatched[ i ] ) ) {
2758− setMatched[ i ] = pop.call( results );
2566+ if ( !(unmatched[i] || setMatched[i]) ) {
2567+ setMatched[i] = pop.call( results );
27592568 }
27602569 }
27612570 }
@@ -2796,14 +2605,13 @@ compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
27962605 cached = compilerCache[ selector + " " ];
27972606
27982607 if ( !cached ) {
2799−
28002608 // Generate a function of recursive functions that can be used to check each element
28012609 if ( !match ) {
28022610 match = tokenize( selector );
28032611 }
28042612 i = match.length;
28052613 while ( i-- ) {
2806− cached = matcherFromTokens( match[ i ] );
2614+ cached = matcherFromTokens( match[i] );
28072615 if ( cached[ expando ] ) {
28082616 setMatchers.push( cached );
28092617 } else {
@@ -2812,10 +2620,7 @@ compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
28122620 }
28132621
28142622 // Cache the compiled function
2815− cached = compilerCache(
2816− selector,
2817− matcherFromGroupMatchers( elementMatchers, setMatchers )
2818− );
2623+ cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
28192624
28202625 // Save selector and tokenization
28212626 cached.selector = selector;
@@ -2835,7 +2640,7 @@ compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
28352640select = Sizzle.select = function( selector, context, results, seed ) {
28362641 var i, tokens, token, type, find,
28372642 compiled = typeof selector === "function" && selector,
2838− match = !seed && tokenize( ( selector = compiled.selector || selector ) );
2643+ match = !seed && tokenize( (selector = compiled.selector || selector) );
28392644
28402645 results = results || [];
28412646
@@ -2844,12 +2649,11 @@ select = Sizzle.select = function( selector, context, results, seed ) {
28442649 if ( match.length === 1 ) {
28452650
28462651 // Reduce context if the leading compound selector is an ID
2847− tokens = match[ 0 ] = match[ 0 ].slice( 0 );
2848− if ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === "ID" &&
2849− context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {
2652+ tokens = match[0] = match[0].slice( 0 );
2653+ if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
2654+ context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) {
28502655
2851− context = ( Expr.find[ "ID" ]( token.matches[ 0 ]
2852− .replace( runescape, funescape ), context ) || [] )[ 0 ];
2656+ context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
28532657 if ( !context ) {
28542658 return results;
28552659
@@ -2862,22 +2666,20 @@ select = Sizzle.select = function( selector, context, results, seed ) {
28622666 }
28632667
28642668 // Fetch a seed set for right-to-left matching
2865− i = matchExpr[ "needsContext" ].test( selector ) ? 0 : tokens.length;
2669+ i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
28662670 while ( i-- ) {
2867− token = tokens[ i ];
2671+ token = tokens[i];
28682672
28692673 // Abort if we hit a combinator
2870− if ( Expr.relative[ ( type = token.type ) ] ) {
2674+ if ( Expr.relative[ (type = token.type) ] ) {
28712675 break;
28722676 }
2873− if ( ( find = Expr.find[ type ] ) ) {
2874−
2677+ if ( (find = Expr.find[ type ]) ) {
28752678 // Search, expanding context for leading sibling combinators
2876− if ( ( seed = find(
2877− token.matches[ 0 ].replace( runescape, funescape ),
2878− rsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) ||
2879− context
2880− ) ) ) {
2679+ if ( (seed = find(
2680+ token.matches[0].replace( runescape, funescape ),
2681+ rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context
2682+ )) ) {
28812683
28822684 // If seed is empty or no tokens remain, we can return early
28832685 tokens.splice( i, 1 );
@@ -2908,7 +2710,7 @@ select = Sizzle.select = function( selector, context, results, seed ) {
29082710// One-time assignments
29092711
29102712// Sort stability
2911−support.sortStable = expando.split( "" ).sort( sortOrder ).join( "" ) === expando;
2713+support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
29122714
29132715// Support: Chrome 14-35+
29142716// Always assume duplicates if they aren't passed to the comparison function
@@ -2919,59 +2721,58 @@ setDocument();
29192721
29202722// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
29212723// Detached nodes confoundingly follow *each other*
2922−support.sortDetached = assert( function( el ) {
2923−
2724+support.sortDetached = assert(function( el ) {
29242725 // Should return 1, but returns 4 (following)
2925− return el.compareDocumentPosition( document.createElement( "fieldset" ) ) & 1;
2926−} );
2726+ return el.compareDocumentPosition( document.createElement("fieldset") ) & 1;
2727+});
29272728
29282729// Support: IE<8
29292730// Prevent attribute/property "interpolation"
29302731// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
2931−if ( !assert( function( el ) {
2732+if ( !assert(function( el ) {
29322733 el.innerHTML = "<a href='#'></a>";
2933− return el.firstChild.getAttribute( "href" ) === "#";
2934−} ) ) {
2734+ return el.firstChild.getAttribute("href") === "#" ;
2735+}) ) {
29352736 addHandle( "type|href|height|width", function( elem, name, isXML ) {
29362737 if ( !isXML ) {
29372738 return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
29382739 }
2939− } );
2740+ });
29402741}
29412742
29422743// Support: IE<9
29432744// Use defaultValue in place of getAttribute("value")
2944−if ( !support.attributes || !assert( function( el ) {
2745+if ( !support.attributes || !assert(function( el ) {
29452746 el.innerHTML = "<input/>";
29462747 el.firstChild.setAttribute( "value", "" );
29472748 return el.firstChild.getAttribute( "value" ) === "";
2948−} ) ) {
2949− addHandle( "value", function( elem, _name, isXML ) {
2749+}) ) {
2750+ addHandle( "value", function( elem, name, isXML ) {
29502751 if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
29512752 return elem.defaultValue;
29522753 }
2953− } );
2754+ });
29542755}
29552756
29562757// Support: IE<9
29572758// Use getAttributeNode to fetch booleans when getAttribute lies
2958−if ( !assert( function( el ) {
2959− return el.getAttribute( "disabled" ) == null;
2960−} ) ) {
2759+if ( !assert(function( el ) {
2760+ return el.getAttribute("disabled") == null;
2761+}) ) {
29612762 addHandle( booleans, function( elem, name, isXML ) {
29622763 var val;
29632764 if ( !isXML ) {
29642765 return elem[ name ] === true ? name.toLowerCase() :
2965− ( val = elem.getAttributeNode( name ) ) && val.specified ?
2766+ (val = elem.getAttributeNode( name )) && val.specified ?
29662767 val.value :
2967− null;
2768+ null;
29682769 }
2969− } );
2770+ });
29702771}
29712772
29722773return Sizzle;
29732774
2974−} )( window );
2775+})( window );
29752776
29762777
29772778
@@ -3340,7 +3141,7 @@ jQuery.each( {
33403141 parents: function( elem ) {
33413142 return dir( elem, "parentNode" );
33423143 },
3343− parentsUntil: function( elem, _i, until ) {
3144+ parentsUntil: function( elem, i, until ) {
33443145 return dir( elem, "parentNode", until );
33453146 },
33463147 next: function( elem ) {
@@ -3355,10 +3156,10 @@ jQuery.each( {
33553156 prevAll: function( elem ) {
33563157 return dir( elem, "previousSibling" );
33573158 },
3358− nextUntil: function( elem, _i, until ) {
3159+ nextUntil: function( elem, i, until ) {
33593160 return dir( elem, "nextSibling", until );
33603161 },
3361− prevUntil: function( elem, _i, until ) {
3162+ prevUntil: function( elem, i, until ) {
33623163 return dir( elem, "previousSibling", until );
33633164 },
33643165 siblings: function( elem ) {
@@ -3368,13 +3169,7 @@ jQuery.each( {
33683169 return siblings( elem.firstChild );
33693170 },
33703171 contents: function( elem ) {
3371− if ( elem.contentDocument != null &&
3372−
3373− // Support: IE 11+
3374− // <object> elements with no `data` attribute has an object
3375− // `contentDocument` with a `null` prototype.
3376− getProto( elem.contentDocument ) ) {
3377−
3172+ if ( typeof elem.contentDocument !== "undefined" ) {
33783173 return elem.contentDocument;
33793174 }
33803175
@@ -3717,7 +3512,7 @@ jQuery.extend( {
37173512 var fns = arguments;
37183513
37193514 return jQuery.Deferred( function( newDefer ) {
3720− jQuery.each( tuples, function( _i, tuple ) {
3515+ jQuery.each( tuples, function( i, tuple ) {
37213516
37223517 // Map tuples (progress, done, fail) to arguments (done, fail, progress)
37233518 var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];
@@ -4170,7 +3965,7 @@ var access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
41703965 // ...except when executing function values
41713966 } else {
41723967 bulk = fn;
4173− fn = function( elem, _key, value ) {
3968+ fn = function( elem, key, value ) {
41743969 return bulk.call( jQuery( elem ), value );
41753970 };
41763971 }
@@ -4205,7 +4000,7 @@ var rmsPrefix = /^-ms-/,
42054000 rdashAlpha = /-([a-z])/g;
42064001
42074002// Used by camelCase as callback to replace()
4208−function fcamelCase( _all, letter ) {
4003+function fcamelCase( all, letter ) {
42094004 return letter.toUpperCase();
42104005}
42114006
@@ -4733,6 +4528,27 @@ var isHiddenWithinTree = function( elem, el ) {
47334528 jQuery.css( elem, "display" ) === "none";
47344529 };
47354530
4531+var swap = function( elem, options, callback, args ) {
4532+ var ret, name,
4533+ old = {};
4534+
4535+ // Remember the old values, and insert the new ones
4536+ for ( name in options ) {
4537+ old[ name ] = elem.style[ name ];
4538+ elem.style[ name ] = options[ name ];
4539+ }
4540+
4541+ ret = callback.apply( elem, args || [] );
4542+
4543+ // Revert the old values
4544+ for ( name in options ) {
4545+ elem.style[ name ] = old[ name ];
4546+ }
4547+
4548+ return ret;
4549+};
4550+
4551+
47364552
47374553
47384554function adjustCSS( elem, prop, valueParts, tween ) {
@@ -4903,41 +4719,12 @@ var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i );
49034719
49044720
49054721
4906−( function() {
4907− var fragment = document.createDocumentFragment(),
4908− div = fragment.appendChild( document.createElement( "div" ) ),
4909− input = document.createElement( "input" );
4910−
4911− // Support: Android 4.0 - 4.3 only
4912− // Check state lost if the name is set (#11217)
4913− // Support: Windows Web Apps (WWA)
4914− // `name` and `type` must use .setAttribute for WWA (#14901)
4915− input.setAttribute( "type", "radio" );
4916− input.setAttribute( "checked", "checked" );
4917− input.setAttribute( "name", "t" );
4918−
4919− div.appendChild( input );
4920−
4921− // Support: Android <=4.1 only
4922− // Older WebKit doesn't clone checked state correctly in fragments
4923− support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
4924−
4925− // Support: IE <=11 only
4926− // Make sure textarea (and checkbox) defaultValue is properly cloned
4927− div.innerHTML = "<textarea>x</textarea>";
4928− support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
4929−
4930− // Support: IE <=9 only
4931− // IE <=9 replaces <option> tags with their contents when inserted outside of
4932− // the select element.
4933− div.innerHTML = "<option></option>";
4934− support.option = !!div.lastChild;
4935−} )();
4936−
4937−
49384722// We have to close these tags to support XHTML (#13200)
49394723var wrapMap = {
49404724
4725+ // Support: IE <=9 only
4726+ option: [ 1, "<select multiple='multiple'>", "</select>" ],
4727+
49414728 // XHTML parsers do not magically insert elements in the
49424729 // same way that tag soup parsers do. So we cannot shorten
49434730 // this by omitting <tbody> or other required elements.
@@ -4949,14 +4736,12 @@ var wrapMap = {
49494736 _default: [ 0, "", "" ]
49504737};
49514738
4739+// Support: IE <=9 only
4740+wrapMap.optgroup = wrapMap.option;
4741+
49524742wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
49534743wrapMap.th = wrapMap.td;
49544744
4955−// Support: IE <=9 only
4956−if ( !support.option ) {
4957− wrapMap.optgroup = wrapMap.option = [ 1, "<select multiple='multiple'>", "</select>" ];
4958−}
4959−
49604745
49614746function getAll( context, tag ) {
49624747
@@ -5089,6 +4874,32 @@ function buildFragment( elems, context, scripts, selection, ignored ) {
50894874}
50904875
50914876
4877+( function() {
4878+ var fragment = document.createDocumentFragment(),
4879+ div = fragment.appendChild( document.createElement( "div" ) ),
4880+ input = document.createElement( "input" );
4881+
4882+ // Support: Android 4.0 - 4.3 only
4883+ // Check state lost if the name is set (#11217)
4884+ // Support: Windows Web Apps (WWA)
4885+ // `name` and `type` must use .setAttribute for WWA (#14901)
4886+ input.setAttribute( "type", "radio" );
4887+ input.setAttribute( "checked", "checked" );
4888+ input.setAttribute( "name", "t" );
4889+
4890+ div.appendChild( input );
4891+
4892+ // Support: Android <=4.1 only
4893+ // Older WebKit doesn't clone checked state correctly in fragments
4894+ support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
4895+
4896+ // Support: IE <=11 only
4897+ // Make sure textarea (and checkbox) defaultValue is properly cloned
4898+ div.innerHTML = "<textarea>x</textarea>";
4899+ support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
4900+} )();
4901+
4902+
50924903var
50934904 rkeyEvent = /^key/,
50944905 rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,
@@ -5197,8 +5008,8 @@ jQuery.event = {
51975008 special, handlers, type, namespaces, origType,
51985009 elemData = dataPriv.get( elem );
51995010
5200− // Only attach events to objects that accept data
5201− if ( !acceptData( elem ) ) {
5011+ // Don't attach events to noData or text/comment nodes (but allow plain objects)
5012+ if ( !elemData ) {
52025013 return;
52035014 }
52045015
@@ -5222,7 +5033,7 @@ jQuery.event = {
52225033
52235034 // Init the element's event structure and main handler, if this is the first
52245035 if ( !( events = elemData.events ) ) {
5225− events = elemData.events = Object.create( null );
5036+ events = elemData.events = {};
52265037 }
52275038 if ( !( eventHandle = elemData.handle ) ) {
52285039 eventHandle = elemData.handle = function( e ) {
@@ -5380,15 +5191,12 @@ jQuery.event = {
53805191
53815192 dispatch: function( nativeEvent ) {
53825193
5194+ // Make a writable jQuery.Event from the native event object
5195+ var event = jQuery.event.fix( nativeEvent );
5196+
53835197 var i, j, ret, matched, handleObj, handlerQueue,
53845198 args = new Array( arguments.length ),
5385−
5386− // Make a writable jQuery.Event from the native event object
5387− event = jQuery.event.fix( nativeEvent ),
5388−
5389− handlers = (
5390− dataPriv.get( this, "events" ) || Object.create( null )
5391− )[ event.type ] || [],
5199+ handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [],
53925200 special = jQuery.event.special[ event.type ] || {};
53935201
53945202 // Use the fix-ed jQuery.Event rather than the (read-only) native event
@@ -5963,6 +5771,13 @@ jQuery.fn.extend( {
59635771
59645772var
59655773
5774+ /* eslint-disable max-len */
5775+
5776+ // See https://github.com/eslint/eslint/issues/3229
5777+ rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,
5778+
5779+ /* eslint-enable */
5780+
59665781 // Support: IE <=10 - 11, Edge 12 - 13 only
59675782 // In IE/Edge using regex groups here causes severe slowdowns.
59685783 // See https://connect.microsoft.com/IE/feedback/details/1736512/
@@ -5999,7 +5814,7 @@ function restoreScript( elem ) {
59995814}
60005815
60015816function cloneCopyEvent( src, dest ) {
6002− var i, l, type, pdataOld, udataOld, udataCur, events;
5817+ var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;
60035818
60045819 if ( dest.nodeType !== 1 ) {
60055820 return;
@@ -6007,11 +5822,13 @@ function cloneCopyEvent( src, dest ) {
60075822
60085823 // 1. Copy private data: events, handlers, etc.
60095824 if ( dataPriv.hasData( src ) ) {
6010− pdataOld = dataPriv.get( src );
5825+ pdataOld = dataPriv.access( src );
5826+ pdataCur = dataPriv.set( dest, pdataOld );
60115827 events = pdataOld.events;
60125828
60135829 if ( events ) {
6014− dataPriv.remove( dest, "handle events" );
5830+ delete pdataCur.handle;
5831+ pdataCur.events = {};
60155832
60165833 for ( type in events ) {
60175834 for ( i = 0, l = events[ type ].length; i < l; i++ ) {
@@ -6047,7 +5864,7 @@ function fixInput( src, dest ) {
60475864function domManip( collection, args, callback, ignored ) {
60485865
60495866 // Flatten any nested arrays
6050− args = flat( args );
5867+ args = concat.apply( [], args );
60515868
60525869 var fragment, first, scripts, hasScripts, node, doc,
60535870 i = 0,
@@ -6122,7 +5939,7 @@ function domManip( collection, args, callback, ignored ) {
61225939 if ( jQuery._evalUrl && !node.noModule ) {
61235940 jQuery._evalUrl( node.src, {
61245941 nonce: node.nonce || node.getAttribute( "nonce" )
6125− }, doc );
5942+ } );
61265943 }
61275944 } else {
61285945 DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc );
@@ -6159,7 +5976,7 @@ function remove( elem, selector, keepData ) {
61595976
61605977jQuery.extend( {
61615978 htmlPrefilter: function( html ) {
6162− return html;
5979+ return html.replace( rxhtmlTag, "<$1></$2>" );
61635980 },
61645981
61655982 clone: function( elem, dataAndEvents, deepDataAndEvents ) {
@@ -6421,27 +6238,6 @@ var getStyles = function( elem ) {
64216238 return view.getComputedStyle( elem );
64226239 };
64236240
6424−var swap = function( elem, options, callback ) {
6425− var ret, name,
6426− old = {};
6427−
6428− // Remember the old values, and insert the new ones
6429− for ( name in options ) {
6430− old[ name ] = elem.style[ name ];
6431− elem.style[ name ] = options[ name ];
6432− }
6433−
6434− ret = callback.call( elem );
6435−
6436− // Revert the old values
6437− for ( name in options ) {
6438− elem.style[ name ] = old[ name ];
6439− }
6440−
6441− return ret;
6442−};
6443−
6444−
64456241var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" );
64466242
64476243
@@ -6499,7 +6295,7 @@ var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" );
64996295 }
65006296
65016297 var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,
6502− reliableTrDimensionsVal, reliableMarginLeftVal,
6298+ reliableMarginLeftVal,
65036299 container = document.createElement( "div" ),
65046300 div = document.createElement( "div" );
65056301
@@ -6534,35 +6330,6 @@ var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" );
65346330 scrollboxSize: function() {
65356331 computeStyleTests();
65366332 return scrollboxSizeVal;
6537− },
6538−
6539− // Support: IE 9 - 11+, Edge 15 - 18+
6540− // IE/Edge misreport `getComputedStyle` of table rows with width/height
6541− // set in CSS while `offset*` properties report correct values.
6542− // Behavior in IE 9 is more subtle than in newer versions & it passes
6543− // some versions of this test; make sure not to make it pass there!
6544− reliableTrDimensions: function() {
6545− var table, tr, trChild, trStyle;
6546− if ( reliableTrDimensionsVal == null ) {
6547− table = document.createElement( "table" );
6548− tr = document.createElement( "tr" );
6549− trChild = document.createElement( "div" );
6550−
6551− table.style.cssText = "position:absolute;left:-11111px";
6552− tr.style.height = "1px";
6553− trChild.style.height = "9px";
6554−
6555− documentElement
6556− .appendChild( table )
6557− .appendChild( tr )
6558− .appendChild( trChild );
6559−
6560− trStyle = window.getComputedStyle( tr );
6561− reliableTrDimensionsVal = parseInt( trStyle.height ) > 3;
6562−
6563− documentElement.removeChild( table );
6564− }
6565− return reliableTrDimensionsVal;
65666333 }
65676334 } );
65686335} )();
@@ -6687,7 +6454,7 @@ var
66876454 fontWeight: "400"
66886455 };
66896456
6690−function setPositiveNumber( _elem, value, subtract ) {
6457+function setPositiveNumber( elem, value, subtract ) {
66916458
66926459 // Any relative (+/-) values have already been
66936460 // normalized at this point
@@ -6792,26 +6559,17 @@ function getWidthOrHeight( elem, dimension, extra ) {
67926559 }
67936560
67946561
6795− // Support: IE 9 - 11 only
6796− // Use offsetWidth/offsetHeight for when box sizing is unreliable.
6797− // In those cases, the computed value can be trusted to be border-box.
6562+ // Fall back to offsetWidth/offsetHeight when value is "auto"
6563+ // This happens for inline elements with no explicit setting (gh-3571)
6564+ // Support: Android <=4.1 - 4.3 only
6565+ // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)
6566+ // Support: IE 9-11 only
6567+ // Also use offsetWidth/offsetHeight for when box sizing is unreliable
6568+ // We use getClientRects() to check for hidden/disconnected.
6569+ // In those cases, the computed value can be trusted to be border-box
67986570 if ( ( !support.boxSizingReliable() && isBorderBox ||
6799−
6800− // Support: IE 10 - 11+, Edge 15 - 18+
6801− // IE/Edge misreport `getComputedStyle` of table rows with width/height
6802− // set in CSS while `offset*` properties report correct values.
6803− // Interestingly, in some cases IE 9 doesn't suffer from this issue.
6804− !support.reliableTrDimensions() && nodeName( elem, "tr" ) ||
6805−
6806− // Fall back to offsetWidth/offsetHeight when value is "auto"
6807− // This happens for inline elements with no explicit setting (gh-3571)
68086571 val === "auto" ||
6809−
6810− // Support: Android <=4.1 - 4.3 only
6811− // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)
68126572 !parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) &&
6813−
6814− // Make sure the element is visible & connected
68156573 elem.getClientRects().length ) {
68166574
68176575 isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
@@ -7006,7 +6764,7 @@ jQuery.extend( {
70066764 }
70076765} );
70086766
7009−jQuery.each( [ "height", "width" ], function( _i, dimension ) {
6767+jQuery.each( [ "height", "width" ], function( i, dimension ) {
70106768 jQuery.cssHooks[ dimension ] = {
70116769 get: function( elem, computed, extra ) {
70126770 if ( computed ) {
@@ -7779,7 +7537,7 @@ jQuery.fn.extend( {
77797537 clearQueue = type;
77807538 type = undefined;
77817539 }
7782− if ( clearQueue ) {
7540+ if ( clearQueue && type !== false ) {
77837541 this.queue( type || "fx", [] );
77847542 }
77857543
@@ -7862,7 +7620,7 @@ jQuery.fn.extend( {
78627620 }
78637621} );
78647622
7865−jQuery.each( [ "toggle", "show", "hide" ], function( _i, name ) {
7623+jQuery.each( [ "toggle", "show", "hide" ], function( i, name ) {
78667624 var cssFn = jQuery.fn[ name ];
78677625 jQuery.fn[ name ] = function( speed, easing, callback ) {
78687626 return speed == null || typeof speed === "boolean" ?
@@ -8083,7 +7841,7 @@ boolHook = {
80837841 }
80847842};
80857843
8086−jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( _i, name ) {
7844+jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) {
80877845 var getter = attrHandle[ name ] || jQuery.find.attr;
80887846
80897847 attrHandle[ name ] = function( elem, name, isXML ) {
@@ -8707,9 +8465,7 @@ jQuery.extend( jQuery.event, {
87078465 special.bindType || type;
87088466
87098467 // jQuery handler
8710− handle = (
8711− dataPriv.get( cur, "events" ) || Object.create( null )
8712− )[ event.type ] &&
8468+ handle = ( dataPriv.get( cur, "events" ) || {} )[ event.type ] &&
87138469 dataPriv.get( cur, "handle" );
87148470 if ( handle ) {
87158471 handle.apply( cur, data );
@@ -8820,10 +8576,7 @@ if ( !support.focusin ) {
88208576
88218577 jQuery.event.special[ fix ] = {
88228578 setup: function() {
8823−
8824− // Handle: regular nodes (via `this.ownerDocument`), window
8825− // (via `this.document`) & document (via `this`).
8826− var doc = this.ownerDocument || this.document || this,
8579+ var doc = this.ownerDocument || this,
88278580 attaches = dataPriv.access( doc, fix );
88288581
88298582 if ( !attaches ) {
@@ -8832,7 +8585,7 @@ if ( !support.focusin ) {
88328585 dataPriv.access( doc, fix, ( attaches || 0 ) + 1 );
88338586 },
88348587 teardown: function() {
8835− var doc = this.ownerDocument || this.document || this,
8588+ var doc = this.ownerDocument || this,
88368589 attaches = dataPriv.access( doc, fix ) - 1;
88378590
88388591 if ( !attaches ) {
@@ -8848,7 +8601,7 @@ if ( !support.focusin ) {
88488601}
88498602var location = window.location;
88508603
8851−var nonce = { guid: Date.now() };
8604+var nonce = Date.now();
88528605
88538606var rquery = ( /\?/ );
88548607
@@ -8980,7 +8733,7 @@ jQuery.fn.extend( {
89808733 rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
89818734 ( this.checked || !rcheckableType.test( type ) );
89828735 } )
8983− .map( function( _i, elem ) {
8736+ .map( function( i, elem ) {
89848737 var val = jQuery( this ).val();
89858738
89868739 if ( val == null ) {
@@ -9593,8 +9346,7 @@ jQuery.extend( {
95939346 // Add or update anti-cache param if needed
95949347 if ( s.cache === false ) {
95959348 cacheURL = cacheURL.replace( rantiCache, "$1" );
9596− uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce.guid++ ) +
9597− uncached;
9349+ uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce++ ) + uncached;
95989350 }
95999351
96009352 // Put hash and anti-cache on the URL that will be requested (gh-1732)
@@ -9727,11 +9479,6 @@ jQuery.extend( {
97279479 response = ajaxHandleResponses( s, jqXHR, responses );
97289480 }
97299481
9730− // Use a noop converter for missing script
9731− if ( !isSuccess && jQuery.inArray( "script", s.dataTypes ) > -1 ) {
9732− s.converters[ "text script" ] = function() {};
9733− }
9734−
97359482 // Convert no matter what (that way responseXXX fields are always set)
97369483 response = ajaxConvert( s, response, jqXHR, isSuccess );
97379484
@@ -9822,7 +9569,7 @@ jQuery.extend( {
98229569 }
98239570} );
98249571
9825−jQuery.each( [ "get", "post" ], function( _i, method ) {
9572+jQuery.each( [ "get", "post" ], function( i, method ) {
98269573 jQuery[ method ] = function( url, data, callback, type ) {
98279574
98289575 // Shift arguments if data argument was omitted
@@ -9843,17 +9590,8 @@ jQuery.each( [ "get", "post" ], function( _i, method ) {
98439590 };
98449591} );
98459592
9846−jQuery.ajaxPrefilter( function( s ) {
9847− var i;
9848− for ( i in s.headers ) {
9849− if ( i.toLowerCase() === "content-type" ) {
9850− s.contentType = s.headers[ i ] || "";
9851− }
9852− }
9853−} );
9854−
98559593
9856−jQuery._evalUrl = function( url, options, doc ) {
9594+jQuery._evalUrl = function( url, options ) {
98579595 return jQuery.ajax( {
98589596 url: url,
98599597
@@ -9871,7 +9609,7 @@ jQuery._evalUrl = function( url, options, doc ) {
98719609 "text script": function() {}
98729610 },
98739611 dataFilter: function( response ) {
9874− jQuery.globalEval( response, options, doc );
9612+ jQuery.globalEval( response, options );
98759613 }
98769614 } );
98779615};
@@ -10193,7 +9931,7 @@ var oldCallbacks = [],
101939931jQuery.ajaxSetup( {
101949932 jsonp: "callback",
101959933 jsonpCallback: function() {
10196− var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce.guid++ ) );
9934+ var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) );
101979935 this[ callback ] = true;
101989936 return callback;
101999937 }
@@ -10410,6 +10148,23 @@ jQuery.fn.load = function( url, params, callback ) {
1041010148
1041110149
1041210150
10151+// Attach a bunch of functions for handling common AJAX events
10152+jQuery.each( [
10153+ "ajaxStart",
10154+ "ajaxStop",
10155+ "ajaxComplete",
10156+ "ajaxError",
10157+ "ajaxSuccess",
10158+ "ajaxSend"
10159+], function( i, type ) {
10160+ jQuery.fn[ type ] = function( fn ) {
10161+ return this.on( type, fn );
10162+ };
10163+} );
10164+
10165+
10166+
10167+
1041310168jQuery.expr.pseudos.animated = function( elem ) {
1041410169 return jQuery.grep( jQuery.timers, function( fn ) {
1041510170 return elem === fn.elem;
@@ -10466,12 +10221,6 @@ jQuery.offset = {
1046610221 options.using.call( elem, props );
1046710222
1046810223 } else {
10469− if ( typeof props.top === "number" ) {
10470− props.top += "px";
10471− }
10472− if ( typeof props.left === "number" ) {
10473− props.left += "px";
10474− }
1047510224 curElem.css( props );
1047610225 }
1047710226 }
@@ -10622,7 +10371,7 @@ jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function(
1062210371// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347
1062310372// getComputedStyle returns percent when specified for top/left/bottom/right;
1062410373// rather than make the css module depend on the offset module, just check for it here
10625−jQuery.each( [ "top", "left" ], function( _i, prop ) {
10374+jQuery.each( [ "top", "left" ], function( i, prop ) {
1062610375 jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,
1062710376 function( elem, computed ) {
1062810377 if ( computed ) {
@@ -10685,19 +10434,25 @@ jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
1068510434} );
1068610435
1068710436
10688−jQuery.each( [
10689− "ajaxStart",
10690− "ajaxStop",
10691− "ajaxComplete",
10692− "ajaxError",
10693− "ajaxSuccess",
10694− "ajaxSend"
10695−], function( _i, type ) {
10696− jQuery.fn[ type ] = function( fn ) {
10697− return this.on( type, fn );
10437+jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " +
10438+ "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
10439+ "change select submit keydown keypress keyup contextmenu" ).split( " " ),
10440+ function( i, name ) {
10441+
10442+ // Handle event binding
10443+ jQuery.fn[ name ] = function( data, fn ) {
10444+ return arguments.length > 0 ?
10445+ this.on( name, null, data, fn ) :
10446+ this.trigger( name );
1069810447 };
1069910448} );
1070010449
10450+jQuery.fn.extend( {
10451+ hover: function( fnOver, fnOut ) {
10452+ return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
10453+ }
10454+} );
10455+
1070110456
1070210457
1070310458
@@ -10719,33 +10474,9 @@ jQuery.fn.extend( {
1071910474 return arguments.length === 1 ?
1072010475 this.off( selector, "**" ) :
1072110476 this.off( types, selector || "**", fn );
10722− },
10723−
10724− hover: function( fnOver, fnOut ) {
10725− return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
1072610477 }
1072710478} );
1072810479
10729−jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " +
10730− "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
10731− "change select submit keydown keypress keyup contextmenu" ).split( " " ),
10732− function( _i, name ) {
10733−
10734− // Handle event binding
10735− jQuery.fn[ name ] = function( data, fn ) {
10736− return arguments.length > 0 ?
10737− this.on( name, null, data, fn ) :
10738− this.trigger( name );
10739− };
10740− } );
10741−
10742−
10743−
10744−
10745−// Support: Android <=4.0 only
10746−// Make sure we trim BOM and NBSP
10747−var rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
10748−
1074910480// Bind a function to a context, optionally partially applying any
1075010481// arguments.
1075110482// jQuery.proxy is deprecated to promote standards (specifically Function#bind)
@@ -10808,11 +10539,6 @@ jQuery.isNumeric = function( obj ) {
1080810539 !isNaN( obj - parseFloat( obj ) );
1080910540};
1081010541
10811−jQuery.trim = function( text ) {
10812− return text == null ?
10813− "" :
10814− ( text + "" ).replace( rtrim, "" );
10815−};
1081610542
1081710543
1081810544
@@ -10861,7 +10587,7 @@ jQuery.noConflict = function( deep ) {
1086110587// Expose jQuery and $ identifiers, even in AMD
1086210588// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
1086310589// and CommonJS for browser emulators (#13566)
10864−if ( typeof noGlobal === "undefined" ) {
10590+if ( !noGlobal ) {
1086510591 window.jQuery = window.$ = jQuery;
1086610592}
1086710593
_static/jquery.js+2−2
@@ -1,2 +1,2 @@
1−/*! jQuery v3.5.1 | (c) JS Foundation and other contributors | jquery.org/license */
2−!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.5.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}S.fn=S.prototype={jquery:f,constructor:S,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=S.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return S.each(this,e)},map:function(n){return this.pushStack(S.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(S.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(S.grep(this,function(e,t){return t%2}))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},S.extend=S.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(S.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||S.isPlainObject(n)?n:{},i=!1,a[t]=S.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},S.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){b(e,{nonce:t&&t.nonce},n)},each:function(e,t){var n,r=0;if(p(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},makeArray:function(e,t){var n=t||[];return null!=e&&(p(Object(e))?S.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(p(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g(a)},guid:1,support:y}),"function"==typeof Symbol&&(S.fn[Symbol.iterator]=t[Symbol.iterator]),S.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var d=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,S="sizzle"+1*new Date,p=n.document,k=0,r=0,m=ue(),x=ue(),A=ue(),N=ue(),D=function(e,t){return e===t&&(l=!0),0},j={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",F=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",B=new RegExp(M+"+","g"),$=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="<a id='"+S+"'></a><select id='"+S+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!=C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!=C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&j.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(D),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(B," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[k,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[k,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[S]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace($,"$1"));return s[S]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[k,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[S]||(e[S]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===k&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[S]&&(v=Ce(v)),y&&!y[S]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[S]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace($,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace($," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=A[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[S]?i.push(a):o.push(a);(a=A(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=k+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t==C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument==C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(k=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(k=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=S.split("").sort(D).join("")===S,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);S.find=d,S.expr=d.selectors,S.expr[":"]=S.expr.pseudos,S.uniqueSort=S.unique=d.uniqueSort,S.text=d.getText,S.isXMLDoc=d.isXML,S.contains=d.contains,S.escapeSelector=d.escape;var h=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&S(e).is(n))break;r.push(e)}return r},T=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},k=S.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var N=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1<i.call(n,e)!==r}):S.filter(n,e,r)}S.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?S.find.matchesSelector(r,e)?[r]:[]:S.find.matches(e,S.grep(t,function(e){return 1===e.nodeType}))},S.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(S(e).filter(function(){for(t=0;t<r;t++)if(S.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)S.find(e,i[t],n);return 1<r?S.uniqueSort(n):n},filter:function(e){return this.pushStack(D(this,e||[],!1))},not:function(e){return this.pushStack(D(this,e||[],!0))},is:function(e){return!!D(this,"string"==typeof e&&k.test(e)?S(e):e||[],!1).length}});var j,q=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,j=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(S.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&S(e);if(!k.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&S.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?S.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(S(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(S.uniqueSort(S.merge(this.get(),S(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),S.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return h(e,"parentNode")},parentsUntil:function(e,t,n){return h(e,"parentNode",n)},next:function(e){return O(e,"nextSibling")},prev:function(e){return O(e,"previousSibling")},nextAll:function(e){return h(e,"nextSibling")},prevAll:function(e){return h(e,"previousSibling")},nextUntil:function(e,t,n){return h(e,"nextSibling",n)},prevUntil:function(e,t,n){return h(e,"previousSibling",n)},siblings:function(e){return T((e.parentNode||{}).firstChild,e)},children:function(e){return T(e.firstChild)},contents:function(e){return null!=e.contentDocument&&r(e.contentDocument)?e.contentDocument:(A(e,"template")&&(e=e.content||e),S.merge([],e.childNodes))}},function(r,i){S.fn[r]=function(e,t){var n=S.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=S.filter(t,n)),1<this.length&&(H[r]||S.uniqueSort(n),L.test(r)&&n.reverse()),this.pushStack(n)}});var P=/[^\x20\t\r\n\f]+/g;function R(e){return e}function M(e){throw e}function I(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}S.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},S.each(e.match(P)||[],function(e,t){n[t]=!0}),n):S.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){S.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return S.each(arguments,function(e,t){var n;while(-1<(n=S.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<S.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},S.extend({Deferred:function(e){var o=[["notify","progress",S.Callbacks("memory"),S.Callbacks("memory"),2],["resolve","done",S.Callbacks("once memory"),S.Callbacks("once memory"),0,"resolved"],["reject","fail",S.Callbacks("once memory"),S.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return S.Deferred(function(r){S.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,R,s),l(u,o,M,s)):(u++,t.call(e,l(u,o,R,s),l(u,o,M,s),l(u,o,R,o.notifyWith))):(a!==R&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){S.Deferred.exceptionHook&&S.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==M&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(S.Deferred.getStackHook&&(t.stackTrace=S.Deferred.getStackHook()),C.setTimeout(t))}}return S.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:R,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:R)),o[2][3].add(l(0,e,m(n)?n:M))}).promise()},promise:function(e){return null!=e?S.extend(e,a):a}},s={};return S.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=S.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(I(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)I(i[t],a(t),o.reject);return o.promise()}});var W=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;S.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&W.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},S.readyException=function(e){C.setTimeout(function(){throw e})};var F=S.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),S.ready()}S.fn.ready=function(e){return F.then(e)["catch"](function(e){S.readyException(e)}),this},S.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--S.readyWait:S.isReady)||(S.isReady=!0)!==e&&0<--S.readyWait||F.resolveWith(E,[S])}}),S.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(S.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var $=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)$(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(S(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},_=/^-ms-/,z=/-([a-z])/g;function U(e,t){return t.toUpperCase()}function X(e){return e.replace(_,"ms-").replace(z,U)}var V=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function G(){this.expando=S.expando+G.uid++}G.uid=1,G.prototype={cache:function(e){var t=e[this.expando];return t||(t={},V(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[X(t)]=n;else for(r in t)i[X(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][X(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(X):(t=X(t))in r?[t]:t.match(P)||[]).length;while(n--)delete r[t[n]]}(void 0===t||S.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!S.isEmptyObject(t)}};var Y=new G,Q=new G,J=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,K=/[A-Z]/g;function Z(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(K,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:J.test(i)?JSON.parse(i):i)}catch(e){}Q.set(e,t,n)}else n=void 0;return n}S.extend({hasData:function(e){return Q.hasData(e)||Y.hasData(e)},data:function(e,t,n){return Q.access(e,t,n)},removeData:function(e,t){Q.remove(e,t)},_data:function(e,t,n){return Y.access(e,t,n)},_removeData:function(e,t){Y.remove(e,t)}}),S.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=Q.get(o),1===o.nodeType&&!Y.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=X(r.slice(5)),Z(o,r,i[r]));Y.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){Q.set(this,n)}):$(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=Q.get(o,n))?t:void 0!==(t=Z(o,n))?t:void 0;this.each(function(){Q.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){Q.remove(this,e)})}}),S.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Y.get(e,t),n&&(!r||Array.isArray(n)?r=Y.access(e,t,S.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=S.queue(e,t),r=n.length,i=n.shift(),o=S._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){S.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Y.get(e,n)||Y.access(e,n,{empty:S.Callbacks("once memory").add(function(){Y.remove(e,[t+"queue",n])})})}}),S.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?S.queue(this[0],t):void 0===n?this:this.each(function(){var e=S.queue(this,t,n);S._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&S.dequeue(this,t)})},dequeue:function(e){return this.each(function(){S.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=S.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Y.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var ee=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,te=new RegExp("^(?:([+-])=|)("+ee+")([a-z%]*)$","i"),ne=["Top","Right","Bottom","Left"],re=E.documentElement,ie=function(e){return S.contains(e.ownerDocument,e)},oe={composed:!0};re.getRootNode&&(ie=function(e){return S.contains(e.ownerDocument,e)||e.getRootNode(oe)===e.ownerDocument});var ae=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&ie(e)&&"none"===S.css(e,"display")};function se(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return S.css(e,t,"")},u=s(),l=n&&n[3]||(S.cssNumber[t]?"":"px"),c=e.nodeType&&(S.cssNumber[t]||"px"!==l&&+u)&&te.exec(S.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)S.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,S.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ue={};function le(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Y.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&ae(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ue[s])||(o=a.body.appendChild(a.createElement(s)),u=S.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ue[s]=u)))):"none"!==n&&(l[c]="none",Y.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}S.fn.extend({show:function(){return le(this,!0)},hide:function(){return le(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ae(this)?S(this).show():S(this).hide()})}});var ce,fe,pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="<option></option>",y.option=!!ce.lastChild;var ge={thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Y.set(e[n],"globalEval",!t||Y.get(t[n],"globalEval"))}ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td,y.option||(ge.optgroup=ge.option=[1,"<select multiple='multiple'>","</select>"]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))S.merge(p,o.nodeType?[o]:o);else if(me.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+S.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;S.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<S.inArray(o,r))i&&i.push(o);else if(l=ie(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}var be=/^key/,we=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Te=/^([^.]*)(?:\.(.+)|)/;function Ce(){return!0}function Ee(){return!1}function Se(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function ke(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)ke(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Ee;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return S().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=S.guid++)),e.each(function(){S.event.add(this,t,i,r,n)})}function Ae(e,i,o){o?(Y.set(e,i,!1),S.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Y.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(S.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Y.set(this,i,r),t=o(this,i),this[i](),r!==(n=Y.get(this,i))||t?Y.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Y.set(this,i,{value:S.event.trigger(S.extend(r[0],S.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Y.get(e,i)&&S.event.add(e,i,Ce)}S.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.get(t);if(V(t)){n.handler&&(n=(o=n).handler,i=o.selector),i&&S.find.matchesSelector(re,i),n.guid||(n.guid=S.guid++),(u=v.events)||(u=v.events=Object.create(null)),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof S&&S.event.triggered!==e.type?S.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(P)||[""]).length;while(l--)d=g=(s=Te.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=S.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=S.event.special[d]||{},c=S.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&S.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),S.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.hasData(e)&&Y.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(P)||[""]).length;while(l--)if(d=g=(s=Te.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=S.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||S.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)S.event.remove(e,d+t[l],n,r,!0);S.isEmptyObject(u)&&Y.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=new Array(arguments.length),u=S.event.fix(e),l=(Y.get(this,"events")||Object.create(null))[u.type]||[],c=S.event.special[u.type]||{};for(s[0]=u,t=1;t<arguments.length;t++)s[t]=arguments[t];if(u.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,u)){a=S.event.handlers.call(this,u,l),t=0;while((i=a[t++])&&!u.isPropagationStopped()){u.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!u.isImmediatePropagationStopped())u.rnamespace&&!1!==o.namespace&&!u.rnamespace.test(o.namespace)||(u.handleObj=o,u.data=o.data,void 0!==(r=((S.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s))&&!1===(u.result=r)&&(u.preventDefault(),u.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,u),u.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<S(i,this).index(l):S.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(S.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[S.expando]?e:new S.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Ae(t,"click",Ce),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Ae(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Y.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},S.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},S.Event=function(e,t){if(!(this instanceof S.Event))return new S.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?Ce:Ee,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&S.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[S.expando]=!0},S.Event.prototype={constructor:S.Event,isDefaultPrevented:Ee,isPropagationStopped:Ee,isImmediatePropagationStopped:Ee,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=Ce,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=Ce,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=Ce,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},S.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&be.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&we.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},S.event.addProp),S.each({focus:"focusin",blur:"focusout"},function(e,t){S.event.special[e]={setup:function(){return Ae(this,e,Se),!1},trigger:function(){return Ae(this,e),!0},delegateType:t}}),S.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){S.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||S.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),S.fn.extend({on:function(e,t,n,r){return ke(this,e,t,n,r)},one:function(e,t,n,r){return ke(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,S(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Ee),this.each(function(){S.event.remove(this,e,n,t)})}});var Ne=/<script|<style|<link/i,De=/checked\s*(?:[^=]|=\s*.checked.)/i,je=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function qe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n<r;n++)S.event.add(t,i,s[i][n]);Q.hasData(e)&&(o=Q.access(e),a=S.extend({},o),Q.set(t,a))}}function Pe(n,r,i,o){r=g(r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&De.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),Pe(t,r,i,o)});if(f&&(t=(e=xe(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=S.map(ve(e,"script"),Le)).length;c<f;c++)u=e,c!==p&&(u=S.clone(u,!0,!0),s&&S.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,S.map(a,He),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Y.access(u,"globalEval")&&S.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?S._evalUrl&&!u.noModule&&S._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")},l):b(u.textContent.replace(je,""),u,l))}return n}function Re(e,t,n){for(var r,i=t?S.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||S.cleanData(ve(r)),r.parentNode&&(n&&ie(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}S.extend({htmlPrefilter:function(e){return e},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=ie(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||S.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Oe(o[r],a[r]);else Oe(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=S.event.special,o=0;void 0!==(n=e[o]);o++)if(V(n)){if(t=n[Y.expando]){if(t.events)for(r in t.events)i[r]?S.event.remove(n,r):S.removeEvent(n,r,t.handle);n[Y.expando]=void 0}n[Q.expando]&&(n[Q.expando]=void 0)}}}),S.fn.extend({detach:function(e){return Re(this,e,!0)},remove:function(e){return Re(this,e)},text:function(e){return $(this,function(e){return void 0===e?S.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Pe(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||qe(this,e).appendChild(e)})},prepend:function(){return Pe(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=qe(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Pe(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Pe(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(S.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return S.clone(this,e,t)})},html:function(e){return $(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Ne.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=S.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(S.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return Pe(this,arguments,function(e){var t=this.parentNode;S.inArray(this,n)<0&&(S.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),S.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){S.fn[e]=function(e){for(var t,n=[],r=S(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),S(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var Me=new RegExp("^("+ee+")(?!px)[a-z%]+$","i"),Ie=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},We=function(e,t,n){var r,i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.call(e),t)e.style[i]=o[i];return r},Fe=new RegExp(ne.join("|"),"i");function Be(e,t,n){var r,i,o,a,s=e.style;return(n=n||Ie(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||ie(e)||(a=S.style(e,t)),!y.pixelBoxStyles()&&Me.test(a)&&Fe.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function $e(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(l){u.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",l.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",re.appendChild(u).appendChild(l);var e=C.getComputedStyle(l);n="1%"!==e.top,s=12===t(e.marginLeft),l.style.right="60%",o=36===t(e.right),r=36===t(e.width),l.style.position="absolute",i=12===t(l.offsetWidth/3),re.removeChild(u),l=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s,u=E.createElement("div"),l=E.createElement("div");l.style&&(l.style.backgroundClip="content-box",l.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===l.style.backgroundClip,S.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),s},scrollboxSize:function(){return e(),i},reliableTrDimensions:function(){var e,t,n,r;return null==a&&(e=E.createElement("table"),t=E.createElement("tr"),n=E.createElement("div"),e.style.cssText="position:absolute;left:-11111px",t.style.height="1px",n.style.height="9px",re.appendChild(e).appendChild(t).appendChild(n),r=C.getComputedStyle(t),a=3<parseInt(r.height),re.removeChild(e)),a}}))}();var _e=["Webkit","Moz","ms"],ze=E.createElement("div").style,Ue={};function Xe(e){var t=S.cssProps[e]||Ue[e];return t||(e in ze?e:Ue[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=_e.length;while(n--)if((e=_e[n]+t)in ze)return e}(e)||e)}var Ve=/^(none|table(?!-c[ea]).+)/,Ge=/^--/,Ye={position:"absolute",visibility:"hidden",display:"block"},Qe={letterSpacing:"0",fontWeight:"400"};function Je(e,t,n){var r=te.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function Ke(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=S.css(e,n+ne[a],!0,i)),r?("content"===n&&(u-=S.css(e,"padding"+ne[a],!0,i)),"margin"!==n&&(u-=S.css(e,"border"+ne[a]+"Width",!0,i))):(u+=S.css(e,"padding"+ne[a],!0,i),"padding"!==n?u+=S.css(e,"border"+ne[a]+"Width",!0,i):s+=S.css(e,"border"+ne[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function Ze(e,t,n){var r=Ie(e),i=(!y.boxSizingReliable()||n)&&"border-box"===S.css(e,"boxSizing",!1,r),o=i,a=Be(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if(Me.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||!y.reliableTrDimensions()&&A(e,"tr")||"auto"===a||!parseFloat(a)&&"inline"===S.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===S.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+Ke(e,t,n||(i?"border":"content"),o,r,a)+"px"}function et(e,t,n,r,i){return new et.prototype.init(e,t,n,r,i)}S.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Be(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=X(t),u=Ge.test(t),l=e.style;if(u||(t=Xe(s)),a=S.cssHooks[t]||S.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=te.exec(n))&&i[1]&&(n=se(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(S.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=X(t);return Ge.test(t)||(t=Xe(s)),(a=S.cssHooks[t]||S.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Be(e,t,r)),"normal"===i&&t in Qe&&(i=Qe[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),S.each(["height","width"],function(e,u){S.cssHooks[u]={get:function(e,t,n){if(t)return!Ve.test(S.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?Ze(e,u,n):We(e,Ye,function(){return Ze(e,u,n)})},set:function(e,t,n){var r,i=Ie(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===S.css(e,"boxSizing",!1,i),s=n?Ke(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-Ke(e,u,"border",!1,i)-.5)),s&&(r=te.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=S.css(e,u)),Je(0,t,s)}}}),S.cssHooks.marginLeft=$e(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Be(e,"marginLeft"))||e.getBoundingClientRect().left-We(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),S.each({margin:"",padding:"",border:"Width"},function(i,o){S.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+ne[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(S.cssHooks[i+o].set=Je)}),S.fn.extend({css:function(e,t){return $(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Ie(e),i=t.length;a<i;a++)o[t[a]]=S.css(e,t[a],!1,r);return o}return void 0!==n?S.style(e,t,n):S.css(e,t)},e,t,1<arguments.length)}}),((S.Tween=et).prototype={constructor:et,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||S.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(S.cssNumber[n]?"":"px")},cur:function(){var e=et.propHooks[this.prop];return e&&e.get?e.get(this):et.propHooks._default.get(this)},run:function(e){var t,n=et.propHooks[this.prop];return this.options.duration?this.pos=t=S.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):et.propHooks._default.set(this),this}}).init.prototype=et.prototype,(et.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=S.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){S.fx.step[e.prop]?S.fx.step[e.prop](e):1!==e.elem.nodeType||!S.cssHooks[e.prop]&&null==e.elem.style[Xe(e.prop)]?e.elem[e.prop]=e.now:S.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=et.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},S.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},S.fx=et.prototype.init,S.fx.step={};var tt,nt,rt,it,ot=/^(?:toggle|show|hide)$/,at=/queueHooks$/;function st(){nt&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(st):C.setTimeout(st,S.fx.interval),S.fx.tick())}function ut(){return C.setTimeout(function(){tt=void 0}),tt=Date.now()}function lt(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=ne[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function ct(e,t,n){for(var r,i=(ft.tweeners[t]||[]).concat(ft.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function ft(o,e,t){var n,a,r=0,i=ft.prefilters.length,s=S.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=tt||ut(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:S.extend({},e),opts:S.extend(!0,{specialEasing:{},easing:S.easing._default},t),originalProperties:e,originalOptions:t,startTime:tt||ut(),duration:t.duration,tweens:[],createTween:function(e,t){var n=S.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=X(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=S.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=ft.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(S._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return S.map(c,ct,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),S.fx.timer(S.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}S.Animation=S.extend(ft,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return se(n.elem,e,te.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(P);for(var n,r=0,i=e.length;r<i;r++)n=e[r],ft.tweeners[n]=ft.tweeners[n]||[],ft.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&ae(e),v=Y.get(e,"fxshow");for(r in n.queue||(null==(a=S._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,S.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],ot.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||S.style(e,r)}if((u=!S.isEmptyObject(t))||!S.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Y.get(e,"display")),"none"===(c=S.css(e,"display"))&&(l?c=l:(le([e],!0),l=e.style.display||l,c=S.css(e,"display"),le([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===S.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Y.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&le([e],!0),p.done(function(){for(r in g||le([e]),Y.remove(e,"fxshow"),d)S.style(e,r,d[r])})),u=ct(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?ft.prefilters.unshift(e):ft.prefilters.push(e)}}),S.speed=function(e,t,n){var r=e&&"object"==typeof e?S.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return S.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in S.fx.speeds?r.duration=S.fx.speeds[r.duration]:r.duration=S.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&S.dequeue(this,r.queue)},r},S.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ae).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=S.isEmptyObject(t),o=S.speed(e,n,r),a=function(){var e=ft(this,S.extend({},t),o);(i||Y.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=S.timers,r=Y.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&at.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||S.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Y.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=S.timers,o=n?n.length:0;for(t.finish=!0,S.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),S.each(["toggle","show","hide"],function(e,r){var i=S.fn[r];S.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(lt(r,!0),e,t,n)}}),S.each({slideDown:lt("show"),slideUp:lt("hide"),slideToggle:lt("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){S.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),S.timers=[],S.fx.tick=function(){var e,t=0,n=S.timers;for(tt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||S.fx.stop(),tt=void 0},S.fx.timer=function(e){S.timers.push(e),S.fx.start()},S.fx.interval=13,S.fx.start=function(){nt||(nt=!0,st())},S.fx.stop=function(){nt=null},S.fx.speeds={slow:600,fast:200,_default:400},S.fn.delay=function(r,e){return r=S.fx&&S.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},rt=E.createElement("input"),it=E.createElement("select").appendChild(E.createElement("option")),rt.type="checkbox",y.checkOn=""!==rt.value,y.optSelected=it.selected,(rt=E.createElement("input")).value="t",rt.type="radio",y.radioValue="t"===rt.value;var pt,dt=S.expr.attrHandle;S.fn.extend({attr:function(e,t){return $(this,S.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){S.removeAttr(this,e)})}}),S.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?S.prop(e,t,n):(1===o&&S.isXMLDoc(e)||(i=S.attrHooks[t.toLowerCase()]||(S.expr.match.bool.test(t)?pt:void 0)),void 0!==n?null===n?void S.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=S.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(P);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),pt={set:function(e,t,n){return!1===t?S.removeAttr(e,n):e.setAttribute(n,n),n}},S.each(S.expr.match.bool.source.match(/\w+/g),function(e,t){var a=dt[t]||S.find.attr;dt[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=dt[o],dt[o]=r,r=null!=a(e,t,n)?o:null,dt[o]=i),r}});var ht=/^(?:input|select|textarea|button)$/i,gt=/^(?:a|area)$/i;function vt(e){return(e.match(P)||[]).join(" ")}function yt(e){return e.getAttribute&&e.getAttribute("class")||""}function mt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(P)||[]}S.fn.extend({prop:function(e,t){return $(this,S.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[S.propFix[e]||e]})}}),S.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&S.isXMLDoc(e)||(t=S.propFix[t]||t,i=S.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=S.find.attr(e,"tabindex");return t?parseInt(t,10):ht.test(e.nodeName)||gt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(S.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),S.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){S.propFix[this.toLowerCase()]=this}),S.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).addClass(t.call(this,e,yt(this)))});if((e=mt(t)).length)while(n=this[u++])if(i=yt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).removeClass(t.call(this,e,yt(this)))});if(!arguments.length)return this.attr("class","");if((e=mt(t)).length)while(n=this[u++])if(i=yt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){S(this).toggleClass(i.call(this,e,yt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=S(this),r=mt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=yt(this))&&Y.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Y.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+vt(yt(n))+" ").indexOf(t))return!0;return!1}});var xt=/\r/g;S.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,S(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=S.map(t,function(e){return null==e?"":e+""})),(r=S.valHooks[this.type]||S.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=S.valHooks[t.type]||S.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(xt,""):null==e?"":e:void 0}}),S.extend({valHooks:{option:{get:function(e){var t=S.find.attr(e,"value");return null!=t?t:vt(S.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=S(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=S.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<S.inArray(S.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),S.each(["radio","checkbox"],function(){S.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<S.inArray(S(e).val(),t)}},y.checkOn||(S.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var bt=/^(?:focusinfocus|focusoutblur)$/,wt=function(e){e.stopPropagation()};S.extend(S.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!bt.test(d+S.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[S.expando]?e:new S.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:S.makeArray(t,[e]),c=S.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,bt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Y.get(o,"events")||Object.create(null))[e.type]&&Y.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&V(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!V(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),S.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,wt),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,wt),S.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=S.extend(new S.Event,n,{type:e,isSimulated:!0});S.event.trigger(r,null,t)}}),S.fn.extend({trigger:function(e,t){return this.each(function(){S.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return S.event.trigger(e,t,n,!0)}}),y.focusin||S.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){S.event.simulate(r,e.target,S.event.fix(e))};S.event.special[r]={setup:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r);t||e.addEventListener(n,i,!0),Y.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r)-1;t?Y.access(e,r,t):(e.removeEventListener(n,i,!0),Y.remove(e,r))}}});var Tt=C.location,Ct={guid:Date.now()},Et=/\?/;S.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||S.error("Invalid XML: "+e),t};var St=/\[\]$/,kt=/\r?\n/g,At=/^(?:submit|button|image|reset|file)$/i,Nt=/^(?:input|select|textarea|keygen)/i;function Dt(n,e,r,i){var t;if(Array.isArray(e))S.each(e,function(e,t){r||St.test(n)?i(n,t):Dt(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)Dt(n+"["+t+"]",e[t],r,i)}S.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!S.isPlainObject(e))S.each(e,function(){i(this.name,this.value)});else for(n in e)Dt(n,e[n],t,i);return r.join("&")},S.fn.extend({serialize:function(){return S.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=S.prop(this,"elements");return e?S.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!S(this).is(":disabled")&&Nt.test(this.nodeName)&&!At.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=S(this).val();return null==n?null:Array.isArray(n)?S.map(n,function(e){return{name:t.name,value:e.replace(kt,"\r\n")}}):{name:t.name,value:n.replace(kt,"\r\n")}}).get()}});var jt=/%20/g,qt=/#.*$/,Lt=/([?&])_=[^&]*/,Ht=/^(.*?):[ \t]*([^\r\n]*)$/gm,Ot=/^(?:GET|HEAD)$/,Pt=/^\/\//,Rt={},Mt={},It="*/".concat("*"),Wt=E.createElement("a");function Ft(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(P)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function Bt(t,i,o,a){var s={},u=t===Mt;function l(e){var r;return s[e]=!0,S.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function $t(e,t){var n,r,i=S.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&S.extend(!0,e,r),e}Wt.href=Tt.href,S.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Tt.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Tt.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":It,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":S.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?$t($t(e,S.ajaxSettings),t):$t(S.ajaxSettings,e)},ajaxPrefilter:Ft(Rt),ajaxTransport:Ft(Mt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=S.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?S(y):S.event,x=S.Deferred(),b=S.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=Ht.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||Tt.href)+"").replace(Pt,Tt.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(P)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Wt.protocol+"//"+Wt.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=S.param(v.data,v.traditional)),Bt(Rt,v,t,T),h)return T;for(i in(g=S.event&&v.global)&&0==S.active++&&S.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Ot.test(v.type),f=v.url.replace(qt,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(jt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(Et.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Lt,"$1"),o=(Et.test(f)?"&":"?")+"_="+Ct.guid+++o),v.url=f+o),v.ifModified&&(S.lastModified[f]&&T.setRequestHeader("If-Modified-Since",S.lastModified[f]),S.etag[f]&&T.setRequestHeader("If-None-Match",S.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+It+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=Bt(Mt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),!i&&-1<S.inArray("script",v.dataTypes)&&(v.converters["text script"]=function(){}),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(S.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(S.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--S.active||S.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return S.get(e,t,n,"json")},getScript:function(e,t){return S.get(e,void 0,t,"script")}}),S.each(["get","post"],function(e,i){S[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),S.ajax(S.extend({url:e,type:i,dataType:r,data:t,success:n},S.isPlainObject(e)&&e))}}),S.ajaxPrefilter(function(e){var t;for(t in e.headers)"content-type"===t.toLowerCase()&&(e.contentType=e.headers[t]||"")}),S._evalUrl=function(e,t,n){return S.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){S.globalEval(e,t,n)}})},S.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=S(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){S(this).wrapInner(n.call(this,e))}):this.each(function(){var e=S(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){S(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){S(this).replaceWith(this.childNodes)}),this}}),S.expr.pseudos.hidden=function(e){return!S.expr.pseudos.visible(e)},S.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},S.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var _t={0:200,1223:204},zt=S.ajaxSettings.xhr();y.cors=!!zt&&"withCredentials"in zt,y.ajax=zt=!!zt,S.ajaxTransport(function(i){var o,a;if(y.cors||zt&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(_t[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),S.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),S.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return S.globalEval(e),e}}}),S.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),S.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=S("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=vt(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&S.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?S("<div>").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}});var Gt=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;S.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||S.guid++,i},S.holdReady=function(e){e?S.readyWait++:S.ready(!0)},S.isArray=Array.isArray,S.parseJSON=JSON.parse,S.nodeName=A,S.isFunction=m,S.isWindow=x,S.camelCase=X,S.type=w,S.now=Date.now,S.isNumeric=function(e){var t=S.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},S.trim=function(e){return null==e?"":(e+"").replace(Gt,"")},"function"==typeof define&&define.amd&&define("jquery",[],function(){return S});var Yt=C.jQuery,Qt=C.$;return S.noConflict=function(e){return C.$===S&&(C.$=Qt),e&&C.jQuery===S&&(C.jQuery=Yt),S},"undefined"==typeof e&&(C.jQuery=C.$=S),S});
1+/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */
2+!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}k.fn=k.prototype={jquery:f,constructor:k,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=k.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return k.each(this,e)},map:function(n){return this.pushStack(k.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},k.extend=k.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(k.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||k.isPlainObject(n)?n:{},i=!1,a[t]=k.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},k.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t){b(e,{nonce:t&&t.nonce})},each:function(e,t){var n,r=0;if(d(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(p,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(d(Object(e))?k.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(d(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g.apply([],a)},guid:1,support:y}),"function"==typeof Symbol&&(k.fn[Symbol.iterator]=t[Symbol.iterator]),k.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var h=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,k="sizzle"+1*new Date,m=n.document,S=0,r=0,p=ue(),x=ue(),N=ue(),A=ue(),D=function(e,t){return e===t&&(l=!0),0},j={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",$=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",F=new RegExp(M+"+","g"),B=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="<a id='"+k+"'></a><select id='"+k+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!==C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!==C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&j.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(D),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(F," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[S,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[S,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[k]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace(B,"$1"));return s[k]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[S,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[k]||(e[k]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===S&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[k]&&(v=Ce(v)),y&&!y[k]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[k]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(B,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace(B," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=N[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[k]?i.push(a):o.push(a);(a=N(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=S+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t===C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument===C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(S=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(S=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=k.split("").sort(D).join("")===k,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);k.find=h,k.expr=h.selectors,k.expr[":"]=k.expr.pseudos,k.uniqueSort=k.unique=h.uniqueSort,k.text=h.getText,k.isXMLDoc=h.isXML,k.contains=h.contains,k.escapeSelector=h.escape;var T=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&k(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},N=k.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var D=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1<i.call(n,e)!==r}):k.filter(n,e,r)}k.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?k.find.matchesSelector(r,e)?[r]:[]:k.find.matches(e,k.grep(t,function(e){return 1===e.nodeType}))},k.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(k(e).filter(function(){for(t=0;t<r;t++)if(k.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)k.find(e,i[t],n);return 1<r?k.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&N.test(e)?k(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(k.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&k(e);if(!N.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&k.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?k.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(k(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(k.uniqueSort(k.merge(this.get(),k(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),k.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return T(e,"parentNode")},parentsUntil:function(e,t,n){return T(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return T(e,"nextSibling")},prevAll:function(e){return T(e,"previousSibling")},nextUntil:function(e,t,n){return T(e,"nextSibling",n)},prevUntil:function(e,t,n){return T(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return"undefined"!=typeof e.contentDocument?e.contentDocument:(A(e,"template")&&(e=e.content||e),k.merge([],e.childNodes))}},function(r,i){k.fn[r]=function(e,t){var n=k.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=k.filter(t,n)),1<this.length&&(O[r]||k.uniqueSort(n),H.test(r)&&n.reverse()),this.pushStack(n)}});var R=/[^\x20\t\r\n\f]+/g;function M(e){return e}function I(e){throw e}function W(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}k.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},k.each(e.match(R)||[],function(e,t){n[t]=!0}),n):k.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){k.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return k.each(arguments,function(e,t){var n;while(-1<(n=k.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<k.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},k.extend({Deferred:function(e){var o=[["notify","progress",k.Callbacks("memory"),k.Callbacks("memory"),2],["resolve","done",k.Callbacks("once memory"),k.Callbacks("once memory"),0,"resolved"],["reject","fail",k.Callbacks("once memory"),k.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return k.Deferred(function(r){k.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,M,s),l(u,o,I,s)):(u++,t.call(e,l(u,o,M,s),l(u,o,I,s),l(u,o,M,o.notifyWith))):(a!==M&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){k.Deferred.exceptionHook&&k.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==I&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(k.Deferred.getStackHook&&(t.stackTrace=k.Deferred.getStackHook()),C.setTimeout(t))}}return k.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:M,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:M)),o[2][3].add(l(0,e,m(n)?n:I))}).promise()},promise:function(e){return null!=e?k.extend(e,a):a}},s={};return k.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=k.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(W(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)W(i[t],a(t),o.reject);return o.promise()}});var $=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;k.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&$.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},k.readyException=function(e){C.setTimeout(function(){throw e})};var F=k.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),k.ready()}k.fn.ready=function(e){return F.then(e)["catch"](function(e){k.readyException(e)}),this},k.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--k.readyWait:k.isReady)||(k.isReady=!0)!==e&&0<--k.readyWait||F.resolveWith(E,[k])}}),k.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(k.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var _=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)_(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(k(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},z=/^-ms-/,U=/-([a-z])/g;function X(e,t){return t.toUpperCase()}function V(e){return e.replace(z,"ms-").replace(U,X)}var G=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Y(){this.expando=k.expando+Y.uid++}Y.uid=1,Y.prototype={cache:function(e){var t=e[this.expando];return t||(t={},G(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[V(t)]=n;else for(r in t)i[V(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][V(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(V):(t=V(t))in r?[t]:t.match(R)||[]).length;while(n--)delete r[t[n]]}(void 0===t||k.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!k.isEmptyObject(t)}};var Q=new Y,J=new Y,K=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Z=/[A-Z]/g;function ee(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(Z,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:K.test(i)?JSON.parse(i):i)}catch(e){}J.set(e,t,n)}else n=void 0;return n}k.extend({hasData:function(e){return J.hasData(e)||Q.hasData(e)},data:function(e,t,n){return J.access(e,t,n)},removeData:function(e,t){J.remove(e,t)},_data:function(e,t,n){return Q.access(e,t,n)},_removeData:function(e,t){Q.remove(e,t)}}),k.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=J.get(o),1===o.nodeType&&!Q.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=V(r.slice(5)),ee(o,r,i[r]));Q.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){J.set(this,n)}):_(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=J.get(o,n))?t:void 0!==(t=ee(o,n))?t:void 0;this.each(function(){J.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){J.remove(this,e)})}}),k.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Q.get(e,t),n&&(!r||Array.isArray(n)?r=Q.access(e,t,k.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=k.queue(e,t),r=n.length,i=n.shift(),o=k._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){k.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Q.get(e,n)||Q.access(e,n,{empty:k.Callbacks("once memory").add(function(){Q.remove(e,[t+"queue",n])})})}}),k.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?k.queue(this[0],t):void 0===n?this:this.each(function(){var e=k.queue(this,t,n);k._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&k.dequeue(this,t)})},dequeue:function(e){return this.each(function(){k.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=k.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Q.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var te=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ne=new RegExp("^(?:([+-])=|)("+te+")([a-z%]*)$","i"),re=["Top","Right","Bottom","Left"],ie=E.documentElement,oe=function(e){return k.contains(e.ownerDocument,e)},ae={composed:!0};ie.getRootNode&&(oe=function(e){return k.contains(e.ownerDocument,e)||e.getRootNode(ae)===e.ownerDocument});var se=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&oe(e)&&"none"===k.css(e,"display")},ue=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];for(o in i=n.apply(e,r||[]),t)e.style[o]=a[o];return i};function le(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return k.css(e,t,"")},u=s(),l=n&&n[3]||(k.cssNumber[t]?"":"px"),c=e.nodeType&&(k.cssNumber[t]||"px"!==l&&+u)&&ne.exec(k.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)k.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,k.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ce={};function fe(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Q.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&se(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ce[s])||(o=a.body.appendChild(a.createElement(s)),u=k.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ce[s]=u)))):"none"!==n&&(l[c]="none",Q.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}k.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){se(this)?k(this).show():k(this).hide()})}});var pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Q.set(e[n],"globalEval",!t||Q.get(t[n],"globalEval"))}ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;var me,xe,be=/<|&#?\w+;/;function we(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))k.merge(p,o.nodeType?[o]:o);else if(be.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+k.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;k.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<k.inArray(o,r))i&&i.push(o);else if(l=oe(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}me=E.createDocumentFragment().appendChild(E.createElement("div")),(xe=E.createElement("input")).setAttribute("type","radio"),xe.setAttribute("checked","checked"),xe.setAttribute("name","t"),me.appendChild(xe),y.checkClone=me.cloneNode(!0).cloneNode(!0).lastChild.checked,me.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t<arguments.length;t++)u[t]=arguments[t];if(s.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,s)){a=k.event.handlers.call(this,s,l),t=0;while((i=a[t++])&&!s.isPropagationStopped()){s.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!s.isImmediatePropagationStopped())s.rnamespace&&!1!==o.namespace&&!s.rnamespace.test(o.namespace)||(s.handleObj=o,s.data=o.data,void 0!==(r=((k.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,u))&&!1===(s.result=r)&&(s.preventDefault(),s.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,s),s.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<k(i,this).index(l):k.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(k.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[k.expando]?e:new k.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click",ke),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Q.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},k.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},k.Event=function(e,t){if(!(this instanceof k.Event))return new k.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?ke:Se,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&k.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[k.expando]=!0},k.Event.prototype={constructor:k.Event,isDefaultPrevented:Se,isPropagationStopped:Se,isImmediatePropagationStopped:Se,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=ke,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=ke,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=ke,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},k.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&Te.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Ce.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},k.event.addProp),k.each({focus:"focusin",blur:"focusout"},function(e,t){k.event.special[e]={setup:function(){return De(this,e,Ne),!1},trigger:function(){return De(this,e),!0},delegateType:t}}),k.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){k.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||k.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),k.fn.extend({on:function(e,t,n,r){return Ae(this,e,t,n,r)},one:function(e,t,n,r){return Ae(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,k(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Se),this.each(function(){k.event.remove(this,e,n,t)})}});var je=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/<script|<style|<link/i,Le=/checked\s*(?:[^=]|=\s*.checked.)/i,He=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n<r;n++)k.event.add(t,i,l[i][n]);J.hasData(e)&&(s=J.access(e),u=k.extend({},s),J.set(t,u))}}function Ie(n,r,i,o){r=g.apply([],r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&Le.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),Ie(t,r,i,o)});if(f&&(t=(e=we(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=k.map(ve(e,"script"),Pe)).length;c<f;c++)u=e,c!==p&&(u=k.clone(u,!0,!0),s&&k.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,k.map(a,Re),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Q.access(u,"globalEval")&&k.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?k._evalUrl&&!u.noModule&&k._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")}):b(u.textContent.replace(He,""),u,l))}return n}function We(e,t,n){for(var r,i=t?k.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||k.cleanData(ve(r)),r.parentNode&&(n&&oe(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}k.extend({htmlPrefilter:function(e){return e.replace(je,"<$1></$2>")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Me(o[r],a[r]);else Me(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=k.event.special,o=0;void 0!==(n=e[o]);o++)if(G(n)){if(t=n[Q.expando]){if(t.events)for(r in t.events)i[r]?k.event.remove(n,r):k.removeEvent(n,r,t.handle);n[Q.expando]=void 0}n[J.expando]&&(n[J.expando]=void 0)}}}),k.fn.extend({detach:function(e){return We(this,e,!0)},remove:function(e){return We(this,e)},text:function(e){return _(this,function(e){return void 0===e?k.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Ie(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Oe(this,e).appendChild(e)})},prepend:function(){return Ie(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Oe(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(k.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return k.clone(this,e,t)})},html:function(e){return _(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!qe.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=k.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(k.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return Ie(this,arguments,function(e){var t=this.parentNode;k.inArray(this,n)<0&&(k.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),k.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){k.fn[e]=function(e){for(var t,n=[],r=k(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),k(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var $e=new RegExp("^("+te+")(?!px)[a-z%]+$","i"),Fe=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Be=new RegExp(re.join("|"),"i");function _e(e,t,n){var r,i,o,a,s=e.style;return(n=n||Fe(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||oe(e)||(a=k.style(e,t)),!y.pixelBoxStyles()&&$e.test(a)&&Be.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function ze(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(u){s.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",u.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",ie.appendChild(s).appendChild(u);var e=C.getComputedStyle(u);n="1%"!==e.top,a=12===t(e.marginLeft),u.style.right="60%",o=36===t(e.right),r=36===t(e.width),u.style.position="absolute",i=12===t(u.offsetWidth/3),ie.removeChild(s),u=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s=E.createElement("div"),u=E.createElement("div");u.style&&(u.style.backgroundClip="content-box",u.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===u.style.backgroundClip,k.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),a},scrollboxSize:function(){return e(),i}}))}();var Ue=["Webkit","Moz","ms"],Xe=E.createElement("div").style,Ve={};function Ge(e){var t=k.cssProps[e]||Ve[e];return t||(e in Xe?e:Ve[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Ue.length;while(n--)if((e=Ue[n]+t)in Xe)return e}(e)||e)}var Ye=/^(none|table(?!-c[ea]).+)/,Qe=/^--/,Je={position:"absolute",visibility:"hidden",display:"block"},Ke={letterSpacing:"0",fontWeight:"400"};function Ze(e,t,n){var r=ne.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function et(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=k.css(e,n+re[a],!0,i)),r?("content"===n&&(u-=k.css(e,"padding"+re[a],!0,i)),"margin"!==n&&(u-=k.css(e,"border"+re[a]+"Width",!0,i))):(u+=k.css(e,"padding"+re[a],!0,i),"padding"!==n?u+=k.css(e,"border"+re[a]+"Width",!0,i):s+=k.css(e,"border"+re[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function tt(e,t,n){var r=Fe(e),i=(!y.boxSizingReliable()||n)&&"border-box"===k.css(e,"boxSizing",!1,r),o=i,a=_e(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if($e.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||"auto"===a||!parseFloat(a)&&"inline"===k.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===k.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+et(e,t,n||(i?"border":"content"),o,r,a)+"px"}function nt(e,t,n,r,i){return new nt.prototype.init(e,t,n,r,i)}k.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=_e(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=V(t),u=Qe.test(t),l=e.style;if(u||(t=Ge(s)),a=k.cssHooks[t]||k.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=ne.exec(n))&&i[1]&&(n=le(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(k.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=V(t);return Qe.test(t)||(t=Ge(s)),(a=k.cssHooks[t]||k.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=_e(e,t,r)),"normal"===i&&t in Ke&&(i=Ke[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),k.each(["height","width"],function(e,u){k.cssHooks[u]={get:function(e,t,n){if(t)return!Ye.test(k.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?tt(e,u,n):ue(e,Je,function(){return tt(e,u,n)})},set:function(e,t,n){var r,i=Fe(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===k.css(e,"boxSizing",!1,i),s=n?et(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-et(e,u,"border",!1,i)-.5)),s&&(r=ne.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=k.css(e,u)),Ze(0,t,s)}}}),k.cssHooks.marginLeft=ze(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(_e(e,"marginLeft"))||e.getBoundingClientRect().left-ue(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),k.each({margin:"",padding:"",border:"Width"},function(i,o){k.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+re[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(k.cssHooks[i+o].set=Ze)}),k.fn.extend({css:function(e,t){return _(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Fe(e),i=t.length;a<i;a++)o[t[a]]=k.css(e,t[a],!1,r);return o}return void 0!==n?k.style(e,t,n):k.css(e,t)},e,t,1<arguments.length)}}),((k.Tween=nt).prototype={constructor:nt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||k.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(k.cssNumber[n]?"":"px")},cur:function(){var e=nt.propHooks[this.prop];return e&&e.get?e.get(this):nt.propHooks._default.get(this)},run:function(e){var t,n=nt.propHooks[this.prop];return this.options.duration?this.pos=t=k.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):nt.propHooks._default.set(this),this}}).init.prototype=nt.prototype,(nt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=k.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){k.fx.step[e.prop]?k.fx.step[e.prop](e):1!==e.elem.nodeType||!k.cssHooks[e.prop]&&null==e.elem.style[Ge(e.prop)]?e.elem[e.prop]=e.now:k.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=nt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},k.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},k.fx=nt.prototype.init,k.fx.step={};var rt,it,ot,at,st=/^(?:toggle|show|hide)$/,ut=/queueHooks$/;function lt(){it&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(lt):C.setTimeout(lt,k.fx.interval),k.fx.tick())}function ct(){return C.setTimeout(function(){rt=void 0}),rt=Date.now()}function ft(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=re[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function pt(e,t,n){for(var r,i=(dt.tweeners[t]||[]).concat(dt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function dt(o,e,t){var n,a,r=0,i=dt.prefilters.length,s=k.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=rt||ct(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:k.extend({},e),opts:k.extend(!0,{specialEasing:{},easing:k.easing._default},t),originalProperties:e,originalOptions:t,startTime:rt||ct(),duration:t.duration,tweens:[],createTween:function(e,t){var n=k.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=V(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=k.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=dt.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(k._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return k.map(c,pt,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),k.fx.timer(k.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}k.Animation=k.extend(dt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return le(n.elem,e,ne.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(R);for(var n,r=0,i=e.length;r<i;r++)n=e[r],dt.tweeners[n]=dt.tweeners[n]||[],dt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&se(e),v=Q.get(e,"fxshow");for(r in n.queue||(null==(a=k._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,k.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],st.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||k.style(e,r)}if((u=!k.isEmptyObject(t))||!k.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Q.get(e,"display")),"none"===(c=k.css(e,"display"))&&(l?c=l:(fe([e],!0),l=e.style.display||l,c=k.css(e,"display"),fe([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===k.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Q.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&fe([e],!0),p.done(function(){for(r in g||fe([e]),Q.remove(e,"fxshow"),d)k.style(e,r,d[r])})),u=pt(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?dt.prefilters.unshift(e):dt.prefilters.push(e)}}),k.speed=function(e,t,n){var r=e&&"object"==typeof e?k.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return k.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in k.fx.speeds?r.duration=k.fx.speeds[r.duration]:r.duration=k.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&k.dequeue(this,r.queue)},r},k.fn.extend({fadeTo:function(e,t,n,r){return this.filter(se).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=k.isEmptyObject(t),o=k.speed(e,n,r),a=function(){var e=dt(this,k.extend({},t),o);(i||Q.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&!1!==i&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=k.timers,r=Q.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&ut.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||k.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Q.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=k.timers,o=n?n.length:0;for(t.finish=!0,k.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),k.each(["toggle","show","hide"],function(e,r){var i=k.fn[r];k.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(ft(r,!0),e,t,n)}}),k.each({slideDown:ft("show"),slideUp:ft("hide"),slideToggle:ft("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){k.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),k.timers=[],k.fx.tick=function(){var e,t=0,n=k.timers;for(rt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||k.fx.stop(),rt=void 0},k.fx.timer=function(e){k.timers.push(e),k.fx.start()},k.fx.interval=13,k.fx.start=function(){it||(it=!0,lt())},k.fx.stop=function(){it=null},k.fx.speeds={slow:600,fast:200,_default:400},k.fn.delay=function(r,e){return r=k.fx&&k.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},ot=E.createElement("input"),at=E.createElement("select").appendChild(E.createElement("option")),ot.type="checkbox",y.checkOn=""!==ot.value,y.optSelected=at.selected,(ot=E.createElement("input")).value="t",ot.type="radio",y.radioValue="t"===ot.value;var ht,gt=k.expr.attrHandle;k.fn.extend({attr:function(e,t){return _(this,k.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){k.removeAttr(this,e)})}}),k.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?k.prop(e,t,n):(1===o&&k.isXMLDoc(e)||(i=k.attrHooks[t.toLowerCase()]||(k.expr.match.bool.test(t)?ht:void 0)),void 0!==n?null===n?void k.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=k.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(R);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),ht={set:function(e,t,n){return!1===t?k.removeAttr(e,n):e.setAttribute(n,n),n}},k.each(k.expr.match.bool.source.match(/\w+/g),function(e,t){var a=gt[t]||k.find.attr;gt[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=gt[o],gt[o]=r,r=null!=a(e,t,n)?o:null,gt[o]=i),r}});var vt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;function mt(e){return(e.match(R)||[]).join(" ")}function xt(e){return e.getAttribute&&e.getAttribute("class")||""}function bt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(R)||[]}k.fn.extend({prop:function(e,t){return _(this,k.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[k.propFix[e]||e]})}}),k.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&k.isXMLDoc(e)||(t=k.propFix[t]||t,i=k.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=k.find.attr(e,"tabindex");return t?parseInt(t,10):vt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(k.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),k.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){k.propFix[this.toLowerCase()]=this}),k.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).addClass(t.call(this,e,xt(this)))});if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).removeClass(t.call(this,e,xt(this)))});if(!arguments.length)return this.attr("class","");if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){k(this).toggleClass(i.call(this,e,xt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=k(this),r=bt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=xt(this))&&Q.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Q.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+mt(xt(n))+" ").indexOf(t))return!0;return!1}});var wt=/\r/g;k.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,k(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=k.map(t,function(e){return null==e?"":e+""})),(r=k.valHooks[this.type]||k.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=k.valHooks[t.type]||k.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(wt,""):null==e?"":e:void 0}}),k.extend({valHooks:{option:{get:function(e){var t=k.find.attr(e,"value");return null!=t?t:mt(k.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=k(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=k.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<k.inArray(k.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),k.each(["radio","checkbox"],function(){k.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<k.inArray(k(e).val(),t)}},y.checkOn||(k.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var Tt=/^(?:focusinfocus|focusoutblur)$/,Ct=function(e){e.stopPropagation()};k.extend(k.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!Tt.test(d+k.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[k.expando]?e:new k.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:k.makeArray(t,[e]),c=k.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,Tt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Q.get(o,"events")||{})[e.type]&&Q.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&G(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!G(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),k.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,Ct),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,Ct),k.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=k.extend(new k.Event,n,{type:e,isSimulated:!0});k.event.trigger(r,null,t)}}),k.fn.extend({trigger:function(e,t){return this.each(function(){k.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return k.event.trigger(e,t,n,!0)}}),y.focusin||k.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){k.event.simulate(r,e.target,k.event.fix(e))};k.event.special[r]={setup:function(){var e=this.ownerDocument||this,t=Q.access(e,r);t||e.addEventListener(n,i,!0),Q.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this,t=Q.access(e,r)-1;t?Q.access(e,r,t):(e.removeEventListener(n,i,!0),Q.remove(e,r))}}});var Et=C.location,kt=Date.now(),St=/\?/;k.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||k.error("Invalid XML: "+e),t};var Nt=/\[\]$/,At=/\r?\n/g,Dt=/^(?:submit|button|image|reset|file)$/i,jt=/^(?:input|select|textarea|keygen)/i;function qt(n,e,r,i){var t;if(Array.isArray(e))k.each(e,function(e,t){r||Nt.test(n)?i(n,t):qt(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)qt(n+"["+t+"]",e[t],r,i)}k.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!k.isPlainObject(e))k.each(e,function(){i(this.name,this.value)});else for(n in e)qt(n,e[n],t,i);return r.join("&")},k.fn.extend({serialize:function(){return k.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=k.prop(this,"elements");return e?k.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!k(this).is(":disabled")&&jt.test(this.nodeName)&&!Dt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=k(this).val();return null==n?null:Array.isArray(n)?k.map(n,function(e){return{name:t.name,value:e.replace(At,"\r\n")}}):{name:t.name,value:n.replace(At,"\r\n")}}).get()}});var Lt=/%20/g,Ht=/#.*$/,Ot=/([?&])_=[^&]*/,Pt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Rt=/^(?:GET|HEAD)$/,Mt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Ft=E.createElement("a");function Bt(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(R)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function _t(t,i,o,a){var s={},u=t===Wt;function l(e){var r;return s[e]=!0,k.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function zt(e,t){var n,r,i=k.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&k.extend(!0,e,r),e}Ft.href=Et.href,k.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Et.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Et.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":k.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,k.ajaxSettings),t):zt(k.ajaxSettings,e)},ajaxPrefilter:Bt(It),ajaxTransport:Bt(Wt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=k.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?k(y):k.event,x=k.Deferred(),b=k.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=Pt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||Et.href)+"").replace(Mt,Et.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(R)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Ft.protocol+"//"+Ft.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=k.param(v.data,v.traditional)),_t(It,v,t,T),h)return T;for(i in(g=k.event&&v.global)&&0==k.active++&&k.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Rt.test(v.type),f=v.url.replace(Ht,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Lt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(St.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Ot,"$1"),o=(St.test(f)?"&":"?")+"_="+kt+++o),v.url=f+o),v.ifModified&&(k.lastModified[f]&&T.setRequestHeader("If-Modified-Since",k.lastModified[f]),k.etag[f]&&T.setRequestHeader("If-None-Match",k.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+$t+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=_t(Wt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(k.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(k.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--k.active||k.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return k.get(e,t,n,"json")},getScript:function(e,t){return k.get(e,void 0,t,"script")}}),k.each(["get","post"],function(e,i){k[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),k.ajax(k.extend({url:e,type:i,dataType:r,data:t,success:n},k.isPlainObject(e)&&e))}}),k._evalUrl=function(e,t){return k.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){k.globalEval(e,t)}})},k.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=k(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){k(this).wrapInner(n.call(this,e))}):this.each(function(){var e=k(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){k(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){k(this).replaceWith(this.childNodes)}),this}}),k.expr.pseudos.hidden=function(e){return!k.expr.pseudos.visible(e)},k.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},k.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var Ut={0:200,1223:204},Xt=k.ajaxSettings.xhr();y.cors=!!Xt&&"withCredentials"in Xt,y.ajax=Xt=!!Xt,k.ajaxTransport(function(i){var o,a;if(y.cors||Xt&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Ut[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),k.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),k.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return k.globalEval(e),e}}}),k.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),k.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=k("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=mt(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&k.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?k("<div>").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}}),k.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),k.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),k.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||k.guid++,i},k.holdReady=function(e){e?k.readyWait++:k.ready(!0)},k.isArray=Array.isArray,k.parseJSON=JSON.parse,k.nodeName=A,k.isFunction=m,k.isWindow=x,k.camelCase=V,k.type=w,k.now=Date.now,k.isNumeric=function(e){var t=k.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return k});var Qt=C.jQuery,Jt=C.$;return k.noConflict=function(e){return C.$===k&&(C.$=Jt),e&&C.jQuery===k&&(C.jQuery=Qt),k},e||(C.jQuery=C.$=k),k});
admin/api.html+2−5
@@ -4,7 +4,6 @@
44<html>
55 <head>
66 <meta charset="utf-8" />
7− <meta name="viewport" content="width=device-width, initial-scale=1.0">
87 <meta name="viewport" content="width=device-width, initial-scale=1">
98 <title>Administration API &#8212; Searx Documentation (Searx-0.17.0.tex)</title>
109 <link rel="stylesheet" href="../_static/searx.css" type="text/css" />
@@ -34,8 +33,7 @@
3433 <a href="settings.html" title="settings.yml"
3534 accesskey="P">previous</a> |</li>
3635 <li class="nav-item nav-item-0"><a href="../index.html">Searx Documentation (Searx-0.17.0.tex)</a> &#187;</li>
37− <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Administrator documentation</a> &#187;</li>
38− <li class="nav-item nav-item-this"><a href="">Administration API</a></li>
36+ <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Administrator documentation</a> &#187;</li>
3937 </ul>
4038 </div>
4139
@@ -135,7 +133,6 @@ HTML of the site. URL of the searx instance and values are customizable.</p>
135133</div>
136134
137135
138− <div class="clearer"></div>
139136 </div>
140137 </div>
141138 </div>
@@ -187,7 +184,7 @@ HTML of the site. URL of the searx instance and values are customizable.</p>
187184
188185 <div class="footer" role="contentinfo">
189186 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
190− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.1.2.
187+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.0.1.
191188 </div>
192189 <script src="../_static/version_warning_offset.js"></script>
193190
admin/architecture.html+2−5
@@ -4,7 +4,6 @@
44<html>
55 <head>
66 <meta charset="utf-8" />
7− <meta name="viewport" content="width=device-width, initial-scale=1.0">
87 <meta name="viewport" content="width=device-width, initial-scale=1">
98 <title>Architecture &#8212; Searx Documentation (Searx-0.17.0.tex)</title>
109 <link rel="stylesheet" href="../_static/searx.css" type="text/css" />
@@ -34,8 +33,7 @@
3433 <a href="api.html" title="Administration API"
3534 accesskey="P">previous</a> |</li>
3635 <li class="nav-item nav-item-0"><a href="../index.html">Searx Documentation (Searx-0.17.0.tex)</a> &#187;</li>
37− <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Administrator documentation</a> &#187;</li>
38− <li class="nav-item nav-item-this"><a href="">Architecture</a></li>
36+ <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Administrator documentation</a> &#187;</li>
3937 </ul>
4038 </div>
4139
@@ -67,7 +65,6 @@ maintained by the scripts from our <a class="reference internal" href="../utils/
6765</div>
6866
6967
70− <div class="clearer"></div>
7168 </div>
7269 </div>
7370 </div>
@@ -119,7 +116,7 @@ maintained by the scripts from our <a class="reference internal" href="../utils/
119116
120117 <div class="footer" role="contentinfo">
121118 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
122− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.1.2.
119+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.0.1.
123120 </div>
124121 <script src="../_static/version_warning_offset.js"></script>
125122
admin/buildhosts.html+2−94
@@ -4,7 +4,6 @@
44<html>
55 <head>
66 <meta charset="utf-8" />
7− <meta name="viewport" content="width=device-width, initial-scale=1.0">
87 <meta name="viewport" content="width=device-width, initial-scale=1">
98 <title>Buildhosts &#8212; Searx Documentation (Searx-0.17.0.tex)</title>
109 <link rel="stylesheet" href="../_static/searx.css" type="text/css" />
@@ -40,8 +39,7 @@
4039 <a href="plugins.html" title="Plugins builtin"
4140 accesskey="P">previous</a> |</li>
4241 <li class="nav-item nav-item-0"><a href="../index.html">Searx Documentation (Searx-0.17.0.tex)</a> &#187;</li>
43− <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Administrator documentation</a> &#187;</li>
44− <li class="nav-item nav-item-this"><a href="">Buildhosts</a></li>
42+ <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Administrator documentation</a> &#187;</li>
4543 </ul>
4644 </div>
4745
@@ -70,96 +68,7 @@ on build hosts (see <a class="reference internal" href="../utils/searx.sh.html#s
7068</pre></div>
7169</div>
7270<p>This will install packages needed by searx:</p>
73−<div class="sphinx-tabs docutils container">
74−<div class="ui top attached tabular menu sphinx-menu docutils container">
75−<div class="active item sphinx-data-tab-VWJ1bnR1IC8gZGViaWFu docutils container">
76−<div class="docutils container">
77−<p>Ubuntu / debian</p>
78−</div>
79−</div>
80−<div class="item sphinx-data-tab-QXJjaCBMaW51eA== docutils container">
81−<div class="docutils container">
82−<p>Arch Linux</p>
83−</div>
84−</div>
85−<div class="item sphinx-data-tab-RmVkb3JhIC8gUkhFTA== docutils container">
86−<div class="docutils container">
87−<p>Fedora / RHEL</p>
88−</div>
89−</div>
90−</div>
91−<div class="ui bottom attached sphinx-tab tab segment sphinx-data-tab-VWJ1bnR1IC8gZGViaWFu active docutils container">
92−<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>$ sudo -H apt-get install -y <span class="se">\</span>
93− virtualenv python3-dev python3-babel python3-venv <span class="se">\</span>
94− uwsgi uwsgi-plugin-python3 <span class="se">\</span>
95− git build-essential libxslt-dev zlib1g-dev libffi-dev libssl-dev <span class="se">\</span>
96− shellcheck
97−</pre></div>
98−</div>
99−</div>
100−<div class="ui bottom attached sphinx-tab tab segment sphinx-data-tab-QXJjaCBMaW51eA== docutils container">
101−<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>$ sudo -H pacman -S --noconfirm <span class="se">\</span>
102− python-virtualenv python python-pip python-lxml python-babel <span class="se">\</span>
103− uwsgi uwsgi-plugin-python <span class="se">\</span>
104− git base-devel libxml2 <span class="se">\</span>
105− shellcheck
106−</pre></div>
107−</div>
108−</div>
109−<div class="ui bottom attached sphinx-tab tab segment sphinx-data-tab-RmVkb3JhIC8gUkhFTA== docutils container">
110−<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>$ sudo -H dnf install -y <span class="se">\</span>
111− virtualenv python python-pip python-lxml python-babel <span class="se">\</span>
112− uwsgi uwsgi-plugin-python3 <span class="se">\</span>
113− git @development-tools libxml2 <span class="se">\</span>
114− ShellCheck
115−</pre></div>
116−</div>
117−</div>
118−</div>
11971<p>and packages needed to build docuemtation and run tests:</p>
120−<div class="sphinx-tabs docutils container">
121−<div class="ui top attached tabular menu sphinx-menu docutils container">
122−<div class="active item sphinx-data-tab-VWJ1bnR1IC8gZGViaWFu docutils container">
123−<div class="docutils container">
124−<p>Ubuntu / debian</p>
125−</div>
126−</div>
127−<div class="item sphinx-data-tab-QXJjaCBMaW51eA== docutils container">
128−<div class="docutils container">
129−<p>Arch Linux</p>
130−</div>
131−</div>
132−<div class="item sphinx-data-tab-RmVkb3JhIC8gUkhFTA== docutils container">
133−<div class="docutils container">
134−<p>Fedora / RHEL</p>
135−</div>
136−</div>
137−</div>
138−<div class="ui bottom attached sphinx-tab tab segment sphinx-data-tab-VWJ1bnR1IC8gZGViaWFu active docutils container">
139−<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>$ sudo -H apt-get install -y <span class="se">\</span>
140− firefox graphviz imagemagick texlive-xetex librsvg2-bin <span class="se">\</span>
141− texlive-latex-recommended texlive-extra-utils ttf-dejavu <span class="se">\</span>
142− latexmk
143−</pre></div>
144−</div>
145−</div>
146−<div class="ui bottom attached sphinx-tab tab segment sphinx-data-tab-QXJjaCBMaW51eA== docutils container">
147−<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>$ sudo -H pacman -S --noconfirm <span class="se">\</span>
148− firefox graphviz imagemagick texlive-bin extra/librsvg <span class="se">\</span>
149− texlive-core texlive-latexextra ttf-dejavu
150−</pre></div>
151−</div>
152−</div>
153−<div class="ui bottom attached sphinx-tab tab segment sphinx-data-tab-RmVkb3JhIC8gUkhFTA== docutils container">
154−<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>$ sudo -H dnf install -y <span class="se">\</span>
155− firefox graphviz graphviz-gd ImageMagick librsvg2-tools <span class="se">\</span>
156− texlive-xetex-bin texlive-collection-fontsrecommended <span class="se">\</span>
157− texlive-collection-latex dejavu-sans-fonts dejavu-serif-fonts <span class="se">\</span>
158− dejavu-sans-mono-fonts
159−</pre></div>
160−</div>
161−</div>
162−</div>
16372<div class="section" id="build-docs">
16473<span id="docs-build"></span><h2><a class="toc-backref" href="#id2">Build docs</a><a class="headerlink" href="#build-docs" title="Permalink to this headline">¶</a></h2>
16574<div class="sidebar">
@@ -308,7 +217,6 @@ output.</p>
308217</div>
309218
310219
311− <div class="clearer"></div>
312220 </div>
313221 </div>
314222 </div>
@@ -360,7 +268,7 @@ output.</p>
360268
361269 <div class="footer" role="contentinfo">
362270 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
363− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.1.2.
271+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.0.1.
364272 </div>
365273 <script src="../_static/version_warning_offset.js"></script>
366274
admin/engines.html+112−40
@@ -4,7 +4,6 @@
44<html>
55 <head>
66 <meta charset="utf-8" />
7− <meta name="viewport" content="width=device-width, initial-scale=1.0">
87 <meta name="viewport" content="width=device-width, initial-scale=1">
98 <title>Engines &#8212; Searx Documentation (Searx-0.17.0.tex)</title>
109 <link rel="stylesheet" href="../_static/searx.css" type="text/css" />
@@ -34,8 +33,7 @@
3433 <a href="morty.html" title="How to setup result proxy"
3534 accesskey="P">previous</a> |</li>
3635 <li class="nav-item nav-item-0"><a href="../index.html">Searx Documentation (Searx-0.17.0.tex)</a> &#187;</li>
37− <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Administrator documentation</a> &#187;</li>
38− <li class="nav-item nav-item-this"><a href="">Engines</a></li>
36+ <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Administrator documentation</a> &#187;</li>
3937 </ul>
4038 </div>
4139
@@ -652,7 +650,22 @@
652650<td></td>
653651<td><p>y</p></td>
654652</tr>
655−<tr class="row-even"><th class="stub"><p>google</p></th>
653+<tr class="row-even"><th class="stub"><p>codeberg</p></th>
654+<th class="stub"><p>!cb</p></th>
655+<td><p>json_engine</p></td>
656+<td><p>2.0</p></td>
657+<td><p>it</p></td>
658+<td></td>
659+<td><p>y</p></td>
660+<td></td>
661+<td><p>y</p></td>
662+<td></td>
663+<td></td>
664+<td><p>1</p></td>
665+<td><p>y</p></td>
666+<td><p>y</p></td>
667+</tr>
668+<tr class="row-odd"><th class="stub"><p>google</p></th>
656669<th class="stub"><p>!go</p></th>
657670<td><p>google</p></td>
658671<td><p>2.0</p></td>
@@ -667,7 +680,7 @@
667680<td></td>
668681<td><p>y</p></td>
669682</tr>
670−<tr class="row-odd"><th class="stub"><p>google images</p></th>
683+<tr class="row-even"><th class="stub"><p>google images</p></th>
671684<th class="stub"><p>!goi</p></th>
672685<td><p>google_images</p></td>
673686<td><p>2.0</p></td>
@@ -682,7 +695,7 @@
682695<td></td>
683696<td><p>y</p></td>
684697</tr>
685−<tr class="row-even"><th class="stub"><p>google news</p></th>
698+<tr class="row-odd"><th class="stub"><p>google news</p></th>
686699<th class="stub"><p>!gon</p></th>
687700<td><p>google_news</p></td>
688701<td><p>2.0</p></td>
@@ -697,7 +710,7 @@
697710<td></td>
698711<td><p>y</p></td>
699712</tr>
700−<tr class="row-odd"><th class="stub"><p>google videos</p></th>
713+<tr class="row-even"><th class="stub"><p>google videos</p></th>
701714<th class="stub"><p>!gov</p></th>
702715<td><p>google_videos</p></td>
703716<td><p>2.0</p></td>
@@ -712,7 +725,7 @@
712725<td></td>
713726<td><p>y</p></td>
714727</tr>
715−<tr class="row-even"><th class="stub"><p>google scholar</p></th>
728+<tr class="row-odd"><th class="stub"><p>google scholar</p></th>
716729<th class="stub"><p>!gos</p></th>
717730<td><p>xpath</p></td>
718731<td><p>2.0</p></td>
@@ -727,7 +740,7 @@
727740<td></td>
728741<td><p>y</p></td>
729742</tr>
730−<tr class="row-odd"><th class="stub"><p>google play apps</p></th>
743+<tr class="row-even"><th class="stub"><p>google play apps</p></th>
731744<th class="stub"><p>!gpa</p></th>
732745<td><p>xpath</p></td>
733746<td><p>2.0</p></td>
@@ -742,7 +755,7 @@
742755<td><p>y</p></td>
743756<td><p>y</p></td>
744757</tr>
745−<tr class="row-even"><th class="stub"><p>google play movies</p></th>
758+<tr class="row-odd"><th class="stub"><p>google play movies</p></th>
746759<th class="stub"><p>!gpm</p></th>
747760<td><p>xpath</p></td>
748761<td><p>2.0</p></td>
@@ -757,7 +770,7 @@
757770<td><p>y</p></td>
758771<td><p>y</p></td>
759772</tr>
760−<tr class="row-odd"><th class="stub"><p>google play music</p></th>
773+<tr class="row-even"><th class="stub"><p>google play music</p></th>
761774<th class="stub"><p>!gps</p></th>
762775<td><p>xpath</p></td>
763776<td><p>2.0</p></td>
@@ -772,7 +785,7 @@
772785<td><p>y</p></td>
773786<td><p>y</p></td>
774787</tr>
775−<tr class="row-even"><th class="stub"><p>geektimes</p></th>
788+<tr class="row-odd"><th class="stub"><p>geektimes</p></th>
776789<th class="stub"><p>!gt</p></th>
777790<td><p>xpath</p></td>
778791<td><p>4.0</p></td>
@@ -787,7 +800,7 @@
787800<td><p>y</p></td>
788801<td><p>y</p></td>
789802</tr>
790−<tr class="row-odd"><th class="stub"><p>habrahabr</p></th>
803+<tr class="row-even"><th class="stub"><p>habrahabr</p></th>
791804<th class="stub"><p>!habr</p></th>
792805<td><p>xpath</p></td>
793806<td><p>4.0</p></td>
@@ -802,7 +815,7 @@
802815<td><p>y</p></td>
803816<td><p>y</p></td>
804817</tr>
805−<tr class="row-even"><th class="stub"><p>hoogle</p></th>
818+<tr class="row-odd"><th class="stub"><p>hoogle</p></th>
806819<th class="stub"><p>!ho</p></th>
807820<td><p>json_engine</p></td>
808821<td><p>2.0</p></td>
@@ -817,7 +830,7 @@
817830<td></td>
818831<td><p>y</p></td>
819832</tr>
820−<tr class="row-odd"><th class="stub"><p>ina</p></th>
833+<tr class="row-even"><th class="stub"><p>ina</p></th>
821834<th class="stub"><p>!in</p></th>
822835<td><p>ina</p></td>
823836<td><p>6.0</p></td>
@@ -832,7 +845,7 @@
832845<td><p>y</p></td>
833846<td><p>y</p></td>
834847</tr>
835−<tr class="row-even"><th class="stub"><p>invidious</p></th>
848+<tr class="row-odd"><th class="stub"><p>invidious</p></th>
836849<th class="stub"><p>!iv</p></th>
837850<td><p>invidious</p></td>
838851<td><p>5.0</p></td>
@@ -847,7 +860,7 @@
847860<td></td>
848861<td><p>y</p></td>
849862</tr>
850−<tr class="row-odd"><th class="stub"><p>kickass</p></th>
863+<tr class="row-even"><th class="stub"><p>kickass</p></th>
851864<th class="stub"><p>!kc</p></th>
852865<td><p>kickass</p></td>
853866<td><p>4.0</p></td>
@@ -862,7 +875,7 @@
862875<td><p>y</p></td>
863876<td><p>y</p></td>
864877</tr>
865−<tr class="row-even"><th class="stub"><p>library genesis</p></th>
878+<tr class="row-odd"><th class="stub"><p>library genesis</p></th>
866879<th class="stub"><p>!lg</p></th>
867880<td><p>xpath</p></td>
868881<td><p>7.0</p></td>
@@ -877,7 +890,7 @@
877890<td><p>y</p></td>
878891<td><p>y</p></td>
879892</tr>
880−<tr class="row-odd"><th class="stub"><p>lobste.rs</p></th>
893+<tr class="row-even"><th class="stub"><p>lobste.rs</p></th>
881894<th class="stub"><p>!lo</p></th>
882895<td><p>xpath</p></td>
883896<td><p>2.0</p></td>
@@ -892,6 +905,21 @@
892905<td></td>
893906<td><p>y</p></td>
894907</tr>
908+<tr class="row-odd"><th class="stub"><p>metager</p></th>
909+<th class="stub"><p>!mg</p></th>
910+<td><p>xpath</p></td>
911+<td><p>2.0</p></td>
912+<td><p>general</p></td>
913+<td></td>
914+<td><p>y</p></td>
915+<td></td>
916+<td><p>y</p></td>
917+<td></td>
918+<td></td>
919+<td><p>1</p></td>
920+<td><p>y</p></td>
921+<td><p>y</p></td>
922+</tr>
895923<tr class="row-even"><th class="stub"><p>microsoft academic</p></th>
896924<th class="stub"><p>!ma</p></th>
897925<td><p>microsoft_academic</p></td>
@@ -1062,7 +1090,7 @@
10621090<td><p>piratebay</p></td>
10631091<td><p>3.0</p></td>
10641092<td><p>videos, music, files</p></td>
1065−<td><p>y</p></td>
1093+<td></td>
10661094<td><p>y</p></td>
10671095<td></td>
10681096<td></td>
@@ -1387,7 +1415,22 @@
13871415<td></td>
13881416<td><p>y</p></td>
13891417</tr>
1390−<tr class="row-odd"><th class="stub"><p>dailymotion</p></th>
1418+<tr class="row-odd"><th class="stub"><p>yggtorrent</p></th>
1419+<th class="stub"><p>!ygg</p></th>
1420+<td><p>yggtorrent</p></td>
1421+<td><p>4.0</p></td>
1422+<td><p>videos, music, files</p></td>
1423+<td><p>y</p></td>
1424+<td><p>y</p></td>
1425+<td></td>
1426+<td><p>y</p></td>
1427+<td></td>
1428+<td></td>
1429+<td><p>1</p></td>
1430+<td><p>y</p></td>
1431+<td><p>y</p></td>
1432+</tr>
1433+<tr class="row-even"><th class="stub"><p>dailymotion</p></th>
13911434<th class="stub"><p>!dm</p></th>
13921435<td><p>dailymotion</p></td>
13931436<td><p>2.0</p></td>
@@ -1402,7 +1445,7 @@
14021445<td></td>
14031446<td><p>y</p></td>
14041447</tr>
1405−<tr class="row-even"><th class="stub"><p>vimeo</p></th>
1448+<tr class="row-odd"><th class="stub"><p>vimeo</p></th>
14061449<th class="stub"><p>!vm</p></th>
14071450<td><p>vimeo</p></td>
14081451<td><p>2.0</p></td>
@@ -1417,7 +1460,7 @@
14171460<td></td>
14181461<td><p>y</p></td>
14191462</tr>
1420−<tr class="row-odd"><th class="stub"><p>wikibooks</p></th>
1463+<tr class="row-even"><th class="stub"><p>wikibooks</p></th>
14211464<th class="stub"><p>!wb</p></th>
14221465<td><p>mediawiki</p></td>
14231466<td><p>2.0</p></td>
@@ -1432,7 +1475,7 @@
14321475<td><p>y</p></td>
14331476<td><p>y</p></td>
14341477</tr>
1435−<tr class="row-even"><th class="stub"><p>wikinews</p></th>
1478+<tr class="row-odd"><th class="stub"><p>wikinews</p></th>
14361479<th class="stub"><p>!wn</p></th>
14371480<td><p>mediawiki</p></td>
14381481<td><p>2.0</p></td>
@@ -1447,7 +1490,7 @@
14471490<td><p>y</p></td>
14481491<td><p>y</p></td>
14491492</tr>
1450−<tr class="row-odd"><th class="stub"><p>wikiquote</p></th>
1493+<tr class="row-even"><th class="stub"><p>wikiquote</p></th>
14511494<th class="stub"><p>!wq</p></th>
14521495<td><p>mediawiki</p></td>
14531496<td><p>2.0</p></td>
@@ -1462,7 +1505,7 @@
14621505<td><p>y</p></td>
14631506<td><p>y</p></td>
14641507</tr>
1465−<tr class="row-even"><th class="stub"><p>wikisource</p></th>
1508+<tr class="row-odd"><th class="stub"><p>wikisource</p></th>
14661509<th class="stub"><p>!ws</p></th>
14671510<td><p>mediawiki</p></td>
14681511<td><p>2.0</p></td>
@@ -1477,7 +1520,7 @@
14771520<td><p>y</p></td>
14781521<td><p>y</p></td>
14791522</tr>
1480−<tr class="row-odd"><th class="stub"><p>wiktionary</p></th>
1523+<tr class="row-even"><th class="stub"><p>wiktionary</p></th>
14811524<th class="stub"><p>!wt</p></th>
14821525<td><p>mediawiki</p></td>
14831526<td><p>2.0</p></td>
@@ -1492,7 +1535,7 @@
14921535<td><p>y</p></td>
14931536<td><p>y</p></td>
14941537</tr>
1495−<tr class="row-even"><th class="stub"><p>wikiversity</p></th>
1538+<tr class="row-odd"><th class="stub"><p>wikiversity</p></th>
14961539<th class="stub"><p>!wv</p></th>
14971540<td><p>mediawiki</p></td>
14981541<td><p>2.0</p></td>
@@ -1507,7 +1550,7 @@
15071550<td><p>y</p></td>
15081551<td><p>y</p></td>
15091552</tr>
1510−<tr class="row-odd"><th class="stub"><p>wikivoyage</p></th>
1553+<tr class="row-even"><th class="stub"><p>wikivoyage</p></th>
15111554<th class="stub"><p>!wy</p></th>
15121555<td><p>mediawiki</p></td>
15131556<td><p>2.0</p></td>
@@ -1522,7 +1565,7 @@
15221565<td><p>y</p></td>
15231566<td><p>y</p></td>
15241567</tr>
1525−<tr class="row-even"><th class="stub"><p>wolframalpha</p></th>
1568+<tr class="row-odd"><th class="stub"><p>wolframalpha</p></th>
15261569<th class="stub"><p>!wa</p></th>
15271570<td><p>wolframalpha_noapi</p></td>
15281571<td><p>6.0</p></td>
@@ -1537,7 +1580,7 @@
15371580<td></td>
15381581<td><p>y</p></td>
15391582</tr>
1540−<tr class="row-odd"><th class="stub"><p>dictzone</p></th>
1583+<tr class="row-even"><th class="stub"><p>dictzone</p></th>
15411584<th class="stub"><p>!dc</p></th>
15421585<td><p>dictzone</p></td>
15431586<td><p>2.0</p></td>
@@ -1552,7 +1595,7 @@
15521595<td></td>
15531596<td><p>y</p></td>
15541597</tr>
1555−<tr class="row-even"><th class="stub"><p>mymemory translated</p></th>
1598+<tr class="row-odd"><th class="stub"><p>mymemory translated</p></th>
15561599<th class="stub"><p>!tl</p></th>
15571600<td><p>translated</p></td>
15581601<td><p>5.0</p></td>
@@ -1567,7 +1610,7 @@
15671610<td><p>y</p></td>
15681611<td><p>y</p></td>
15691612</tr>
1570−<tr class="row-odd"><th class="stub"><p>voat</p></th>
1613+<tr class="row-even"><th class="stub"><p>voat</p></th>
15711614<th class="stub"><p>!vo</p></th>
15721615<td><p>xpath</p></td>
15731616<td><p>10.0</p></td>
@@ -1582,7 +1625,7 @@
15821625<td><p>y</p></td>
15831626<td><p>y</p></td>
15841627</tr>
1585−<tr class="row-even"><th class="stub"><p>1337x</p></th>
1628+<tr class="row-odd"><th class="stub"><p>1337x</p></th>
15861629<th class="stub"><p>!1337x</p></th>
15871630<td><p>1337x</p></td>
15881631<td><p>2.0</p></td>
@@ -1597,7 +1640,7 @@
15971640<td><p>y</p></td>
15981641<td><p>y</p></td>
15991642</tr>
1600−<tr class="row-odd"><th class="stub"><p>duden</p></th>
1643+<tr class="row-even"><th class="stub"><p>duden</p></th>
16011644<th class="stub"><p>!du</p></th>
16021645<td><p>duden</p></td>
16031646<td><p>2.0</p></td>
@@ -1612,7 +1655,7 @@
16121655<td><p>y</p></td>
16131656<td><p>y</p></td>
16141657</tr>
1615−<tr class="row-even"><th class="stub"><p>seznam</p></th>
1658+<tr class="row-odd"><th class="stub"><p>seznam</p></th>
16161659<th class="stub"><p>!szn</p></th>
16171660<td><p>xpath</p></td>
16181661<td><p>2.0</p></td>
@@ -1627,7 +1670,7 @@
16271670<td><p>y</p></td>
16281671<td><p>y</p></td>
16291672</tr>
1630−<tr class="row-odd"><th class="stub"><p>mojeek</p></th>
1673+<tr class="row-even"><th class="stub"><p>mojeek</p></th>
16311674<th class="stub"><p>!mjk</p></th>
16321675<td><p>xpath</p></td>
16331676<td><p>2.0</p></td>
@@ -1642,7 +1685,7 @@
16421685<td><p>y</p></td>
16431686<td><p>y</p></td>
16441687</tr>
1645−<tr class="row-even"><th class="stub"><p>seedpeer</p></th>
1688+<tr class="row-odd"><th class="stub"><p>seedpeer</p></th>
16461689<th class="stub"><p>!speu</p></th>
16471690<td><p>seedpeer</p></td>
16481691<td><p>2.0</p></td>
@@ -1657,6 +1700,21 @@
16571700<td></td>
16581701<td><p>y</p></td>
16591702</tr>
1703+<tr class="row-even"><th class="stub"><p>naver</p></th>
1704+<th class="stub"><p>!nvr</p></th>
1705+<td><p>xpath</p></td>
1706+<td><p>2.0</p></td>
1707+<td><p>general</p></td>
1708+<td><p>y</p></td>
1709+<td><p>y</p></td>
1710+<td></td>
1711+<td><p>y</p></td>
1712+<td></td>
1713+<td></td>
1714+<td><p>1</p></td>
1715+<td><p>y</p></td>
1716+<td><p>y</p></td>
1717+</tr>
16601718<tr class="row-odd"><th class="stub"><p>rubygems</p></th>
16611719<th class="stub"><p>!rbg</p></th>
16621720<td><p>xpath</p></td>
@@ -1672,12 +1730,26 @@
16721730<td><p>y</p></td>
16731731<td><p>y</p></td>
16741732</tr>
1733+<tr class="row-even"><th class="stub"><p>peertube</p></th>
1734+<th class="stub"><p>!ptb</p></th>
1735+<td><p>peertube</p></td>
1736+<td><p>2.0</p></td>
1737+<td><p>videos</p></td>
1738+<td><p>y</p></td>
1739+<td><p>y</p></td>
1740+<td></td>
1741+<td><p>y</p></td>
1742+<td></td>
1743+<td></td>
1744+<td><p>1</p></td>
1745+<td><p>y</p></td>
1746+<td><p>y</p></td>
1747+</tr>
16751748</tbody>
16761749</table>
16771750</div>
16781751
16791752
1680− <div class="clearer"></div>
16811753 </div>
16821754 </div>
16831755 </div>
@@ -1729,7 +1801,7 @@
17291801
17301802 <div class="footer" role="contentinfo">
17311803 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
1732− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.1.2.
1804+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.0.1.
17331805 </div>
17341806 <script src="../_static/version_warning_offset.js"></script>
17351807
admin/filtron.html+2−5
@@ -4,7 +4,6 @@
44<html>
55 <head>
66 <meta charset="utf-8" />
7− <meta name="viewport" content="width=device-width, initial-scale=1.0">
87 <meta name="viewport" content="width=device-width, initial-scale=1">
98 <title>How to protect an instance &#8212; Searx Documentation (Searx-0.17.0.tex)</title>
109 <link rel="stylesheet" href="../_static/searx.css" type="text/css" />
@@ -34,8 +33,7 @@
3433 <a href="architecture.html" title="Architecture"
3534 accesskey="P">previous</a> |</li>
3635 <li class="nav-item nav-item-0"><a href="../index.html">Searx Documentation (Searx-0.17.0.tex)</a> &#187;</li>
37− <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Administrator documentation</a> &#187;</li>
38− <li class="nav-item nav-item-this"><a href="">How to protect an instance</a></li>
36+ <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Administrator documentation</a> &#187;</li>
3937 </ul>
4038 </div>
4139
@@ -219,7 +217,6 @@ port 8888 where a searx is being run. For a complete setup see: <a class="refere
219217</div>
220218
221219
222− <div class="clearer"></div>
223220 </div>
224221 </div>
225222 </div>
@@ -271,7 +268,7 @@ port 8888 where a searx is being run. For a complete setup see: <a class="refere
271268
272269 <div class="footer" role="contentinfo">
273270 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
274− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.1.2.
271+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.0.1.
275272 </div>
276273 <script src="../_static/version_warning_offset.js"></script>
277274
admin/index.html+2−5
@@ -4,7 +4,6 @@
44<html>
55 <head>
66 <meta charset="utf-8" />
7− <meta name="viewport" content="width=device-width, initial-scale=1.0">
87 <meta name="viewport" content="width=device-width, initial-scale=1">
98 <title>Administrator documentation &#8212; Searx Documentation (Searx-0.17.0.tex)</title>
109 <link rel="stylesheet" href="../_static/searx.css" type="text/css" />
@@ -33,8 +32,7 @@
3332 <li class="right" >
3433 <a href="../user/own-instance.html" title="Why use a private instance?"
3534 accesskey="P">previous</a> |</li>
36− <li class="nav-item nav-item-0"><a href="../index.html">Searx Documentation (Searx-0.17.0.tex)</a> &#187;</li>
37− <li class="nav-item nav-item-this"><a href="">Administrator documentation</a></li>
35+ <li class="nav-item nav-item-0"><a href="../index.html">Searx Documentation (Searx-0.17.0.tex)</a> &#187;</li>
3836 </ul>
3937 </div>
4038
@@ -117,7 +115,6 @@
117115</div>
118116
119117
120− <div class="clearer"></div>
121118 </div>
122119 </div>
123120 </div>
@@ -166,7 +163,7 @@
166163
167164 <div class="footer" role="contentinfo">
168165 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
169− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.1.2.
166+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.0.1.
170167 </div>
171168 <script src="../_static/version_warning_offset.js"></script>
172169
admin/installation-apache.html+2−5
@@ -4,7 +4,6 @@
44<html>
55 <head>
66 <meta charset="utf-8" />
7− <meta name="viewport" content="width=device-width, initial-scale=1.0">
87 <meta name="viewport" content="width=device-width, initial-scale=1">
98 <title>Install with apache &#8212; Searx Documentation (Searx-0.17.0.tex)</title>
109 <link rel="stylesheet" href="../_static/searx.css" type="text/css" />
@@ -40,8 +39,7 @@
4039 <a href="installation-nginx.html" title="Install with nginx"
4140 accesskey="P">previous</a> |</li>
4241 <li class="nav-item nav-item-0"><a href="../index.html">Searx Documentation (Searx-0.17.0.tex)</a> &#187;</li>
43− <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Administrator documentation</a> &#187;</li>
44− <li class="nav-item nav-item-this"><a href="">Install with apache</a></li>
42+ <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Administrator documentation</a> &#187;</li>
4543 </ul>
4644 </div>
4745
@@ -591,7 +589,6 @@ Debian:</p>
591589</div>
592590
593591
594− <div class="clearer"></div>
595592 </div>
596593 </div>
597594 </div>
@@ -643,7 +640,7 @@ Debian:</p>
643640
644641 <div class="footer" role="contentinfo">
645642 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
646− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.1.2.
643+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.0.1.
647644 </div>
648645 <script src="../_static/version_warning_offset.js"></script>
649646
admin/installation-docker.html+2−5
@@ -4,7 +4,6 @@
44<html>
55 <head>
66 <meta charset="utf-8" />
7− <meta name="viewport" content="width=device-width, initial-scale=1.0">
87 <meta name="viewport" content="width=device-width, initial-scale=1">
98 <title>Docker installation &#8212; Searx Documentation (Searx-0.17.0.tex)</title>
109 <link rel="stylesheet" href="../_static/searx.css" type="text/css" />
@@ -34,8 +33,7 @@
3433 <a href="installation-apache.html" title="Install with apache"
3534 accesskey="P">previous</a> |</li>
3635 <li class="nav-item nav-item-0"><a href="../index.html">Searx Documentation (Searx-0.17.0.tex)</a> &#187;</li>
37− <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Administrator documentation</a> &#187;</li>
38− <li class="nav-item nav-item-this"><a href="">Docker installation</a></li>
36+ <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Administrator documentation</a> &#187;</li>
3937 </ul>
4038 </div>
4139
@@ -115,7 +113,6 @@ make docker
115113</div>
116114
117115
118− <div class="clearer"></div>
119116 </div>
120117 </div>
121118 </div>
@@ -167,7 +164,7 @@ make docker
167164
168165 <div class="footer" role="contentinfo">
169166 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
170− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.1.2.
167+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.0.1.
171168 </div>
172169 <script src="../_static/version_warning_offset.js"></script>
173170
admin/installation-nginx.html+3−6
@@ -4,7 +4,6 @@
44<html>
55 <head>
66 <meta charset="utf-8" />
7− <meta name="viewport" content="width=device-width, initial-scale=1.0">
87 <meta name="viewport" content="width=device-width, initial-scale=1">
98 <title>Install with nginx &#8212; Searx Documentation (Searx-0.17.0.tex)</title>
109 <link rel="stylesheet" href="../_static/searx.css" type="text/css" />
@@ -40,8 +39,7 @@
4039 <a href="installation-uwsgi.html" title="uwsgi"
4140 accesskey="P">previous</a> |</li>
4241 <li class="nav-item nav-item-0"><a href="../index.html">Searx Documentation (Searx-0.17.0.tex)</a> &#187;</li>
43− <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Administrator documentation</a> &#187;</li>
44− <li class="nav-item nav-item-this"><a href="">Install with nginx</a></li>
42+ <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Administrator documentation</a> &#187;</li>
4543 </ul>
4644 </div>
4745
@@ -320,7 +318,7 @@ sockets. For socket communication, you have to activate <code class="docutils l
320318<p>The example shows a nginx virtual <code class="docutils literal notranslate"><span class="pre">server</span></code> configuration, listening on
321319port 80 (IPv4 and IPv6 <a class="reference external" href="http://[::]:80">http://[::]:80</a>). The uWSGI app is configured at
322320location <code class="docutils literal notranslate"><span class="pre">/</span></code> by importing the <a class="reference external" href="https://uwsgi-docs.readthedocs.io/en/latest/Nginx.html#configuring-nginx">uwsgi_params</a> and passing requests to
323−the uWSGI socket (<code class="docutils literal notranslate"><span class="pre">uwsgi_pass</span></code>). The <code class="docutils literal notranslate"><span class="pre">server</span></code>'s root points to the
321+the uWSGI socket (<code class="docutils literal notranslate"><span class="pre">uwsgi_pass</span></code>). The <code class="docutils literal notranslate"><span class="pre">server</span></code>’s root points to the
324322<a class="reference internal" href="installation-searx.html#searx-src"><span class="std std-ref">searx-src clone</span></a> and wraps directly the
325323<a class="reference external" href="https://github.com/asciimoo/searx/blob/master/searx/static/">git://searx/static/</a> content at <code class="docutils literal notranslate"><span class="pre">location</span> <span class="pre">/static</span></code>.</p>
326324<div class="highlight-nginx notranslate"><div class="highlight"><pre><span></span><span class="k">server</span> <span class="p">{</span>
@@ -448,7 +446,6 @@ sudo -H touch /etc/uwsgi.d/searx.ini
448446</div>
449447
450448
451− <div class="clearer"></div>
452449 </div>
453450 </div>
454451 </div>
@@ -500,7 +497,7 @@ sudo -H touch /etc/uwsgi.d/searx.ini
500497
501498 <div class="footer" role="contentinfo">
502499 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
503− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.1.2.
500+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.0.1.
504501 </div>
505502 <script src="../_static/version_warning_offset.js"></script>
506503
admin/installation-searx.html+2−213
@@ -4,22 +4,15 @@
44<html>
55 <head>
66 <meta charset="utf-8" />
7− <meta name="viewport" content="width=device-width, initial-scale=1.0">
87 <meta name="viewport" content="width=device-width, initial-scale=1">
98 <title>Step by step installation &#8212; Searx Documentation (Searx-0.17.0.tex)</title>
109 <link rel="stylesheet" href="../_static/searx.css" type="text/css" />
1110 <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
12− <link rel="stylesheet" type="text/css" href="../_static/sphinx_tabs/semantic-ui-2.4.1/segment.min.css" />
13− <link rel="stylesheet" type="text/css" href="../_static/sphinx_tabs/semantic-ui-2.4.1/menu.min.css" />
14− <link rel="stylesheet" type="text/css" href="../_static/sphinx_tabs/semantic-ui-2.4.1/tab.min.css" />
15− <link rel="stylesheet" type="text/css" href="../_static/sphinx_tabs/tabs.css" />
1611 <script id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
1712 <script src="../_static/jquery.js"></script>
1813 <script src="../_static/underscore.js"></script>
1914 <script src="../_static/doctools.js"></script>
2015 <script src="../_static/language_data.js"></script>
21− <script src="../_static/sphinx_tabs/semantic-ui-2.4.1/tab.min.js"></script>
22− <script src="../_static/sphinx_tabs/tabs.js"></script>
2316 <link rel="index" title="Index" href="../genindex.html" />
2417 <link rel="search" title="Search" href="../search.html" />
2518 <link rel="next" title="uwsgi" href="installation-uwsgi.html" />
@@ -40,8 +33,7 @@
4033 <a href="installation.html" title="Installation"
4134 accesskey="P">previous</a> |</li>
4235 <li class="nav-item nav-item-0"><a href="../index.html">Searx Documentation (Searx-0.17.0.tex)</a> &#187;</li>
43− <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Administrator documentation</a> &#187;</li>
44− <li class="nav-item nav-item-this"><a href="">Step by step installation</a></li>
36+ <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Administrator documentation</a> &#187;</li>
4537 </ul>
4638 </div>
4739
@@ -66,52 +58,6 @@
6658universe repository.</p>
6759<div class="section" id="install-packages">
6860<span id="id1"></span><h2><a class="toc-backref" href="#id2">Install packages</a><a class="headerlink" href="#install-packages" title="Permalink to this headline">¶</a></h2>
69−<div class="sphinx-tabs docutils container">
70−<div class="ui top attached tabular menu sphinx-menu docutils container">
71−<div class="active item sphinx-data-tab-VWJ1bnR1IC8gZGViaWFu docutils container">
72−<div class="docutils container">
73−<p>Ubuntu / debian</p>
74−</div>
75−</div>
76−<div class="item sphinx-data-tab-QXJjaCBMaW51eA== docutils container">
77−<div class="docutils container">
78−<p>Arch Linux</p>
79−</div>
80−</div>
81−<div class="item sphinx-data-tab-RmVkb3JhIC8gUkhFTA== docutils container">
82−<div class="docutils container">
83−<p>Fedora / RHEL</p>
84−</div>
85−</div>
86−</div>
87−<div class="ui bottom attached sphinx-tab tab segment sphinx-data-tab-VWJ1bnR1IC8gZGViaWFu active docutils container">
88−<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>$ sudo -H apt-get install -y <span class="se">\</span>
89− virtualenv python3-dev python3-babel python3-venv <span class="se">\</span>
90− uwsgi uwsgi-plugin-python3 <span class="se">\</span>
91− git build-essential libxslt-dev zlib1g-dev libffi-dev libssl-dev <span class="se">\</span>
92− shellcheck
93−</pre></div>
94−</div>
95−</div>
96−<div class="ui bottom attached sphinx-tab tab segment sphinx-data-tab-QXJjaCBMaW51eA== docutils container">
97−<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>$ sudo -H pacman -S --noconfirm <span class="se">\</span>
98− python-virtualenv python python-pip python-lxml python-babel <span class="se">\</span>
99− uwsgi uwsgi-plugin-python <span class="se">\</span>
100− git base-devel libxml2 <span class="se">\</span>
101− shellcheck
102−</pre></div>
103−</div>
104−</div>
105−<div class="ui bottom attached sphinx-tab tab segment sphinx-data-tab-RmVkb3JhIC8gUkhFTA== docutils container">
106−<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>$ sudo -H dnf install -y <span class="se">\</span>
107− virtualenv python python-pip python-lxml python-babel <span class="se">\</span>
108− uwsgi uwsgi-plugin-python3 <span class="se">\</span>
109− git @development-tools libxml2 <span class="se">\</span>
110− ShellCheck
111−</pre></div>
112−</div>
113−</div>
114−</div>
11561<div class="admonition hint">
11662<p class="admonition-title">Hint</p>
11763<p>This installs also the packages needed by <a class="reference internal" href="installation-uwsgi.html#searx-uwsgi"><span class="std std-ref">uwsgi</span></a></p>
@@ -119,90 +65,14 @@ universe repository.</p>
11965</div>
12066<div class="section" id="create-user">
12167<span id="create-searx-user"></span><h2><a class="toc-backref" href="#id3">Create user</a><a class="headerlink" href="#create-user" title="Permalink to this headline">¶</a></h2>
122−<div class="sphinx-tabs docutils container">
123−<div class="ui top attached tabular menu sphinx-menu docutils container">
124−<div class="active item sphinx-data-tab-YmFzaA== docutils container">
125−<div class="docutils container">
126−<p>bash</p>
127−</div>
128−</div>
129−</div>
130−<div class="ui bottom attached sphinx-tab tab segment sphinx-data-tab-YmFzaA== active docutils container">
131−<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>$ sudo -H useradd --shell /bin/bash --system <span class="se">\</span>
132− --home-dir /usr/local/searx <span class="se">\</span>
133− --comment <span class="s1">&#39;Privacy-respecting metasearch engine&#39;</span> searx
134−
135−$ sudo -H mkdir /usr/local/searx
136−$ sudo -H chown -R searx:searx /usr/local/searx
137−</pre></div>
138−</div>
139−</div>
140−</div>
14168</div>
14269<div class="section" id="install-searx-dependencies">
14370<span id="searx-src"></span><h2><a class="toc-backref" href="#id4">install searx &amp; dependencies</a><a class="headerlink" href="#install-searx-dependencies" title="Permalink to this headline">¶</a></h2>
14471<p>Start a interactive shell from new created user and clone searx:</p>
145−<div class="sphinx-tabs docutils container">
146−<div class="ui top attached tabular menu sphinx-menu docutils container">
147−<div class="active item sphinx-data-tab-YmFzaA== docutils container">
148−<div class="docutils container">
149−<p>bash</p>
150−</div>
151−</div>
152−</div>
153−<div class="ui bottom attached sphinx-tab tab segment sphinx-data-tab-YmFzaA== active docutils container">
154−<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>$ sudo -H -u searx -i
155−<span class="o">(</span>searx<span class="o">)</span>$ git clone https://github.com/asciimoo/searx.git /usr/local/searx/searx-src
156−</pre></div>
157−</div>
158−</div>
159−</div>
16072<p>In the same shell create <em>virtualenv</em>:</p>
161−<div class="sphinx-tabs docutils container">
162−<div class="ui top attached tabular menu sphinx-menu docutils container">
163−<div class="active item sphinx-data-tab-YmFzaA== docutils container">
164−<div class="docutils container">
165−<p>bash</p>
166−</div>
167−</div>
168−</div>
169−<div class="ui bottom attached sphinx-tab tab segment sphinx-data-tab-YmFzaA== active docutils container">
170−<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span><span class="o">(</span>searx<span class="o">)</span>$ python3 -m venv /usr/local/searx/searx-pyenv
171−<span class="o">(</span>searx<span class="o">)</span>$ <span class="nb">echo</span> . /usr/local/searx/searx-pyenv/bin/activate &gt;&gt; /usr/local/searx/.profile
172−</pre></div>
173−</div>
174−</div>
175−</div>
17673<p>To install searx’s dependencies, exit the searx <em>bash</em> session you opened above
17774and restart a new. Before install, first check if your <em>virualenv</em> was sourced
17875from the login (<em>~/.profile</em>):</p>
179−<div class="sphinx-tabs docutils container">
180−<div class="ui top attached tabular menu sphinx-menu docutils container">
181−<div class="active item sphinx-data-tab-YmFzaA== docutils container">
182−<div class="docutils container">
183−<p>bash</p>
184−</div>
185−</div>
186−</div>
187−<div class="ui bottom attached sphinx-tab tab segment sphinx-data-tab-YmFzaA== active docutils container">
188−<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>$ sudo -H -u searx -i
189−
190−<span class="o">(</span>searx<span class="o">)</span>$ <span class="nb">command</span> -v python <span class="o">&amp;&amp;</span> python --version
191−/usr/local/searx/searx-pyenv/bin/python
192−Python 3.8.1
193−
194−<span class="c1"># update pip&#39;s boilerplate ..</span>
195−pip install -U pip
196−pip install -U setuptools
197−pip install -U wheel
198−
199−<span class="c1"># jump to searx&#39;s working tree and install searx into virtualenv</span>
200−<span class="o">(</span>searx<span class="o">)</span>$ <span class="nb">cd</span> /usr/local/searx/searx-src
201−<span class="o">(</span>searx<span class="o">)</span>$ pip install -e .
202−</pre></div>
203−</div>
204−</div>
205−</div>
20676<div class="admonition tip">
20777<p class="admonition-title">Tip</p>
20878<p>Open a second terminal for the configuration tasks and left the <code class="docutils literal notranslate"><span class="pre">(searx)$</span></code>
@@ -214,92 +84,12 @@ terminal open for the tasks below.</p>
21484<p>Create a copy of the <a class="reference external" href="https://github.com/asciimoo/searx/blob/master/searx/settings.yml">git://searx/settings.yml</a> configuration file in system’s
21585<em>/etc</em> folder. Configure like shown below – replace <code class="docutils literal notranslate"><span class="pre">searx&#64;\$(uname</span> <span class="pre">-n)</span></code> with
21686a name of your choice – <em>and/or</em> edit <code class="docutils literal notranslate"><span class="pre">/etc/searx/settings.yml</span></code> if necessary.</p>
217−<div class="sphinx-tabs docutils container">
218−<div class="ui top attached tabular menu sphinx-menu docutils container">
219−<div class="active item sphinx-data-tab-YmFzaA== docutils container">
220−<div class="docutils container">
221−<p>bash</p>
222−</div>
223−</div>
224−</div>
225−<div class="ui bottom attached sphinx-tab tab segment sphinx-data-tab-YmFzaA== active docutils container">
226−<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>$ sudo -H cp /usr/local/searx/searx-src/searx/settings.yml /etc/searx/settings.yml
227−$ sudo -H sed -i -e s/ultrasecretkey/<span class="se">\3</span>67ed0f4f4f300bd1457e5c87d036ab2/g /etc/searx/settings.yml
228−$ sudo -H sed -i -e s/<span class="o">{</span>instance_name<span class="o">}</span>/searx@<span class="se">\r</span>yzen/g /etc/searx/settings.yml
229−</pre></div>
230−</div>
231−</div>
232−</div>
23387</div>
23488<div class="section" id="check">
23589<h2><a class="toc-backref" href="#id6">Check</a><a class="headerlink" href="#check" title="Permalink to this headline">¶</a></h2>
23690<p>To check your searx setup, optional enable debugging and start the <em>webapp</em>.
23791Searx looks at the exported environment <code class="docutils literal notranslate"><span class="pre">$SEARX_SETTINGS_PATH</span></code> for a
23892configuration file.</p>
239−<div class="sphinx-tabs docutils container">
240−<div class="ui top attached tabular menu sphinx-menu docutils container">
241−<div class="active item sphinx-data-tab-YmFzaA== docutils container">
242−<div class="docutils container">
243−<p>bash</p>
244−</div>
245−</div>
246−</div>
247−<div class="ui bottom attached sphinx-tab tab segment sphinx-data-tab-YmFzaA== active docutils container">
248−<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span><span class="c1"># enable debug ..</span>
249−$ sudo -H sed -i -e s/debug : False/debug : True/g /etc/searx/settings.yml
250−
251−<span class="c1"># start webapp</span>
252−$ sudo -H -u searx -i
253−<span class="o">(</span>searx<span class="o">)</span>$ <span class="nb">cd</span> /usr/local/searx/searx-src
254−<span class="o">(</span>searx<span class="o">)</span>$ <span class="nb">export</span> <span class="nv">SEARX_SETTINGS_PATH</span><span class="o">=</span>/etc/searx/settings.yml
255−<span class="o">(</span>searx<span class="o">)</span>$ python searx/webapp.py
256−
257−<span class="c1"># disable debug</span>
258−$ sudo -H sed -i -e s/debug : True/debug : False/g /etc/searx/settings.yml
259−</pre></div>
260−</div>
261−</div>
262−</div>
263−<p>Open WEB browser and visit <a class="reference external" href="http://">http://</a> . If you are inside a
264−container or in a script, test with curl:</p>
265−<div class="sphinx-tabs docutils container">
266−<div class="ui top attached tabular menu sphinx-menu docutils container">
267−<div class="active item sphinx-data-tab-V0VCIGJyb3dzZXI= docutils container">
268−<div class="docutils container">
269−<p>WEB browser</p>
270−</div>
271−</div>
272−<div class="item sphinx-data-tab-Y3VybA== docutils container">
273−<div class="docutils container">
274−<p>curl</p>
275−</div>
276−</div>
277−</div>
278−<div class="ui bottom attached sphinx-tab tab segment sphinx-data-tab-V0VCIGJyb3dzZXI= active docutils container">
279−<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>$ xgd-open http://
280−</pre></div>
281−</div>
282−</div>
283−<div class="ui bottom attached sphinx-tab tab segment sphinx-data-tab-Y3VybA== docutils container">
284−<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>$ curl --location --verbose --head --insecure
285−
286−* Trying 127.0.0.1:8888...
287−* TCP_NODELAY set
288−* Connected to 127.0.0.1 (127.0.0.1) port 8888 (#0)
289−&gt; HEAD / HTTP/1.1
290−&gt; Host: 127.0.0.1:8888
291−&gt; User-Agent: curl/7.68.0
292−&gt; Accept: */*
293−&gt;
294−* Mark bundle as not supporting multiuse
295−* HTTP 1.0, assume close after body
296−&lt; HTTP/1.0 200 OK
297−HTTP/1.0 200 OK
298−...
299−</pre></div>
300−</div>
301−</div>
302−</div>
30393<p>If everything works fine, hit <code class="docutils literal notranslate"><span class="pre">[CTRL-C]</span></code> to stop the <em>webapp</em> and disable the
30494debug option in <code class="docutils literal notranslate"><span class="pre">settings.yml</span></code>. You can now exit searx user bash (enter exit
30595command twice). At this point searx is not demonized; uwsgi allows this.</p>
@@ -307,7 +97,6 @@ command twice). At this point searx is not demonized; uwsgi allows this.</p>
30797</div>
30898
30999
310− <div class="clearer"></div>
311100 </div>
312101 </div>
313102 </div>
@@ -359,7 +148,7 @@ command twice). At this point searx is not demonized; uwsgi allows this.</p>
359148
360149 <div class="footer" role="contentinfo">
361150 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
362− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.1.2.
151+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.0.1.
363152 </div>
364153 <script src="../_static/version_warning_offset.js"></script>
365154
admin/installation-uwsgi.html+2−298
@@ -4,7 +4,6 @@
44<html>
55 <head>
66 <meta charset="utf-8" />
7− <meta name="viewport" content="width=device-width, initial-scale=1.0">
87 <meta name="viewport" content="width=device-width, initial-scale=1">
98 <title>uwsgi &#8212; Searx Documentation (Searx-0.17.0.tex)</title>
109 <link rel="stylesheet" href="../_static/searx.css" type="text/css" />
@@ -40,8 +39,7 @@
4039 <a href="installation-searx.html" title="Step by step installation"
4140 accesskey="P">previous</a> |</li>
4241 <li class="nav-item nav-item-0"><a href="../index.html">Searx Documentation (Searx-0.17.0.tex)</a> &#187;</li>
43− <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Administrator documentation</a> &#187;</li>
44− <li class="nav-item nav-item-this"><a href="">uwsgi</a></li>
42+ <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Administrator documentation</a> &#187;</li>
4543 </ul>
4644 </div>
4745
@@ -155,44 +153,10 @@ restart the uwsgi application.</p>
155153</div>
156154</div>
157155<div class="ui bottom attached sphinx-tab tab segment sphinx-data-tab-VWJ1bnR1IC8gZGViaWFu active docutils container">
158−<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="c1"># init.d --&gt; /usr/share/doc/uwsgi/README.Debian.gz</span>
159−<span class="c1"># For uWSGI debian uses the LSB init process, this might be changed</span>
160−<span class="c1"># one day, see https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=833067</span>
161−
162−create /etc/uwsgi/apps-available/searx.ini
163−enable: sudo -H ln -s /etc/uwsgi/apps-available/searx.ini /etc/uwsgi/apps-enabled/
164−start: sudo -H service uwsgi start searx
165−restart: sudo -H service uwsgi restart searx
166−stop: sudo -H service uwsgi stop searx
167−disable: sudo -H rm /etc/uwsgi/apps-enabled/searx.ini
168−</pre></div>
169−</div>
170156</div>
171157<div class="ui bottom attached sphinx-tab tab segment sphinx-data-tab-QXJjaCBMaW51eA== docutils container">
172−<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="c1"># systemd --&gt; /usr/lib/systemd/system/uwsgi@.service</span>
173−<span class="c1"># For uWSGI archlinux uses systemd template units, see</span>
174−<span class="c1"># - http://0pointer.de/blog/projects/instances.html</span>
175−<span class="c1"># - https://uwsgi-docs.readthedocs.io/en/latest/Systemd.html#one-service-per-app-in-systemd</span>
176−
177−create: /etc/uwsgi/searx.ini
178−enable: sudo -H systemctl <span class="nb">enable</span> uwsgi@searx
179−start: sudo -H systemctl start uwsgi@searx
180−restart: sudo -H systemctl restart uwsgi@searx
181−stop: sudo -H systemctl stop uwsgi@searx
182−disable: sudo -H systemctl disable uwsgi@searx
183−</pre></div>
184−</div>
185158</div>
186159<div class="ui bottom attached sphinx-tab tab segment sphinx-data-tab-RmVkb3JhIC8gUkhFTA== docutils container">
187−<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="c1"># systemd --&gt; /usr/lib/systemd/system/uwsgi.service</span>
188−<span class="c1"># The unit file starts uWSGI in emperor mode (/etc/uwsgi.ini), see</span>
189−<span class="c1"># - https://uwsgi-docs.readthedocs.io/en/latest/Emperor.html</span>
190−
191−create: /etc/uwsgi.d/searx.ini
192−restart: sudo -H touch /etc/uwsgi.d/searx.ini
193−disable: sudo -H rm /etc/uwsgi.d/searx.ini
194−</pre></div>
195−</div>
196160</div>
197161</div>
198162<div class="sphinx-tabs docutils container">
@@ -214,276 +178,16 @@ disable: sudo -H rm /etc/uwsgi.d/searx.ini
214178</div>
215179</div>
216180<div class="ui bottom attached sphinx-tab tab segment sphinx-data-tab-VWJ1bnR1IC8gZGViaWFu active docutils container">
217−<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="o">[</span>uwsgi<span class="o">]</span>
218−
219−<span class="c1"># uWSGI core</span>
220−<span class="c1"># ----------</span>
221−<span class="c1">#</span>
222−<span class="c1"># https://uwsgi-docs.readthedocs.io/en/latest/Options.html#uwsgi-core</span>
223−
224−<span class="c1"># Who will run the code</span>
225−<span class="nv">uid</span> <span class="o">=</span> searx
226−<span class="nv">gid</span> <span class="o">=</span> searx
227−
228−<span class="c1"># set (python) default encoding UTF-8</span>
229−<span class="nv">env</span> <span class="o">=</span> <span class="nv">LANG</span><span class="o">=</span>C.UTF-8
230−<span class="nv">env</span> <span class="o">=</span> <span class="nv">LANGUAGE</span><span class="o">=</span>C.UTF-8
231−<span class="nv">env</span> <span class="o">=</span> <span class="nv">LC_ALL</span><span class="o">=</span>C.UTF-8
232−
233−<span class="c1"># chdir to specified directory before apps loading</span>
234−<span class="nv">chdir</span> <span class="o">=</span> /usr/local/searx/searx-src/searx
235−
236−<span class="c1"># searx configuration (settings.yml)</span>
237−<span class="nv">env</span> <span class="o">=</span> <span class="nv">SEARX_SETTINGS_PATH</span><span class="o">=</span>/etc/searx/settings.yml
238−
239−<span class="c1"># disable logging for privacy</span>
240−disable-logging <span class="o">=</span> <span class="nb">true</span>
241−
242−<span class="c1"># The right granted on the created socket</span>
243−chmod-socket <span class="o">=</span> 666
244−
245−<span class="c1"># Plugin to use and interpretor config</span>
246−single-interpreter <span class="o">=</span> <span class="nb">true</span>
247−
248−<span class="c1"># enable master process</span>
249−<span class="nv">master</span> <span class="o">=</span> <span class="nb">true</span>
250−
251−<span class="c1"># load apps in each worker instead of the master</span>
252−lazy-apps <span class="o">=</span> <span class="nb">true</span>
253−
254−<span class="c1"># load uWSGI plugins</span>
255−<span class="nv">plugin</span> <span class="o">=</span> python3,http
256−
257−<span class="c1"># By default the Python plugin does not initialize the GIL. This means your</span>
258−<span class="c1"># app-generated threads will not run. If you need threads, remember to enable</span>
259−<span class="c1"># them with enable-threads. Running uWSGI in multithreading mode (with the</span>
260−<span class="c1"># threads options) will automatically enable threading support. This *strange*</span>
261−<span class="c1"># default behaviour is for performance reasons.</span>
262−enable-threads <span class="o">=</span> <span class="nb">true</span>
263−
264−
265−<span class="c1"># plugin: python</span>
266−<span class="c1"># --------------</span>
267−<span class="c1">#</span>
268−<span class="c1"># https://uwsgi-docs.readthedocs.io/en/latest/Options.html#plugin-python</span>
269−
270−<span class="c1"># load a WSGI module</span>
271−<span class="nv">module</span> <span class="o">=</span> searx.webapp
272−
273−<span class="c1"># set PYTHONHOME/virtualenv</span>
274−<span class="nv">virtualenv</span> <span class="o">=</span> /usr/local/searx/searx-pyenv
275−
276−<span class="c1"># add directory (or glob) to pythonpath</span>
277−<span class="nv">pythonpath</span> <span class="o">=</span> /usr/local/searx/searx-src
278−
279−
280−<span class="c1"># speak to upstream</span>
281−<span class="c1"># -----------------</span>
282−<span class="c1">#</span>
283−<span class="c1"># Activate the &#39;http&#39; configuration for filtron or activate the &#39;socket&#39;</span>
284−<span class="c1"># configuration if you setup your HTTP server to use uWSGI protocol via sockets.</span>
285−
286−<span class="c1"># using IP:</span>
287−<span class="c1">#</span>
288−<span class="c1"># https://uwsgi-docs.readthedocs.io/en/latest/Options.html#plugin-http</span>
289−<span class="c1"># Native HTTP support: https://uwsgi-docs.readthedocs.io/en/latest/HTTP.html</span>
290−
291−<span class="nv">http</span> <span class="o">=</span> 127.0.0.1:8888
292−
293−<span class="c1"># using unix-sockets:</span>
294−<span class="c1">#</span>
295−<span class="c1"># On some distributions you need to create the app folder for the sockets::</span>
296−<span class="c1">#</span>
297−<span class="c1"># mkdir -p /run/uwsgi/app/searx</span>
298−<span class="c1"># chmod -R searx:searx /run/uwsgi/app/searx</span>
299−<span class="c1">#</span>
300−<span class="c1"># socket = /run/uwsgi/app/searx/socket</span>
301−</pre></div>
302−</div>
303181</div>
304182<div class="ui bottom attached sphinx-tab tab segment sphinx-data-tab-QXJjaCBMaW51eA== docutils container">
305−<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="o">[</span>uwsgi<span class="o">]</span>
306−
307−<span class="c1"># uWSGI core</span>
308−<span class="c1"># ----------</span>
309−<span class="c1">#</span>
310−<span class="c1"># https://uwsgi-docs.readthedocs.io/en/latest/Options.html#uwsgi-core</span>
311−
312−<span class="c1"># Who will run the code</span>
313−<span class="nv">uid</span> <span class="o">=</span> searx
314−<span class="nv">gid</span> <span class="o">=</span> searx
315−
316−<span class="c1"># set (python) default encoding UTF-8</span>
317−<span class="nv">env</span> <span class="o">=</span> <span class="nv">LANG</span><span class="o">=</span>C.UTF-8
318−<span class="nv">env</span> <span class="o">=</span> <span class="nv">LANGUAGE</span><span class="o">=</span>C.UTF-8
319−<span class="nv">env</span> <span class="o">=</span> <span class="nv">LC_ALL</span><span class="o">=</span>C.UTF-8
320−
321−<span class="c1"># chdir to specified directory before apps loading</span>
322−<span class="nv">chdir</span> <span class="o">=</span> /usr/local/searx/searx-src/searx
323−
324−<span class="c1"># searx configuration (settings.yml)</span>
325−<span class="nv">env</span> <span class="o">=</span> <span class="nv">SEARX_SETTINGS_PATH</span><span class="o">=</span>/etc/searx/settings.yml
326−
327−<span class="c1"># disable logging for privacy</span>
328−<span class="nv">logger</span> <span class="o">=</span> systemd
329−disable-logging <span class="o">=</span> <span class="nb">true</span>
330−
331−<span class="c1"># The right granted on the created socket</span>
332−chmod-socket <span class="o">=</span> 666
333−
334−<span class="c1"># Plugin to use and interpretor config</span>
335−single-interpreter <span class="o">=</span> <span class="nb">true</span>
336−
337−<span class="c1"># enable master process</span>
338−<span class="nv">master</span> <span class="o">=</span> <span class="nb">true</span>
339−
340−<span class="c1"># load apps in each worker instead of the master</span>
341−lazy-apps <span class="o">=</span> <span class="nb">true</span>
342−
343−<span class="c1"># load uWSGI plugins</span>
344−<span class="nv">plugin</span> <span class="o">=</span> python
345−
346−<span class="c1"># By default the Python plugin does not initialize the GIL. This means your</span>
347−<span class="c1"># app-generated threads will not run. If you need threads, remember to enable</span>
348−<span class="c1"># them with enable-threads. Running uWSGI in multithreading mode (with the</span>
349−<span class="c1"># threads options) will automatically enable threading support. This *strange*</span>
350−<span class="c1"># default behaviour is for performance reasons.</span>
351−enable-threads <span class="o">=</span> <span class="nb">true</span>
352−
353−
354−<span class="c1"># plugin: python</span>
355−<span class="c1"># --------------</span>
356−<span class="c1">#</span>
357−<span class="c1"># https://uwsgi-docs.readthedocs.io/en/latest/Options.html#plugin-python</span>
358−
359−<span class="c1"># load a WSGI module</span>
360−<span class="nv">module</span> <span class="o">=</span> searx.webapp
361−
362−<span class="c1"># set PYTHONHOME/virtualenv</span>
363−<span class="nv">virtualenv</span> <span class="o">=</span> /usr/local/searx/searx-pyenv
364−
365−<span class="c1"># add directory (or glob) to pythonpath</span>
366−<span class="nv">pythonpath</span> <span class="o">=</span> /usr/local/searx/searx-src
367−
368−
369−<span class="c1"># speak to upstream</span>
370−<span class="c1"># -----------------</span>
371−<span class="c1">#</span>
372−<span class="c1"># Activate the &#39;http&#39; configuration for filtron or activate the &#39;socket&#39;</span>
373−<span class="c1"># configuration if you setup your HTTP server to use uWSGI protocol via sockets.</span>
374−
375−<span class="c1"># using IP:</span>
376−<span class="c1">#</span>
377−<span class="c1"># https://uwsgi-docs.readthedocs.io/en/latest/Options.html#plugin-http</span>
378−<span class="c1"># Native HTTP support: https://uwsgi-docs.readthedocs.io/en/latest/HTTP.html</span>
379−
380−<span class="nv">http</span> <span class="o">=</span> 127.0.0.1:8888
381−
382−<span class="c1"># using unix-sockets:</span>
383−<span class="c1">#</span>
384−<span class="c1"># On some distributions you need to create the app folder for the sockets::</span>
385−<span class="c1">#</span>
386−<span class="c1"># mkdir -p /run/uwsgi/app/searx</span>
387−<span class="c1"># chown -R searx:searx /run/uwsgi/app/searx</span>
388−<span class="c1">#</span>
389−<span class="c1"># socket = /run/uwsgi/app/searx/socket</span>
390−</pre></div>
391−</div>
392183</div>
393184<div class="ui bottom attached sphinx-tab tab segment sphinx-data-tab-RmVkb3JhIC8gUkhFTA== docutils container">
394−<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="o">[</span>uwsgi<span class="o">]</span>
395−
396−<span class="c1"># uWSGI core</span>
397−<span class="c1"># ----------</span>
398−<span class="c1">#</span>
399−<span class="c1"># https://uwsgi-docs.readthedocs.io/en/latest/Options.html#uwsgi-core</span>
400−
401−<span class="c1"># Who will run the code</span>
402−<span class="nv">uid</span> <span class="o">=</span> searx
403−<span class="nv">gid</span> <span class="o">=</span> searx
404−
405−<span class="c1"># set (python) default encoding UTF-8</span>
406−<span class="nv">env</span> <span class="o">=</span> <span class="nv">LANG</span><span class="o">=</span>C.UTF-8
407−<span class="nv">env</span> <span class="o">=</span> <span class="nv">LANGUAGE</span><span class="o">=</span>C.UTF-8
408−<span class="nv">env</span> <span class="o">=</span> <span class="nv">LC_ALL</span><span class="o">=</span>C.UTF-8
409−
410−<span class="c1"># chdir to specified directory before apps loading</span>
411−<span class="nv">chdir</span> <span class="o">=</span> /usr/local/searx/searx-src/searx
412−
413−<span class="c1"># searx configuration (settings.yml)</span>
414−<span class="nv">env</span> <span class="o">=</span> <span class="nv">SEARX_SETTINGS_PATH</span><span class="o">=</span>/etc/searx/settings.yml
415−
416−<span class="c1"># disable logging for privacy</span>
417−disable-logging <span class="o">=</span> <span class="nb">true</span>
418−
419−<span class="c1"># The right granted on the created socket</span>
420−chmod-socket <span class="o">=</span> 666
421−
422−<span class="c1"># Plugin to use and interpretor config</span>
423−single-interpreter <span class="o">=</span> <span class="nb">true</span>
424−
425−<span class="c1"># enable master process</span>
426−<span class="nv">master</span> <span class="o">=</span> <span class="nb">true</span>
427−
428−<span class="c1"># load apps in each worker instead of the master</span>
429−lazy-apps <span class="o">=</span> <span class="nb">true</span>
430−
431−<span class="c1"># load uWSGI plugins</span>
432−<span class="nv">plugin</span> <span class="o">=</span> python3,http
433−
434−<span class="c1"># By default the Python plugin does not initialize the GIL. This means your</span>
435−<span class="c1"># app-generated threads will not run. If you need threads, remember to enable</span>
436−<span class="c1"># them with enable-threads. Running uWSGI in multithreading mode (with the</span>
437−<span class="c1"># threads options) will automatically enable threading support. This *strange*</span>
438−<span class="c1"># default behaviour is for performance reasons.</span>
439−enable-threads <span class="o">=</span> <span class="nb">true</span>
440−
441−
442−<span class="c1"># plugin: python</span>
443−<span class="c1"># --------------</span>
444−<span class="c1">#</span>
445−<span class="c1"># https://uwsgi-docs.readthedocs.io/en/latest/Options.html#plugin-python</span>
446−
447−<span class="c1"># load a WSGI module</span>
448−<span class="nv">module</span> <span class="o">=</span> searx.webapp
449−
450−<span class="c1"># set PYTHONHOME/virtualenv</span>
451−<span class="nv">virtualenv</span> <span class="o">=</span> /usr/local/searx/searx-pyenv
452−
453−<span class="c1"># add directory (or glob) to pythonpath</span>
454−<span class="nv">pythonpath</span> <span class="o">=</span> /usr/local/searx/searx-src
455−
456−
457−<span class="c1"># speak to upstream</span>
458−<span class="c1"># -----------------</span>
459−<span class="c1">#</span>
460−<span class="c1"># Activate the &#39;http&#39; configuration for filtron or activate the &#39;socket&#39;</span>
461−<span class="c1"># configuration if you setup your HTTP server to use uWSGI protocol via sockets.</span>
462−
463−<span class="c1"># using IP:</span>
464−<span class="c1">#</span>
465−<span class="c1"># https://uwsgi-docs.readthedocs.io/en/latest/Options.html#plugin-http</span>
466−<span class="c1"># Native HTTP support: https://uwsgi-docs.readthedocs.io/en/latest/HTTP.html</span>
467−
468−<span class="nv">http</span> <span class="o">=</span> 127.0.0.1:8888
469−
470−<span class="c1"># using unix-sockets:</span>
471−<span class="c1">#</span>
472−<span class="c1"># On some distributions you need to create the app folder for the sockets::</span>
473−<span class="c1">#</span>
474−<span class="c1"># mkdir -p /run/uwsgi/app/searx</span>
475−<span class="c1"># chmod -R searx:searx /run/uwsgi/app/searx</span>
476−<span class="c1">#</span>
477−<span class="c1"># socket = /run/uwsgi/app/searx/socket</span>
478−</pre></div>
479−</div>
480185</div>
481186</div>
482187</div>
483188</div>
484189
485190
486− <div class="clearer"></div>
487191 </div>
488192 </div>
489193 </div>
@@ -535,7 +239,7 @@ enable-threads <span class="o">=</span> <span class="nb">true</span>
535239
536240 <div class="footer" role="contentinfo">
537241 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
538− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.1.2.
242+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.0.1.
539243 </div>
540244 <script src="../_static/version_warning_offset.js"></script>
541245
admin/installation.html+2−5
@@ -4,7 +4,6 @@
44<html>
55 <head>
66 <meta charset="utf-8" />
7− <meta name="viewport" content="width=device-width, initial-scale=1.0">
87 <meta name="viewport" content="width=device-width, initial-scale=1">
98 <title>Installation &#8212; Searx Documentation (Searx-0.17.0.tex)</title>
109 <link rel="stylesheet" href="../_static/searx.css" type="text/css" />
@@ -34,8 +33,7 @@
3433 <a href="index.html" title="Administrator documentation"
3534 accesskey="P">previous</a> |</li>
3635 <li class="nav-item nav-item-0"><a href="../index.html">Searx Documentation (Searx-0.17.0.tex)</a> &#187;</li>
37− <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Administrator documentation</a> &#187;</li>
38− <li class="nav-item nav-item-this"><a href="">Installation</a></li>
36+ <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Administrator documentation</a> &#187;</li>
3937 </ul>
4038 </div>
4139
@@ -95,7 +93,6 @@ $ <span class="nb">cd</span> searx
9593</div>
9694
9795
98− <div class="clearer"></div>
9996 </div>
10097 </div>
10198 </div>
@@ -147,7 +144,7 @@ $ <span class="nb">cd</span> searx
147144
148145 <div class="footer" role="contentinfo">
149146 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
150− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.1.2.
147+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.0.1.
151148 </div>
152149 <script src="../_static/version_warning_offset.js"></script>
153150
admin/morty.html+2−5
@@ -4,7 +4,6 @@
44<html>
55 <head>
66 <meta charset="utf-8" />
7− <meta name="viewport" content="width=device-width, initial-scale=1.0">
87 <meta name="viewport" content="width=device-width, initial-scale=1">
98 <title>How to setup result proxy &#8212; Searx Documentation (Searx-0.17.0.tex)</title>
109 <link rel="stylesheet" href="../_static/searx.css" type="text/css" />
@@ -34,8 +33,7 @@
3433 <a href="filtron.html" title="How to protect an instance"
3534 accesskey="P">previous</a> |</li>
3635 <li class="nav-item nav-item-0"><a href="../index.html">Searx Documentation (Searx-0.17.0.tex)</a> &#187;</li>
37− <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Administrator documentation</a> &#187;</li>
38− <li class="nav-item nav-item-this"><a href="">How to setup result proxy</a></li>
36+ <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Administrator documentation</a> &#187;</li>
3937 </ul>
4038 </div>
4139
@@ -71,7 +69,6 @@ possible to proxify all the result URLs with an external service, <a class="refe
7169</div>
7270
7371
74− <div class="clearer"></div>
7572 </div>
7673 </div>
7774 </div>
@@ -123,7 +120,7 @@ possible to proxify all the result URLs with an external service, <a class="refe
123120
124121 <div class="footer" role="contentinfo">
125122 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
126− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.1.2.
123+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.0.1.
127124 </div>
128125 <script src="../_static/version_warning_offset.js"></script>
129126
admin/plugins.html+6−17
@@ -4,7 +4,6 @@
44<html>
55 <head>
66 <meta charset="utf-8" />
7− <meta name="viewport" content="width=device-width, initial-scale=1.0">
87 <meta name="viewport" content="width=device-width, initial-scale=1">
98 <title>Plugins builtin &#8212; Searx Documentation (Searx-0.17.0.tex)</title>
109 <link rel="stylesheet" href="../_static/searx.css" type="text/css" />
@@ -34,8 +33,7 @@
3433 <a href="engines.html" title="Engines"
3534 accesskey="P">previous</a> |</li>
3635 <li class="nav-item nav-item-0"><a href="../index.html">Searx Documentation (Searx-0.17.0.tex)</a> &#187;</li>
37− <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Administrator documentation</a> &#187;</li>
38− <li class="nav-item nav-item-this"><a href="">Plugins builtin</a></li>
36+ <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Administrator documentation</a> &#187;</li>
3937 </ul>
4038 </div>
4139
@@ -91,19 +89,11 @@
9189</div>
9290</td>
9391</tr>
94−<tr class="row-odd"><th class="stub"><p>Open result links on new browser tabs</p></th>
95−<td></td>
96−<td><p>Results are opened in the same window by default. This plugin overwrites the default behaviour to open links on new tabs/windows. (JavaScript required)</p>
97−<div class="line-block">
98−<div class="line"><code class="docutils literal notranslate"><span class="pre">plugins/js/open_results_on_new_tab.js</span></code> </div>
99−</div>
100−</td>
101−</tr>
102−<tr class="row-even"><th class="stub"><p>Self Informations</p></th>
92+<tr class="row-odd"><th class="stub"><p>Self Informations</p></th>
10393<td><p>y</p></td>
10494<td><p>Displays your IP if the query is “ip” and your user agent if the query contains “user agent”.</p></td>
10595</tr>
106−<tr class="row-odd"><th class="stub"><p>Search on category select</p></th>
96+<tr class="row-even"><th class="stub"><p>Search on category select</p></th>
10797<td><p>y</p></td>
10898<td><p>Perform search immediately if a category selected. Disable to select multiple categories. (JavaScript required)</p>
10999<div class="line-block">
@@ -111,11 +101,11 @@
111101</div>
112102</td>
113103</tr>
114−<tr class="row-even"><th class="stub"><p>Tracker URL remover</p></th>
104+<tr class="row-odd"><th class="stub"><p>Tracker URL remover</p></th>
115105<td><p>y</p></td>
116106<td><p>Remove trackers arguments from the returned URL</p></td>
117107</tr>
118−<tr class="row-odd"><th class="stub"><p>Vim-like hotkeys</p></th>
108+<tr class="row-even"><th class="stub"><p>Vim-like hotkeys</p></th>
119109<td></td>
120110<td><p>Navigate search results with Vim-like hotkeys (JavaScript required). Press “h” key on main or result page to get help.</p>
121111<div class="line-block">
@@ -129,7 +119,6 @@
129119</div>
130120
131121
132− <div class="clearer"></div>
133122 </div>
134123 </div>
135124 </div>
@@ -181,7 +170,7 @@
181170
182171 <div class="footer" role="contentinfo">
183172 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
184− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.1.2.
173+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.0.1.
185174 </div>
186175 <script src="../_static/version_warning_offset.js"></script>
187176
admin/settings.html+2−5
@@ -4,7 +4,6 @@
44<html>
55 <head>
66 <meta charset="utf-8" />
7− <meta name="viewport" content="width=device-width, initial-scale=1.0">
87 <meta name="viewport" content="width=device-width, initial-scale=1">
98 <title>settings.yml &#8212; Searx Documentation (Searx-0.17.0.tex)</title>
109 <link rel="stylesheet" href="../_static/searx.css" type="text/css" />
@@ -34,8 +33,7 @@
3433 <a href="update-searx.html" title="How to update"
3534 accesskey="P">previous</a> |</li>
3635 <li class="nav-item nav-item-0"><a href="../index.html">Searx Documentation (Searx-0.17.0.tex)</a> &#187;</li>
37− <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Administrator documentation</a> &#187;</li>
38− <li class="nav-item nav-item-this"><a href=""><code class="docutils literal notranslate"><span class="pre">settings.yml</span></code></a></li>
36+ <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Administrator documentation</a> &#187;</li>
3937 </ul>
4038 </div>
4139
@@ -210,7 +208,6 @@ engines, and so won’t be described here.</p>
210208</div>
211209
212210
213− <div class="clearer"></div>
214211 </div>
215212 </div>
216213 </div>
@@ -262,7 +259,7 @@ engines, and so won’t be described here.</p>
262259
263260 <div class="footer" role="contentinfo">
264261 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
265− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.1.2.
262+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.0.1.
266263 </div>
267264 <script src="../_static/version_warning_offset.js"></script>
268265
admin/update-searx.html+2−5
@@ -4,7 +4,6 @@
44<html>
55 <head>
66 <meta charset="utf-8" />
7− <meta name="viewport" content="width=device-width, initial-scale=1.0">
87 <meta name="viewport" content="width=device-width, initial-scale=1">
98 <title>How to update &#8212; Searx Documentation (Searx-0.17.0.tex)</title>
109 <link rel="stylesheet" href="../_static/searx.css" type="text/css" />
@@ -40,8 +39,7 @@
4039 <a href="installation-docker.html" title="Docker installation"
4140 accesskey="P">previous</a> |</li>
4241 <li class="nav-item nav-item-0"><a href="../index.html">Searx Documentation (Searx-0.17.0.tex)</a> &#187;</li>
43− <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Administrator documentation</a> &#187;</li>
44− <li class="nav-item nav-item-this"><a href="">How to update</a></li>
42+ <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Administrator documentation</a> &#187;</li>
4543 </ul>
4644 </div>
4745
@@ -77,7 +75,6 @@
7775</div>
7876
7977
80− <div class="clearer"></div>
8178 </div>
8279 </div>
8380 </div>
@@ -129,7 +126,7 @@
129126
130127 <div class="footer" role="contentinfo">
131128 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
132− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.1.2.
129+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.0.1.
133130 </div>
134131 <script src="../_static/version_warning_offset.js"></script>
135132
blog/admin.html+2−5
@@ -4,7 +4,6 @@
44<html>
55 <head>
66 <meta charset="utf-8" />
7− <meta name="viewport" content="width=device-width, initial-scale=1.0">
87 <meta name="viewport" content="width=device-width, initial-scale=1">
98 <title>Searx admin interface &#8212; Searx Documentation (Searx-0.17.0.tex)</title>
109 <link rel="stylesheet" href="../_static/searx.css" type="text/css" />
@@ -34,8 +33,7 @@
3433 <a href="python3.html" title="Introducing Python 3 support"
3534 accesskey="P">previous</a> |</li>
3635 <li class="nav-item nav-item-0"><a href="../index.html">Searx Documentation (Searx-0.17.0.tex)</a> &#187;</li>
37− <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Blog</a> &#187;</li>
38− <li class="nav-item nav-item-this"><a href="">Searx admin interface</a></li>
36+ <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Blog</a> &#187;</li>
3937 </ul>
4038 </div>
4139
@@ -82,7 +80,6 @@ existing instances.</p>
8280</div>
8381
8482
85− <div class="clearer"></div>
8683 </div>
8784 </div>
8885 </div>
@@ -134,7 +131,7 @@ existing instances.</p>
134131
135132 <div class="footer" role="contentinfo">
136133 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
137− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.1.2.
134+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.0.1.
138135 </div>
139136 <script src="../_static/version_warning_offset.js"></script>
140137
blog/index.html+2−5
@@ -4,7 +4,6 @@
44<html>
55 <head>
66 <meta charset="utf-8" />
7− <meta name="viewport" content="width=device-width, initial-scale=1.0">
87 <meta name="viewport" content="width=device-width, initial-scale=1">
98 <title>Blog &#8212; Searx Documentation (Searx-0.17.0.tex)</title>
109 <link rel="stylesheet" href="../_static/searx.css" type="text/css" />
@@ -33,8 +32,7 @@
3332 <li class="right" >
3433 <a href="../utils/lxc.sh.html" title="utils/lxc.sh"
3534 accesskey="P">previous</a> |</li>
36− <li class="nav-item nav-item-0"><a href="../index.html">Searx Documentation (Searx-0.17.0.tex)</a> &#187;</li>
37− <li class="nav-item nav-item-this"><a href="">Blog</a></li>
35+ <li class="nav-item nav-item-0"><a href="../index.html">Searx Documentation (Searx-0.17.0.tex)</a> &#187;</li>
3836 </ul>
3937 </div>
4038
@@ -85,7 +83,6 @@
8583</div>
8684
8785
88− <div class="clearer"></div>
8986 </div>
9087 </div>
9188 </div>
@@ -134,7 +131,7 @@
134131
135132 <div class="footer" role="contentinfo">
136133 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
137− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.1.2.
134+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.0.1.
138135 </div>
139136 <script src="../_static/version_warning_offset.js"></script>
140137
blog/intro-offline.html+2−5
@@ -4,7 +4,6 @@
44<html>
55 <head>
66 <meta charset="utf-8" />
7− <meta name="viewport" content="width=device-width, initial-scale=1.0">
87 <meta name="viewport" content="width=device-width, initial-scale=1">
98 <title>Preparation for offline engines &#8212; Searx Documentation (Searx-0.17.0.tex)</title>
109 <link rel="stylesheet" href="../_static/searx.css" type="text/css" />
@@ -34,8 +33,7 @@
3433 <a href="admin.html" title="Searx admin interface"
3534 accesskey="P">previous</a> |</li>
3635 <li class="nav-item nav-item-0"><a href="../index.html">Searx Documentation (Searx-0.17.0.tex)</a> &#187;</li>
37− <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Blog</a> &#187;</li>
38− <li class="nav-item nav-item-this"><a href="">Preparation for offline engines</a></li>
36+ <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Blog</a> &#187;</li>
3937 </ul>
4038 </div>
4139
@@ -109,7 +107,6 @@ as a table. You can check out the pull request for more details see
109107</div>
110108
111109
112− <div class="clearer"></div>
113110 </div>
114111 </div>
115112 </div>
@@ -161,7 +158,7 @@ as a table. You can check out the pull request for more details see
161158
162159 <div class="footer" role="contentinfo">
163160 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
164− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.1.2.
161+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.0.1.
165162 </div>
166163 <script src="../_static/version_warning_offset.js"></script>
167164
blog/lxcdev-202006.html+2−5
@@ -4,7 +4,6 @@
44<html>
55 <head>
66 <meta charset="utf-8" />
7− <meta name="viewport" content="width=device-width, initial-scale=1.0">
87 <meta name="viewport" content="width=device-width, initial-scale=1">
98 <title>Developing in Linux containers [202006] &#8212; Searx Documentation (Searx-0.17.0.tex)</title>
109 <link rel="stylesheet" href="../_static/searx.css" type="text/css" />
@@ -40,8 +39,7 @@
4039 <a href="index.html" title="Blog"
4140 accesskey="P">previous</a> |</li>
4241 <li class="nav-item nav-item-0"><a href="../index.html">Searx Documentation (Searx-0.17.0.tex)</a> &#187;</li>
43− <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Blog</a> &#187;</li>
44− <li class="nav-item nav-item-this"><a href="">Developing in Linux containers [202006]</a></li>
42+ <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Blog</a> &#187;</li>
4543 </ul>
4644 </div>
4745
@@ -531,7 +529,6 @@ $ systemctl restart uwsgi@searx
531529</div>
532530
533531
534− <div class="clearer"></div>
535532 </div>
536533 </div>
537534 </div>
@@ -583,7 +580,7 @@ $ systemctl restart uwsgi@searx
583580
584581 <div class="footer" role="contentinfo">
585582 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
586− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.1.2.
583+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.0.1.
587584 </div>
588585 <script src="../_static/version_warning_offset.js"></script>
589586
blog/private-engines.html+2−5
@@ -4,7 +4,6 @@
44<html>
55 <head>
66 <meta charset="utf-8" />
7− <meta name="viewport" content="width=device-width, initial-scale=1.0">
87 <meta name="viewport" content="width=device-width, initial-scale=1">
98 <title>Limit access to your searx engines &#8212; Searx Documentation (Searx-0.17.0.tex)</title>
109 <link rel="stylesheet" href="../_static/searx.css" type="text/css" />
@@ -30,8 +29,7 @@
3029 <a href="intro-offline.html" title="Preparation for offline engines"
3130 accesskey="P">previous</a> |</li>
3231 <li class="nav-item nav-item-0"><a href="../index.html">Searx Documentation (Searx-0.17.0.tex)</a> &#187;</li>
33− <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Blog</a> &#187;</li>
34− <li class="nav-item nav-item-this"><a href="">Limit access to your searx engines</a></li>
32+ <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Blog</a> &#187;</li>
3533 </ul>
3634 </div>
3735
@@ -92,7 +90,6 @@ and come up with new solutions which fit your use case.</p>
9290</div>
9391
9492
95− <div class="clearer"></div>
9693 </div>
9794 </div>
9895 </div>
@@ -144,7 +141,7 @@ and come up with new solutions which fit your use case.</p>
144141
145142 <div class="footer" role="contentinfo">
146143 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
147− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.1.2.
144+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.0.1.
148145 </div>
149146 <script src="../_static/version_warning_offset.js"></script>
150147
blog/python3.html+2−5
@@ -4,7 +4,6 @@
44<html>
55 <head>
66 <meta charset="utf-8" />
7− <meta name="viewport" content="width=device-width, initial-scale=1.0">
87 <meta name="viewport" content="width=device-width, initial-scale=1">
98 <title>Introducing Python 3 support &#8212; Searx Documentation (Searx-0.17.0.tex)</title>
109 <link rel="stylesheet" href="../_static/searx.css" type="text/css" />
@@ -34,8 +33,7 @@
3433 <a href="lxcdev-202006.html" title="Developing in Linux containers [202006]"
3534 accesskey="P">previous</a> |</li>
3635 <li class="nav-item nav-item-0"><a href="../index.html">Searx Documentation (Searx-0.17.0.tex)</a> &#187;</li>
37− <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Blog</a> &#187;</li>
38− <li class="nav-item nav-item-this"><a href="">Introducing Python 3 support</a></li>
36+ <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Blog</a> &#187;</li>
3937 </ul>
4038 </div>
4139
@@ -95,7 +93,6 @@ version in your issue, so we can investigate it properly.</p>
9593</div>
9694
9795
98− <div class="clearer"></div>
9996 </div>
10097 </div>
10198 </div>
@@ -147,7 +144,7 @@ version in your issue, so we can investigate it properly.</p>
147144
148145 <div class="footer" role="contentinfo">
149146 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
150− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.1.2.
147+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.0.1.
151148 </div>
152149 <script src="../_static/version_warning_offset.js"></script>
153150
dev/contribution_guide.html+2−5
@@ -4,7 +4,6 @@
44<html>
55 <head>
66 <meta charset="utf-8" />
7− <meta name="viewport" content="width=device-width, initial-scale=1.0">
87 <meta name="viewport" content="width=device-width, initial-scale=1">
98 <title>How to contribute &#8212; Searx Documentation (Searx-0.17.0.tex)</title>
109 <link rel="stylesheet" href="../_static/searx.css" type="text/css" />
@@ -34,8 +33,7 @@
3433 <a href="quickstart.html" title="Development Quickstart"
3534 accesskey="P">previous</a> |</li>
3635 <li class="nav-item nav-item-0"><a href="../index.html">Searx Documentation (Searx-0.17.0.tex)</a> &#187;</li>
37− <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Developer documentation</a> &#187;</li>
38− <li class="nav-item nav-item-this"><a href="">How to contribute</a></li>
36+ <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Developer documentation</a> &#187;</li>
3937 </ul>
4038 </div>
4139
@@ -206,7 +204,6 @@ doc available at --&gt; https://asciimoo.github.io/searx
206204</div>
207205
208206
209− <div class="clearer"></div>
210207 </div>
211208 </div>
212209 </div>
@@ -258,7 +255,7 @@ doc available at --&gt; https://asciimoo.github.io/searx
258255
259256 <div class="footer" role="contentinfo">
260257 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
261− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.1.2.
258+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.0.1.
262259 </div>
263260 <script src="../_static/version_warning_offset.js"></script>
264261
dev/engine_overview.html+10−7
@@ -4,7 +4,6 @@
44<html>
55 <head>
66 <meta charset="utf-8" />
7− <meta name="viewport" content="width=device-width, initial-scale=1.0">
87 <meta name="viewport" content="width=device-width, initial-scale=1">
98 <title>Engine overview &#8212; Searx Documentation (Searx-0.17.0.tex)</title>
109 <link rel="stylesheet" href="../_static/searx.css" type="text/css" />
@@ -34,8 +33,7 @@
3433 <a href="contribution_guide.html" title="How to contribute"
3534 accesskey="P">previous</a> |</li>
3635 <li class="nav-item nav-item-0"><a href="../index.html">Searx Documentation (Searx-0.17.0.tex)</a> &#187;</li>
37− <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Developer documentation</a> &#187;</li>
38− <li class="nav-item nav-item-this"><a href="">Engine overview</a></li>
36+ <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Developer documentation</a> &#187;</li>
3937 </ul>
4038 </div>
4139
@@ -134,9 +132,9 @@ settings. However, the standard way is the following:</p>
134132<span id="engine-settings"></span><h3><a class="toc-backref" href="#id6">settings.yml</a><a class="headerlink" href="#settings-yml" title="Permalink to this headline">¶</a></h3>
135133<table class="docutils align-default">
136134<colgroup>
137−<col style="width: 30%" />
135+<col style="width: 29%" />
138136<col style="width: 14%" />
139−<col style="width: 56%" />
137+<col style="width: 57%" />
140138</colgroup>
141139<thead>
142140<tr class="row-odd"><th class="head"><p>argument</p></th>
@@ -166,6 +164,12 @@ settings. However, the standard way is the following:</p>
166164<td><p>boolean</p></td>
167165<td><p>display error messages on the web UI</p></td>
168166</tr>
167+<tr class="row-odd"><td><p>proxies</p></td>
168+<td><p>dict</p></td>
169+<td><p>set proxies for a specific engine
170+(e.g. <code class="docutils literal notranslate"><span class="pre">proxies</span> <span class="pre">:</span> <span class="pre">{http:</span> <span class="pre">socks5://proxy:port,</span>
171+<span class="pre">https:</span> <span class="pre">socks5://proxy:port}</span></code>)</p></td>
172+</tr>
169173</tbody>
170174</table>
171175</div>
@@ -585,7 +589,6 @@ time of publish <em>(not implemented yet)</em></p></td>
585589</div>
586590
587591
588− <div class="clearer"></div>
589592 </div>
590593 </div>
591594 </div>
@@ -637,7 +640,7 @@ time of publish <em>(not implemented yet)</em></p></td>
637640
638641 <div class="footer" role="contentinfo">
639642 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
640− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.1.2.
643+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.0.1.
641644 </div>
642645 <script src="../_static/version_warning_offset.js"></script>
643646
dev/index.html+3−5
@@ -4,7 +4,6 @@
44<html>
55 <head>
66 <meta charset="utf-8" />
7− <meta name="viewport" content="width=device-width, initial-scale=1.0">
87 <meta name="viewport" content="width=device-width, initial-scale=1">
98 <title>Developer documentation &#8212; Searx Documentation (Searx-0.17.0.tex)</title>
109 <link rel="stylesheet" href="../_static/searx.css" type="text/css" />
@@ -33,8 +32,7 @@
3332 <li class="right" >
3433 <a href="../admin/buildhosts.html" title="Buildhosts"
3534 accesskey="P">previous</a> |</li>
36− <li class="nav-item nav-item-0"><a href="../index.html">Searx Documentation (Searx-0.17.0.tex)</a> &#187;</li>
37− <li class="nav-item nav-item-this"><a href="">Developer documentation</a></li>
35+ <li class="nav-item nav-item-0"><a href="../index.html">Searx Documentation (Searx-0.17.0.tex)</a> &#187;</li>
3836 </ul>
3937 </div>
4038
@@ -75,6 +73,7 @@
7573</li>
7674<li class="toctree-l1"><a class="reference internal" href="plugins.html">Plugins</a><ul>
7775<li class="toctree-l2"><a class="reference internal" href="plugins.html#example-plugin">Example plugin</a></li>
76+<li class="toctree-l2"><a class="reference internal" href="plugins.html#external-plugins">External plugins</a></li>
7877<li class="toctree-l2"><a class="reference internal" href="plugins.html#register-your-plugin">Register your plugin</a></li>
7978<li class="toctree-l2"><a class="reference internal" href="plugins.html#plugin-entry-points">Plugin entry points</a></li>
8079</ul>
@@ -119,7 +118,6 @@
119118</div>
120119
121120
122− <div class="clearer"></div>
123121 </div>
124122 </div>
125123 </div>
@@ -168,7 +166,7 @@
168166
169167 <div class="footer" role="contentinfo">
170168 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
171− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.1.2.
169+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.0.1.
172170 </div>
173171 <script src="../_static/version_warning_offset.js"></script>
174172
dev/makefile.html+2−5
@@ -4,7 +4,6 @@
44<html>
55 <head>
66 <meta charset="utf-8" />
7− <meta name="viewport" content="width=device-width, initial-scale=1.0">
87 <meta name="viewport" content="width=device-width, initial-scale=1">
98 <title>Makefile Targets &#8212; Searx Documentation (Searx-0.17.0.tex)</title>
109 <link rel="stylesheet" href="../_static/searx.css" type="text/css" />
@@ -34,8 +33,7 @@
3433 <a href="translation.html" title="Translation"
3534 accesskey="P">previous</a> |</li>
3635 <li class="nav-item nav-item-0"><a href="../index.html">Searx Documentation (Searx-0.17.0.tex)</a> &#187;</li>
37− <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Developer documentation</a> &#187;</li>
38− <li class="nav-item nav-item-this"><a href="">Makefile Targets</a></li>
36+ <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Developer documentation</a> &#187;</li>
3937 </ul>
4038 </div>
4139
@@ -253,7 +251,6 @@ never need the latter.</p>
253251</div>
254252
255253
256− <div class="clearer"></div>
257254 </div>
258255 </div>
259256 </div>
@@ -305,7 +302,7 @@ never need the latter.</p>
305302
306303 <div class="footer" role="contentinfo">
307304 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
308− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.1.2.
305+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.0.1.
309306 </div>
310307 <script src="../_static/version_warning_offset.js"></script>
311308
dev/plugins.html+8−5
@@ -4,7 +4,6 @@
44<html>
55 <head>
66 <meta charset="utf-8" />
7− <meta name="viewport" content="width=device-width, initial-scale=1.0">
87 <meta name="viewport" content="width=device-width, initial-scale=1">
98 <title>Plugins &#8212; Searx Documentation (Searx-0.17.0.tex)</title>
109 <link rel="stylesheet" href="../_static/searx.css" type="text/css" />
@@ -34,8 +33,7 @@
3433 <a href="search_api.html" title="Search API"
3534 accesskey="P">previous</a> |</li>
3635 <li class="nav-item nav-item-0"><a href="../index.html">Searx Documentation (Searx-0.17.0.tex)</a> &#187;</li>
37− <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Developer documentation</a> &#187;</li>
38− <li class="nav-item nav-item-this"><a href="">Plugins</a></li>
36+ <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Developer documentation</a> &#187;</li>
3937 </ul>
4038 </div>
4139
@@ -72,6 +70,12 @@
7270</pre></div>
7371</div>
7472</div>
73+<div class="section" id="external-plugins">
74+<h2>External plugins<a class="headerlink" href="#external-plugins" title="Permalink to this headline">¶</a></h2>
75+<p>External plugins are standard python modules implementing all the requirements of the standard plugins.
76+Plugins can be enabled by adding them to <a class="reference internal" href="../admin/settings.html#settings-yml"><span class="std std-ref">settings.yml</span></a>’s <code class="docutils literal notranslate"><span class="pre">plugins</span></code> section.
77+Example external plugin can be found <a class="reference external" href="https://github.com/asciimoo/searx_external_plugin_example">here</a>.</p>
78+</div>
7579<div class="section" id="register-your-plugin">
7680<h2>Register your plugin<a class="headerlink" href="#register-your-plugin" title="Permalink to this headline">¶</a></h2>
7781<p>To enable your plugin register your plugin in
@@ -101,7 +105,6 @@ plugin.</p>
101105</div>
102106
103107
104− <div class="clearer"></div>
105108 </div>
106109 </div>
107110 </div>
@@ -153,7 +156,7 @@ plugin.</p>
153156
154157 <div class="footer" role="contentinfo">
155158 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
156− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.1.2.
159+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.0.1.
157160 </div>
158161 <script src="../_static/version_warning_offset.js"></script>
159162
dev/quickstart.html+2−5
@@ -4,7 +4,6 @@
44<html>
55 <head>
66 <meta charset="utf-8" />
7− <meta name="viewport" content="width=device-width, initial-scale=1.0">
87 <meta name="viewport" content="width=device-width, initial-scale=1">
98 <title>Development Quickstart &#8212; Searx Documentation (Searx-0.17.0.tex)</title>
109 <link rel="stylesheet" href="../_static/searx.css" type="text/css" />
@@ -34,8 +33,7 @@
3433 <a href="index.html" title="Developer documentation"
3534 accesskey="P">previous</a> |</li>
3635 <li class="nav-item nav-item-0"><a href="../index.html">Searx Documentation (Searx-0.17.0.tex)</a> &#187;</li>
37− <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Developer documentation</a> &#187;</li>
38− <li class="nav-item nav-item-this"><a href="">Development Quickstart</a></li>
36+ <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Developer documentation</a> &#187;</li>
3937 </ul>
4038 </div>
4139
@@ -153,7 +151,6 @@ must be created containing these format fixes. This phase can be skipped if
153151</div>
154152
155153
156− <div class="clearer"></div>
157154 </div>
158155 </div>
159156 </div>
@@ -205,7 +202,7 @@ must be created containing these format fixes. This phase can be skipped if
205202
206203 <div class="footer" role="contentinfo">
207204 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
208− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.1.2.
205+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.0.1.
209206 </div>
210207 <script src="../_static/version_warning_offset.js"></script>
211208
dev/reST.html+16−19
@@ -4,7 +4,6 @@
44<html>
55 <head>
66 <meta charset="utf-8" />
7− <meta name="viewport" content="width=device-width, initial-scale=1.0">
87 <meta name="viewport" content="width=device-width, initial-scale=1">
98 <title>reST primer &#8212; Searx Documentation (Searx-0.17.0.tex)</title>
109 <link rel="stylesheet" href="../_static/searx.css" type="text/css" />
@@ -34,8 +33,7 @@
3433 <a href="makefile.html" title="Makefile Targets"
3534 accesskey="P">previous</a> |</li>
3635 <li class="nav-item nav-item-0"><a href="../index.html">Searx Documentation (Searx-0.17.0.tex)</a> &#187;</li>
37− <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Developer documentation</a> &#187;</li>
38− <li class="nav-item nav-item-this"><a href="">reST primer</a></li>
36+ <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Developer documentation</a> &#187;</li>
3937 </ul>
4038 </div>
4139
@@ -445,7 +443,7 @@ content becomes smart.</p>
445443<h2><a class="toc-backref" href="#id24">Literal blocks</a><a class="headerlink" href="#literal-blocks" title="Permalink to this headline">¶</a></h2>
446444<p>The simplest form of <a class="reference external" href="http://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html#literal-blocks">literal-blocks</a> is a indented block introduced by
447445two colons (<code class="docutils literal notranslate"><span class="pre">::</span></code>). For highlighting use <a class="reference external" href="http://docutils.sourceforge.net/docs/ref/rst/directives.html#highlight">highlight</a> or <a class="reference internal" href="#rest-code"><span class="std std-ref">code-block</span></a> directive. To include literals from external files use
448−<a class="reference external" href="https://www.sphinx-doc.org/en/master/usage/restructuredtext/directives.html#directive-literalinclude" title="(in Sphinx v4.0.0+)"><code class="xref rst rst-dir docutils literal notranslate"><span class="pre">literalinclude</span></code></a> or <a class="reference external" href="https://return42.github.io/linuxdoc/linuxdoc-howto/kernel-include-directive.html#kernel-include-directive" title="(in LinuxDoc v20181010)"><span class="xref std std-ref">kernel-include</span></a>
446+<a class="reference external" href="https://www.sphinx-doc.org/en/master/usage/restructuredtext/directives.html#directive-literalinclude" title="(in Sphinx v4.0.0+)"><code class="xref rst rst-dir docutils literal notranslate"><span class="pre">literalinclude</span></code></a> or <a class="reference external" href="https://return42.github.io/linuxdoc/linuxdoc-howto/kernel-include-directive.html#kernel-include-directive" title="(in LinuxDoc v20200812)"><span class="xref std std-ref">kernel-include</span></a>
449447directive (latter one expands environment variables in the path name).</p>
450448<div class="section" id="rest-literal">
451449<span id="id3"></span><h3><a class="toc-backref" href="#id25"><code class="docutils literal notranslate"><span class="pre">::</span></code></a><a class="headerlink" href="#rest-literal" title="Permalink to this headline">¶</a></h3>
@@ -576,7 +574,7 @@ in a specific way.</p>
576574<td><p><code class="docutils literal notranslate"><span class="pre">:guilabel:`&amp;Cancel`</span></code></p></td>
577575</tr>
578576<tr class="row-odd"><td><p><a class="reference external" href="https://www.sphinx-doc.org/en/master/usage/restructuredtext/roles.html#role-kbd" title="(in Sphinx v4.0.0+)"><code class="xref rst rst-role docutils literal notranslate"><span class="pre">kbd</span></code></a></p></td>
579−<td><p><kbd class="kbd docutils literal notranslate"><kbd class="kbd docutils literal notranslate">C</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <kbd class="kbd docutils literal notranslate">C</kbd>-<kbd class="kbd docutils literal notranslate">f</kbd></kbd></p></td>
577+<td><p><kbd class="kbd docutils literal notranslate">C-x C-f</kbd></p></td>
580578<td><p><code class="docutils literal notranslate"><span class="pre">:kbd:`C-x</span> <span class="pre">C-f`</span></code></p></td>
581579</tr>
582580<tr class="row-even"><td><p><a class="reference external" href="https://www.sphinx-doc.org/en/master/usage/restructuredtext/roles.html#role-menuselection" title="(in Sphinx v4.0.0+)"><code class="xref rst rst-role docutils literal notranslate"><span class="pre">menuselection</span></code></a></p></td>
@@ -588,7 +586,7 @@ in a specific way.</p>
588586<td><p><code class="docutils literal notranslate"><span class="pre">:download:`this</span> <span class="pre">file</span> <span class="pre">&lt;reST.rst&gt;`</span></code></p></td>
589587</tr>
590588<tr class="row-even"><td><p><a class="reference internal" href="#math">math</a></p></td>
591−<td><p><img class="math" src="../_images/math/6673b43f9fe29455c1fcd1164e5844698cc64d38.svg" alt="a^2 + b^2 = c^2"/></p></td>
589+<td><p><span class="math">a^2 + b^2 = c^2</span></p></td>
592590<td><p><code class="docutils literal notranslate"><span class="pre">:math:`a^2</span> <span class="pre">+</span> <span class="pre">b^2</span> <span class="pre">=</span> <span class="pre">c^2`</span></code></p></td>
593591</tr>
594592<tr class="row-odd"><td><p><a class="reference external" href="https://www.sphinx-doc.org/en/master/usage/restructuredtext/roles.html#role-ref" title="(in Sphinx v4.0.0+)"><code class="xref rst rst-role docutils literal notranslate"><span class="pre">ref</span></code></a></p></td>
@@ -630,15 +628,15 @@ in a specific way.</p>
630628<h2><a class="toc-backref" href="#id29">Figures &amp; Images</a><a class="headerlink" href="#figures-images" title="Permalink to this headline">¶</a></h2>
631629<div class="sidebar">
632630<p class="sidebar-title">Image processing</p>
633−<p>With the directives from <a class="reference external" href="https://return42.github.io/linuxdoc/linuxdoc-howto/kfigure.html#kfigure" title="(in LinuxDoc v20181010)"><span class="xref std std-ref">linuxdoc</span></a> the build process
631+<p>With the directives from <a class="reference external" href="https://return42.github.io/linuxdoc/linuxdoc-howto/kfigure.html#kfigure" title="(in LinuxDoc v20200812)"><span class="xref std std-ref">linuxdoc</span></a> the build process
634632is flexible. To get best results in the generated output format, install
635633<a class="reference external" href="https://www.imagemagick.org">ImageMagick</a> and <a class="reference external" href="https://graphviz.gitlab.io">Graphviz</a>.</p>
636634</div>
637−<p>Searx’s sphinx setup includes: <a class="reference external" href="https://return42.github.io/linuxdoc/linuxdoc-howto/kfigure.html#kfigure" title="(in LinuxDoc v20181010)"><span>Scalable figure and image handling</span></a>. Scaleable here means;
635+<p>Searx’s sphinx setup includes: <a class="reference external" href="https://return42.github.io/linuxdoc/linuxdoc-howto/kfigure.html#kfigure" title="(in LinuxDoc v20200812)"><span>Scalable figure and image handling</span></a>. Scaleable here means;
638636scaleable in sense of the build process. Normally in absence of a converter
639637tool, the build process will break. From the authors POV it’s annoying to care
640638about the build process when handling with images, especially since he has no
641−access to the build process. With <a class="reference external" href="https://return42.github.io/linuxdoc/linuxdoc-howto/kfigure.html#kfigure" title="(in LinuxDoc v20181010)"><span>Scalable figure and image handling</span></a> the build process
639+access to the build process. With <a class="reference external" href="https://return42.github.io/linuxdoc/linuxdoc-howto/kfigure.html#kfigure" title="(in LinuxDoc v20200812)"><span>Scalable figure and image handling</span></a> the build process
642640continues and scales output quality in dependence of installed image processors.</p>
643641<p>If you want to add an image, you should use the <code class="docutils literal notranslate"><span class="pre">kernel-figure</span></code> (inheritance
644642of <a class="reference external" href="http://docutils.sourceforge.net/docs/ref/rst/directives.html#figure">figure</a>) and <code class="docutils literal notranslate"><span class="pre">kernel-image</span></code> (inheritance of <a class="reference external" href="http://docutils.sourceforge.net/docs/ref/rst/directives.html#image">image</a>)
@@ -660,7 +658,7 @@ directives. E.g. to insert a figure with a scaleable image format use SVG
660658<p>To refer the figure, a caption block is needed: <a class="reference internal" href="#svg-image-example"><span class="std std-ref">Simple SVG image.</span></a>.</p>
661659<div class="section" id="dot-files-aka-graphviz">
662660<h3><a class="toc-backref" href="#id30">DOT files (aka Graphviz)</a><a class="headerlink" href="#dot-files-aka-graphviz" title="Permalink to this headline">¶</a></h3>
663−<p>With <a class="reference external" href="https://return42.github.io/linuxdoc/linuxdoc-howto/kfigure.html#kernel-figure" title="(in LinuxDoc v20181010)"><span>kernel-figure &amp; kernel-image</span></a> reST support for <strong>DOT</strong> formatted files is
661+<p>With <a class="reference external" href="https://return42.github.io/linuxdoc/linuxdoc-howto/kfigure.html#kernel-figure" title="(in LinuxDoc v20200812)"><span>kernel-figure &amp; kernel-image</span></a> reST support for <strong>DOT</strong> formatted files is
664662given.</p>
665663<ul class="simple">
666664<li><p><a class="reference external" href="https://graphviz.gitlab.io/_pages/pdf/dotguide.pdf">Graphviz’s dot</a></p></li>
@@ -686,7 +684,7 @@ given.</p>
686684<div class="section" id="kernel-render-dot">
687685<h3><a class="toc-backref" href="#id31"><code class="docutils literal notranslate"><span class="pre">kernel-render</span></code> DOT</a><a class="headerlink" href="#kernel-render-dot" title="Permalink to this headline">¶</a></h3>
688686<p>Embed <em>render</em> markups (or languages) like Graphviz’s <strong>DOT</strong> is provided by the
689−<a class="reference external" href="https://return42.github.io/linuxdoc/linuxdoc-howto/kfigure.html#kernel-render" title="(in LinuxDoc v20181010)"><span>kernel-render</span></a> directive. A simple example of embedded <a class="reference external" href="https://graphviz.gitlab.io/_pages/doc/info/lang.html">DOT</a> is
687+<a class="reference external" href="https://return42.github.io/linuxdoc/linuxdoc-howto/kfigure.html#kernel-render" title="(in LinuxDoc v20200812)"><span>kernel-render</span></a> directive. A simple example of embedded <a class="reference external" href="https://graphviz.gitlab.io/_pages/doc/info/lang.html">DOT</a> is
690688shown in figure <a class="reference internal" href="#dot-render-example"><span class="std std-ref">Embedded DOT (Graphviz) code</span></a>:</p>
691689<div class="highlight-reST notranslate"><div class="highlight"><pre><span></span><span class="p">..</span> <span class="nt">_dot render example:</span>
692690
@@ -702,7 +700,7 @@ Attribute <span class="s">``caption``</span> is needed, if you want to refer the
702700render example`.
703701</pre></div>
704702</div>
705−<p>Please note <a class="reference external" href="https://return42.github.io/linuxdoc/linuxdoc-howto/kfigure.html#kfigure-build-tools" title="(in LinuxDoc v20181010)"><span class="xref std std-ref">build tools</span></a>. If <a class="reference external" href="https://graphviz.gitlab.io">Graphviz</a> is
703+<p>Please note <a class="reference external" href="https://return42.github.io/linuxdoc/linuxdoc-howto/kfigure.html#kfigure-build-tools" title="(in LinuxDoc v20200812)"><span class="xref std std-ref">build tools</span></a>. If <a class="reference external" href="https://graphviz.gitlab.io">Graphviz</a> is
706704installed, you will see an vector image. If not, the raw markup is inserted as
707705<em>literal-block</em>.</p>
708706<div class="rst-example admonition">
@@ -1190,7 +1188,7 @@ span rows.</p></td>
11901188</div>
11911189<div class="section" id="flat-table">
11921190<span id="rest-flat-table"></span><h3><a class="toc-backref" href="#id47">flat-table</a><a class="headerlink" href="#flat-table" title="Permalink to this headline">¶</a></h3>
1193−<p>The <code class="docutils literal notranslate"><span class="pre">flat-table</span></code> is a further developed variant of the <a class="reference external" href="https://return42.github.io/linuxdoc/linuxdoc-howto/table-markup.html#list-table-directives" title="(in LinuxDoc v20181010)"><span class="xref std std-ref">list tables</span></a>. It is a double-stage list similar to the
1191+<p>The <code class="docutils literal notranslate"><span class="pre">flat-table</span></code> is a further developed variant of the <a class="reference external" href="https://return42.github.io/linuxdoc/linuxdoc-howto/table-markup.html#list-table-directives" title="(in LinuxDoc v20200812)"><span class="xref std std-ref">list tables</span></a>. It is a double-stage list similar to the
11941192<a class="reference external" href="http://docutils.sourceforge.net/docs/ref/rst/directives.html#list-table">list-table</a> with some additional features:</p>
11951193<dl class="simple">
11961194<dt>column-span: <code class="docutils literal notranslate"><span class="pre">cspan</span></code></dt><dd><p>with the role <code class="docutils literal notranslate"><span class="pre">cspan</span></code> a cell can be extended through additional columns</p>
@@ -1515,8 +1513,8 @@ is shown.
15151513<p>In <a class="reference internal" href="#equation-schroedinger-general">(1)</a> the time-dependent Schrödinger equation
15161514is shown.</p>
15171515<div class="math" id="equation-schroedinger-general">
1518−<p><span class="eqno">(1)<a class="headerlink" href="#equation-schroedinger-general" title="Permalink to this equation">¶</a></span><img src="../_images/math/a6a994cb6e7278ec30eaebe7e636046d3deccb5b.svg" alt="\mathrm{i}\hbar\dfrac{\partial}{\partial t} |\,\psi (t) \rangle =
1519− \hat{H} |\,\psi (t) \rangle."/></p>
1516+<p><span class="eqno">(1)<a class="headerlink" href="#equation-schroedinger-general" title="Permalink to this equation">¶</a></span><span class="math">\mathrm{i}\hbar\dfrac{\partial}{\partial t} |\,\psi (t) \rangle =
1517+ \hat{H} |\,\psi (t) \rangle.</span></p>
15201518</div></div>
15211519<p>The next example shows the difference of <code class="docutils literal notranslate"><span class="pre">\tfrac</span></code> (<em>textstyle</em>) and <code class="docutils literal notranslate"><span class="pre">\dfrac</span></code>
15221520(<em>displaystyle</em>) used in a inline markup or another fraction.</p>
@@ -1529,13 +1527,13 @@ is shown.</p>
15291527<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy
15301528eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam
15311529voluptua. …
1532−<code class="docutils literal notranslate"><span class="pre">\tfrac</span></code> <strong>inline example</strong> <img class="math" src="../_images/math/3b8127a8eed95247f9249ea6c85e8e86df1baa82.svg" alt="\tfrac{\tfrac{1}{x}+\tfrac{1}{y}}{y-z}"/>
1530+<code class="docutils literal notranslate"><span class="pre">\tfrac</span></code> <strong>inline example</strong> <span class="math">\tfrac{\tfrac{1}{x}+\tfrac{1}{y}}{y-z}</span>
15331531At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd
15341532gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.</p>
15351533<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy
15361534eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam
15371535voluptua. …
1538−<code class="docutils literal notranslate"><span class="pre">\tfrac</span></code> <strong>inline example</strong> <img class="math" src="../_images/math/07c9ff4251510b06013159f4e45ec9ab97044096.svg" alt="\dfrac{\dfrac{1}{x}+\dfrac{1}{y}}{y-z}"/>
1536+<code class="docutils literal notranslate"><span class="pre">\tfrac</span></code> <strong>inline example</strong> <span class="math">\dfrac{\dfrac{1}{x}+\dfrac{1}{y}}{y-z}</span>
15391537At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd
15401538gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.</p>
15411539</div>
@@ -1543,7 +1541,6 @@ gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.</p>
15431541</div>
15441542
15451543
1546− <div class="clearer"></div>
15471544 </div>
15481545 </div>
15491546 </div>
@@ -1595,7 +1592,7 @@ gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.</p>
15951592
15961593 <div class="footer" role="contentinfo">
15971594 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
1598− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.1.2.
1595+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.0.1.
15991596 </div>
16001597 <script src="../_static/version_warning_offset.js"></script>
16011598
dev/search_api.html+2−5
@@ -4,7 +4,6 @@
44<html>
55 <head>
66 <meta charset="utf-8" />
7− <meta name="viewport" content="width=device-width, initial-scale=1.0">
87 <meta name="viewport" content="width=device-width, initial-scale=1">
98 <title>Search API &#8212; Searx Documentation (Searx-0.17.0.tex)</title>
109 <link rel="stylesheet" href="../_static/searx.css" type="text/css" />
@@ -34,8 +33,7 @@
3433 <a href="engine_overview.html" title="Engine overview"
3534 accesskey="P">previous</a> |</li>
3635 <li class="nav-item nav-item-0"><a href="../index.html">Searx Documentation (Searx-0.17.0.tex)</a> &#187;</li>
37− <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Developer documentation</a> &#187;</li>
38− <li class="nav-item nav-item-this"><a href="">Search API</a></li>
36+ <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Developer documentation</a> &#187;</li>
3937 </ul>
4038 </div>
4139
@@ -143,7 +141,6 @@ instance. See the available options in the preferences page of the instance.</p>
143141</div>
144142
145143
146− <div class="clearer"></div>
147144 </div>
148145 </div>
149146 </div>
@@ -195,7 +192,7 @@ instance. See the available options in the preferences page of the instance.</p>
195192
196193 <div class="footer" role="contentinfo">
197194 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
198− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.1.2.
195+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.0.1.
199196 </div>
200197 <script src="../_static/version_warning_offset.js"></script>
201198
dev/translation.html+2−5
@@ -4,7 +4,6 @@
44<html>
55 <head>
66 <meta charset="utf-8" />
7− <meta name="viewport" content="width=device-width, initial-scale=1.0">
87 <meta name="viewport" content="width=device-width, initial-scale=1">
98 <title>Translation &#8212; Searx Documentation (Searx-0.17.0.tex)</title>
109 <link rel="stylesheet" href="../_static/searx.css" type="text/css" />
@@ -34,8 +33,7 @@
3433 <a href="plugins.html" title="Plugins"
3534 accesskey="P">previous</a> |</li>
3635 <li class="nav-item nav-item-0"><a href="../index.html">Searx Documentation (Searx-0.17.0.tex)</a> &#187;</li>
37− <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Developer documentation</a> &#187;</li>
38− <li class="nav-item nav-item-this"><a href="">Translation</a></li>
36+ <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Developer documentation</a> &#187;</li>
3937 </ul>
4038 </div>
4139
@@ -97,7 +95,6 @@ create a PR.</p>
9795</div>
9896
9997
100− <div class="clearer"></div>
10198 </div>
10299 </div>
103100 </div>
@@ -149,7 +146,7 @@ create a PR.</p>
149146
150147 <div class="footer" role="contentinfo">
151148 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
152− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.1.2.
149+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.0.1.
153150 </div>
154151 <script src="../_static/version_warning_offset.js"></script>
155152
genindex.html+3−5
@@ -1,10 +1,10 @@
11
2+
23<!DOCTYPE html>
34
45<html>
56 <head>
67 <meta charset="utf-8" />
7− <meta name="viewport" content="width=device-width, initial-scale=1.0">
88 <meta name="viewport" content="width=device-width, initial-scale=1">
99 <title>Index &#8212; Searx Documentation (Searx-0.17.0.tex)</title>
1010 <link rel="stylesheet" href="_static/searx.css" type="text/css" />
@@ -31,8 +31,7 @@
3131 <li class="right" style="margin-right: 10px">
3232 <a href="#" title="General Index"
3333 accesskey="I">index</a></li>
34− <li class="nav-item nav-item-0"><a href="index.html">Searx Documentation (Searx-0.17.0.tex)</a> &#187;</li>
35− <li class="nav-item nav-item-this"><a href="">Index</a></li>
34+ <li class="nav-item nav-item-0"><a href="index.html">Searx Documentation (Searx-0.17.0.tex)</a> &#187;</li>
3635 </ul>
3736 </div>
3837
@@ -77,7 +76,6 @@
7776
7877
7978
80− <div class="clearer"></div>
8179 </div>
8280 </div>
8381 </div>
@@ -123,7 +121,7 @@
123121
124122 <div class="footer" role="contentinfo">
125123 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
126− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.1.2.
124+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.0.1.
127125 </div>
128126 <script src="_static/version_warning_offset.js"></script>
129127
index.html+2−5
@@ -4,7 +4,6 @@
44<html>
55 <head>
66 <meta charset="utf-8" />
7− <meta name="viewport" content="width=device-width, initial-scale=1.0">
87 <meta name="viewport" content="width=device-width, initial-scale=1">
98 <title>Welcome to searx &#8212; Searx Documentation (Searx-0.17.0.tex)</title>
109 <link rel="stylesheet" href="_static/searx.css" type="text/css" />
@@ -29,8 +28,7 @@
2928 <li class="right" >
3029 <a href="user/index.html" title="User documentation"
3130 accesskey="N">next</a> |</li>
32− <li class="nav-item nav-item-0"><a href="#">Searx Documentation (Searx-0.17.0.tex)</a> &#187;</li>
33− <li class="nav-item nav-item-this"><a href="">Welcome to searx</a></li>
31+ <li class="nav-item nav-item-0"><a href="#">Searx Documentation (Searx-0.17.0.tex)</a> &#187;</li>
3432 </ul>
3533 </div>
3634
@@ -122,7 +120,6 @@ digital rights</p></li>
122120</div>
123121
124122
125− <div class="clearer"></div>
126123 </div>
127124 </div>
128125 </div>
@@ -171,7 +168,7 @@ digital rights</p></li>
171168
172169 <div class="footer" role="contentinfo">
173170 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
174− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.1.2.
171+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.0.1.
175172 </div>
176173 <script src="_static/version_warning_offset.js"></script>
177174
search.html+2−5
@@ -4,7 +4,6 @@
44<html>
55 <head>
66 <meta charset="utf-8" />
7− <meta name="viewport" content="width=device-width, initial-scale=1.0">
87 <meta name="viewport" content="width=device-width, initial-scale=1">
98 <title>Search &#8212; Searx Documentation (Searx-0.17.0.tex)</title>
109 <link rel="stylesheet" href="_static/searx.css" type="text/css" />
@@ -36,8 +35,7 @@
3635 <li class="right" style="margin-right: 10px">
3736 <a href="genindex.html" title="General Index"
3837 accesskey="I">index</a></li>
39− <li class="nav-item nav-item-0"><a href="index.html">Searx Documentation (Searx-0.17.0.tex)</a> &#187;</li>
40− <li class="nav-item nav-item-this"><a href="">Search</a></li>
38+ <li class="nav-item nav-item-0"><a href="index.html">Searx Documentation (Searx-0.17.0.tex)</a> &#187;</li>
4139 </ul>
4240 </div>
4341
@@ -68,7 +66,6 @@
6866
6967 </div>
7068
71− <div class="clearer"></div>
7269 </div>
7370 </div>
7471 </div>
@@ -104,7 +101,7 @@
104101
105102 <div class="footer" role="contentinfo">
106103 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
107− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.1.2.
104+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.0.1.
108105 </div>
109106 <script src="_static/version_warning_offset.js"></script>
110107
searchindex.js+1−1
@@ -1 +1 @@
1−Search.setIndex({docnames:["admin/api","admin/architecture","admin/buildhosts","admin/engines","admin/filtron","admin/index","admin/installation","admin/installation-apache","admin/installation-docker","admin/installation-nginx","admin/installation-searx","admin/installation-uwsgi","admin/morty","admin/plugins","admin/settings","admin/update-searx","blog/admin","blog/index","blog/intro-offline","blog/lxcdev-202006","blog/private-engines","blog/python3","dev/contribution_guide","dev/engine_overview","dev/index","dev/makefile","dev/plugins","dev/quickstart","dev/reST","dev/search_api","dev/translation","index","user/index","user/own-instance","user/search_syntax","utils/filtron.sh","utils/index","utils/lxc.sh","utils/morty.sh","utils/searx.sh"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":1,"sphinx.ext.intersphinx":1,"sphinx.ext.viewcode":1,sphinx:56},filenames:["admin/api.rst","admin/architecture.rst","admin/buildhosts.rst","admin/engines.rst","admin/filtron.rst","admin/index.rst","admin/installation.rst","admin/installation-apache.rst","admin/installation-docker.rst","admin/installation-nginx.rst","admin/installation-searx.rst","admin/installation-uwsgi.rst","admin/morty.rst","admin/plugins.rst","admin/settings.rst","admin/update-searx.rst","blog/admin.rst","blog/index.rst","blog/intro-offline.rst","blog/lxcdev-202006.rst","blog/private-engines.rst","blog/python3.rst","dev/contribution_guide.rst","dev/engine_overview.rst","dev/index.rst","dev/makefile.rst","dev/plugins.rst","dev/quickstart.rst","dev/reST.rst","dev/search_api.rst","dev/translation.rst","index.rst","user/index.rst","user/own-instance.rst","user/search_syntax.rst","utils/filtron.sh.rst","utils/index.rst","utils/lxc.sh.rst","utils/morty.sh.rst","utils/searx.sh.rst"],objects:{},objnames:{},objtypes:{},terms:{"0pointer":11,"0xa9":28,"1337x":3,"15px":28,"367ed0f4f4f300bd1457e5c87d036ab2":10,"3ad999937971db2678f686f1f9bdea20":[],"3eff":19,"40px":28,"573b":19,"70px":28,"800gbpciex4":39,"9b65":19,"\u65e5\u672c\u8a9e":14,"abstract":17,"boolean":[23,28],"break":[22,28],"byte":23,"case":[7,9,14,19,20,27,33,35,38,39],"class":7,"default":[4,7,8,9,11,12,14,21,22,25,26,28,29,31,33,34,35,36,37,38,39],"espa\u00f1ol":14,"export":[8,9,10,19,25,35,37,38],"fran\u00e7ai":14,"function":[18,23,26,28,37],"import":[9,18,28],"int":[4,23,28],"long":33,"new":[3,7,8,9,10,11,13,16,18,20,22,25,26,27,29,30,38],"null":[7,9,22],"public":[1,5,6,13,28,36,37],"return":[13,14,18,24,26,28,33],"schr\u00f6dinger":28,"short":27,"static":[2,4,9,26],"switch":[7,22],"t\u00fcrk\u00e7e":14,"true":[0,4,7,9,10,11,14,18,23,26,27,28,29,35,38],"try":[10,25,27,33],"var":7,"while":[11,18,19,25,28],And:[7,19,26,28],But:[16,21,23,33,37],DNS:[36,37],For:[2,4,7,8,9,10,11,19,20,22,25,27,28,29],IPs:[4,36],Not:28,One:[11,16],That:28,The:[0,2,5,6,8,11,14,20,23,25,28,29,33,35,36,37,38,39],Then:[18,21,27,30],There:[7,11,22,28],These:[23,28],USE:7,Use:[4,7,9],Used:[7,14],Uses:14,With:[7,19,25,28,37],__dict__:28,__init__:26,__name__:28,_anchor:28,_chapter:28,_doc:28,_dot:28,_rest:28,_section:28,_sphinx:28,_subsect:28,_svg:28,a2disconf:7,a2dismod:7,a2dissit:7,a2enconf:7,a2enmod:7,a2ensit:7,abbrev:34,abl:[2,14,18,22,23,28],about:[1,19,20,22,25,31,37],abov:[7,10,19,22,28,29,37],absenc:28,abus:[4,33],academ:3,accept:[4,10,18,34],access:[4,7,13,16,17,18,19,28,31,33],access_log:9,accord:[8,11],account:[7,9,19,30,35,36,38,39],accusam:28,acg:3,acgsou:3,acknowledg:17,across:14,act:[12,16],action:[0,4,11],activ:[7,9,10,11,12,14,19,21,22,27,29,35,38,39],adapt:23,add:[6,7,9,11,12,20,22,25,26,28,34,35,36,38,39],added:[11,19,20,25,26],adding:[18,28,36],addit:[2,23,25,27,28],addition:[31,33],address:[12,14,23,33,36],adipisici:28,adjust:25,admin:[14,17,19,20,28,31,36,38],administr:[16,18,20,29,31,33],admonit:24,adopt:22,adorn:28,ads:33,advantag:[16,28],advertis:33,advis:[4,7,9],af2cae6:28,affect:16,after:[10,21,26,27,28,30,35,38],again:25,agent:[4,10,13,14,23],aggreg:[4,31,33],agpl:[36,37],aim:[16,25,28],aka:25,alia:9,align:28,aliquid:28,aliquyam:28,all:[0,6,7,12,19,21,22,23,25,28,29,35,36,37,38,39],allow:[7,10,14,28,34],allowoverrid:7,alltogeth:5,along:4,alreadi:[7,9,19,22,27],also:[2,7,8,10,11,19,22,25,28,33,34,36],alt:28,alter:22,altern:[6,9,27,28,37],alwai:[8,9,19,23,27,33,35,38],amd64:[35,38],amet:28,among:[22,33],amsmath:28,analog:19,analysi:2,ancel:28,anchor:24,ani:[2,6,7,11,25,28,29,31,36],annoi:28,anonym:[31,33],anoth:[11,14,16,19,23,28,37],answer:[14,28,33],anymor:7,anyon:31,anyth:[14,21,33],anywai:[25,28],apach:[1,4,5,6,11,14,31,35,36,37,38,39],apache2:7,apache2ctl:7,api:[5,14,20,23,24,30,31,35],api_kei:[14,23],apikei:14,apk:3,apkm:3,apkmirror:3,app:[3,7,9,11,19,28,35,38,39],appear:[27,28],append:18,appli:[14,15,22],applic:[4,9,11,14,16,19,39],approach:11,april:37,apt:[2,7,9,10,27,28],arbitrari:[18,23],arch:[0,2,3,7,9,10,11,20,28],architectur:[4,5,6,7,9,19,31,35,38,39],archiv:3,archlinux:[3,11,20,37],argument:[12,13,28],arrai:23,arrow:28,art:[28,29],articl:24,arx:3,arxiv:3,asciimoo:[6,8,10,19,22,25,27,30,35,38,39],ascrib:28,aspect:[19,22],assert:22,assign:23,assum:[10,28],asterisk:28,attach:26,attend:19,attent:28,attribut:28,audienc:28,author:[22,28],auto:[19,28,30,37],autobuild:25,autocomplet:[0,8,29],autodoc:28,autoindex:7,autoindex_modul:7,automat:[11,13,28],avail:[7,9,11,13,14,18,22,27,29,33,35,38,39],avoid:[4,6,13,14],awar:[7,28,36],babel:[2,10],back:19,backquot:28,backslash:28,backup:36,balanc:25,ban:33,bang:14,bar:[5,28,35,38],barrier:16,base:[2,8,10,14,18,19,23,25,29,37],base_url:[8,9,14,23],baseprofil:28,bash:[10,19,28,35,36,37,38],basic:[24,37],batch:36,baz:28,becaus:[16,20,22,23,27,30,33],becom:[19,28],been:[18,19,22],befor:[6,10,11,19,21,22,25,26,27,28,33,36,37],beginn:9,behavior:28,behaviour:[11,13,22,26],being:[4,14,16,21,31],below:[4,6,10,11,14,22,27,28,30],benefit:20,besid:33,best:[2,25,28,33,36],better:[2,7,9,23,25,33],between:[4,23,28],big:28,bigger:14,biggest:16,bii:3,bin:[2,3,10,11,21,25,27,35,38],binari:[35,38],bind:8,bind_address:8,bing:[3,14],bing_imag:3,bing_new:3,bing_video:3,bit:[11,28],bitbucket:[0,3],biv:3,black:28,blank:[14,28],block:[4,14,24],blocker:19,blog:[11,19,28,31],bodi:[10,22,28],boilerpl:[10,19,25],bold:28,boldfac:28,born:22,bot:19,both:[11,20,21,22,29,33],botlimit:4,bottom:[13,26],boundingbox:23,box:[1,6,31,37],branch:[22,25,36],brand:[25,36],bring:[25,28],broken:28,browser:[10,13,14,16,19,21,22,25,33,37],btdigg:3,bug:[11,17,25,27],buggi:11,bugreport:[11,22],build:[1,5,6,10,19,24,37],buildenv:25,builder:28,buildhost:[5,19,25,31,36,39],built:[22,23,27,28],builtin:[5,26,31],bundl:10,c3tv:3,calcul:9,call:[16,19,20,25,30,37],callback:26,can:[0,1,2,4,6,7,8,9,10,11,12,14,16,18,19,20,21,22,23,25,26,27,28,31,33,35,37,38,39],cancel:28,cannot:[2,28,33,35,38],capabl:[16,22],caplabl:18,captcha:33,caption:28,cardin:22,care:[14,28,36,37],carv:20,cat:[35,37,38],catcher:28,categori:[0,3,13,14,18,23,28,29,34],caution:28,caveat:28,ccc:3,cdn:2,cell:28,cfg:[3,28],cgi:11,chain:25,chainabl:34,chang:[11,14,19,21,22,25,28,36],chapter:[4,21,22,28,38,39],charact:[22,28],chdir:[11,19],check:[2,5,18,19,22,23,25,27,30],checker:25,checkout:22,chmod:11,choic:[6,10,19,28,33,36],choos:[6,22,23],chown:[7,9,10,11,35,38],chronolog:28,citi:23,classifi:28,clean:[24,37],clear:33,cli:30,client:19,clita:28,clock:21,clone:[6,8,9,10,19,22,25,27,39],close:[4,10],cmd:[19,36,37],code:[3,11,14,18,24,25,27,29,33,36,37],codebas:16,coffe:37,col:28,colleagu:20,collect:2,colon:28,colspan:28,column:28,com:[6,8,10,19,23,25,27,28,29,30,35,37,38,39],combin:7,come:[4,9,20,21,22,25,33,37],comfort:[11,28],comma:[20,29],command:[2,4,7,10,11,19,21,27,28,30,31,35,38,39],comment:[7,9,10,28,35,37,38],commit:[19,25,27,30],commodi:28,common:[11,27,31,33,35,38,39],commonli:28,commun:[7,9,18],compact:28,compani:33,compar:[7,9,11,19,37],compat:21,compil:[7,24,30],complet:[4,11,22,29,35,37,38,39],compon:[7,26,36],compromis:33,comput:33,con:28,conatin:19,concern:22,conclus:32,concret:[20,28],condit:28,conf:[2,7,9,28,35,38],config:[0,11,20,23,28,30,35,36,37,38,39],configur:[5,7,8,9,11,16,18,19,20,24,28,30,33,35],conflict:36,confnam:11,confus:28,connect:[4,9,10,18,31],consectetur:28,consequ:[14,22],consequat:28,consetetur:28,consid:6,consist:19,construct:[23,28],consult:27,contact:14,contain:[10,13,14,17,27,28,31,36,37],content:[5,17,24,31,32,33,36],context:[26,28,37],continu:28,contribut:[1,2,19,24,25,31],contributor:28,control:[7,11,33],convent:22,convert:28,cooki:[23,31,33],copi:[8,10,22,28,37],copyright:28,core:[2,11,18],corner:22,correct:[9,14],correctli:9,correspond:11,could:[11,14,23,28],count:28,countri:[14,23],courgett:29,cours:28,coverag:27,crawler:28,creat:[5,6,7,8,9,11,14,18,19,21,27,28,29,30,36,39],creation:[2,28],creativ:20,cross:28,crossref:3,cryptic:27,cryptographi:14,cspan:28,css:[13,26],css_depend:26,csv:[4,29],csv_tabl:28,ctan:28,cthulhu:34,ctrl:[10,19,25],ctx:26,cup:37,curl:10,currenc:3,currency_convert:3,current:[13,14,18,22,23,30,34],custom:[14,22,28,34],customiz:[0,16],customlog:7,cycl:[19,25],daemon:[35,38,39],dai:[11,25,29],daili:19,dailymot:3,dalf:1,danger:28,data:[5,23,28,33],databas:[20,28],date:[0,23],datetim:[23,28],daunt:16,dbpedia:29,ddd:3,ddg:[3,34],ddi:3,de_d:14,deactiv:[14,35,38,39],debian:[2,5,9,10,11,15,28],debug:[10,14,19,24,25,35,36,38,39],decid:[16,25],decim:23,dedic:[11,19,28],deeper:[25,28],deezer:3,def:[18,23,26,28],defaul:28,default_local:[0,14],default_on:26,default_them:[0,14],defin:[14,26,28],definit:3,dejavu:2,delet:[14,29,30,37],delimit:28,demon:10,demonstr:9,deni:7,depend:[4,5,7,9,13,16,18,19,21,23,25,27,28,29],deploi:[8,14,25,28],describ:[4,6,7,11,14,19,25,28,39],descript:[13,22,26,28,35,38],deserv:22,design:[18,28],desir:[23,27],desktop:19,detail:[7,14,18,28],detect:14,deutsch:[0,14],dev:[2,7,9,10,22,25,28],devel:[2,10],develop:[2,10,14,16,17,20,21,22,25,28,31,36],deviantart:3,dfrac:28,diam:28,dict:28,dictzon:3,didn:14,diff:28,differ:[7,9,11,19,21,22,23,28,37],digg:3,digit:31,digraph:28,dir:[10,35,38],direct:[7,24,28,35,38],directli:[9,14,37],directori:[3,7,8,11],disabl:[3,5,10,11,13,14,19,25,26,28,29,36,37],disabled_engin:29,disabled_plugin:29,disadvantag:28,discoveri:[18,20],discret:36,displai:[2,8,13,14,23],display_error_messag:[14,23,28],displaystyl:28,dispos:36,disrespect:22,dist:[22,25],distinguish:28,distribut:[7,9,11,19,20,28,35,38],distributor:5,dive:33,divid:19,dnf:[2,7,9,10,28],doai_rewrit:29,doc:[3,5,7,11,19,24,28,37],docker:[5,6,25,31],dockerfil:8,docs_url:25,doctest:28,doctre:28,docuemt:2,document:[7,11,18,20,25,28,31,37],documentroot:7,docutil:28,doe:[7,11,16,18,19,23,25,28,29,32],doesn:14,doi:13,dolor:28,domain:28,domin:22,don:[7,21,25,28,31],done:[7,9,25,28,36,37],dontlog:7,dot:2,doubl:28,download:[6,19,25,28,35,38],drop:21,dry:8,dsitro:19,duckduckgo:[3,29,34],duckduckgo_definit:3,duckduckgo_imag:3,duden:3,due:[35,38],duo:28,duref:28,dvisvgm:2,e0b3:19,e97:19,each:[11,19,28,29,37],easi:[19,31],easier:22,easili:22,echo:[10,35,37,38],ecosystem:28,edit:[10,11,16,19,22,25,28,33,38],effect:[6,22,28],egg_info:25,eirmod:28,either:27,element:28,elimin:27,elit:28,elitr:28,els:37,emac:28,email:14,emb:[5,28],embed:[0,8,28],emperor:11,emphasi:28,empti:[7,28,29],en_u:[14,23],enabl:[0,7,9,10,11,20,22,25,26,27,29,36],enabled_engin:29,enabled_plugin:29,encapsul:19,enclos:28,encod:[11,28],encourag:28,encrypt:31,end:[21,28,37],endfor:28,engin:[0,5,10,16,17,22,24,27,28,29,31,33,34,35,38],english:[0,14],enim:28,enough:[6,7,9,30],enpoint:29,ensur:22,enter:[10,21],entri:[8,24,36,37],env:[7,11,19,25,27,36,37],environ:[8,9,10,19,24,31,35,37,38,39],eof:[35,37,38],eol:37,eos:28,equat:[2,24],erat:28,erowid:3,error:[3,14,23,27,28],error_log:9,escap:28,especi:28,esperanto:0,essenti:[2,10],est:28,etc:[4,7,8,9,10,11,19,22,35,39],eth0:[19,37],eto:3,etool:3,etymonlin:3,evalu:[28,37],even:[11,19,37],event:11,ever:37,everi:[14,19,22,23,33,37],everyon:[18,33],everyth:[10,28,33],exactli:[4,28],exampl:[0,4,7,9,11,18,19,20,22,24,27,29,32,33,36,37],exceed:4,excel:[6,9],except:[7,21,22,28,36],exchang:33,execstart:[35,38],execut:[14,30],exercis:19,exercit:28,exist:[7,8,9,16,19,21,22,25],exit:[10,19],expand:28,expect:[20,22],experi:11,experienc:[16,19],experiment:36,explain:22,explanatori:[35,37,38,39],explicit:28,expos:20,ext:2,extend:[18,22,26,28],extens:[2,28],extern:[4,12,23,28,29,33],extra:[2,7],extract:2,extrem:16,eye:[19,28],face:28,fact:17,fail:[19,27],fals:[0,10,14,26,27,28,29,38],familiar:[11,25],fanci:22,faq:28,favorit:[22,25],fd00:7,fd42:19,fdroid:3,fe80:7,fea5:19,featur:[12,16,20,22,28,33],fedora31:37,fedora:[2,7,9,10,11,28,37],fedoraproject:37,feedback:[22,28],feel:[26,28],few:[14,22,23],fieldnam:28,figur:[7,9,24],file:[2,3,7,8,9,10,11,14,16,18,19,20,21,22,25,26,27,30,35,37,38,39],file_filt:30,filenam:23,files:23,fill:28,filter:[0,4,29],filtron:[1,5,6,7,9,11,19,31,36,37],filtron_api:[35,36,37],filtron_listen:[35,36,37],filtron_target:[35,36],find:[1,4,8,18,20],fine:[6,10],finish:[30,37],firefox:2,firewal:4,first:[7,9,10,16,18,19,21,25,27,28,33],fit:[11,20,26],fix:[22,25,27],fixm:7,flask:[26,28],flexibl:[28,36],flickr:3,flickr_noapi:3,fmt:37,folder:[7,9,10,11,19,22,23,25,27,28,30,36,37],follow:[4,6,7,9,11,12,22,23,25,27,28,30],followsymlink:7,font:2,fontsrecommend:2,footer:22,force_timeout:[36,37],fork:[6,19,22,36],form:[0,28,33],format:[4,23,27,28,29],forward:[4,9,33],found:[2,16,17,25],foundat:[16,18,20,21],fr_fr:14,fraction:28,framalibr:3,free:[3,26,31],fresh:7,friend:[20,25,33],frinkiac:3,frk:3,frl:3,from:[1,2,4,6,7,8,9,10,11,13,14,16,18,19,20,21,22,25,28,30,31,33,35,36,37,38,39],front:28,fsd:3,full:[14,22,28,35,38],fulli:[7,9,16],fun:17,fund:[18,20],further:[25,27,36],furthermor:[23,27,29,33],futur:37,gain:33,gate:25,geektim:3,gen:3,gener:[0,3,7,8,11,14,18,22,24,25,33],genesi:3,geniu:3,gentlemen:17,gentoo:3,geojson:23,german:0,get:[2,4,5,6,7,9,10,13,19,22,23,25,27,28,29,30,31,35,37,38],get_engines_stat:28,gid:11,gigablast:3,gil:11,git:[2,6,7,8,9,10,14,15,19,22,23,25,27,28,35,36,38,39],git_branch:[19,25,36],git_url:[19,25],github:[3,6,8,10,18,19,21,25,27,28,29,35,37,38,39],gitlab:3,gitmoji:22,give:[7,25,27],given:28,glob:11,global:5,global_ip:37,glyph:28,gnu:25,go1:[35,38],go_env:[35,38],goe:25,goi:[0,3],going:[4,18,20,28,33],gon:3,good:[6,7,9,19,27,37],googl:[0,3,29,35,38],google_imag:3,google_new:3,google_video:3,gopath:[35,38],gos:3,got:19,gov:3,gpa:3,gpm:3,gps:3,grant:[7,11],graphic:16,graphviz:2,grep:37,group:[28,33,35,38],grow:16,grumpi:28,grunt:27,gubergren:28,guest:37,guid:[9,16,25,27,28],guidelin:20,guilabel:28,habr:3,habrahabr:3,hack:[16,18,20,21,22],hackabl:24,hackerspac:34,handl:[14,19,28,33,37],handler:7,happi:[16,18,20,21,22],hard:[16,28],harden:[35,38],has:[12,18,20,22,23,27,28,33],hat:28,have:[2,6,7,8,9,10,14,16,19,21,22,23,25,28,33,36,37],hbar:28,head:10,header:[4,7,9,23,28],headers_modul:7,heard:28,hebrew:14,height:28,help:[8,13,22,25,27,35,36,37,38,39],helper:28,her:20,here:[2,7,9,11,14,18,19,22,28,36],herein:1,heterogen:19,hidden:[0,20,33],him:20,hint:[1,28,36],histor:[7,21],hit:10,home:[10,19,30,35,36,38],hoogl:3,host:[2,4,7,9,10,16,19,20,25,30,31,37],hostnam:[9,37],hotkei:[0,13],hous:23,house_numb:23,how:[1,2,5,6,7,9,11,14,17,19,24,25,28,31,32,35,38],howev:[18,23,29],html:[0,2,7,11,22,23,25,28,38],html_math_render:2,http:[0,2,4,5,6,8,10,11,12,13,14,18,19,22,23,25,27,28,30,31,35,36,37,38,39],http_connect:[4,9],http_host:[4,9],httpd:7,https_rewrit:29,huge:28,idea:27,identifi:[36,37],ifmodul:7,illustr:6,imag:[0,2,3,5,12,14,19,24,25,29,34,37,38,39],image_proxi:[7,9,14,29,38],imagemagick:[2,28],img_src:23,imgmath:2,imgmath_font_s:2,imgmath_image_format:2,imgmath_latex:2,immedi:13,implement:[9,11,16,21,22,23,26,37],impli:20,improv:25,in_contain:37,ina:3,inbound:14,includ:[7,9,19,20,25,28,37],inclus:34,incom:7,increment:25,indent:[28,37],index:7,infinit:13,infinite_scrol:[13,29],info:[14,19,25,37,38],info_msg:37,inform:[12,13,14,20,22,23,37],infrastructur:[1,11],infratructur:4,inherit:28,ini:[7,8,9,11,19],init:[11,18,19,24,37],initi:[11,19,30,37],inlin:24,input:[0,20,28],insecur:10,insert:[28,30],insid:[8,10,19,23,37],insight:33,inspect:[19,35,36,38,39],instal:[1,2,4,5,11,12,19,21,22,25,27,28,30,31,36],instanc:[0,1,5,6,7,9,11,14,16,18,19,20,25,29,30,31,32,35,36,37,38,39],instance_nam:[0,8,10],instead:[11,16,20,21,27,28],instruct:28,insuffici:18,integr:31,intend:8,intent:22,interact:[10,35,36,38,39],interfac:[7,14,17,31],interfer:22,intermedi:25,intern:27,internet:[6,18,31],interpret:[11,28],interpretor:11,intersphinx_map:28,interv:4,intranet:[6,7,9],intro:[7,9],introduc:[16,17,18,20,28,31],introduct:[25,27],intuit:28,inv:28,inventori:28,investig:21,invidi:3,invidunt:28,ipsum:28,ipv4:[9,37],ipv6:[9,19,37],isn:[7,9],iso:[14,23],isol:[4,19],issu:[11,18,20,21],ital:28,italiano:14,item:28,its:[2,6,16,22,25,28,29,33,37],itself:[11,22],japanes:14,javascript:[13,24],jinja:28,jinja_context:28,job:36,join:28,js_depend:26,json:[4,29,35],json_engin:3,juli:37,jump:[10,19,25],just:[0,4,9,19,25,28,33,37],justo:28,kasd:28,kbd:28,keep:[7,9,19,25],kei:[8,12,13,14,18,23,30,38,39],kickass:3,kind:[7,28,33],kiss_:28,know:[7,11,18,19,20,28,33,37],knowledg:28,known:25,kvch:[16,18,20,21],l19:19,label:28,labor:28,labori:28,lack:22,lang:[0,11,29,30],languag:[0,3,4,11,14,23,25,28,29,30,34],language_support:[23,28],laptop:33,larg:[11,35,37,38,39],last:28,lat:23,later:[36,37],latest:[11,30],latex:2,latexextra:2,latexmk:2,latitud:23,latter:[25,28],launch:37,layout:5,lazi:11,lc_all:11,lc_messag:30,learn:28,least:[19,21],leav:14,leech:23,leecher:23,left:[10,28],legaci:29,length:22,less:[7,9,11,16,27,28,33],let:[19,28,33,36],level:[22,28],lib:[7,11,35,38],libapache2:7,libffi:[2,10],librari:3,librsvg2:2,librsvg:2,libssl:[2,10],libxml2:[2,10],libxslt:[2,10],licens:[36,37],light:9,like:[0,2,10,13,14,20,22,23,25,26,28,36],like_hotkei:29,limit:[4,7,17,18,28,31],line:[7,9,18,22,25,37],link:[11,13,14,19,24],lint:[5,25],linux:[0,2,3,7,9,10,11,17,20,28,31,35,36,37,38],linuxcontain:37,linuxcontainers_org_nam:37,linuxdoc:28,list:[7,18,20,23,24,25,26,29,34],listen:[4,7,9,35,36,37,38],liter:24,literalinclud:28,live:[19,24,28,37],load:[11,13,14,37],loadmodul:7,lobst:3,local:[0,4,8,9,10,11,14,19,20,21,23,25,26,27,30,35,36,37,38,39],local_imag:37,localhost:[7,8,9],locat:[4,7,9,10,11,14,28],log:[4,5,11,14,19,27,33,35,36,38,39],logger:11,logic:22,logicodev:29,login:10,lon:23,longer:25,longitud:23,look:[7,10,25],lorem:28,loremlorem:28,lot:19,low:[7,9],lsb:11,lxc:[19,31,36],lxc_host_prefix:37,lxc_repo_root:37,lxc_set_suite_env:37,lxc_suit:[19,37],lxc_suite_info:37,lxc_suite_instal:37,lxc_suite_install_info:37,lxc_suite_nam:37,lxd:[19,37],lxml:[2,10],made:[14,19],magna:28,magnetlink:23,magyar:14,mai:[14,19,28,35,38],main:[7,13,25,30,36],mainlin:9,maintain:[1,11,19,28,36],mainten:[4,6,19,35,38,39],make:[2,8,16,19,20,21,22,24,28,33,37],makefil:[19,22,24,31,36,37],man:28,manag:[4,15,16,25,27,35,38,39],mandatori:6,mani:4,manipul:[16,37],manual:[14,25,28],manuali:28,map:[0,3,28],mark:[10,28],markup:24,mass:22,master:[11,15,22,25,28,36],math:[2,24],mathemat:28,mathrm:28,matter:[19,23,33],max:[4,23],maxim:22,maximum:[22,23],mean:[11,19,22,28,33],meaning:28,meant:28,media:[0,3,23],mediawiki:3,memori:14,mention:21,menuselect:28,merg:19,messag:[4,14,22,23,25,27,28,30],messagespo:30,meta:28,metadata:28,metasearch:[10,23,31,35,38],method:[0,6,11,23,28],microsoft:3,microsoft_academ:3,middlewar:4,might:[11,19,20,22,25,28,29,33,36,37],migrat:21,min:23,minim:28,mirror:3,misbehav:22,miss:[4,28],mix:19,mixcloud:3,mjk:3,mkdir:[7,9,10,11,35,38],mod:[7,28],mod_autoindex:7,mod_head:7,mod_proxi:7,mod_proxy_http:7,mod_proxy_uwsgi:7,mod_uwsgi:7,mod_wsgi:7,mode:[11,14,28,36,37],modern:7,modifi:[8,11,14,28,34],modul:[7,11,28],mojeek:3,monet:33,monitor:[11,19],mono:2,month:[0,29],more:[4,12,14,16,18,22,25,28,29,31,33,36,37],morecol:28,morerow:28,morti:[1,6,7,9,12,19,31,36,37],morty_kei:8,morty_listen:[36,37,38],morty_url:8,most:[2,7,14,21,33,35,36,38,39],mostli:[11,28],motiv:17,move:[18,22],movi:3,much:[22,28],multi:[35,38],multibl:23,multipl:[13,14,28,33],multithread:11,multius:10,music:3,must:[9,14,21,22,23,27,28],my_arg:28,my_funct:28,my_other_arg:28,mydomain:36,mymemori:3,myproject:27,name:[0,3,4,7,9,10,13,14,19,20,23,25,26,30,37],name_of_python_fil:26,nativ:11,navig:13,necessari:[10,20],nederland:14,need:[4,6,7,8,9,10,11,14,18,19,22,25,28,33,35,36,37,38,39],neither:31,net:31,network:[14,35,38],never:[19,25],nevertheless:[7,9],newcom:16,next:[7,9,13,17,28],nginx:[1,4,5,6,14,19,31,35,37,38,39],nightmar:28,nil:37,nisi:28,nlnet:[16,18,20,21],noconfirm:[2,10],node:[25,27],nodej:27,non:18,none:[7,23,25,28,29],nonewprivileg:[35,38],nonumi:28,nor:31,normal:[7,19,23,28,36],nostrud:28,note:[7,9,22,29],notic:19,now:[7,9,10,19,20,21,26],npm:[3,25,27],number:[4,14,23,28,29,37],number_of_result:23,numer:28,numref:28,nyaa:3,oad:3,oap:3,obj:28,object:[23,26,28],obtain:14,off:[7,9,22,35,37,38,39],offer:11,offlin:[3,17,20,23,28,31],often:[23,28,36],old:[7,8,19],on_result:26,onc:[19,37],one:[7,11,14,19,20,22,25,28,31,33,35,36,37,38,39],ones:[23,35,38],ongo:25,onli:[2,6,7,12,14,20,22,26,28,29,36,37],onlin:[18,28,31],open:[7,10,13,19,21,22,25,28,29,33,36,37],open_results_on_new_tab:13,openairedataset:3,openairepubl:3,openrepo:3,openstreetmap:[0,3],oper:[21,28,33],option:[7,8,10,11,12,14,16,19,20,22,23,25,26,27,28,29,33,35,36,38,39],order:[7,22,27,28],org:[2,4,7,9,11,14,23,28,37],organ:31,orient:7,origin:[5,15,19,28],oscar:[0,14,29],osm:[0,3,23],other:[14,22,23,28,33],otherwis:23,our:[1,4,6,16,19,22,25,28,37],out:[7,9,18,19,22,25,28,35,37,38],outgo:14,outgoing_proxi:14,output:[2,20,28,29,35,37,38,39],outsid:19,outstand:28,over:[19,28,31,37],overlin:28,overlook:19,overview:[4,14,24,25,29,31,36],overwrit:13,overwritten:23,own:[6,19,25,31,33],owner:25,packag:[2,4,5,7,9,11,19,25,27,28,35,37,38,39],pacman:[2,7,9,10,28],page:[3,7,9,13,14,16,20,22,23,24,28,29,33,34],pageno:[23,29],pagenumb:23,pair:18,palletsproject:28,param:[4,18,23,28],paramet:[23,24],paramt:23,parent:28,pars:29,parse_lin:18,part:[14,16,28,37],parti:33,partial:28,partli:23,pass:[7,9,18,29],past:0,patch:[22,28],path:[4,7,14,19,28,35,37,38],paywal:13,pdb:3,pdbe:3,pdf:2,peopl:[16,33],pep8:[22,25,27],pep8_check:25,pep:28,per:[11,22,23,28],perfect:19,perform:[11,13,18,23],phase:27,photon:3,phrase:28,piec:28,pip3:21,pip:[2,10,30],pipe:18,piratebai:3,pix:29,place:[6,9,11,22,23,28,30,33],plai:3,plaintext:28,pleas:[21,22,27,28,29],plenti:22,plu:[7,9],plugin:[0,2,5,10,11,22,24,29,31],pocket:[7,9],point:[8,9,10,11,19,24,25,28,33],pointer:28,pointhi:29,polygon:28,popen:18,popular:28,port:[4,8,9,10,14,37],possibl:[8,12,13,14,18,19,20,28,29],post:[0,19,22,29],post_search:26,postcod:23,pot:30,pov:28,power:28,practic:22,pre_search:26,prefer:[6,16,20,28,29,33,34],prefix:34,preinstal:[4,19],prepar:[17,31,37],prerequisit:[19,28],present:[18,20],preserv:[22,28],press:[13,25],pretti:14,preview:23,previou:36,primari:37,primary_ip:[36,37],prime:24,primer:[24,31],principl:28,privaci:[6,7,9,10,11,19,24,28,32,35,38],privat:[17,18,31,32],privatedevic:[35,38],privatetmp:[35,38],pro:28,problem:4,procedur:[6,37],process:[2,4,11,18,19,20,25],processor:28,produc:28,product:[14,17,36],profil:[10,25,31,33,35,38],program:25,progress:[17,35,38],project:[11,19,24,25,28],promot:31,prompt:[19,36],proper:[33,35],properli:21,propos:18,protect:[1,5,7,9,19,22,31,32,35],protectsystem:[35,38],protocol:[8,9,11,19],provid:[20,22,23,28],proxi:[1,5,6,9,14,19,29,31,33,35,36,37,38,39],proxif:[7,9],proxifi:12,proxy_add_x_forwarded_for:[4,9],proxy_buff:9,proxy_http:7,proxy_http_modul:7,proxy_modul:7,proxy_pass:[4,9],proxy_set_head:[4,9],proxy_uwsgi_modul:7,proxypass:[7,35,38],proxypreservehost:7,psi:28,pub:3,public_host:35,public_url:[35,36,37,39],public_url_morti:[37,38],public_url_path_morti:36,publicli:18,publish:23,publishedd:23,pubm:3,pull:[8,15,18,22,28,30],purpos:[14,23,27],push:[22,25],pwd:[8,19],py3:25,pybabel:30,pybuild:24,pyclean:25,pyenv:[10,11,19,25,39],pygment:28,pylint:24,pylintrc:25,pypi:[25,28],python2:[11,21],python3:[2,10,11,21,27],python:[2,10,11,14,17,19,24,27,28,31,39],pythonhom:11,pythonpath:[11,19],qout:37,quadratur:31,qualiti:[2,25,28],queri:[13,18,20,23,29,33,34],question:[28,33],qui:28,quickstart:[22,24,25,31],quiet:25,quit:[7,19,22,25],qwant:3,qwer:34,qwi:3,qwn:3,qws:3,rais:18,random:[23,33],rang:[3,11,23,29],rangl:28,rate:4,rather:20,raw:28,rbg:3,reach:28,reactiv:14,read:[18,19,22,25,27,36],readability_:28,reader:[19,28],readi:19,readlin:18,readm:[4,7,11,12],readthedoc:11,real:[4,9],realli:6,reason:[7,11,16,21,25,28],rebuild:[22,25],rebum:28,recommend:[2,4,6,11,22,23,25,28,36],reconsid:22,record:28,reddit:3,redefin:23,redirect:13,reduc:22,ref:[35,38],refer:[1,28,33],referenc:28,refnam:28,regardless:33,regist:24,regular:18,reinstal:[35,39],rel:[9,19,28,37],releas:[21,25,37],releng:37,reload:11,remark:19,rememb:[11,19,22],remot:37,remote_addr:[4,9],remov:[11,13,19,33,35,36,37,38,39],renam:[8,29],render:2,replac:[7,9,10,16,19,26],repo:22,report:19,reposetori:19,repositori:[10,16,19,37],request:[5,7,9,14,18,20,22,24,26,28,33],request_timeout:14,request_uri:7,requesthead:7,requir:[2,7,13,21,22,23,24,25,27,28,29],requisit:25,reset:33,resourc:9,respect:[10,22,33,35,38],respons:14,rest:[20,24,31],restart:[5,8,9,10,11,12,15,19,35,38],restrict:20,restructuredtext:28,result:[1,2,5,6,7,9,13,14,18,24,28,29,31,33,38,39],result_proxi:[7,8,9,12,38],results_on_new_tab:29,retriev:30,return42:28,return_cod:18,rever:7,revers:[1,5,6,9,35,36,37,38],rewrit:[0,13],rfc:28,rhel:[2,7,9,10,11,28],rid:[25,37],right:[11,20,26,28,31],rightmost:28,rigth:28,road:23,roboag:4,robot:[25,27],robotframework:21,role:24,rolenam:28,roll:37,romanian:14,root:[7,9,19,25,37],rotat:28,round:22,rout:[5,7,9,28],row:28,rowspan:28,rspan:28,rss:[4,29],rst:[22,28],rst_titl:37,rubygem:3,rule:[4,22,35],run:[2,4,6,7,8,9,11,12,14,17,18,19,20,22,23,24,26,28,30,33,35,36,38,39],runtimeerror:18,russian:14,ryzen:10,sadipsc:28,safe:[3,29],safe_search:0,safesearch:[28,29],same:[4,10,13,14,19,23,28],sampl:[5,28,35],san:2,sanctu:28,sanit:19,satisfi:27,save:7,sc2031:37,sc2034:[36,37],scalabl:28,scale:[19,28,37],scaleabl:28,scan:11,scc:3,scd:3,schedul:[18,21],scheme:[4,9],scholar:3,schroeding:28,scienc:3,scope:22,scratch:2,script:[1,4,5,7,9,10,19,27,35,36,37,38,39],script_nam:9,scroll:13,sdist:25,sea:28,search:[3,4,5,8,13,14,18,19,20,22,23,24,28,31,32,33],search_on_category_select:[13,29],search_path:23,search_str:23,searchcod:3,searchcode_cod:3,searchcode_doc:3,searx:[0,1,2,4,5,6,7,11,12,14,15,17,18,22,23,25,26,27,28,29,30,32,34,35,36,38],searx_instance_nam:39,searx_internal_http:39,searx_internal_url:36,searx_settings_path:[10,11,19],searx_url:[25,36],searx_userag:14,sec:4,second:[10,14,28],secret:[14,20],secret_kei:14,section:[9,14,19,25,28],secur:31,sed:[10,28],see:[2,4,7,8,9,11,12,14,18,19,20,22,27,28,29,31,34,35,37],seed:23,seeder:23,seedpeer:3,select:[13,25,28,33,34,37],selenium:27,self:[13,16,31,35,37,38,39],self_inform:29,semant:[3,22],send:[2,4,14,33],sens:28,sent:33,separ:[20,22,28,29,35,38],seri:25,serif:2,seriou:19,serv:[22,33,37],server:[4,5,6,8,11,14,19,27,37,38],server_nam:9,servic:[4,5,6,9,11,12,19,28,29,31,33,35,36,37,38,39],service_home_bas:36,service_us:[35,36,38,39],service_ussr:36,session:[10,27],set:[2,3,5,7,8,9,10,11,12,16,18,19,25,27,28,29,30,31,33,34,35,36,37,38,39],setenvif:7,sethandl:7,setup:[1,2,4,5,6,7,9,10,11,19,24,28,31,35,38],setuptool:10,sever:19,seznam:3,share:[7,11,19,20,37,39],shell:[5,10,19,35,36,37,38,39],shellcheck:[2,10,28,36,37],ship:9,shortcut:[0,3,14,20,23,28],should:[6,7,9,14,16,19,21,22,28,30],show:[1,2,3,7,9,19,28,35,36,37,38],shown:[6,7,10,19,28],side:[6,28],sign:28,signal:19,signifi:28,similar:[11,28],simpl:[19,25,29,35,38],simplest:28,simpli:[4,19,22,25,29,35,36,38,39],simplifi:[4,25,35,38,39],sinc:[9,16,25,28],singl:[7,9,11,33,37],sit:28,site:[0,4,5,7,14,23,28,29,35,38,39],size:23,skeleton:18,skill:24,skip:27,slow:14,small:[23,39],smylink:19,snap:[19,37],snapcraft:37,snippet:12,social:[0,3],sock:14,socket:[7,8,9,11],soft:24,softwar:[3,19,35,38],sold:33,solut:20,solv:[4,20],some:[1,6,7,11,14,19,20,22,25,28,35,36,37,38,39],someon:33,someth:[22,25],sometim:16,soundcloud:3,sourc:[10,14,19,21,24,25,28,30,33,35,37,38],source_fil:30,source_ip:14,source_lang:30,space:14,span:28,spars:28,spdx:[36,37],speak:11,special:[6,11,23],specif:[11,14,23,37],specifi:[8,11,14,23,29],speu:3,sphinx:22,splinter:21,split:22,spoilt:6,sponsor:[16,18,20,21],src:[4,9,10,11,19,39],srv:7,ssl:[23,31],stabl:14,stack:[19,27,37],stackoverflow:3,stage:28,standalon:16,standard:[7,22,23,37],start:[1,4,7,9,10,11,17,22,23,25,31,35,37,38,39],startpag:[3,29],stash:[15,25],stat:28,statist:28,statu:[35,36,38,39],stdout:18,step:[1,5,6,17,19,22,31,39],stet:28,stone:20,stop:[4,7,9,10,11,19,25,35,37,38,39],storag:37,store:[23,33],strang:11,street:23,strict:20,string:[20,23,29,30],stroke:28,strong:28,structur:[22,24],stub:28,stuff:28,style:[24,29],sub:[22,28],subdir:9,subdirectori:9,subject:28,submit:22,subnet:7,subprocess:18,subrul:4,subscript:28,subsect:28,subshel:37,substitut:24,sudo:[2,6,7,9,10,11,15,19,27,28,35,36,37,38,39],suffix:[8,14],suggest:[1,26],suit:[17,36],suitabl:28,sup:28,superscript:28,supervisor:16,support:[2,3,5,9,10,11,14,17,20,22,23,28,29,31,33,35,37,38],sure:[8,10,19,21],surround:28,suspici:4,svg:2,svg_imag:28,symbol:[11,19],symlink:9,syntax:[29,31,32],syslog:[35,38],system:[10,11,19,20,21,22,25,28,35,36,38],systemctl:[7,9,11,15,19],systemd:[11,35,38,39],szn:3,tab:[13,24,29,37],tabl:[18,24],tailor:33,take:[11,14,16,22,30,37],taken:[28,36],takimata:28,tar:[25,35,38],target:[19,22,24,28,31,35,37,38],task:[6,10,19,28,37],tcp:8,tcp_nodelai:10,tell:23,templat:[11,18,19,23,24],tempor:28,term:[7,28],termin:[10,19],test:[2,7,9,10,19,21,22,24,37,39],texliv:2,text:[0,23,28],textstyl:28,tfrac:28,than:[14,28,31],thei:[11,14,19,20,28,33],them:[11,14,19,25,28,36],theme:[14,24,25,29],themes_path:14,themselv:20,therefor:[6,28],theses:19,thi:[4,6,7,8,9,10,11,12,13,14,16,18,19,20,21,23,25,26,27,28,29,33,35,36,37,38,39],thing:28,think:[22,25,28],third:[28,33],those:[18,19,30,33],thread:11,three:[22,26,28,33],through:[5,7,9,14,20,28,29,33],thu:[18,21,29,33],thumbnail:23,thumbnail_src:23,time:[4,14,19,21,22,23,28,29,33,37],time_rang:[0,29],time_range_support:[23,28],timeout:[3,14,23,28,36,38],timestamp:11,tip:[24,28],titl:23,todai:18,togeth:18,token:[18,20],tokyotoshokan:3,too:[4,14,28,33],tool:[1,2,6,10,16,22,28,30,31,37],top:28,tor:[3,31,33],torrentfil:23,torrentz:3,touch:[7,9,11,14,19],tpb:3,trace:27,track:[31,33],tracker:13,tracker_url_remov:29,trademark:28,traffic:[7,9],train:28,transform:28,transifex:[22,24],transifexrc:30,translat:[3,14,24,31],transpar:[19,37],travi:[21,27],tree:[10,19,25],troubleshoot:36,trust:[20,31,33],ttf:2,tupl:26,turn:[22,27],twice:10,twine:25,twitter:3,two:[11,22,28,29],txt:[21,25,28],type:[0,22,23,25,29,30,33,35,37,38],typic:[1,28],typo:28,ubu1604:37,ubu1804:37,ubu1910:37,ubu2004:37,ubuntu:[2,7,9,10,11,15,28,37],uds:7,ugli:[16,28],uid:[11,19],ullamco:28,ultrasecretkei:[10,14],unam:[10,37],uncom:14,uncommon:22,under:[19,20,23],understand:[16,28],unfortun:22,unicod:24,uninstal:[25,36],unit:[11,22,25,35,38,39],unit_test:[25,27],univers:10,unix:[7,9,11],unknown:[33,35,38],unless:20,unlik:33,unspecifi:23,unsplash:3,untouch:25,unwant:6,updat:[5,8,10,14,22,24,31,35,38,39],update_dev_packag:27,update_packag:15,upload:25,upstream:11,url:[0,7,8,9,12,13,14,19,22,23,25,33,36,37,38,39],urlencod:23,usag:[6,7,9,19,25,28,35,37,38,39],use:[2,4,6,7,9,11,12,14,18,19,20,22,23,25,27,28,31,32,35,36,37,38,39],used:[7,9,14,21,22,23,28,31,33,36],useful:[14,36],user:[4,5,7,9,11,13,14,19,20,22,23,28,31,33,36,39],useradd:[10,35,38],userag:4,useragent_suffix:14,uses:[11,14,23,28,33],using:[4,7,8,9,11,14,17,19,22,25,27,28,30,31],usr:[4,7,9,10,11,19,35,36,38,39],usual:[17,21,33],utf:[11,28,36,37],util:[1,2,4,6,7,9,12,19,25,31],uwsgi:[1,2,5,8,9,10,15,19,31,39],uwsgi_param:9,uwsgi_pass:9,uwsgisocket:7,valid:[23,27,29],valu:[0,8,9,18,23,28,29,36],variabl:[8,23,25,28,38],variant:28,variou:[22,26],vassal:11,vector:28,vendor:22,veniam:28,venv3:21,venv:[2,10,27],verbos:[10,25,36],veri:36,verifi:23,vero:28,version:[10,13,21,28,35,38],via:[7,9,11,16,34],video:3,view:[24,33],viewbox:28,vim:[0,13,29],vim_hotkei:13,vimeo:3,virtual:[7,9],virtualenv:[2,10,11,19,21,25,27,39],virualenv:[10,25],visist:28,visit:[10,28,33],voat:3,volum:8,voluptua:28,vpn:33,vulner:33,wai:[11,18,22,23,28,33],wait:[14,18],want:[14,20,21,22,25,28,29,33,36,37],wantedbi:[35,38],warn:[2,7,9,28,37],watch:22,web:[4,10,14,16,19,23,25,35,37,39],webapp:[10,11,14,21,25,28],webcrawl:4,webserv:9,websit:0,weight:[14,28],weigth:[3,14],weird:22,welcom:[7,9],well:28,were:[18,20,21],werkzeug:25,wget:[35,38],what:[11,19,28,37],whatev:[25,37],wheel:10,when:[2,7,13,14,21,26,27,28,33],where:[4,14,19,28],whether:[27,33],which:[1,4,7,9,11,14,16,18,19,20,22,23,25,28,29,31,33,35,38],whl:25,who:[11,16,18,33],whole:[7,26],why:[28,31,32],wide:22,widen:28,width:28,wiki:[0,3,9,18,20,28,37],wikibook:3,wikidata:3,wikinew:3,wikipedia:[3,14,29,34],wikiquot:3,wikisourc:3,wikivers:3,wikivoyag:3,wiktionari:3,window:13,wish:14,within:[25,28],without:[2,8,14,23,31,33],wolframalpha:3,wolframalpha_noapi:3,won:[14,21],word:[26,28,29],work:[9,10,14,17,22,23,25,27,33],worker:11,workingdirectori:[35,38],world:[22,28,33],worri:21,worth:[11,33],would:[19,20],wrap:[9,17],written:19,wrong:25,wsgi:[9,11],www1x:3,www:[2,7,28,30,37],wysiwyg:22,xdg:25,xetex:2,xgd:10,xml:28,xmln:28,xpath:3,xxxx:28,xzf:[35,38],yahoo:3,yahoo_new:3,yandex:3,year:[21,29],yes:[35,38],yet:[22,23,25],yhn:3,yml:[3,5,7,8,9,10,11,12,16,18,19,25,27,29,31,38,39],you:[1,2,4,6,7,8,9,10,11,14,17,18,19,22,25,27,28,29,31,33,34,35,36,37,38,39],your:[2,4,6,7,8,9,10,11,12,13,14,16,17,21,22,24,25,28,31,35,36,37,38,39],your_morty_proxy_kei:12,yourself:22,youtub:3,youtube_noapi:3,yyyi:28,zero:18,zlib1g:[2,10],zzzz:28},titles:["Administration API","Architecture","Buildhosts","Engines","How to protect an instance","Administrator documentation","Installation","Install with apache","Docker installation","Install with nginx","Step by step installation","uwsgi","How to setup result proxy","Plugins builtin","<code class=\"docutils literal notranslate\"><span class=\"pre\">settings.yml</span></code>","How to update","Searx admin interface","Blog","Preparation for offline engines","Developing in Linux containers [202006]","Limit access to your searx engines","Introducing Python 3 support","How to contribute","Engine overview","Developer documentation","Makefile Targets","Plugins","Development Quickstart","reST primer","Search API","Translation","Welcome to searx","User documentation","Why use a private instance?","Search syntax","<code class=\"docutils literal notranslate\"><span class=\"pre\">utils/filtron.sh</span></code>","Tooling box <code class=\"docutils literal notranslate\"><span class=\"pre\">utils/*</span></code>","<code class=\"docutils literal notranslate\"><span class=\"pre\">utils/lxc.sh</span></code>","<code class=\"docutils literal notranslate\"><span class=\"pre\">utils/morty.sh</span></code>","<code class=\"docutils literal notranslate\"><span class=\"pre\">utils/searx.sh</span></code>"],titleterms:{"abstract":19,"default":[3,13,23],"function":19,"public":[7,8,9,33],"return":23,The:[7,9,19,22],about:[28,33],access:20,acknowledg:[16,18,20,21],activ:25,admin:16,administr:[0,5],admonit:28,aka:28,alltogeth:11,anchor:28,apach:7,api:[0,29],architectur:1,archlinux:19,argument:23,articl:[2,28],ascii:28,audienc:19,bar:0,basic:28,bibliograph:28,block:28,blog:17,box:[4,36],bug:21,build:[2,8,22,25,27,28],buildhost:[2,37],built:[3,13],builtin:13,bullet:28,check:10,clean:[22,25],code:[22,23,28],command:[8,36,37],commit:22,common:36,compil:27,conclus:33,configur:[0,3,4,10,13,23],consequ:33,contain:19,content:[2,4,7,8,9,10,11,14,19,22,23,25,28],contribut:22,creat:[10,22,35,38],csv:28,data:0,debian:7,debug:27,definit:28,depend:10,deploi:22,design:22,develop:[18,19,24,27],direct:22,disabl:[7,9],distributor:11,doc:[2,22,25],docker:8,document:[5,22,24,32],doe:33,dot:28,drop:25,emb:0,engin:[3,14,18,19,20,23],entri:26,environ:[25,27,28,36],equat:28,exampl:[23,26,28,34],ext:28,extlink:28,fact:21,featur:31,field:28,figur:28,file:[23,28],filtron:[4,35],first:6,flat:28,foo:28,fork:25,found:21,fulli:19,fun:21,further:[1,3,4,7,9,11,12,13,14,26,28,29,35,37,38,39],gate:28,gener:[23,28],gentlemen:19,get:0,github:22,global:14,good:22,graphviz:28,grid:28,hackabl:22,head:28,hello:28,highlight:28,hlist:28,hook:26,horizont:28,how:[4,12,15,21,22,27,33],http:[7,9],hyperlink:28,imag:[8,23,28],init:30,inlin:28,instal:[6,7,8,9,10,16,35,37,38,39],instanc:[4,8,33],interfac:16,internet:[7,9],intersphinx:28,introduc:21,javascript:27,kernel:28,kiss:28,latex:28,layout:7,limit:20,line:[8,28],link:28,lint:2,linux:19,list:28,liter:28,live:[22,25],log:[7,9],lxc:37,make:[23,25,27],makefil:[25,27],map:23,markup:28,math:28,matter:28,morti:38,motiv:19,name:28,need:2,nest:28,next:[18,20],nginx:9,note:28,offlin:18,ordinari:28,origin:11,overrid:23,overview:[23,35,37,38,39],packag:10,page:25,paragraph:28,paramet:29,pars:23,pass:23,plugin:[13,26],point:26,post:26,pre:26,prepar:18,prime:22,primer:28,privaci:[22,33],privat:[20,33],process:28,product:19,progress:18,project:30,protect:[4,33],proxi:[7,12],pybuild:25,pyenv:27,pylint:25,python:[21,25],quickstart:27,quot:28,read:[1,3,4,7,9,11,12,13,14,26,28,29,35,37,38,39],readabl:28,ref:28,regist:26,render:28,request:[4,23],requir:30,respons:0,rest:[22,28],restart:7,result:[12,23,26],revers:7,role:28,rout:4,run:[21,25,27,37],sampl:[0,4],script:[2,6],search:[0,26,29,34],searx:[8,9,10,16,19,20,21,31,33,37,39],see:33,server:[7,9],servic:7,set:[14,23],setup:[12,25,27,36,37],shell:2,sidebar:28,simpl:28,site:9,skill:28,smart:28,soft:28,some:2,sourc:[22,27],space:28,specif:28,sphinx:[2,28],start:19,step:[10,18,20],structur:28,style:27,substitut:28,suit:[19,37],support:[7,21],svg:28,syntax:[28,34],tab:28,tabl:28,target:[25,27],templat:28,test:[25,27],theme:27,thi:2,through:4,time:[3,13],tip:27,titl:28,tool:[4,36],torrent:23,transifex:30,translat:[22,30],truth:28,unicod:28,unit:27,updat:[6,15,30],upgrad:21,upstream:25,url:28,use:33,user:[10,32,35,38],using:[21,33],usual:19,util:[35,36,37,38,39],uwsgi:[7,11],video:23,view:28,welcom:31,what:33,why:33,work:[2,19],wrap:19,yml:[14,23],you:21,your:[19,20,26,27]}})
1+Search.setIndex({docnames:["admin/api","admin/architecture","admin/buildhosts","admin/engines","admin/filtron","admin/index","admin/installation","admin/installation-apache","admin/installation-docker","admin/installation-nginx","admin/installation-searx","admin/installation-uwsgi","admin/morty","admin/plugins","admin/settings","admin/update-searx","blog/admin","blog/index","blog/intro-offline","blog/lxcdev-202006","blog/private-engines","blog/python3","dev/contribution_guide","dev/engine_overview","dev/index","dev/makefile","dev/plugins","dev/quickstart","dev/reST","dev/search_api","dev/translation","index","user/index","user/own-instance","user/search_syntax","utils/filtron.sh","utils/index","utils/lxc.sh","utils/morty.sh","utils/searx.sh"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":2,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":1,"sphinx.ext.intersphinx":1,"sphinx.ext.viewcode":1,sphinx:56},filenames:["admin/api.rst","admin/architecture.rst","admin/buildhosts.rst","admin/engines.rst","admin/filtron.rst","admin/index.rst","admin/installation.rst","admin/installation-apache.rst","admin/installation-docker.rst","admin/installation-nginx.rst","admin/installation-searx.rst","admin/installation-uwsgi.rst","admin/morty.rst","admin/plugins.rst","admin/settings.rst","admin/update-searx.rst","blog/admin.rst","blog/index.rst","blog/intro-offline.rst","blog/lxcdev-202006.rst","blog/private-engines.rst","blog/python3.rst","dev/contribution_guide.rst","dev/engine_overview.rst","dev/index.rst","dev/makefile.rst","dev/plugins.rst","dev/quickstart.rst","dev/reST.rst","dev/search_api.rst","dev/translation.rst","index.rst","user/index.rst","user/own-instance.rst","user/search_syntax.rst","utils/filtron.sh.rst","utils/index.rst","utils/lxc.sh.rst","utils/morty.sh.rst","utils/searx.sh.rst"],objects:{},objnames:{},objtypes:{},terms:{"0xa9":28,"1337x":3,"15px":28,"3eff":19,"40px":28,"573b":19,"70px":28,"9b65":19,"\u65e5\u672c\u8a9e":14,"abstract":17,"boolean":[23,28],"break":[22,28],"byte":23,"case":[7,9,14,19,20,27,33,35,38,39],"class":7,"default":[4,7,8,9,11,12,14,21,22,25,26,28,29,31,33,34,35,36,37,38,39],"espa\u00f1ol":14,"export":[8,9,10,19,25,35,37,38],"fran\u00e7ai":14,"function":[18,23,26,28,37],"import":[9,18,28],"int":[4,23,28],"long":33,"new":[3,7,8,9,10,11,16,18,20,22,25,26,27,29,30,38],"null":[7,9,22],"public":[1,5,6,13,28,36,37],"return":[13,14,18,24,26,28,33],"schr\u00f6dinger":28,"short":27,"static":[2,4,9,26],"switch":[7,22],"t\u00fcrk\u00e7e":14,"true":[0,4,7,9,14,18,23,26,27,28,29,35,38],"try":[25,27,33],"var":7,"while":[11,18,19,25,28],And:[7,19,26,28],But:[16,21,23,33,37],DNS:[36,37],For:[2,4,7,8,9,10,19,20,22,25,27,28,29],IPs:[4,36],Not:28,One:[11,16],That:28,The:[0,2,5,6,8,11,14,20,23,25,28,29,33,35,36,37,38,39],Then:[18,21,27,30],There:[7,11,22,28],These:[23,28],USE:7,Use:[4,7,9],Used:[7,14],Uses:14,With:[7,19,25,28,37],__dict__:28,__init__:26,__name__:28,_anchor:28,_chapter:28,_doc:28,_dot:28,_rest:28,_section:28,_sphinx:28,_subsect:28,_svg:28,a2disconf:7,a2dismod:7,a2dissit:7,a2enconf:7,a2enmod:7,a2ensit:7,abbrev:34,abl:[2,14,18,22,23,28],about:[1,19,20,22,25,31,37],abov:[7,10,19,22,28,29,37],absenc:28,abus:[4,33],academ:3,accept:[4,18,34],access:[4,7,13,16,17,18,19,28,31,33],access_log:9,accord:[8,11],account:[7,9,19,30,35,36,38,39],accusam:28,acg:3,acgsou:3,acknowledg:17,across:14,act:[12,16],action:[0,4,11],activ:[7,9,12,14,19,21,22,27,29,35,38],adapt:23,add:[6,7,9,12,20,22,25,26,28,34,35,36,38,39],added:[11,19,20,25,26],adding:[18,26,28,36],addit:[2,23,25,27,28],addition:[31,33],address:[12,14,23,33,36],adipisici:28,adjust:25,admin:[14,17,19,20,28,31,36,38],administr:[16,18,20,29,31,33],admonit:24,adopt:22,adorn:28,ads:33,advantag:[16,28],advertis:33,advis:[4,7,9],af2cae6:28,affect:16,after:[21,26,27,28,30,35,38],again:25,agent:[4,13,14,23],aggreg:[4,31,33],agpl:[36,37],aim:[16,25,28],aka:25,alia:9,align:28,aliquid:28,aliquyam:28,all:[0,6,7,12,19,21,22,23,25,26,28,29,35,36,37,38,39],allow:[7,10,14,28,34],allowoverrid:7,alltogeth:5,along:4,alreadi:[7,9,19,22,27],also:[2,7,8,10,11,19,22,25,28,33,34,36],alt:28,alter:22,altern:[6,9,27,28,37],alwai:[8,9,19,23,27,33,35,38],amd64:[35,38],amet:28,among:[22,33],amsmath:28,analog:19,analysi:2,ancel:28,anchor:24,ani:[2,6,7,11,25,28,29,31,36],annoi:28,anonym:[31,33],anoth:[11,14,16,19,23,28,37],answer:[14,28,33],anymor:7,anyon:31,anyth:[14,21,33],anywai:[25,28],apach:[1,4,5,6,11,14,31,35,36,37,38,39],apache2:7,apache2ctl:7,api:[5,14,20,23,24,30,31,35],api_kei:[14,23],apikei:14,apk:3,apkm:3,apkmirror:3,app:[3,7,9,11,19,28,35,38],appear:[27,28],append:18,appli:[14,15,22],applic:[4,9,11,14,16,19],approach:11,april:37,apt:[2,7,9,27,28],arbitrari:[18,23],arch:[0,2,3,7,9,11,20,28],architectur:[4,5,6,7,9,19,31,35,38,39],archiv:3,archlinux:[3,11,20,37],argument:[12,13,28],arrai:23,arrow:28,art:[28,29],articl:24,arx:3,arxiv:3,asciimoo:[6,8,19,22,25,27,30,35,38],ascrib:28,aspect:[19,22],assert:22,assign:23,assum:28,asterisk:28,attach:26,attend:19,attent:28,attribut:28,audienc:28,author:[22,28],auto:[19,28,30,37],autobuild:25,autocomplet:[0,8,29],autodoc:28,autoindex:7,autoindex_modul:7,automat:[13,28],avail:[7,9,11,13,14,18,22,27,29,33,35,38],avoid:[4,6,13,14],awar:[7,28,36],back:19,backquot:28,backslash:28,backup:36,balanc:25,ban:33,bang:14,bar:[5,28,35,38],barrier:16,base:[8,14,18,19,23,25,29],base_url:[8,9,14,23],baseprofil:28,bash:[10,19,28,35,36,37,38],basic:24,batch:36,baz:28,becaus:[16,20,22,23,27,30,33],becom:[19,28],been:[18,19,22],befor:[6,10,19,21,22,25,26,27,28,33,36,37],beginn:9,behavior:28,behaviour:[22,26],being:[4,14,16,21,31],below:[4,6,10,11,14,22,27,28,30],benefit:20,besid:33,best:[2,25,28,33,36],better:[2,7,9,23,25,33],between:[4,23,28],big:28,bigger:14,biggest:16,bii:3,bin:[2,3,21,25,27,35,38],binari:[35,38],bind:8,bind_address:8,bing:[3,14],bing_imag:3,bing_new:3,bing_video:3,bit:[11,28],bitbucket:[0,3],biv:3,black:28,blank:[14,28],block:[4,14,24],blocker:19,blog:[19,28,31],bodi:[22,28],boilerpl:[19,25],bold:28,boldfac:28,born:22,bot:19,both:[11,20,21,22,29,33],botlimit:4,bottom:[13,26],boundingbox:23,box:[1,6,31,37],branch:[22,25,36],brand:[25,36],bring:[25,28],broken:28,browser:[14,16,19,21,22,25,33,37],btdigg:3,bug:[17,25,27],buggi:11,bugreport:22,build:[1,5,6,19,24,37],buildenv:25,builder:28,buildhost:[5,19,25,31,36],built:[22,23,27,28],builtin:[5,26,31],c3tv:3,calcul:9,call:[16,19,20,25,30,37],callback:26,can:[0,1,2,4,6,7,8,9,10,11,12,14,16,18,19,20,21,22,23,25,26,27,28,31,33,35,37,38,39],cancel:28,cannot:[2,28,33,35,38],capabl:[16,22],caplabl:18,captcha:33,caption:28,cardin:22,care:[14,28,36,37],carv:20,cat:[35,37,38],catcher:28,categori:[0,3,13,14,18,23,28,29,34],caution:28,caveat:28,ccc:3,cdn:2,cell:28,cento:37,centos7:37,cfg:[3,28],chain:25,chainabl:34,chang:[14,19,21,22,25,28,36],chapter:[4,21,22,28,38,39],charact:[22,28],chdir:19,check:[2,5,18,19,22,23,25,27,30],checker:25,checkout:22,choic:[6,10,19,28,33,36],choos:[6,22,23],chown:[7,9,35,38],chronolog:28,citi:23,classifi:28,clean:[24,37],clear:33,cli:30,client:19,clita:28,clock:21,clone:[6,8,9,10,19,22,25,27],close:4,cmd:[19,36,37],code:[3,14,18,24,25,27,29,33,36,37],codebas:16,codeberg:3,coffe:37,col:28,colleagu:20,collect:2,colon:28,colspan:28,column:28,com:[6,8,19,23,25,27,28,29,30,35,37,38],combin:7,come:[4,9,20,21,22,25,33,37],comfort:[11,28],comma:[20,29],command:[2,4,7,10,11,19,21,27,28,30,31,35,38,39],comment:[7,9,28,35,37,38],commit:[19,25,27,30],commodi:28,common:[11,27,31,33,35,38,39],commonli:28,commun:[7,9,18],compact:28,compani:33,compar:[7,9,11,19,37],compat:21,compil:[7,24,30],complet:[4,11,22,29,35,37,38],compon:[7,26,36],compromis:33,comput:33,con:28,conatin:19,concern:22,conclus:32,concret:[20,28],condit:28,conf:[2,7,9,28,35,38],config:[0,20,23,28,30,35,36,37,38],configur:[5,7,8,9,11,16,18,19,20,24,28,30,33,35],conflict:36,confnam:11,confus:28,connect:[4,9,18,31],consectetur:28,consequ:[14,22],consequat:28,consetetur:28,consid:6,consist:19,construct:[23,28],consult:27,contact:14,contain:[13,14,17,27,28,31,36,37],content:[5,17,24,31,32,33,36],context:[26,28,37],continu:28,contribut:[1,2,19,24,25,31],contributor:28,control:[7,11,33],convent:22,convert:28,cooki:[23,31,33],copi:[8,10,22,28],copyright:28,core:[2,18],corner:22,correct:[9,14],correctli:9,correspond:11,could:[11,14,23,28],count:28,countri:[14,23],courgett:29,cours:28,coverag:27,crawler:28,creat:[5,6,7,8,9,11,14,18,19,21,27,28,29,30,36],creation:[2,28],creativ:20,cross:28,crossref:3,cryptic:27,cryptographi:14,cspan:28,css:[13,26],css_depend:26,csv:[4,29],csv_tabl:28,ctan:28,cthulhu:34,ctrl:[10,19,25],ctx:26,cup:37,currenc:3,currency_convert:3,current:[13,14,18,22,23,30,34],custom:[14,22,28,34],customiz:[0,16],customlog:7,cycl:[19,25],daemon:[35,38],dai:[25,29],daili:19,dailymot:3,dalf:1,danger:28,data:[5,23,28,33],databas:[20,28],date:[0,23],datetim:[23,28],daunt:16,dbpedia:29,ddd:3,ddg:[3,34],ddi:3,de_d:14,deactiv:[14,35,38],debian:[2,5,9,11,15,28],debug:[10,14,19,24,25,35,36,38],decid:[16,25],decim:23,dedic:[11,19,28],deeper:[25,28],deezer:3,def:[18,23,26,28],defaul:28,default_local:[0,14],default_on:26,default_them:[0,14],defin:[14,26,28],definit:3,dejavu:2,delet:[14,29,30],delimit:28,demon:10,demonstr:9,deni:7,depend:[4,5,7,9,13,16,18,19,21,23,25,27,28,29],deploi:[8,14,25,28],describ:[4,6,7,11,14,19,25,28,39],descript:[13,22,26,28,35,38],deserv:22,design:[18,28],desir:[23,27],desktop:19,detail:[7,14,18,28],detect:14,deutsch:[0,14],dev:[7,9,22,25,28],develop:[14,16,17,20,21,22,25,28,31,36],deviantart:3,dfrac:28,diam:28,dict:[23,28],dictzon:3,didn:14,diff:28,differ:[7,9,11,19,21,22,23,28,37],digg:3,digit:31,digraph:28,dir:[35,38],direct:[7,24,28,35,38],directli:[9,14,37],directori:[3,7,8,11],disabl:[3,5,10,13,14,19,25,26,28,29,36,37],disabled_engin:29,disabled_plugin:29,disadvantag:28,discoveri:[18,20],discret:36,displai:[2,8,13,14,23],display_error_messag:[14,23,28],displaystyl:28,dispos:36,disrespect:22,dist:[22,25],distinguish:28,distribut:[7,9,11,19,20,28,35,38],distributor:5,dive:33,divid:19,dnf:[2,7,9,28],doai_rewrit:29,doc:[3,5,7,11,19,24,28,37],docker:[5,6,25,31],dockerfil:8,docs_url:25,doctest:28,doctre:28,docuemt:2,document:[7,11,18,20,25,28,31,37],documentroot:7,docutil:28,doe:[7,11,16,18,19,23,25,28,29,32],doesn:14,doi:13,dolor:28,domain:28,domin:22,don:[7,21,25,28,31],done:[7,9,25,28,36,37],dontlog:7,dot:2,doubl:28,download:[6,19,25,28,35,38],drop:21,dry:8,dsitro:19,duckduckgo:[3,29,34],duckduckgo_definit:3,duckduckgo_imag:3,duden:3,due:[35,38],duo:28,duref:28,dvisvgm:2,e0b3:19,e97:19,each:[19,28,29,37],easi:[19,31],easier:22,easili:22,echo:[35,37,38],ecosystem:28,edit:[10,11,16,19,22,25,28,33,38],effect:[6,22,28],egg_info:25,eirmod:28,either:27,element:28,elimin:27,elit:28,elitr:28,els:37,emac:28,email:14,emb:[5,28],embed:[0,8,28],emperor:11,emphasi:28,empti:[7,28,29],en_u:[14,23],enabl:[0,7,9,10,11,20,22,25,26,27,29,36],enabled_engin:29,enabled_plugin:29,encapsul:19,enclos:28,encod:28,encourag:28,encrypt:31,end:[21,28,37],endfor:28,engin:[0,5,16,17,22,24,27,28,29,31,33,34,35,38],english:[0,14],enim:28,enough:[6,7,9,30],enpoint:29,ensur:22,enter:[10,21],entri:[8,24,36,37],env:[7,19,25,27,36,37],environ:[8,9,10,19,24,31,35,37,38,39],eof:[35,37,38],eol:37,eos:28,equat:[2,24],erat:28,erowid:3,error:[3,14,23,27,28,37,39],error_log:9,escap:28,especi:28,esperanto:0,est:28,etc:[4,7,8,9,10,11,19,22,35],eth0:[19,37],eto:3,etool:3,etymonlin:3,evalu:28,even:[11,19,37],event:11,ever:37,everi:[14,19,22,23,33,37],everyon:[18,33],everyth:[10,28,33],exactli:[4,28],exampl:[0,4,7,9,11,18,19,20,22,24,27,29,32,33,36,37],exceed:4,excel:[6,9],except:[7,21,22,28,36],exchang:33,execstart:[35,38],execut:[14,30],exercis:19,exercit:28,exist:[7,8,9,16,19,21,22,25],exit:[10,19],expand:28,expect:[20,22],experi:11,experienc:[16,19],experiment:36,explain:22,explanatori:[35,37,38,39],explicit:28,expos:20,ext:2,extend:[18,22,26,28],extens:[2,28],extern:[4,12,23,24,28,29,33],extra:[2,7],extract:2,extrem:16,eye:[19,28],face:28,fact:17,fail:[19,27],fals:[0,14,26,27,28,29,38],familiar:[11,25],fanci:22,faq:28,favorit:[22,25],fd00:7,fd42:19,fdroid:3,fe80:7,fea5:19,featur:[12,16,20,22,28,33],fedora31:37,fedora:[2,7,9,11,28,37],fedoraproject:37,feedback:[22,28],feel:[26,28],few:[14,22,23],fieldnam:28,figur:[7,9,24],file:[2,3,7,8,9,10,11,14,16,18,19,20,21,22,25,26,27,30,35,37,38],file_filt:30,filenam:23,files:23,fill:28,filter:[0,4,29],filtron:[1,5,6,7,9,19,31,36,37],filtron_api:[35,36,37],filtron_listen:[35,36,37],filtron_target:[35,36],find:[1,4,8,18,20],fine:[6,10],finish:[30,37],firewal:4,first:[7,9,10,16,18,19,21,25,27,28,33],fit:[11,20,26],fix:[22,25,27],fixm:7,flask:[26,28],flexibl:[28,36],flickr:3,flickr_noapi:3,fmt:37,folder:[7,9,10,11,19,22,23,25,27,28,30,36,37],follow:[4,6,7,9,11,12,22,23,25,27,28,30],followsymlink:7,font:2,fontsrecommend:2,footer:22,force_timeout:[36,37],fork:[6,19,22,36],form:[0,28,33],format:[4,23,27,28,29],forward:[4,9,33],found:[2,16,17,25,26],foundat:[16,18,20,21],fr_fr:14,fraction:28,framalibr:3,free:[3,26,31],fresh:7,friend:[20,25,33],frinkiac:3,frk:3,frl:3,from:[1,2,4,6,7,8,9,10,11,13,14,16,18,19,20,21,22,25,28,30,31,33,35,36,37,38],front:28,fsd:3,full:[14,22,28,35,38],fulli:[7,9,16],fun:17,fund:[18,20],further:[25,27,36],furthermor:[23,27,29,33],futur:37,gain:33,gate:25,geektim:3,gen:3,gener:[0,3,7,8,14,18,22,24,25,33],genesi:3,geniu:3,gentlemen:17,gentoo:3,geojson:23,german:0,get:[2,4,5,6,7,9,13,19,22,23,25,27,28,29,30,31,35,37,38],get_engines_stat:28,gigablast:3,git:[2,6,7,8,9,10,14,15,19,22,23,25,27,28,35,36,38,39],git_branch:[19,25,36],git_url:[19,25],github:[3,6,8,18,19,21,25,27,28,29,35,37,38],gitlab:3,gitmoji:22,give:[7,25,27],given:28,global:5,global_ip:37,glyph:28,gnu:25,go1:[35,38],go_env:[35,38],goe:25,goi:[0,3],going:[4,18,20,28,33],gon:3,good:[6,7,9,19,27,37],googl:[0,3,29,35,38],google_imag:3,google_new:3,google_video:3,gopath:[35,38],gos:3,got:19,gov:3,gpa:3,gpm:3,gps:3,grant:7,graphic:16,graphviz:2,grep:37,group:[28,33,35,38],grow:16,grumpi:28,grunt:27,gubergren:28,guest:37,guid:[9,16,25,27,28],guidelin:20,guilabel:28,habr:3,habrahabr:3,hack:[16,18,20,21,22],hackabl:24,hackerspac:34,handl:[14,19,28,33,37],handler:7,happi:[16,18,20,21,22],hard:[16,28],harden:[35,38],has:[12,18,20,22,23,27,28,33],hat:28,have:[2,6,7,8,9,10,14,16,19,21,22,23,25,28,33,36,37],hbar:28,header:[4,7,9,23,28],headers_modul:7,heard:28,hebrew:14,height:28,help:[8,13,22,25,27,35,36,37,38,39],helper:28,her:20,here:[2,7,9,11,14,18,19,22,26,28,36],herein:1,heterogen:19,hidden:[0,20,33],him:20,hint:[1,28,36],histor:[7,21],hit:10,home:[19,30,35,36,38],hoogl:3,host:[2,4,7,9,16,19,20,25,30,31,37],hostnam:[9,37],hotkei:[0,13],hous:23,house_numb:23,how:[1,2,5,6,7,9,11,14,17,19,24,25,28,31,32,35,38],howev:[18,23,29],html:[0,2,7,22,23,25,28,38],html_math_render:2,http:[0,2,4,5,6,8,12,13,14,18,19,22,23,25,27,28,30,31,35,36,37,38],http_connect:[4,9],http_host:[4,9],httpd:7,https_rewrit:29,huge:28,idea:27,identifi:[36,37],ifmodul:7,illustr:6,imag:[0,2,3,5,12,14,19,24,25,29,34,37,38],image_proxi:[7,9,14,29,38],imagemagick:[2,28],img_src:23,imgmath:2,imgmath_font_s:2,imgmath_image_format:2,imgmath_latex:2,immedi:13,implement:[9,11,16,21,22,23,26,37],impli:20,improv:25,in_contain:37,ina:3,inbound:14,includ:[7,9,19,20,25,28,37],inclus:34,incom:7,increment:25,indent:[28,37],index:7,infinit:13,infinite_scrol:[13,29],info:[14,19,25,37,38],info_msg:37,inform:[12,13,14,20,22,23],infrastructur:[1,11],infratructur:4,inherit:28,ini:[7,8,9,11,19],init:[18,19,24,37],initi:[19,30,37],inlin:24,input:[0,20,28],insert:[28,30],insid:[8,19,23,37],insight:33,inspect:[19,35,36,38],instal:[1,2,4,5,11,12,19,21,22,25,27,28,30,31,36],instanc:[0,1,5,6,7,9,11,14,16,18,19,20,25,29,30,31,32,35,36,37,38,39],instance_nam:[0,8],instead:[16,20,21,27,28],instruct:28,insuffici:18,integr:31,intend:8,intent:22,interact:[10,35,36,38],interfac:[7,14,17,31],interfer:22,intermedi:25,intern:27,internet:[6,18,31],interpret:[11,28],intersphinx_map:28,interv:4,intranet:[6,7,9],intro:[7,9],introduc:[16,17,18,20,28,31],introduct:[25,27],intuit:28,inv:28,inventori:28,investig:21,invidi:3,invidunt:28,ipsum:28,ipv4:[9,37],ipv6:[9,19,37],isn:[7,9],iso:[14,23],isol:[4,19],issu:[11,18,20,21],ital:28,italiano:14,item:28,its:[2,6,16,22,25,28,29,33,37],itself:[11,22],japanes:14,javascript:[13,24],jinja:28,jinja_context:28,job:36,join:28,js_depend:26,json:[4,29,35],json_engin:3,juli:37,jump:[19,25],june:37,just:[0,4,9,19,25,28,33,37],justo:28,kasd:28,kbd:28,keep:[7,9,19,25],kei:[8,12,13,14,18,23,30,38],kickass:3,kind:[7,28,33],kiss_:28,know:[7,11,18,19,20,28,33,37],knowledg:28,known:25,kvch:[16,18,20,21],l19:19,label:28,labor:28,labori:28,lack:22,lang:[0,29,30],languag:[0,3,4,14,23,25,28,29,30,34],language_support:[23,28],laptop:33,larg:[11,35,37,38,39],last:28,lat:23,later:[36,37],latest:30,latex:2,latexextra:2,latitud:23,latter:[25,28],layout:5,lc_messag:30,learn:28,least:[19,21],leav:14,leech:23,leecher:23,left:[10,28],legaci:29,length:22,less:[7,9,11,16,27,28,33],let:[19,28,33,36],level:[22,28],lib:[7,11,35,38],libapache2:7,librari:3,librsvg2:2,librsvg:2,licens:[36,37],light:9,like:[0,2,10,13,14,20,22,23,25,26,28,36],like_hotkei:29,limit:[4,7,17,18,28,31],line:[7,9,18,22,25,37],link:[11,13,14,19,24],lint:[5,25],linux:[0,2,3,7,9,11,17,20,28,31,35,36,37,38],linuxcontain:37,linuxcontainers_org_nam:37,linuxdoc:28,list:[7,18,20,23,24,25,26,29,34],listen:[4,7,9,35,36,37,38],liter:24,literalinclud:28,live:[19,24,28,37],load:[13,14,37],loadmodul:7,lobst:3,local:[0,4,8,9,14,19,20,21,23,25,26,27,30,35,36,37,38],local_imag:37,localhost:[7,8,9],locat:[4,7,9,11,14,28],log:[4,5,14,19,27,33,35,36,38],logic:22,logicodev:29,login:10,lon:23,longer:25,longitud:23,look:[7,10,25],lorem:28,loremlorem:28,lot:19,low:[7,9],lxc:[19,31,36],lxc_host_prefix:37,lxc_repo_root:37,lxc_set_suite_env:37,lxc_suit:[19,37],lxc_suite_info:37,lxc_suite_instal:37,lxc_suite_install_info:37,lxc_suite_nam:37,lxd:[19,37],made:[14,19],magna:28,magnetlink:23,magyar:14,mai:[14,19,28,35,38],main:[7,13,25,30,36],mainlin:9,maintain:[1,11,19,28,36],mainten:[4,6,19,35,38,39],make:[2,8,16,19,20,21,22,24,28,33,37],makefil:[19,22,24,31,36,37],man:28,manag:[4,15,16,25,27,35,38],mandatori:6,mani:4,manipul:[16,37],manual:[14,25,28],manuali:28,map:[0,3,28],mark:28,markup:24,mass:22,master:[15,22,25,28,36],math:[2,24],mathemat:28,mathrm:28,matter:[19,23,33],max:[4,23],maxim:22,maximum:[22,23],mean:[19,22,28,33],meaning:28,meant:28,media:[0,3,23],mediawiki:3,memori:14,mention:21,menuselect:28,merg:19,messag:[4,14,22,23,25,27,28,30],messagespo:30,meta:28,metadata:28,metag:3,metasearch:[23,31,35,38],method:[0,6,11,23,28],microsoft:3,microsoft_academ:3,middlewar:4,might:[11,19,20,22,25,28,29,33,36,37],migrat:21,min:23,minim:28,mirror:3,misbehav:22,miss:[4,28,37,39],mix:19,mixcloud:3,mjk:3,mkdir:[7,9,35,38],mod:[7,28],mod_autoindex:7,mod_head:7,mod_proxi:7,mod_proxy_http:7,mod_proxy_uwsgi:7,mod_uwsgi:7,mod_wsgi:7,mode:[11,14,28,36,37],modern:7,modifi:[8,11,14,28,34],modul:[7,26,28],mojeek:3,monet:33,monitor:[11,19],mono:2,month:[0,29],more:[4,12,14,16,18,22,25,28,29,31,33,36,37],morecol:28,morerow:28,morti:[1,6,7,9,12,19,31,36,37],morty_kei:8,morty_listen:[36,37,38],morty_url:8,most:[2,7,14,21,33,35,36,38,39],mostli:[11,28],motiv:17,move:[18,22],movi:3,much:[22,28],multi:[35,38],multibl:23,multipl:[13,14,28,33],music:3,must:[9,14,21,22,23,27,28],my_arg:28,my_funct:28,my_other_arg:28,mydomain:36,mymemori:3,myproject:27,name:[0,3,4,7,9,10,13,14,19,20,23,25,26,30,37],name_of_python_fil:26,naver:3,navig:13,necessari:[10,20],nederland:14,need:[4,6,7,8,9,10,14,18,19,22,25,28,33,35,36,37,38],neither:31,net:31,network:[14,35,38],never:[19,25],nevertheless:[7,9],newcom:16,next:[7,9,13,17,28],nginx:[1,4,5,6,14,19,31,35,37,38,39],nightmar:28,nil:37,nisi:28,nlnet:[16,18,20,21],node:[25,27],nodej:27,non:18,none:[7,23,25,28,29],nonewprivileg:[35,38],nonumi:28,nor:31,normal:[7,19,23,28,36],nostrud:28,note:[7,9,22,29],notic:19,now:[7,9,10,19,20,21,26],npm:[3,25,27],number:[4,14,23,28,29,37],number_of_result:23,numer:28,numref:28,nvr:3,nyaa:3,oad:3,oap:3,obj:28,object:[23,26,28],obtain:14,off:[7,9,22,35,37,38],offer:11,offlin:[3,17,20,23,28,31],often:[23,28,36],old:[7,8,19],on_result:26,onc:[19,37],one:[7,11,14,19,20,22,25,28,31,33,35,36,37,38],ones:[23,35,38],ongo:25,onli:[2,6,7,12,14,20,22,26,28,29,36,37],onlin:[18,28,31],open:[7,10,13,19,21,22,25,28,29,33,36,37],openairedataset:3,openairepubl:3,openrepo:3,openstreetmap:[0,3],oper:[21,28,33],option:[7,8,10,12,14,16,19,20,22,23,25,26,27,28,29,33,35,36,38],order:[7,22,27,28],org:[2,4,7,9,14,23,28,37],organ:31,orient:7,origin:[5,15,19,28],oscar:[0,14,29],osm:[0,3,23],other:[14,22,23,28,33],otherwis:23,our:[1,4,6,16,19,22,25,28,37],out:[7,9,18,19,22,25,28,35,37,38],outgo:14,outgoing_proxi:14,output:[2,20,28,29,35,37,38,39],outsid:19,outstand:28,over:[19,28,31,37],overlin:28,overlook:19,overview:[4,14,24,25,29,31,36],overwritten:23,own:[6,19,25,31,33],owner:25,packag:[2,4,5,7,9,11,19,25,27,28,35,38],pacman:[2,7,9,28],page:[3,7,9,13,14,16,20,22,23,24,28,29,33,34],pageno:[23,29],pagenumb:23,pair:18,palletsproject:28,param:[4,18,23,28],paramet:[23,24],paramt:23,parent:28,pars:29,parse_lin:18,part:[14,16,28,37],parti:33,partial:28,partli:23,pass:[7,9,18,29],past:0,patch:[22,28],path:[4,7,14,19,28,35,37,38],paywal:13,pdb:3,pdbe:3,pdf:2,peertub:3,peopl:[16,33],pep8:[22,25,27],pep8_check:25,pep:28,per:[11,22,23,28],perfect:19,perform:[13,18,23],phase:27,photon:3,phrase:28,piec:28,pip3:21,pip:30,pipe:18,piratebai:3,pix:29,place:[6,9,11,22,23,28,30,33],plai:3,plaintext:28,pleas:[21,22,27,28,29],plenti:22,plu:[7,9],plugin:[0,5,11,22,24,29,31],pocket:[7,9],point:[8,9,10,11,19,24,25,28,33],pointer:28,pointhi:29,polygon:28,popen:18,popular:28,port:[4,8,9,14,23,37],possibl:[8,12,13,14,18,19,20,28,29],post:[0,19,22,29],post_search:26,postcod:23,pot:30,pov:28,power:28,practic:22,pre_search:26,prefer:[6,16,20,28,29,33,34],prefix:34,preinstal:[4,19],prepar:[17,31],prerequisit:[19,28],present:[18,20],preserv:[22,28],press:[13,25],pretti:14,preview:23,previou:36,primari:37,primary_ip:[36,37],prime:24,primer:[24,31],principl:28,privaci:[6,7,9,19,24,28,32,35,38],privat:[17,18,31,32],privatedevic:[35,38],privatetmp:[35,38],pro:28,problem:4,procedur:[6,37],process:[2,4,18,19,20,25],processor:28,produc:28,product:[14,17,36],profil:[10,25,31,33,35,38],program:25,progress:[17,35,38],project:[19,24,25,28],promot:31,prompt:[19,36],proper:[33,35],properli:21,propos:18,protect:[1,5,7,9,19,22,31,32,35],protectsystem:[35,38],protocol:[8,9,19],provid:[20,22,23,28],proxi:[1,5,6,9,14,19,23,29,31,33,35,36,37,38],proxif:[7,9],proxifi:12,proxy_add_x_forwarded_for:[4,9],proxy_buff:9,proxy_http:7,proxy_http_modul:7,proxy_modul:7,proxy_pass:[4,9],proxy_set_head:[4,9],proxy_uwsgi_modul:7,proxypass:[7,35,38],proxypreservehost:7,psi:28,ptb:3,pub:3,public_host:35,public_url:[35,36,37],public_url_morti:[37,38],public_url_path_morti:36,publicli:18,publish:23,publishedd:23,pubm:3,pull:[8,15,18,22,28,30],purpos:[14,23,27],push:[22,25],pwd:[8,19],py3:25,pybabel:30,pybuild:24,pyclean:25,pyenv:[19,25],pygment:28,pylint:24,pylintrc:25,pypi:[25,28],python2:[11,21],python3:[11,21,27],python:[11,14,17,19,24,26,27,28,31],pythonpath:19,quadratur:31,qualiti:[2,25,28],queri:[13,18,20,23,29,33,34],question:[28,33],qui:28,quickstart:[22,24,25,31],quiet:25,quit:[7,19,22,25],qwant:3,qwer:34,qwi:3,qwn:3,qws:3,rais:18,random:[23,33],rang:[3,11,23,29],rangl:28,rate:4,rather:20,raw:28,rbg:3,reach:28,reactiv:14,read:[18,19,22,25,27,36],readability_:28,reader:[19,28],readi:19,readlin:18,readm:[4,7,11,12],real:[4,9],realli:6,reason:[7,16,21,25,28],rebuild:[22,25],rebum:28,recommend:[2,4,6,11,22,23,25,28,36],reconsid:22,record:28,reddit:3,redefin:23,redirect:13,reduc:22,ref:[35,38],refer:[1,28,33],referenc:28,refnam:28,regardless:33,regist:24,regular:18,reinstal:35,rel:[9,19,28,37],releas:[21,25,37],releng:37,reload:11,remark:19,rememb:[19,22],remote_addr:[4,9],remov:[11,13,19,33,35,36,37,38],renam:[8,29],render:2,replac:[7,9,10,16,19,26],repo:22,report:19,reposetori:19,repositori:[10,16,19,37],request:[5,7,9,14,18,20,22,24,26,28,33],request_timeout:14,request_uri:7,requesthead:7,requir:[2,7,13,21,22,23,24,25,26,27,28,29],requisit:25,reset:33,resourc:9,respect:[22,33,35,38],respons:14,rest:[20,24,31],restart:[5,8,9,10,11,12,15,19,35,38],restrict:20,restructuredtext:28,result:[1,2,5,6,7,9,13,14,18,24,28,29,31,33,38],result_proxi:[7,8,9,12,38],results_on_new_tab:29,retriev:30,return42:28,return_cod:18,rever:7,revers:[1,5,6,9,35,36,37,38],rewrit:[0,13],rfc:28,rhel:[2,7,9,11,28],rid:[25,37],right:[20,26,28,31],rightmost:28,rigth:28,road:23,roboag:4,robot:[25,27],robotframework:21,role:24,rolenam:28,roll:37,romanian:14,root:[7,9,19,25,37],rotat:28,round:22,rout:[5,7,9,28],row:28,rowspan:28,rspan:28,rss:[4,29],rst:[22,28],rst_titl:37,rubygem:3,rule:[4,22,35],run:[2,4,6,7,8,9,12,14,17,18,19,20,22,23,24,26,28,30,33,35,36,38,39],runtimeerror:18,russian:14,sadipsc:28,safe:[3,29],safe_search:0,safesearch:[28,29],same:[4,10,14,19,23,28],sampl:[5,28,35],san:2,sanctu:28,sanit:19,satisfi:27,save:7,sc2031:37,sc2034:[36,37],scalabl:28,scale:[19,28,37],scaleabl:28,scan:11,scc:3,scd:3,schedul:[18,21],scheme:[4,9],scholar:3,schroeding:28,scienc:3,scope:22,scratch:2,script:[1,4,5,7,9,19,27,35,36,37,38,39],script_nam:9,scroll:13,sdist:25,sea:28,search:[3,4,5,8,13,14,18,19,20,22,23,24,28,31,32,33],search_on_category_select:[13,29],search_path:23,search_str:23,searchcod:3,searchcode_cod:3,searchcode_doc:3,searx:[0,1,2,4,5,6,7,11,12,14,15,17,18,22,23,25,26,27,28,29,30,32,34,35,36,38],searx_internal_url:36,searx_settings_path:[10,19],searx_url:[25,36],searx_userag:14,sec:4,second:[10,14,28],secret:[14,20],secret_kei:14,section:[9,14,19,25,26,28],secur:31,sed:28,see:[2,4,7,8,9,11,12,14,18,19,20,22,27,28,29,31,34,35,37],seed:23,seeder:23,seedpeer:3,select:[13,25,28,33,34,37],selenium:27,self:[13,16,31,35,37,38,39],self_inform:29,semant:[3,22],send:[2,4,14,33],sens:28,sent:33,separ:[20,22,28,29,35,38],seri:25,serif:2,seriou:19,serv:[22,33,37],server:[4,5,6,8,14,19,27,37,38],server_nam:9,servic:[4,5,6,9,11,12,19,28,29,31,33,35,36,37,38],service_home_bas:36,service_us:[35,36,38,39],service_ussr:36,session:[10,27],set:[2,3,5,7,8,9,10,12,16,18,19,25,26,27,28,29,30,31,33,34,35,36,37,38],setenvif:7,sethandl:7,setup:[1,2,4,5,6,7,9,10,19,24,28,31,35,38],sever:19,seznam:3,share:[7,11,19,20,37],shell:[5,10,19,35,36,37,38],shellcheck:[2,28,36,37],ship:9,shortcut:[0,3,14,20,23,28],should:[6,7,9,14,16,19,21,22,28,30],show:[1,2,3,7,9,19,28,35,36,37,38],shown:[6,7,10,19,28],side:[6,28],sign:28,signal:19,signifi:28,similar:[11,28],simpl:[19,25,29,35,38],simplest:28,simpli:[4,19,22,25,29,35,36,38,39],simplifi:[4,25,35,38,39],sinc:[9,16,25,28],singl:[7,9,33],sit:28,site:[0,4,5,7,14,23,28,29,35,38],size:23,skeleton:18,skill:24,skip:27,slow:14,small:23,smylink:19,snap:[19,37],snapcraft:37,snippet:12,social:[0,3],sock:14,socket:[7,8,9],socks5:23,soft:24,softwar:[3,19,35,38],sold:33,solut:20,solv:[4,20],some:[1,6,7,14,19,20,22,25,28,35,36,37,38],someon:33,someth:[22,25],sometim:16,soundcloud:3,sourc:[10,14,19,21,24,25,28,30,33,35,37,38],source_fil:30,source_ip:14,source_lang:30,space:14,span:28,spars:28,spdx:[36,37],special:[6,11,23],specif:[11,14,23,37],specifi:[8,14,23,29],speu:3,sphinx:22,splinter:21,split:22,spoilt:6,sponsor:[16,18,20,21],src:[4,9,19],srv:7,ssl:[23,31],stabl:14,stack:[19,27,37],stackoverflow:3,stage:28,standalon:16,standard:[7,22,23,26,37],start:[1,4,7,9,10,11,17,22,23,25,31,35,37,38],startpag:[3,29],stash:[15,25],stat:28,statist:28,statu:[35,36,38],stdout:18,step:[1,5,6,17,19,22,31,39],stet:28,stone:20,stop:[4,7,9,10,11,19,25,35,38],store:[23,33],street:23,strict:20,string:[20,23,29,30],stroke:28,strong:28,structur:[22,24],stub:28,stuff:28,style:[24,29],sub:[22,28],subdir:9,subdirectori:9,subject:28,submit:22,subnet:7,subprocess:18,subrul:4,subscript:28,subsect:28,subshel:37,substitut:24,sudo:[2,6,7,9,11,15,19,27,28,35,36,37,38,39],suffix:[8,14],suggest:[1,26],suit:[17,36],suitabl:28,sup:28,superscript:28,supervisor:16,support:[2,3,5,9,14,17,20,22,23,28,29,31,33,35,37,38],sure:[8,10,19,21],surround:28,suspici:4,svg:2,svg_imag:28,symbol:[11,19],symlink:9,syntax:[29,31,32],syslog:[35,38],system:[10,11,19,20,21,22,25,28,35,36,38],systemctl:[7,9,11,15,19,39],systemd:[11,35,38],szn:3,tab:[24,29,37],tabl:[18,24],tailor:33,take:[11,14,16,22,30,37],taken:[28,36],takimata:28,tar:[25,35,38],target:[19,22,24,28,31,35,37,38],task:[6,10,19,28,37],tcp:8,tell:23,templat:[11,18,19,23,24],tempor:28,term:[7,28],termin:[10,19],test:[2,7,9,19,21,22,24,37],texliv:2,text:[0,23,28],textstyl:28,tfrac:28,than:[14,28,31],thei:[11,14,19,20,28,33],them:[14,19,25,26,28,36],theme:[14,24,25,29],themes_path:14,themselv:20,therefor:[6,28],theses:19,thi:[4,6,7,8,9,10,11,12,14,16,18,19,20,21,23,25,26,27,28,29,33,35,36,37,38,39],thing:28,think:[22,25,28],third:[28,33],those:[18,19,30,33],three:[22,26,28,33],through:[5,7,9,14,20,28,29,33],thu:[18,21,29,33],thumbnail:23,thumbnail_src:23,time:[4,14,19,21,22,23,28,29,33,37],time_rang:[0,29],time_range_support:[23,28],timeout:[3,14,23,28,36,38],timestamp:11,tip:[24,28],titl:23,todai:18,togeth:18,token:[18,20],tokyotoshokan:3,too:[4,14,28,33],tool:[1,2,6,16,22,28,30,31,37],top:28,tor:[3,31,33],torrentfil:23,torrentz:3,touch:[7,9,11,14,19],tpb:3,trace:27,track:[31,33],tracker:13,tracker_url_remov:29,trademark:28,traffic:[7,9],train:28,transform:28,transifex:[22,24],transifexrc:30,translat:[3,14,24,31],transpar:[19,37],travi:[21,27],tree:[19,25],troubleshoot:36,trust:[20,31,33],ttf:2,tupl:26,turn:[22,27],twice:10,twine:25,twitter:3,two:[11,22,28,29],txt:[21,25,28],type:[0,22,23,25,29,30,33,35,37,38],typic:[1,28],typo:28,ubu1604:37,ubu1804:37,ubu1910:37,ubu2004:37,ubuntu:[2,7,9,10,11,15,28,37],uds:7,ugli:[16,28],uid:19,ullamco:28,ultrasecretkei:14,unam:[10,37],uncom:14,uncommon:22,under:[19,20,23],understand:[16,28],unfortun:22,unicod:24,uninstal:[25,36],unit:[11,22,25,35,38],unit_test:[25,27],univers:10,unix:[7,9],unknown:[33,35,38],unless:20,unlik:33,unspecifi:23,unsplash:3,untouch:25,unwant:6,updat:[5,8,14,22,24,31,35,38],update_dev_packag:27,update_packag:15,upload:25,url:[0,7,8,9,12,13,14,19,22,23,25,33,36,37,38],urlencod:23,usag:[6,7,9,19,25,28,35,38],use:[2,4,6,7,9,12,14,18,19,20,22,23,25,27,28,31,32,35,36,37,38,39],used:[7,9,14,21,22,23,28,31,33,36],useful:[14,36],user:[4,5,7,9,11,13,14,19,20,22,23,28,31,33,36,39],useradd:[35,38],userag:4,useragent_suffix:14,uses:[14,23,28,33],using:[4,7,8,9,14,17,19,22,25,27,28,30,31],usr:[4,7,9,11,19,35,36,38],usual:[17,21,33],utf:[28,36,37],util:[1,2,4,6,7,9,12,19,25,31],uwsgi:[1,5,8,9,10,15,19,31],uwsgi_param:9,uwsgi_pass:9,uwsgisocket:7,valid:[23,27,29],valu:[0,8,9,18,23,28,29,36],variabl:[8,23,25,28,38],variant:28,variou:[22,26],vassal:11,vector:28,vendor:22,veniam:28,venv3:21,venv:27,verbos:[25,36],veri:36,verifi:23,vero:28,version:[13,21,28,35,38],via:[7,9,16,34],video:3,view:[24,33],viewbox:28,vim:[0,13,29],vim_hotkei:13,vimeo:3,virtual:[7,9],virtualenv:[10,19,21,25,27],virualenv:[10,25],visist:28,visit:[28,33],voat:3,volum:8,voluptua:28,vpn:33,vulner:33,wai:[11,18,22,23,28,33],wait:[14,18],want:[14,20,21,22,25,28,29,33,36,37],wantedbi:[35,38],warn:[2,7,9,28,37],watch:22,web:[4,14,16,19,23,25,35,37],webapp:[10,14,21,25,28],webcrawl:4,webserv:9,websit:0,weight:[14,28],weigth:[3,14],weird:22,welcom:[7,9],well:28,were:[18,20,21],werkzeug:25,wget:[35,38],what:[11,19,28,37],whatev:[25,37],when:[2,7,13,14,21,26,27,28,33],where:[4,14,19,28],whether:[27,33],which:[1,4,7,9,11,14,16,18,19,20,22,23,25,28,29,31,33,35,38],whl:25,who:[16,18,33],whole:[7,26],why:[28,31,32],wide:22,widen:28,width:28,wiki:[0,3,9,18,20,28,37],wikibook:3,wikidata:3,wikinew:3,wikipedia:[3,14,29,34],wikiquot:3,wikisourc:3,wikivers:3,wikivoyag:3,wiktionari:3,wish:14,within:[25,28],without:[2,8,14,23,31,33],wolframalpha:3,wolframalpha_noapi:3,won:[14,21],word:[26,28,29],work:[9,10,14,17,22,23,25,27,33],workingdirectori:[35,38],world:[22,28,33],worri:21,worth:[11,33],would:[19,20],wrap:[9,17],written:19,wrong:25,wsgi:9,www1x:3,www:[2,7,28,30,37],wysiwyg:22,xdg:25,xetex:2,xml:28,xmln:28,xpath:3,xxxx:28,xzf:[35,38],yahoo:3,yahoo_new:3,yandex:3,year:[21,29],yes:[35,38],yet:[22,23,25],ygg:3,yggtorrent:3,yhn:3,yml:[3,5,7,8,9,10,12,16,18,19,25,26,27,29,31,38],you:[1,2,4,6,7,8,9,10,11,14,17,18,19,22,25,27,28,29,31,33,34,35,36,37,38,39],your:[2,4,6,7,8,9,10,11,12,13,14,16,17,21,22,24,25,28,31,35,36,37,38],your_morty_proxy_kei:12,yourself:22,youtub:3,youtube_noapi:3,yyyi:28,zero:18,zzzz:28},titles:["Administration API","Architecture","Buildhosts","Engines","How to protect an instance","Administrator documentation","Installation","Install with apache","Docker installation","Install with nginx","Step by step installation","uwsgi","How to setup result proxy","Plugins builtin","<code class=\"docutils literal notranslate\"><span class=\"pre\">settings.yml</span></code>","How to update","Searx admin interface","Blog","Preparation for offline engines","Developing in Linux containers [202006]","Limit access to your searx engines","Introducing Python 3 support","How to contribute","Engine overview","Developer documentation","Makefile Targets","Plugins","Development Quickstart","reST primer","Search API","Translation","Welcome to searx","User documentation","Why use a private instance?","Search syntax","<code class=\"docutils literal notranslate\"><span class=\"pre\">utils/filtron.sh</span></code>","Tooling box <code class=\"docutils literal notranslate\"><span class=\"pre\">utils/*</span></code>","<code class=\"docutils literal notranslate\"><span class=\"pre\">utils/lxc.sh</span></code>","<code class=\"docutils literal notranslate\"><span class=\"pre\">utils/morty.sh</span></code>","<code class=\"docutils literal notranslate\"><span class=\"pre\">utils/searx.sh</span></code>"],titleterms:{"abstract":19,"default":[3,13,23],"function":19,"public":[7,8,9,33],"return":23,The:[7,9,19,22],about:[28,33],access:20,acknowledg:[16,18,20,21],activ:25,admin:16,administr:[0,5],admonit:28,aka:28,alltogeth:11,anchor:28,apach:7,api:[0,29],architectur:1,archlinux:19,argument:23,articl:[2,28],ascii:28,audienc:19,bar:0,basic:28,bibliograph:28,block:28,blog:17,box:[4,36],bug:21,build:[2,8,22,25,27,28],buildhost:[2,37],built:[3,13],builtin:13,bullet:28,check:10,clean:[22,25],code:[22,23,28],command:[8,36,37],commit:22,common:36,compil:27,conclus:33,configur:[0,3,4,10,13,23],consequ:33,contain:19,content:[2,4,7,8,9,10,11,14,19,22,23,25,28],contribut:22,creat:[10,22,35,38],csv:28,data:0,debian:7,debug:27,definit:28,depend:10,deploi:22,design:22,develop:[18,19,24,27],direct:22,disabl:[7,9],distributor:11,doc:[2,22,25],docker:8,document:[5,22,24,32],doe:33,dot:28,drop:25,emb:0,engin:[3,14,18,19,20,23],entri:26,environ:[25,27,28,36],equat:28,exampl:[23,26,28,34],ext:28,extern:26,extlink:28,fact:21,featur:31,field:28,figur:28,file:[23,28],filtron:[4,35],first:6,flat:28,foo:28,fork:25,found:21,fulli:19,fun:21,further:[1,3,4,7,9,11,12,13,14,26,28,29,35,37,38,39],gate:28,gener:[23,28],gentlemen:19,get:0,github:22,global:14,good:22,graphviz:28,grid:28,hackabl:22,head:28,hello:28,highlight:28,hlist:28,hook:26,horizont:28,how:[4,12,15,21,22,27,33],http:[7,9],hyperlink:28,imag:[8,23,28],init:30,inlin:28,instal:[6,7,8,9,10,16,35,37,38,39],instanc:[4,8,33],interfac:16,internet:[7,9],intersphinx:28,introduc:21,javascript:27,kernel:28,kiss:28,latex:28,layout:7,limit:20,line:[8,28],link:28,lint:2,linux:19,list:28,liter:28,live:[22,25],log:[7,9],lxc:37,make:[23,25,27],makefil:[25,27],map:23,markup:28,math:28,matter:28,morti:38,motiv:19,name:28,need:2,nest:28,next:[18,20],nginx:9,note:28,offlin:18,ordinari:28,origin:11,overrid:23,overview:[23,35,37,38,39],packag:10,page:25,paragraph:28,paramet:29,pars:23,pass:23,plugin:[13,26],point:26,post:26,pre:26,prepar:18,prime:22,primer:28,privaci:[22,33],privat:[20,33],process:28,product:19,progress:18,project:30,protect:[4,33],proxi:[7,12],pybuild:25,pyenv:27,pylint:25,python:[21,25],quickstart:27,quot:28,read:[1,3,4,7,9,11,12,13,14,26,28,29,35,37,38,39],readabl:28,ref:28,regist:26,render:28,request:[4,23],requir:30,respons:0,rest:[22,28],restart:7,result:[12,23,26],revers:7,role:28,rout:4,run:[21,25,27,37],sampl:[0,4],script:[2,6],search:[0,26,29,34],searx:[8,9,10,16,19,20,21,31,33,37,39],see:33,server:[7,9],servic:7,set:[14,23],setup:[12,25,27,36,37],shell:2,sidebar:28,simpl:28,site:9,skill:28,smart:28,soft:28,some:2,sourc:[22,27],space:28,specif:28,sphinx:[2,28],start:19,step:[10,18,20],structur:28,style:27,substitut:28,suit:[19,37],support:[7,21],svg:28,syntax:[28,34],tab:28,tabl:28,target:[25,27],templat:28,test:[25,27],theme:27,thi:2,through:4,time:[3,13],tip:27,titl:28,tool:[4,36],torrent:23,transifex:30,translat:[22,30],truth:28,unicod:28,unit:27,updat:[6,15,30],upgrad:21,upstream:25,url:28,use:33,user:[10,32,35,38],using:[21,33],usual:19,util:[35,36,37,38,39],uwsgi:[7,11],video:23,view:28,welcom:31,what:33,why:33,work:[2,19],wrap:19,yml:[14,23],you:21,your:[19,20,26,27]}})
user/index.html+2−5
@@ -4,7 +4,6 @@
44<html>
55 <head>
66 <meta charset="utf-8" />
7− <meta name="viewport" content="width=device-width, initial-scale=1.0">
87 <meta name="viewport" content="width=device-width, initial-scale=1">
98 <title>User documentation &#8212; Searx Documentation (Searx-0.17.0.tex)</title>
109 <link rel="stylesheet" href="../_static/searx.css" type="text/css" />
@@ -33,8 +32,7 @@
3332 <li class="right" >
3433 <a href="../index.html" title="Welcome to searx"
3534 accesskey="P">previous</a> |</li>
36− <li class="nav-item nav-item-0"><a href="../index.html">Searx Documentation (Searx-0.17.0.tex)</a> &#187;</li>
37− <li class="nav-item nav-item-this"><a href="">User documentation</a></li>
35+ <li class="nav-item nav-item-0"><a href="../index.html">Searx Documentation (Searx-0.17.0.tex)</a> &#187;</li>
3836 </ul>
3937 </div>
4038
@@ -62,7 +60,6 @@
6260</div>
6361
6462
65− <div class="clearer"></div>
6663 </div>
6764 </div>
6865 </div>
@@ -111,7 +108,7 @@
111108
112109 <div class="footer" role="contentinfo">
113110 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
114− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.1.2.
111+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.0.1.
115112 </div>
116113 <script src="../_static/version_warning_offset.js"></script>
117114
user/own-instance.html+2−5
@@ -4,7 +4,6 @@
44<html>
55 <head>
66 <meta charset="utf-8" />
7− <meta name="viewport" content="width=device-width, initial-scale=1.0">
87 <meta name="viewport" content="width=device-width, initial-scale=1">
98 <title>Why use a private instance? &#8212; Searx Documentation (Searx-0.17.0.tex)</title>
109 <link rel="stylesheet" href="../_static/searx.css" type="text/css" />
@@ -34,8 +33,7 @@
3433 <a href="search_syntax.html" title="Search syntax"
3534 accesskey="P">previous</a> |</li>
3635 <li class="nav-item nav-item-0"><a href="../index.html">Searx Documentation (Searx-0.17.0.tex)</a> &#187;</li>
37− <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">User documentation</a> &#187;</li>
38− <li class="nav-item nav-item-this"><a href="">Why use a private instance?</a></li>
36+ <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">User documentation</a> &#187;</li>
3937 </ul>
4038 </div>
4139
@@ -115,7 +113,6 @@ instance, have access to a privacy respecting search service.</p>
115113</div>
116114
117115
118− <div class="clearer"></div>
119116 </div>
120117 </div>
121118 </div>
@@ -167,7 +164,7 @@ instance, have access to a privacy respecting search service.</p>
167164
168165 <div class="footer" role="contentinfo">
169166 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
170− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.1.2.
167+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.0.1.
171168 </div>
172169 <script src="../_static/version_warning_offset.js"></script>
173170
user/search_syntax.html+2−5
@@ -4,7 +4,6 @@
44<html>
55 <head>
66 <meta charset="utf-8" />
7− <meta name="viewport" content="width=device-width, initial-scale=1.0">
87 <meta name="viewport" content="width=device-width, initial-scale=1">
98 <title>Search syntax &#8212; Searx Documentation (Searx-0.17.0.tex)</title>
109 <link rel="stylesheet" href="../_static/searx.css" type="text/css" />
@@ -34,8 +33,7 @@
3433 <a href="index.html" title="User documentation"
3534 accesskey="P">previous</a> |</li>
3635 <li class="nav-item nav-item-0"><a href="../index.html">Searx Documentation (Searx-0.17.0.tex)</a> &#187;</li>
37− <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">User documentation</a> &#187;</li>
38− <li class="nav-item nav-item-this"><a href="">Search syntax</a></li>
36+ <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">User documentation</a> &#187;</li>
3937 </ul>
4038 </div>
4139
@@ -80,7 +78,6 @@ categories and languages.</p>
8078</div>
8179
8280
83− <div class="clearer"></div>
8481 </div>
8582 </div>
8683 </div>
@@ -132,7 +129,7 @@ categories and languages.</p>
132129
133130 <div class="footer" role="contentinfo">
134131 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
135− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.1.2.
132+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.0.1.
136133 </div>
137134 <script src="../_static/version_warning_offset.js"></script>
138135
utils/filtron.sh.html+6−9
@@ -4,7 +4,6 @@
44<html>
55 <head>
66 <meta charset="utf-8" />
7− <meta name="viewport" content="width=device-width, initial-scale=1.0">
87 <meta name="viewport" content="width=device-width, initial-scale=1">
98 <title>utils/filtron.sh &#8212; Searx Documentation (Searx-0.17.0.tex)</title>
109 <link rel="stylesheet" href="../_static/searx.css" type="text/css" />
@@ -40,8 +39,7 @@
4039 <a href="searx.sh.html" title="utils/searx.sh"
4140 accesskey="P">previous</a> |</li>
4241 <li class="nav-item nav-item-0"><a href="../index.html">Searx Documentation (Searx-0.17.0.tex)</a> &#187;</li>
43− <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Tooling box <code class="docutils literal notranslate"><span class="pre">utils/*</span></code></a> &#187;</li>
44− <li class="nav-item nav-item-this"><a href=""><code class="docutils literal notranslate"><span class="pre">utils/filtron.sh</span></code></a></li>
42+ <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Tooling box <code class="docutils literal notranslate"><span class="pre">utils/*</span></code></a> &#187;</li>
4543 </ul>
4644 </div>
4745
@@ -222,18 +220,18 @@ inspect service
222220 show service status and log
223221option
224222 set one of the available options
225−apache (http://192.168.1.127/searx)
223+apache (http://192.168.1.81/searx)
226224 :install: apache site with a reverse proxy (ProxyPass)
227225 :remove: apache site searx.conf
228−nginx (http://192.168.1.127/searx)
226+nginx (http://192.168.1.81/searx)
229227 :install: nginx site with a reverse proxy (ProxyPass)
230228 :remove: nginx site searx.conf
231229
232230filtron rules: /etc/filtron/rules.json
233231
234232If needed, set PUBLIC_URL of your WEB service in the &#39;.config.sh&#39; file::
235− PUBLIC_URL : http://192.168.1.127/searx
236− PUBLIC_HOST : 192.168.1.127
233+ PUBLIC_URL : http://192.168.1.81/searx
234+ PUBLIC_HOST : 192.168.1.81
237235 SERVICE_USER : filtron
238236 FILTRON_TARGET : 127.0.0.1:8888
239237 FILTRON_API : 127.0.0.1:4005
@@ -244,7 +242,6 @@ If needed, set PUBLIC_URL of your WEB service in the &#39;.config.sh&#39; file::
244242</div>
245243
246244
247− <div class="clearer"></div>
248245 </div>
249246 </div>
250247 </div>
@@ -296,7 +293,7 @@ If needed, set PUBLIC_URL of your WEB service in the &#39;.config.sh&#39; file::
296293
297294 <div class="footer" role="contentinfo">
298295 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
299− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.1.2.
296+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.0.1.
300297 </div>
301298 <script src="../_static/version_warning_offset.js"></script>
302299
utils/index.html+2−5
@@ -4,7 +4,6 @@
44<html>
55 <head>
66 <meta charset="utf-8" />
7− <meta name="viewport" content="width=device-width, initial-scale=1.0">
87 <meta name="viewport" content="width=device-width, initial-scale=1">
98 <title>Tooling box utils/* &#8212; Searx Documentation (Searx-0.17.0.tex)</title>
109 <link rel="stylesheet" href="../_static/searx.css" type="text/css" />
@@ -33,8 +32,7 @@
3332 <li class="right" >
3433 <a href="../dev/reST.html" title="reST primer"
3534 accesskey="P">previous</a> |</li>
36− <li class="nav-item nav-item-0"><a href="../index.html">Searx Documentation (Searx-0.17.0.tex)</a> &#187;</li>
37− <li class="nav-item nav-item-this"><a href="">Tooling box <code class="docutils literal notranslate"><span class="pre">utils/*</span></code></a></li>
35+ <li class="nav-item nav-item-0"><a href="../index.html">Searx Documentation (Searx-0.17.0.tex)</a> &#187;</li>
3836 </ul>
3937 </div>
4038
@@ -163,7 +161,6 @@ reverse proxy for filtron on all containers of the <a class="reference internal"
163161</div>
164162
165163
166− <div class="clearer"></div>
167164 </div>
168165 </div>
169166 </div>
@@ -212,7 +209,7 @@ reverse proxy for filtron on all containers of the <a class="reference internal"
212209
213210 <div class="footer" role="contentinfo">
214211 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
215− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.1.2.
212+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.0.1.
216213 </div>
217214 <script src="../_static/version_warning_offset.js"></script>
218215
utils/lxc.sh.html+9−43
@@ -4,7 +4,6 @@
44<html>
55 <head>
66 <meta charset="utf-8" />
7− <meta name="viewport" content="width=device-width, initial-scale=1.0">
87 <meta name="viewport" content="width=device-width, initial-scale=1">
98 <title>utils/lxc.sh &#8212; Searx Documentation (Searx-0.17.0.tex)</title>
109 <link rel="stylesheet" href="../_static/searx.css" type="text/css" />
@@ -34,8 +33,7 @@
3433 <a href="morty.sh.html" title="utils/morty.sh"
3534 accesskey="P">previous</a> |</li>
3635 <li class="nav-item nav-item-0"><a href="../index.html">Searx Documentation (Searx-0.17.0.tex)</a> &#187;</li>
37− <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Tooling box <code class="docutils literal notranslate"><span class="pre">utils/*</span></code></a> &#187;</li>
38− <li class="nav-item nav-item-this"><a href=""><code class="docutils literal notranslate"><span class="pre">utils/lxc.sh</span></code></a></li>
36+ <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Tooling box <code class="docutils literal notranslate"><span class="pre">utils/*</span></code></a> &#187;</li>
3937 </ul>
4038 </div>
4139
@@ -158,46 +156,12 @@ of coffee).:</p>
158156<div class="section" id="overview">
159157<span id="lxc-sh-help"></span><h2>Overview<a class="headerlink" href="#overview" title="Permalink to this headline">¶</a></h2>
160158<p>The <code class="docutils literal notranslate"><span class="pre">--help</span></code> output of the script is largely self-explanatory:</p>
161−<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>usage::
162− lxc.sh build [containers|&lt;name&gt;]
163− lxc.sh copy [images]
164− lxc.sh remove [containers|&lt;name&gt;|images]
165− lxc.sh [start|stop] [containers|&lt;name&gt;]
166− lxc.sh show [images|suite|info|config [&lt;name&gt;]]
167− lxc.sh cmd [--|&lt;name&gt;] &#39;...&#39;
168− lxc.sh install [suite|base [&lt;name&gt;]]
159+<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>ERROR: missing command lxc
169160
170−build
171− :containers: build, launch all containers and &#39;install base&#39; packages
172− :&lt;name&gt;: build, launch container &lt;name&gt; and &#39;install base&#39; packages
173−copy:
174− :images: copy remote images of the suite into local storage
175−remove
176− :containers: delete all &#39;containers&#39; or only &lt;container-name&gt;
177− :images: delete local images of the suite
178−start/stop
179− :containers: start/stop all &#39;containers&#39; from the suite
180− :&lt;name&gt;: start/stop container &lt;name&gt; from suite
181−show
182− :info: show info of all (or &lt;name&gt;) containers from LXC suite
183− :config: show config of all (or &lt;name&gt;) containers from the LXC suite
184− :suite: show services of all (or &lt;name&gt;) containers from the LXC suite
185− :images: show information of local images
186−cmd
187− use single qoutes to evaluate in container&#39;s bash, e.g.: &#39;echo $(hostname)&#39;
188− -- run command &#39;...&#39; in all containers of the LXC suite
189− :&lt;name&gt;: run command &#39;...&#39; in container &lt;name&gt;
190−install
191− :base: prepare LXC; install basic packages
192− :suite: install LXC searx suite into all (or &lt;name&gt;) containers
161+LXD is needed, to install run::
193162
194−LXC suite: searx --&gt; http://192.168.1.127/searx
195− suite includes searx, morty &amp; filtron
196−suite images:
197− ubu1604 ubu1804 ubu1910 ubu2004 fedora31 archlinux
198−suite containers:
199− searx-ubu1604 searx-ubu1804 searx-ubu1910 searx-ubu2004 searx-fedora31
200− searx-archlinux
163+ snap install lxd
164+ lxd init --auto
201165</pre></div>
202166</div>
203167</div>
@@ -236,6 +200,9 @@ lxc_set_suite_env<span class="o">()</span> <span class="o">{</span>
236200
237201 <span class="c1"># rolling releases see https://www.archlinux.org/releng/releases/</span>
238202 <span class="s2">&quot;</span><span class="nv">$LINUXCONTAINERS_ORG_NAME</span><span class="s2">:archlinux&quot;</span> <span class="s2">&quot;archlinux&quot;</span>
203+
204+ <span class="c1"># EOL 30 June 2024</span>
205+ <span class="s2">&quot;</span><span class="nv">$LINUXCONTAINERS_ORG_NAME</span><span class="s2">:centos/7&quot;</span> <span class="s2">&quot;centos7&quot;</span>
239206 <span class="o">)</span>
240207
241208 <span class="nv">PUBLIC_URL</span><span class="o">=</span><span class="s2">&quot;</span><span class="si">${</span><span class="nv">PUBLIC_URL</span><span class="k">:-</span><span class="nv">http</span><span class="p">://</span><span class="k">$(</span>uname -n<span class="k">)</span><span class="p">/searx</span><span class="si">}</span><span class="s2">&quot;</span>
@@ -304,7 +271,6 @@ lxc_suite_info<span class="o">()</span> <span class="o">{</span>
304271</div>
305272
306273
307− <div class="clearer"></div>
308274 </div>
309275 </div>
310276 </div>
@@ -356,7 +322,7 @@ lxc_suite_info<span class="o">()</span> <span class="o">{</span>
356322
357323 <div class="footer" role="contentinfo">
358324 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
359− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.1.2.
325+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.0.1.
360326 </div>
361327 <script src="../_static/version_warning_offset.js"></script>
362328
utils/morty.sh.html+6−9
@@ -4,7 +4,6 @@
44<html>
55 <head>
66 <meta charset="utf-8" />
7− <meta name="viewport" content="width=device-width, initial-scale=1.0">
87 <meta name="viewport" content="width=device-width, initial-scale=1">
98 <title>utils/morty.sh &#8212; Searx Documentation (Searx-0.17.0.tex)</title>
109 <link rel="stylesheet" href="../_static/searx.css" type="text/css" />
@@ -40,8 +39,7 @@
4039 <a href="filtron.sh.html" title="utils/filtron.sh"
4140 accesskey="P">previous</a> |</li>
4241 <li class="nav-item nav-item-0"><a href="../index.html">Searx Documentation (Searx-0.17.0.tex)</a> &#187;</li>
43− <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Tooling box <code class="docutils literal notranslate"><span class="pre">utils/*</span></code></a> &#187;</li>
44− <li class="nav-item nav-item-this"><a href=""><code class="docutils literal notranslate"><span class="pre">utils/morty.sh</span></code></a></li>
42+ <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Tooling box <code class="docutils literal notranslate"><span class="pre">utils/*</span></code></a> &#187;</li>
4543 </ul>
4644 </div>
4745
@@ -224,22 +222,22 @@ inspect service
224222option
225223 set one of the available options
226224 :new-key: set new morty key
227−apache : http://192.168.1.127/morty/
225+apache : http://192.168.1.81/morty/
228226 :install: apache site with a reverse proxy (ProxyPass)
229227 :remove: apache site morty.conf
230−nginx (http://192.168.1.127/morty/)
228+nginx (http://192.168.1.81/morty/)
231229 :install: nginx site with a reverse proxy (ProxyPass)
232230 :remove: nginx site morty.conf
233231
234232If needed, set the environment variables in the &#39;.config.sh&#39; file::
235− PUBLIC_URL_MORTY: http://192.168.1.127/morty/
233+ PUBLIC_URL_MORTY: http://192.168.1.81/morty/
236234 MORTY_LISTEN: 127.0.0.1:3000
237235 SERVICE_USER: morty
238236
239237To activate result and image proxy in searx, edit settings.yml (read:
240238https://asciimoo.github.io/searx/admin/morty.html)::
241239 result_proxy:
242− url : http://192.168.1.127/morty/
240+ url : http://192.168.1.81/morty/
243241 server:
244242 image_proxy : True
245243</pre></div>
@@ -248,7 +246,6 @@ https://asciimoo.github.io/searx/admin/morty.html)::
248246</div>
249247
250248
251− <div class="clearer"></div>
252249 </div>
253250 </div>
254251 </div>
@@ -300,7 +297,7 @@ https://asciimoo.github.io/searx/admin/morty.html)::
300297
301298 <div class="footer" role="contentinfo">
302299 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
303− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.1.2.
300+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.0.1.
304301 </div>
305302 <script src="../_static/version_warning_offset.js"></script>
306303
utils/searx.sh.html+3−48
@@ -4,7 +4,6 @@
44<html>
55 <head>
66 <meta charset="utf-8" />
7− <meta name="viewport" content="width=device-width, initial-scale=1.0">
87 <meta name="viewport" content="width=device-width, initial-scale=1">
98 <title>utils/searx.sh &#8212; Searx Documentation (Searx-0.17.0.tex)</title>
109 <link rel="stylesheet" href="../_static/searx.css" type="text/css" />
@@ -34,8 +33,7 @@
3433 <a href="index.html" title="Tooling box utils/*"
3534 accesskey="P">previous</a> |</li>
3635 <li class="nav-item nav-item-0"><a href="../index.html">Searx Documentation (Searx-0.17.0.tex)</a> &#187;</li>
37− <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Tooling box <code class="docutils literal notranslate"><span class="pre">utils/*</span></code></a> &#187;</li>
38− <li class="nav-item nav-item-this"><a href=""><code class="docutils literal notranslate"><span class="pre">utils/searx.sh</span></code></a></li>
36+ <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Tooling box <code class="docutils literal notranslate"><span class="pre">utils/*</span></code></a> &#187;</li>
3937 </ul>
4038 </div>
4139
@@ -71,56 +69,13 @@ into this user account. The installation is described in chapter
7169<span id="intranet-reverse-proxy"></span><h2>Overview<a class="headerlink" href="#overview" title="Permalink to this headline">¶</a></h2>
7270<p>The <code class="docutils literal notranslate"><span class="pre">--help</span></code> output of the script is largely self-explanatory
7371(<a class="reference internal" href="index.html#toolboxing-common"><span class="std std-ref">Common commands &amp; environment</span></a>):</p>
74−<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>usage::
75− searx.sh shell
76− searx.sh install [all|user|searx-src|pyenv|uwsgi|packages|buildhost]
77− searx.sh update [searx]
78− searx.sh remove [all|user|pyenv|searx-src]
79− searx.sh activate [service]
80− searx.sh deactivate [service]
81− searx.sh inspect [service]
82− searx.sh option [debug-[on|off]|image-proxy-[on|off]|result-proxy &lt;url&gt; &lt;key&gt;]
83− searx.sh apache [install|remove]
84−
85−shell
86− start interactive shell from user searx
87−install / remove
88− :all: complete (de-) installation of searx service
89− :user: add/remove service user &#39;searx&#39; (/usr/local/searx)
90− :searx-src: clone https://github.com/asciimoo/searx
91− :pyenv: create/remove virtualenv (python) in /usr/local/searx/searx-pyenv
92− :uwsgi: install searx uWSGI application
93− :settings: reinstall settings from /800GBPCIex4/share/searx/searx/settings.yml
94− :packages: install needed packages from OS package manager
95− :buildhost: install packages from OS package manager needed by buildhosts
96−update searx
97− Update searx installation (/usr/local/searx)
98−activate service
99− activate and start service daemon (systemd unit)
100−deactivate service
101− stop and deactivate service daemon (systemd unit)
102−inspect service
103− run some small tests and inspect service&#39;s status and log
104−option
105− set one of the available options
106−apache
107− :install: apache site with the searx uwsgi app
108− :remove: apache site
109−
110−searx settings: /etc/searx/settings.yml
111−
112−If needed, set PUBLIC_URL of your WEB service in the &#39;.config.sh&#39; file::
113− PUBLIC_URL : http://192.168.1.127/searx
114− SEARX_INSTANCE_NAME : searx@192.168.1.127
115− SERVICE_USER : searx
116− SEARX_INTERNAL_HTTP : http://127.0.0.1:8888
72+<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>ERROR: missing command systemctl
11773</pre></div>
11874</div>
11975</div>
12076</div>
12177
12278
123− <div class="clearer"></div>
12479 </div>
12580 </div>
12681 </div>
@@ -172,7 +127,7 @@ If needed, set PUBLIC_URL of your WEB service in the &#39;.config.sh&#39; file::
172127
173128 <div class="footer" role="contentinfo">
174129 &#169; Copyright 2015-2020, Adam Tauber, Noémi Ványi.
175− Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.1.2.
130+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.0.1.
176131 </div>
177132 <script src="../_static/version_warning_offset.js"></script>
178133