diff --git a/_includes/parse-server/deploying-aws-ubuntu.md b/_includes/parse-server/deploying-aws-ubuntu.md index 3e969d8d..6b877512 100644 --- a/_includes/parse-server/deploying-aws-ubuntu.md +++ b/_includes/parse-server/deploying-aws-ubuntu.md @@ -33,17 +33,14 @@ Check the install was ok, you should see the version installed. node -v ``` - Install [npm](https://www.npmjs.com) ```bash sudo apt install npm ``` - - Install [yarn](https://yarnpkg.com) ```bash -sudo npm install yarn –g +sudo npm install yarn -g ``` ### Install PostgreSQL Server @@ -62,7 +59,7 @@ sudo su postgres psql ``` -```bash +```sql ALTER USER postgres password 'myStrongPassword'; ``` @@ -70,13 +67,13 @@ Quit psql typing `\q` Exit postgres user typing `exit` -Navigate to main folder inside postgresql/version/ +Navigate to main folder inside `postgresql/version/` ```bash cd /etc/postgresql/14/main/ ``` We need to edit two files, `pg_hba.conf` and `postgresql.conf` ```bash -sudo nano pg_hba.conf +sudo nano -w pg_hba.conf ``` Scroll down the file and Add `host, all, all, 0.0.0.0/0, md5`, has to be the first line before `local, all, postgres, , peer` @@ -84,13 +81,17 @@ Scroll down the file and Add `host, all, all, 0.0.0.0/0, md5`, has to be the fir | ---- | -------- | ---- | ------- | ------ | | host | all | all | 0.0.0.0/0 | md5 | | local | all | postgres | | peer | +{: .docs_table} +Close the file and save the changes with `Control+X` and `Y` ```bash -sudo nano postgresql.conf +sudo nano -w postgresql.conf ``` Search for `#listen_addresses='localhost'`, uncomment the line and replace `localhost` for `*` +Close the file and save the changes with `Control+X` and `Y` + Restart the PostgreSQL server ```bash sudo service postgresql restart @@ -98,53 +99,81 @@ sudo service postgresql restart ### Setup Parse Server -Create a directory -```bash -cd ~ -``` +Create a folder called parse-server ```bash -mkdir parse-server +cd ~ && mkdir parse-server && cd parse-server ``` + +Install Parse Server Locally ```bash -cd parse-server +sudo yarn add parse-server ``` -Run the bash script and follow the instructions, the script have some visual issues and the keys generation doesn't work. -```bash -sh <(curl -fsSL https://raw.githubusercontent.com/parse-community/parse-server/master/bootstrap.sh) +Edit the `package.json` file with your preferences, but do not change the start line inside the scripts. +```jsonc +{ + "name": "my-app", + "description": "parse-server for my App", + "scripts": { + "start": "parse-server config.json" + }, + "dependencies": { + "parse-server": "^5.2.1" + } +} + ``` -After that, we need to setup the configuration file, use your own `appId`, `masterKey` and `clientKey`, use random strings or some generator tool to create secured keys. +Close the file and save the changes with `Control+X` and `Y` + +After that, we need to create a configuration file, use your own `appId`, `masterKey` and `clientKey`, use random strings or some generator tool to create secured keys. + ```bash sudo nano -w config.json ``` -This are the basic options of the config.json file, for the full list you can type `parse-server --help` or refer to the [full options document](https://parseplatform.org/parse-server/api/5.2.0/ParseServerOptions.html) for more details. + ```jsonc { "appId": "exampleAppId", "masterKey": "exampleMasterKey", - "clientKey": "exampleClientKey", "appName": "MyApp", - "cloud": "./cloud/main", + "serverURL": "http://", + "mountPath": "/parse", + "publicServerURL": "http://", "databaseURI": "postgres://postgres:myStrongPassword@localhost:5432/postgres" } ``` +Close the file and save the changes with `Control+X` and `Y` +This are the basic options of the `config.json` file, for the full list you can type `parse-server --help` or refer to the [full options document](https://parseplatform.org/parse-server/api/5.2.0/ParseServerOptions.html) for more details. -Install Parse Server globally +Start Parse Server using the script command in the package.json ```bash -sudo npm install -g parse-server +npm start ``` -Start Parse Server using the script command in the config.json +Check if Parse Server is running typing `http://:1337` in your browser's address bar, you should see `{"error":"unauthorized"}`, that means the server is running. + +To daemonized parse-server to keep it running and alive all the time, you can use the package [PM2](https://pm2.keymetrics.io). + +Shutdown Parse Server pressing `Control+C`. + +Check if PM2 is installed + ```bash + npm list --depth 0 -g pm2 + ``` +If the terminal shows `/usr/lib/(empty)`, means that PM2 is not installed, procced to install PM2 package globally ```bash -npm start +sudo npm install pm2 -g ``` -or manually with the nohup command and specifying the configuration file, this option will keep the server running even if you close the terminal +Add Parse Server to PM2 + ```bash +pm2 start npm --name "parse-server" -- start +``` +Save and syncronize this list ```bash -nohup parse-server config.json & -``` -Check if Parse Server is running typing `http://:1337` in your browser's address bar, you should see `{"error":"unauthorized"}` +pm2 save +``` ### Setup Parse Dashboard @@ -157,7 +186,7 @@ Once installed, you need to configure Parse Dashboard, go to `/usr/lib/node_modu ```bash sudo nano -w parse-dashboard-config.json ``` -This is an example of parse-dashboard.config.json. +This is an example of `parse-dashboard.config.json`. ```jsonc { "apps": [{ @@ -178,10 +207,21 @@ Start Parse Dashboard ```bash parse-dashboard ``` -or with the nohup command and specifying the configuration file, this option will keep the dashboard running even if you close the terminal -```bash -nohup parse-dashboard --dev --config parse-dashboard-config.json & -``` Check if Parse Dashboard is running typing `http://:4040` in your browser's address bar, you should see the login form, use the `user` and `pass` that you set in the `parse-dashboard-config.json` file. +Shutdown Parse Dashboard pressing `Control+C`. + +Add Parse Dashboard to the process manager PM2 +```bash +pm2 start parse-dashboard +``` + Save and syncronize PM2 list +```bash +pm2 save +``` + +Adding Parse Server and Parse Dashboard to PM2, will ensure that if the server restarts or reboot for some reason, this two apps will be relaunched automatically. +PM2 stores the logs in a subfolder called `logs` where the apps are. To sneak peek the logs you can run `pm2 logs` in the terminal. + +Note: if you are using a secure certificate in your host, be sure to modify the urls related to your configuration in the examples above from `http` to `https`. \ No newline at end of file diff --git a/assets/js/bundle.js b/assets/js/bundle.js index 4905fd05..dcdd23ab 100644 --- a/assets/js/bundle.js +++ b/assets/js/bundle.js @@ -1,2 +1,2 @@ /*! For license information please see bundle.js.LICENSE.txt */ -(()=>{var e={4683:e=>{var t=function(e,t,n,r){var o;if(o=r?document.createElementNS("http://www.w3.org/2000/svg",e):document.createElement(e),n){Array.isArray(n)||(n=[n]);for(var i=0;i6&&n<10)return(0|(t=e/1e6))===t||0===Math.round(e%1e6/1e5)?(0|t)+"M":(0|t)+"."+Math.round(e%1e6/1e5)+"M";if(n>5)return(0|(t=e/1e3))===t||0===Math.round(e%1e3/100)?(0|t)+"K":(0|t)+"."+Math.round(e%1e3/100)+"K";if(n>3){var r=e%1e3|0;return r<10?r="00"+r:r<100&&(r="0"+r),(e/1e3|0)+","+r}return(0|e)+""},Animate:{show:function(e,t){"undefined"===t&&(t=0),e.style.display="block",e.style.opacity=0,setTimeout((function(){e.style.opacity=1}),t)},hide:function(e,t){window.getComputedStyle(e).opacity>0&&(void 0===t&&(t=500),e.style.opacity=0,setTimeout((function(){e.style.display="none"}),t))}},ComponentProto:{attach:function(e){return this.node?(e.appendChild(this.node),this):null},remove:function(){return this.node&&this.node.parentNode?(this.node.parentNode.removeChild(this.node),this):null}}};e.exports=n},1577:e=>{"use strict";var t,n,r,o,i,a=window,s={},u=function(){},c=function(e,t){if(function(e){return null===e.offsetParent}(e))return!1;var n=e.getBoundingClientRect();return n.right>=t.l&&n.bottom>=t.t&&n.left<=t.r&&n.top<=t.b},l=function(){!o&&n||(clearTimeout(n),n=setTimeout((function(){s.render(),n=null}),r))};s.init=function(e){var n=(e=e||{}).offset||0,c=e.offsetVertical||n,f=e.offsetHorizontal||n,p=function(e,t){return parseInt(e||t,10)};t={t:p(e.offsetTop,c),b:p(e.offsetBottom,c),l:p(e.offsetLeft,f),r:p(e.offsetRight,f)},r=p(e.throttle,250),o=!1!==e.debounce,i=!!e.unload,u=e.callback||u,s.render(),document.addEventListener?(a.addEventListener("scroll",l,!1),a.addEventListener("load",l,!1)):(a.attachEvent("onscroll",l),a.attachEvent("onload",l))},s.render=function(e){for(var n,r,o=(e||document).querySelectorAll("[data-echo], [data-echo-background]"),l=o.length,f={l:0-t.l,t:0-t.t,b:(a.innerHeight||document.documentElement.clientHeight)+t.b,r:(a.innerWidth||document.documentElement.clientWidth)+t.r},p=0;p{var r;!function(o){var i,a,s,u,c,l,f,p,d,h,v,g,m,y,x,b,w,C,T,S="sizzle"+1*new Date,E=o.document,k=0,A=0,N=pe(),j=pe(),D=pe(),O=pe(),L=function(e,t){return e===t&&(v=!0),0},q={}.hasOwnProperty,I=[],_=I.pop,M=I.push,H=I.push,P=I.slice,R=function(e,t){for(var n=0,r=e.length;n+~]|[\\x20\\t\\r\\n\\f])[\\x20\\t\\r\\n\\f]*"),G=new RegExp(W+"|>"),K=new RegExp(z),J=new RegExp("^"+F+"$"),Q={ID:new RegExp("^#("+F+")"),CLASS:new RegExp("^\\.("+F+")"),TAG:new RegExp("^("+F+"|[*])"),ATTR:new RegExp("^"+$),PSEUDO:new RegExp("^"+z),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\([\\x20\\t\\r\\n\\f]*(even|odd|(([+-]|)(\\d*)n|)[\\x20\\t\\r\\n\\f]*(?:([+-]|)[\\x20\\t\\r\\n\\f]*(\\d+)|))[\\x20\\t\\r\\n\\f]*\\)|)","i"),bool:new RegExp("^(?:"+B+")$","i"),needsContext:new RegExp("^[\\x20\\t\\r\\n\\f]*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\([\\x20\\t\\r\\n\\f]*((?:-\\d)?\\d*)[\\x20\\t\\r\\n\\f]*\\)|)(?=[^-]|$)","i")},Z=/HTML$/i,ee=/^(?:input|select|textarea|button)$/i,te=/^h\d$/i,ne=/^[^{]+\{\s*\[native \w/,re=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,oe=/[+~]/,ie=new RegExp("\\\\[\\da-fA-F]{1,6}[\\x20\\t\\r\\n\\f]?|\\\\([^\\r\\n\\f])","g"),ae=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))},se=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ue=function(e,t){return t?"\0"===e?"�":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},ce=function(){g()},le=Se((function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()}),{dir:"parentNode",next:"legend"});try{H.apply(I=P.call(E.childNodes),E.childNodes),I[E.childNodes.length].nodeType}catch(e){H={apply:I.length?function(e,t){M.apply(e,P.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}function fe(e,t,n,r){var o,i,s,u,c,f,d,h=t&&t.ownerDocument,v=t?t.nodeType:9;if(n=n||[],"string"!=typeof e||!e||1!==v&&9!==v&&11!==v)return n;if(!r&&(g(t),t=t||m,x)){if(11!==v&&(c=re.exec(e)))if(o=c[1]){if(9===v){if(!(s=t.getElementById(o)))return n;if(s.id===o)return n.push(s),n}else if(h&&(s=h.getElementById(o))&&T(t,s)&&s.id===o)return n.push(s),n}else{if(c[2])return H.apply(n,t.getElementsByTagName(e)),n;if((o=c[3])&&a.getElementsByClassName&&t.getElementsByClassName)return H.apply(n,t.getElementsByClassName(o)),n}if(a.qsa&&!O[e+" "]&&(!b||!b.test(e))&&(1!==v||"object"!==t.nodeName.toLowerCase())){if(d=e,h=t,1===v&&(G.test(e)||Y.test(e))){for((h=oe.test(e)&&we(t.parentNode)||t)===t&&a.scope||((u=t.getAttribute("id"))?u=u.replace(se,ue):t.setAttribute("id",u=S)),i=(f=l(e)).length;i--;)f[i]=(u?"#"+u:":scope")+" "+Te(f[i]);d=f.join(",")}try{return H.apply(n,h.querySelectorAll(d)),n}catch(t){O(e,!0)}finally{u===S&&t.removeAttribute("id")}}}return p(e.replace(U,"$1"),t,n,r)}function pe(){var e=[];return function t(n,r){return e.push(n+" ")>s.cacheLength&&delete t[e.shift()],t[n+" "]=r}}function de(e){return e[S]=!0,e}function he(e){var t=m.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function ve(e,t){for(var n=e.split("|"),r=n.length;r--;)s.attrHandle[n[r]]=t}function ge(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function me(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function ye(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function xe(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&le(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function be(e){return de((function(t){return t=+t,de((function(n,r){for(var o,i=e([],n.length,t),a=i.length;a--;)n[o=i[a]]&&(n[o]=!(r[o]=n[o]))}))}))}function we(e){return e&&void 0!==e.getElementsByTagName&&e}for(i in a=fe.support={},c=fe.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Z.test(t||n&&n.nodeName||"HTML")},g=fe.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:E;return r!=m&&9===r.nodeType&&r.documentElement?(y=(m=r).documentElement,x=!c(m),E!=m&&(n=m.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",ce,!1):n.attachEvent&&n.attachEvent("onunload",ce)),a.scope=he((function(e){return y.appendChild(e).appendChild(m.createElement("div")),void 0!==e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length})),a.attributes=he((function(e){return e.className="i",!e.getAttribute("className")})),a.getElementsByTagName=he((function(e){return e.appendChild(m.createComment("")),!e.getElementsByTagName("*").length})),a.getElementsByClassName=ne.test(m.getElementsByClassName),a.getById=he((function(e){return y.appendChild(e).id=S,!m.getElementsByName||!m.getElementsByName(S).length})),a.getById?(s.filter.ID=function(e){var t=e.replace(ie,ae);return function(e){return e.getAttribute("id")===t}},s.find.ID=function(e,t){if(void 0!==t.getElementById&&x){var n=t.getElementById(e);return n?[n]:[]}}):(s.filter.ID=function(e){var t=e.replace(ie,ae);return function(e){var n=void 0!==e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},s.find.ID=function(e,t){if(void 0!==t.getElementById&&x){var n,r,o,i=t.getElementById(e);if(i){if((n=i.getAttributeNode("id"))&&n.value===e)return[i];for(o=t.getElementsByName(e),r=0;i=o[r++];)if((n=i.getAttributeNode("id"))&&n.value===e)return[i]}return[]}}),s.find.TAG=a.getElementsByTagName?function(e,t){return void 0!==t.getElementsByTagName?t.getElementsByTagName(e):a.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],o=0,i=t.getElementsByTagName(e);if("*"===e){for(;n=i[o++];)1===n.nodeType&&r.push(n);return r}return i},s.find.CLASS=a.getElementsByClassName&&function(e,t){if(void 0!==t.getElementsByClassName&&x)return t.getElementsByClassName(e)},w=[],b=[],(a.qsa=ne.test(m.querySelectorAll))&&(he((function(e){var t;y.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&b.push("[*^$]=[\\x20\\t\\r\\n\\f]*(?:''|\"\")"),e.querySelectorAll("[selected]").length||b.push("\\[[\\x20\\t\\r\\n\\f]*(?:value|"+B+")"),e.querySelectorAll("[id~="+S+"-]").length||b.push("~="),(t=m.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||b.push("\\[[\\x20\\t\\r\\n\\f]*name[\\x20\\t\\r\\n\\f]*=[\\x20\\t\\r\\n\\f]*(?:''|\"\")"),e.querySelectorAll(":checked").length||b.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||b.push(".#.+[+~]"),e.querySelectorAll("\\\f"),b.push("[\\r\\n\\f]")})),he((function(e){e.innerHTML="";var t=m.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&b.push("name[\\x20\\t\\r\\n\\f]*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&b.push(":enabled",":disabled"),y.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&b.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),b.push(",.*:")}))),(a.matchesSelector=ne.test(C=y.matches||y.webkitMatchesSelector||y.mozMatchesSelector||y.oMatchesSelector||y.msMatchesSelector))&&he((function(e){a.disconnectedMatch=C.call(e,"*"),C.call(e,"[s!='']:x"),w.push("!=",z)})),b=b.length&&new RegExp(b.join("|")),w=w.length&&new RegExp(w.join("|")),t=ne.test(y.compareDocumentPosition),T=t||ne.test(y.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)for(;t=t.parentNode;)if(t===e)return!0;return!1},L=t?function(e,t){if(e===t)return v=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!a.sortDetached&&t.compareDocumentPosition(e)===n?e==m||e.ownerDocument==E&&T(E,e)?-1:t==m||t.ownerDocument==E&&T(E,t)?1:h?R(h,e)-R(h,t):0:4&n?-1:1)}:function(e,t){if(e===t)return v=!0,0;var n,r=0,o=e.parentNode,i=t.parentNode,a=[e],s=[t];if(!o||!i)return e==m?-1:t==m?1:o?-1:i?1:h?R(h,e)-R(h,t):0;if(o===i)return ge(e,t);for(n=e;n=n.parentNode;)a.unshift(n);for(n=t;n=n.parentNode;)s.unshift(n);for(;a[r]===s[r];)r++;return r?ge(a[r],s[r]):a[r]==E?-1:s[r]==E?1:0},m):m},fe.matches=function(e,t){return fe(e,null,null,t)},fe.matchesSelector=function(e,t){if(g(e),a.matchesSelector&&x&&!O[t+" "]&&(!w||!w.test(t))&&(!b||!b.test(t)))try{var n=C.call(e,t);if(n||a.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){O(t,!0)}return fe(t,m,null,[e]).length>0},fe.contains=function(e,t){return(e.ownerDocument||e)!=m&&g(e),T(e,t)},fe.attr=function(e,t){(e.ownerDocument||e)!=m&&g(e);var n=s.attrHandle[t.toLowerCase()],r=n&&q.call(s.attrHandle,t.toLowerCase())?n(e,t,!x):void 0;return void 0!==r?r:a.attributes||!x?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},fe.escape=function(e){return(e+"").replace(se,ue)},fe.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},fe.uniqueSort=function(e){var t,n=[],r=0,o=0;if(v=!a.detectDuplicates,h=!a.sortStable&&e.slice(0),e.sort(L),v){for(;t=e[o++];)t===e[o]&&(r=n.push(o));for(;r--;)e.splice(n[r],1)}return h=null,e},u=fe.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=u(e)}else if(3===o||4===o)return e.nodeValue}else for(;t=e[r++];)n+=u(t);return n},(s=fe.selectors={cacheLength:50,createPseudo:de,match:Q,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(ie,ae),e[3]=(e[3]||e[4]||e[5]||"").replace(ie,ae),"~="===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]||fe.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]&&fe.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return Q.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&K.test(n)&&(t=l(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(ie,ae).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=N[e+" "];return t||(t=new RegExp("(^|[\\x20\\t\\r\\n\\f])"+e+"("+W+"|$)"))&&N(e,(function(e){return t.test("string"==typeof e.className&&e.className||void 0!==e.getAttribute&&e.getAttribute("class")||"")}))},ATTR:function(e,t,n){return function(r){var o=fe.attr(r,e);return null==o?"!="===t:!t||(o+="","="===t?o===n:"!="===t?o!==n:"^="===t?n&&0===o.indexOf(n):"*="===t?n&&o.indexOf(n)>-1:"$="===t?n&&o.slice(-n.length)===n:"~="===t?(" "+o.replace(V," ")+" ").indexOf(n)>-1:"|="===t&&(o===n||o.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,r,o){var i="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===o?function(e){return!!e.parentNode}:function(t,n,u){var c,l,f,p,d,h,v=i!==a?"nextSibling":"previousSibling",g=t.parentNode,m=s&&t.nodeName.toLowerCase(),y=!u&&!s,x=!1;if(g){if(i){for(;v;){for(p=t;p=p[v];)if(s?p.nodeName.toLowerCase()===m:1===p.nodeType)return!1;h=v="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?g.firstChild:g.lastChild],a&&y){for(x=(d=(c=(l=(f=(p=g)[S]||(p[S]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===k&&c[1])&&c[2],p=d&&g.childNodes[d];p=++d&&p&&p[v]||(x=d=0)||h.pop();)if(1===p.nodeType&&++x&&p===t){l[e]=[k,d,x];break}}else if(y&&(x=d=(c=(l=(f=(p=t)[S]||(p[S]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===k&&c[1]),!1===x)for(;(p=++d&&p&&p[v]||(x=d=0)||h.pop())&&((s?p.nodeName.toLowerCase()!==m:1!==p.nodeType)||!++x||(y&&((l=(f=p[S]||(p[S]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]=[k,x]),p!==t)););return(x-=o)===r||x%r==0&&x/r>=0}}},PSEUDO:function(e,t){var n,r=s.pseudos[e]||s.setFilters[e.toLowerCase()]||fe.error("unsupported pseudo: "+e);return r[S]?r(t):r.length>1?(n=[e,e,"",t],s.setFilters.hasOwnProperty(e.toLowerCase())?de((function(e,n){for(var o,i=r(e,t),a=i.length;a--;)e[o=R(e,i[a])]=!(n[o]=i[a])})):function(e){return r(e,0,n)}):r}},pseudos:{not:de((function(e){var t=[],n=[],r=f(e.replace(U,"$1"));return r[S]?de((function(e,t,n,o){for(var i,a=r(e,null,o,[]),s=e.length;s--;)(i=a[s])&&(e[s]=!(t[s]=i))})):function(e,o,i){return t[0]=e,r(t,null,i,n),t[0]=null,!n.pop()}})),has:de((function(e){return function(t){return fe(e,t).length>0}})),contains:de((function(e){return e=e.replace(ie,ae),function(t){return(t.textContent||u(t)).indexOf(e)>-1}})),lang:de((function(e){return J.test(e||"")||fe.error("unsupported lang: "+e),e=e.replace(ie,ae).toLowerCase(),function(t){var n;do{if(n=x?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}})),target:function(e){var t=o.location&&o.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===y},focus:function(e){return e===m.activeElement&&(!m.hasFocus||m.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:xe(!1),disabled:xe(!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!s.pseudos.empty(e)},header:function(e){return te.test(e.nodeName)},input:function(e){return ee.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:be((function(){return[0]})),last:be((function(e,t){return[t-1]})),eq:be((function(e,t,n){return[n<0?n+t:n]})),even:be((function(e,t){for(var n=0;nt?t:n;--r>=0;)e.push(r);return e})),gt:be((function(e,t,n){for(var r=n<0?n+t:n;++r1?function(t,n,r){for(var o=e.length;o--;)if(!e[o](t,n,r))return!1;return!0}:e[0]}function ke(e,t,n,r,o){for(var i,a=[],s=0,u=e.length,c=null!=t;s-1&&(i[c]=!(a[c]=f))}}else m=ke(m===a?m.splice(h,m.length):m),o?o(null,a,m,u):H.apply(a,m)}))}function Ne(e){for(var t,n,r,o=e.length,i=s.relative[e[0].type],a=i||s.relative[" "],u=i?1:0,c=Se((function(e){return e===t}),a,!0),l=Se((function(e){return R(t,e)>-1}),a,!0),f=[function(e,n,r){var o=!i&&(r||n!==d)||((t=n).nodeType?c(e,n,r):l(e,n,r));return t=null,o}];u1&&Ee(f),u>1&&Te(e.slice(0,u-1).concat({value:" "===e[u-2].type?"*":""})).replace(U,"$1"),n,u0,r=e.length>0,o=function(o,i,a,u,c){var l,f,p,h=0,v="0",y=o&&[],b=[],w=d,C=o||r&&s.find.TAG("*",c),T=k+=null==w?1:Math.random()||.1,S=C.length;for(c&&(d=i==m||i||c);v!==S&&null!=(l=C[v]);v++){if(r&&l){for(f=0,i||l.ownerDocument==m||(g(l),a=!x);p=e[f++];)if(p(l,i||m,a)){u.push(l);break}c&&(k=T)}n&&((l=!p&&l)&&h--,o&&y.push(l))}if(h+=v,n&&v!==h){for(f=0;p=t[f++];)p(y,b,i,a);if(o){if(h>0)for(;v--;)y[v]||b[v]||(b[v]=_.call(u));b=ke(b)}H.apply(u,b),c&&!o&&b.length>0&&h+t.length>1&&fe.uniqueSort(u)}return c&&(k=T,d=w),y};return n?de(o):o}(o,r))).selector=e}return i},p=fe.select=function(e,t,n,r){var o,i,a,u,c,p="function"==typeof e&&e,d=!r&&l(e=p.selector||e);if(n=n||[],1===d.length){if((i=d[0]=d[0].slice(0)).length>2&&"ID"===(a=i[0]).type&&9===t.nodeType&&x&&s.relative[i[1].type]){if(!(t=(s.find.ID(a.matches[0].replace(ie,ae),t)||[])[0]))return n;p&&(t=t.parentNode),e=e.slice(i.shift().value.length)}for(o=Q.needsContext.test(e)?0:i.length;o--&&(a=i[o],!s.relative[u=a.type]);)if((c=s.find[u])&&(r=c(a.matches[0].replace(ie,ae),oe.test(i[0].type)&&we(t.parentNode)||t))){if(i.splice(o,1),!(e=r.length&&Te(i)))return H.apply(n,r),n;break}}return(p||f(e,d))(r,t,!x,n,!t||oe.test(e)&&we(t.parentNode)||t),n},a.sortStable=S.split("").sort(L).join("")===S,a.detectDuplicates=!!v,g(),a.sortDetached=he((function(e){return 1&e.compareDocumentPosition(m.createElement("fieldset"))})),he((function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")}))||ve("type|href|height|width",(function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)})),a.attributes&&he((function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")}))||ve("value",(function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue})),he((function(e){return null==e.getAttribute("disabled")}))||ve(B,(function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}));var je=o.Sizzle;fe.noConflict=function(){return o.Sizzle===fe&&(o.Sizzle=je),fe},void 0===(r=function(){return fe}.call(t,n,t,e))||(e.exports=r)}(window)},7178:(e,t,n)=>{var r,o;r=[n(8934),n(7792),n(2134),n(8663),n(454),n(6981),n(7661),n(8048),n(461),n(1045),n(6525),n(5385)],void 0===(o=function(e,t,n,r,o,i,a){"use strict";var s=/%20/g,u=/#.*$/,c=/([?&])_=[^&]*/,l=/^(.*?):[ \t]*([^\r\n]*)$/gm,f=/^(?:GET|HEAD)$/,p=/^\/\//,d={},h={},v="*/".concat("*"),g=t.createElement("a");function m(e){return function(t,o){"string"!=typeof t&&(o=t,t="*");var i,a=0,s=t.toLowerCase().match(r)||[];if(n(o))for(;i=s[a++];)"+"===i[0]?(i=i.slice(1)||"*",(e[i]=e[i]||[]).unshift(o)):(e[i]=e[i]||[]).push(o)}}function y(t,n,r,o){var i={},a=t===h;function s(u){var c;return i[u]=!0,e.each(t[u]||[],(function(e,t){var u=t(n,r,o);return"string"!=typeof u||a||i[u]?a?!(c=u):void 0:(n.dataTypes.unshift(u),s(u),!1)})),c}return s(n.dataTypes[0])||!i["*"]&&s("*")}function x(t,n){var r,o,i=e.ajaxSettings.flatOptions||{};for(r in n)void 0!==n[r]&&((i[r]?t:o||(o={}))[r]=n[r]);return o&&e.extend(!0,t,o),t}return g.href=o.href,e.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:o.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(o.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":v,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":e.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(t,n){return n?x(x(t,e.ajaxSettings),n):x(e.ajaxSettings,t)},ajaxPrefilter:m(d),ajaxTransport:m(h),ajax:function(n,m){"object"==typeof n&&(m=n,n=void 0),m=m||{};var x,b,w,C,T,S,E,k,A,N,j=e.ajaxSetup({},m),D=j.context||j,O=j.context&&(D.nodeType||D.jquery)?e(D):e.event,L=e.Deferred(),q=e.Callbacks("once memory"),I=j.statusCode||{},_={},M={},H="canceled",P={readyState:0,getResponseHeader:function(e){var t;if(E){if(!C)for(C={};t=l.exec(w);)C[t[1].toLowerCase()+" "]=(C[t[1].toLowerCase()+" "]||[]).concat(t[2]);t=C[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return E?w:null},setRequestHeader:function(e,t){return null==E&&(e=M[e.toLowerCase()]=M[e.toLowerCase()]||e,_[e]=t),this},overrideMimeType:function(e){return null==E&&(j.mimeType=e),this},statusCode:function(e){var t;if(e)if(E)P.always(e[P.status]);else for(t in e)I[t]=[I[t],e[t]];return this},abort:function(e){var t=e||H;return x&&x.abort(t),R(0,t),this}};if(L.promise(P),j.url=((n||j.url||o.href)+"").replace(p,o.protocol+"//"),j.type=m.method||m.type||j.method||j.type,j.dataTypes=(j.dataType||"*").toLowerCase().match(r)||[""],null==j.crossDomain){S=t.createElement("a");try{S.href=j.url,S.href=S.href,j.crossDomain=g.protocol+"//"+g.host!=S.protocol+"//"+S.host}catch(e){j.crossDomain=!0}}if(j.data&&j.processData&&"string"!=typeof j.data&&(j.data=e.param(j.data,j.traditional)),y(d,j,m,P),E)return P;for(A in(k=e.event&&j.global)&&0==e.active++&&e.event.trigger("ajaxStart"),j.type=j.type.toUpperCase(),j.hasContent=!f.test(j.type),b=j.url.replace(u,""),j.hasContent?j.data&&j.processData&&0===(j.contentType||"").indexOf("application/x-www-form-urlencoded")&&(j.data=j.data.replace(s,"+")):(N=j.url.slice(b.length),j.data&&(j.processData||"string"==typeof j.data)&&(b+=(a.test(b)?"&":"?")+j.data,delete j.data),!1===j.cache&&(b=b.replace(c,"$1"),N=(a.test(b)?"&":"?")+"_="+i.guid+++N),j.url=b+N),j.ifModified&&(e.lastModified[b]&&P.setRequestHeader("If-Modified-Since",e.lastModified[b]),e.etag[b]&&P.setRequestHeader("If-None-Match",e.etag[b])),(j.data&&j.hasContent&&!1!==j.contentType||m.contentType)&&P.setRequestHeader("Content-Type",j.contentType),P.setRequestHeader("Accept",j.dataTypes[0]&&j.accepts[j.dataTypes[0]]?j.accepts[j.dataTypes[0]]+("*"!==j.dataTypes[0]?", "+v+"; q=0.01":""):j.accepts["*"]),j.headers)P.setRequestHeader(A,j.headers[A]);if(j.beforeSend&&(!1===j.beforeSend.call(D,P,j)||E))return P.abort();if(H="abort",q.add(j.complete),P.done(j.success),P.fail(j.error),x=y(h,j,m,P)){if(P.readyState=1,k&&O.trigger("ajaxSend",[P,j]),E)return P;j.async&&j.timeout>0&&(T=window.setTimeout((function(){P.abort("timeout")}),j.timeout));try{E=!1,x.send(_,R)}catch(e){if(E)throw e;R(-1,e)}}else R(-1,"No Transport");function R(t,n,r,o){var i,a,s,u,c,l=n;E||(E=!0,T&&window.clearTimeout(T),x=void 0,w=o||"",P.readyState=t>0?4:0,i=t>=200&&t<300||304===t,r&&(u=function(e,t,n){for(var r,o,i,a,s=e.contents,u=e.dataTypes;"*"===u[0];)u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(o in s)if(s[o]&&s[o].test(r)){u.unshift(o);break}if(u[0]in n)i=u[0];else{for(o in n){if(!u[0]||e.converters[o+" "+u[0]]){i=o;break}a||(a=o)}i=i||a}if(i)return i!==u[0]&&u.unshift(i),n[i]}(j,P,r)),!i&&e.inArray("script",j.dataTypes)>-1&&(j.converters["text script"]=function(){}),u=function(e,t,n,r){var o,i,a,s,u,c={},l=e.dataTypes.slice();if(l[1])for(a in e.converters)c[a.toLowerCase()]=e.converters[a];for(i=l.shift();i;)if(e.responseFields[i]&&(n[e.responseFields[i]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=i,i=l.shift())if("*"===i)i=u;else if("*"!==u&&u!==i){if(!(a=c[u+" "+i]||c["* "+i]))for(o in c)if((s=o.split(" "))[1]===i&&(a=c[u+" "+s[0]]||c["* "+s[0]])){!0===a?a=c[o]:!0!==c[o]&&(i=s[0],l.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 "+i}}}return{state:"success",data:t}}(j,u,P,i),i?(j.ifModified&&((c=P.getResponseHeader("Last-Modified"))&&(e.lastModified[b]=c),(c=P.getResponseHeader("etag"))&&(e.etag[b]=c)),204===t||"HEAD"===j.type?l="nocontent":304===t?l="notmodified":(l=u.state,a=u.data,i=!(s=u.error))):(s=l,!t&&l||(l="error",t<0&&(t=0))),P.status=t,P.statusText=(n||l)+"",i?L.resolveWith(D,[a,l,P]):L.rejectWith(D,[P,l,s]),P.statusCode(I),I=void 0,k&&O.trigger(i?"ajaxSuccess":"ajaxError",[P,j,i?a:s]),q.fireWith(D,[P,l]),k&&(O.trigger("ajaxComplete",[P,j]),--e.active||e.event.trigger("ajaxStop")))}return P},getJSON:function(t,n,r){return e.get(t,n,r,"json")},getScript:function(t,n){return e.get(t,void 0,n,"script")}}),e.each(["get","post"],(function(t,r){e[r]=function(t,o,i,a){return n(o)&&(a=a||i,i=o,o=void 0),e.ajax(e.extend({url:t,type:r,dataType:a,data:o,success:i},e.isPlainObject(t)&&t))}})),e.ajaxPrefilter((function(e){var t;for(t in e.headers)"content-type"===t.toLowerCase()&&(e.contentType=e.headers[t]||"")})),e}.apply(t,r))||(e.exports=o)},7533:(e,t,n)=>{var r,o;r=[n(8934),n(2134),n(6981),n(7661),n(7178)],void 0===(o=function(e,t,n,r){"use strict";var o=[],i=/(=)\?(?=&|$)|\?\?/;e.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var t=o.pop()||e.expando+"_"+n.guid++;return this[t]=!0,t}}),e.ajaxPrefilter("json jsonp",(function(n,a,s){var u,c,l,f=!1!==n.jsonp&&(i.test(n.url)?"url":"string"==typeof n.data&&0===(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&i.test(n.data)&&"data");if(f||"jsonp"===n.dataTypes[0])return u=n.jsonpCallback=t(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,f?n[f]=n[f].replace(i,"$1"+u):!1!==n.jsonp&&(n.url+=(r.test(n.url)?"&":"?")+n.jsonp+"="+u),n.converters["script json"]=function(){return l||e.error(u+" was not called"),l[0]},n.dataTypes[0]="json",c=window[u],window[u]=function(){l=arguments},s.always((function(){void 0===c?e(window).removeProp(u):window[u]=c,n[u]&&(n.jsonpCallback=a.jsonpCallback,o.push(u)),l&&t(c)&&c(l[0]),l=c=void 0})),"script"}))}.apply(t,r))||(e.exports=o)},4581:(e,t,n)=>{var r,o;r=[n(8934),n(4552),n(2134),n(2889),n(7178),n(8482),n(2632),n(655)],void 0===(o=function(e,t,n){"use strict";e.fn.load=function(r,o,i){var a,s,u,c=this,l=r.indexOf(" ");return l>-1&&(a=t(r.slice(l)),r=r.slice(0,l)),n(o)?(i=o,o=void 0):o&&"object"==typeof o&&(s="POST"),c.length>0&&e.ajax({url:r,type:s||"GET",dataType:"html",data:o}).done((function(t){u=arguments,c.html(a?e("
").append(e.parseHTML(t)).find(a):t)})).always(i&&function(e,t){c.each((function(){i.apply(this,u||[e.responseText,t,e])}))}),this}}.apply(t,r))||(e.exports=o)},5488:(e,t,n)=>{var r,o;r=[n(8934),n(7792),n(7178)],void 0===(o=function(e,t){"use strict";e.ajaxPrefilter((function(e){e.crossDomain&&(e.contents.script=!1)})),e.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(t){return e.globalEval(t),t}}}),e.ajaxPrefilter("script",(function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")})),e.ajaxTransport("script",(function(n){var r,o;if(n.crossDomain||n.scriptAttrs)return{send:function(i,a){r=e("