i.length;)i.unshift(0);return i},u=this.getX().toBigInteger(),r=this.getY().toBigInteger(),t=i(u,32);return n?r.isEven()?t.unshift(2):t.unshift(3):(t.unshift(4),t=t.concat(i(r,32))),t};s.decodeFrom=function(n,t){var i=t.length-1,u=t.slice(1,1+i/2),f=t.slice(1+i/2,1+i),e,o;return u.unshift(0),f.unshift(0),e=new r(u),o=new r(f),new s(n,n.fromBigInteger(e),n.fromBigInteger(o))};s.decodeFromHex=function(n,t){t.substr(0,2);var i=t.length-2,u=t.substr(2,i/2),f=t.substr(2+i/2,i/2),e=new r(u,16),o=new r(f,16);return new s(n,n.fromBigInteger(e),n.fromBigInteger(o))};s.prototype.add2D=function(n){if(this.isInfinity())return n;if(n.isInfinity())return this;if(this.x.equals(n.x))return this.y.equals(n.y)?this.twice():this.curve.getInfinity();var r=n.x.subtract(this.x),t=n.y.subtract(this.y).divide(r),i=t.square().subtract(this.x).subtract(n.x),u=t.multiply(this.x.subtract(i)).subtract(this.y);return new s(this.curve,i,u)};s.prototype.twice2D=function(){if(this.isInfinity())return this;if(0==this.y.toBigInteger().signum())return this.curve.getInfinity();var n=this.curve.fromBigInteger(r.valueOf(2)),u=this.curve.fromBigInteger(r.valueOf(3)),t=this.x.square().multiply(u).add(this.curve.a).divide(this.y.multiply(n)),i=t.square().subtract(this.x.multiply(n)),f=t.multiply(this.x.subtract(i)).subtract(this.y);return new s(this.curve,i,f)};s.prototype.multiply2D=function(n){var u;if(this.isInfinity())return this;if(0==n.signum())return this.curve.getInfinity();for(var f=n,e=f.multiply(new r("3")),o=this.negate(),i=this,t=e.bitLength()-2;t>0;--t)i=i.twice(),u=e.testBit(t),u!=f.testBit(t)&&(i=i.add2D(u?this:o));return i};s.prototype.isOnCurve=function(){var n=this.getX().toBigInteger(),t=this.getY().toBigInteger(),r=this.curve.getA().toBigInteger(),u=this.curve.getB().toBigInteger(),i=this.curve.getQ(),f=t.multiply(t).mod(i),e=n.multiply(n).multiply(n).add(r.multiply(n)).add(u).mod(i);return f.equals(e)};s.prototype.toString=function(){return"("+this.getX().toBigInteger().toString()+","+this.getY().toBigInteger().toString()+")"};s.prototype.validate=function(){var n=this.curve.getQ(),t,i;if(this.isInfinity())throw new Error("Point is at infinity.");if(t=this.getX().toBigInteger(),i=this.getY().toBigInteger(),t.compareTo(r.ONE)<0||t.compareTo(n.subtract(r.ONE))>0)throw new Error("x coordinate out of bounds");if(i.compareTo(r.ONE)<0||i.compareTo(n.subtract(r.ONE))>0)throw new Error("y coordinate out of bounds");if(!this.isOnCurve())throw new Error("Point is not on the curve.");if(this.multiply(n).isInfinity())throw new Error("Point is not a scalar multiple of G.");return!0};
-/*! Mike Samuel (c) 2009 | code.google.com/p/json-sans-eval
- */
-fr=function(){function r(n,t,r){return t?i[t]:String.fromCharCode(parseInt(r,16))}var n=new RegExp('(?:false|true|null|[\\{\\}\\[\\]]|(?:-?\\b(?:0|[1-9][0-9]*)(?:\\.[0-9]+)?(?:[eE][+-]?[0-9]+)?\\b)|(?:"(?:[^\\0-\\x08\\x0a-\\x1f"\\\\]|\\\\(?:["/\\\\bfnrt]|u[0-9A-Fa-f]{4}))*"))',"g"),t=new RegExp("\\\\(?:([^u])|u(.{4}))","g"),i={'"':'"',"/":"/","\\":"\\",b:"\b",f:"\f",n:"\n",r:"\r",t:"\t"},u=new String(""),f=Object.hasOwnProperty;return function(i,e){var l,s,a=i.match(n),c=a[0],v=!1,o;"{"===c?l={}:"["===c?l=[]:(l=[],v=!0);for(var h=[l],y=1-v,p=a.length;y=0;)delete r[u[h]]}return e.call(t,i,r)}({"":l},"")),l}}();void 0!==i&&i||(t.KJUR=i={});void 0!==i.asn1&&i.asn1||(i.asn1={});i.asn1.ASN1Util=new function(){this.integerToByteHex=function(n){var t=n.toString(16);return t.length%2==1&&(t="0"+t),t};this.bigIntToMinTwosComplementsHex=function(n){var t=n.toString(16),i,u,f;if("-"!=t.substr(0,1))t.length%2==1?t="0"+t:t.match(/^[0-7]/)||(t="00"+t);else{for(i=t.substr(1).length,i%2==1?i+=1:t.match(/^[0-7]/)||(i+=2),u="",f=0;f15)throw"ASN.1 length too long to represent by 8x: n = "+t.toString(16);return(128+i).toString(16)+n};this.getEncodedHex=function(){return(null==this.hTLV||this.isModified)&&(this.hV=this.getFreshValueHex(),this.hL=this.getLengthHexFromValue(),this.hTLV=this.hT+this.hL+this.hV,this.isModified=!1),this.hTLV};this.getValueHex=function(){return this.getEncodedHex(),this.hV};this.getFreshValueHex=function(){return""};this.setByParam=function(n){this.params=n};null!=n&&null!=n.tlv&&(this.hTLV=n.tlv,this.isModified=!1)};i.asn1.DERAbstractString=function(n){i.asn1.DERAbstractString.superclass.constructor.call(this);this.getString=function(){return this.s};this.setString=function(n){this.hTLV=null;this.isModified=!0;this.s=n;this.hV=er(this.s).toLowerCase()};this.setStringHex=function(n){this.hTLV=null;this.isModified=!0;this.s=null;this.hV=n};this.getFreshValueHex=function(){return this.hV};void 0!==n&&("string"==typeof n?this.setString(n):void 0!==n.str?this.setString(n.str):void 0!==n.hex&&this.setStringHex(n.hex))};h.lang.extend(i.asn1.DERAbstractString,i.asn1.ASN1Object);i.asn1.DERAbstractTime=function(){i.asn1.DERAbstractTime.superclass.constructor.call(this);this.localDateToUTC=function(n){var t=n.getTime()+6e4*n.getTimezoneOffset();return new Date(t)};this.formatDate=function(n,t,i){var u=this.zeroPadding,r=this.localDateToUTC(n),e=String(r.getFullYear()),f,o,s;return"utc"==t&&(e=e.substr(2,2)),f=e+u(String(r.getMonth()+1),2)+u(String(r.getDate()),2)+u(String(r.getHours()),2)+u(String(r.getMinutes()),2)+u(String(r.getSeconds()),2),!0===i&&(o=r.getMilliseconds(),0!=o&&(s=u(String(o),3),f=f+"."+(s=s.replace(/[0]+$/,"")))),f+"Z"};this.zeroPadding=function(n,t){return n.length>=t?n:new Array(t-n.length+1).join("0")+n};this.getString=function(){return this.s};this.setString=function(n){this.hTLV=null;this.isModified=!0;this.s=n;this.hV=ot(n)};this.setByDateValue=function(n,t,i,r,u,f){var e=new Date(Date.UTC(n,t-1,i,r,u,f,0));this.setByDate(e)};this.getFreshValueHex=function(){return this.hV}};h.lang.extend(i.asn1.DERAbstractTime,i.asn1.ASN1Object);i.asn1.DERAbstractStructured=function(n){i.asn1.DERAbstractString.superclass.constructor.call(this);this.setByASN1ObjectArray=function(n){this.hTLV=null;this.isModified=!0;this.asn1Array=n};this.appendASN1Object=function(n){this.hTLV=null;this.isModified=!0;this.asn1Array.push(n)};this.asn1Array=[];void 0!==n&&void 0!==n.array&&(this.asn1Array=n.array)};h.lang.extend(i.asn1.DERAbstractStructured,i.asn1.ASN1Object);i.asn1.DERBoolean=function(n){i.asn1.DERBoolean.superclass.constructor.call(this);this.hT="01";this.hTLV=0==n?"010100":"0101ff"};h.lang.extend(i.asn1.DERBoolean,i.asn1.ASN1Object);i.asn1.DERInteger=function(n){i.asn1.DERInteger.superclass.constructor.call(this);this.hT="02";this.setByBigInteger=function(n){this.hTLV=null;this.isModified=!0;this.hV=i.asn1.ASN1Util.bigIntToMinTwosComplementsHex(n)};this.setByInteger=function(n){var t=new r(String(n),10);this.setByBigInteger(t)};this.setValueHex=function(n){this.hV=n};this.getFreshValueHex=function(){return this.hV};void 0!==n&&(void 0!==n.bigint?this.setByBigInteger(n.bigint):void 0!==n.int?this.setByInteger(n.int):"number"==typeof n?this.setByInteger(n):void 0!==n.hex&&this.setValueHex(n.hex))};h.lang.extend(i.asn1.DERInteger,i.asn1.ASN1Object);i.asn1.DERBitString=function(n){if(void 0!==n&&void 0!==n.obj){var t=i.asn1.ASN1Util.newObject(n.obj);n.hex="00"+t.getEncodedHex()}i.asn1.DERBitString.superclass.constructor.call(this);this.hT="03";this.setHexValueIncludingUnusedBits=function(n){this.hTLV=null;this.isModified=!0;this.hV=n};this.setUnusedBitsAndHexValue=function(n,t){if(n<0||7=i)break;return h};u.getNthChildIdx=function(n,t,i){return u.getChildIdx(n,t)[i]};u.getIdxbyList=function(n,t,i,r){var f,e,o=u;return 0==i.length?void 0!==r&&n.substr(t,2)!==r?-1:t:(f=i.shift())>=(e=o.getChildIdx(n,t)).length?-1:o.getIdxbyList(n,e[f],i,r)};u.getIdxbyListEx=function(n,t,i,r){var f,s,e=u,c,o,h;if(0==i.length)return void 0!==r&&n.substr(t,2)!==r?-1:t;for(f=i.shift(),s=e.getChildIdx(n,t),c=0,o=0;o=n.length?null:e.getTLV(n,f)};u.getTLVbyListEx=function(n,t,i,r){var f=u,e=f.getIdxbyListEx(n,t,i,r);return-1==e?null:f.getTLV(n,e)};u.getVbyList=function(n,t,i,r,f){var o,e,s=u;return-1==(o=s.getIdxbyList(n,t,i,r))||o>=n.length?null:(e=s.getV(n,o),!0===f&&(e=e.substr(2)),e)};u.getVbyListEx=function(n,t,i,r,f){var o,e,s=u;return-1==(o=s.getIdxbyListEx(n,t,i,r))?null:(e=s.getV(n,o),"03"==n.substr(o,2)&&!1!==f&&(e=e.substr(2)),e)};u.getInt=function(n,t,i){var r,f;null==i&&(i=-1);try{return(r=n.substr(t,2),"02"!=r&&"03"!=r)?i:(f=u.getV(n,t),"02"==r?parseInt(f,16):function(n){var i;try{if(i=n.substr(0,2),"00"==i)return parseInt(n.substr(2),16);var r=parseInt(i,16),u=n.substr(2),t=parseInt(u,16).toString(2);return"0"==t&&(t="00000000"),t=t.slice(0,0-r),parseInt(t,2)}catch(n){return-1}}(f))}catch(n){return i}};u.getOID=function(n,t,i){null==i&&(i=null);try{return"06"!=n.substr(t,2)?i:function(n){var u,r,f;if(!su(n))return null;try{var e=[],h=n.substr(0,2),o=parseInt(h,16);e[0]=new String(Math.floor(o/40));e[1]=new String(o%40);for(var s=n.substr(2),i=[],t=0;t0&&(f=f+"."+u.join(".")),f}catch(n){return null}}(u.getV(n,t))}catch(n){return i}};u.getOIDName=function(n,t,r){var f,e;null==r&&(r=null);try{return(f=u.getOID(n,t,r),f==r)?r:(e=i.asn1.x509.OID.oid2name(f),""==e?f:e)}catch(n){return r}};u.getString=function(n,t,i){null==i&&(i=null);try{return nt(u.getV(n,t))}catch(n){return i}};u.hextooidstr=function(n){var o=function(n,t){return n.length>=t?n:new Array(t-n.length+1).join("0")+n},e=[],c=n.substr(0,2),s=parseInt(c,16),u,r,f;e[0]=new String(Math.floor(s/40));e[1]=new String(s%40);for(var h=n.substr(2),i=[],t=0;t0&&(f=f+"."+u.join(".")),f};u.dump=function(n,t,r,f){var v=u,s=v.getV,y=v.dump,g=v.getChildIdx,e=n,b,o,k,h,nt,tt,l,c,a,w;if(n instanceof i.asn1.ASN1Object&&(e=n.getEncodedHex()),b=function(n,t){return n.length<=2*t?n:n.substr(0,t)+"..(total "+n.length/2+"bytes).."+n.substr(n.length-t,t)},void 0===t&&(t={ommit_long_octet:32}),void 0===r&&(r=0),void 0===f&&(f=""),k=t.ommit_long_octet,"01"==(o=e.substr(r,2)))return"00"==(h=s(e,r))?f+"BOOLEAN FALSE\n":f+"BOOLEAN TRUE\n";if("02"==o)return f+"INTEGER "+b(h=s(e,r),k)+"\n";if("03"==o)return h=s(e,r),v.isASN1HEX(h.substr(2))?(a=f+"BITSTRING, encapsulates\n")+y(h.substr(2),t,0,f+" "):f+"BITSTRING "+b(h,k)+"\n";if("04"==o)return h=s(e,r),v.isASN1HEX(h)?(a=f+"OCTETSTRING, encapsulates\n")+y(h,t,0,f+" "):f+"OCTETSTRING "+b(h,k)+"\n";if("05"==o)return f+"NULL\n";if("06"==o){var ut=s(e,r),it=i.asn1.ASN1Util.oidHexToInt(ut),d=i.asn1.x509.OID.oid2name(it),rt=it.replace(/\./g," ");return""!=d?f+"ObjectIdentifier "+d+" ("+rt+")\n":f+"ObjectIdentifier ("+rt+")\n"}if("0a"==o)return f+"ENUMERATED "+parseInt(s(e,r))+"\n";if("0c"==o)return f+"UTF8String '"+p(s(e,r))+"'\n";if("13"==o)return f+"PrintableString '"+p(s(e,r))+"'\n";if("14"==o)return f+"TeletexString '"+p(s(e,r))+"'\n";if("16"==o)return f+"IA5String '"+p(s(e,r))+"'\n";if("17"==o)return f+"UTCTime "+p(s(e,r))+"\n";if("18"==o)return f+"GeneralizedTime "+p(s(e,r))+"\n";if("1a"==o)return f+"VisualString '"+p(s(e,r))+"'\n";if("1e"==o)return f+"BMPString '"+p(s(e,r))+"'\n";if("30"==o){if("3000"==e.substr(r,4))return f+"SEQUENCE {}\n";for(a=f+"SEQUENCE\n",nt=t,(2==(c=g(e,r)).length||3==c.length)&&"06"==e.substr(c[0],2)&&"04"==e.substr(c[c.length-1],2)&&(d=v.oidname(s(e,c[0])),tt=JSON.parse(JSON.stringify(t)),tt.x509ExtName=d,nt=tt),l=0;l31)&&128==(192&i)&&(31&i)==r}catch(n){return!1}};u.isASN1HEX=function(n){var t=u;if(n.length%2==1)return!1;var i=t.getVblen(n,0),r=n.substr(0,2),f=t.getL(n,0);return n.length-r.length-f.length==2*i};u.checkStrictDER=function(n,t,r,f,e){var o=u,s,h,l,a,v;if(void 0===r){if("string"!=typeof n)throw new Error("not hex string");if(n=n.toLowerCase(),!i.lang.String.isHex(n))throw new Error("not hex string");r=n.length;e=(f=n.length/2)<128?1:Math.ceil(f.toString(16))+1}if(o.getL(n,t).length>2*e)throw new Error("L of TLV too long: idx="+t);if(s=o.getVblen(n,t),s>f)throw new Error("value of L too long than hex: idx="+t);if(h=o.getTLV(n,t),l=h.length-2-o.getL(n,t).length,l!==2*s)throw new Error("V string length and L's value not the same:"+l+"/"+2*s);if(0===t&&n.length!=h.length)throw new Error("total length and TLV length unmatch:"+n.length+"!="+h.length);if(a=n.substr(t,2),"02"===a&&(v=o.getVidx(n,t),"00"==n.substr(v,2)&&n.charCodeAt(v+2)<56))throw new Error("not least zeros for DER INTEGER");if(32&parseInt(a,16)){for(var w=o.getVblen(n,t),y=0,p=o.getChildIdx(n,t),c=0;c=t?n:new Array(t-n.length+1).join(i)+n};void 0!==i&&i||(t.KJUR=i={});void 0!==i.crypto&&i.crypto||(i.crypto={});i.crypto.Util=new function(){this.DIGESTINFOHEAD={sha1:"3021300906052b0e03021a05000414",sha224:"302d300d06096086480165030402040500041c",sha256:"3031300d060960864801650304020105000420",sha384:"3041300d060960864801650304020205000430",sha512:"3051300d060960864801650304020305000440",md2:"3020300c06082a864886f70d020205000410",md5:"3020300c06082a864886f70d020505000410",ripemd160:"3021300906052b2403020105000414"};this.DEFAULTPROVIDER={md5:"cryptojs",sha1:"cryptojs",sha224:"cryptojs",sha256:"cryptojs",sha384:"cryptojs",sha512:"cryptojs",ripemd160:"cryptojs",hmacmd5:"cryptojs",hmacsha1:"cryptojs",hmacsha224:"cryptojs",hmacsha256:"cryptojs",hmacsha384:"cryptojs",hmacsha512:"cryptojs",hmacripemd160:"cryptojs",MD5withRSA:"cryptojs/jsrsa",SHA1withRSA:"cryptojs/jsrsa",SHA224withRSA:"cryptojs/jsrsa",SHA256withRSA:"cryptojs/jsrsa",SHA384withRSA:"cryptojs/jsrsa",SHA512withRSA:"cryptojs/jsrsa",RIPEMD160withRSA:"cryptojs/jsrsa",MD5withECDSA:"cryptojs/jsrsa",SHA1withECDSA:"cryptojs/jsrsa",SHA224withECDSA:"cryptojs/jsrsa",SHA256withECDSA:"cryptojs/jsrsa",SHA384withECDSA:"cryptojs/jsrsa",SHA512withECDSA:"cryptojs/jsrsa",RIPEMD160withECDSA:"cryptojs/jsrsa",SHA1withDSA:"cryptojs/jsrsa",SHA224withDSA:"cryptojs/jsrsa",SHA256withDSA:"cryptojs/jsrsa",MD5withRSAandMGF1:"cryptojs/jsrsa",SHAwithRSAandMGF1:"cryptojs/jsrsa",SHA1withRSAandMGF1:"cryptojs/jsrsa",SHA224withRSAandMGF1:"cryptojs/jsrsa",SHA256withRSAandMGF1:"cryptojs/jsrsa",SHA384withRSAandMGF1:"cryptojs/jsrsa",SHA512withRSAandMGF1:"cryptojs/jsrsa",RIPEMD160withRSAandMGF1:"cryptojs/jsrsa"};this.CRYPTOJSMESSAGEDIGESTNAME={md5:f.algo.MD5,sha1:f.algo.SHA1,sha224:f.algo.SHA224,sha256:f.algo.SHA256,sha384:f.algo.SHA384,sha512:f.algo.SHA512,ripemd160:f.algo.RIPEMD160};this.getDigestInfoHex=function(n,t){if(void 0===this.DIGESTINFOHEAD[t])throw"alg not supported in Util.DIGESTINFOHEAD: "+t;return this.DIGESTINFOHEAD[t]+n};this.getPaddedDigestInfoHex=function(n,t,i){var r=this.getDigestInfoHex(n,t),u=i/4;if(r.length+22>u)throw"key is too short for SigAlg: keylen="+i+","+t;for(var f="00"+r,e="",s=u-4-f.length,o=0;o=0||r.compareTo(t.ONE)<0||r.compareTo(f)>=0)return!1;var e=r.modInverse(f),s=n.multiply(e).mod(f),h=i.multiply(e).mod(f);return o.multiply(s).add(u.multiply(h)).getX().toBigInteger().mod(f).equals(i)};this.serializeSig=function(n,t){var r=n.toByteArraySigned(),u=t.toByteArraySigned(),i=[];return i.push(2),i.push(r.length),(i=i.concat(r)).push(2),i.push(u.length),(i=i.concat(u)).unshift(i.length),i.unshift(48),i};this.parseSig=function(n){var i,r,u;if(48!=n[0])throw new Error("Signature not a valid DERSequence");if(2!=n[i=2])throw new Error("First element in signature must be a DERInteger");if(r=n.slice(i+2,i+2+n[i+1]),2!=n[i+=2+n[i+1]])throw new Error("Second element in signature must be a DERInteger");return u=n.slice(i+2,i+2+n[i+1]),i+=2+n[i+1],{r:t.fromByteArrayUnsigned(r),s:t.fromByteArrayUnsigned(u)}};this.parseSigCompact=function(n){var i,r;if(65!==n.length)throw"Signature has the wrong length";if(i=n[0]-27,i<0||i>7)throw"Invalid signature type";return r=this.ecparams.n,{r:t.fromByteArrayUnsigned(n.slice(1,33)).mod(r),s:t.fromByteArrayUnsigned(n.slice(33,65)).mod(r),i:i}};this.readPKCS5PrvKeyHex=function(n){if(!1===h(n))throw new Error("not ASN.1 hex string");var t,i,r;try{t=f(n,0,["[0]",0],"06");i=f(n,0,[1],"04");try{r=f(n,0,["[1]",0],"03")}catch(n){}}catch(n){throw new Error("malformed PKCS#1/5 plain ECC private key");}if(this.curveName=o(t),void 0===this.curveName)throw"unsupported curve name";this.setNamedCurve(this.curveName);this.setPublicKeyHex(r);this.setPrivateKeyHex(i);this.isPublic=!1};this.readPKCS8PrvKeyHex=function(n){if(!1===h(n))throw new e("not ASN.1 hex string");var t,i,r;try{f(n,0,[1,0],"06");t=f(n,0,[1,1],"06");i=f(n,0,[2,0,1],"04");try{r=f(n,0,[2,0,"[1]",0],"03")}catch(n){}}catch(n){throw new e("malformed PKCS#8 plain ECC private key");}if(this.curveName=o(t),void 0===this.curveName)throw new e("unsupported curve name");this.setNamedCurve(this.curveName);this.setPublicKeyHex(r);this.setPrivateKeyHex(i);this.isPublic=!1};this.readPKCS8PubKeyHex=function(n){if(!1===h(n))throw new e("not ASN.1 hex string");var t,i;try{f(n,0,[0,0],"06");t=f(n,0,[0,1],"06");i=f(n,0,[1],"03")}catch(n){throw new e("malformed PKCS#8 ECC public key");}if(this.curveName=o(t),null===this.curveName)throw new e("unsupported curve name");this.setNamedCurve(this.curveName);this.setPublicKeyHex(i)};this.readCertPubKeyHex=function(n){if(!1===h(n))throw new e("not ASN.1 hex string");var t,i;try{t=f(n,0,[0,5,0,1],"06");i=f(n,0,[0,5,1],"03")}catch(n){throw new e("malformed X.509 certificate ECC public key");}if(this.curveName=o(t),null===this.curveName)throw new e("unsupported curve name");this.setNamedCurve(this.curveName);this.setPublicKeyHex(i)};void 0!==n&&void 0!==n.curve&&(this.curveName=n.curve);void 0===this.curveName&&(this.curveName="secp256r1");this.setNamedCurve(this.curveName);void 0!==n&&(void 0!==n.prv&&this.setPrivateKeyHex(n.prv),void 0!==n.pub&&this.setPublicKeyHex(n.pub))};i.crypto.ECDSA.parseSigHex=function(n){var t=i.crypto.ECDSA.parseSigHexInHexRS(n);return{r:new r(t.r,16),s:new r(t.s,16)}};i.crypto.ECDSA.parseSigHexInHexRS=function(n){var i=u,o=i.getChildIdx,e=i.getV,t,r,f;if(i.checkStrictDER(n,0),"30"!=n.substr(0,2))throw new Error("signature is not a ASN.1 sequence");if(t=o(n,0),2!=t.length)throw new Error("signature shall have two elements");if(r=t[0],f=t[1],"02"!=n.substr(r,2))throw new Error("1st item not ASN.1 integer");if("02"!=n.substr(f,2))throw new Error("2nd item not ASN.1 integer");return{r:e(n,r),s:e(n,f)}};i.crypto.ECDSA.asn1SigToConcatSig=function(n){var u=i.crypto.ECDSA.parseSigHexInHexRS(n),t=u.r,r=u.s;if("00"==t.substr(0,2)&&t.length%32==2&&(t=t.substr(2)),"00"==r.substr(0,2)&&r.length%32==2&&(r=r.substr(2)),t.length%32==30&&(t="00"+t),r.length%32==30&&(r="00"+r),t.length%32!=0)throw"unknown ECDSA sig r length error";if(r.length%32!=0)throw"unknown ECDSA sig s length error";return t+r};i.crypto.ECDSA.concatSigToASN1Sig=function(n){if(n.length*4%128!=0)throw"unknown ECDSA concatinated r-s sig length error";var t=n.substr(0,n.length/2),r=n.substr(n.length/2);return i.crypto.ECDSA.hexRSSigToASN1Sig(t,r)};i.crypto.ECDSA.hexRSSigToASN1Sig=function(n,t){var u=new r(n,16),f=new r(t,16);return i.crypto.ECDSA.biRSSigToASN1Sig(u,f)};i.crypto.ECDSA.biRSSigToASN1Sig=function(n,t){var r=i.asn1,u=new r.DERInteger({bigint:n}),f=new r.DERInteger({bigint:t});return new r.DERSequence({array:[u,f]}).getEncodedHex()};i.crypto.ECDSA.getName=function(n){return"2b8104001f"===n?"secp192k1":"2a8648ce3d030107"===n?"secp256r1":"2b8104000a"===n?"secp256k1":"2b81040021"===n?"secp224r1":"2b81040022"===n?"secp384r1":-1!=="|secp256r1|NIST P-256|P-256|prime256v1|".indexOf(n)?"secp256r1":-1!=="|secp256k1|".indexOf(n)?"secp256k1":-1!=="|secp224r1|NIST P-224|P-224|".indexOf(n)?"secp224r1":-1!=="|secp384r1|NIST P-384|P-384|".indexOf(n)?"secp384r1":null};void 0!==i&&i||(t.KJUR=i={});void 0!==i.crypto&&i.crypto||(i.crypto={});i.crypto.ECParameterDB=new function(){function t(n){return new r(n,16)}var n={},i={};this.getByName=function(t){var r=t;if(void 0!==i[r]&&(r=i[t]),void 0!==n[r])return n[r];throw"unregistered EC curve name: "+r;};this.regist=function(r,u,f,e,o,s,h,c,l,a,v,y){var p;n[r]={};var b=t(f),k=t(e),d=t(o),g=t(s),nt=t(h),w=new ct(b,k,d),tt=w.decodePointHex("04"+c+l);for(n[r].name=r,n[r].keylen=u,n[r].curve=w,n[r].G=tt,n[r].n=g,n[r].h=nt,n[r].oid=v,n[r].info=y,p=0;p=2*a)break;return o={},o.keyhex=s.substr(0,2*n[t].keylen),o.ivhex=s.substr(2*n[t].keylen,2*n[t].ivlen),o},a=function(t,i,r,u){var e=f.enc.Base64.parse(t),o=f.enc.Hex.stringify(e);return n[i].proc(o,r,u)};return{version:"1.0.0",parsePKCS5PEM:function(n){return c(n)},getKeyAndUnusedIvByPasscodeAndIvsalt:function(n,t,i){return h(n,t,i)},decryptKeyB64:function(n,t,i,r){return a(n,t,i,r)},getDecryptedKeyHex:function(n,t){var i=c(n),r=i.cipher,u=i.ivsalt,f=i.data,e=h(r,t,u).keyhex;return a(f,r,e,u)},getEncryptedPKCS5PEMFromPrvKeyHex:function(t,i,r,u,e){var o="",s;if(void 0!==u&&null!=u||(u="AES-256-CBC"),void 0===n[u])throw"KEYUTIL unsupported algorithm: "+u;return void 0!==e&&null!=e||(e=function(n){var t=f.lib.WordArray.random(n);return f.enc.Hex.stringify(t)}(n[u].ivlen).toUpperCase()),s=function(t,i,r,u){return n[i].eproc(t,r,u)}(i,u,h(u,r,e).keyhex,e),o="-----BEGIN "+t+" PRIVATE KEY-----\r\n",o+="Proc-Type: 4,ENCRYPTED\r\n",o+="DEK-Info: "+u+","+e+"\r\n",o+="\r\n",(o+=s.replace(/(.{64})/g,"$1\r\n"))+"\r\n-----END "+t+" PRIVATE KEY-----\r\n"},parseHexOfEncryptedPKCS8:function(n){var a=u,i=a.getChildIdx,t=a.getV,r={},h=i(n,0),f,c,e,o,s,l;if(2!=h.length)throw"malformed format: SEQUENCE(0).items != 2: "+h.length;if(r.ciphertext=t(n,h[1]),f=i(n,h[0]),2!=f.length)throw"malformed format: SEQUENCE(0.0).items != 2: "+f.length;if("2a864886f70d01050d"!=t(n,f[0]))throw"this only supports pkcs5PBES2";if(c=i(n,f[1]),2!=f.length)throw"malformed format: SEQUENCE(0.0.1).items != 2: "+c.length;if(e=i(n,c[1]),2!=e.length)throw"malformed format: SEQUENCE(0.0.1.1).items != 2: "+e.length;if("2a864886f70d0307"!=t(n,e[0]))throw"this only supports TripleDES";if(r.encryptionSchemeAlg="TripleDES",r.encryptionSchemeIV=t(n,e[1]),o=i(n,c[0]),2!=o.length)throw"malformed format: SEQUENCE(0.0.1.0).items != 2: "+o.length;if("2a864886f70d01050c"!=t(n,o[0]))throw"this only supports pkcs5PBKDF2";if(s=i(n,o[1]),s.length<2)throw"malformed format: SEQUENCE(0.0.1.0.1).items < 2: "+s.length;r.pbkdf2Salt=t(n,s[0]);l=t(n,s[1]);try{r.pbkdf2Iter=parseInt(l,16)}catch(n){throw"malformed format pbkdf2Iter: "+l;}return r},getPBKDF2KeyHexFromParam:function(n,t){var i=f.enc.Hex.parse(n.pbkdf2Salt),r=n.pbkdf2Iter,u=f.PBKDF2(t,i,{keySize:6,iterations:r});return f.enc.Hex.stringify(u)},_getPlainPKCS8HexFromEncryptedPKCS8PEM:function(n,t){var u=ft(n,"ENCRYPTED PRIVATE KEY"),i=this.parseHexOfEncryptedPKCS8(u),e=l.getPBKDF2KeyHexFromParam(i,t),r={};r.ciphertext=f.enc.Hex.parse(i.ciphertext);var o=f.enc.Hex.parse(e),s=f.enc.Hex.parse(i.encryptionSchemeIV),h=f.TripleDES.decrypt(r,o,{iv:s});return f.enc.Hex.stringify(h)},getKeyFromEncryptedPKCS8PEM:function(n,t){var i=this._getPlainPKCS8HexFromEncryptedPKCS8PEM(n,t);return this.getKeyFromPlainPrivatePKCS8Hex(i)},parsePlainPrivatePKCS8Hex:function(n){var f=u,e=f.getChildIdx,o=f.getV,r={algparam:null},t,i;if("30"!=n.substr(0,2))throw"malformed plain PKCS8 private key(code:001)";if(t=e(n,0),3!=t.length)throw"malformed plain PKCS8 private key(code:002)";if("30"!=n.substr(t[1],2))throw"malformed PKCS8 private key(code:003)";if(i=e(n,t[1]),2!=i.length)throw"malformed PKCS8 private key(code:004)";if("06"!=n.substr(i[0],2))throw"malformed PKCS8 private key(code:005)";if(r.algoid=o(n,i[0]),"06"==n.substr(i[1],2)&&(r.algparam=o(n,i[1])),"04"!=n.substr(t[2],2))throw"malformed PKCS8 private key(code:006)";return r.keyidx=f.getVidx(n,t[2]),r},getKeyFromPlainPrivatePKCS8PEM:function(n){var t=ft(n,"PRIVATE KEY");return this.getKeyFromPlainPrivatePKCS8Hex(t)},getKeyFromPlainPrivatePKCS8Hex:function(n){var t,r=this.parsePlainPrivatePKCS8Hex(n);if("2a864886f70d010101"==r.algoid)t=new e;else if("2a8648ce380401"==r.algoid)t=new i.crypto.DSA;else{if("2a8648ce3d0201"!=r.algoid)throw"unsupported private key algorithm";t=new i.crypto.ECDSA}return t.readPKCS8PrvKeyHex(n),t},_getKeyFromPublicPKCS8Hex:function(n){var t,r=u.getVbyList(n,0,[0,0],"06");if("2a864886f70d010101"===r)t=new e;else if("2a8648ce380401"===r)t=new i.crypto.DSA;else{if("2a8648ce3d0201"!==r)throw"unsupported PKCS#8 public key hex";t=new i.crypto.ECDSA}return t.readPKCS8PubKeyHex(n),t},parsePublicRawRSAKeyHex:function(n){var r=u,e=r.getChildIdx,f=r.getV,i={},t;if("30"!=n.substr(0,2))throw"malformed RSA key(code:001)";if(t=e(n,0),2!=t.length)throw"malformed RSA key(code:002)";if("02"!=n.substr(t[0],2))throw"malformed RSA key(code:003)";if(i.n=f(n,t[0]),"02"!=n.substr(t[1],2))throw"malformed RSA key(code:004)";return i.e=f(n,t[1]),i},parsePublicPKCS8Hex:function(n){var r=u,s=r.getChildIdx,e=r.getV,i={algparam:null},f=s(n,0),o,t;if(2!=f.length)throw"outer DERSequence shall have 2 elements: "+f.length;if(o=f[0],"30"!=n.substr(o,2))throw"malformed PKCS8 public key(code:001)";if(t=s(n,o),2!=t.length)throw"malformed PKCS8 public key(code:002)";if("06"!=n.substr(t[0],2))throw"malformed PKCS8 public key(code:003)";if(i.algoid=e(n,t[0]),"06"==n.substr(t[1],2)?i.algparam=e(n,t[1]):"30"==n.substr(t[1],2)&&(i.algparam={},i.algparam.p=r.getVbyList(n,t[1],[0],"02"),i.algparam.q=r.getVbyList(n,t[1],[1],"02"),i.algparam.g=r.getVbyList(n,t[1],[2],"02")),"03"!=n.substr(f[1],2))throw"malformed PKCS8 public key(code:004)";return i.key=e(n,f[1]).substr(2),i}}}();l.getKey=function(n,t,f){var s,wt=(rt=u).getChildIdx,h=rt.getVbyList,at=i.crypto,w=at.ECDSA,b=at.DSA,p=e,it=ft,y=l,k,g,vt,nt,d,rt,yt,tt,pt,ct;if(void 0!==p&&n instanceof p||void 0!==w&&n instanceof w||void 0!==b&&n instanceof b)return n;if(void 0!==n.curve&&void 0!==n.xy&&void 0===n.d)return new w({pub:n.xy,curve:n.curve});if(void 0!==n.curve&&void 0!==n.d)return new w({prv:n.d,curve:n.curve});if(void 0===n.kty&&void 0!==n.n&&void 0!==n.e&&void 0===n.d)return(o=new p).setPublic(n.n,n.e),o;if(void 0===n.kty&&void 0!==n.n&&void 0!==n.e&&void 0!==n.d&&void 0!==n.p&&void 0!==n.q&&void 0!==n.dp&&void 0!==n.dq&&void 0!==n.co&&void 0===n.qi)return(o=new p).setPrivateEx(n.n,n.e,n.d,n.p,n.q,n.dp,n.dq,n.co),o;if(void 0===n.kty&&void 0!==n.n&&void 0!==n.e&&void 0!==n.d&&void 0===n.p)return(o=new p).setPrivate(n.n,n.e,n.d),o;if(void 0!==n.p&&void 0!==n.q&&void 0!==n.g&&void 0!==n.y&&void 0===n.x)return(o=new b).setPublic(n.p,n.q,n.g,n.y),o;if(void 0!==n.p&&void 0!==n.q&&void 0!==n.g&&void 0!==n.y&&void 0!==n.x)return(o=new b).setPrivate(n.p,n.q,n.g,n.y,n.x),o;if("RSA"===n.kty&&void 0!==n.n&&void 0!==n.e&&void 0===n.d)return(o=new p).setPublic(c(n.n),c(n.e)),o;if("RSA"===n.kty&&void 0!==n.n&&void 0!==n.e&&void 0!==n.d&&void 0!==n.p&&void 0!==n.q&&void 0!==n.dp&&void 0!==n.dq&&void 0!==n.qi)return(o=new p).setPrivateEx(c(n.n),c(n.e),c(n.d),c(n.p),c(n.q),c(n.dp),c(n.dq),c(n.qi)),o;if("RSA"===n.kty&&void 0!==n.n&&void 0!==n.e&&void 0!==n.d)return(o=new p).setPrivate(c(n.n),c(n.e),c(n.d)),o;if("EC"===n.kty&&void 0!==n.crv&&void 0!==n.x&&void 0!==n.y&&void 0===n.d)return k=(v=new w({curve:n.crv})).ecparams.keylen/4,g="04"+("0000000000"+c(n.x)).slice(-k)+("0000000000"+c(n.y)).slice(-k),v.setPublicKeyHex(g),v;if("EC"===n.kty&&void 0!==n.crv&&void 0!==n.x&&void 0!==n.y&&void 0!==n.d)return k=(v=new w({curve:n.crv})).ecparams.keylen/4,g="04"+("0000000000"+c(n.x)).slice(-k)+("0000000000"+c(n.y)).slice(-k),vt=("0000000000"+c(n.d)).slice(-k),v.setPublicKeyHex(g),v.setPrivateKeyHex(vt),v;if("pkcs5prv"===f){if(d=n,rt=u,9===(nt=wt(d,0)).length)(o=new p).readPKCS5PrvKeyHex(d);else if(6===nt.length)(o=new b).readPKCS5PrvKeyHex(d);else{if(!(nt.length>2&&"04"===d.substr(nt[1],2)))throw"unsupported PKCS#1/5 hexadecimal key";(o=new w).readPKCS5PrvKeyHex(d)}return o}if("pkcs8prv"===f)return y.getKeyFromPlainPrivatePKCS8Hex(n);if("pkcs8pub"===f)return y._getKeyFromPublicPKCS8Hex(n);if("x509pub"===f)return a.getPublicKeyFromCertHex(n);if(-1!=n.indexOf("-END CERTIFICATE-",0)||-1!=n.indexOf("-END X509 CERTIFICATE-",0)||-1!=n.indexOf("-END TRUSTED CERTIFICATE-",0))return a.getPublicKeyFromCertPEM(n);if(-1!=n.indexOf("-END PUBLIC KEY-"))return yt=ft(n,"PUBLIC KEY"),y._getKeyFromPublicPKCS8Hex(yt);if(-1!=n.indexOf("-END RSA PRIVATE KEY-")&&-1==n.indexOf("4,ENCRYPTED"))return tt=it(n,"RSA PRIVATE KEY"),y.getKey(tt,null,"pkcs5prv");if(-1!=n.indexOf("-END DSA PRIVATE KEY-")&&-1==n.indexOf("4,ENCRYPTED")){var ut=h(s=it(n,"DSA PRIVATE KEY"),0,[1],"02"),et=h(s,0,[2],"02"),ot=h(s,0,[3],"02"),st=h(s,0,[4],"02"),ht=h(s,0,[5],"02");return(o=new b).setPrivate(new r(ut,16),new r(et,16),new r(ot,16),new r(st,16),new r(ht,16)),o}if(-1!=n.indexOf("-END EC PRIVATE KEY-")&&-1==n.indexOf("4,ENCRYPTED"))return tt=it(n,"EC PRIVATE KEY"),y.getKey(tt,null,"pkcs5prv");if(-1!=n.indexOf("-END PRIVATE KEY-"))return y.getKeyFromPlainPrivatePKCS8PEM(n);if(-1!=n.indexOf("-END RSA PRIVATE KEY-")&&-1!=n.indexOf("4,ENCRYPTED"))return pt=y.getDecryptedKeyHex(n,t),ct=new e,ct.readPKCS5PrvKeyHex(pt),ct;if(-1!=n.indexOf("-END EC PRIVATE KEY-")&&-1!=n.indexOf("4,ENCRYPTED")){var v,o=h(s=y.getDecryptedKeyHex(n,t),0,[1],"04"),lt=h(s,0,[2,0],"06"),bt=h(s,0,[3,0],"03").substr(2);if(void 0===i.crypto.OID.oidhex2name[lt])throw"undefined OID(hex) in KJUR.crypto.OID: "+lt;return(v=new w({curve:i.crypto.OID.oidhex2name[lt]})).setPublicKeyHex(bt),v.setPrivateKeyHex(o),v.isPublic=!1,v}if(-1!=n.indexOf("-END DSA PRIVATE KEY-")&&-1!=n.indexOf("4,ENCRYPTED"))return ut=h(s=y.getDecryptedKeyHex(n,t),0,[1],"02"),et=h(s,0,[2],"02"),ot=h(s,0,[3],"02"),st=h(s,0,[4],"02"),ht=h(s,0,[5],"02"),(o=new b).setPrivate(new r(ut,16),new r(et,16),new r(ot,16),new r(st,16),new r(ht,16)),o;if(-1!=n.indexOf("-END ENCRYPTED PRIVATE KEY-"))return y.getKeyFromEncryptedPKCS8PEM(n,t);throw new Error("not supported argument");};l.generateKeypair=function(n,t){var h,r,f,o,s;if("RSA"==n){h=t;(r=new e).generate(h,"10001");r.isPrivate=!0;r.isPublic=!0;var u=new e,c=r.n.toString(16),l=r.e.toString(16);return u.setPublic(c,l),u.isPrivate=!1,u.isPublic=!0,(f={}).prvKeyObj=r,f.pubKeyObj=u,f}if("EC"==n)return o=t,s=new i.crypto.ECDSA({curve:o}).generateKeyPairHex(),(r=new i.crypto.ECDSA({curve:o})).setPublicKeyHex(s.ecpubhex),r.setPrivateKeyHex(s.ecprvhex),r.isPrivate=!0,r.isPublic=!1,(u=new i.crypto.ECDSA({curve:o})).setPublicKeyHex(s.ecpubhex),u.isPrivate=!1,u.isPublic=!0,(f={}).prvKeyObj=r,f.pubKeyObj=u,f;throw"unknown algorithm: "+n;};l.getPEM=function(n,t,r,u,o,s){function k(n){return c({seq:[{int:0},{int:{bigint:n.n}},{int:n.e},{int:{bigint:n.d}},{int:{bigint:n.p}},{int:{bigint:n.q}},{int:{bigint:n.dmp1}},{int:{bigint:n.dmq1}},{int:{bigint:n.coeff}}]})}function tt(n){return c({seq:[{int:1},{octstr:{hex:n.prvKeyHex}},{tag:["a0",!0,{oid:{name:n.curveName}}]},{tag:["a1",!0,{bitstr:{hex:"00"+n.pubKeyHex}}]}]})}function it(n){return c({seq:[{int:0},{int:{bigint:n.p}},{int:{bigint:n.q}},{int:{bigint:n.g}},{int:{bigint:n.y}},{int:{bigint:n.x}}]})}var g=i,p=g.asn1,ut=p.DERObjectIdentifier,ft=p.DERInteger,c=p.ASN1Util.newObject,et=p.x509.SubjectPublicKeyInfo,nt=g.crypto,l=nt.DSA,a=nt.ECDSA,v=e,h,b,rt,y;if((void 0!==v&&n instanceof v||void 0!==l&&n instanceof l||void 0!==a&&n instanceof a)&&1==n.isPublic&&(void 0===t||"PKCS8PUB"==t))return d(h=new et(n).getEncodedHex(),"PUBLIC KEY");if("PKCS1PRV"==t&&void 0!==v&&n instanceof v&&(void 0===r||null==r)&&1==n.isPrivate)return d(h=k(n).getEncodedHex(),"RSA PRIVATE KEY");if("PKCS1PRV"==t&&void 0!==a&&n instanceof a&&(void 0===r||null==r)&&1==n.isPrivate){var ot=new ut({name:n.curveName}).getEncodedHex(),w=tt(n).getEncodedHex(),st="";return(st+=d(ot,"EC PARAMETERS"))+d(w,"EC PRIVATE KEY")}if("PKCS1PRV"==t&&void 0!==l&&n instanceof l&&(void 0===r||null==r)&&1==n.isPrivate)return d(h=it(n).getEncodedHex(),"DSA PRIVATE KEY");if("PKCS5PRV"==t&&void 0!==v&&n instanceof v&&void 0!==r&&null!=r&&1==n.isPrivate)return h=k(n).getEncodedHex(),void 0===u&&(u="DES-EDE3-CBC"),this.getEncryptedPKCS5PEMFromPrvKeyHex("RSA",h,r,u,s);if("PKCS5PRV"==t&&void 0!==a&&n instanceof a&&void 0!==r&&null!=r&&1==n.isPrivate)return h=tt(n).getEncodedHex(),void 0===u&&(u="DES-EDE3-CBC"),this.getEncryptedPKCS5PEMFromPrvKeyHex("EC",h,r,u,s);if("PKCS5PRV"==t&&void 0!==l&&n instanceof l&&void 0!==r&&null!=r&&1==n.isPrivate)return h=it(n).getEncodedHex(),void 0===u&&(u="DES-EDE3-CBC"),this.getEncryptedPKCS5PEMFromPrvKeyHex("DSA",h,r,u,s);if(b=function(n,t){var i=rt(n,t);return new c({seq:[{seq:[{oid:{name:"pkcs5PBES2"}},{seq:[{seq:[{oid:{name:"pkcs5PBKDF2"}},{seq:[{octstr:{hex:i.pbkdf2Salt}},{int:i.pbkdf2Iter}]}]},{seq:[{oid:{name:"des-EDE3-CBC"}},{octstr:{hex:i.encryptionSchemeIV}}]}]}]},{octstr:{hex:i.ciphertext}}]}).getEncodedHex()},rt=function(n,t){var r=f.lib.WordArray.random(8),u=f.lib.WordArray.random(8),e=f.PBKDF2(t,r,{keySize:6,iterations:100}),o=f.enc.Hex.parse(n),s=f.TripleDES.encrypt(o,e,{iv:u})+"",i={};return i.ciphertext=s,i.pbkdf2Salt=f.enc.Hex.stringify(r),i.pbkdf2Iter=100,i.encryptionSchemeAlg="DES-EDE3-CBC",i.encryptionSchemeIV=f.enc.Hex.stringify(u),i},"PKCS8PRV"==t&&null!=v&&n instanceof v&&1==n.isPrivate)return y=k(n).getEncodedHex(),h=c({seq:[{int:0},{seq:[{oid:{name:"rsaEncryption"}},{"null":!0}]},{octstr:{hex:y}}]}).getEncodedHex(),void 0===r||null==r?d(h,"PRIVATE KEY"):d(w=b(h,r),"ENCRYPTED PRIVATE KEY");if("PKCS8PRV"==t&&void 0!==a&&n instanceof a&&1==n.isPrivate)return y=new c({seq:[{int:1},{octstr:{hex:n.prvKeyHex}},{tag:["a1",!0,{bitstr:{hex:"00"+n.pubKeyHex}}]}]}).getEncodedHex(),h=c({seq:[{int:0},{seq:[{oid:{name:"ecPublicKey"}},{oid:{name:n.curveName}}]},{octstr:{hex:y}}]}).getEncodedHex(),void 0===r||null==r?d(h,"PRIVATE KEY"):d(w=b(h,r),"ENCRYPTED PRIVATE KEY");if("PKCS8PRV"==t&&void 0!==l&&n instanceof l&&1==n.isPrivate)return y=new ft({bigint:n.x}).getEncodedHex(),h=c({seq:[{int:0},{seq:[{oid:{name:"dsa"}},{seq:[{int:{bigint:n.p}},{int:{bigint:n.q}},{int:{bigint:n.g}}]}]},{octstr:{hex:y}}]}).getEncodedHex(),void 0===r||null==r?d(h,"PRIVATE KEY"):d(w=b(h,r),"ENCRYPTED PRIVATE KEY");throw new Error("unsupported object nor format");};l.getKeyFromCSRPEM=function(n){var t=ft(n,"CERTIFICATE REQUEST");return l.getKeyFromCSRHex(t)};l.getKeyFromCSRHex=function(n){var t=l.parseCSRHex(n);return l.getKey(t.p8pubkeyhex,null,"pkcs8pub")};l.parseCSRHex=function(n){var f=u,e=f.getChildIdx,s=f.getTLV,o={},t=n,i,r;if("30"!=t.substr(0,2))throw"malformed CSR(code:001)";if(i=e(t,0),i.length<1)throw"malformed CSR(code:002)";if("30"!=t.substr(i[0],2))throw"malformed CSR(code:003)";if(r=e(t,i[0]),r.length<3)throw"malformed CSR(code:004)";return o.p8pubkeyhex=s(t,r[2]),o};l.getKeyID=function(n){var t=l,r=u;"string"==typeof n&&-1!=n.indexOf("BEGIN ")&&(n=t.getKey(n));var f=ft(t.getPEM(n)),e=r.getIdxbyList(f,0,[1]),o=r.getV(f,e).substring(2);return i.crypto.Util.hashHex(o,"sha1")};l.getJWKFromKey=function(n){var t={},u,r;if(n instanceof e&&n.isPrivate)return t.kty="RSA",t.n=v(n.n.toString(16)),t.e=v(n.e.toString(16)),t.d=v(n.d.toString(16)),t.p=v(n.p.toString(16)),t.q=v(n.q.toString(16)),t.dp=v(n.dmp1.toString(16)),t.dq=v(n.dmq1.toString(16)),t.qi=v(n.coeff.toString(16)),t;if(n instanceof e&&n.isPublic)return t.kty="RSA",t.n=v(n.n.toString(16)),t.e=v(n.e.toString(16)),t;if(n instanceof i.crypto.ECDSA&&n.isPrivate){if("P-256"!==(r=n.getShortNISTPCurveName())&&"P-384"!==r)throw"unsupported curve name for JWT: "+r;return u=n.getPublicKeyXYHex(),t.kty="EC",t.crv=r,t.x=v(u.x),t.y=v(u.y),t.d=v(n.prvKeyHex),t}if(n instanceof i.crypto.ECDSA&&n.isPublic){if("P-256"!==(r=n.getShortNISTPCurveName())&&"P-384"!==r)throw"unsupported curve name for JWT: "+r;return u=n.getPublicKeyXYHex(),t.kty="EC",t.crv=r,t.x=v(u.x),t.y=v(u.y),t}throw"not supported key object";};e.getPosArrayOfChildrenFromHex=function(n){return u.getChildIdx(n,0)};e.getHexValueArrayOfChildrenFromHex=function(n){var t,i=u.getV,r=i(n,(t=e.getPosArrayOfChildrenFromHex(n))[0]),f=i(n,t[1]),o=i(n,t[2]),s=i(n,t[3]),h=i(n,t[4]),c=i(n,t[5]),l=i(n,t[6]),a=i(n,t[7]),v=i(n,t[8]);return(t=[]).push(r,f,o,s,h,c,l,a,v),t};e.prototype.readPrivateKeyFromPEMString=function(n){var i=ft(n),t=e.getHexValueArrayOfChildrenFromHex(i);this.setPrivateEx(t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8])};e.prototype.readPKCS5PrvKeyHex=function(n){var t=e.getHexValueArrayOfChildrenFromHex(n);this.setPrivateEx(t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8])};e.prototype.readPKCS8PrvKeyHex=function(n){var i,r,f,e,o,s,h,c,l=u,t=l.getVbyListEx;if(!1===l.isASN1HEX(n))throw new Error("not ASN.1 hex string");try{i=t(n,0,[2,0,1],"02");r=t(n,0,[2,0,2],"02");f=t(n,0,[2,0,3],"02");e=t(n,0,[2,0,4],"02");o=t(n,0,[2,0,5],"02");s=t(n,0,[2,0,6],"02");h=t(n,0,[2,0,7],"02");c=t(n,0,[2,0,8],"02")}catch(n){throw new Error("malformed PKCS#8 plain RSA private key");}this.setPrivateEx(i,r,f,e,o,s,h,c)};e.prototype.readPKCS5PubKeyHex=function(n){var i=u,r=i.getV,t,f,e;if(!1===i.isASN1HEX(n))throw new Error("keyHex is not ASN.1 hex string");if(t=i.getChildIdx(n,0),2!==t.length||"02"!==n.substr(t[0],2)||"02"!==n.substr(t[1],2))throw new Error("wrong hex for PKCS#5 public key");f=r(n,t[0]);e=r(n,t[1]);this.setPublic(f,e)};e.prototype.readPKCS8PubKeyHex=function(n){var t=u,i;if(!1===t.isASN1HEX(n))throw new Error("not ASN.1 hex string");if("06092a864886f70d010101"!==t.getTLVbyListEx(n,0,[0,0]))throw new Error("not PKCS8 RSA public key");i=t.getTLVbyListEx(n,0,[1,0]);this.readPKCS5PubKeyHex(i)};e.prototype.readCertPubKeyHex=function(n){var t,i;(t=new a).readCertHex(n);i=t.getPublicKeyHex();this.readPKCS8PubKeyHex(i)};hu=new RegExp("[^0-9a-f]","gi");e.prototype.sign=function(n,t){var r=function(n){return i.crypto.Util.hashString(n,t)}(n);return this.signWithMessageHash(r,t)};e.prototype.signWithMessageHash=function(n,t){var r=ei(i.crypto.Util.getPaddedDigestInfoHex(n,t,this.n.bitLength()),16);return cu(this.doPrivate(r).toString(16),this.n.bitLength())};e.prototype.signPSS=function(n,t,r){var u=function(n){return i.crypto.Util.hashHex(n,t)}(ut(n));return void 0===r&&(r=-1),this.signWithMessageHashPSS(u,t,r)};e.prototype.signWithMessageHashPSS=function(n,t,u){var f,v=nt(n),o=v.length,y=this.n.bitLength()-1,h=Math.ceil(y/8),p=function(n){return i.crypto.Util.hashHex(n,t)},e,c,l,w;if(-1===u||void 0===u)u=o;else if(-2===u)u=h-o-2;else if(u<-2)throw new Error("invalid salt length");if(h0&&(e=new Array(u),(new yt).nextBytes(e),e=String.fromCharCode.apply(String,e)),c=nt(p(ut("\0\0\0\0\0\0\0\0"+v+e))),l=[],f=0;f>8*h-y&255,s[0]&=~w,f=0;fthis.n.bitLength()?0:(r=au(this.doPublic(u).toString(16).replace(/^1f+00/,"")),0==r.length)?!1:(f=r[0],r[1]==function(n){return i.crypto.Util.hashString(n,f)}(n))};e.prototype.verifyWithMessageHash=function(n,t){var i,r;return t.length!=Math.ceil(this.n.bitLength()/4)?!1:(i=ei(t,16),i.bitLength()>this.n.bitLength())?0:(r=au(this.doPublic(i).toString(16).replace(/^1f+00/,"")),0!=r.length&&r[1]==n)};e.prototype.verifyPSS=function(n,t,r,u){var f=function(n){return i.crypto.Util.hashHex(n,r)}(ut(n));return void 0===u&&(u=-1),this.verifyWithMessageHashPSS(f,t,r,u)};e.prototype.verifyWithMessageHashPSS=function(n,t,u,f){var o,k,c,a;if(t.length!=Math.ceil(this.n.bitLength()/4))return!1;var e,d=new r(t,16),v=function(n){return i.crypto.Util.hashHex(n,u)},y=nt(n),h=y.length,p=this.n.bitLength()-1,s=Math.ceil(p/8);if(-1===f||void 0===f)f=h;else if(-2===f)f=s-h-2;else if(f<-2)throw new Error("invalid salt length");if(s>8*s-p&255;if(l.charCodeAt(0)&b)throw new Error("bits beyond keysize not zero");for(k=lu(w,l.length,v),c=[],e=0;e0&&-1==(":"+r.join(":")+":").indexOf(":"+o+":"))throw"algorithm '"+o+"' not accepted in the list";if("none"!=o&&null===t)throw"key shall be specified to verify.";if("string"==typeof t&&-1!=t.indexOf("-----BEGIN ")&&(t=l.getKey(t)),!("RS"!=h&&"PS"!=h||t instanceof g))throw"key shall be a RSAKey obj for RS* and PS* algs";if("ES"==h&&!(t instanceof tt))throw"key shall be a ECDSA obj for ES* algs";if(u=null,void 0===a.jwsalg2sigalg[b.alg])throw"unsupported alg name: "+o;if("none"==(u=a.jwsalg2sigalg[o]))throw"not supported";if("Hmac"==u.substr(0,4)){if(void 0===t)throw"hexadecimal key shall be specified for HMAC";return k=new ft({alg:u,pass:t}),k.updateString(y),p==k.doFinal()}if(-1!=u.indexOf("withECDSA")){d=null;try{d=tt.concatSigToASN1Sig(p)}catch(n){return!1}return(s=new it({alg:u})).init(t),s.updateString(y),s.verify(d)}return(s=new it({alg:u})).init(t),s.updateString(y),s.verify(p)};i.jws.JWS.parse=function(n){var e,u,f,r=n.split("."),t={};if(2!=r.length&&3!=r.length)throw"malformed sJWS: wrong number of '.' splitted elements";return e=r[0],u=r[1],3==r.length&&(f=r[2]),t.headerObj=i.jws.JWS.readSafeJSONString(rt(e)),t.payloadObj=i.jws.JWS.readSafeJSONString(rt(u)),t.headerPP=JSON.stringify(t.headerObj,null," "),t.payloadPP=null==t.payloadObj?rt(u):JSON.stringify(t.payloadObj,null," "),void 0!==f&&(t.sigHex=c(f)),t};i.jws.JWS.verifyJWT=function(n,t,r){var h=i.jws,e=h.JWS,l=e.readSafeJSONString,o=e.inArray,v=e.includedArray,s=n.split("."),y=s[0],p=s[1],a=(c(s[2]),l(rt(y))),u=l(rt(p)),f;if(void 0===a.alg)return!1;if(void 0===r.alg)throw"acceptField.alg shall be specified";if(!o(a.alg,r.alg)||void 0!==u.iss&&"object"===w(r.iss)&&!o(u.iss,r.iss)||void 0!==u.sub&&"object"===w(r.sub)&&!o(u.sub,r.sub))return!1;if(void 0!==u.aud&&"object"===w(r.aud))if("string"==typeof u.aud){if(!o(u.aud,r.aud))return!1}else if("object"==w(u.aud)&&!v(u.aud,r.aud))return!1;return f=h.IntDate.getNow(),void 0!==r.verifyAt&&"number"==typeof r.verifyAt&&(f=r.verifyAt),void 0!==r.gracePeriod&&"number"==typeof r.gracePeriod||(r.gracePeriod=0),!(void 0!==u.exp&&"number"==typeof u.exp&&u.exp+r.gracePeriodt.length&&(r=t.length),i=0;i
- * @license MIT
- */
-function h(){return r.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function e(n,t){if(h()=h())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+h().toString(16)+" bytes");return 0|n}function tt(n,t){var i,u;if(r.isBuffer(n))return n.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(n)||n instanceof ArrayBuffer))return n.byteLength;if("string"!=typeof n&&(n=""+n),i=n.length,0===i)return 0;for(u=!1;;)switch(t){case"ascii":case"latin1":case"binary":return i;case"utf8":case"utf-8":case void 0:return a(n).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*i;case"hex":return i>>>1;case"base64":return ct(n).length;default:if(u)return a(n).length;t=(""+t).toLowerCase();u=!0}}function lt(n,t,i){var r=!1;if(((void 0===t||t<0)&&(t=0),t>this.length)||((void 0===i||i>this.length)&&(i=this.length),i<=0)||(i>>>=0)<=(t>>>=0))return"";for(n||(n="utf8");;)switch(n){case"hex":return gt(this,t,i);case"utf8":case"utf-8":return ft(this,t,i);case"ascii":return kt(this,t,i);case"latin1":case"binary":return dt(this,t,i);case"base64":return bt(this,t,i);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return ni(this,t,i);default:if(r)throw new TypeError("Unknown encoding: "+n);n=(n+"").toLowerCase();r=!0}}function o(n,t,i){var r=n[t];n[t]=n[i];n[i]=r}function it(n,t,i,u,f){if(0===n.length)return-1;if("string"==typeof i?(u=i,i=0):i>2147483647?i=2147483647:i<-2147483648&&(i=-2147483648),i=+i,isNaN(i)&&(i=f?0:n.length-1),i<0&&(i=n.length+i),i>=n.length){if(f)return-1;i=n.length-1}else if(i<0){if(!f)return-1;i=0}if("string"==typeof t&&(t=r.from(t,u)),r.isBuffer(t))return 0===t.length?-1:rt(n,t,i,u,f);if("number"==typeof t)return t&=255,r.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?f?Uint8Array.prototype.indexOf.call(n,t,i):Uint8Array.prototype.lastIndexOf.call(n,t,i):rt(n,[t],i,u,f);throw new TypeError("val must be string, number or Buffer");}function rt(n,t,i,r,u){function l(n,t){return 1===h?n[t]:n.readUInt16BE(t*h)}var f,h=1,c=n.length,o=t.length,e,a,s;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(n.length<2||t.length<2)return-1;h=2;c/=2;o/=2;i/=2}if(u)for(e=-1,f=i;fc&&(i=c-o),f=i;f>=0;f--){for(a=!0,s=0;sf&&(r=f):r=f,e=t.length,e%2!=0)throw new TypeError("Invalid hex string");for(r>e/2&&(r=e/2),u=0;u>8,e=u%256,i.push(e),i.push(f);return i}(t,n.length-i),n,i,r)}function bt(n,t,i){return 0===t&&i===n.length?y.fromByteArray(n):y.fromByteArray(n.slice(t,i))}function ft(n,t,i){var h,u;for(i=Math.min(n.length,i),h=[],u=t;u239?4:o>223?3:o>191?2:1;if(u+c<=i)switch(c){case 1:o<128&&(r=o);break;case 2:128==(192&(e=n[u+1]))&&(f=(31&o)<<6|63&e)>127&&(r=f);break;case 3:e=n[u+1];s=n[u+2];128==(192&e)&&128==(192&s)&&(f=(15&o)<<12|(63&e)<<6|63&s)>2047&&(f<55296||f>57343)&&(r=f);break;case 4:e=n[u+1];s=n[u+2];l=n[u+3];128==(192&e)&&128==(192&s)&&128==(192&l)&&(f=(15&o)<<18|(63&e)<<12|(63&s)<<6|63&l)>65535&&f<1114112&&(r=f)}null===r?(r=65533,c=1):r>65535&&(r-=65536,h.push(r>>>10&1023|55296),r=56320|1023&r);h.push(r);u+=c}return function(n){var r=n.length,i,t;if(r<=k)return String.fromCharCode.apply(String,n);for(i="",t=0;tf)&&(i=f),u="",r=t;ri)throw new RangeError("Trying to access beyond buffer length");}function f(n,t,i,u,f,e){if(!r.isBuffer(n))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>f||tn.length)throw new RangeError("Index out of range");}function c(n,t,i,r){t<0&&(t=65535+t+1);for(var u=0,f=Math.min(n.length-i,2);u>>8*(r?u:1-u)}function l(n,t,i,r){t<0&&(t=4294967295+t+1);for(var u=0,f=Math.min(n.length-i,4);u>>8*(r?u:3-u)&255}function et(n,t,i,r){if(i+r>n.length)throw new RangeError("Index out of range");if(i<0)throw new RangeError("Index out of range");}function ot(n,t,i,r,u){return u||et(n,0,i,4),s.write(n,t,i,r,23,4),i+4}function st(n,t,i,r,u){return u||et(n,0,i,8),s.write(n,t,i,r,52,8),i+8}function ti(n){return n<16?"0"+n.toString(16):n.toString(16)}function a(n,t){var i;t=t||1/0;for(var e=n.length,u=null,r=[],f=0;f55295&&i<57344){if(!u){if(i>56319){(t-=3)>-1&&r.push(239,191,189);continue}if(f+1===e){(t-=3)>-1&&r.push(239,191,189);continue}u=i;continue}if(i<56320){(t-=3)>-1&&r.push(239,191,189);u=i;continue}i=65536+(u-55296<<10|i-56320)}else u&&(t-=3)>-1&&r.push(239,191,189);if(u=null,i<128){if((t-=1)<0)break;r.push(i)}else if(i<2048){if((t-=2)<0)break;r.push(i>>6|192,63&i|128)}else if(i<65536){if((t-=3)<0)break;r.push(i>>12|224,i>>6&63|128,63&i|128)}else{if(!(i<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;r.push(i>>18|240,i>>12&63|128,i>>6&63|128,63&i|128)}}return r}function ct(n){return y.toByteArray(function(n){if((n=function(n){return n.trim?n.trim():n.replace(/^\s+|\s+$/g,"")}(n).replace(ht,"")).length<2)return"";for(;n.length%4!=0;)n+="=";return n}(n))}function v(n,t,i,r){for(var u=0;u=t.length||u>=n.length);++u)t[u+i]=n[u];return u}var y=i(30),s=i(31),d=i(32),k,ht;t.Buffer=r;t.SlowBuffer=function(n){return+n!=n&&(n=0),r.alloc(+n)};t.INSPECT_MAX_BYTES=50;r.TYPED_ARRAY_SUPPORT=void 0!==n.TYPED_ARRAY_SUPPORT?n.TYPED_ARRAY_SUPPORT:function(){try{var n=new Uint8Array(1);return n.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===n.foo()&&"function"==typeof n.subarray&&0===n.subarray(1,1).byteLength}catch(n){return!1}}();t.kMaxLength=h();r.poolSize=8192;r._augment=function(n){return n.__proto__=r.prototype,n};r.from=function(n,t,i){return g(null,n,t,i)};r.TYPED_ARRAY_SUPPORT&&(r.prototype.__proto__=Uint8Array.prototype,r.__proto__=Uint8Array,"undefined"!=typeof Symbol&&Symbol.species&&r[Symbol.species]===r&&Object.defineProperty(r,Symbol.species,{value:null,configurable:!0}));r.alloc=function(n,t,i){return function(n,t,i,r){return nt(t),t<=0?e(n,t):void 0!==i?"string"==typeof r?e(n,t).fill(i,r):e(n,t).fill(i):e(n,t)}(null,n,t,i)};r.allocUnsafe=function(n){return p(null,n)};r.allocUnsafeSlow=function(n){return p(null,n)};r.isBuffer=function(n){return!(null==n||!n._isBuffer)};r.compare=function(n,t){if(!r.isBuffer(n)||!r.isBuffer(t))throw new TypeError("Arguments must be Buffers");if(n===t)return 0;for(var u=n.length,f=t.length,i=0,e=Math.min(u,f);i0&&(n=this.toString("hex",0,i).match(/.{2}/g).join(" "),this.length>i&&(n+=" ... ")),""};r.prototype.compare=function(n,t,i,u,f){if(!r.isBuffer(n))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===i&&(i=n?n.length:0),void 0===u&&(u=0),void 0===f&&(f=this.length),t<0||i>n.length||u<0||f>this.length)throw new RangeError("out of range index");if(u>=f&&t>=i)return 0;if(u>=f)return-1;if(t>=i)return 1;if(this===n)return 0;for(var o=(f>>>=0)-(u>>>=0),s=(i>>>=0)-(t>>>=0),l=Math.min(o,s),h=this.slice(u,f),c=n.slice(t,i),e=0;eu)&&(i=u),n.length>0&&(i<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");for(r||(r="utf8"),f=!1;;)switch(r){case"hex":return at(this,n,t,i);case"utf8":case"utf-8":return vt(this,n,t,i);case"ascii":return ut(this,n,t,i);case"latin1":case"binary":return yt(this,n,t,i);case"base64":return pt(this,n,t,i);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return wt(this,n,t,i);default:if(f)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase();f=!0}};r.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};k=4096;r.prototype.slice=function(n,t){var f,i=this.length,e,u;if((n=~~n)<0?(n+=i)<0&&(n=0):n>i&&(n=i),(t=void 0===t?i:~~t)<0?(t+=i)<0&&(t=0):t>i&&(t=i),t0&&(f*=256);)r+=this[n+--t]*f;return r};r.prototype.readUInt8=function(n,t){return t||u(n,1,this.length),this[n]};r.prototype.readUInt16LE=function(n,t){return t||u(n,2,this.length),this[n]|this[n+1]<<8};r.prototype.readUInt16BE=function(n,t){return t||u(n,2,this.length),this[n]<<8|this[n+1]};r.prototype.readUInt32LE=function(n,t){return t||u(n,4,this.length),(this[n]|this[n+1]<<8|this[n+2]<<16)+16777216*this[n+3]};r.prototype.readUInt32BE=function(n,t){return t||u(n,4,this.length),16777216*this[n]+(this[n+1]<<16|this[n+2]<<8|this[n+3])};r.prototype.readIntLE=function(n,t,i){n|=0;t|=0;i||u(n,t,this.length);for(var r=this[n],f=1,e=0;++e=(f*=128)&&(r-=Math.pow(2,8*t)),r};r.prototype.readIntBE=function(n,t,i){n|=0;t|=0;i||u(n,t,this.length);for(var f=t,e=1,r=this[n+--f];f>0&&(e*=256);)r+=this[n+--f]*e;return r>=(e*=128)&&(r-=Math.pow(2,8*t)),r};r.prototype.readInt8=function(n,t){return t||u(n,1,this.length),128&this[n]?-1*(256-this[n]):this[n]};r.prototype.readInt16LE=function(n,t){t||u(n,2,this.length);var i=this[n]|this[n+1]<<8;return 32768&i?4294901760|i:i};r.prototype.readInt16BE=function(n,t){t||u(n,2,this.length);var i=this[n+1]|this[n]<<8;return 32768&i?4294901760|i:i};r.prototype.readInt32LE=function(n,t){return t||u(n,4,this.length),this[n]|this[n+1]<<8|this[n+2]<<16|this[n+3]<<24};r.prototype.readInt32BE=function(n,t){return t||u(n,4,this.length),this[n]<<24|this[n+1]<<16|this[n+2]<<8|this[n+3]};r.prototype.readFloatLE=function(n,t){return t||u(n,4,this.length),s.read(this,n,!0,23,4)};r.prototype.readFloatBE=function(n,t){return t||u(n,4,this.length),s.read(this,n,!1,23,4)};r.prototype.readDoubleLE=function(n,t){return t||u(n,8,this.length),s.read(this,n,!0,52,8)};r.prototype.readDoubleBE=function(n,t){return t||u(n,8,this.length),s.read(this,n,!1,52,8)};r.prototype.writeUIntLE=function(n,t,i,r){n=+n;t|=0;i|=0;r||f(this,n,t,i,Math.pow(2,8*i)-1,0);var u=1,e=0;for(this[t]=255&n;++e=0&&(e*=256);)this[t+u]=n/e&255;return t+i};r.prototype.writeUInt8=function(n,t,i){return n=+n,t|=0,i||f(this,n,t,1,255,0),r.TYPED_ARRAY_SUPPORT||(n=Math.floor(n)),this[t]=255&n,t+1};r.prototype.writeUInt16LE=function(n,t,i){return n=+n,t|=0,i||f(this,n,t,2,65535,0),r.TYPED_ARRAY_SUPPORT?(this[t]=255&n,this[t+1]=n>>>8):c(this,n,t,!0),t+2};r.prototype.writeUInt16BE=function(n,t,i){return n=+n,t|=0,i||f(this,n,t,2,65535,0),r.TYPED_ARRAY_SUPPORT?(this[t]=n>>>8,this[t+1]=255&n):c(this,n,t,!1),t+2};r.prototype.writeUInt32LE=function(n,t,i){return n=+n,t|=0,i||f(this,n,t,4,4294967295,0),r.TYPED_ARRAY_SUPPORT?(this[t+3]=n>>>24,this[t+2]=n>>>16,this[t+1]=n>>>8,this[t]=255&n):l(this,n,t,!0),t+4};r.prototype.writeUInt32BE=function(n,t,i){return n=+n,t|=0,i||f(this,n,t,4,4294967295,0),r.TYPED_ARRAY_SUPPORT?(this[t]=n>>>24,this[t+1]=n>>>16,this[t+2]=n>>>8,this[t+3]=255&n):l(this,n,t,!1),t+4};r.prototype.writeIntLE=function(n,t,i,r){var u;(n=+n,t|=0,r)||(u=Math.pow(2,8*i-1),f(this,n,t,i,u-1,-u));var e=0,s=1,o=0;for(this[t]=255&n;++e=0&&(s*=256);)n<0&&0===o&&0!==this[t+u+1]&&(o=1),this[t+u]=(n/s|0)-o&255;return t+i};r.prototype.writeInt8=function(n,t,i){return n=+n,t|=0,i||f(this,n,t,1,127,-128),r.TYPED_ARRAY_SUPPORT||(n=Math.floor(n)),n<0&&(n=255+n+1),this[t]=255&n,t+1};r.prototype.writeInt16LE=function(n,t,i){return n=+n,t|=0,i||f(this,n,t,2,32767,-32768),r.TYPED_ARRAY_SUPPORT?(this[t]=255&n,this[t+1]=n>>>8):c(this,n,t,!0),t+2};r.prototype.writeInt16BE=function(n,t,i){return n=+n,t|=0,i||f(this,n,t,2,32767,-32768),r.TYPED_ARRAY_SUPPORT?(this[t]=n>>>8,this[t+1]=255&n):c(this,n,t,!1),t+2};r.prototype.writeInt32LE=function(n,t,i){return n=+n,t|=0,i||f(this,n,t,4,2147483647,-2147483648),r.TYPED_ARRAY_SUPPORT?(this[t]=255&n,this[t+1]=n>>>8,this[t+2]=n>>>16,this[t+3]=n>>>24):l(this,n,t,!0),t+4};r.prototype.writeInt32BE=function(n,t,i){return n=+n,t|=0,i||f(this,n,t,4,2147483647,-2147483648),n<0&&(n=4294967295+n+1),r.TYPED_ARRAY_SUPPORT?(this[t]=n>>>24,this[t+1]=n>>>16,this[t+2]=n>>>8,this[t+3]=255&n):l(this,n,t,!1),t+4};r.prototype.writeFloatLE=function(n,t,i){return ot(this,n,t,!0,i)};r.prototype.writeFloatBE=function(n,t,i){return ot(this,n,t,!1,i)};r.prototype.writeDoubleLE=function(n,t,i){return st(this,n,t,!0,i)};r.prototype.writeDoubleBE=function(n,t,i){return st(this,n,t,!1,i)};r.prototype.copy=function(n,t,i,u){if((i||(i=0),u||0===u||(u=this.length),t>=n.length&&(t=n.length),t||(t=0),u>0&&u=this.length)throw new RangeError("sourceStart out of bounds");if(u<0)throw new RangeError("sourceEnd out of bounds");u>this.length&&(u=this.length);n.length-t=0;--f)n[f+t]=this[f+i];else if(e<1e3||!r.TYPED_ARRAY_SUPPORT)for(f=0;f>>=0,i=void 0===i?this.length:i>>>0,n||(n=0),"number"==typeof n)for(f=t;f0)throw new Error("Invalid string. Length must be a multiple of 4");return t=n.indexOf("="),-1===t&&(t=i),[t,t===i?0:4-t%4]}function s(n,t,i){for(var e,f,o=[],u=t;u>18&63]+r[f>>12&63]+r[f>>6&63]+r[63&f]);return o.join("")}t.byteLength=function(n){var t=e(n),r=t[0],i=t[1];return 3*(r+i)/4-i};t.toByteArray=function(n){for(var r,c=e(n),h=c[0],s=c[1],u=new o(function(n,t,i){return 3*(t+i)/4-i}(0,h,s)),f=0,l=s>0?h-4:h,t=0;t>16&255,u[f++]=r>>8&255,u[f++]=255&r;return 2===s&&(r=i[n.charCodeAt(t)]<<2|i[n.charCodeAt(t+1)]>>4,u[f++]=255&r),1===s&&(r=i[n.charCodeAt(t)]<<10|i[n.charCodeAt(t+1)]<<4|i[n.charCodeAt(t+2)]>>2,u[f++]=r>>8&255,u[f++]=255&r),u};t.fromByteArray=function(n){for(var t,i=n.length,e=i%3,f=[],o=16383,u=0,h=i-e;uh?h:u+o));return 1===e?(t=n[i-1],f.push(r[t>>2]+r[t<<4&63]+"==")):2===e&&(t=(n[i-2]<<8)+n[i-1],f.push(r[t>>10]+r[t>>4&63]+r[t<<2&63]+"=")),f.join("")};for(var r=[],i=[],o="undefined"!=typeof Uint8Array?Uint8Array:Array,f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",u=0;u<64;++u)r[u]=f[u],i[f.charCodeAt(u)]=u;i["-".charCodeAt(0)]=62;i["_".charCodeAt(0)]=63},function(n,t){
-/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */
-t.read=function(n,t,i,r,u){var f,o,l=8*u-r-1,a=(1<>1,e=-7,s=i?u-1:0,c=i?-1:1,h=n[t+s];for(s+=c,f=h&(1<<-e)-1,h>>=-e,e+=l;e>0;f=256*f+n[t+s],s+=c,e-=8);for(o=f&(1<<-e)-1,f>>=-e,e+=r;e>0;o=256*o+n[t+s],s+=c,e-=8);if(0===f)f=1-v;else{if(f===a)return o?NaN:1/0*(h?-1:1);o+=Math.pow(2,r);f-=v}return(h?-1:1)*o*Math.pow(2,f-r)};t.write=function(n,t,i,r,u,f){var e,o,s,l=8*f-u-1,a=(1<>1,y=23===u?Math.pow(2,-24)-Math.pow(2,-77):0,c=r?0:f-1,v=r?1:-1,p=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(o=isNaN(t)?1:0,e=a):(e=Math.floor(Math.log(t)/Math.LN2),t*(s=Math.pow(2,-e))<1&&(e--,s*=2),(t+=e+h>=1?y/s:y*Math.pow(2,1-h))*s>=2&&(e++,s/=2),e+h>=a?(o=0,e=a):e+h>=1?(o=(t*s-1)*Math.pow(2,u),e+=h):(o=t*Math.pow(2,h-1)*Math.pow(2,u),e=0));u>=8;n[i+c]=255&o,c+=v,o/=256,u-=8);for(e=e<0;n[i+c]=255&e,c+=v,e/=256,l-=8);n[i+c-v]|=128*p}},function(n){var t={}.toString;n.exports=Array.isArray||function(n){return"[object Array]"==t.call(n)}},function(n,t,i){Object.defineProperty(t,"__esModule",{value:!0});t.default=function(n){var t=n.jws,i=n.KeyUtil,u=n.X509,f=n.crypto,e=n.hextob64u,o=n.b64tohex,s=n.AllowedSigningAlgs;return function(){function n(){!function(n,t){if(!(n instanceof t))throw new TypeError("Cannot call a class as a function");}(this,n)}return n.parseJwt=function(n){r.Log.debug("JoseUtil.parseJwt");try{var i=t.JWS.parse(n);return{header:i.headerObj,payload:i.payloadObj}}catch(u){r.Log.error(u)}},n.validateJwt=function(t,f,e,s,h,c,l){r.Log.debug("JoseUtil.validateJwt");try{if("RSA"===f.kty)if(f.e&&f.n)f=i.getKey(f);else{if(!f.x5c||!f.x5c.length)return r.Log.error("JoseUtil.validateJwt: RSA key missing key material",f),Promise.reject(new Error("RSA key missing key material"));var a=o(f.x5c[0]);f=u.getPublicKeyFromCertHex(a)}else{if("EC"!==f.kty)return r.Log.error("JoseUtil.validateJwt: Unsupported key type",f&&f.kty),Promise.reject(new Error(f.kty));if(!(f.crv&&f.x&&f.y))return r.Log.error("JoseUtil.validateJwt: EC key missing key material",f),Promise.reject(new Error("EC key missing key material"));f=i.getKey(f)}return n._validateJwt(t,f,e,s,h,c,l)}catch(n){return r.Log.error(n&&n.message||n),Promise.reject("JWT validation failed")}},n.validateJwtAttributes=function(t,i,u,f,e,o){var s,h,c;if(f||(f=0),e||(e=parseInt(Date.now()/1e3)),s=n.parseJwt(t).payload,!s.iss)return r.Log.error("JoseUtil._validateJwt: issuer was not provided"),Promise.reject(new Error("issuer was not provided"));if(s.iss!==i)return r.Log.error("JoseUtil._validateJwt: Invalid issuer in token",s.iss),Promise.reject(new Error("Invalid issuer in token: "+s.iss));if(!s.aud)return r.Log.error("JoseUtil._validateJwt: aud was not provided"),Promise.reject(new Error("aud was not provided"));if(!(s.aud===u||Array.isArray(s.aud)&&s.aud.indexOf(u)>=0))return r.Log.error("JoseUtil._validateJwt: Invalid audience in token",s.aud),Promise.reject(new Error("Invalid audience in token: "+s.aud));if(s.azp&&s.azp!==u)return r.Log.error("JoseUtil._validateJwt: Invalid azp in token",s.azp),Promise.reject(new Error("Invalid azp in token: "+s.azp));if(!o){if(h=e+f,c=e-f,!s.iat)return r.Log.error("JoseUtil._validateJwt: iat was not provided"),Promise.reject(new Error("iat was not provided"));if(h1&&void 0!==arguments[1]?arguments[1]:"#",i;!function(n,t){if(!(n instanceof t))throw new TypeError("Cannot call a class as a function");}(this,n);i=u.UrlUtility.parseUrlFragment(t,r);this.error=i.error;this.error_description=i.error_description;this.error_uri=i.error_uri;this.code=i.code;this.state=i.state;this.id_token=i.id_token;this.session_state=i.session_state;this.access_token=i.access_token;this.token_type=i.token_type;this.scope=i.scope;this.profile=void 0;this.expires_in=i.expires_in}return r(n,[{key:"expires_in",get:function(){if(this.expires_at){var n=parseInt(Date.now()/1e3);return this.expires_at-n}},set:function(n){var t=parseInt(n),i;"number"==typeof t&&t>0&&(i=parseInt(Date.now()/1e3),this.expires_at=i+t)}},{key:"expired",get:function(){var n=this.expires_in;if(void 0!==n)return n<=0}},{key:"scopes",get:function(){return(this.scope||"").split(" ")}},{key:"isOpenIdConnect",get:function(){return this.scopes.indexOf("openid")>=0||!!this.id_token}}]),n}()},function(n,t,i){Object.defineProperty(t,"__esModule",{value:!0});t.SignoutRequest=void 0;var u=i(0),r=i(3),f=i(9);t.SignoutRequest=function n(t){var i=t.url,o=t.id_token_hint,s=t.post_logout_redirect_uri,h=t.data,c=t.extraQueryParams,l=t.request_type,e;if(function(n,t){if(!(n instanceof t))throw new TypeError("Cannot call a class as a function");}(this,n),!i)throw u.Log.error("SignoutRequest.ctor: No url passed"),new Error("url");for(e in o&&(i=r.UrlUtility.addQueryParam(i,"id_token_hint",o)),s&&(i=r.UrlUtility.addQueryParam(i,"post_logout_redirect_uri",s),h&&(this.state=new f.State({data:h,request_type:l}),i=r.UrlUtility.addQueryParam(i,"state",this.state.id))),c)i=r.UrlUtility.addQueryParam(i,e,c[e]);this.url=i}},function(n,t,i){Object.defineProperty(t,"__esModule",{value:!0});t.SignoutResponse=void 0;var r=i(3);t.SignoutResponse=function n(t){!function(n,t){if(!(n instanceof t))throw new TypeError("Cannot call a class as a function");}(this,n);var i=r.UrlUtility.parseUrlFragment(t,"?");this.error=i.error;this.error_description=i.error_description;this.error_uri=i.error_uri;this.state=i.state}},function(n,t,i){Object.defineProperty(t,"__esModule",{value:!0});t.InMemoryWebStorage=void 0;var u=function(){function n(n,t){for(var i,r=0;r0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:h.SilentRenewService,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:c.SessionMonitor,l=arguments.length>3&&void 0!==arguments[3]?arguments[3]:a.TokenRevocationClient,p=arguments.length>4&&void 0!==arguments[4]?arguments[4]:v.TokenClient,w=arguments.length>5&&void 0!==arguments[5]?arguments[5]:y.JoseUtil,i;return function(n,t){if(!(n instanceof t))throw new TypeError("Cannot call a class as a function");}(this,t),f instanceof u.UserManagerSettings||(f=new u.UserManagerSettings(f)),i=function(n,t){if(!n)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?n:t}(this,n.call(this,f)),i._events=new s.UserManagerEvents(f),i._silentRenewService=new e(i),i.settings.automaticSilentRenew&&(r.Log.debug("UserManager.ctor: automaticSilentRenew is configured, setting up silent renew"),i.startSilentRenew()),i.settings.monitorSession&&(r.Log.debug("UserManager.ctor: monitorSession is configured, setting up session monitor"),i._sessionMonitor=new o(i)),i._tokenRevocationClient=new l(i._settings),i._tokenClient=new p(i._settings),i._joseUtil=w,i}return function(n,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);n.prototype=Object.create(t&&t.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}});t&&(Object.setPrototypeOf?Object.setPrototypeOf(n,t):n.__proto__=t)}(t,n),t.prototype.getUser=function(){var n=this;return this._loadUser().then(function(t){return t?(r.Log.info("UserManager.getUser: user loaded"),n._events.load(t,!1),t):(r.Log.info("UserManager.getUser: user not found in storage"),null)})},t.prototype.removeUser=function(){var n=this;return this.storeUser(null).then(function(){r.Log.info("UserManager.removeUser: user removed from storage");n._events.unload()})},t.prototype.signinRedirect=function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t;return(n=Object.assign({},n)).request_type="si:r",t={useReplaceToNavigate:n.useReplaceToNavigate},this._signinStart(n,this._redirectNavigator,t).then(function(){r.Log.info("UserManager.signinRedirect: successful")})},t.prototype.signinRedirectCallback=function(n){return this._signinEnd(n||this._redirectNavigator.url).then(function(n){return n.profile&&n.profile.sub?r.Log.info("UserManager.signinRedirectCallback: successful, signed in sub: ",n.profile.sub):r.Log.info("UserManager.signinRedirectCallback: no sub"),n})},t.prototype.signinPopup=function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t;return(n=Object.assign({},n)).request_type="si:p",t=n.redirect_uri||this.settings.popup_redirect_uri||this.settings.redirect_uri,t?(n.redirect_uri=t,n.display="popup",this._signin(n,this._popupNavigator,{startUrl:t,popupWindowFeatures:n.popupWindowFeatures||this.settings.popupWindowFeatures,popupWindowTarget:n.popupWindowTarget||this.settings.popupWindowTarget}).then(function(n){return n&&(n.profile&&n.profile.sub?r.Log.info("UserManager.signinPopup: signinPopup successful, signed in sub: ",n.profile.sub):r.Log.info("UserManager.signinPopup: no sub")),n})):(r.Log.error("UserManager.signinPopup: No popup_redirect_uri or redirect_uri configured"),Promise.reject(new Error("No popup_redirect_uri or redirect_uri configured")))},t.prototype.signinPopupCallback=function(n){return this._signinCallback(n,this._popupNavigator).then(function(n){return n&&(n.profile&&n.profile.sub?r.Log.info("UserManager.signinPopupCallback: successful, signed in sub: ",n.profile.sub):r.Log.info("UserManager.signinPopupCallback: no sub")),n}).catch(function(n){r.Log.error(n.message)})},t.prototype.signinSilent=function(){var t=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return n=Object.assign({},n),this._loadUser().then(function(i){return i&&i.refresh_token?(n.refresh_token=i.refresh_token,t._useRefreshToken(n)):(n.request_type="si:s",n.id_token_hint=n.id_token_hint||t.settings.includeIdTokenInSilentRenew&&i&&i.id_token,i&&t._settings.validateSubOnSilentRenew&&(r.Log.debug("UserManager.signinSilent, subject prior to silent renew: ",i.profile.sub),n.current_sub=i.profile.sub),t._signinSilentIframe(n))})},t.prototype._useRefreshToken=function(){var n=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this._tokenClient.exchangeRefreshToken(t).then(function(t){return t?t.access_token?n._loadUser().then(function(i){if(i){var u=Promise.resolve();return t.id_token&&(u=n._validateIdTokenFromTokenRefreshToken(i.profile,t.id_token)),u.then(function(){return r.Log.debug("UserManager._useRefreshToken: refresh token response success"),i.id_token=t.id_token||i.id_token,i.access_token=t.access_token,i.refresh_token=t.refresh_token||i.refresh_token,i.expires_in=t.expires_in,n.storeUser(i).then(function(){return n._events.load(i),i})})}return null}):(r.Log.error("UserManager._useRefreshToken: No access token returned from token endpoint"),Promise.reject("No access token returned from token endpoint")):(r.Log.error("UserManager._useRefreshToken: No response returned from token endpoint"),Promise.reject("No response returned from token endpoint"))})},t.prototype._validateIdTokenFromTokenRefreshToken=function(n,t){var i=this;return this._metadataService.getIssuer().then(function(u){return i.settings.getEpochTime().then(function(f){return i._joseUtil.validateJwtAttributes(t,u,i._settings.client_id,i._settings.clockSkew,f).then(function(t){return t?t.sub!==n.sub?(r.Log.error("UserManager._validateIdTokenFromTokenRefreshToken: sub in id_token does not match current sub"),Promise.reject(new Error("sub in id_token does not match current sub"))):t.auth_time&&t.auth_time!==n.auth_time?(r.Log.error("UserManager._validateIdTokenFromTokenRefreshToken: auth_time in id_token does not match original auth_time"),Promise.reject(new Error("auth_time in id_token does not match original auth_time"))):t.azp&&t.azp!==n.azp?(r.Log.error("UserManager._validateIdTokenFromTokenRefreshToken: azp in id_token does not match original azp"),Promise.reject(new Error("azp in id_token does not match original azp"))):!t.azp&&n.azp?(r.Log.error("UserManager._validateIdTokenFromTokenRefreshToken: azp not in id_token, but present in original id_token"),Promise.reject(new Error("azp not in id_token, but present in original id_token"))):void 0:(r.Log.error("UserManager._validateIdTokenFromTokenRefreshToken: Failed to validate id_token"),Promise.reject(new Error("Failed to validate id_token")))})})})},t.prototype._signinSilentIframe=function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=n.redirect_uri||this.settings.silent_redirect_uri||this.settings.redirect_uri;return t?(n.redirect_uri=t,n.prompt=n.prompt||"none",this._signin(n,this._iframeNavigator,{startUrl:t,silentRequestTimeout:n.silentRequestTimeout||this.settings.silentRequestTimeout}).then(function(n){return n&&(n.profile&&n.profile.sub?r.Log.info("UserManager.signinSilent: successful, signed in sub: ",n.profile.sub):r.Log.info("UserManager.signinSilent: no sub")),n})):(r.Log.error("UserManager.signinSilent: No silent_redirect_uri configured"),Promise.reject(new Error("No silent_redirect_uri configured")))},t.prototype.signinSilentCallback=function(n){return this._signinCallback(n,this._iframeNavigator).then(function(n){return n&&(n.profile&&n.profile.sub?r.Log.info("UserManager.signinSilentCallback: successful, signed in sub: ",n.profile.sub):r.Log.info("UserManager.signinSilentCallback: no sub")),n})},t.prototype.signinCallback=function(n){var t=this;return this.readSigninResponseState(n).then(function(i){var r=i.state;return"si:r"===r.request_type?t.signinRedirectCallback(n):"si:p"===r.request_type?t.signinPopupCallback(n):"si:s"===r.request_type?t.signinSilentCallback(n):Promise.reject(new Error("invalid response_type in state"))})},t.prototype.signoutCallback=function(n,t){var i=this;return this.readSignoutResponseState(n).then(function(r){var u=r.state,f=r.response;return u?"so:r"===u.request_type?i.signoutRedirectCallback(n):"so:p"===u.request_type?i.signoutPopupCallback(n,t):Promise.reject(new Error("invalid response_type in state")):f})},t.prototype.querySessionStatus=function(){var i=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t;return(n=Object.assign({},n)).request_type="si:s",t=n.redirect_uri||this.settings.silent_redirect_uri||this.settings.redirect_uri,t?(n.redirect_uri=t,n.prompt="none",n.response_type=n.response_type||this.settings.query_status_response_type,n.scope=n.scope||"openid",n.skipUserInfo=!0,this._signinStart(n,this._iframeNavigator,{startUrl:t,silentRequestTimeout:n.silentRequestTimeout||this.settings.silentRequestTimeout}).then(function(n){return i.processSigninResponse(n.url).then(function(n){if(r.Log.debug("UserManager.querySessionStatus: got signin response"),n.session_state&&n.profile.sub)return r.Log.info("UserManager.querySessionStatus: querySessionStatus success for sub: ",n.profile.sub),{session_state:n.session_state,sub:n.profile.sub,sid:n.profile.sid};r.Log.info("querySessionStatus successful, user not authenticated")}).catch(function(n){if(n.session_state&&i.settings.monitorAnonymousSession&&("login_required"==n.message||"consent_required"==n.message||"interaction_required"==n.message||"account_selection_required"==n.message))return r.Log.info("UserManager.querySessionStatus: querySessionStatus success for anonymous user"),{session_state:n.session_state};throw n;})})):(r.Log.error("UserManager.querySessionStatus: No silent_redirect_uri configured"),Promise.reject(new Error("No silent_redirect_uri configured")))},t.prototype._signin=function(n,t){var i=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this._signinStart(n,t,r).then(function(t){return i._signinEnd(t.url,n)})},t.prototype._signinStart=function(n,t){var u=this,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return t.prepare(i).then(function(t){return r.Log.debug("UserManager._signinStart: got navigator window handle"),u.createSigninRequest(n).then(function(n){return r.Log.debug("UserManager._signinStart: got signin request"),i.url=n.url,i.id=n.state.id,t.navigate(i)}).catch(function(n){throw t.close&&(r.Log.debug("UserManager._signinStart: Error after preparing navigator, closing navigator window"),t.close()),n;})})},t.prototype._signinEnd=function(n){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.processSigninResponse(n).then(function(n){r.Log.debug("UserManager._signinEnd: got signin response");var u=new f.User(n);if(i.current_sub){if(i.current_sub!==u.profile.sub)return r.Log.debug("UserManager._signinEnd: current user does not match user returned from signin. sub from signin: ",u.profile.sub),Promise.reject(new Error("login_required"));r.Log.debug("UserManager._signinEnd: current user matches user returned from signin")}return t.storeUser(u).then(function(){return r.Log.debug("UserManager._signinEnd: user stored"),t._events.load(u),u})})},t.prototype._signinCallback=function(n,t){r.Log.debug("UserManager._signinCallback");var i="query"===this._settings.response_mode||!this._settings.response_mode&&l.SigninRequest.isCode(this._settings.response_type)?"?":"#";return t.callback(n,void 0,i)},t.prototype.signoutRedirect=function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t,i;return(n=Object.assign({},n)).request_type="so:r",t=n.post_logout_redirect_uri||this.settings.post_logout_redirect_uri,t&&(n.post_logout_redirect_uri=t),i={useReplaceToNavigate:n.useReplaceToNavigate},this._signoutStart(n,this._redirectNavigator,i).then(function(){r.Log.info("UserManager.signoutRedirect: successful")})},t.prototype.signoutRedirectCallback=function(n){return this._signoutEnd(n||this._redirectNavigator.url).then(function(n){return r.Log.info("UserManager.signoutRedirectCallback: successful"),n})},t.prototype.signoutPopup=function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t;return(n=Object.assign({},n)).request_type="so:p",t=n.post_logout_redirect_uri||this.settings.popup_post_logout_redirect_uri||this.settings.post_logout_redirect_uri,n.post_logout_redirect_uri=t,n.display="popup",n.post_logout_redirect_uri&&(n.state=n.state||{}),this._signout(n,this._popupNavigator,{startUrl:t,popupWindowFeatures:n.popupWindowFeatures||this.settings.popupWindowFeatures,popupWindowTarget:n.popupWindowTarget||this.settings.popupWindowTarget}).then(function(){r.Log.info("UserManager.signoutPopup: successful")})},t.prototype.signoutPopupCallback=function(n,t){return void 0===t&&"boolean"==typeof n&&(t=n,n=null),this._popupNavigator.callback(n,t,"?").then(function(){r.Log.info("UserManager.signoutPopupCallback: successful")})},t.prototype._signout=function(n,t){var i=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this._signoutStart(n,t,r).then(function(n){return i._signoutEnd(n.url)})},t.prototype._signoutStart=function(){var i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=this,t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return arguments[1].prepare(t).then(function(u){return r.Log.debug("UserManager._signoutStart: got navigator window handle"),n._loadUser().then(function(f){return r.Log.debug("UserManager._signoutStart: loaded current user from storage"),(n._settings.revokeAccessTokenOnSignout?n._revokeInternal(f):Promise.resolve()).then(function(){var e=i.id_token_hint||f&&f.id_token;return e&&(r.Log.debug("UserManager._signoutStart: Setting id_token into signout request"),i.id_token_hint=e),n.removeUser().then(function(){return r.Log.debug("UserManager._signoutStart: user removed, creating signout request"),n.createSignoutRequest(i).then(function(n){return r.Log.debug("UserManager._signoutStart: got signout request"),t.url=n.url,n.state&&(t.id=n.state.id),u.navigate(t)})})})}).catch(function(n){throw u.close&&(r.Log.debug("UserManager._signoutStart: Error after preparing navigator, closing navigator window"),u.close()),n;})})},t.prototype._signoutEnd=function(n){return this.processSignoutResponse(n).then(function(n){return r.Log.debug("UserManager._signoutEnd: got signout response"),n})},t.prototype.revokeAccessToken=function(){var n=this;return this._loadUser().then(function(t){return n._revokeInternal(t,!0).then(function(i){if(i)return r.Log.debug("UserManager.revokeAccessToken: removing token properties from user and re-storing"),t.access_token=null,t.refresh_token=null,t.expires_at=null,t.token_type=null,n.storeUser(t).then(function(){r.Log.debug("UserManager.revokeAccessToken: user stored");n._events.load(t)})})}).then(function(){r.Log.info("UserManager.revokeAccessToken: access token revoked successfully")})},t.prototype._revokeInternal=function(n,t){var f=this,i,u;return n?(i=n.access_token,u=n.refresh_token,this._revokeAccessTokenInternal(i,t).then(function(n){return f._revokeRefreshTokenInternal(u,t).then(function(t){return n||t||r.Log.debug("UserManager.revokeAccessToken: no need to revoke due to no token(s), or JWT format"),n||t})})):Promise.resolve(!1)},t.prototype._revokeAccessTokenInternal=function(n,t){return!n||n.indexOf(".")>=0?Promise.resolve(!1):this._tokenRevocationClient.revoke(n,t).then(function(){return!0})},t.prototype._revokeRefreshTokenInternal=function(n,t){return n?this._tokenRevocationClient.revoke(n,t,"refresh_token").then(function(){return!0}):Promise.resolve(!1)},t.prototype.startSilentRenew=function(){this._silentRenewService.start()},t.prototype.stopSilentRenew=function(){this._silentRenewService.stop()},t.prototype._loadUser=function(){return this._userStore.get(this._userStoreKey).then(function(n){return n?(r.Log.debug("UserManager._loadUser: user storageString loaded"),f.User.fromStorageString(n)):(r.Log.debug("UserManager._loadUser: no user storageString"),null)})},t.prototype.storeUser=function(n){if(n){r.Log.debug("UserManager.storeUser: storing user");var t=n.toStorageString();return this._userStore.set(this._userStoreKey,t)}return r.Log.debug("storeUser.storeUser: removing user"),this._userStore.remove(this._userStoreKey)},e(t,[{key:"_redirectNavigator",get:function(){return this.settings.redirectNavigator}},{key:"_popupNavigator",get:function(){return this.settings.popupNavigator}},{key:"_iframeNavigator",get:function(){return this.settings.iframeNavigator}},{key:"_userStore",get:function(){return this.settings.userStore}},{key:"events",get:function(){return this._events}},{key:"_userStoreKey",get:function(){return"user:"+this.settings.authority+":"+this.settings.client_id}}]),t}(o.OidcClient)},function(n,t,i){Object.defineProperty(t,"__esModule",{value:!0});t.UserManagerSettings=void 0;var r=function(){function n(n,t){for(var i,r=0;r0&&void 0!==arguments[0]?arguments[0]:{},rt=r.popup_redirect_uri,ut=r.popup_post_logout_redirect_uri,ft=r.popupWindowFeatures,et=r.popupWindowTarget,ot=r.silent_redirect_uri,st=r.silentRequestTimeout,u=r.automaticSilentRenew,ht=void 0!==u&&u,l=r.validateSubOnSilentRenew,ct=void 0!==l&&l,a=r.includeIdTokenInSilentRenew,lt=void 0===a||a,v=r.monitorSession,at=void 0===v||v,y=r.monitorAnonymousSession,vt=void 0!==y&&y,p=r.checkSessionInterval,yt=void 0===p?2e3:p,w=r.stopCheckSessionOnError,pt=void 0===w||w,b=r.query_status_response_type,k=r.revokeAccessTokenOnSignout,wt=void 0!==k&&k,d=r.accessTokenExpiringNotificationTime,bt=void 0===d?60:d,g=r.redirectNavigator,kt=void 0===g?new f.RedirectNavigator:g,nt=r.popupNavigator,dt=void 0===nt?new e.PopupNavigator:nt,tt=r.iframeNavigator,gt=void 0===tt?new o.IFrameNavigator:tt,it=r.userStore,ni=void 0===it?new s.WebStorageStateStore({store:h.Global.sessionStorage}):it,i;return!function(n,t){if(!(n instanceof t))throw new TypeError("Cannot call a class as a function");}(this,t),i=function(n,t){if(!n)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?n:t}(this,n.call(this,arguments[0])),i._popup_redirect_uri=rt,i._popup_post_logout_redirect_uri=ut,i._popupWindowFeatures=ft,i._popupWindowTarget=et,i._silent_redirect_uri=ot,i._silentRequestTimeout=st,i._automaticSilentRenew=ht,i._validateSubOnSilentRenew=ct,i._includeIdTokenInSilentRenew=lt,i._accessTokenExpiringNotificationTime=bt,i._monitorSession=at,i._monitorAnonymousSession=vt,i._checkSessionInterval=yt,i._stopCheckSessionOnError=pt,i._query_status_response_type=b?b:arguments[0]&&arguments[0].response_type?c.SigninRequest.isOidc(arguments[0].response_type)?"id_token":"code":"id_token",i._revokeAccessTokenOnSignout=wt,i._redirectNavigator=kt,i._popupNavigator=dt,i._iframeNavigator=gt,i._userStore=ni,i}return function(n,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);n.prototype=Object.create(t&&t.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}});t&&(Object.setPrototypeOf?Object.setPrototypeOf(n,t):n.__proto__=t)}(t,n),r(t,[{key:"popup_redirect_uri",get:function(){return this._popup_redirect_uri}},{key:"popup_post_logout_redirect_uri",get:function(){return this._popup_post_logout_redirect_uri}},{key:"popupWindowFeatures",get:function(){return this._popupWindowFeatures}},{key:"popupWindowTarget",get:function(){return this._popupWindowTarget}},{key:"silent_redirect_uri",get:function(){return this._silent_redirect_uri}},{key:"silentRequestTimeout",get:function(){return this._silentRequestTimeout}},{key:"automaticSilentRenew",get:function(){return this._automaticSilentRenew}},{key:"validateSubOnSilentRenew",get:function(){return this._validateSubOnSilentRenew}},{key:"includeIdTokenInSilentRenew",get:function(){return this._includeIdTokenInSilentRenew}},{key:"accessTokenExpiringNotificationTime",get:function(){return this._accessTokenExpiringNotificationTime}},{key:"monitorSession",get:function(){return this._monitorSession}},{key:"monitorAnonymousSession",get:function(){return this._monitorAnonymousSession}},{key:"checkSessionInterval",get:function(){return this._checkSessionInterval}},{key:"stopCheckSessionOnError",get:function(){return this._stopCheckSessionOnError}},{key:"query_status_response_type",get:function(){return this._query_status_response_type}},{key:"revokeAccessTokenOnSignout",get:function(){return this._revokeAccessTokenOnSignout}},{key:"redirectNavigator",get:function(){return this._redirectNavigator}},{key:"popupNavigator",get:function(){return this._popupNavigator}},{key:"iframeNavigator",get:function(){return this._iframeNavigator}},{key:"userStore",get:function(){return this._userStore}}]),t}(u.OidcClientSettings)},function(n,t,i){Object.defineProperty(t,"__esModule",{value:!0});t.RedirectNavigator=void 0;var r=function(){function n(n,t){for(var i,r=0;r1&&void 0!==arguments[1])||arguments[1];r.Log.debug("UserManagerEvents.load");n.prototype.load.call(this,t);i&&this._userLoaded.raise(t)},t.prototype.unload=function(){r.Log.debug("UserManagerEvents.unload");n.prototype.unload.call(this);this._userUnloaded.raise()},t.prototype.addUserLoaded=function(n){this._userLoaded.addHandler(n)},t.prototype.removeUserLoaded=function(n){this._userLoaded.removeHandler(n)},t.prototype.addUserUnloaded=function(n){this._userUnloaded.addHandler(n)},t.prototype.removeUserUnloaded=function(n){this._userUnloaded.removeHandler(n)},t.prototype.addSilentRenewError=function(n){this._silentRenewError.addHandler(n)},t.prototype.removeSilentRenewError=function(n){this._silentRenewError.removeHandler(n)},t.prototype._raiseSilentRenewError=function(n){r.Log.debug("UserManagerEvents._raiseSilentRenewError",n.message);this._silentRenewError.raise(n)},t.prototype.addUserSignedIn=function(n){this._userSignedIn.addHandler(n)},t.prototype.removeUserSignedIn=function(n){this._userSignedIn.removeHandler(n)},t.prototype._raiseUserSignedIn=function(){r.Log.debug("UserManagerEvents._raiseUserSignedIn");this._userSignedIn.raise()},t.prototype.addUserSignedOut=function(n){this._userSignedOut.addHandler(n)},t.prototype.removeUserSignedOut=function(n){this._userSignedOut.removeHandler(n)},t.prototype._raiseUserSignedOut=function(){r.Log.debug("UserManagerEvents._raiseUserSignedOut");this._userSignedOut.raise()},t.prototype.addUserSessionChanged=function(n){this._userSessionChanged.addHandler(n)},t.prototype.removeUserSessionChanged=function(n){this._userSessionChanged.removeHandler(n)},t.prototype._raiseUserSessionChanged=function(){r.Log.debug("UserManagerEvents._raiseUserSessionChanged");this._userSessionChanged.raise()},t}(f.AccessTokenEvents)},function(n,t,i){Object.defineProperty(t,"__esModule",{value:!0});t.Timer=void 0;var u=function(){function n(n,t){for(var i,r=0;r1&&void 0!==arguments[1]?arguments[1]:f.Global.timer,e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,r;return!function(n,t){if(!(n instanceof t))throw new TypeError("Cannot call a class as a function");}(this,t),r=function(n,t){if(!n)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?n:t}(this,n.call(this,i)),r._timer=u,r._nowFunc=e||function(){return Date.now()/1e3},r}return function(n,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);n.prototype=Object.create(t&&t.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}});t&&(Object.setPrototypeOf?Object.setPrototypeOf(n,t):n.__proto__=t)}(t,n),t.prototype.init=function(n){var i,t;n<=0&&(n=1);n=parseInt(n);i=this.now+n;this.expiration===i&&this._timerHandle?r.Log.debug("Timer.init timer "+this._name+" skipping initialization since already initialized for expiration:",this.expiration):(this.cancel(),r.Log.debug("Timer.init timer "+this._name+" for duration:",n),this._expiration=i,t=5,n{try{this.debug("Beginning initial silent sign in.");await this._userManager.signinSilent();this.debug("Initial silent sign in succeeded.")}catch(n){n instanceof Error&&this.debug(`Initial silent sign in failed '${n.message}'`)}})()),this._intialSilentSignIn}async getUser(){window.parent!==window||window.opener||window.frameElement||!this._userManager.settings.redirect_uri||location.href.startsWith(this._userManager.settings.redirect_uri)||await this.trySilentSignIn();const n=await this._userManager.getUser();return n&&n.profile}async getAccessToken(t){function r(n){const t=new Date;return t.setTime(t.getTime()+1e3*n),t}this.trace("getAccessToken",t);const i=await this._userManager.getUser();if(function(n){return!(!n||!n.access_token||n.expired||!n.scopes)}(i)&&function(n,t){const i=new Set(t);if(n&&n.scopes)for(const t of n.scopes)if(!i.has(t))return!1;return!0}(t,i.scopes))return this.debug(`Valid access token present expiring at '${r(i.expires_in).toISOString()}'`),{status:n.AccessTokenResultStatus.Success,token:{grantedScopes:i.scopes,expires:r(i.expires_in),value:i.access_token}};try{const u=t&&t.scopes?{scope:t.scopes.join(" ")}:void 0;this.debug(`Provisioning a token silently for scopes '${u?.scope}'`);this.trace("userManager.signinSilent",u);const i=await this._userManager.signinSilent(u);this.debug(`Provisioned an access token expiring at '${r(i.expires_in).toISOString()}'`);const f={status:n.AccessTokenResultStatus.Success,token:{grantedScopes:i.scopes,expires:r(i.expires_in),value:i.access_token}};return this.trace("getAccessToken-result",f),f}catch(t){return t instanceof Error&&this.debug(`Failed to provision a token silently '${t.message}'`),{status:n.AccessTokenResultStatus.RequiresRedirect}}}async signIn(n){if(this.trace("signIn",n),n.interactiveRequest)return this.debug("Interactive sign in starting."),this.signInInteractive(n);try{return this.debug("Silent sign in starting"),await this._userManager.clearStaleState(),await this._userManager.signinSilent(this.createArguments(void 0,n.interactiveRequest)),this.debug("Silent sign in succeeded"),this.success(n.state)}catch(t){return t instanceof Error&&this.debug(`Silent sign in failed, redirecting to the identity provider '${t.message}'.`),await this.signInInteractive(n)}}async signInInteractive(n){this.trace("signInInteractive",n);try{return await this._userManager.clearStaleState(),await this._userManager.signinRedirect(this.createArguments(n.state,n.interactiveRequest)),this.debug("Redirect sign in succeeded"),this.redirect()}catch(n){const t=this.getExceptionMessage(n);return this.debug(`Redirect sign in failed '${t}'.`),this.error(t)}}async completeSignIn(n){this.trace("completeSignIn",n);const t=await this.loginRequired(n),i=await this.stateExists(n);try{const t=await this._userManager.signinCallback(n);return window.self!==window.top?this.operationCompleted():(this.trace("completeSignIn-result",t),this.success(t&&t.state))}catch(n){return t||window.self!==window.top||!i?this.operationCompleted():this.error("There was an error signing in.")}}async signOut(n){this.trace("signOut",n);try{return await this._userManager.metadataService.getEndSessionEndpoint()?(await this._userManager.signoutRedirect(this.createArguments(n.state,n.interactiveRequest)),this.redirect()):(await this._userManager.removeUser(),this.success(n.state))}catch(n){const t=this.getExceptionMessage(n);return this.debug(`Sign out error '${t}'.`),this.error(t)}}async completeSignOut(n){this.trace("completeSignOut",n);try{if(await this.stateExists(n)){const t=await this._userManager.signoutCallback(n);return this.success(t&&t.state)}return this.operationCompleted()}catch(n){const t=this.getExceptionMessage(n);return this.debug(`Complete sign out error '${t}'`),this.error(t)}}getExceptionMessage(n){return function(n){return n&&n.error_description}(n)?n.error_description:function(n){return n&&n.message}(n)?n.message:n.toString()}async stateExists(n){const t=new URLSearchParams(new URL(n).search).get("state");if(t&&this._userManager.settings.stateStore)return await this._userManager.settings.stateStore.get(t)}async loginRequired(n){const t=new URLSearchParams(new URL(n).search).get("error");return!(!t||!this._userManager.settings.stateStore)&&"login_required"===await this._userManager.settings.stateStore.get(t)}createArguments(n,t){return{useReplaceToNavigate:!0,data:n,scope:t?.scopes?t.scopes.join(" "):void 0,...t?.additionalRequestParameters}}error(t){return{status:n.AuthenticationResultStatus.Failure,errorMessage:t}}success(t){return{status:n.AuthenticationResultStatus.Success,state:t}}redirect(){return{status:n.AuthenticationResultStatus.Redirect}}operationCompleted(){return{status:n.AuthenticationResultStatus.OperationCompleted}}debug(t){this._logger?.log(n.LogLevel.Debug,t)}trace(t,i){this._logger?.log(n.LogLevel.Trace,`${t}: ${JSON.stringify(i)}`)}}class t{static _infrastructureKey="Microsoft.AspNetCore.Components.WebAssembly.Authentication";static _initialized;static instance;static _pendingOperations={};static init(n,i){return t._initialized||(t._initialized=t.initializeCore(n,new f(i))),t._initialized}static handleCallback(){return t.initializeCore()}static async initializeCore(n,i){const r=n||t.resolveCachedSettings(),u=t.resolveCachedLoggerOptions(),e=i||u&&new f(u);if(!n&&r&&!i&&e){const n=t.createUserManagerCore(r);window.parent!==window&&!window.opener&&window.frameElement&&n.settings.redirect_uri&&location.href.startsWith(n.settings.redirect_uri)&&(t.instance=new h(n,e),t._initialized=(async()=>{await t.instance.completeSignIn(location.href)})())}else if(n&&i){const r=await t.createUserManager(n);t.instance=new h(r,i);window.sessionStorage.setItem(`${t._infrastructureKey}.CachedJSLoggingOptions`,JSON.stringify({debugEnabled:i.debug,traceEnabled:i.trace}))}}static resolveCachedSettings(){const n=window.sessionStorage.getItem(`${t._infrastructureKey}.CachedAuthSettings`);if(n)return JSON.parse(n)}static resolveCachedLoggerOptions(){const n=window.sessionStorage.getItem(`${t._infrastructureKey}.CachedJSLoggingOptions`);if(n)return JSON.parse(n)}static getUser(){return t.instance.getUser()}static getAccessToken(n){return t.instance.getAccessToken(n)}static signIn(n){return t.instance.signIn(n)}static async completeSignIn(n){let i=this._pendingOperations[n];return i||(i=t.instance.completeSignIn(n),await i,delete this._pendingOperations[n]),i}static signOut(n){return t.instance.signOut(n)}static async completeSignOut(n){let i=this._pendingOperations[n];return i||(i=t.instance.completeSignOut(n),await i,delete this._pendingOperations[n]),i}static async createUserManager(n){let i;if(function(n){return n.hasOwnProperty("configurationEndpoint")}(n)){const t=await fetch(n.configurationEndpoint);if(!t.ok)throw new Error(`Could not load settings from '${n.configurationEndpoint}'`);i=await t.json()}else n.scope||(n.scope=n.defaultScopes.join(" ")),null===n.response_type&&delete n.response_type,i=n;return window.sessionStorage.setItem(`${t._infrastructureKey}.CachedAuthSettings`,JSON.stringify(i)),t.createUserManagerCore(i)}static createUserManagerCore(n){const t=new s.UserManager(n);return t.events.addUserSignedOut(async()=>{t.removeUser()}),t}}t.handleCallback();window.AuthenticationService=t;n.AuthenticationService=t;n.ManagedLogger=f}({});
-
-var abp=abp||{};(function(){abp.utils=abp.utils||{};abp.domReady=function(n){document.readyState==="complete"||document.readyState==="interactive"?setTimeout(n,1):document.addEventListener("DOMContentLoaded",n)};abp.utils.setCookieValue=function(n,t,i,r,u){var f=encodeURIComponent(n)+"=";t&&(f=f+encodeURIComponent(t));i&&(f=f+"; expires="+i);r&&(f=f+"; path="+r);u&&(f=f+"; secure");document.cookie=f};abp.utils.getCookieValue=function(n){for(var i,r=document.cookie.split("; "),t=0;t
-
-
-
-
-
- EventHub.Blazor
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/EventHub.Admin.Web/wwwroot/libs/@fortawesome/fontawesome-free/css/all.css b/src/EventHub.Admin.Web/wwwroot/libs/@fortawesome/fontawesome-free/css/all.css
new file mode 100644
index 0000000..3ef3fe9
--- /dev/null
+++ b/src/EventHub.Admin.Web/wwwroot/libs/@fortawesome/fontawesome-free/css/all.css
@@ -0,0 +1,11464 @@
+/*!
+ * Font Awesome Free 7.3.0 by @fontawesome - https://fontawesome.com
+ * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
+ * Copyright 2026 Fonticons, Inc.
+ */
+.fa-solid,
+.fa-regular,
+.fa-brands,
+.fa-classic,
+.fas,
+.far,
+.fab,
+.fa {
+ --_fa-family: var(--fa-family, var(--fa-style-family, 'Font Awesome 7 Free'));
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ display: var(--fa-display, inline-block);
+ font-family: var(--_fa-family);
+ font-feature-settings: normal;
+ font-style: normal;
+ font-synthesis: none;
+ font-variant: normal;
+ font-weight: var(--fa-style, 900);
+ line-height: 1;
+ text-align: center;
+ text-rendering: auto;
+ width: var(--fa-width, 1.25em);
+}
+
+:is(.fas,
+.far,
+.fab,
+.fa-solid,
+.fa-regular,
+.fa-brands,
+.fa-classic,
+.fa)::before {
+ content: var(--fa)/"";
+}
+
+@supports not (content: ""/"") {
+ :is(.fas,
+ .far,
+ .fab,
+ .fa-solid,
+ .fa-regular,
+ .fa-brands,
+ .fa-classic,
+ .fa)::before {
+ content: var(--fa);
+ }
+}
+.fa-1x {
+ font-size: 1em;
+}
+
+.fa-2x {
+ font-size: 2em;
+}
+
+.fa-3x {
+ font-size: 3em;
+}
+
+.fa-4x {
+ font-size: 4em;
+}
+
+.fa-5x {
+ font-size: 5em;
+}
+
+.fa-6x {
+ font-size: 6em;
+}
+
+.fa-7x {
+ font-size: 7em;
+}
+
+.fa-8x {
+ font-size: 8em;
+}
+
+.fa-9x {
+ font-size: 9em;
+}
+
+.fa-10x {
+ font-size: 10em;
+}
+
+.fa-2xs {
+ font-size: calc(10 / 16 * 1em); /* converts a 10px size into an em-based value that's relative to the scale's 16px base */
+ line-height: calc(1 / 10 * 1em); /* sets the line-height of the icon back to that of it's parent */
+ vertical-align: calc((6 / 10 - 0.375) * 1em); /* vertically centers the icon taking into account the surrounding text's descender */
+}
+
+.fa-xs {
+ font-size: calc(12 / 16 * 1em); /* converts a 12px size into an em-based value that's relative to the scale's 16px base */
+ line-height: calc(1 / 12 * 1em); /* sets the line-height of the icon back to that of it's parent */
+ vertical-align: calc((6 / 12 - 0.375) * 1em); /* vertically centers the icon taking into account the surrounding text's descender */
+}
+
+.fa-sm {
+ font-size: calc(14 / 16 * 1em); /* converts a 14px size into an em-based value that's relative to the scale's 16px base */
+ line-height: calc(1 / 14 * 1em); /* sets the line-height of the icon back to that of it's parent */
+ vertical-align: calc((6 / 14 - 0.375) * 1em); /* vertically centers the icon taking into account the surrounding text's descender */
+}
+
+.fa-lg {
+ font-size: calc(20 / 16 * 1em); /* converts a 20px size into an em-based value that's relative to the scale's 16px base */
+ line-height: calc(1 / 20 * 1em); /* sets the line-height of the icon back to that of it's parent */
+ vertical-align: calc((6 / 20 - 0.375) * 1em); /* vertically centers the icon taking into account the surrounding text's descender */
+}
+
+.fa-xl {
+ font-size: calc(24 / 16 * 1em); /* converts a 24px size into an em-based value that's relative to the scale's 16px base */
+ line-height: calc(1 / 24 * 1em); /* sets the line-height of the icon back to that of it's parent */
+ vertical-align: calc((6 / 24 - 0.375) * 1em); /* vertically centers the icon taking into account the surrounding text's descender */
+}
+
+.fa-2xl {
+ font-size: calc(32 / 16 * 1em); /* converts a 32px size into an em-based value that's relative to the scale's 16px base */
+ line-height: calc(1 / 32 * 1em); /* sets the line-height of the icon back to that of it's parent */
+ vertical-align: calc((6 / 32 - 0.375) * 1em); /* vertically centers the icon taking into account the surrounding text's descender */
+}
+
+.fa-width-auto {
+ --fa-width: auto;
+}
+
+.fa-fw,
+.fa-width-fixed {
+ --fa-width: 1.25em;
+}
+
+.fa-canvas-square {
+ padding-block: 0.125em;
+ margin-block-end: -0.125em;
+}
+
+.fa-canvas-roomy {
+ padding-block: 0.25em;
+ padding-inline: 0.125em;
+ margin-block-end: -0.25em;
+ box-sizing: content-box;
+}
+
+.fa-ul {
+ list-style-type: none;
+ margin-inline-start: var(--fa-li-margin, 2.5em);
+ padding-inline-start: 0;
+}
+.fa-ul > li {
+ position: relative;
+}
+
+.fa-li {
+ inset-inline-start: calc(-1 * var(--fa-li-width, 2em));
+ position: absolute;
+ text-align: center;
+ width: var(--fa-li-width, 2em);
+ line-height: inherit;
+}
+
+/* Heads Up: Bordered Icons will not be supported in the future!
+ - This feature will be deprecated in the next major release of Font Awesome (v8)!
+ - You may continue to use it in this version *v7), but it will not be supported in Font Awesome v8.
+*/
+/* Notes:
+* --@{v.$css-prefix}-border-width = 1/16 by default (to render as ~1px based on a 16px default font-size)
+* --@{v.$css-prefix}-border-padding =
+ ** 3/16 for vertical padding (to give ~2px of vertical whitespace around an icon considering it's vertical alignment)
+ ** 4/16 for horizontal padding (to give ~4px of horizontal whitespace around an icon)
+*/
+.fa-border {
+ border-color: var(--fa-border-color, #eee);
+ border-radius: var(--fa-border-radius, 0.1em);
+ border-style: var(--fa-border-style, solid);
+ border-width: var(--fa-border-width, 0.0625em);
+ box-sizing: var(--fa-border-box-sizing, content-box);
+ padding: var(--fa-border-padding, 0.1875em 0.25em);
+}
+
+.fa-pull-left,
+.fa-pull-start {
+ float: inline-start;
+ margin-inline-end: var(--fa-pull-margin, 0.3em);
+}
+
+.fa-pull-right,
+.fa-pull-end {
+ float: inline-end;
+ margin-inline-start: var(--fa-pull-margin, 0.3em);
+}
+
+.fa-beat {
+ animation-name: fa-beat;
+ animation-delay: var(--fa-animation-delay, 0s);
+ animation-direction: var(--fa-animation-direction, normal);
+ animation-duration: var(--fa-animation-duration, 1s);
+ animation-iteration-count: var(--fa-animation-iteration-count, infinite);
+ animation-timing-function: var(--fa-animation-timing, ease-in-out);
+}
+
+.fa-bounce {
+ animation-name: fa-bounce;
+ animation-delay: var(--fa-animation-delay, 0s);
+ animation-direction: var(--fa-animation-direction, normal);
+ animation-duration: var(--fa-animation-duration, 1s);
+ animation-iteration-count: var(--fa-animation-iteration-count, infinite);
+ animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));
+}
+
+.fa-fade {
+ animation-name: fa-fade;
+ animation-delay: var(--fa-animation-delay, 0s);
+ animation-direction: var(--fa-animation-direction, normal);
+ animation-duration: var(--fa-animation-duration, 1s);
+ animation-iteration-count: var(--fa-animation-iteration-count, infinite);
+ animation-timing-function: var(--fa-animation-timing, ease-in-out);
+}
+
+.fa-beat-fade {
+ animation-name: fa-beat-fade;
+ animation-delay: var(--fa-animation-delay, 0s);
+ animation-direction: var(--fa-animation-direction, normal);
+ animation-duration: var(--fa-animation-duration, 1s);
+ animation-iteration-count: var(--fa-animation-iteration-count, infinite);
+ animation-timing-function: var(--fa-animation-timing, ease-in-out);
+}
+
+.fa-flip {
+ animation-name: fa-flip;
+ animation-delay: var(--fa-animation-delay, 0s);
+ animation-direction: var(--fa-animation-direction, normal);
+ animation-duration: var(--fa-animation-duration, 1.5s);
+ animation-iteration-count: var(--fa-animation-iteration-count, infinite);
+ animation-timing-function: var(--fa-animation-timing, ease-in-out);
+}
+
+.fa-flip-360 {
+ animation-name: fa-flip-360;
+ animation-delay: var(--fa-animation-delay, 0s);
+ animation-direction: var(--fa-animation-direction, normal);
+ animation-duration: var(--fa-animation-duration, 1s);
+ animation-iteration-count: var(--fa-animation-iteration-count, infinite);
+ animation-timing-function: var(--fa-animation-timing, ease-in-out);
+}
+
+.fa-shake {
+ animation-name: fa-shake;
+ animation-delay: var(--fa-animation-delay, 0s);
+ animation-direction: var(--fa-animation-direction, normal);
+ animation-duration: var(--fa-animation-duration, 0.75s);
+ animation-iteration-count: var(--fa-animation-iteration-count, infinite);
+ animation-timing-function: var(--fa-animation-timing, ease-in-out);
+}
+
+.fa-spin {
+ animation-name: fa-spin;
+ animation-delay: var(--fa-animation-delay, 0s);
+ animation-direction: var(--fa-animation-direction, normal);
+ animation-duration: var(--fa-animation-duration, 2s);
+ animation-iteration-count: var(--fa-animation-iteration-count, infinite);
+ animation-timing-function: var(--fa-animation-timing, linear);
+}
+
+.fa-spin-reverse {
+ --fa-animation-direction: reverse;
+}
+
+.fa-pulse,
+.fa-spin-pulse {
+ animation-name: fa-spin;
+ animation-direction: var(--fa-animation-direction, normal);
+ animation-duration: var(--fa-animation-duration, 1s);
+ animation-iteration-count: var(--fa-animation-iteration-count, infinite);
+ animation-timing-function: var(--fa-animation-timing, steps(8));
+}
+
+.fa-spin-snap {
+ animation-name: fa-spin-snap;
+ animation-delay: var(--fa-animation-delay, 0s);
+ animation-direction: var(--fa-animation-direction, normal);
+ animation-duration: var(--fa-animation-duration, 3s);
+ animation-iteration-count: var(--fa-animation-iteration-count, infinite);
+ animation-timing-function: var(--fa-animation-timing, linear);
+}
+
+.fa-spin-snap-4 {
+ animation-name: fa-spin-snap-4;
+ animation-delay: var(--fa-animation-delay, 0s);
+ animation-direction: var(--fa-animation-direction, normal);
+ animation-duration: var(--fa-animation-duration, 2.4s);
+ animation-iteration-count: var(--fa-animation-iteration-count, infinite);
+ animation-timing-function: var(--fa-animation-timing, linear);
+}
+
+.fa-spin-snap-8 {
+ animation-name: fa-spin-snap-8;
+ animation-delay: var(--fa-animation-delay, 0s);
+ animation-direction: var(--fa-animation-direction, normal);
+ animation-duration: var(--fa-animation-duration, 4s);
+ animation-iteration-count: var(--fa-animation-iteration-count, infinite);
+ animation-timing-function: var(--fa-animation-timing, linear);
+}
+
+.fa-buzz {
+ animation-name: fa-buzz;
+ animation-delay: var(--fa-animation-delay, 0s);
+ animation-direction: var(--fa-animation-direction, normal);
+ animation-duration: var(--fa-animation-duration, 0.6s);
+ animation-iteration-count: var(--fa-animation-iteration-count, infinite);
+ animation-timing-function: var(--fa-animation-timing, linear);
+}
+
+.fa-wag {
+ animation-name: fa-wag;
+ animation-delay: var(--fa-animation-delay, 0s);
+ animation-direction: var(--fa-animation-direction, normal);
+ animation-duration: var(--fa-animation-duration, 0.9s);
+ animation-iteration-count: var(--fa-animation-iteration-count, infinite);
+ animation-timing-function: var(--fa-animation-timing, ease-out);
+ transform-origin: bottom center;
+}
+
+.fa-float {
+ animation-name: fa-float;
+ animation-delay: var(--fa-animation-delay, 0s);
+ animation-direction: var(--fa-animation-direction, normal);
+ animation-duration: var(--fa-animation-duration, 3s);
+ animation-iteration-count: var(--fa-animation-iteration-count, infinite);
+ animation-timing-function: var(--fa-animation-timing, ease-in-out);
+ will-change: transform;
+}
+
+.fa-swing {
+ animation-name: fa-swing;
+ animation-delay: var(--fa-animation-delay, 0s);
+ animation-direction: var(--fa-animation-direction, normal);
+ animation-duration: var(--fa-animation-duration, 1.2s);
+ animation-iteration-count: var(--fa-animation-iteration-count, infinite);
+ animation-timing-function: var(--fa-animation-timing, ease-out);
+ transform-origin: top center;
+}
+
+.fa-jello {
+ animation-name: fa-jello;
+ animation-delay: var(--fa-animation-delay, 0s);
+ animation-direction: var(--fa-animation-direction, normal);
+ animation-duration: var(--fa-animation-duration, 0.9s);
+ animation-iteration-count: var(--fa-animation-iteration-count, infinite);
+ animation-timing-function: var(--fa-animation-timing, ease-out);
+}
+
+@media (prefers-reduced-motion: reduce) {
+ .fa-beat,
+ .fa-bounce,
+ .fa-fade,
+ .fa-beat-fade,
+ .fa-flip,
+ .fa-flip-360,
+ .fa-pulse,
+ .fa-shake,
+ .fa-spin,
+ .fa-spin-pulse,
+ .fa-buzz,
+ .fa-float,
+ .fa-jello,
+ .fa-spin-snap,
+ .fa-spin-snap-4,
+ .fa-spin-snap-8,
+ .fa-swing,
+ .fa-wag {
+ animation: none !important;
+ transition: none !important;
+ }
+}
+@keyframes fa-beat {
+ 0% {
+ transform: scale(1);
+ }
+ 25% {
+ transform: scale(calc(1.25 * var(--fa-beat-scale, 1.25)));
+ }
+ 45% {
+ transform: scale(calc(1.22 * var(--fa-beat-scale, 1.22)));
+ }
+ 65% {
+ transform: scale(calc(1.25 * var(--fa-beat-scale, 1.25)));
+ }
+ 90% {
+ transform: scale(1);
+ }
+}
+@keyframes fa-bounce {
+ 0% {
+ transform: scale(1, 1) translateY(0);
+ animation-timing-function: var(--fa-animation-timing);
+ }
+ 14% {
+ transform: scale(var(--fa-bounce-start-scale-x, 1.06), var(--fa-bounce-start-scale-y, 0.94)) translateY(var(--fa-bounce-anticipation, 3px));
+ animation-timing-function: cubic-bezier(0.33, 0, 0.66, 0.33);
+ }
+ 32% {
+ transform: scale(var(--fa-bounce-jump-scale-x, 0.94), var(--fa-bounce-jump-scale-y, 1.12)) translateY(calc(-1 * var(--fa-bounce-height, 0.5em)));
+ animation-timing-function: cubic-bezier(0.33, 0.66, 0.66, 1);
+ }
+ 52% {
+ transform: scale(1, 1) translateY(calc(-1 * var(--fa-bounce-height, 0.5em) * 1.1));
+ animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5);
+ }
+ 70% {
+ transform: scale(var(--fa-bounce-land-scale-x, 1.06), var(--fa-bounce-land-scale-y, 0.92)) translateY(0);
+ animation-timing-function: cubic-bezier(0.33, 0.33, 0.66, 1);
+ }
+ 85% {
+ transform: scale(0.98, 1.04) translateY(calc(-2px * var(--fa-bounce-rebound, 1)));
+ animation-timing-function: cubic-bezier(0.33, 0, 0.66, 1);
+ }
+ 100% {
+ transform: scale(1, 1) translateY(0);
+ }
+}
+@keyframes fa-fade {
+ 0% {
+ opacity: 1;
+ transform: scale(1);
+ animation-timing-function: cubic-bezier(0.2, 0, 0.4, 1);
+ }
+ 40% {
+ opacity: var(--fa-fade-opacity, 0.4);
+ transform: scale(0.98);
+ animation-timing-function: cubic-bezier(0.4, 0, 0.6, 1);
+ }
+ 100% {
+ opacity: 1;
+ transform: scale(1);
+ }
+}
+@keyframes fa-beat-fade {
+ 0% {
+ opacity: var(--fa-beat-fade-opacity, 0.4);
+ transform: scale(1);
+ animation-timing-function: cubic-bezier(0.2, 0, 0.4, 1);
+ }
+ 25% {
+ opacity: calc(var(--fa-beat-fade-opacity, 0.4) + 0.4);
+ transform: scale(var(--fa-beat-fade-scale, 1.28));
+ animation-timing-function: cubic-bezier(0.4, 0, 0.6, 1);
+ }
+ 45% {
+ opacity: 1;
+ transform: scale(var(--fa-beat-fade-scale, 1.25));
+ animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
+ }
+ 65% {
+ opacity: calc(var(--fa-beat-fade-opacity, 0.4) + 0.4);
+ transform: scale(var(--fa-beat-fade-scale, 1.28));
+ animation-timing-function: cubic-bezier(0.4, 0, 0.6, 1);
+ }
+ 100% {
+ opacity: var(--fa-beat-fade-opacity, 0.4);
+ transform: scale(1);
+ }
+}
+@keyframes fa-flip {
+ 0% {
+ transform: perspective(2em) scale(1) rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), 0deg);
+ animation-timing-function: cubic-bezier(0.2, 0, 0.4, 1);
+ }
+ 8% {
+ transform: perspective(2em) scale(var(--fa-flip-anticipation-scale, 0.95)) rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), 0deg);
+ animation-timing-function: cubic-bezier(0.33, 0, 0.66, 0.33);
+ }
+ 35% {
+ transform: perspective(2em) scale(1) rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), calc(var(--fa-flip-angle, -360deg) * 0.6));
+ animation-timing-function: linear;
+ }
+ 65% {
+ transform: perspective(2em) scale(1) rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), calc(var(--fa-flip-angle, -360deg) * 0.5));
+ animation-timing-function: cubic-bezier(0.33, 0.66, 0.66, 1);
+ }
+ 92% {
+ transform: perspective(2em) scale(1) rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), calc(var(--fa-flip-angle, -360deg) * var(--fa-flip-overshoot, 1.04)));
+ animation-timing-function: cubic-bezier(0.33, 0, 0.66, 1);
+ }
+ 100% {
+ transform: perspective(2em) scale(1) rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -360deg));
+ }
+}
+@keyframes fa-flip-360 {
+ 0% {
+ transform: perspective(2em) scale(1) rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), 0deg);
+ animation-timing-function: cubic-bezier(0.2, 0, 0.4, 1);
+ }
+ 8% {
+ transform: perspective(2em) scale(var(--fa-flip-anticipation-scale, 0.95)) rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), 0deg);
+ animation-timing-function: cubic-bezier(0.33, 0, 0.66, 0.33);
+ }
+ 50% {
+ transform: perspective(2em) scale(1) rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), calc(var(--fa-flip-angle, -360deg) * 0.6));
+ animation-timing-function: cubic-bezier(0.33, 0.66, 0.66, 1);
+ }
+ 80% {
+ transform: perspective(2em) scale(1) rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), calc(var(--fa-flip-angle, -360deg) * var(--fa-flip-overshoot, 1.04)));
+ animation-timing-function: cubic-bezier(0.33, 0, 0.66, 1);
+ }
+ 100% {
+ transform: perspective(2em) scale(1) rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -360deg));
+ }
+}
+@keyframes fa-shake {
+ 0% {
+ transform: rotate(0deg);
+ animation-timing-function: cubic-bezier(0.2, 0, 0.8, 1);
+ }
+ 8% {
+ transform: rotate(35deg) translateX(1px);
+ animation-timing-function: cubic-bezier(0.3, 0, 0.7, 1);
+ }
+ 20% {
+ transform: rotate(-22deg) translateX(-1px);
+ animation-timing-function: cubic-bezier(0.3, 0, 0.7, 1);
+ }
+ 35% {
+ transform: rotate(15deg) translateX(1px);
+ animation-timing-function: cubic-bezier(0.3, 0, 0.7, 1);
+ }
+ 50% {
+ transform: rotate(-9deg);
+ animation-timing-function: cubic-bezier(0.4, 0, 0.6, 1);
+ }
+ 65% {
+ transform: rotate(5deg);
+ animation-timing-function: cubic-bezier(0.4, 0, 0.6, 1);
+ }
+ 78% {
+ transform: rotate(-3deg);
+ animation-timing-function: cubic-bezier(0.4, 0, 0.6, 1);
+ }
+ 90% {
+ transform: rotate(1deg);
+ animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
+ }
+ 100% {
+ transform: rotate(0deg);
+ }
+}
+@keyframes fa-spin {
+ 0% {
+ transform: rotate(0deg);
+ }
+ 100% {
+ transform: rotate(360deg);
+ }
+}
+@keyframes fa-spin-snap {
+ 0% {
+ transform: rotate(0deg);
+ animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
+ }
+ 12% {
+ transform: rotate(60deg);
+ animation-timing-function: cubic-bezier(0.8, 0, 1, 1);
+ }
+ 16.67% {
+ transform: rotate(60deg);
+ animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
+ }
+ 28.67% {
+ transform: rotate(120deg);
+ animation-timing-function: cubic-bezier(0.8, 0, 1, 1);
+ }
+ 33.33% {
+ transform: rotate(120deg);
+ animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
+ }
+ 45.33% {
+ transform: rotate(180deg);
+ animation-timing-function: cubic-bezier(0.8, 0, 1, 1);
+ }
+ 50% {
+ transform: rotate(180deg);
+ animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
+ }
+ 62% {
+ transform: rotate(240deg);
+ animation-timing-function: cubic-bezier(0.8, 0, 1, 1);
+ }
+ 66.67% {
+ transform: rotate(240deg);
+ animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
+ }
+ 78.67% {
+ transform: rotate(300deg);
+ animation-timing-function: cubic-bezier(0.8, 0, 1, 1);
+ }
+ 83.33% {
+ transform: rotate(300deg);
+ animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
+ }
+ 95.33% {
+ transform: rotate(360deg);
+ animation-timing-function: cubic-bezier(0.8, 0, 1, 1);
+ }
+ 100% {
+ transform: rotate(360deg);
+ }
+}
+@keyframes fa-spin-snap-4 {
+ 0% {
+ transform: rotate(0deg);
+ animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
+ }
+ 15% {
+ transform: rotate(90deg);
+ animation-timing-function: cubic-bezier(0.8, 0, 1, 1);
+ }
+ 25% {
+ transform: rotate(90deg);
+ animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
+ }
+ 40% {
+ transform: rotate(180deg);
+ animation-timing-function: cubic-bezier(0.8, 0, 1, 1);
+ }
+ 50% {
+ transform: rotate(180deg);
+ animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
+ }
+ 65% {
+ transform: rotate(270deg);
+ animation-timing-function: cubic-bezier(0.8, 0, 1, 1);
+ }
+ 75% {
+ transform: rotate(270deg);
+ animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
+ }
+ 90% {
+ transform: rotate(360deg);
+ animation-timing-function: cubic-bezier(0.8, 0, 1, 1);
+ }
+ 100% {
+ transform: rotate(360deg);
+ }
+}
+@keyframes fa-spin-snap-8 {
+ 0% {
+ transform: rotate(0deg);
+ animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
+ }
+ 9% {
+ transform: rotate(45deg);
+ animation-timing-function: cubic-bezier(0.8, 0, 1, 1);
+ }
+ 12.5% {
+ transform: rotate(45deg);
+ animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
+ }
+ 21.5% {
+ transform: rotate(90deg);
+ animation-timing-function: cubic-bezier(0.8, 0, 1, 1);
+ }
+ 25% {
+ transform: rotate(90deg);
+ animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
+ }
+ 34% {
+ transform: rotate(135deg);
+ animation-timing-function: cubic-bezier(0.8, 0, 1, 1);
+ }
+ 37.5% {
+ transform: rotate(135deg);
+ animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
+ }
+ 46.5% {
+ transform: rotate(180deg);
+ animation-timing-function: cubic-bezier(0.8, 0, 1, 1);
+ }
+ 50% {
+ transform: rotate(180deg);
+ animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
+ }
+ 59% {
+ transform: rotate(225deg);
+ animation-timing-function: cubic-bezier(0.8, 0, 1, 1);
+ }
+ 62.5% {
+ transform: rotate(225deg);
+ animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
+ }
+ 71.5% {
+ transform: rotate(270deg);
+ animation-timing-function: cubic-bezier(0.8, 0, 1, 1);
+ }
+ 75% {
+ transform: rotate(270deg);
+ animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
+ }
+ 84% {
+ transform: rotate(315deg);
+ animation-timing-function: cubic-bezier(0.8, 0, 1, 1);
+ }
+ 87.5% {
+ transform: rotate(315deg);
+ animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
+ }
+ 96.5% {
+ transform: rotate(360deg);
+ animation-timing-function: cubic-bezier(0.8, 0, 1, 1);
+ }
+ 100% {
+ transform: rotate(360deg);
+ }
+}
+@keyframes fa-buzz {
+ 0% {
+ transform: translateX(0) rotate(0deg);
+ animation-timing-function: cubic-bezier(0.1, 0, 0.9, 1);
+ }
+ 5% {
+ transform: translateX(var(--fa-buzz-distance, 4px)) rotate(0.5deg);
+ }
+ 10% {
+ transform: translateX(calc(-1 * var(--fa-buzz-distance, 4px))) rotate(-0.5deg);
+ }
+ 15% {
+ transform: translateX(var(--fa-buzz-distance, 4px)) rotate(0.3deg);
+ }
+ 20% {
+ transform: translateX(calc(-1 * var(--fa-buzz-distance, 4px))) rotate(-0.3deg);
+ }
+ 25% {
+ transform: translateX(calc(var(--fa-buzz-distance, 4px) * 0.7)) rotate(0.2deg);
+ }
+ 30% {
+ transform: translateX(calc(-1 * var(--fa-buzz-distance, 4px) * 0.7)) rotate(-0.2deg);
+ }
+ 35% {
+ transform: translateX(calc(var(--fa-buzz-distance, 4px) * 0.4)) rotate(0.1deg);
+ }
+ 40% {
+ transform: translateX(0) rotate(0deg);
+ }
+ 100% {
+ transform: translateX(0) rotate(0deg);
+ }
+}
+@keyframes fa-wag {
+ 0% {
+ transform: rotate(0deg);
+ animation-timing-function: cubic-bezier(0.2, 0, 0.6, 1);
+ }
+ 12% {
+ transform: rotate(var(--fa-wag-angle, 12deg));
+ animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
+ }
+ 24% {
+ transform: rotate(2deg);
+ animation-timing-function: cubic-bezier(0.2, 0, 0.6, 1);
+ }
+ 36% {
+ transform: rotate(calc(var(--fa-wag-angle, 12deg) * 0.85));
+ animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
+ }
+ 48% {
+ transform: rotate(1deg);
+ animation-timing-function: cubic-bezier(0.2, 0, 0.6, 1);
+ }
+ 58% {
+ transform: rotate(calc(var(--fa-wag-angle, 12deg) * 0.6));
+ animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
+ }
+ 68% {
+ transform: rotate(0deg);
+ }
+ 100% {
+ transform: rotate(0deg);
+ }
+}
+@keyframes fa-float {
+ 0% {
+ transform: translateY(0) translateX(0) rotate(0deg) scale(var(--fa-float-squash-x, 1.02), var(--fa-float-squash-y, 0.98));
+ animation-timing-function: cubic-bezier(0.33, 0, 0.66, 0.33);
+ }
+ 15% {
+ transform: translateY(calc(-0.4 * var(--fa-float-height, 6px))) translateX(var(--fa-float-drift, 1px)) rotate(var(--fa-float-tilt, 1deg)) scale(1, 1);
+ animation-timing-function: cubic-bezier(0.33, 0.66, 0.66, 1);
+ }
+ 35% {
+ transform: translateY(calc(-1 * var(--fa-float-height, 6px))) translateX(0) rotate(0deg) scale(var(--fa-float-stretch-x, 0.98), var(--fa-float-stretch-y, 1.03));
+ animation-timing-function: cubic-bezier(0.5, 0, 0.5, 0);
+ }
+ 50% {
+ transform: translateY(calc(-0.92 * var(--fa-float-height, 6px))) translateX(calc(-0.5 * var(--fa-float-drift, 1px))) rotate(calc(-0.5 * var(--fa-float-tilt, 1deg))) scale(0.995, 1.01);
+ animation-timing-function: cubic-bezier(0.33, 0, 0.66, 0.33);
+ }
+ 70% {
+ transform: translateY(calc(-0.3 * var(--fa-float-height, 6px))) translateX(calc(-1 * var(--fa-float-drift, 1px))) rotate(calc(-1 * var(--fa-float-tilt, 1deg))) scale(1, 1);
+ animation-timing-function: cubic-bezier(0.33, 0.66, 0.66, 1);
+ }
+ 90% {
+ transform: translateY(calc(0.05 * var(--fa-float-height, 6px))) translateX(0) rotate(0deg) scale(var(--fa-float-squash-x, 1.02), var(--fa-float-squash-y, 0.98));
+ animation-timing-function: cubic-bezier(0.33, 0, 0.66, 1);
+ }
+ 100% {
+ transform: translateY(0) translateX(0) rotate(0deg) scale(var(--fa-float-squash-x, 1.02), var(--fa-float-squash-y, 0.98));
+ }
+}
+@keyframes fa-swing {
+ 0% {
+ transform: rotate(0deg);
+ animation-timing-function: cubic-bezier(0.2, 0, 0.8, 1);
+ }
+ 8% {
+ transform: rotate(var(--fa-swing-angle, 22deg));
+ animation-timing-function: cubic-bezier(0.3, 0, 0.7, 1);
+ }
+ 18% {
+ transform: rotate(calc(-1 * var(--fa-swing-angle, 22deg) * 0.85));
+ animation-timing-function: cubic-bezier(0.3, 0, 0.7, 1);
+ }
+ 28% {
+ transform: rotate(calc(var(--fa-swing-angle, 22deg) * 0.65));
+ animation-timing-function: cubic-bezier(0.35, 0, 0.65, 1);
+ }
+ 38% {
+ transform: rotate(calc(-1 * var(--fa-swing-angle, 22deg) * 0.45));
+ animation-timing-function: cubic-bezier(0.4, 0, 0.6, 1);
+ }
+ 48% {
+ transform: rotate(calc(var(--fa-swing-angle, 22deg) * 0.25));
+ animation-timing-function: cubic-bezier(0.4, 0, 0.6, 1);
+ }
+ 56% {
+ transform: rotate(calc(-1 * var(--fa-swing-angle, 22deg) * 0.1));
+ animation-timing-function: cubic-bezier(0.4, 0, 0.6, 1);
+ }
+ 64% {
+ transform: rotate(0deg);
+ }
+ 100% {
+ transform: rotate(0deg);
+ }
+}
+@keyframes fa-jello {
+ 0% {
+ transform: scale(1, 1);
+ animation-timing-function: cubic-bezier(0.2, 0, 0.8, 1);
+ }
+ 12% {
+ transform: scale(var(--fa-jello-scale-x, 1.15), calc(2 - var(--fa-jello-scale-x, 1.15)));
+ animation-timing-function: cubic-bezier(0.3, 0, 0.7, 1);
+ }
+ 24% {
+ transform: scale(calc(2 - var(--fa-jello-scale-y, 1.12)), var(--fa-jello-scale-y, 1.12));
+ animation-timing-function: cubic-bezier(0.3, 0, 0.7, 1);
+ }
+ 36% {
+ transform: scale(calc(1 + (var(--fa-jello-scale-x, 1.15) - 1) * 0.5), calc(2 - (1 + (var(--fa-jello-scale-x, 1.15) - 1) * 0.5)));
+ animation-timing-function: cubic-bezier(0.4, 0, 0.6, 1);
+ }
+ 48% {
+ transform: scale(calc(2 - (1 + (var(--fa-jello-scale-y, 1.12) - 1) * 0.3)), calc(1 + (var(--fa-jello-scale-y, 1.12) - 1) * 0.3));
+ animation-timing-function: cubic-bezier(0.4, 0, 0.6, 1);
+ }
+ 58% {
+ transform: scale(1.02, 0.98);
+ animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
+ }
+ 68% {
+ transform: scale(1, 1);
+ }
+ 100% {
+ transform: scale(1, 1);
+ }
+}
+.fa-rotate-90 {
+ transform: rotate(90deg);
+}
+
+.fa-rotate-180 {
+ transform: rotate(180deg);
+}
+
+.fa-rotate-270 {
+ transform: rotate(270deg);
+}
+
+.fa-flip-horizontal {
+ transform: scale(-1, 1);
+}
+
+.fa-flip-vertical {
+ transform: scale(1, -1);
+}
+
+.fa-flip-both,
+.fa-flip-horizontal.fa-flip-vertical {
+ transform: scale(-1, -1);
+}
+
+.fa-rotate-by {
+ transform: rotate(var(--fa-rotate-angle, 0));
+}
+
+.fa-stack {
+ display: inline-block;
+ height: 2em;
+ line-height: 2em;
+ position: relative;
+ vertical-align: middle;
+ width: 2.5em;
+}
+
+.fa-stack-1x,
+.fa-stack-2x {
+ --fa-width: 100%;
+ inset: 0;
+ position: absolute;
+ text-align: center;
+ width: var(--fa-width);
+ z-index: var(--fa-stack-z-index, auto);
+}
+
+.fa-stack-1x {
+ line-height: inherit;
+}
+
+.fa-stack-2x {
+ font-size: 2em;
+}
+
+.fa-inverse {
+ color: var(--fa-inverse, #fff);
+}
+
+/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
+ readers do not read off random characters that represent icons */
+
+.fa-0 {
+ --fa: "\30 ";
+}
+
+.fa-1 {
+ --fa: "\31 ";
+}
+
+.fa-2 {
+ --fa: "\32 ";
+}
+
+.fa-3 {
+ --fa: "\33 ";
+}
+
+.fa-4 {
+ --fa: "\34 ";
+}
+
+.fa-5 {
+ --fa: "\35 ";
+}
+
+.fa-6 {
+ --fa: "\36 ";
+}
+
+.fa-7 {
+ --fa: "\37 ";
+}
+
+.fa-8 {
+ --fa: "\38 ";
+}
+
+.fa-9 {
+ --fa: "\39 ";
+}
+
+.fa-exclamation {
+ --fa: "\!";
+}
+
+.fa-hashtag {
+ --fa: "\#";
+}
+
+.fa-dollar-sign {
+ --fa: "\$";
+}
+
+.fa-dollar {
+ --fa: "\$";
+}
+
+.fa-usd {
+ --fa: "\$";
+}
+
+.fa-percent {
+ --fa: "\%";
+}
+
+.fa-percentage {
+ --fa: "\%";
+}
+
+.fa-asterisk {
+ --fa: "\*";
+}
+
+.fa-plus {
+ --fa: "\+";
+}
+
+.fa-add {
+ --fa: "\+";
+}
+
+.fa-less-than {
+ --fa: "\<";
+}
+
+.fa-equals {
+ --fa: "\=";
+}
+
+.fa-greater-than {
+ --fa: "\>";
+}
+
+.fa-question {
+ --fa: "\?";
+}
+
+.fa-at {
+ --fa: "\@";
+}
+
+.fa-a {
+ --fa: "A";
+}
+
+.fa-b {
+ --fa: "B";
+}
+
+.fa-c {
+ --fa: "C";
+}
+
+.fa-d {
+ --fa: "D";
+}
+
+.fa-e {
+ --fa: "E";
+}
+
+.fa-f {
+ --fa: "F";
+}
+
+.fa-g {
+ --fa: "G";
+}
+
+.fa-h {
+ --fa: "H";
+}
+
+.fa-i {
+ --fa: "I";
+}
+
+.fa-j {
+ --fa: "J";
+}
+
+.fa-k {
+ --fa: "K";
+}
+
+.fa-l {
+ --fa: "L";
+}
+
+.fa-m {
+ --fa: "M";
+}
+
+.fa-n {
+ --fa: "N";
+}
+
+.fa-o {
+ --fa: "O";
+}
+
+.fa-p {
+ --fa: "P";
+}
+
+.fa-q {
+ --fa: "Q";
+}
+
+.fa-r {
+ --fa: "R";
+}
+
+.fa-s {
+ --fa: "S";
+}
+
+.fa-t {
+ --fa: "T";
+}
+
+.fa-u {
+ --fa: "U";
+}
+
+.fa-v {
+ --fa: "V";
+}
+
+.fa-w {
+ --fa: "W";
+}
+
+.fa-x {
+ --fa: "X";
+}
+
+.fa-y {
+ --fa: "Y";
+}
+
+.fa-z {
+ --fa: "Z";
+}
+
+.fa-faucet {
+ --fa: "\e005";
+}
+
+.fa-faucet-drip {
+ --fa: "\e006";
+}
+
+.fa-house-chimney-window {
+ --fa: "\e00d";
+}
+
+.fa-house-signal {
+ --fa: "\e012";
+}
+
+.fa-temperature-arrow-down {
+ --fa: "\e03f";
+}
+
+.fa-temperature-down {
+ --fa: "\e03f";
+}
+
+.fa-temperature-arrow-up {
+ --fa: "\e040";
+}
+
+.fa-temperature-up {
+ --fa: "\e040";
+}
+
+.fa-trailer {
+ --fa: "\e041";
+}
+
+.fa-bacteria {
+ --fa: "\e059";
+}
+
+.fa-bacterium {
+ --fa: "\e05a";
+}
+
+.fa-box-tissue {
+ --fa: "\e05b";
+}
+
+.fa-hand-holding-medical {
+ --fa: "\e05c";
+}
+
+.fa-hand-sparkles {
+ --fa: "\e05d";
+}
+
+.fa-hands-bubbles {
+ --fa: "\e05e";
+}
+
+.fa-hands-wash {
+ --fa: "\e05e";
+}
+
+.fa-handshake-slash {
+ --fa: "\e060";
+}
+
+.fa-handshake-alt-slash {
+ --fa: "\e060";
+}
+
+.fa-handshake-simple-slash {
+ --fa: "\e060";
+}
+
+.fa-head-side-cough {
+ --fa: "\e061";
+}
+
+.fa-head-side-cough-slash {
+ --fa: "\e062";
+}
+
+.fa-head-side-mask {
+ --fa: "\e063";
+}
+
+.fa-head-side-virus {
+ --fa: "\e064";
+}
+
+.fa-house-chimney-user {
+ --fa: "\e065";
+}
+
+.fa-house-laptop {
+ --fa: "\e066";
+}
+
+.fa-laptop-house {
+ --fa: "\e066";
+}
+
+.fa-lungs-virus {
+ --fa: "\e067";
+}
+
+.fa-people-arrows {
+ --fa: "\e068";
+}
+
+.fa-people-arrows-left-right {
+ --fa: "\e068";
+}
+
+.fa-plane-slash {
+ --fa: "\e069";
+}
+
+.fa-pump-medical {
+ --fa: "\e06a";
+}
+
+.fa-pump-soap {
+ --fa: "\e06b";
+}
+
+.fa-shield-virus {
+ --fa: "\e06c";
+}
+
+.fa-sink {
+ --fa: "\e06d";
+}
+
+.fa-soap {
+ --fa: "\e06e";
+}
+
+.fa-stopwatch-20 {
+ --fa: "\e06f";
+}
+
+.fa-shop-slash {
+ --fa: "\e070";
+}
+
+.fa-store-alt-slash {
+ --fa: "\e070";
+}
+
+.fa-store-slash {
+ --fa: "\e071";
+}
+
+.fa-toilet-paper-slash {
+ --fa: "\e072";
+}
+
+.fa-users-slash {
+ --fa: "\e073";
+}
+
+.fa-virus {
+ --fa: "\e074";
+}
+
+.fa-virus-slash {
+ --fa: "\e075";
+}
+
+.fa-viruses {
+ --fa: "\e076";
+}
+
+.fa-vest {
+ --fa: "\e085";
+}
+
+.fa-vest-patches {
+ --fa: "\e086";
+}
+
+.fa-arrow-trend-down {
+ --fa: "\e097";
+}
+
+.fa-arrow-trend-up {
+ --fa: "\e098";
+}
+
+.fa-arrow-up-from-bracket {
+ --fa: "\e09a";
+}
+
+.fa-austral-sign {
+ --fa: "\e0a9";
+}
+
+.fa-baht-sign {
+ --fa: "\e0ac";
+}
+
+.fa-bitcoin-sign {
+ --fa: "\e0b4";
+}
+
+.fa-bolt-lightning {
+ --fa: "\e0b7";
+}
+
+.fa-book-bookmark {
+ --fa: "\e0bb";
+}
+
+.fa-camera-rotate {
+ --fa: "\e0d8";
+}
+
+.fa-cedi-sign {
+ --fa: "\e0df";
+}
+
+.fa-chart-column {
+ --fa: "\e0e3";
+}
+
+.fa-chart-gantt {
+ --fa: "\e0e4";
+}
+
+.fa-clapperboard {
+ --fa: "\e131";
+}
+
+.fa-closed-captioning-slash {
+ --fa: "\e135";
+}
+
+.fa-clover {
+ --fa: "\e139";
+}
+
+.fa-code-compare {
+ --fa: "\e13a";
+}
+
+.fa-code-fork {
+ --fa: "\e13b";
+}
+
+.fa-code-pull-request {
+ --fa: "\e13c";
+}
+
+.fa-colon-sign {
+ --fa: "\e140";
+}
+
+.fa-cruzeiro-sign {
+ --fa: "\e152";
+}
+
+.fa-display {
+ --fa: "\e163";
+}
+
+.fa-dong-sign {
+ --fa: "\e169";
+}
+
+.fa-elevator {
+ --fa: "\e16d";
+}
+
+.fa-filter-circle-xmark {
+ --fa: "\e17b";
+}
+
+.fa-florin-sign {
+ --fa: "\e184";
+}
+
+.fa-folder-closed {
+ --fa: "\e185";
+}
+
+.fa-franc-sign {
+ --fa: "\e18f";
+}
+
+.fa-guarani-sign {
+ --fa: "\e19a";
+}
+
+.fa-gun {
+ --fa: "\e19b";
+}
+
+.fa-hands-clapping {
+ --fa: "\e1a8";
+}
+
+.fa-house-user {
+ --fa: "\e1b0";
+}
+
+.fa-home-user {
+ --fa: "\e1b0";
+}
+
+.fa-indian-rupee-sign {
+ --fa: "\e1bc";
+}
+
+.fa-indian-rupee {
+ --fa: "\e1bc";
+}
+
+.fa-inr {
+ --fa: "\e1bc";
+}
+
+.fa-kip-sign {
+ --fa: "\e1c4";
+}
+
+.fa-lari-sign {
+ --fa: "\e1c8";
+}
+
+.fa-litecoin-sign {
+ --fa: "\e1d3";
+}
+
+.fa-manat-sign {
+ --fa: "\e1d5";
+}
+
+.fa-mask-face {
+ --fa: "\e1d7";
+}
+
+.fa-mill-sign {
+ --fa: "\e1ed";
+}
+
+.fa-money-bills {
+ --fa: "\e1f3";
+}
+
+.fa-naira-sign {
+ --fa: "\e1f6";
+}
+
+.fa-notdef {
+ --fa: "\e1fe";
+}
+
+.fa-panorama {
+ --fa: "\e209";
+}
+
+.fa-peseta-sign {
+ --fa: "\e221";
+}
+
+.fa-peso-sign {
+ --fa: "\e222";
+}
+
+.fa-plane-up {
+ --fa: "\e22d";
+}
+
+.fa-rupiah-sign {
+ --fa: "\e23d";
+}
+
+.fa-stairs {
+ --fa: "\e289";
+}
+
+.fa-timeline {
+ --fa: "\e29c";
+}
+
+.fa-truck-front {
+ --fa: "\e2b7";
+}
+
+.fa-turkish-lira-sign {
+ --fa: "\e2bb";
+}
+
+.fa-try {
+ --fa: "\e2bb";
+}
+
+.fa-turkish-lira {
+ --fa: "\e2bb";
+}
+
+.fa-vault {
+ --fa: "\e2c5";
+}
+
+.fa-wand-magic-sparkles {
+ --fa: "\e2ca";
+}
+
+.fa-magic-wand-sparkles {
+ --fa: "\e2ca";
+}
+
+.fa-wheat-awn {
+ --fa: "\e2cd";
+}
+
+.fa-wheat-alt {
+ --fa: "\e2cd";
+}
+
+.fa-wheelchair-move {
+ --fa: "\e2ce";
+}
+
+.fa-wheelchair-alt {
+ --fa: "\e2ce";
+}
+
+.fa-bangladeshi-taka-sign {
+ --fa: "\e2e6";
+}
+
+.fa-bowl-rice {
+ --fa: "\e2eb";
+}
+
+.fa-person-pregnant {
+ --fa: "\e31e";
+}
+
+.fa-house-chimney {
+ --fa: "\e3af";
+}
+
+.fa-home-lg {
+ --fa: "\e3af";
+}
+
+.fa-house-crack {
+ --fa: "\e3b1";
+}
+
+.fa-house-medical {
+ --fa: "\e3b2";
+}
+
+.fa-cent-sign {
+ --fa: "\e3f5";
+}
+
+.fa-plus-minus {
+ --fa: "\e43c";
+}
+
+.fa-sailboat {
+ --fa: "\e445";
+}
+
+.fa-section {
+ --fa: "\e447";
+}
+
+.fa-shrimp {
+ --fa: "\e448";
+}
+
+.fa-brazilian-real-sign {
+ --fa: "\e46c";
+}
+
+.fa-chart-simple {
+ --fa: "\e473";
+}
+
+.fa-diagram-next {
+ --fa: "\e476";
+}
+
+.fa-diagram-predecessor {
+ --fa: "\e477";
+}
+
+.fa-diagram-successor {
+ --fa: "\e47a";
+}
+
+.fa-earth-oceania {
+ --fa: "\e47b";
+}
+
+.fa-globe-oceania {
+ --fa: "\e47b";
+}
+
+.fa-bug-slash {
+ --fa: "\e490";
+}
+
+.fa-file-circle-plus {
+ --fa: "\e494";
+}
+
+.fa-shop-lock {
+ --fa: "\e4a5";
+}
+
+.fa-virus-covid {
+ --fa: "\e4a8";
+}
+
+.fa-virus-covid-slash {
+ --fa: "\e4a9";
+}
+
+.fa-anchor-circle-check {
+ --fa: "\e4aa";
+}
+
+.fa-anchor-circle-exclamation {
+ --fa: "\e4ab";
+}
+
+.fa-anchor-circle-xmark {
+ --fa: "\e4ac";
+}
+
+.fa-anchor-lock {
+ --fa: "\e4ad";
+}
+
+.fa-arrow-down-up-across-line {
+ --fa: "\e4af";
+}
+
+.fa-arrow-down-up-lock {
+ --fa: "\e4b0";
+}
+
+.fa-arrow-right-to-city {
+ --fa: "\e4b3";
+}
+
+.fa-arrow-up-from-ground-water {
+ --fa: "\e4b5";
+}
+
+.fa-arrow-up-from-water-pump {
+ --fa: "\e4b6";
+}
+
+.fa-arrow-up-right-dots {
+ --fa: "\e4b7";
+}
+
+.fa-arrows-down-to-line {
+ --fa: "\e4b8";
+}
+
+.fa-arrows-down-to-people {
+ --fa: "\e4b9";
+}
+
+.fa-arrows-left-right-to-line {
+ --fa: "\e4ba";
+}
+
+.fa-arrows-spin {
+ --fa: "\e4bb";
+}
+
+.fa-arrows-split-up-and-left {
+ --fa: "\e4bc";
+}
+
+.fa-arrows-to-circle {
+ --fa: "\e4bd";
+}
+
+.fa-arrows-to-dot {
+ --fa: "\e4be";
+}
+
+.fa-arrows-to-eye {
+ --fa: "\e4bf";
+}
+
+.fa-arrows-turn-right {
+ --fa: "\e4c0";
+}
+
+.fa-arrows-turn-to-dots {
+ --fa: "\e4c1";
+}
+
+.fa-arrows-up-to-line {
+ --fa: "\e4c2";
+}
+
+.fa-bore-hole {
+ --fa: "\e4c3";
+}
+
+.fa-bottle-droplet {
+ --fa: "\e4c4";
+}
+
+.fa-bottle-water {
+ --fa: "\e4c5";
+}
+
+.fa-bowl-food {
+ --fa: "\e4c6";
+}
+
+.fa-boxes-packing {
+ --fa: "\e4c7";
+}
+
+.fa-bridge {
+ --fa: "\e4c8";
+}
+
+.fa-bridge-circle-check {
+ --fa: "\e4c9";
+}
+
+.fa-bridge-circle-exclamation {
+ --fa: "\e4ca";
+}
+
+.fa-bridge-circle-xmark {
+ --fa: "\e4cb";
+}
+
+.fa-bridge-lock {
+ --fa: "\e4cc";
+}
+
+.fa-bridge-water {
+ --fa: "\e4ce";
+}
+
+.fa-bucket {
+ --fa: "\e4cf";
+}
+
+.fa-bugs {
+ --fa: "\e4d0";
+}
+
+.fa-building-circle-arrow-right {
+ --fa: "\e4d1";
+}
+
+.fa-building-circle-check {
+ --fa: "\e4d2";
+}
+
+.fa-building-circle-exclamation {
+ --fa: "\e4d3";
+}
+
+.fa-building-circle-xmark {
+ --fa: "\e4d4";
+}
+
+.fa-building-flag {
+ --fa: "\e4d5";
+}
+
+.fa-building-lock {
+ --fa: "\e4d6";
+}
+
+.fa-building-ngo {
+ --fa: "\e4d7";
+}
+
+.fa-building-shield {
+ --fa: "\e4d8";
+}
+
+.fa-building-un {
+ --fa: "\e4d9";
+}
+
+.fa-building-user {
+ --fa: "\e4da";
+}
+
+.fa-building-wheat {
+ --fa: "\e4db";
+}
+
+.fa-burst {
+ --fa: "\e4dc";
+}
+
+.fa-car-on {
+ --fa: "\e4dd";
+}
+
+.fa-car-tunnel {
+ --fa: "\e4de";
+}
+
+.fa-child-combatant {
+ --fa: "\e4e0";
+}
+
+.fa-child-rifle {
+ --fa: "\e4e0";
+}
+
+.fa-children {
+ --fa: "\e4e1";
+}
+
+.fa-circle-nodes {
+ --fa: "\e4e2";
+}
+
+.fa-clipboard-question {
+ --fa: "\e4e3";
+}
+
+.fa-cloud-showers-water {
+ --fa: "\e4e4";
+}
+
+.fa-computer {
+ --fa: "\e4e5";
+}
+
+.fa-cubes-stacked {
+ --fa: "\e4e6";
+}
+
+.fa-envelope-circle-check {
+ --fa: "\e4e8";
+}
+
+.fa-explosion {
+ --fa: "\e4e9";
+}
+
+.fa-ferry {
+ --fa: "\e4ea";
+}
+
+.fa-file-circle-exclamation {
+ --fa: "\e4eb";
+}
+
+.fa-file-circle-minus {
+ --fa: "\e4ed";
+}
+
+.fa-file-circle-question {
+ --fa: "\e4ef";
+}
+
+.fa-file-shield {
+ --fa: "\e4f0";
+}
+
+.fa-fire-burner {
+ --fa: "\e4f1";
+}
+
+.fa-fish-fins {
+ --fa: "\e4f2";
+}
+
+.fa-flask-vial {
+ --fa: "\e4f3";
+}
+
+.fa-glass-water {
+ --fa: "\e4f4";
+}
+
+.fa-glass-water-droplet {
+ --fa: "\e4f5";
+}
+
+.fa-group-arrows-rotate {
+ --fa: "\e4f6";
+}
+
+.fa-hand-holding-hand {
+ --fa: "\e4f7";
+}
+
+.fa-handcuffs {
+ --fa: "\e4f8";
+}
+
+.fa-hands-bound {
+ --fa: "\e4f9";
+}
+
+.fa-hands-holding-child {
+ --fa: "\e4fa";
+}
+
+.fa-hands-holding-circle {
+ --fa: "\e4fb";
+}
+
+.fa-heart-circle-bolt {
+ --fa: "\e4fc";
+}
+
+.fa-heart-circle-check {
+ --fa: "\e4fd";
+}
+
+.fa-heart-circle-exclamation {
+ --fa: "\e4fe";
+}
+
+.fa-heart-circle-minus {
+ --fa: "\e4ff";
+}
+
+.fa-heart-circle-plus {
+ --fa: "\e500";
+}
+
+.fa-heart-circle-xmark {
+ --fa: "\e501";
+}
+
+.fa-helicopter-symbol {
+ --fa: "\e502";
+}
+
+.fa-helmet-un {
+ --fa: "\e503";
+}
+
+.fa-hill-avalanche {
+ --fa: "\e507";
+}
+
+.fa-hill-rockslide {
+ --fa: "\e508";
+}
+
+.fa-house-circle-check {
+ --fa: "\e509";
+}
+
+.fa-house-circle-exclamation {
+ --fa: "\e50a";
+}
+
+.fa-house-circle-xmark {
+ --fa: "\e50b";
+}
+
+.fa-house-fire {
+ --fa: "\e50c";
+}
+
+.fa-house-flag {
+ --fa: "\e50d";
+}
+
+.fa-house-flood-water {
+ --fa: "\e50e";
+}
+
+.fa-house-flood-water-circle-arrow-right {
+ --fa: "\e50f";
+}
+
+.fa-house-lock {
+ --fa: "\e510";
+}
+
+.fa-house-medical-circle-check {
+ --fa: "\e511";
+}
+
+.fa-house-medical-circle-exclamation {
+ --fa: "\e512";
+}
+
+.fa-house-medical-circle-xmark {
+ --fa: "\e513";
+}
+
+.fa-house-medical-flag {
+ --fa: "\e514";
+}
+
+.fa-house-tsunami {
+ --fa: "\e515";
+}
+
+.fa-jar {
+ --fa: "\e516";
+}
+
+.fa-jar-wheat {
+ --fa: "\e517";
+}
+
+.fa-jet-fighter-up {
+ --fa: "\e518";
+}
+
+.fa-jug-detergent {
+ --fa: "\e519";
+}
+
+.fa-kitchen-set {
+ --fa: "\e51a";
+}
+
+.fa-land-mine-on {
+ --fa: "\e51b";
+}
+
+.fa-landmark-flag {
+ --fa: "\e51c";
+}
+
+.fa-laptop-file {
+ --fa: "\e51d";
+}
+
+.fa-lines-leaning {
+ --fa: "\e51e";
+}
+
+.fa-location-pin-lock {
+ --fa: "\e51f";
+}
+
+.fa-locust {
+ --fa: "\e520";
+}
+
+.fa-magnifying-glass-arrow-right {
+ --fa: "\e521";
+}
+
+.fa-magnifying-glass-chart {
+ --fa: "\e522";
+}
+
+.fa-mars-and-venus-burst {
+ --fa: "\e523";
+}
+
+.fa-mask-ventilator {
+ --fa: "\e524";
+}
+
+.fa-mattress-pillow {
+ --fa: "\e525";
+}
+
+.fa-mobile-retro {
+ --fa: "\e527";
+}
+
+.fa-money-bill-transfer {
+ --fa: "\e528";
+}
+
+.fa-money-bill-trend-up {
+ --fa: "\e529";
+}
+
+.fa-money-bill-wheat {
+ --fa: "\e52a";
+}
+
+.fa-mosquito {
+ --fa: "\e52b";
+}
+
+.fa-mosquito-net {
+ --fa: "\e52c";
+}
+
+.fa-mound {
+ --fa: "\e52d";
+}
+
+.fa-mountain-city {
+ --fa: "\e52e";
+}
+
+.fa-mountain-sun {
+ --fa: "\e52f";
+}
+
+.fa-oil-well {
+ --fa: "\e532";
+}
+
+.fa-people-group {
+ --fa: "\e533";
+}
+
+.fa-people-line {
+ --fa: "\e534";
+}
+
+.fa-people-pulling {
+ --fa: "\e535";
+}
+
+.fa-people-robbery {
+ --fa: "\e536";
+}
+
+.fa-people-roof {
+ --fa: "\e537";
+}
+
+.fa-person-arrow-down-to-line {
+ --fa: "\e538";
+}
+
+.fa-person-arrow-up-from-line {
+ --fa: "\e539";
+}
+
+.fa-person-breastfeeding {
+ --fa: "\e53a";
+}
+
+.fa-person-burst {
+ --fa: "\e53b";
+}
+
+.fa-person-cane {
+ --fa: "\e53c";
+}
+
+.fa-person-chalkboard {
+ --fa: "\e53d";
+}
+
+.fa-person-circle-check {
+ --fa: "\e53e";
+}
+
+.fa-person-circle-exclamation {
+ --fa: "\e53f";
+}
+
+.fa-person-circle-minus {
+ --fa: "\e540";
+}
+
+.fa-person-circle-plus {
+ --fa: "\e541";
+}
+
+.fa-person-circle-question {
+ --fa: "\e542";
+}
+
+.fa-person-circle-xmark {
+ --fa: "\e543";
+}
+
+.fa-person-dress-burst {
+ --fa: "\e544";
+}
+
+.fa-person-drowning {
+ --fa: "\e545";
+}
+
+.fa-person-falling {
+ --fa: "\e546";
+}
+
+.fa-person-falling-burst {
+ --fa: "\e547";
+}
+
+.fa-person-half-dress {
+ --fa: "\e548";
+}
+
+.fa-person-harassing {
+ --fa: "\e549";
+}
+
+.fa-person-military-pointing {
+ --fa: "\e54a";
+}
+
+.fa-person-military-rifle {
+ --fa: "\e54b";
+}
+
+.fa-person-military-to-person {
+ --fa: "\e54c";
+}
+
+.fa-person-rays {
+ --fa: "\e54d";
+}
+
+.fa-person-rifle {
+ --fa: "\e54e";
+}
+
+.fa-person-shelter {
+ --fa: "\e54f";
+}
+
+.fa-person-walking-arrow-loop-left {
+ --fa: "\e551";
+}
+
+.fa-person-walking-arrow-right {
+ --fa: "\e552";
+}
+
+.fa-person-walking-dashed-line-arrow-right {
+ --fa: "\e553";
+}
+
+.fa-person-walking-luggage {
+ --fa: "\e554";
+}
+
+.fa-plane-circle-check {
+ --fa: "\e555";
+}
+
+.fa-plane-circle-exclamation {
+ --fa: "\e556";
+}
+
+.fa-plane-circle-xmark {
+ --fa: "\e557";
+}
+
+.fa-plane-lock {
+ --fa: "\e558";
+}
+
+.fa-plate-wheat {
+ --fa: "\e55a";
+}
+
+.fa-plug-circle-bolt {
+ --fa: "\e55b";
+}
+
+.fa-plug-circle-check {
+ --fa: "\e55c";
+}
+
+.fa-plug-circle-exclamation {
+ --fa: "\e55d";
+}
+
+.fa-plug-circle-minus {
+ --fa: "\e55e";
+}
+
+.fa-plug-circle-plus {
+ --fa: "\e55f";
+}
+
+.fa-plug-circle-xmark {
+ --fa: "\e560";
+}
+
+.fa-ranking-star {
+ --fa: "\e561";
+}
+
+.fa-road-barrier {
+ --fa: "\e562";
+}
+
+.fa-road-bridge {
+ --fa: "\e563";
+}
+
+.fa-road-circle-check {
+ --fa: "\e564";
+}
+
+.fa-road-circle-exclamation {
+ --fa: "\e565";
+}
+
+.fa-road-circle-xmark {
+ --fa: "\e566";
+}
+
+.fa-road-lock {
+ --fa: "\e567";
+}
+
+.fa-road-spikes {
+ --fa: "\e568";
+}
+
+.fa-rug {
+ --fa: "\e569";
+}
+
+.fa-sack-xmark {
+ --fa: "\e56a";
+}
+
+.fa-school-circle-check {
+ --fa: "\e56b";
+}
+
+.fa-school-circle-exclamation {
+ --fa: "\e56c";
+}
+
+.fa-school-circle-xmark {
+ --fa: "\e56d";
+}
+
+.fa-school-flag {
+ --fa: "\e56e";
+}
+
+.fa-school-lock {
+ --fa: "\e56f";
+}
+
+.fa-sheet-plastic {
+ --fa: "\e571";
+}
+
+.fa-shield-cat {
+ --fa: "\e572";
+}
+
+.fa-shield-dog {
+ --fa: "\e573";
+}
+
+.fa-shield-heart {
+ --fa: "\e574";
+}
+
+.fa-square-nfi {
+ --fa: "\e576";
+}
+
+.fa-square-person-confined {
+ --fa: "\e577";
+}
+
+.fa-square-virus {
+ --fa: "\e578";
+}
+
+.fa-staff-snake {
+ --fa: "\e579";
+}
+
+.fa-rod-asclepius {
+ --fa: "\e579";
+}
+
+.fa-rod-snake {
+ --fa: "\e579";
+}
+
+.fa-staff-aesculapius {
+ --fa: "\e579";
+}
+
+.fa-sun-plant-wilt {
+ --fa: "\e57a";
+}
+
+.fa-tarp {
+ --fa: "\e57b";
+}
+
+.fa-tarp-droplet {
+ --fa: "\e57c";
+}
+
+.fa-tent {
+ --fa: "\e57d";
+}
+
+.fa-tent-arrow-down-to-line {
+ --fa: "\e57e";
+}
+
+.fa-tent-arrow-left-right {
+ --fa: "\e57f";
+}
+
+.fa-tent-arrow-turn-left {
+ --fa: "\e580";
+}
+
+.fa-tent-arrows-down {
+ --fa: "\e581";
+}
+
+.fa-tents {
+ --fa: "\e582";
+}
+
+.fa-toilet-portable {
+ --fa: "\e583";
+}
+
+.fa-toilets-portable {
+ --fa: "\e584";
+}
+
+.fa-tower-cell {
+ --fa: "\e585";
+}
+
+.fa-tower-observation {
+ --fa: "\e586";
+}
+
+.fa-tree-city {
+ --fa: "\e587";
+}
+
+.fa-trowel {
+ --fa: "\e589";
+}
+
+.fa-trowel-bricks {
+ --fa: "\e58a";
+}
+
+.fa-truck-arrow-right {
+ --fa: "\e58b";
+}
+
+.fa-truck-droplet {
+ --fa: "\e58c";
+}
+
+.fa-truck-field {
+ --fa: "\e58d";
+}
+
+.fa-truck-field-un {
+ --fa: "\e58e";
+}
+
+.fa-truck-plane {
+ --fa: "\e58f";
+}
+
+.fa-users-between-lines {
+ --fa: "\e591";
+}
+
+.fa-users-line {
+ --fa: "\e592";
+}
+
+.fa-users-rays {
+ --fa: "\e593";
+}
+
+.fa-users-rectangle {
+ --fa: "\e594";
+}
+
+.fa-users-viewfinder {
+ --fa: "\e595";
+}
+
+.fa-vial-circle-check {
+ --fa: "\e596";
+}
+
+.fa-vial-virus {
+ --fa: "\e597";
+}
+
+.fa-wheat-awn-circle-exclamation {
+ --fa: "\e598";
+}
+
+.fa-worm {
+ --fa: "\e599";
+}
+
+.fa-xmarks-lines {
+ --fa: "\e59a";
+}
+
+.fa-child-dress {
+ --fa: "\e59c";
+}
+
+.fa-child-reaching {
+ --fa: "\e59d";
+}
+
+.fa-file-circle-check {
+ --fa: "\e5a0";
+}
+
+.fa-file-circle-xmark {
+ --fa: "\e5a1";
+}
+
+.fa-person-through-window {
+ --fa: "\e5a9";
+}
+
+.fa-plant-wilt {
+ --fa: "\e5aa";
+}
+
+.fa-stapler {
+ --fa: "\e5af";
+}
+
+.fa-train-tram {
+ --fa: "\e5b4";
+}
+
+.fa-table-cells-column-lock {
+ --fa: "\e678";
+}
+
+.fa-table-cells-row-lock {
+ --fa: "\e67a";
+}
+
+.fa-web-awesome {
+ --fa: "\e682";
+}
+
+.fa-thumbtack-slash {
+ --fa: "\e68f";
+}
+
+.fa-thumb-tack-slash {
+ --fa: "\e68f";
+}
+
+.fa-table-cells-row-unlock {
+ --fa: "\e691";
+}
+
+.fa-chart-diagram {
+ --fa: "\e695";
+}
+
+.fa-comment-nodes {
+ --fa: "\e696";
+}
+
+.fa-file-fragment {
+ --fa: "\e697";
+}
+
+.fa-file-half-dashed {
+ --fa: "\e698";
+}
+
+.fa-hexagon-nodes {
+ --fa: "\e699";
+}
+
+.fa-hexagon-nodes-bolt {
+ --fa: "\e69a";
+}
+
+.fa-square-binary {
+ --fa: "\e69b";
+}
+
+.fa-pentagon {
+ --fa: "\e790";
+}
+
+.fa-non-binary {
+ --fa: "\e807";
+}
+
+.fa-spiral {
+ --fa: "\e80a";
+}
+
+.fa-picture-in-picture {
+ --fa: "\e80b";
+}
+
+.fa-mobile-vibrate {
+ --fa: "\e816";
+}
+
+.fa-single-quote-left {
+ --fa: "\e81b";
+}
+
+.fa-single-quote-right {
+ --fa: "\e81c";
+}
+
+.fa-bus-side {
+ --fa: "\e81d";
+}
+
+.fa-septagon {
+ --fa: "\e820";
+}
+
+.fa-heptagon {
+ --fa: "\e820";
+}
+
+.fa-aquarius {
+ --fa: "\e845";
+}
+
+.fa-aries {
+ --fa: "\e846";
+}
+
+.fa-cancer {
+ --fa: "\e847";
+}
+
+.fa-capricorn {
+ --fa: "\e848";
+}
+
+.fa-gemini {
+ --fa: "\e849";
+}
+
+.fa-leo {
+ --fa: "\e84a";
+}
+
+.fa-libra {
+ --fa: "\e84b";
+}
+
+.fa-pisces {
+ --fa: "\e84c";
+}
+
+.fa-sagittarius {
+ --fa: "\e84d";
+}
+
+.fa-scorpio {
+ --fa: "\e84e";
+}
+
+.fa-taurus {
+ --fa: "\e84f";
+}
+
+.fa-virgo {
+ --fa: "\e850";
+}
+
+.fa-martini-glass-empty {
+ --fa: "\f000";
+}
+
+.fa-glass-martini {
+ --fa: "\f000";
+}
+
+.fa-music {
+ --fa: "\f001";
+}
+
+.fa-magnifying-glass {
+ --fa: "\f002";
+}
+
+.fa-search {
+ --fa: "\f002";
+}
+
+.fa-heart {
+ --fa: "\f004";
+}
+
+.fa-star {
+ --fa: "\f005";
+}
+
+.fa-user {
+ --fa: "\f007";
+}
+
+.fa-user-alt {
+ --fa: "\f007";
+}
+
+.fa-user-large {
+ --fa: "\f007";
+}
+
+.fa-film {
+ --fa: "\f008";
+}
+
+.fa-film-alt {
+ --fa: "\f008";
+}
+
+.fa-film-simple {
+ --fa: "\f008";
+}
+
+.fa-table-cells-large {
+ --fa: "\f009";
+}
+
+.fa-th-large {
+ --fa: "\f009";
+}
+
+.fa-table-cells {
+ --fa: "\f00a";
+}
+
+.fa-th {
+ --fa: "\f00a";
+}
+
+.fa-table-list {
+ --fa: "\f00b";
+}
+
+.fa-th-list {
+ --fa: "\f00b";
+}
+
+.fa-check {
+ --fa: "\f00c";
+}
+
+.fa-xmark {
+ --fa: "\f00d";
+}
+
+.fa-close {
+ --fa: "\f00d";
+}
+
+.fa-multiply {
+ --fa: "\f00d";
+}
+
+.fa-remove {
+ --fa: "\f00d";
+}
+
+.fa-times {
+ --fa: "\f00d";
+}
+
+.fa-magnifying-glass-plus {
+ --fa: "\f00e";
+}
+
+.fa-search-plus {
+ --fa: "\f00e";
+}
+
+.fa-magnifying-glass-minus {
+ --fa: "\f010";
+}
+
+.fa-search-minus {
+ --fa: "\f010";
+}
+
+.fa-power-off {
+ --fa: "\f011";
+}
+
+.fa-signal {
+ --fa: "\f012";
+}
+
+.fa-signal-5 {
+ --fa: "\f012";
+}
+
+.fa-signal-perfect {
+ --fa: "\f012";
+}
+
+.fa-gear {
+ --fa: "\f013";
+}
+
+.fa-cog {
+ --fa: "\f013";
+}
+
+.fa-house {
+ --fa: "\f015";
+}
+
+.fa-home {
+ --fa: "\f015";
+}
+
+.fa-home-alt {
+ --fa: "\f015";
+}
+
+.fa-home-lg-alt {
+ --fa: "\f015";
+}
+
+.fa-clock {
+ --fa: "\f017";
+}
+
+.fa-clock-four {
+ --fa: "\f017";
+}
+
+.fa-road {
+ --fa: "\f018";
+}
+
+.fa-download {
+ --fa: "\f019";
+}
+
+.fa-inbox {
+ --fa: "\f01c";
+}
+
+.fa-arrow-rotate-right {
+ --fa: "\f01e";
+}
+
+.fa-arrow-right-rotate {
+ --fa: "\f01e";
+}
+
+.fa-arrow-rotate-forward {
+ --fa: "\f01e";
+}
+
+.fa-redo {
+ --fa: "\f01e";
+}
+
+.fa-arrows-rotate {
+ --fa: "\f021";
+}
+
+.fa-refresh {
+ --fa: "\f021";
+}
+
+.fa-sync {
+ --fa: "\f021";
+}
+
+.fa-rectangle-list {
+ --fa: "\f022";
+}
+
+.fa-list-alt {
+ --fa: "\f022";
+}
+
+.fa-lock {
+ --fa: "\f023";
+}
+
+.fa-flag {
+ --fa: "\f024";
+}
+
+.fa-headphones {
+ --fa: "\f025";
+}
+
+.fa-headphones-alt {
+ --fa: "\f025";
+}
+
+.fa-headphones-simple {
+ --fa: "\f025";
+}
+
+.fa-volume-off {
+ --fa: "\f026";
+}
+
+.fa-volume-low {
+ --fa: "\f027";
+}
+
+.fa-volume-down {
+ --fa: "\f027";
+}
+
+.fa-volume-high {
+ --fa: "\f028";
+}
+
+.fa-volume-up {
+ --fa: "\f028";
+}
+
+.fa-qrcode {
+ --fa: "\f029";
+}
+
+.fa-barcode {
+ --fa: "\f02a";
+}
+
+.fa-tag {
+ --fa: "\f02b";
+}
+
+.fa-tags {
+ --fa: "\f02c";
+}
+
+.fa-book {
+ --fa: "\f02d";
+}
+
+.fa-bookmark {
+ --fa: "\f02e";
+}
+
+.fa-print {
+ --fa: "\f02f";
+}
+
+.fa-camera {
+ --fa: "\f030";
+}
+
+.fa-camera-alt {
+ --fa: "\f030";
+}
+
+.fa-font {
+ --fa: "\f031";
+}
+
+.fa-bold {
+ --fa: "\f032";
+}
+
+.fa-italic {
+ --fa: "\f033";
+}
+
+.fa-text-height {
+ --fa: "\f034";
+}
+
+.fa-text-width {
+ --fa: "\f035";
+}
+
+.fa-align-left {
+ --fa: "\f036";
+}
+
+.fa-align-center {
+ --fa: "\f037";
+}
+
+.fa-align-right {
+ --fa: "\f038";
+}
+
+.fa-align-justify {
+ --fa: "\f039";
+}
+
+.fa-list {
+ --fa: "\f03a";
+}
+
+.fa-list-squares {
+ --fa: "\f03a";
+}
+
+.fa-outdent {
+ --fa: "\f03b";
+}
+
+.fa-dedent {
+ --fa: "\f03b";
+}
+
+.fa-indent {
+ --fa: "\f03c";
+}
+
+.fa-video {
+ --fa: "\f03d";
+}
+
+.fa-video-camera {
+ --fa: "\f03d";
+}
+
+.fa-image {
+ --fa: "\f03e";
+}
+
+.fa-location-pin {
+ --fa: "\f041";
+}
+
+.fa-map-marker {
+ --fa: "\f041";
+}
+
+.fa-circle-half-stroke {
+ --fa: "\f042";
+}
+
+.fa-adjust {
+ --fa: "\f042";
+}
+
+.fa-droplet {
+ --fa: "\f043";
+}
+
+.fa-tint {
+ --fa: "\f043";
+}
+
+.fa-pen-to-square {
+ --fa: "\f044";
+}
+
+.fa-edit {
+ --fa: "\f044";
+}
+
+.fa-arrows-up-down-left-right {
+ --fa: "\f047";
+}
+
+.fa-arrows {
+ --fa: "\f047";
+}
+
+.fa-backward-step {
+ --fa: "\f048";
+}
+
+.fa-step-backward {
+ --fa: "\f048";
+}
+
+.fa-backward-fast {
+ --fa: "\f049";
+}
+
+.fa-fast-backward {
+ --fa: "\f049";
+}
+
+.fa-backward {
+ --fa: "\f04a";
+}
+
+.fa-play {
+ --fa: "\f04b";
+}
+
+.fa-pause {
+ --fa: "\f04c";
+}
+
+.fa-stop {
+ --fa: "\f04d";
+}
+
+.fa-forward {
+ --fa: "\f04e";
+}
+
+.fa-forward-fast {
+ --fa: "\f050";
+}
+
+.fa-fast-forward {
+ --fa: "\f050";
+}
+
+.fa-forward-step {
+ --fa: "\f051";
+}
+
+.fa-step-forward {
+ --fa: "\f051";
+}
+
+.fa-eject {
+ --fa: "\f052";
+}
+
+.fa-chevron-left {
+ --fa: "\f053";
+}
+
+.fa-chevron-right {
+ --fa: "\f054";
+}
+
+.fa-circle-plus {
+ --fa: "\f055";
+}
+
+.fa-plus-circle {
+ --fa: "\f055";
+}
+
+.fa-circle-minus {
+ --fa: "\f056";
+}
+
+.fa-minus-circle {
+ --fa: "\f056";
+}
+
+.fa-circle-xmark {
+ --fa: "\f057";
+}
+
+.fa-times-circle {
+ --fa: "\f057";
+}
+
+.fa-xmark-circle {
+ --fa: "\f057";
+}
+
+.fa-circle-check {
+ --fa: "\f058";
+}
+
+.fa-check-circle {
+ --fa: "\f058";
+}
+
+.fa-circle-question {
+ --fa: "\f059";
+}
+
+.fa-question-circle {
+ --fa: "\f059";
+}
+
+.fa-circle-info {
+ --fa: "\f05a";
+}
+
+.fa-info-circle {
+ --fa: "\f05a";
+}
+
+.fa-crosshairs {
+ --fa: "\f05b";
+}
+
+.fa-ban {
+ --fa: "\f05e";
+}
+
+.fa-cancel {
+ --fa: "\f05e";
+}
+
+.fa-arrow-left {
+ --fa: "\f060";
+}
+
+.fa-arrow-right {
+ --fa: "\f061";
+}
+
+.fa-arrow-up {
+ --fa: "\f062";
+}
+
+.fa-arrow-down {
+ --fa: "\f063";
+}
+
+.fa-share {
+ --fa: "\f064";
+}
+
+.fa-mail-forward {
+ --fa: "\f064";
+}
+
+.fa-expand {
+ --fa: "\f065";
+}
+
+.fa-compress {
+ --fa: "\f066";
+}
+
+.fa-minus {
+ --fa: "\f068";
+}
+
+.fa-subtract {
+ --fa: "\f068";
+}
+
+.fa-circle-exclamation {
+ --fa: "\f06a";
+}
+
+.fa-exclamation-circle {
+ --fa: "\f06a";
+}
+
+.fa-gift {
+ --fa: "\f06b";
+}
+
+.fa-leaf {
+ --fa: "\f06c";
+}
+
+.fa-fire {
+ --fa: "\f06d";
+}
+
+.fa-eye {
+ --fa: "\f06e";
+}
+
+.fa-eye-slash {
+ --fa: "\f070";
+}
+
+.fa-triangle-exclamation {
+ --fa: "\f071";
+}
+
+.fa-exclamation-triangle {
+ --fa: "\f071";
+}
+
+.fa-warning {
+ --fa: "\f071";
+}
+
+.fa-plane {
+ --fa: "\f072";
+}
+
+.fa-calendar-days {
+ --fa: "\f073";
+}
+
+.fa-calendar-alt {
+ --fa: "\f073";
+}
+
+.fa-shuffle {
+ --fa: "\f074";
+}
+
+.fa-random {
+ --fa: "\f074";
+}
+
+.fa-comment {
+ --fa: "\f075";
+}
+
+.fa-magnet {
+ --fa: "\f076";
+}
+
+.fa-chevron-up {
+ --fa: "\f077";
+}
+
+.fa-chevron-down {
+ --fa: "\f078";
+}
+
+.fa-retweet {
+ --fa: "\f079";
+}
+
+.fa-cart-shopping {
+ --fa: "\f07a";
+}
+
+.fa-shopping-cart {
+ --fa: "\f07a";
+}
+
+.fa-folder {
+ --fa: "\f07b";
+}
+
+.fa-folder-blank {
+ --fa: "\f07b";
+}
+
+.fa-folder-open {
+ --fa: "\f07c";
+}
+
+.fa-arrows-up-down {
+ --fa: "\f07d";
+}
+
+.fa-arrows-v {
+ --fa: "\f07d";
+}
+
+.fa-arrows-left-right {
+ --fa: "\f07e";
+}
+
+.fa-arrows-h {
+ --fa: "\f07e";
+}
+
+.fa-chart-bar {
+ --fa: "\f080";
+}
+
+.fa-bar-chart {
+ --fa: "\f080";
+}
+
+.fa-camera-retro {
+ --fa: "\f083";
+}
+
+.fa-key {
+ --fa: "\f084";
+}
+
+.fa-gears {
+ --fa: "\f085";
+}
+
+.fa-cogs {
+ --fa: "\f085";
+}
+
+.fa-comments {
+ --fa: "\f086";
+}
+
+.fa-star-half {
+ --fa: "\f089";
+}
+
+.fa-arrow-right-from-bracket {
+ --fa: "\f08b";
+}
+
+.fa-sign-out {
+ --fa: "\f08b";
+}
+
+.fa-thumbtack {
+ --fa: "\f08d";
+}
+
+.fa-thumb-tack {
+ --fa: "\f08d";
+}
+
+.fa-arrow-up-right-from-square {
+ --fa: "\f08e";
+}
+
+.fa-external-link {
+ --fa: "\f08e";
+}
+
+.fa-arrow-right-to-bracket {
+ --fa: "\f090";
+}
+
+.fa-sign-in {
+ --fa: "\f090";
+}
+
+.fa-trophy {
+ --fa: "\f091";
+}
+
+.fa-upload {
+ --fa: "\f093";
+}
+
+.fa-lemon {
+ --fa: "\f094";
+}
+
+.fa-phone {
+ --fa: "\f095";
+}
+
+.fa-square-phone {
+ --fa: "\f098";
+}
+
+.fa-phone-square {
+ --fa: "\f098";
+}
+
+.fa-unlock {
+ --fa: "\f09c";
+}
+
+.fa-credit-card {
+ --fa: "\f09d";
+}
+
+.fa-credit-card-alt {
+ --fa: "\f09d";
+}
+
+.fa-rss {
+ --fa: "\f09e";
+}
+
+.fa-feed {
+ --fa: "\f09e";
+}
+
+.fa-hard-drive {
+ --fa: "\f0a0";
+}
+
+.fa-hdd {
+ --fa: "\f0a0";
+}
+
+.fa-bullhorn {
+ --fa: "\f0a1";
+}
+
+.fa-certificate {
+ --fa: "\f0a3";
+}
+
+.fa-hand-point-right {
+ --fa: "\f0a4";
+}
+
+.fa-hand-point-left {
+ --fa: "\f0a5";
+}
+
+.fa-hand-point-up {
+ --fa: "\f0a6";
+}
+
+.fa-hand-point-down {
+ --fa: "\f0a7";
+}
+
+.fa-circle-arrow-left {
+ --fa: "\f0a8";
+}
+
+.fa-arrow-circle-left {
+ --fa: "\f0a8";
+}
+
+.fa-circle-arrow-right {
+ --fa: "\f0a9";
+}
+
+.fa-arrow-circle-right {
+ --fa: "\f0a9";
+}
+
+.fa-circle-arrow-up {
+ --fa: "\f0aa";
+}
+
+.fa-arrow-circle-up {
+ --fa: "\f0aa";
+}
+
+.fa-circle-arrow-down {
+ --fa: "\f0ab";
+}
+
+.fa-arrow-circle-down {
+ --fa: "\f0ab";
+}
+
+.fa-globe {
+ --fa: "\f0ac";
+}
+
+.fa-wrench {
+ --fa: "\f0ad";
+}
+
+.fa-list-check {
+ --fa: "\f0ae";
+}
+
+.fa-tasks {
+ --fa: "\f0ae";
+}
+
+.fa-filter {
+ --fa: "\f0b0";
+}
+
+.fa-briefcase {
+ --fa: "\f0b1";
+}
+
+.fa-up-down-left-right {
+ --fa: "\f0b2";
+}
+
+.fa-arrows-alt {
+ --fa: "\f0b2";
+}
+
+.fa-users {
+ --fa: "\f0c0";
+}
+
+.fa-link {
+ --fa: "\f0c1";
+}
+
+.fa-chain {
+ --fa: "\f0c1";
+}
+
+.fa-cloud {
+ --fa: "\f0c2";
+}
+
+.fa-flask {
+ --fa: "\f0c3";
+}
+
+.fa-scissors {
+ --fa: "\f0c4";
+}
+
+.fa-cut {
+ --fa: "\f0c4";
+}
+
+.fa-copy {
+ --fa: "\f0c5";
+}
+
+.fa-paperclip {
+ --fa: "\f0c6";
+}
+
+.fa-floppy-disk {
+ --fa: "\f0c7";
+}
+
+.fa-save {
+ --fa: "\f0c7";
+}
+
+.fa-square {
+ --fa: "\f0c8";
+}
+
+.fa-bars {
+ --fa: "\f0c9";
+}
+
+.fa-navicon {
+ --fa: "\f0c9";
+}
+
+.fa-list-ul {
+ --fa: "\f0ca";
+}
+
+.fa-list-dots {
+ --fa: "\f0ca";
+}
+
+.fa-list-ol {
+ --fa: "\f0cb";
+}
+
+.fa-list-1-2 {
+ --fa: "\f0cb";
+}
+
+.fa-list-numeric {
+ --fa: "\f0cb";
+}
+
+.fa-strikethrough {
+ --fa: "\f0cc";
+}
+
+.fa-underline {
+ --fa: "\f0cd";
+}
+
+.fa-table {
+ --fa: "\f0ce";
+}
+
+.fa-wand-magic {
+ --fa: "\f0d0";
+}
+
+.fa-magic {
+ --fa: "\f0d0";
+}
+
+.fa-truck {
+ --fa: "\f0d1";
+}
+
+.fa-money-bill {
+ --fa: "\f0d6";
+}
+
+.fa-caret-down {
+ --fa: "\f0d7";
+}
+
+.fa-caret-up {
+ --fa: "\f0d8";
+}
+
+.fa-caret-left {
+ --fa: "\f0d9";
+}
+
+.fa-caret-right {
+ --fa: "\f0da";
+}
+
+.fa-table-columns {
+ --fa: "\f0db";
+}
+
+.fa-columns {
+ --fa: "\f0db";
+}
+
+.fa-sort {
+ --fa: "\f0dc";
+}
+
+.fa-unsorted {
+ --fa: "\f0dc";
+}
+
+.fa-sort-down {
+ --fa: "\f0dd";
+}
+
+.fa-sort-desc {
+ --fa: "\f0dd";
+}
+
+.fa-sort-up {
+ --fa: "\f0de";
+}
+
+.fa-sort-asc {
+ --fa: "\f0de";
+}
+
+.fa-envelope {
+ --fa: "\f0e0";
+}
+
+.fa-arrow-rotate-left {
+ --fa: "\f0e2";
+}
+
+.fa-arrow-left-rotate {
+ --fa: "\f0e2";
+}
+
+.fa-arrow-rotate-back {
+ --fa: "\f0e2";
+}
+
+.fa-arrow-rotate-backward {
+ --fa: "\f0e2";
+}
+
+.fa-undo {
+ --fa: "\f0e2";
+}
+
+.fa-gavel {
+ --fa: "\f0e3";
+}
+
+.fa-legal {
+ --fa: "\f0e3";
+}
+
+.fa-bolt {
+ --fa: "\f0e7";
+}
+
+.fa-zap {
+ --fa: "\f0e7";
+}
+
+.fa-sitemap {
+ --fa: "\f0e8";
+}
+
+.fa-umbrella {
+ --fa: "\f0e9";
+}
+
+.fa-paste {
+ --fa: "\f0ea";
+}
+
+.fa-file-clipboard {
+ --fa: "\f0ea";
+}
+
+.fa-lightbulb {
+ --fa: "\f0eb";
+}
+
+.fa-arrow-right-arrow-left {
+ --fa: "\f0ec";
+}
+
+.fa-exchange {
+ --fa: "\f0ec";
+}
+
+.fa-cloud-arrow-down {
+ --fa: "\f0ed";
+}
+
+.fa-cloud-download {
+ --fa: "\f0ed";
+}
+
+.fa-cloud-download-alt {
+ --fa: "\f0ed";
+}
+
+.fa-cloud-arrow-up {
+ --fa: "\f0ee";
+}
+
+.fa-cloud-upload {
+ --fa: "\f0ee";
+}
+
+.fa-cloud-upload-alt {
+ --fa: "\f0ee";
+}
+
+.fa-user-doctor {
+ --fa: "\f0f0";
+}
+
+.fa-user-md {
+ --fa: "\f0f0";
+}
+
+.fa-stethoscope {
+ --fa: "\f0f1";
+}
+
+.fa-suitcase {
+ --fa: "\f0f2";
+}
+
+.fa-bell {
+ --fa: "\f0f3";
+}
+
+.fa-mug-saucer {
+ --fa: "\f0f4";
+}
+
+.fa-coffee {
+ --fa: "\f0f4";
+}
+
+.fa-hospital {
+ --fa: "\f0f8";
+}
+
+.fa-hospital-alt {
+ --fa: "\f0f8";
+}
+
+.fa-hospital-wide {
+ --fa: "\f0f8";
+}
+
+.fa-truck-medical {
+ --fa: "\f0f9";
+}
+
+.fa-ambulance {
+ --fa: "\f0f9";
+}
+
+.fa-suitcase-medical {
+ --fa: "\f0fa";
+}
+
+.fa-medkit {
+ --fa: "\f0fa";
+}
+
+.fa-jet-fighter {
+ --fa: "\f0fb";
+}
+
+.fa-fighter-jet {
+ --fa: "\f0fb";
+}
+
+.fa-beer-mug-empty {
+ --fa: "\f0fc";
+}
+
+.fa-beer {
+ --fa: "\f0fc";
+}
+
+.fa-square-h {
+ --fa: "\f0fd";
+}
+
+.fa-h-square {
+ --fa: "\f0fd";
+}
+
+.fa-square-plus {
+ --fa: "\f0fe";
+}
+
+.fa-plus-square {
+ --fa: "\f0fe";
+}
+
+.fa-angles-left {
+ --fa: "\f100";
+}
+
+.fa-angle-double-left {
+ --fa: "\f100";
+}
+
+.fa-angles-right {
+ --fa: "\f101";
+}
+
+.fa-angle-double-right {
+ --fa: "\f101";
+}
+
+.fa-angles-up {
+ --fa: "\f102";
+}
+
+.fa-angle-double-up {
+ --fa: "\f102";
+}
+
+.fa-angles-down {
+ --fa: "\f103";
+}
+
+.fa-angle-double-down {
+ --fa: "\f103";
+}
+
+.fa-angle-left {
+ --fa: "\f104";
+}
+
+.fa-angle-right {
+ --fa: "\f105";
+}
+
+.fa-angle-up {
+ --fa: "\f106";
+}
+
+.fa-angle-down {
+ --fa: "\f107";
+}
+
+.fa-laptop {
+ --fa: "\f109";
+}
+
+.fa-tablet-button {
+ --fa: "\f10a";
+}
+
+.fa-mobile-button {
+ --fa: "\f10b";
+}
+
+.fa-quote-left {
+ --fa: "\f10d";
+}
+
+.fa-quote-left-alt {
+ --fa: "\f10d";
+}
+
+.fa-quote-right {
+ --fa: "\f10e";
+}
+
+.fa-quote-right-alt {
+ --fa: "\f10e";
+}
+
+.fa-spinner {
+ --fa: "\f110";
+}
+
+.fa-circle {
+ --fa: "\f111";
+}
+
+.fa-face-smile {
+ --fa: "\f118";
+}
+
+.fa-smile {
+ --fa: "\f118";
+}
+
+.fa-face-frown {
+ --fa: "\f119";
+}
+
+.fa-frown {
+ --fa: "\f119";
+}
+
+.fa-face-meh {
+ --fa: "\f11a";
+}
+
+.fa-meh {
+ --fa: "\f11a";
+}
+
+.fa-gamepad {
+ --fa: "\f11b";
+}
+
+.fa-keyboard {
+ --fa: "\f11c";
+}
+
+.fa-flag-checkered {
+ --fa: "\f11e";
+}
+
+.fa-terminal {
+ --fa: "\f120";
+}
+
+.fa-code {
+ --fa: "\f121";
+}
+
+.fa-reply-all {
+ --fa: "\f122";
+}
+
+.fa-mail-reply-all {
+ --fa: "\f122";
+}
+
+.fa-location-arrow {
+ --fa: "\f124";
+}
+
+.fa-crop {
+ --fa: "\f125";
+}
+
+.fa-code-branch {
+ --fa: "\f126";
+}
+
+.fa-link-slash {
+ --fa: "\f127";
+}
+
+.fa-chain-broken {
+ --fa: "\f127";
+}
+
+.fa-chain-slash {
+ --fa: "\f127";
+}
+
+.fa-unlink {
+ --fa: "\f127";
+}
+
+.fa-info {
+ --fa: "\f129";
+}
+
+.fa-superscript {
+ --fa: "\f12b";
+}
+
+.fa-subscript {
+ --fa: "\f12c";
+}
+
+.fa-eraser {
+ --fa: "\f12d";
+}
+
+.fa-puzzle-piece {
+ --fa: "\f12e";
+}
+
+.fa-microphone {
+ --fa: "\f130";
+}
+
+.fa-microphone-slash {
+ --fa: "\f131";
+}
+
+.fa-shield {
+ --fa: "\f132";
+}
+
+.fa-shield-blank {
+ --fa: "\f132";
+}
+
+.fa-calendar {
+ --fa: "\f133";
+}
+
+.fa-fire-extinguisher {
+ --fa: "\f134";
+}
+
+.fa-rocket {
+ --fa: "\f135";
+}
+
+.fa-circle-chevron-left {
+ --fa: "\f137";
+}
+
+.fa-chevron-circle-left {
+ --fa: "\f137";
+}
+
+.fa-circle-chevron-right {
+ --fa: "\f138";
+}
+
+.fa-chevron-circle-right {
+ --fa: "\f138";
+}
+
+.fa-circle-chevron-up {
+ --fa: "\f139";
+}
+
+.fa-chevron-circle-up {
+ --fa: "\f139";
+}
+
+.fa-circle-chevron-down {
+ --fa: "\f13a";
+}
+
+.fa-chevron-circle-down {
+ --fa: "\f13a";
+}
+
+.fa-anchor {
+ --fa: "\f13d";
+}
+
+.fa-unlock-keyhole {
+ --fa: "\f13e";
+}
+
+.fa-unlock-alt {
+ --fa: "\f13e";
+}
+
+.fa-bullseye {
+ --fa: "\f140";
+}
+
+.fa-ellipsis {
+ --fa: "\f141";
+}
+
+.fa-ellipsis-h {
+ --fa: "\f141";
+}
+
+.fa-ellipsis-vertical {
+ --fa: "\f142";
+}
+
+.fa-ellipsis-v {
+ --fa: "\f142";
+}
+
+.fa-square-rss {
+ --fa: "\f143";
+}
+
+.fa-rss-square {
+ --fa: "\f143";
+}
+
+.fa-circle-play {
+ --fa: "\f144";
+}
+
+.fa-play-circle {
+ --fa: "\f144";
+}
+
+.fa-ticket {
+ --fa: "\f145";
+}
+
+.fa-square-minus {
+ --fa: "\f146";
+}
+
+.fa-minus-square {
+ --fa: "\f146";
+}
+
+.fa-arrow-turn-up {
+ --fa: "\f148";
+}
+
+.fa-level-up {
+ --fa: "\f148";
+}
+
+.fa-arrow-turn-down {
+ --fa: "\f149";
+}
+
+.fa-level-down {
+ --fa: "\f149";
+}
+
+.fa-square-check {
+ --fa: "\f14a";
+}
+
+.fa-check-square {
+ --fa: "\f14a";
+}
+
+.fa-square-pen {
+ --fa: "\f14b";
+}
+
+.fa-pen-square {
+ --fa: "\f14b";
+}
+
+.fa-pencil-square {
+ --fa: "\f14b";
+}
+
+.fa-square-arrow-up-right {
+ --fa: "\f14c";
+}
+
+.fa-external-link-square {
+ --fa: "\f14c";
+}
+
+.fa-share-from-square {
+ --fa: "\f14d";
+}
+
+.fa-share-square {
+ --fa: "\f14d";
+}
+
+.fa-compass {
+ --fa: "\f14e";
+}
+
+.fa-square-caret-down {
+ --fa: "\f150";
+}
+
+.fa-caret-square-down {
+ --fa: "\f150";
+}
+
+.fa-square-caret-up {
+ --fa: "\f151";
+}
+
+.fa-caret-square-up {
+ --fa: "\f151";
+}
+
+.fa-square-caret-right {
+ --fa: "\f152";
+}
+
+.fa-caret-square-right {
+ --fa: "\f152";
+}
+
+.fa-euro-sign {
+ --fa: "\f153";
+}
+
+.fa-eur {
+ --fa: "\f153";
+}
+
+.fa-euro {
+ --fa: "\f153";
+}
+
+.fa-sterling-sign {
+ --fa: "\f154";
+}
+
+.fa-gbp {
+ --fa: "\f154";
+}
+
+.fa-pound-sign {
+ --fa: "\f154";
+}
+
+.fa-rupee-sign {
+ --fa: "\f156";
+}
+
+.fa-rupee {
+ --fa: "\f156";
+}
+
+.fa-yen-sign {
+ --fa: "\f157";
+}
+
+.fa-cny {
+ --fa: "\f157";
+}
+
+.fa-jpy {
+ --fa: "\f157";
+}
+
+.fa-rmb {
+ --fa: "\f157";
+}
+
+.fa-yen {
+ --fa: "\f157";
+}
+
+.fa-ruble-sign {
+ --fa: "\f158";
+}
+
+.fa-rouble {
+ --fa: "\f158";
+}
+
+.fa-rub {
+ --fa: "\f158";
+}
+
+.fa-ruble {
+ --fa: "\f158";
+}
+
+.fa-won-sign {
+ --fa: "\f159";
+}
+
+.fa-krw {
+ --fa: "\f159";
+}
+
+.fa-won {
+ --fa: "\f159";
+}
+
+.fa-file {
+ --fa: "\f15b";
+}
+
+.fa-file-lines {
+ --fa: "\f15c";
+}
+
+.fa-file-alt {
+ --fa: "\f15c";
+}
+
+.fa-file-text {
+ --fa: "\f15c";
+}
+
+.fa-arrow-down-a-z {
+ --fa: "\f15d";
+}
+
+.fa-sort-alpha-asc {
+ --fa: "\f15d";
+}
+
+.fa-sort-alpha-down {
+ --fa: "\f15d";
+}
+
+.fa-arrow-up-a-z {
+ --fa: "\f15e";
+}
+
+.fa-sort-alpha-up {
+ --fa: "\f15e";
+}
+
+.fa-arrow-down-wide-short {
+ --fa: "\f160";
+}
+
+.fa-sort-amount-asc {
+ --fa: "\f160";
+}
+
+.fa-sort-amount-down {
+ --fa: "\f160";
+}
+
+.fa-arrow-up-wide-short {
+ --fa: "\f161";
+}
+
+.fa-sort-amount-up {
+ --fa: "\f161";
+}
+
+.fa-arrow-down-1-9 {
+ --fa: "\f162";
+}
+
+.fa-sort-numeric-asc {
+ --fa: "\f162";
+}
+
+.fa-sort-numeric-down {
+ --fa: "\f162";
+}
+
+.fa-arrow-up-1-9 {
+ --fa: "\f163";
+}
+
+.fa-sort-numeric-up {
+ --fa: "\f163";
+}
+
+.fa-thumbs-up {
+ --fa: "\f164";
+}
+
+.fa-thumbs-down {
+ --fa: "\f165";
+}
+
+.fa-arrow-down-long {
+ --fa: "\f175";
+}
+
+.fa-long-arrow-down {
+ --fa: "\f175";
+}
+
+.fa-arrow-up-long {
+ --fa: "\f176";
+}
+
+.fa-long-arrow-up {
+ --fa: "\f176";
+}
+
+.fa-arrow-left-long {
+ --fa: "\f177";
+}
+
+.fa-long-arrow-left {
+ --fa: "\f177";
+}
+
+.fa-arrow-right-long {
+ --fa: "\f178";
+}
+
+.fa-long-arrow-right {
+ --fa: "\f178";
+}
+
+.fa-person-dress {
+ --fa: "\f182";
+}
+
+.fa-female {
+ --fa: "\f182";
+}
+
+.fa-person {
+ --fa: "\f183";
+}
+
+.fa-male {
+ --fa: "\f183";
+}
+
+.fa-sun {
+ --fa: "\f185";
+}
+
+.fa-moon {
+ --fa: "\f186";
+}
+
+.fa-box-archive {
+ --fa: "\f187";
+}
+
+.fa-archive {
+ --fa: "\f187";
+}
+
+.fa-bug {
+ --fa: "\f188";
+}
+
+.fa-square-caret-left {
+ --fa: "\f191";
+}
+
+.fa-caret-square-left {
+ --fa: "\f191";
+}
+
+.fa-circle-dot {
+ --fa: "\f192";
+}
+
+.fa-dot-circle {
+ --fa: "\f192";
+}
+
+.fa-wheelchair {
+ --fa: "\f193";
+}
+
+.fa-lira-sign {
+ --fa: "\f195";
+}
+
+.fa-shuttle-space {
+ --fa: "\f197";
+}
+
+.fa-space-shuttle {
+ --fa: "\f197";
+}
+
+.fa-square-envelope {
+ --fa: "\f199";
+}
+
+.fa-envelope-square {
+ --fa: "\f199";
+}
+
+.fa-building-columns {
+ --fa: "\f19c";
+}
+
+.fa-bank {
+ --fa: "\f19c";
+}
+
+.fa-institution {
+ --fa: "\f19c";
+}
+
+.fa-museum {
+ --fa: "\f19c";
+}
+
+.fa-university {
+ --fa: "\f19c";
+}
+
+.fa-graduation-cap {
+ --fa: "\f19d";
+}
+
+.fa-mortar-board {
+ --fa: "\f19d";
+}
+
+.fa-language {
+ --fa: "\f1ab";
+}
+
+.fa-fax {
+ --fa: "\f1ac";
+}
+
+.fa-building {
+ --fa: "\f1ad";
+}
+
+.fa-child {
+ --fa: "\f1ae";
+}
+
+.fa-paw {
+ --fa: "\f1b0";
+}
+
+.fa-cube {
+ --fa: "\f1b2";
+}
+
+.fa-cubes {
+ --fa: "\f1b3";
+}
+
+.fa-recycle {
+ --fa: "\f1b8";
+}
+
+.fa-car {
+ --fa: "\f1b9";
+}
+
+.fa-automobile {
+ --fa: "\f1b9";
+}
+
+.fa-taxi {
+ --fa: "\f1ba";
+}
+
+.fa-cab {
+ --fa: "\f1ba";
+}
+
+.fa-tree {
+ --fa: "\f1bb";
+}
+
+.fa-database {
+ --fa: "\f1c0";
+}
+
+.fa-file-pdf {
+ --fa: "\f1c1";
+}
+
+.fa-file-word {
+ --fa: "\f1c2";
+}
+
+.fa-file-excel {
+ --fa: "\f1c3";
+}
+
+.fa-file-powerpoint {
+ --fa: "\f1c4";
+}
+
+.fa-file-image {
+ --fa: "\f1c5";
+}
+
+.fa-file-zipper {
+ --fa: "\f1c6";
+}
+
+.fa-file-archive {
+ --fa: "\f1c6";
+}
+
+.fa-file-audio {
+ --fa: "\f1c7";
+}
+
+.fa-file-video {
+ --fa: "\f1c8";
+}
+
+.fa-file-code {
+ --fa: "\f1c9";
+}
+
+.fa-life-ring {
+ --fa: "\f1cd";
+}
+
+.fa-circle-notch {
+ --fa: "\f1ce";
+}
+
+.fa-paper-plane {
+ --fa: "\f1d8";
+}
+
+.fa-clock-rotate-left {
+ --fa: "\f1da";
+}
+
+.fa-history {
+ --fa: "\f1da";
+}
+
+.fa-heading {
+ --fa: "\f1dc";
+}
+
+.fa-header {
+ --fa: "\f1dc";
+}
+
+.fa-paragraph {
+ --fa: "\f1dd";
+}
+
+.fa-sliders {
+ --fa: "\f1de";
+}
+
+.fa-sliders-h {
+ --fa: "\f1de";
+}
+
+.fa-share-nodes {
+ --fa: "\f1e0";
+}
+
+.fa-share-alt {
+ --fa: "\f1e0";
+}
+
+.fa-square-share-nodes {
+ --fa: "\f1e1";
+}
+
+.fa-share-alt-square {
+ --fa: "\f1e1";
+}
+
+.fa-bomb {
+ --fa: "\f1e2";
+}
+
+.fa-futbol {
+ --fa: "\f1e3";
+}
+
+.fa-futbol-ball {
+ --fa: "\f1e3";
+}
+
+.fa-soccer-ball {
+ --fa: "\f1e3";
+}
+
+.fa-tty {
+ --fa: "\f1e4";
+}
+
+.fa-teletype {
+ --fa: "\f1e4";
+}
+
+.fa-binoculars {
+ --fa: "\f1e5";
+}
+
+.fa-plug {
+ --fa: "\f1e6";
+}
+
+.fa-newspaper {
+ --fa: "\f1ea";
+}
+
+.fa-wifi {
+ --fa: "\f1eb";
+}
+
+.fa-wifi-3 {
+ --fa: "\f1eb";
+}
+
+.fa-wifi-strong {
+ --fa: "\f1eb";
+}
+
+.fa-calculator {
+ --fa: "\f1ec";
+}
+
+.fa-bell-slash {
+ --fa: "\f1f6";
+}
+
+.fa-trash {
+ --fa: "\f1f8";
+}
+
+.fa-copyright {
+ --fa: "\f1f9";
+}
+
+.fa-eye-dropper {
+ --fa: "\f1fb";
+}
+
+.fa-eye-dropper-empty {
+ --fa: "\f1fb";
+}
+
+.fa-eyedropper {
+ --fa: "\f1fb";
+}
+
+.fa-paintbrush {
+ --fa: "\f1fc";
+}
+
+.fa-paint-brush {
+ --fa: "\f1fc";
+}
+
+.fa-cake-candles {
+ --fa: "\f1fd";
+}
+
+.fa-birthday-cake {
+ --fa: "\f1fd";
+}
+
+.fa-cake {
+ --fa: "\f1fd";
+}
+
+.fa-chart-area {
+ --fa: "\f1fe";
+}
+
+.fa-area-chart {
+ --fa: "\f1fe";
+}
+
+.fa-chart-pie {
+ --fa: "\f200";
+}
+
+.fa-pie-chart {
+ --fa: "\f200";
+}
+
+.fa-chart-line {
+ --fa: "\f201";
+}
+
+.fa-line-chart {
+ --fa: "\f201";
+}
+
+.fa-toggle-off {
+ --fa: "\f204";
+}
+
+.fa-toggle-on {
+ --fa: "\f205";
+}
+
+.fa-bicycle {
+ --fa: "\f206";
+}
+
+.fa-bus {
+ --fa: "\f207";
+}
+
+.fa-closed-captioning {
+ --fa: "\f20a";
+}
+
+.fa-shekel-sign {
+ --fa: "\f20b";
+}
+
+.fa-ils {
+ --fa: "\f20b";
+}
+
+.fa-shekel {
+ --fa: "\f20b";
+}
+
+.fa-sheqel {
+ --fa: "\f20b";
+}
+
+.fa-sheqel-sign {
+ --fa: "\f20b";
+}
+
+.fa-cart-plus {
+ --fa: "\f217";
+}
+
+.fa-cart-arrow-down {
+ --fa: "\f218";
+}
+
+.fa-diamond {
+ --fa: "\f219";
+}
+
+.fa-ship {
+ --fa: "\f21a";
+}
+
+.fa-user-secret {
+ --fa: "\f21b";
+}
+
+.fa-motorcycle {
+ --fa: "\f21c";
+}
+
+.fa-street-view {
+ --fa: "\f21d";
+}
+
+.fa-heart-pulse {
+ --fa: "\f21e";
+}
+
+.fa-heartbeat {
+ --fa: "\f21e";
+}
+
+.fa-venus {
+ --fa: "\f221";
+}
+
+.fa-mars {
+ --fa: "\f222";
+}
+
+.fa-mercury {
+ --fa: "\f223";
+}
+
+.fa-mars-and-venus {
+ --fa: "\f224";
+}
+
+.fa-transgender {
+ --fa: "\f225";
+}
+
+.fa-transgender-alt {
+ --fa: "\f225";
+}
+
+.fa-venus-double {
+ --fa: "\f226";
+}
+
+.fa-mars-double {
+ --fa: "\f227";
+}
+
+.fa-venus-mars {
+ --fa: "\f228";
+}
+
+.fa-mars-stroke {
+ --fa: "\f229";
+}
+
+.fa-mars-stroke-up {
+ --fa: "\f22a";
+}
+
+.fa-mars-stroke-v {
+ --fa: "\f22a";
+}
+
+.fa-mars-stroke-right {
+ --fa: "\f22b";
+}
+
+.fa-mars-stroke-h {
+ --fa: "\f22b";
+}
+
+.fa-neuter {
+ --fa: "\f22c";
+}
+
+.fa-genderless {
+ --fa: "\f22d";
+}
+
+.fa-server {
+ --fa: "\f233";
+}
+
+.fa-user-plus {
+ --fa: "\f234";
+}
+
+.fa-user-xmark {
+ --fa: "\f235";
+}
+
+.fa-user-times {
+ --fa: "\f235";
+}
+
+.fa-bed {
+ --fa: "\f236";
+}
+
+.fa-train {
+ --fa: "\f238";
+}
+
+.fa-train-subway {
+ --fa: "\f239";
+}
+
+.fa-subway {
+ --fa: "\f239";
+}
+
+.fa-battery-full {
+ --fa: "\f240";
+}
+
+.fa-battery {
+ --fa: "\f240";
+}
+
+.fa-battery-5 {
+ --fa: "\f240";
+}
+
+.fa-battery-three-quarters {
+ --fa: "\f241";
+}
+
+.fa-battery-4 {
+ --fa: "\f241";
+}
+
+.fa-battery-half {
+ --fa: "\f242";
+}
+
+.fa-battery-3 {
+ --fa: "\f242";
+}
+
+.fa-battery-quarter {
+ --fa: "\f243";
+}
+
+.fa-battery-2 {
+ --fa: "\f243";
+}
+
+.fa-battery-empty {
+ --fa: "\f244";
+}
+
+.fa-battery-0 {
+ --fa: "\f244";
+}
+
+.fa-arrow-pointer {
+ --fa: "\f245";
+}
+
+.fa-mouse-pointer {
+ --fa: "\f245";
+}
+
+.fa-i-cursor {
+ --fa: "\f246";
+}
+
+.fa-object-group {
+ --fa: "\f247";
+}
+
+.fa-object-ungroup {
+ --fa: "\f248";
+}
+
+.fa-note-sticky {
+ --fa: "\f249";
+}
+
+.fa-sticky-note {
+ --fa: "\f249";
+}
+
+.fa-clone {
+ --fa: "\f24d";
+}
+
+.fa-scale-balanced {
+ --fa: "\f24e";
+}
+
+.fa-balance-scale {
+ --fa: "\f24e";
+}
+
+.fa-hourglass-start {
+ --fa: "\f251";
+}
+
+.fa-hourglass-1 {
+ --fa: "\f251";
+}
+
+.fa-hourglass-half {
+ --fa: "\f252";
+}
+
+.fa-hourglass-2 {
+ --fa: "\f252";
+}
+
+.fa-hourglass-end {
+ --fa: "\f253";
+}
+
+.fa-hourglass-3 {
+ --fa: "\f253";
+}
+
+.fa-hourglass {
+ --fa: "\f254";
+}
+
+.fa-hourglass-empty {
+ --fa: "\f254";
+}
+
+.fa-hand-back-fist {
+ --fa: "\f255";
+}
+
+.fa-hand-rock {
+ --fa: "\f255";
+}
+
+.fa-hand {
+ --fa: "\f256";
+}
+
+.fa-hand-paper {
+ --fa: "\f256";
+}
+
+.fa-hand-scissors {
+ --fa: "\f257";
+}
+
+.fa-hand-lizard {
+ --fa: "\f258";
+}
+
+.fa-hand-spock {
+ --fa: "\f259";
+}
+
+.fa-hand-pointer {
+ --fa: "\f25a";
+}
+
+.fa-hand-peace {
+ --fa: "\f25b";
+}
+
+.fa-trademark {
+ --fa: "\f25c";
+}
+
+.fa-registered {
+ --fa: "\f25d";
+}
+
+.fa-tv {
+ --fa: "\f26c";
+}
+
+.fa-television {
+ --fa: "\f26c";
+}
+
+.fa-tv-alt {
+ --fa: "\f26c";
+}
+
+.fa-calendar-plus {
+ --fa: "\f271";
+}
+
+.fa-calendar-minus {
+ --fa: "\f272";
+}
+
+.fa-calendar-xmark {
+ --fa: "\f273";
+}
+
+.fa-calendar-times {
+ --fa: "\f273";
+}
+
+.fa-calendar-check {
+ --fa: "\f274";
+}
+
+.fa-industry {
+ --fa: "\f275";
+}
+
+.fa-map-pin {
+ --fa: "\f276";
+}
+
+.fa-signs-post {
+ --fa: "\f277";
+}
+
+.fa-map-signs {
+ --fa: "\f277";
+}
+
+.fa-map {
+ --fa: "\f279";
+}
+
+.fa-message {
+ --fa: "\f27a";
+}
+
+.fa-comment-alt {
+ --fa: "\f27a";
+}
+
+.fa-circle-pause {
+ --fa: "\f28b";
+}
+
+.fa-pause-circle {
+ --fa: "\f28b";
+}
+
+.fa-circle-stop {
+ --fa: "\f28d";
+}
+
+.fa-stop-circle {
+ --fa: "\f28d";
+}
+
+.fa-bag-shopping {
+ --fa: "\f290";
+}
+
+.fa-shopping-bag {
+ --fa: "\f290";
+}
+
+.fa-basket-shopping {
+ --fa: "\f291";
+}
+
+.fa-shopping-basket {
+ --fa: "\f291";
+}
+
+.fa-universal-access {
+ --fa: "\f29a";
+}
+
+.fa-person-walking-with-cane {
+ --fa: "\f29d";
+}
+
+.fa-blind {
+ --fa: "\f29d";
+}
+
+.fa-audio-description {
+ --fa: "\f29e";
+}
+
+.fa-phone-volume {
+ --fa: "\f2a0";
+}
+
+.fa-volume-control-phone {
+ --fa: "\f2a0";
+}
+
+.fa-braille {
+ --fa: "\f2a1";
+}
+
+.fa-ear-listen {
+ --fa: "\f2a2";
+}
+
+.fa-assistive-listening-systems {
+ --fa: "\f2a2";
+}
+
+.fa-hands-asl-interpreting {
+ --fa: "\f2a3";
+}
+
+.fa-american-sign-language-interpreting {
+ --fa: "\f2a3";
+}
+
+.fa-asl-interpreting {
+ --fa: "\f2a3";
+}
+
+.fa-hands-american-sign-language-interpreting {
+ --fa: "\f2a3";
+}
+
+.fa-ear-deaf {
+ --fa: "\f2a4";
+}
+
+.fa-deaf {
+ --fa: "\f2a4";
+}
+
+.fa-deafness {
+ --fa: "\f2a4";
+}
+
+.fa-hard-of-hearing {
+ --fa: "\f2a4";
+}
+
+.fa-hands {
+ --fa: "\f2a7";
+}
+
+.fa-sign-language {
+ --fa: "\f2a7";
+}
+
+.fa-signing {
+ --fa: "\f2a7";
+}
+
+.fa-eye-low-vision {
+ --fa: "\f2a8";
+}
+
+.fa-low-vision {
+ --fa: "\f2a8";
+}
+
+.fa-font-awesome {
+ --fa: "\f2b4";
+}
+
+.fa-font-awesome-flag {
+ --fa: "\f2b4";
+}
+
+.fa-font-awesome-logo-full {
+ --fa: "\f2b4";
+}
+
+.fa-handshake {
+ --fa: "\f2b5";
+}
+
+.fa-handshake-alt {
+ --fa: "\f2b5";
+}
+
+.fa-handshake-simple {
+ --fa: "\f2b5";
+}
+
+.fa-envelope-open {
+ --fa: "\f2b6";
+}
+
+.fa-address-book {
+ --fa: "\f2b9";
+}
+
+.fa-contact-book {
+ --fa: "\f2b9";
+}
+
+.fa-address-card {
+ --fa: "\f2bb";
+}
+
+.fa-contact-card {
+ --fa: "\f2bb";
+}
+
+.fa-vcard {
+ --fa: "\f2bb";
+}
+
+.fa-circle-user {
+ --fa: "\f2bd";
+}
+
+.fa-user-circle {
+ --fa: "\f2bd";
+}
+
+.fa-id-badge {
+ --fa: "\f2c1";
+}
+
+.fa-id-card {
+ --fa: "\f2c2";
+}
+
+.fa-drivers-license {
+ --fa: "\f2c2";
+}
+
+.fa-temperature-full {
+ --fa: "\f2c7";
+}
+
+.fa-temperature-4 {
+ --fa: "\f2c7";
+}
+
+.fa-thermometer-4 {
+ --fa: "\f2c7";
+}
+
+.fa-thermometer-full {
+ --fa: "\f2c7";
+}
+
+.fa-temperature-three-quarters {
+ --fa: "\f2c8";
+}
+
+.fa-temperature-3 {
+ --fa: "\f2c8";
+}
+
+.fa-thermometer-3 {
+ --fa: "\f2c8";
+}
+
+.fa-thermometer-three-quarters {
+ --fa: "\f2c8";
+}
+
+.fa-temperature-half {
+ --fa: "\f2c9";
+}
+
+.fa-temperature-2 {
+ --fa: "\f2c9";
+}
+
+.fa-thermometer-2 {
+ --fa: "\f2c9";
+}
+
+.fa-thermometer-half {
+ --fa: "\f2c9";
+}
+
+.fa-temperature-quarter {
+ --fa: "\f2ca";
+}
+
+.fa-temperature-1 {
+ --fa: "\f2ca";
+}
+
+.fa-thermometer-1 {
+ --fa: "\f2ca";
+}
+
+.fa-thermometer-quarter {
+ --fa: "\f2ca";
+}
+
+.fa-temperature-empty {
+ --fa: "\f2cb";
+}
+
+.fa-temperature-0 {
+ --fa: "\f2cb";
+}
+
+.fa-thermometer-0 {
+ --fa: "\f2cb";
+}
+
+.fa-thermometer-empty {
+ --fa: "\f2cb";
+}
+
+.fa-shower {
+ --fa: "\f2cc";
+}
+
+.fa-bath {
+ --fa: "\f2cd";
+}
+
+.fa-bathtub {
+ --fa: "\f2cd";
+}
+
+.fa-podcast {
+ --fa: "\f2ce";
+}
+
+.fa-window-maximize {
+ --fa: "\f2d0";
+}
+
+.fa-window-minimize {
+ --fa: "\f2d1";
+}
+
+.fa-window-restore {
+ --fa: "\f2d2";
+}
+
+.fa-square-xmark {
+ --fa: "\f2d3";
+}
+
+.fa-times-square {
+ --fa: "\f2d3";
+}
+
+.fa-xmark-square {
+ --fa: "\f2d3";
+}
+
+.fa-microchip {
+ --fa: "\f2db";
+}
+
+.fa-snowflake {
+ --fa: "\f2dc";
+}
+
+.fa-spoon {
+ --fa: "\f2e5";
+}
+
+.fa-utensil-spoon {
+ --fa: "\f2e5";
+}
+
+.fa-utensils {
+ --fa: "\f2e7";
+}
+
+.fa-cutlery {
+ --fa: "\f2e7";
+}
+
+.fa-rotate-left {
+ --fa: "\f2ea";
+}
+
+.fa-rotate-back {
+ --fa: "\f2ea";
+}
+
+.fa-rotate-backward {
+ --fa: "\f2ea";
+}
+
+.fa-undo-alt {
+ --fa: "\f2ea";
+}
+
+.fa-trash-can {
+ --fa: "\f2ed";
+}
+
+.fa-trash-alt {
+ --fa: "\f2ed";
+}
+
+.fa-rotate {
+ --fa: "\f2f1";
+}
+
+.fa-sync-alt {
+ --fa: "\f2f1";
+}
+
+.fa-stopwatch {
+ --fa: "\f2f2";
+}
+
+.fa-right-from-bracket {
+ --fa: "\f2f5";
+}
+
+.fa-sign-out-alt {
+ --fa: "\f2f5";
+}
+
+.fa-right-to-bracket {
+ --fa: "\f2f6";
+}
+
+.fa-sign-in-alt {
+ --fa: "\f2f6";
+}
+
+.fa-rotate-right {
+ --fa: "\f2f9";
+}
+
+.fa-redo-alt {
+ --fa: "\f2f9";
+}
+
+.fa-rotate-forward {
+ --fa: "\f2f9";
+}
+
+.fa-poo {
+ --fa: "\f2fe";
+}
+
+.fa-images {
+ --fa: "\f302";
+}
+
+.fa-pencil {
+ --fa: "\f303";
+}
+
+.fa-pencil-alt {
+ --fa: "\f303";
+}
+
+.fa-pen {
+ --fa: "\f304";
+}
+
+.fa-pen-clip {
+ --fa: "\f305";
+}
+
+.fa-pen-alt {
+ --fa: "\f305";
+}
+
+.fa-octagon {
+ --fa: "\f306";
+}
+
+.fa-down-long {
+ --fa: "\f309";
+}
+
+.fa-long-arrow-alt-down {
+ --fa: "\f309";
+}
+
+.fa-left-long {
+ --fa: "\f30a";
+}
+
+.fa-long-arrow-alt-left {
+ --fa: "\f30a";
+}
+
+.fa-right-long {
+ --fa: "\f30b";
+}
+
+.fa-long-arrow-alt-right {
+ --fa: "\f30b";
+}
+
+.fa-up-long {
+ --fa: "\f30c";
+}
+
+.fa-long-arrow-alt-up {
+ --fa: "\f30c";
+}
+
+.fa-hexagon {
+ --fa: "\f312";
+}
+
+.fa-file-pen {
+ --fa: "\f31c";
+}
+
+.fa-file-edit {
+ --fa: "\f31c";
+}
+
+.fa-maximize {
+ --fa: "\f31e";
+}
+
+.fa-expand-arrows-alt {
+ --fa: "\f31e";
+}
+
+.fa-clipboard {
+ --fa: "\f328";
+}
+
+.fa-left-right {
+ --fa: "\f337";
+}
+
+.fa-arrows-alt-h {
+ --fa: "\f337";
+}
+
+.fa-up-down {
+ --fa: "\f338";
+}
+
+.fa-arrows-alt-v {
+ --fa: "\f338";
+}
+
+.fa-alarm-clock {
+ --fa: "\f34e";
+}
+
+.fa-circle-down {
+ --fa: "\f358";
+}
+
+.fa-arrow-alt-circle-down {
+ --fa: "\f358";
+}
+
+.fa-circle-left {
+ --fa: "\f359";
+}
+
+.fa-arrow-alt-circle-left {
+ --fa: "\f359";
+}
+
+.fa-circle-right {
+ --fa: "\f35a";
+}
+
+.fa-arrow-alt-circle-right {
+ --fa: "\f35a";
+}
+
+.fa-circle-up {
+ --fa: "\f35b";
+}
+
+.fa-arrow-alt-circle-up {
+ --fa: "\f35b";
+}
+
+.fa-up-right-from-square {
+ --fa: "\f35d";
+}
+
+.fa-external-link-alt {
+ --fa: "\f35d";
+}
+
+.fa-square-up-right {
+ --fa: "\f360";
+}
+
+.fa-external-link-square-alt {
+ --fa: "\f360";
+}
+
+.fa-right-left {
+ --fa: "\f362";
+}
+
+.fa-exchange-alt {
+ --fa: "\f362";
+}
+
+.fa-repeat {
+ --fa: "\f363";
+}
+
+.fa-code-commit {
+ --fa: "\f386";
+}
+
+.fa-code-merge {
+ --fa: "\f387";
+}
+
+.fa-desktop {
+ --fa: "\f390";
+}
+
+.fa-desktop-alt {
+ --fa: "\f390";
+}
+
+.fa-gem {
+ --fa: "\f3a5";
+}
+
+.fa-turn-down {
+ --fa: "\f3be";
+}
+
+.fa-level-down-alt {
+ --fa: "\f3be";
+}
+
+.fa-turn-up {
+ --fa: "\f3bf";
+}
+
+.fa-level-up-alt {
+ --fa: "\f3bf";
+}
+
+.fa-lock-open {
+ --fa: "\f3c1";
+}
+
+.fa-location-dot {
+ --fa: "\f3c5";
+}
+
+.fa-map-marker-alt {
+ --fa: "\f3c5";
+}
+
+.fa-microphone-lines {
+ --fa: "\f3c9";
+}
+
+.fa-microphone-alt {
+ --fa: "\f3c9";
+}
+
+.fa-mobile-screen-button {
+ --fa: "\f3cd";
+}
+
+.fa-mobile-alt {
+ --fa: "\f3cd";
+}
+
+.fa-mobile {
+ --fa: "\f3ce";
+}
+
+.fa-mobile-android {
+ --fa: "\f3ce";
+}
+
+.fa-mobile-phone {
+ --fa: "\f3ce";
+}
+
+.fa-mobile-screen {
+ --fa: "\f3cf";
+}
+
+.fa-mobile-android-alt {
+ --fa: "\f3cf";
+}
+
+.fa-money-bill-1 {
+ --fa: "\f3d1";
+}
+
+.fa-money-bill-alt {
+ --fa: "\f3d1";
+}
+
+.fa-phone-slash {
+ --fa: "\f3dd";
+}
+
+.fa-image-portrait {
+ --fa: "\f3e0";
+}
+
+.fa-portrait {
+ --fa: "\f3e0";
+}
+
+.fa-reply {
+ --fa: "\f3e5";
+}
+
+.fa-mail-reply {
+ --fa: "\f3e5";
+}
+
+.fa-shield-halved {
+ --fa: "\f3ed";
+}
+
+.fa-shield-alt {
+ --fa: "\f3ed";
+}
+
+.fa-tablet-screen-button {
+ --fa: "\f3fa";
+}
+
+.fa-tablet-alt {
+ --fa: "\f3fa";
+}
+
+.fa-tablet {
+ --fa: "\f3fb";
+}
+
+.fa-tablet-android {
+ --fa: "\f3fb";
+}
+
+.fa-ticket-simple {
+ --fa: "\f3ff";
+}
+
+.fa-ticket-alt {
+ --fa: "\f3ff";
+}
+
+.fa-rectangle-xmark {
+ --fa: "\f410";
+}
+
+.fa-rectangle-times {
+ --fa: "\f410";
+}
+
+.fa-times-rectangle {
+ --fa: "\f410";
+}
+
+.fa-window-close {
+ --fa: "\f410";
+}
+
+.fa-down-left-and-up-right-to-center {
+ --fa: "\f422";
+}
+
+.fa-compress-alt {
+ --fa: "\f422";
+}
+
+.fa-up-right-and-down-left-from-center {
+ --fa: "\f424";
+}
+
+.fa-expand-alt {
+ --fa: "\f424";
+}
+
+.fa-baseball-bat-ball {
+ --fa: "\f432";
+}
+
+.fa-baseball {
+ --fa: "\f433";
+}
+
+.fa-baseball-ball {
+ --fa: "\f433";
+}
+
+.fa-basketball {
+ --fa: "\f434";
+}
+
+.fa-basketball-ball {
+ --fa: "\f434";
+}
+
+.fa-bowling-ball {
+ --fa: "\f436";
+}
+
+.fa-chess {
+ --fa: "\f439";
+}
+
+.fa-chess-bishop {
+ --fa: "\f43a";
+}
+
+.fa-chess-board {
+ --fa: "\f43c";
+}
+
+.fa-chess-king {
+ --fa: "\f43f";
+}
+
+.fa-chess-knight {
+ --fa: "\f441";
+}
+
+.fa-chess-pawn {
+ --fa: "\f443";
+}
+
+.fa-chess-queen {
+ --fa: "\f445";
+}
+
+.fa-chess-rook {
+ --fa: "\f447";
+}
+
+.fa-dumbbell {
+ --fa: "\f44b";
+}
+
+.fa-football {
+ --fa: "\f44e";
+}
+
+.fa-football-ball {
+ --fa: "\f44e";
+}
+
+.fa-golf-ball-tee {
+ --fa: "\f450";
+}
+
+.fa-golf-ball {
+ --fa: "\f450";
+}
+
+.fa-hockey-puck {
+ --fa: "\f453";
+}
+
+.fa-broom-ball {
+ --fa: "\f458";
+}
+
+.fa-quidditch {
+ --fa: "\f458";
+}
+
+.fa-quidditch-broom-ball {
+ --fa: "\f458";
+}
+
+.fa-square-full {
+ --fa: "\f45c";
+}
+
+.fa-table-tennis-paddle-ball {
+ --fa: "\f45d";
+}
+
+.fa-ping-pong-paddle-ball {
+ --fa: "\f45d";
+}
+
+.fa-table-tennis {
+ --fa: "\f45d";
+}
+
+.fa-volleyball {
+ --fa: "\f45f";
+}
+
+.fa-volleyball-ball {
+ --fa: "\f45f";
+}
+
+.fa-hand-dots {
+ --fa: "\f461";
+}
+
+.fa-allergies {
+ --fa: "\f461";
+}
+
+.fa-bandage {
+ --fa: "\f462";
+}
+
+.fa-band-aid {
+ --fa: "\f462";
+}
+
+.fa-box {
+ --fa: "\f466";
+}
+
+.fa-boxes-stacked {
+ --fa: "\f468";
+}
+
+.fa-boxes {
+ --fa: "\f468";
+}
+
+.fa-boxes-alt {
+ --fa: "\f468";
+}
+
+.fa-briefcase-medical {
+ --fa: "\f469";
+}
+
+.fa-fire-flame-simple {
+ --fa: "\f46a";
+}
+
+.fa-burn {
+ --fa: "\f46a";
+}
+
+.fa-capsules {
+ --fa: "\f46b";
+}
+
+.fa-clipboard-check {
+ --fa: "\f46c";
+}
+
+.fa-clipboard-list {
+ --fa: "\f46d";
+}
+
+.fa-person-dots-from-line {
+ --fa: "\f470";
+}
+
+.fa-diagnoses {
+ --fa: "\f470";
+}
+
+.fa-dna {
+ --fa: "\f471";
+}
+
+.fa-dolly {
+ --fa: "\f472";
+}
+
+.fa-dolly-box {
+ --fa: "\f472";
+}
+
+.fa-cart-flatbed {
+ --fa: "\f474";
+}
+
+.fa-dolly-flatbed {
+ --fa: "\f474";
+}
+
+.fa-file-medical {
+ --fa: "\f477";
+}
+
+.fa-file-waveform {
+ --fa: "\f478";
+}
+
+.fa-file-medical-alt {
+ --fa: "\f478";
+}
+
+.fa-kit-medical {
+ --fa: "\f479";
+}
+
+.fa-first-aid {
+ --fa: "\f479";
+}
+
+.fa-circle-h {
+ --fa: "\f47e";
+}
+
+.fa-hospital-symbol {
+ --fa: "\f47e";
+}
+
+.fa-id-card-clip {
+ --fa: "\f47f";
+}
+
+.fa-id-card-alt {
+ --fa: "\f47f";
+}
+
+.fa-notes-medical {
+ --fa: "\f481";
+}
+
+.fa-pallet {
+ --fa: "\f482";
+}
+
+.fa-pills {
+ --fa: "\f484";
+}
+
+.fa-prescription-bottle {
+ --fa: "\f485";
+}
+
+.fa-prescription-bottle-medical {
+ --fa: "\f486";
+}
+
+.fa-prescription-bottle-alt {
+ --fa: "\f486";
+}
+
+.fa-bed-pulse {
+ --fa: "\f487";
+}
+
+.fa-procedures {
+ --fa: "\f487";
+}
+
+.fa-truck-fast {
+ --fa: "\f48b";
+}
+
+.fa-shipping-fast {
+ --fa: "\f48b";
+}
+
+.fa-smoking {
+ --fa: "\f48d";
+}
+
+.fa-syringe {
+ --fa: "\f48e";
+}
+
+.fa-tablets {
+ --fa: "\f490";
+}
+
+.fa-thermometer {
+ --fa: "\f491";
+}
+
+.fa-vial {
+ --fa: "\f492";
+}
+
+.fa-vials {
+ --fa: "\f493";
+}
+
+.fa-warehouse {
+ --fa: "\f494";
+}
+
+.fa-weight-scale {
+ --fa: "\f496";
+}
+
+.fa-weight {
+ --fa: "\f496";
+}
+
+.fa-x-ray {
+ --fa: "\f497";
+}
+
+.fa-box-open {
+ --fa: "\f49e";
+}
+
+.fa-comment-dots {
+ --fa: "\f4ad";
+}
+
+.fa-commenting {
+ --fa: "\f4ad";
+}
+
+.fa-comment-slash {
+ --fa: "\f4b3";
+}
+
+.fa-couch {
+ --fa: "\f4b8";
+}
+
+.fa-circle-dollar-to-slot {
+ --fa: "\f4b9";
+}
+
+.fa-donate {
+ --fa: "\f4b9";
+}
+
+.fa-dove {
+ --fa: "\f4ba";
+}
+
+.fa-hand-holding {
+ --fa: "\f4bd";
+}
+
+.fa-hand-holding-heart {
+ --fa: "\f4be";
+}
+
+.fa-hand-holding-dollar {
+ --fa: "\f4c0";
+}
+
+.fa-hand-holding-usd {
+ --fa: "\f4c0";
+}
+
+.fa-hand-holding-droplet {
+ --fa: "\f4c1";
+}
+
+.fa-hand-holding-water {
+ --fa: "\f4c1";
+}
+
+.fa-hands-holding {
+ --fa: "\f4c2";
+}
+
+.fa-handshake-angle {
+ --fa: "\f4c4";
+}
+
+.fa-hands-helping {
+ --fa: "\f4c4";
+}
+
+.fa-parachute-box {
+ --fa: "\f4cd";
+}
+
+.fa-people-carry-box {
+ --fa: "\f4ce";
+}
+
+.fa-people-carry {
+ --fa: "\f4ce";
+}
+
+.fa-piggy-bank {
+ --fa: "\f4d3";
+}
+
+.fa-ribbon {
+ --fa: "\f4d6";
+}
+
+.fa-route {
+ --fa: "\f4d7";
+}
+
+.fa-seedling {
+ --fa: "\f4d8";
+}
+
+.fa-sprout {
+ --fa: "\f4d8";
+}
+
+.fa-sign-hanging {
+ --fa: "\f4d9";
+}
+
+.fa-sign {
+ --fa: "\f4d9";
+}
+
+.fa-face-smile-wink {
+ --fa: "\f4da";
+}
+
+.fa-smile-wink {
+ --fa: "\f4da";
+}
+
+.fa-tape {
+ --fa: "\f4db";
+}
+
+.fa-truck-ramp-box {
+ --fa: "\f4de";
+}
+
+.fa-truck-loading {
+ --fa: "\f4de";
+}
+
+.fa-truck-moving {
+ --fa: "\f4df";
+}
+
+.fa-video-slash {
+ --fa: "\f4e2";
+}
+
+.fa-wine-glass {
+ --fa: "\f4e3";
+}
+
+.fa-user-astronaut {
+ --fa: "\f4fb";
+}
+
+.fa-user-check {
+ --fa: "\f4fc";
+}
+
+.fa-user-clock {
+ --fa: "\f4fd";
+}
+
+.fa-user-gear {
+ --fa: "\f4fe";
+}
+
+.fa-user-cog {
+ --fa: "\f4fe";
+}
+
+.fa-user-pen {
+ --fa: "\f4ff";
+}
+
+.fa-user-edit {
+ --fa: "\f4ff";
+}
+
+.fa-user-group {
+ --fa: "\f500";
+}
+
+.fa-user-friends {
+ --fa: "\f500";
+}
+
+.fa-user-graduate {
+ --fa: "\f501";
+}
+
+.fa-user-lock {
+ --fa: "\f502";
+}
+
+.fa-user-minus {
+ --fa: "\f503";
+}
+
+.fa-user-ninja {
+ --fa: "\f504";
+}
+
+.fa-user-shield {
+ --fa: "\f505";
+}
+
+.fa-user-slash {
+ --fa: "\f506";
+}
+
+.fa-user-alt-slash {
+ --fa: "\f506";
+}
+
+.fa-user-large-slash {
+ --fa: "\f506";
+}
+
+.fa-user-tag {
+ --fa: "\f507";
+}
+
+.fa-user-tie {
+ --fa: "\f508";
+}
+
+.fa-users-gear {
+ --fa: "\f509";
+}
+
+.fa-users-cog {
+ --fa: "\f509";
+}
+
+.fa-scale-unbalanced {
+ --fa: "\f515";
+}
+
+.fa-balance-scale-left {
+ --fa: "\f515";
+}
+
+.fa-scale-unbalanced-flip {
+ --fa: "\f516";
+}
+
+.fa-balance-scale-right {
+ --fa: "\f516";
+}
+
+.fa-blender {
+ --fa: "\f517";
+}
+
+.fa-book-open {
+ --fa: "\f518";
+}
+
+.fa-tower-broadcast {
+ --fa: "\f519";
+}
+
+.fa-broadcast-tower {
+ --fa: "\f519";
+}
+
+.fa-broom {
+ --fa: "\f51a";
+}
+
+.fa-chalkboard {
+ --fa: "\f51b";
+}
+
+.fa-blackboard {
+ --fa: "\f51b";
+}
+
+.fa-chalkboard-user {
+ --fa: "\f51c";
+}
+
+.fa-chalkboard-teacher {
+ --fa: "\f51c";
+}
+
+.fa-church {
+ --fa: "\f51d";
+}
+
+.fa-coins {
+ --fa: "\f51e";
+}
+
+.fa-compact-disc {
+ --fa: "\f51f";
+}
+
+.fa-crow {
+ --fa: "\f520";
+}
+
+.fa-crown {
+ --fa: "\f521";
+}
+
+.fa-dice {
+ --fa: "\f522";
+}
+
+.fa-dice-five {
+ --fa: "\f523";
+}
+
+.fa-dice-four {
+ --fa: "\f524";
+}
+
+.fa-dice-one {
+ --fa: "\f525";
+}
+
+.fa-dice-six {
+ --fa: "\f526";
+}
+
+.fa-dice-three {
+ --fa: "\f527";
+}
+
+.fa-dice-two {
+ --fa: "\f528";
+}
+
+.fa-divide {
+ --fa: "\f529";
+}
+
+.fa-door-closed {
+ --fa: "\f52a";
+}
+
+.fa-door-open {
+ --fa: "\f52b";
+}
+
+.fa-feather {
+ --fa: "\f52d";
+}
+
+.fa-frog {
+ --fa: "\f52e";
+}
+
+.fa-gas-pump {
+ --fa: "\f52f";
+}
+
+.fa-glasses {
+ --fa: "\f530";
+}
+
+.fa-greater-than-equal {
+ --fa: "\f532";
+}
+
+.fa-helicopter {
+ --fa: "\f533";
+}
+
+.fa-infinity {
+ --fa: "\f534";
+}
+
+.fa-kiwi-bird {
+ --fa: "\f535";
+}
+
+.fa-less-than-equal {
+ --fa: "\f537";
+}
+
+.fa-memory {
+ --fa: "\f538";
+}
+
+.fa-microphone-lines-slash {
+ --fa: "\f539";
+}
+
+.fa-microphone-alt-slash {
+ --fa: "\f539";
+}
+
+.fa-money-bill-wave {
+ --fa: "\f53a";
+}
+
+.fa-money-bill-1-wave {
+ --fa: "\f53b";
+}
+
+.fa-money-bill-wave-alt {
+ --fa: "\f53b";
+}
+
+.fa-money-check {
+ --fa: "\f53c";
+}
+
+.fa-money-check-dollar {
+ --fa: "\f53d";
+}
+
+.fa-money-check-alt {
+ --fa: "\f53d";
+}
+
+.fa-not-equal {
+ --fa: "\f53e";
+}
+
+.fa-palette {
+ --fa: "\f53f";
+}
+
+.fa-square-parking {
+ --fa: "\f540";
+}
+
+.fa-parking {
+ --fa: "\f540";
+}
+
+.fa-diagram-project {
+ --fa: "\f542";
+}
+
+.fa-project-diagram {
+ --fa: "\f542";
+}
+
+.fa-receipt {
+ --fa: "\f543";
+}
+
+.fa-robot {
+ --fa: "\f544";
+}
+
+.fa-ruler {
+ --fa: "\f545";
+}
+
+.fa-ruler-combined {
+ --fa: "\f546";
+}
+
+.fa-ruler-horizontal {
+ --fa: "\f547";
+}
+
+.fa-ruler-vertical {
+ --fa: "\f548";
+}
+
+.fa-school {
+ --fa: "\f549";
+}
+
+.fa-screwdriver {
+ --fa: "\f54a";
+}
+
+.fa-shoe-prints {
+ --fa: "\f54b";
+}
+
+.fa-skull {
+ --fa: "\f54c";
+}
+
+.fa-ban-smoking {
+ --fa: "\f54d";
+}
+
+.fa-smoking-ban {
+ --fa: "\f54d";
+}
+
+.fa-store {
+ --fa: "\f54e";
+}
+
+.fa-shop {
+ --fa: "\f54f";
+}
+
+.fa-store-alt {
+ --fa: "\f54f";
+}
+
+.fa-bars-staggered {
+ --fa: "\f550";
+}
+
+.fa-reorder {
+ --fa: "\f550";
+}
+
+.fa-stream {
+ --fa: "\f550";
+}
+
+.fa-stroopwafel {
+ --fa: "\f551";
+}
+
+.fa-toolbox {
+ --fa: "\f552";
+}
+
+.fa-shirt {
+ --fa: "\f553";
+}
+
+.fa-t-shirt {
+ --fa: "\f553";
+}
+
+.fa-tshirt {
+ --fa: "\f553";
+}
+
+.fa-person-walking {
+ --fa: "\f554";
+}
+
+.fa-walking {
+ --fa: "\f554";
+}
+
+.fa-wallet {
+ --fa: "\f555";
+}
+
+.fa-face-angry {
+ --fa: "\f556";
+}
+
+.fa-angry {
+ --fa: "\f556";
+}
+
+.fa-archway {
+ --fa: "\f557";
+}
+
+.fa-book-atlas {
+ --fa: "\f558";
+}
+
+.fa-atlas {
+ --fa: "\f558";
+}
+
+.fa-award {
+ --fa: "\f559";
+}
+
+.fa-delete-left {
+ --fa: "\f55a";
+}
+
+.fa-backspace {
+ --fa: "\f55a";
+}
+
+.fa-bezier-curve {
+ --fa: "\f55b";
+}
+
+.fa-bong {
+ --fa: "\f55c";
+}
+
+.fa-brush {
+ --fa: "\f55d";
+}
+
+.fa-bus-simple {
+ --fa: "\f55e";
+}
+
+.fa-bus-alt {
+ --fa: "\f55e";
+}
+
+.fa-cannabis {
+ --fa: "\f55f";
+}
+
+.fa-check-double {
+ --fa: "\f560";
+}
+
+.fa-martini-glass-citrus {
+ --fa: "\f561";
+}
+
+.fa-cocktail {
+ --fa: "\f561";
+}
+
+.fa-bell-concierge {
+ --fa: "\f562";
+}
+
+.fa-concierge-bell {
+ --fa: "\f562";
+}
+
+.fa-cookie {
+ --fa: "\f563";
+}
+
+.fa-cookie-bite {
+ --fa: "\f564";
+}
+
+.fa-crop-simple {
+ --fa: "\f565";
+}
+
+.fa-crop-alt {
+ --fa: "\f565";
+}
+
+.fa-tachograph-digital {
+ --fa: "\f566";
+}
+
+.fa-digital-tachograph {
+ --fa: "\f566";
+}
+
+.fa-face-dizzy {
+ --fa: "\f567";
+}
+
+.fa-dizzy {
+ --fa: "\f567";
+}
+
+.fa-compass-drafting {
+ --fa: "\f568";
+}
+
+.fa-drafting-compass {
+ --fa: "\f568";
+}
+
+.fa-drum {
+ --fa: "\f569";
+}
+
+.fa-drum-steelpan {
+ --fa: "\f56a";
+}
+
+.fa-feather-pointed {
+ --fa: "\f56b";
+}
+
+.fa-feather-alt {
+ --fa: "\f56b";
+}
+
+.fa-file-contract {
+ --fa: "\f56c";
+}
+
+.fa-file-arrow-down {
+ --fa: "\f56d";
+}
+
+.fa-file-download {
+ --fa: "\f56d";
+}
+
+.fa-file-export {
+ --fa: "\f56e";
+}
+
+.fa-arrow-right-from-file {
+ --fa: "\f56e";
+}
+
+.fa-file-import {
+ --fa: "\f56f";
+}
+
+.fa-arrow-right-to-file {
+ --fa: "\f56f";
+}
+
+.fa-file-invoice {
+ --fa: "\f570";
+}
+
+.fa-file-invoice-dollar {
+ --fa: "\f571";
+}
+
+.fa-file-prescription {
+ --fa: "\f572";
+}
+
+.fa-file-signature {
+ --fa: "\f573";
+}
+
+.fa-file-arrow-up {
+ --fa: "\f574";
+}
+
+.fa-file-upload {
+ --fa: "\f574";
+}
+
+.fa-fill {
+ --fa: "\f575";
+}
+
+.fa-fill-drip {
+ --fa: "\f576";
+}
+
+.fa-fingerprint {
+ --fa: "\f577";
+}
+
+.fa-fish {
+ --fa: "\f578";
+}
+
+.fa-face-flushed {
+ --fa: "\f579";
+}
+
+.fa-flushed {
+ --fa: "\f579";
+}
+
+.fa-face-frown-open {
+ --fa: "\f57a";
+}
+
+.fa-frown-open {
+ --fa: "\f57a";
+}
+
+.fa-martini-glass {
+ --fa: "\f57b";
+}
+
+.fa-glass-martini-alt {
+ --fa: "\f57b";
+}
+
+.fa-earth-africa {
+ --fa: "\f57c";
+}
+
+.fa-globe-africa {
+ --fa: "\f57c";
+}
+
+.fa-earth-americas {
+ --fa: "\f57d";
+}
+
+.fa-earth {
+ --fa: "\f57d";
+}
+
+.fa-earth-america {
+ --fa: "\f57d";
+}
+
+.fa-globe-americas {
+ --fa: "\f57d";
+}
+
+.fa-earth-asia {
+ --fa: "\f57e";
+}
+
+.fa-globe-asia {
+ --fa: "\f57e";
+}
+
+.fa-face-grimace {
+ --fa: "\f57f";
+}
+
+.fa-grimace {
+ --fa: "\f57f";
+}
+
+.fa-face-grin {
+ --fa: "\f580";
+}
+
+.fa-grin {
+ --fa: "\f580";
+}
+
+.fa-face-grin-wide {
+ --fa: "\f581";
+}
+
+.fa-grin-alt {
+ --fa: "\f581";
+}
+
+.fa-face-grin-beam {
+ --fa: "\f582";
+}
+
+.fa-grin-beam {
+ --fa: "\f582";
+}
+
+.fa-face-grin-beam-sweat {
+ --fa: "\f583";
+}
+
+.fa-grin-beam-sweat {
+ --fa: "\f583";
+}
+
+.fa-face-grin-hearts {
+ --fa: "\f584";
+}
+
+.fa-grin-hearts {
+ --fa: "\f584";
+}
+
+.fa-face-grin-squint {
+ --fa: "\f585";
+}
+
+.fa-grin-squint {
+ --fa: "\f585";
+}
+
+.fa-face-grin-squint-tears {
+ --fa: "\f586";
+}
+
+.fa-grin-squint-tears {
+ --fa: "\f586";
+}
+
+.fa-face-grin-stars {
+ --fa: "\f587";
+}
+
+.fa-grin-stars {
+ --fa: "\f587";
+}
+
+.fa-face-grin-tears {
+ --fa: "\f588";
+}
+
+.fa-grin-tears {
+ --fa: "\f588";
+}
+
+.fa-face-grin-tongue {
+ --fa: "\f589";
+}
+
+.fa-grin-tongue {
+ --fa: "\f589";
+}
+
+.fa-face-grin-tongue-squint {
+ --fa: "\f58a";
+}
+
+.fa-grin-tongue-squint {
+ --fa: "\f58a";
+}
+
+.fa-face-grin-tongue-wink {
+ --fa: "\f58b";
+}
+
+.fa-grin-tongue-wink {
+ --fa: "\f58b";
+}
+
+.fa-face-grin-wink {
+ --fa: "\f58c";
+}
+
+.fa-grin-wink {
+ --fa: "\f58c";
+}
+
+.fa-grip {
+ --fa: "\f58d";
+}
+
+.fa-grid-horizontal {
+ --fa: "\f58d";
+}
+
+.fa-grip-horizontal {
+ --fa: "\f58d";
+}
+
+.fa-grip-vertical {
+ --fa: "\f58e";
+}
+
+.fa-grid-vertical {
+ --fa: "\f58e";
+}
+
+.fa-headset {
+ --fa: "\f590";
+}
+
+.fa-highlighter {
+ --fa: "\f591";
+}
+
+.fa-hot-tub-person {
+ --fa: "\f593";
+}
+
+.fa-hot-tub {
+ --fa: "\f593";
+}
+
+.fa-hotel {
+ --fa: "\f594";
+}
+
+.fa-joint {
+ --fa: "\f595";
+}
+
+.fa-face-kiss {
+ --fa: "\f596";
+}
+
+.fa-kiss {
+ --fa: "\f596";
+}
+
+.fa-face-kiss-beam {
+ --fa: "\f597";
+}
+
+.fa-kiss-beam {
+ --fa: "\f597";
+}
+
+.fa-face-kiss-wink-heart {
+ --fa: "\f598";
+}
+
+.fa-kiss-wink-heart {
+ --fa: "\f598";
+}
+
+.fa-face-laugh {
+ --fa: "\f599";
+}
+
+.fa-laugh {
+ --fa: "\f599";
+}
+
+.fa-face-laugh-beam {
+ --fa: "\f59a";
+}
+
+.fa-laugh-beam {
+ --fa: "\f59a";
+}
+
+.fa-face-laugh-squint {
+ --fa: "\f59b";
+}
+
+.fa-laugh-squint {
+ --fa: "\f59b";
+}
+
+.fa-face-laugh-wink {
+ --fa: "\f59c";
+}
+
+.fa-laugh-wink {
+ --fa: "\f59c";
+}
+
+.fa-cart-flatbed-suitcase {
+ --fa: "\f59d";
+}
+
+.fa-luggage-cart {
+ --fa: "\f59d";
+}
+
+.fa-map-location {
+ --fa: "\f59f";
+}
+
+.fa-map-marked {
+ --fa: "\f59f";
+}
+
+.fa-map-location-dot {
+ --fa: "\f5a0";
+}
+
+.fa-map-marked-alt {
+ --fa: "\f5a0";
+}
+
+.fa-marker {
+ --fa: "\f5a1";
+}
+
+.fa-medal {
+ --fa: "\f5a2";
+}
+
+.fa-face-meh-blank {
+ --fa: "\f5a4";
+}
+
+.fa-meh-blank {
+ --fa: "\f5a4";
+}
+
+.fa-face-rolling-eyes {
+ --fa: "\f5a5";
+}
+
+.fa-meh-rolling-eyes {
+ --fa: "\f5a5";
+}
+
+.fa-monument {
+ --fa: "\f5a6";
+}
+
+.fa-mortar-pestle {
+ --fa: "\f5a7";
+}
+
+.fa-paint-roller {
+ --fa: "\f5aa";
+}
+
+.fa-passport {
+ --fa: "\f5ab";
+}
+
+.fa-pen-fancy {
+ --fa: "\f5ac";
+}
+
+.fa-pen-nib {
+ --fa: "\f5ad";
+}
+
+.fa-pen-ruler {
+ --fa: "\f5ae";
+}
+
+.fa-pencil-ruler {
+ --fa: "\f5ae";
+}
+
+.fa-plane-arrival {
+ --fa: "\f5af";
+}
+
+.fa-plane-departure {
+ --fa: "\f5b0";
+}
+
+.fa-prescription {
+ --fa: "\f5b1";
+}
+
+.fa-face-sad-cry {
+ --fa: "\f5b3";
+}
+
+.fa-sad-cry {
+ --fa: "\f5b3";
+}
+
+.fa-face-sad-tear {
+ --fa: "\f5b4";
+}
+
+.fa-sad-tear {
+ --fa: "\f5b4";
+}
+
+.fa-van-shuttle {
+ --fa: "\f5b6";
+}
+
+.fa-shuttle-van {
+ --fa: "\f5b6";
+}
+
+.fa-signature {
+ --fa: "\f5b7";
+}
+
+.fa-face-smile-beam {
+ --fa: "\f5b8";
+}
+
+.fa-smile-beam {
+ --fa: "\f5b8";
+}
+
+.fa-solar-panel {
+ --fa: "\f5ba";
+}
+
+.fa-spa {
+ --fa: "\f5bb";
+}
+
+.fa-lotus {
+ --fa: "\f5bb";
+}
+
+.fa-splotch {
+ --fa: "\f5bc";
+}
+
+.fa-spray-can {
+ --fa: "\f5bd";
+}
+
+.fa-stamp {
+ --fa: "\f5bf";
+}
+
+.fa-star-half-stroke {
+ --fa: "\f5c0";
+}
+
+.fa-star-half-alt {
+ --fa: "\f5c0";
+}
+
+.fa-suitcase-rolling {
+ --fa: "\f5c1";
+}
+
+.fa-face-surprise {
+ --fa: "\f5c2";
+}
+
+.fa-surprise {
+ --fa: "\f5c2";
+}
+
+.fa-swatchbook {
+ --fa: "\f5c3";
+}
+
+.fa-person-swimming {
+ --fa: "\f5c4";
+}
+
+.fa-swimmer {
+ --fa: "\f5c4";
+}
+
+.fa-water-ladder {
+ --fa: "\f5c5";
+}
+
+.fa-ladder-water {
+ --fa: "\f5c5";
+}
+
+.fa-swimming-pool {
+ --fa: "\f5c5";
+}
+
+.fa-droplet-slash {
+ --fa: "\f5c7";
+}
+
+.fa-tint-slash {
+ --fa: "\f5c7";
+}
+
+.fa-face-tired {
+ --fa: "\f5c8";
+}
+
+.fa-tired {
+ --fa: "\f5c8";
+}
+
+.fa-tooth {
+ --fa: "\f5c9";
+}
+
+.fa-umbrella-beach {
+ --fa: "\f5ca";
+}
+
+.fa-weight-hanging {
+ --fa: "\f5cd";
+}
+
+.fa-wine-glass-empty {
+ --fa: "\f5ce";
+}
+
+.fa-wine-glass-alt {
+ --fa: "\f5ce";
+}
+
+.fa-spray-can-sparkles {
+ --fa: "\f5d0";
+}
+
+.fa-air-freshener {
+ --fa: "\f5d0";
+}
+
+.fa-apple-whole {
+ --fa: "\f5d1";
+}
+
+.fa-apple-alt {
+ --fa: "\f5d1";
+}
+
+.fa-atom {
+ --fa: "\f5d2";
+}
+
+.fa-bone {
+ --fa: "\f5d7";
+}
+
+.fa-book-open-reader {
+ --fa: "\f5da";
+}
+
+.fa-book-reader {
+ --fa: "\f5da";
+}
+
+.fa-brain {
+ --fa: "\f5dc";
+}
+
+.fa-car-rear {
+ --fa: "\f5de";
+}
+
+.fa-car-alt {
+ --fa: "\f5de";
+}
+
+.fa-car-battery {
+ --fa: "\f5df";
+}
+
+.fa-battery-car {
+ --fa: "\f5df";
+}
+
+.fa-car-burst {
+ --fa: "\f5e1";
+}
+
+.fa-car-crash {
+ --fa: "\f5e1";
+}
+
+.fa-car-side {
+ --fa: "\f5e4";
+}
+
+.fa-charging-station {
+ --fa: "\f5e7";
+}
+
+.fa-diamond-turn-right {
+ --fa: "\f5eb";
+}
+
+.fa-directions {
+ --fa: "\f5eb";
+}
+
+.fa-draw-polygon {
+ --fa: "\f5ee";
+}
+
+.fa-vector-polygon {
+ --fa: "\f5ee";
+}
+
+.fa-laptop-code {
+ --fa: "\f5fc";
+}
+
+.fa-layer-group {
+ --fa: "\f5fd";
+}
+
+.fa-location-crosshairs {
+ --fa: "\f601";
+}
+
+.fa-location {
+ --fa: "\f601";
+}
+
+.fa-lungs {
+ --fa: "\f604";
+}
+
+.fa-microscope {
+ --fa: "\f610";
+}
+
+.fa-oil-can {
+ --fa: "\f613";
+}
+
+.fa-poop {
+ --fa: "\f619";
+}
+
+.fa-shapes {
+ --fa: "\f61f";
+}
+
+.fa-triangle-circle-square {
+ --fa: "\f61f";
+}
+
+.fa-star-of-life {
+ --fa: "\f621";
+}
+
+.fa-gauge {
+ --fa: "\f624";
+}
+
+.fa-dashboard {
+ --fa: "\f624";
+}
+
+.fa-gauge-med {
+ --fa: "\f624";
+}
+
+.fa-tachometer-alt-average {
+ --fa: "\f624";
+}
+
+.fa-gauge-high {
+ --fa: "\f625";
+}
+
+.fa-tachometer-alt {
+ --fa: "\f625";
+}
+
+.fa-tachometer-alt-fast {
+ --fa: "\f625";
+}
+
+.fa-gauge-simple {
+ --fa: "\f629";
+}
+
+.fa-gauge-simple-med {
+ --fa: "\f629";
+}
+
+.fa-tachometer-average {
+ --fa: "\f629";
+}
+
+.fa-gauge-simple-high {
+ --fa: "\f62a";
+}
+
+.fa-tachometer {
+ --fa: "\f62a";
+}
+
+.fa-tachometer-fast {
+ --fa: "\f62a";
+}
+
+.fa-teeth {
+ --fa: "\f62e";
+}
+
+.fa-teeth-open {
+ --fa: "\f62f";
+}
+
+.fa-masks-theater {
+ --fa: "\f630";
+}
+
+.fa-theater-masks {
+ --fa: "\f630";
+}
+
+.fa-traffic-light {
+ --fa: "\f637";
+}
+
+.fa-truck-monster {
+ --fa: "\f63b";
+}
+
+.fa-truck-pickup {
+ --fa: "\f63c";
+}
+
+.fa-rectangle-ad {
+ --fa: "\f641";
+}
+
+.fa-ad {
+ --fa: "\f641";
+}
+
+.fa-ankh {
+ --fa: "\f644";
+}
+
+.fa-book-bible {
+ --fa: "\f647";
+}
+
+.fa-bible {
+ --fa: "\f647";
+}
+
+.fa-business-time {
+ --fa: "\f64a";
+}
+
+.fa-briefcase-clock {
+ --fa: "\f64a";
+}
+
+.fa-city {
+ --fa: "\f64f";
+}
+
+.fa-comment-dollar {
+ --fa: "\f651";
+}
+
+.fa-comments-dollar {
+ --fa: "\f653";
+}
+
+.fa-cross {
+ --fa: "\f654";
+}
+
+.fa-dharmachakra {
+ --fa: "\f655";
+}
+
+.fa-envelope-open-text {
+ --fa: "\f658";
+}
+
+.fa-folder-minus {
+ --fa: "\f65d";
+}
+
+.fa-folder-plus {
+ --fa: "\f65e";
+}
+
+.fa-filter-circle-dollar {
+ --fa: "\f662";
+}
+
+.fa-funnel-dollar {
+ --fa: "\f662";
+}
+
+.fa-gopuram {
+ --fa: "\f664";
+}
+
+.fa-hamsa {
+ --fa: "\f665";
+}
+
+.fa-bahai {
+ --fa: "\f666";
+}
+
+.fa-haykal {
+ --fa: "\f666";
+}
+
+.fa-jedi {
+ --fa: "\f669";
+}
+
+.fa-book-journal-whills {
+ --fa: "\f66a";
+}
+
+.fa-journal-whills {
+ --fa: "\f66a";
+}
+
+.fa-kaaba {
+ --fa: "\f66b";
+}
+
+.fa-khanda {
+ --fa: "\f66d";
+}
+
+.fa-landmark {
+ --fa: "\f66f";
+}
+
+.fa-envelopes-bulk {
+ --fa: "\f674";
+}
+
+.fa-mail-bulk {
+ --fa: "\f674";
+}
+
+.fa-menorah {
+ --fa: "\f676";
+}
+
+.fa-mosque {
+ --fa: "\f678";
+}
+
+.fa-om {
+ --fa: "\f679";
+}
+
+.fa-spaghetti-monster-flying {
+ --fa: "\f67b";
+}
+
+.fa-pastafarianism {
+ --fa: "\f67b";
+}
+
+.fa-peace {
+ --fa: "\f67c";
+}
+
+.fa-place-of-worship {
+ --fa: "\f67f";
+}
+
+.fa-square-poll-vertical {
+ --fa: "\f681";
+}
+
+.fa-poll {
+ --fa: "\f681";
+}
+
+.fa-square-poll-horizontal {
+ --fa: "\f682";
+}
+
+.fa-poll-h {
+ --fa: "\f682";
+}
+
+.fa-person-praying {
+ --fa: "\f683";
+}
+
+.fa-pray {
+ --fa: "\f683";
+}
+
+.fa-hands-praying {
+ --fa: "\f684";
+}
+
+.fa-praying-hands {
+ --fa: "\f684";
+}
+
+.fa-book-quran {
+ --fa: "\f687";
+}
+
+.fa-quran {
+ --fa: "\f687";
+}
+
+.fa-magnifying-glass-dollar {
+ --fa: "\f688";
+}
+
+.fa-search-dollar {
+ --fa: "\f688";
+}
+
+.fa-magnifying-glass-location {
+ --fa: "\f689";
+}
+
+.fa-search-location {
+ --fa: "\f689";
+}
+
+.fa-socks {
+ --fa: "\f696";
+}
+
+.fa-square-root-variable {
+ --fa: "\f698";
+}
+
+.fa-square-root-alt {
+ --fa: "\f698";
+}
+
+.fa-star-and-crescent {
+ --fa: "\f699";
+}
+
+.fa-star-of-david {
+ --fa: "\f69a";
+}
+
+.fa-synagogue {
+ --fa: "\f69b";
+}
+
+.fa-scroll-torah {
+ --fa: "\f6a0";
+}
+
+.fa-torah {
+ --fa: "\f6a0";
+}
+
+.fa-torii-gate {
+ --fa: "\f6a1";
+}
+
+.fa-vihara {
+ --fa: "\f6a7";
+}
+
+.fa-volume {
+ --fa: "\f6a8";
+}
+
+.fa-volume-medium {
+ --fa: "\f6a8";
+}
+
+.fa-volume-xmark {
+ --fa: "\f6a9";
+}
+
+.fa-volume-mute {
+ --fa: "\f6a9";
+}
+
+.fa-volume-times {
+ --fa: "\f6a9";
+}
+
+.fa-yin-yang {
+ --fa: "\f6ad";
+}
+
+.fa-blender-phone {
+ --fa: "\f6b6";
+}
+
+.fa-book-skull {
+ --fa: "\f6b7";
+}
+
+.fa-book-dead {
+ --fa: "\f6b7";
+}
+
+.fa-campground {
+ --fa: "\f6bb";
+}
+
+.fa-cat {
+ --fa: "\f6be";
+}
+
+.fa-chair {
+ --fa: "\f6c0";
+}
+
+.fa-cloud-moon {
+ --fa: "\f6c3";
+}
+
+.fa-cloud-sun {
+ --fa: "\f6c4";
+}
+
+.fa-cow {
+ --fa: "\f6c8";
+}
+
+.fa-dice-d20 {
+ --fa: "\f6cf";
+}
+
+.fa-dice-d6 {
+ --fa: "\f6d1";
+}
+
+.fa-dog {
+ --fa: "\f6d3";
+}
+
+.fa-dragon {
+ --fa: "\f6d5";
+}
+
+.fa-drumstick-bite {
+ --fa: "\f6d7";
+}
+
+.fa-dungeon {
+ --fa: "\f6d9";
+}
+
+.fa-file-csv {
+ --fa: "\f6dd";
+}
+
+.fa-hand-fist {
+ --fa: "\f6de";
+}
+
+.fa-fist-raised {
+ --fa: "\f6de";
+}
+
+.fa-ghost {
+ --fa: "\f6e2";
+}
+
+.fa-hammer {
+ --fa: "\f6e3";
+}
+
+.fa-hanukiah {
+ --fa: "\f6e6";
+}
+
+.fa-hat-wizard {
+ --fa: "\f6e8";
+}
+
+.fa-person-hiking {
+ --fa: "\f6ec";
+}
+
+.fa-hiking {
+ --fa: "\f6ec";
+}
+
+.fa-hippo {
+ --fa: "\f6ed";
+}
+
+.fa-horse {
+ --fa: "\f6f0";
+}
+
+.fa-house-chimney-crack {
+ --fa: "\f6f1";
+}
+
+.fa-house-damage {
+ --fa: "\f6f1";
+}
+
+.fa-hryvnia-sign {
+ --fa: "\f6f2";
+}
+
+.fa-hryvnia {
+ --fa: "\f6f2";
+}
+
+.fa-mask {
+ --fa: "\f6fa";
+}
+
+.fa-mountain {
+ --fa: "\f6fc";
+}
+
+.fa-network-wired {
+ --fa: "\f6ff";
+}
+
+.fa-otter {
+ --fa: "\f700";
+}
+
+.fa-ring {
+ --fa: "\f70b";
+}
+
+.fa-person-running {
+ --fa: "\f70c";
+}
+
+.fa-running {
+ --fa: "\f70c";
+}
+
+.fa-scroll {
+ --fa: "\f70e";
+}
+
+.fa-skull-crossbones {
+ --fa: "\f714";
+}
+
+.fa-slash {
+ --fa: "\f715";
+}
+
+.fa-spider {
+ --fa: "\f717";
+}
+
+.fa-toilet-paper {
+ --fa: "\f71e";
+}
+
+.fa-toilet-paper-alt {
+ --fa: "\f71e";
+}
+
+.fa-toilet-paper-blank {
+ --fa: "\f71e";
+}
+
+.fa-tractor {
+ --fa: "\f722";
+}
+
+.fa-user-injured {
+ --fa: "\f728";
+}
+
+.fa-vr-cardboard {
+ --fa: "\f729";
+}
+
+.fa-wand-sparkles {
+ --fa: "\f72b";
+}
+
+.fa-wind {
+ --fa: "\f72e";
+}
+
+.fa-wine-bottle {
+ --fa: "\f72f";
+}
+
+.fa-cloud-meatball {
+ --fa: "\f73b";
+}
+
+.fa-cloud-moon-rain {
+ --fa: "\f73c";
+}
+
+.fa-cloud-rain {
+ --fa: "\f73d";
+}
+
+.fa-cloud-showers-heavy {
+ --fa: "\f740";
+}
+
+.fa-cloud-sun-rain {
+ --fa: "\f743";
+}
+
+.fa-democrat {
+ --fa: "\f747";
+}
+
+.fa-flag-usa {
+ --fa: "\f74d";
+}
+
+.fa-hurricane {
+ --fa: "\f751";
+}
+
+.fa-landmark-dome {
+ --fa: "\f752";
+}
+
+.fa-landmark-alt {
+ --fa: "\f752";
+}
+
+.fa-meteor {
+ --fa: "\f753";
+}
+
+.fa-person-booth {
+ --fa: "\f756";
+}
+
+.fa-poo-storm {
+ --fa: "\f75a";
+}
+
+.fa-poo-bolt {
+ --fa: "\f75a";
+}
+
+.fa-rainbow {
+ --fa: "\f75b";
+}
+
+.fa-republican {
+ --fa: "\f75e";
+}
+
+.fa-smog {
+ --fa: "\f75f";
+}
+
+.fa-temperature-high {
+ --fa: "\f769";
+}
+
+.fa-temperature-low {
+ --fa: "\f76b";
+}
+
+.fa-cloud-bolt {
+ --fa: "\f76c";
+}
+
+.fa-thunderstorm {
+ --fa: "\f76c";
+}
+
+.fa-tornado {
+ --fa: "\f76f";
+}
+
+.fa-volcano {
+ --fa: "\f770";
+}
+
+.fa-check-to-slot {
+ --fa: "\f772";
+}
+
+.fa-vote-yea {
+ --fa: "\f772";
+}
+
+.fa-water {
+ --fa: "\f773";
+}
+
+.fa-baby {
+ --fa: "\f77c";
+}
+
+.fa-baby-carriage {
+ --fa: "\f77d";
+}
+
+.fa-carriage-baby {
+ --fa: "\f77d";
+}
+
+.fa-biohazard {
+ --fa: "\f780";
+}
+
+.fa-blog {
+ --fa: "\f781";
+}
+
+.fa-calendar-day {
+ --fa: "\f783";
+}
+
+.fa-calendar-week {
+ --fa: "\f784";
+}
+
+.fa-candy-cane {
+ --fa: "\f786";
+}
+
+.fa-carrot {
+ --fa: "\f787";
+}
+
+.fa-cash-register {
+ --fa: "\f788";
+}
+
+.fa-minimize {
+ --fa: "\f78c";
+}
+
+.fa-compress-arrows-alt {
+ --fa: "\f78c";
+}
+
+.fa-dumpster {
+ --fa: "\f793";
+}
+
+.fa-dumpster-fire {
+ --fa: "\f794";
+}
+
+.fa-ethernet {
+ --fa: "\f796";
+}
+
+.fa-gifts {
+ --fa: "\f79c";
+}
+
+.fa-champagne-glasses {
+ --fa: "\f79f";
+}
+
+.fa-glass-cheers {
+ --fa: "\f79f";
+}
+
+.fa-whiskey-glass {
+ --fa: "\f7a0";
+}
+
+.fa-glass-whiskey {
+ --fa: "\f7a0";
+}
+
+.fa-earth-europe {
+ --fa: "\f7a2";
+}
+
+.fa-globe-europe {
+ --fa: "\f7a2";
+}
+
+.fa-grip-lines {
+ --fa: "\f7a4";
+}
+
+.fa-grip-lines-vertical {
+ --fa: "\f7a5";
+}
+
+.fa-guitar {
+ --fa: "\f7a6";
+}
+
+.fa-heart-crack {
+ --fa: "\f7a9";
+}
+
+.fa-heart-broken {
+ --fa: "\f7a9";
+}
+
+.fa-holly-berry {
+ --fa: "\f7aa";
+}
+
+.fa-horse-head {
+ --fa: "\f7ab";
+}
+
+.fa-icicles {
+ --fa: "\f7ad";
+}
+
+.fa-igloo {
+ --fa: "\f7ae";
+}
+
+.fa-mitten {
+ --fa: "\f7b5";
+}
+
+.fa-mug-hot {
+ --fa: "\f7b6";
+}
+
+.fa-radiation {
+ --fa: "\f7b9";
+}
+
+.fa-circle-radiation {
+ --fa: "\f7ba";
+}
+
+.fa-radiation-alt {
+ --fa: "\f7ba";
+}
+
+.fa-restroom {
+ --fa: "\f7bd";
+}
+
+.fa-satellite {
+ --fa: "\f7bf";
+}
+
+.fa-satellite-dish {
+ --fa: "\f7c0";
+}
+
+.fa-sd-card {
+ --fa: "\f7c2";
+}
+
+.fa-sim-card {
+ --fa: "\f7c4";
+}
+
+.fa-person-skating {
+ --fa: "\f7c5";
+}
+
+.fa-skating {
+ --fa: "\f7c5";
+}
+
+.fa-person-skiing {
+ --fa: "\f7c9";
+}
+
+.fa-skiing {
+ --fa: "\f7c9";
+}
+
+.fa-person-skiing-nordic {
+ --fa: "\f7ca";
+}
+
+.fa-skiing-nordic {
+ --fa: "\f7ca";
+}
+
+.fa-sleigh {
+ --fa: "\f7cc";
+}
+
+.fa-comment-sms {
+ --fa: "\f7cd";
+}
+
+.fa-sms {
+ --fa: "\f7cd";
+}
+
+.fa-person-snowboarding {
+ --fa: "\f7ce";
+}
+
+.fa-snowboarding {
+ --fa: "\f7ce";
+}
+
+.fa-snowman {
+ --fa: "\f7d0";
+}
+
+.fa-snowplow {
+ --fa: "\f7d2";
+}
+
+.fa-tenge-sign {
+ --fa: "\f7d7";
+}
+
+.fa-tenge {
+ --fa: "\f7d7";
+}
+
+.fa-toilet {
+ --fa: "\f7d8";
+}
+
+.fa-screwdriver-wrench {
+ --fa: "\f7d9";
+}
+
+.fa-tools {
+ --fa: "\f7d9";
+}
+
+.fa-cable-car {
+ --fa: "\f7da";
+}
+
+.fa-tram {
+ --fa: "\f7da";
+}
+
+.fa-fire-flame-curved {
+ --fa: "\f7e4";
+}
+
+.fa-fire-alt {
+ --fa: "\f7e4";
+}
+
+.fa-bacon {
+ --fa: "\f7e5";
+}
+
+.fa-book-medical {
+ --fa: "\f7e6";
+}
+
+.fa-bread-slice {
+ --fa: "\f7ec";
+}
+
+.fa-cheese {
+ --fa: "\f7ef";
+}
+
+.fa-house-chimney-medical {
+ --fa: "\f7f2";
+}
+
+.fa-clinic-medical {
+ --fa: "\f7f2";
+}
+
+.fa-clipboard-user {
+ --fa: "\f7f3";
+}
+
+.fa-comment-medical {
+ --fa: "\f7f5";
+}
+
+.fa-crutch {
+ --fa: "\f7f7";
+}
+
+.fa-disease {
+ --fa: "\f7fa";
+}
+
+.fa-egg {
+ --fa: "\f7fb";
+}
+
+.fa-folder-tree {
+ --fa: "\f802";
+}
+
+.fa-burger {
+ --fa: "\f805";
+}
+
+.fa-hamburger {
+ --fa: "\f805";
+}
+
+.fa-hand-middle-finger {
+ --fa: "\f806";
+}
+
+.fa-helmet-safety {
+ --fa: "\f807";
+}
+
+.fa-hard-hat {
+ --fa: "\f807";
+}
+
+.fa-hat-hard {
+ --fa: "\f807";
+}
+
+.fa-hospital-user {
+ --fa: "\f80d";
+}
+
+.fa-hotdog {
+ --fa: "\f80f";
+}
+
+.fa-ice-cream {
+ --fa: "\f810";
+}
+
+.fa-laptop-medical {
+ --fa: "\f812";
+}
+
+.fa-pager {
+ --fa: "\f815";
+}
+
+.fa-pepper-hot {
+ --fa: "\f816";
+}
+
+.fa-pizza-slice {
+ --fa: "\f818";
+}
+
+.fa-sack-dollar {
+ --fa: "\f81d";
+}
+
+.fa-book-tanakh {
+ --fa: "\f827";
+}
+
+.fa-tanakh {
+ --fa: "\f827";
+}
+
+.fa-bars-progress {
+ --fa: "\f828";
+}
+
+.fa-tasks-alt {
+ --fa: "\f828";
+}
+
+.fa-trash-arrow-up {
+ --fa: "\f829";
+}
+
+.fa-trash-restore {
+ --fa: "\f829";
+}
+
+.fa-trash-can-arrow-up {
+ --fa: "\f82a";
+}
+
+.fa-trash-restore-alt {
+ --fa: "\f82a";
+}
+
+.fa-user-nurse {
+ --fa: "\f82f";
+}
+
+.fa-wave-square {
+ --fa: "\f83e";
+}
+
+.fa-person-biking {
+ --fa: "\f84a";
+}
+
+.fa-biking {
+ --fa: "\f84a";
+}
+
+.fa-border-all {
+ --fa: "\f84c";
+}
+
+.fa-border-none {
+ --fa: "\f850";
+}
+
+.fa-border-top-left {
+ --fa: "\f853";
+}
+
+.fa-border-style {
+ --fa: "\f853";
+}
+
+.fa-person-digging {
+ --fa: "\f85e";
+}
+
+.fa-digging {
+ --fa: "\f85e";
+}
+
+.fa-fan {
+ --fa: "\f863";
+}
+
+.fa-icons {
+ --fa: "\f86d";
+}
+
+.fa-heart-music-camera-bolt {
+ --fa: "\f86d";
+}
+
+.fa-phone-flip {
+ --fa: "\f879";
+}
+
+.fa-phone-alt {
+ --fa: "\f879";
+}
+
+.fa-square-phone-flip {
+ --fa: "\f87b";
+}
+
+.fa-phone-square-alt {
+ --fa: "\f87b";
+}
+
+.fa-photo-film {
+ --fa: "\f87c";
+}
+
+.fa-photo-video {
+ --fa: "\f87c";
+}
+
+.fa-text-slash {
+ --fa: "\f87d";
+}
+
+.fa-remove-format {
+ --fa: "\f87d";
+}
+
+.fa-arrow-down-z-a {
+ --fa: "\f881";
+}
+
+.fa-sort-alpha-desc {
+ --fa: "\f881";
+}
+
+.fa-sort-alpha-down-alt {
+ --fa: "\f881";
+}
+
+.fa-arrow-up-z-a {
+ --fa: "\f882";
+}
+
+.fa-sort-alpha-up-alt {
+ --fa: "\f882";
+}
+
+.fa-arrow-down-short-wide {
+ --fa: "\f884";
+}
+
+.fa-sort-amount-desc {
+ --fa: "\f884";
+}
+
+.fa-sort-amount-down-alt {
+ --fa: "\f884";
+}
+
+.fa-arrow-up-short-wide {
+ --fa: "\f885";
+}
+
+.fa-sort-amount-up-alt {
+ --fa: "\f885";
+}
+
+.fa-arrow-down-9-1 {
+ --fa: "\f886";
+}
+
+.fa-sort-numeric-desc {
+ --fa: "\f886";
+}
+
+.fa-sort-numeric-down-alt {
+ --fa: "\f886";
+}
+
+.fa-arrow-up-9-1 {
+ --fa: "\f887";
+}
+
+.fa-sort-numeric-up-alt {
+ --fa: "\f887";
+}
+
+.fa-spell-check {
+ --fa: "\f891";
+}
+
+.fa-voicemail {
+ --fa: "\f897";
+}
+
+.fa-hat-cowboy {
+ --fa: "\f8c0";
+}
+
+.fa-hat-cowboy-side {
+ --fa: "\f8c1";
+}
+
+.fa-computer-mouse {
+ --fa: "\f8cc";
+}
+
+.fa-mouse {
+ --fa: "\f8cc";
+}
+
+.fa-radio {
+ --fa: "\f8d7";
+}
+
+.fa-record-vinyl {
+ --fa: "\f8d9";
+}
+
+.fa-walkie-talkie {
+ --fa: "\f8ef";
+}
+
+.fa-caravan {
+ --fa: "\f8ff";
+}
+:root, :host {
+ --fa-family-brands: 'Font Awesome 7 Brands';
+ --fa-font-brands: normal 400 1em/1 var(--fa-family-brands);
+}
+
+@font-face {
+ font-family: "Font Awesome 7 Brands";
+ font-style: normal;
+ font-weight: 400;
+ font-display: block;
+ src: url("../webfonts/fa-brands-400.woff2");
+}
+.fab,
+.fa-brands,
+.fa-classic.fa-brands {
+ --fa-family: var(--fa-family-brands);
+ --fa-style: 400;
+}
+
+.fa-firefox-browser {
+ --fa: "\e007";
+}
+
+.fa-ideal {
+ --fa: "\e013";
+}
+
+.fa-microblog {
+ --fa: "\e01a";
+}
+
+.fa-square-pied-piper {
+ --fa: "\e01e";
+}
+
+.fa-pied-piper-square {
+ --fa: "\e01e";
+}
+
+.fa-unity {
+ --fa: "\e049";
+}
+
+.fa-dailymotion {
+ --fa: "\e052";
+}
+
+.fa-square-instagram {
+ --fa: "\e055";
+}
+
+.fa-instagram-square {
+ --fa: "\e055";
+}
+
+.fa-mixer {
+ --fa: "\e056";
+}
+
+.fa-shopify {
+ --fa: "\e057";
+}
+
+.fa-deezer {
+ --fa: "\e077";
+}
+
+.fa-edge-legacy {
+ --fa: "\e078";
+}
+
+.fa-google-pay {
+ --fa: "\e079";
+}
+
+.fa-rust {
+ --fa: "\e07a";
+}
+
+.fa-tiktok {
+ --fa: "\e07b";
+}
+
+.fa-unsplash {
+ --fa: "\e07c";
+}
+
+.fa-cloudflare {
+ --fa: "\e07d";
+}
+
+.fa-guilded {
+ --fa: "\e07e";
+}
+
+.fa-hive {
+ --fa: "\e07f";
+}
+
+.fa-42-group {
+ --fa: "\e080";
+}
+
+.fa-innosoft {
+ --fa: "\e080";
+}
+
+.fa-instalod {
+ --fa: "\e081";
+}
+
+.fa-octopus-deploy {
+ --fa: "\e082";
+}
+
+.fa-perbyte {
+ --fa: "\e083";
+}
+
+.fa-uncharted {
+ --fa: "\e084";
+}
+
+.fa-watchman-monitoring {
+ --fa: "\e087";
+}
+
+.fa-wodu {
+ --fa: "\e088";
+}
+
+.fa-wirsindhandwerk {
+ --fa: "\e2d0";
+}
+
+.fa-wsh {
+ --fa: "\e2d0";
+}
+
+.fa-bots {
+ --fa: "\e340";
+}
+
+.fa-cmplid {
+ --fa: "\e360";
+}
+
+.fa-bilibili {
+ --fa: "\e3d9";
+}
+
+.fa-golang {
+ --fa: "\e40f";
+}
+
+.fa-pix {
+ --fa: "\e43a";
+}
+
+.fa-sitrox {
+ --fa: "\e44a";
+}
+
+.fa-hashnode {
+ --fa: "\e499";
+}
+
+.fa-meta {
+ --fa: "\e49b";
+}
+
+.fa-padlet {
+ --fa: "\e4a0";
+}
+
+.fa-nfc-directional {
+ --fa: "\e530";
+}
+
+.fa-nfc-symbol {
+ --fa: "\e531";
+}
+
+.fa-screenpal {
+ --fa: "\e570";
+}
+
+.fa-space-awesome {
+ --fa: "\e5ac";
+}
+
+.fa-square-font-awesome {
+ --fa: "\e5ad";
+}
+
+.fa-square-gitlab {
+ --fa: "\e5ae";
+}
+
+.fa-gitlab-square {
+ --fa: "\e5ae";
+}
+
+.fa-odysee {
+ --fa: "\e5c6";
+}
+
+.fa-stubber {
+ --fa: "\e5c7";
+}
+
+.fa-debian {
+ --fa: "\e60b";
+}
+
+.fa-shoelace {
+ --fa: "\e60c";
+}
+
+.fa-threads {
+ --fa: "\e618";
+}
+
+.fa-square-threads {
+ --fa: "\e619";
+}
+
+.fa-square-x-twitter {
+ --fa: "\e61a";
+}
+
+.fa-x-twitter {
+ --fa: "\e61b";
+}
+
+.fa-opensuse {
+ --fa: "\e62b";
+}
+
+.fa-letterboxd {
+ --fa: "\e62d";
+}
+
+.fa-square-letterboxd {
+ --fa: "\e62e";
+}
+
+.fa-mintbit {
+ --fa: "\e62f";
+}
+
+.fa-google-scholar {
+ --fa: "\e63b";
+}
+
+.fa-brave {
+ --fa: "\e63c";
+}
+
+.fa-brave-reverse {
+ --fa: "\e63d";
+}
+
+.fa-pixiv {
+ --fa: "\e640";
+}
+
+.fa-upwork {
+ --fa: "\e641";
+}
+
+.fa-webflow {
+ --fa: "\e65c";
+}
+
+.fa-signal-messenger {
+ --fa: "\e663";
+}
+
+.fa-bluesky {
+ --fa: "\e671";
+}
+
+.fa-jxl {
+ --fa: "\e67b";
+}
+
+.fa-square-upwork {
+ --fa: "\e67c";
+}
+
+.fa-web-awesome {
+ --fa: "\e682";
+}
+
+.fa-square-web-awesome {
+ --fa: "\e683";
+}
+
+.fa-square-web-awesome-stroke {
+ --fa: "\e684";
+}
+
+.fa-dart-lang {
+ --fa: "\e693";
+}
+
+.fa-flutter {
+ --fa: "\e694";
+}
+
+.fa-files-pinwheel {
+ --fa: "\e69f";
+}
+
+.fa-css {
+ --fa: "\e6a2";
+}
+
+.fa-square-bluesky {
+ --fa: "\e6a3";
+}
+
+.fa-openai {
+ --fa: "\e7cf";
+}
+
+.fa-square-linkedin {
+ --fa: "\e7d0";
+}
+
+.fa-cash-app {
+ --fa: "\e7d4";
+}
+
+.fa-disqus {
+ --fa: "\e7d5";
+}
+
+.fa-eleventy {
+ --fa: "\e7d6";
+}
+
+.fa-11ty {
+ --fa: "\e7d6";
+}
+
+.fa-kakao-talk {
+ --fa: "\e7d7";
+}
+
+.fa-linktree {
+ --fa: "\e7d8";
+}
+
+.fa-notion {
+ --fa: "\e7d9";
+}
+
+.fa-pandora {
+ --fa: "\e7da";
+}
+
+.fa-pixelfed {
+ --fa: "\e7db";
+}
+
+.fa-tidal {
+ --fa: "\e7dc";
+}
+
+.fa-vsco {
+ --fa: "\e7dd";
+}
+
+.fa-w3c {
+ --fa: "\e7de";
+}
+
+.fa-lumon {
+ --fa: "\e7e2";
+}
+
+.fa-lumon-drop {
+ --fa: "\e7e3";
+}
+
+.fa-square-figma {
+ --fa: "\e7e4";
+}
+
+.fa-tex {
+ --fa: "\e7ff";
+}
+
+.fa-duolingo {
+ --fa: "\e812";
+}
+
+.fa-supportnow {
+ --fa: "\e833";
+}
+
+.fa-tor-browser {
+ --fa: "\e838";
+}
+
+.fa-typescript {
+ --fa: "\e840";
+}
+
+.fa-square-deskpro {
+ --fa: "\e844";
+}
+
+.fa-circle-zulip {
+ --fa: "\e851";
+}
+
+.fa-julia {
+ --fa: "\e852";
+}
+
+.fa-zulip {
+ --fa: "\e853";
+}
+
+.fa-unison {
+ --fa: "\e854";
+}
+
+.fa-board-game-geek {
+ --fa: "\e855";
+}
+
+.fa-bgg {
+ --fa: "\e855";
+}
+
+.fa-ko-fi {
+ --fa: "\e856";
+}
+
+.fa-kubernetes {
+ --fa: "\e857";
+}
+
+.fa-postgresql {
+ --fa: "\e858";
+}
+
+.fa-scaleway {
+ --fa: "\e859";
+}
+
+.fa-venmo {
+ --fa: "\e85a";
+}
+
+.fa-venmo-v {
+ --fa: "\e85b";
+}
+
+.fa-unreal-engine {
+ --fa: "\e85c";
+}
+
+.fa-globaleaks {
+ --fa: "\e85d";
+}
+
+.fa-solana {
+ --fa: "\e85e";
+}
+
+.fa-threema {
+ --fa: "\e85f";
+}
+
+.fa-forgejo {
+ --fa: "\e860";
+}
+
+.fa-claude {
+ --fa: "\e861";
+}
+
+.fa-gitee {
+ --fa: "\e863";
+}
+
+.fa-xmpp {
+ --fa: "\e864";
+}
+
+.fa-fediverse {
+ --fa: "\e865";
+}
+
+.fa-tailwind-css {
+ --fa: "\e866";
+}
+
+.fa-arch-linux {
+ --fa: "\e867";
+}
+
+.fa-svelte {
+ --fa: "\e868";
+}
+
+.fa-hugging-face {
+ --fa: "\e869";
+}
+
+.fa-leetcode {
+ --fa: "\e86a";
+}
+
+.fa-openstreetmap {
+ --fa: "\e86b";
+}
+
+.fa-ultralytics {
+ --fa: "\e86d";
+}
+
+.fa-ultralytics-hub {
+ --fa: "\e86e";
+}
+
+.fa-ultralytics-yolo {
+ --fa: "\e86f";
+}
+
+.fa-obsidian {
+ --fa: "\e879";
+}
+
+.fa-zoom {
+ --fa: "\e87b";
+}
+
+.fa-vim {
+ --fa: "\e88a";
+}
+
+.fa-symfonycasts {
+ --fa: "\e8ab";
+}
+
+.fa-build-awesome {
+ --fa: "\e8ac";
+}
+
+.fa-codeberg {
+ --fa: "\e8ad";
+}
+
+.fa-devpost {
+ --fa: "\e8ae";
+}
+
+.fa-internet-archive {
+ --fa: "\e8b1";
+}
+
+.fa-lets-encrypt {
+ --fa: "\e8b2";
+}
+
+.fa-matrix {
+ --fa: "\e8b3";
+}
+
+.fa-mattermost {
+ --fa: "\e8b4";
+}
+
+.fa-nextcloud {
+ --fa: "\e8b5";
+}
+
+.fa-roblox-creator-studio {
+ --fa: "\e8b6";
+}
+
+.fa-square-build-awesome-stroke {
+ --fa: "\e8b7";
+}
+
+.fa-substack {
+ --fa: "\e8b8";
+}
+
+.fa-tesla {
+ --fa: "\e8b9";
+}
+
+.fa-xrp {
+ --fa: "\e8ba";
+}
+
+.fa-xrpl {
+ --fa: "\e8bb";
+}
+
+.fa-youtube-shorts {
+ --fa: "\e8bc";
+}
+
+.fa-ror {
+ --fa: "\e8bd";
+}
+
+.fa-square-twitter {
+ --fa: "\f081";
+}
+
+.fa-twitter-square {
+ --fa: "\f081";
+}
+
+.fa-square-facebook {
+ --fa: "\f082";
+}
+
+.fa-facebook-square {
+ --fa: "\f082";
+}
+
+.fa-linkedin {
+ --fa: "\f08c";
+}
+
+.fa-square-github {
+ --fa: "\f092";
+}
+
+.fa-github-square {
+ --fa: "\f092";
+}
+
+.fa-twitter {
+ --fa: "\f099";
+}
+
+.fa-facebook {
+ --fa: "\f09a";
+}
+
+.fa-github {
+ --fa: "\f09b";
+}
+
+.fa-pinterest {
+ --fa: "\f0d2";
+}
+
+.fa-square-pinterest {
+ --fa: "\f0d3";
+}
+
+.fa-pinterest-square {
+ --fa: "\f0d3";
+}
+
+.fa-square-google-plus {
+ --fa: "\f0d4";
+}
+
+.fa-google-plus-square {
+ --fa: "\f0d4";
+}
+
+.fa-google-plus-g {
+ --fa: "\f0d5";
+}
+
+.fa-linkedin-in {
+ --fa: "\f0e1";
+}
+
+.fa-github-alt {
+ --fa: "\f113";
+}
+
+.fa-maxcdn {
+ --fa: "\f136";
+}
+
+.fa-html5 {
+ --fa: "\f13b";
+}
+
+.fa-css3 {
+ --fa: "\f13c";
+}
+
+.fa-btc {
+ --fa: "\f15a";
+}
+
+.fa-youtube {
+ --fa: "\f167";
+}
+
+.fa-xing {
+ --fa: "\f168";
+}
+
+.fa-square-xing {
+ --fa: "\f169";
+}
+
+.fa-xing-square {
+ --fa: "\f169";
+}
+
+.fa-dropbox {
+ --fa: "\f16b";
+}
+
+.fa-stack-overflow {
+ --fa: "\f16c";
+}
+
+.fa-instagram {
+ --fa: "\f16d";
+}
+
+.fa-flickr {
+ --fa: "\f16e";
+}
+
+.fa-adn {
+ --fa: "\f170";
+}
+
+.fa-bitbucket {
+ --fa: "\f171";
+}
+
+.fa-tumblr {
+ --fa: "\f173";
+}
+
+.fa-square-tumblr {
+ --fa: "\f174";
+}
+
+.fa-tumblr-square {
+ --fa: "\f174";
+}
+
+.fa-apple {
+ --fa: "\f179";
+}
+
+.fa-windows {
+ --fa: "\f17a";
+}
+
+.fa-android {
+ --fa: "\f17b";
+}
+
+.fa-linux {
+ --fa: "\f17c";
+}
+
+.fa-dribbble {
+ --fa: "\f17d";
+}
+
+.fa-skype {
+ --fa: "\f17e";
+}
+
+.fa-foursquare {
+ --fa: "\f180";
+}
+
+.fa-trello {
+ --fa: "\f181";
+}
+
+.fa-gratipay {
+ --fa: "\f184";
+}
+
+.fa-vk {
+ --fa: "\f189";
+}
+
+.fa-weibo {
+ --fa: "\f18a";
+}
+
+.fa-renren {
+ --fa: "\f18b";
+}
+
+.fa-pagelines {
+ --fa: "\f18c";
+}
+
+.fa-stack-exchange {
+ --fa: "\f18d";
+}
+
+.fa-square-vimeo {
+ --fa: "\f194";
+}
+
+.fa-vimeo-square {
+ --fa: "\f194";
+}
+
+.fa-slack {
+ --fa: "\f198";
+}
+
+.fa-slack-hash {
+ --fa: "\f198";
+}
+
+.fa-wordpress {
+ --fa: "\f19a";
+}
+
+.fa-openid {
+ --fa: "\f19b";
+}
+
+.fa-yahoo {
+ --fa: "\f19e";
+}
+
+.fa-google {
+ --fa: "\f1a0";
+}
+
+.fa-reddit {
+ --fa: "\f1a1";
+}
+
+.fa-square-reddit {
+ --fa: "\f1a2";
+}
+
+.fa-reddit-square {
+ --fa: "\f1a2";
+}
+
+.fa-stumbleupon-circle {
+ --fa: "\f1a3";
+}
+
+.fa-stumbleupon {
+ --fa: "\f1a4";
+}
+
+.fa-delicious {
+ --fa: "\f1a5";
+}
+
+.fa-digg {
+ --fa: "\f1a6";
+}
+
+.fa-pied-piper-pp {
+ --fa: "\f1a7";
+}
+
+.fa-pied-piper-alt {
+ --fa: "\f1a8";
+}
+
+.fa-drupal {
+ --fa: "\f1a9";
+}
+
+.fa-joomla {
+ --fa: "\f1aa";
+}
+
+.fa-behance {
+ --fa: "\f1b4";
+}
+
+.fa-square-behance {
+ --fa: "\f1b5";
+}
+
+.fa-behance-square {
+ --fa: "\f1b5";
+}
+
+.fa-steam {
+ --fa: "\f1b6";
+}
+
+.fa-square-steam {
+ --fa: "\f1b7";
+}
+
+.fa-steam-square {
+ --fa: "\f1b7";
+}
+
+.fa-spotify {
+ --fa: "\f1bc";
+}
+
+.fa-deviantart {
+ --fa: "\f1bd";
+}
+
+.fa-soundcloud {
+ --fa: "\f1be";
+}
+
+.fa-vine {
+ --fa: "\f1ca";
+}
+
+.fa-codepen {
+ --fa: "\f1cb";
+}
+
+.fa-jsfiddle {
+ --fa: "\f1cc";
+}
+
+.fa-rebel {
+ --fa: "\f1d0";
+}
+
+.fa-empire {
+ --fa: "\f1d1";
+}
+
+.fa-square-git {
+ --fa: "\f1d2";
+}
+
+.fa-git-square {
+ --fa: "\f1d2";
+}
+
+.fa-git {
+ --fa: "\f1d3";
+}
+
+.fa-hacker-news {
+ --fa: "\f1d4";
+}
+
+.fa-tencent-weibo {
+ --fa: "\f1d5";
+}
+
+.fa-qq {
+ --fa: "\f1d6";
+}
+
+.fa-weixin {
+ --fa: "\f1d7";
+}
+
+.fa-slideshare {
+ --fa: "\f1e7";
+}
+
+.fa-twitch {
+ --fa: "\f1e8";
+}
+
+.fa-yelp {
+ --fa: "\f1e9";
+}
+
+.fa-paypal {
+ --fa: "\f1ed";
+}
+
+.fa-google-wallet {
+ --fa: "\f1ee";
+}
+
+.fa-cc-visa {
+ --fa: "\f1f0";
+}
+
+.fa-cc-mastercard {
+ --fa: "\f1f1";
+}
+
+.fa-cc-discover {
+ --fa: "\f1f2";
+}
+
+.fa-cc-amex {
+ --fa: "\f1f3";
+}
+
+.fa-cc-paypal {
+ --fa: "\f1f4";
+}
+
+.fa-cc-stripe {
+ --fa: "\f1f5";
+}
+
+.fa-lastfm {
+ --fa: "\f202";
+}
+
+.fa-square-lastfm {
+ --fa: "\f203";
+}
+
+.fa-lastfm-square {
+ --fa: "\f203";
+}
+
+.fa-ioxhost {
+ --fa: "\f208";
+}
+
+.fa-angellist {
+ --fa: "\f209";
+}
+
+.fa-buysellads {
+ --fa: "\f20d";
+}
+
+.fa-connectdevelop {
+ --fa: "\f20e";
+}
+
+.fa-dashcube {
+ --fa: "\f210";
+}
+
+.fa-forumbee {
+ --fa: "\f211";
+}
+
+.fa-leanpub {
+ --fa: "\f212";
+}
+
+.fa-sellsy {
+ --fa: "\f213";
+}
+
+.fa-shirtsinbulk {
+ --fa: "\f214";
+}
+
+.fa-simplybuilt {
+ --fa: "\f215";
+}
+
+.fa-skyatlas {
+ --fa: "\f216";
+}
+
+.fa-pinterest-p {
+ --fa: "\f231";
+}
+
+.fa-whatsapp {
+ --fa: "\f232";
+}
+
+.fa-viacoin {
+ --fa: "\f237";
+}
+
+.fa-medium {
+ --fa: "\f23a";
+}
+
+.fa-medium-m {
+ --fa: "\f23a";
+}
+
+.fa-y-combinator {
+ --fa: "\f23b";
+}
+
+.fa-optin-monster {
+ --fa: "\f23c";
+}
+
+.fa-opencart {
+ --fa: "\f23d";
+}
+
+.fa-expeditedssl {
+ --fa: "\f23e";
+}
+
+.fa-cc-jcb {
+ --fa: "\f24b";
+}
+
+.fa-cc-diners-club {
+ --fa: "\f24c";
+}
+
+.fa-creative-commons {
+ --fa: "\f25e";
+}
+
+.fa-gg {
+ --fa: "\f260";
+}
+
+.fa-gg-circle {
+ --fa: "\f261";
+}
+
+.fa-odnoklassniki {
+ --fa: "\f263";
+}
+
+.fa-square-odnoklassniki {
+ --fa: "\f264";
+}
+
+.fa-odnoklassniki-square {
+ --fa: "\f264";
+}
+
+.fa-get-pocket {
+ --fa: "\f265";
+}
+
+.fa-wikipedia-w {
+ --fa: "\f266";
+}
+
+.fa-safari {
+ --fa: "\f267";
+}
+
+.fa-chrome {
+ --fa: "\f268";
+}
+
+.fa-firefox {
+ --fa: "\f269";
+}
+
+.fa-opera {
+ --fa: "\f26a";
+}
+
+.fa-internet-explorer {
+ --fa: "\f26b";
+}
+
+.fa-contao {
+ --fa: "\f26d";
+}
+
+.fa-500px {
+ --fa: "\f26e";
+}
+
+.fa-amazon {
+ --fa: "\f270";
+}
+
+.fa-houzz {
+ --fa: "\f27c";
+}
+
+.fa-vimeo-v {
+ --fa: "\f27d";
+}
+
+.fa-black-tie {
+ --fa: "\f27e";
+}
+
+.fa-fonticons {
+ --fa: "\f280";
+}
+
+.fa-reddit-alien {
+ --fa: "\f281";
+}
+
+.fa-edge {
+ --fa: "\f282";
+}
+
+.fa-codiepie {
+ --fa: "\f284";
+}
+
+.fa-modx {
+ --fa: "\f285";
+}
+
+.fa-fort-awesome {
+ --fa: "\f286";
+}
+
+.fa-usb {
+ --fa: "\f287";
+}
+
+.fa-product-hunt {
+ --fa: "\f288";
+}
+
+.fa-mixcloud {
+ --fa: "\f289";
+}
+
+.fa-scribd {
+ --fa: "\f28a";
+}
+
+.fa-bluetooth {
+ --fa: "\f293";
+}
+
+.fa-bluetooth-b {
+ --fa: "\f294";
+}
+
+.fa-gitlab {
+ --fa: "\f296";
+}
+
+.fa-wpbeginner {
+ --fa: "\f297";
+}
+
+.fa-wpforms {
+ --fa: "\f298";
+}
+
+.fa-envira {
+ --fa: "\f299";
+}
+
+.fa-glide {
+ --fa: "\f2a5";
+}
+
+.fa-glide-g {
+ --fa: "\f2a6";
+}
+
+.fa-viadeo {
+ --fa: "\f2a9";
+}
+
+.fa-square-viadeo {
+ --fa: "\f2aa";
+}
+
+.fa-viadeo-square {
+ --fa: "\f2aa";
+}
+
+.fa-snapchat {
+ --fa: "\f2ab";
+}
+
+.fa-snapchat-ghost {
+ --fa: "\f2ab";
+}
+
+.fa-square-snapchat {
+ --fa: "\f2ad";
+}
+
+.fa-snapchat-square {
+ --fa: "\f2ad";
+}
+
+.fa-pied-piper {
+ --fa: "\f2ae";
+}
+
+.fa-first-order {
+ --fa: "\f2b0";
+}
+
+.fa-yoast {
+ --fa: "\f2b1";
+}
+
+.fa-themeisle {
+ --fa: "\f2b2";
+}
+
+.fa-google-plus {
+ --fa: "\f2b3";
+}
+
+.fa-font-awesome {
+ --fa: "\f2b4";
+}
+
+.fa-font-awesome-flag {
+ --fa: "\f2b4";
+}
+
+.fa-font-awesome-logo-full {
+ --fa: "\f2b4";
+}
+
+.fa-linode {
+ --fa: "\f2b8";
+}
+
+.fa-quora {
+ --fa: "\f2c4";
+}
+
+.fa-free-code-camp {
+ --fa: "\f2c5";
+}
+
+.fa-telegram {
+ --fa: "\f2c6";
+}
+
+.fa-telegram-plane {
+ --fa: "\f2c6";
+}
+
+.fa-bandcamp {
+ --fa: "\f2d5";
+}
+
+.fa-grav {
+ --fa: "\f2d6";
+}
+
+.fa-etsy {
+ --fa: "\f2d7";
+}
+
+.fa-imdb {
+ --fa: "\f2d8";
+}
+
+.fa-ravelry {
+ --fa: "\f2d9";
+}
+
+.fa-sellcast {
+ --fa: "\f2da";
+}
+
+.fa-superpowers {
+ --fa: "\f2dd";
+}
+
+.fa-wpexplorer {
+ --fa: "\f2de";
+}
+
+.fa-meetup {
+ --fa: "\f2e0";
+}
+
+.fa-square-font-awesome-stroke {
+ --fa: "\f35c";
+}
+
+.fa-font-awesome-alt {
+ --fa: "\f35c";
+}
+
+.fa-accessible-icon {
+ --fa: "\f368";
+}
+
+.fa-accusoft {
+ --fa: "\f369";
+}
+
+.fa-adversal {
+ --fa: "\f36a";
+}
+
+.fa-affiliatetheme {
+ --fa: "\f36b";
+}
+
+.fa-algolia {
+ --fa: "\f36c";
+}
+
+.fa-amilia {
+ --fa: "\f36d";
+}
+
+.fa-angrycreative {
+ --fa: "\f36e";
+}
+
+.fa-app-store {
+ --fa: "\f36f";
+}
+
+.fa-app-store-ios {
+ --fa: "\f370";
+}
+
+.fa-apper {
+ --fa: "\f371";
+}
+
+.fa-asymmetrik {
+ --fa: "\f372";
+}
+
+.fa-audible {
+ --fa: "\f373";
+}
+
+.fa-avianex {
+ --fa: "\f374";
+}
+
+.fa-aws {
+ --fa: "\f375";
+}
+
+.fa-bimobject {
+ --fa: "\f378";
+}
+
+.fa-bitcoin {
+ --fa: "\f379";
+}
+
+.fa-bity {
+ --fa: "\f37a";
+}
+
+.fa-blackberry {
+ --fa: "\f37b";
+}
+
+.fa-blogger {
+ --fa: "\f37c";
+}
+
+.fa-blogger-b {
+ --fa: "\f37d";
+}
+
+.fa-buromobelexperte {
+ --fa: "\f37f";
+}
+
+.fa-centercode {
+ --fa: "\f380";
+}
+
+.fa-cloudscale {
+ --fa: "\f383";
+}
+
+.fa-cloudsmith {
+ --fa: "\f384";
+}
+
+.fa-cloudversify {
+ --fa: "\f385";
+}
+
+.fa-cpanel {
+ --fa: "\f388";
+}
+
+.fa-css3-alt {
+ --fa: "\f38b";
+}
+
+.fa-cuttlefish {
+ --fa: "\f38c";
+}
+
+.fa-d-and-d {
+ --fa: "\f38d";
+}
+
+.fa-deploydog {
+ --fa: "\f38e";
+}
+
+.fa-deskpro {
+ --fa: "\f38f";
+}
+
+.fa-digital-ocean {
+ --fa: "\f391";
+}
+
+.fa-discord {
+ --fa: "\f392";
+}
+
+.fa-discourse {
+ --fa: "\f393";
+}
+
+.fa-dochub {
+ --fa: "\f394";
+}
+
+.fa-docker {
+ --fa: "\f395";
+}
+
+.fa-draft2digital {
+ --fa: "\f396";
+}
+
+.fa-square-dribbble {
+ --fa: "\f397";
+}
+
+.fa-dribbble-square {
+ --fa: "\f397";
+}
+
+.fa-dyalog {
+ --fa: "\f399";
+}
+
+.fa-earlybirds {
+ --fa: "\f39a";
+}
+
+.fa-erlang {
+ --fa: "\f39d";
+}
+
+.fa-facebook-f {
+ --fa: "\f39e";
+}
+
+.fa-facebook-messenger {
+ --fa: "\f39f";
+}
+
+.fa-firstdraft {
+ --fa: "\f3a1";
+}
+
+.fa-fonticons-fi {
+ --fa: "\f3a2";
+}
+
+.fa-fort-awesome-alt {
+ --fa: "\f3a3";
+}
+
+.fa-freebsd {
+ --fa: "\f3a4";
+}
+
+.fa-gitkraken {
+ --fa: "\f3a6";
+}
+
+.fa-gofore {
+ --fa: "\f3a7";
+}
+
+.fa-goodreads {
+ --fa: "\f3a8";
+}
+
+.fa-goodreads-g {
+ --fa: "\f3a9";
+}
+
+.fa-google-drive {
+ --fa: "\f3aa";
+}
+
+.fa-google-play {
+ --fa: "\f3ab";
+}
+
+.fa-gripfire {
+ --fa: "\f3ac";
+}
+
+.fa-grunt {
+ --fa: "\f3ad";
+}
+
+.fa-gulp {
+ --fa: "\f3ae";
+}
+
+.fa-square-hacker-news {
+ --fa: "\f3af";
+}
+
+.fa-hacker-news-square {
+ --fa: "\f3af";
+}
+
+.fa-hire-a-helper {
+ --fa: "\f3b0";
+}
+
+.fa-hotjar {
+ --fa: "\f3b1";
+}
+
+.fa-hubspot {
+ --fa: "\f3b2";
+}
+
+.fa-itunes {
+ --fa: "\f3b4";
+}
+
+.fa-itunes-note {
+ --fa: "\f3b5";
+}
+
+.fa-jenkins {
+ --fa: "\f3b6";
+}
+
+.fa-joget {
+ --fa: "\f3b7";
+}
+
+.fa-js {
+ --fa: "\f3b8";
+}
+
+.fa-square-js {
+ --fa: "\f3b9";
+}
+
+.fa-js-square {
+ --fa: "\f3b9";
+}
+
+.fa-keycdn {
+ --fa: "\f3ba";
+}
+
+.fa-kickstarter {
+ --fa: "\f3bb";
+}
+
+.fa-square-kickstarter {
+ --fa: "\f3bb";
+}
+
+.fa-kickstarter-k {
+ --fa: "\f3bc";
+}
+
+.fa-laravel {
+ --fa: "\f3bd";
+}
+
+.fa-line {
+ --fa: "\f3c0";
+}
+
+.fa-lyft {
+ --fa: "\f3c3";
+}
+
+.fa-magento {
+ --fa: "\f3c4";
+}
+
+.fa-medapps {
+ --fa: "\f3c6";
+}
+
+.fa-medrt {
+ --fa: "\f3c8";
+}
+
+.fa-microsoft {
+ --fa: "\f3ca";
+}
+
+.fa-mix {
+ --fa: "\f3cb";
+}
+
+.fa-mizuni {
+ --fa: "\f3cc";
+}
+
+.fa-monero {
+ --fa: "\f3d0";
+}
+
+.fa-napster {
+ --fa: "\f3d2";
+}
+
+.fa-node-js {
+ --fa: "\f3d3";
+}
+
+.fa-npm {
+ --fa: "\f3d4";
+}
+
+.fa-ns8 {
+ --fa: "\f3d5";
+}
+
+.fa-nutritionix {
+ --fa: "\f3d6";
+}
+
+.fa-page4 {
+ --fa: "\f3d7";
+}
+
+.fa-palfed {
+ --fa: "\f3d8";
+}
+
+.fa-patreon {
+ --fa: "\f3d9";
+}
+
+.fa-periscope {
+ --fa: "\f3da";
+}
+
+.fa-phabricator {
+ --fa: "\f3db";
+}
+
+.fa-phoenix-framework {
+ --fa: "\f3dc";
+}
+
+.fa-playstation {
+ --fa: "\f3df";
+}
+
+.fa-pushed {
+ --fa: "\f3e1";
+}
+
+.fa-python {
+ --fa: "\f3e2";
+}
+
+.fa-red-river {
+ --fa: "\f3e3";
+}
+
+.fa-wpressr {
+ --fa: "\f3e4";
+}
+
+.fa-rendact {
+ --fa: "\f3e4";
+}
+
+.fa-replyd {
+ --fa: "\f3e6";
+}
+
+.fa-resolving {
+ --fa: "\f3e7";
+}
+
+.fa-rocketchat {
+ --fa: "\f3e8";
+}
+
+.fa-rockrms {
+ --fa: "\f3e9";
+}
+
+.fa-schlix {
+ --fa: "\f3ea";
+}
+
+.fa-searchengin {
+ --fa: "\f3eb";
+}
+
+.fa-servicestack {
+ --fa: "\f3ec";
+}
+
+.fa-sistrix {
+ --fa: "\f3ee";
+}
+
+.fa-speakap {
+ --fa: "\f3f3";
+}
+
+.fa-staylinked {
+ --fa: "\f3f5";
+}
+
+.fa-steam-symbol {
+ --fa: "\f3f6";
+}
+
+.fa-sticker-mule {
+ --fa: "\f3f7";
+}
+
+.fa-studiovinari {
+ --fa: "\f3f8";
+}
+
+.fa-supple {
+ --fa: "\f3f9";
+}
+
+.fa-uber {
+ --fa: "\f402";
+}
+
+.fa-uikit {
+ --fa: "\f403";
+}
+
+.fa-uniregistry {
+ --fa: "\f404";
+}
+
+.fa-untappd {
+ --fa: "\f405";
+}
+
+.fa-ussunnah {
+ --fa: "\f407";
+}
+
+.fa-vaadin {
+ --fa: "\f408";
+}
+
+.fa-viber {
+ --fa: "\f409";
+}
+
+.fa-vimeo {
+ --fa: "\f40a";
+}
+
+.fa-vnv {
+ --fa: "\f40b";
+}
+
+.fa-square-whatsapp {
+ --fa: "\f40c";
+}
+
+.fa-whatsapp-square {
+ --fa: "\f40c";
+}
+
+.fa-whmcs {
+ --fa: "\f40d";
+}
+
+.fa-wordpress-simple {
+ --fa: "\f411";
+}
+
+.fa-xbox {
+ --fa: "\f412";
+}
+
+.fa-yandex {
+ --fa: "\f413";
+}
+
+.fa-yandex-international {
+ --fa: "\f414";
+}
+
+.fa-apple-pay {
+ --fa: "\f415";
+}
+
+.fa-cc-apple-pay {
+ --fa: "\f416";
+}
+
+.fa-fly {
+ --fa: "\f417";
+}
+
+.fa-node {
+ --fa: "\f419";
+}
+
+.fa-osi {
+ --fa: "\f41a";
+}
+
+.fa-react {
+ --fa: "\f41b";
+}
+
+.fa-autoprefixer {
+ --fa: "\f41c";
+}
+
+.fa-less {
+ --fa: "\f41d";
+}
+
+.fa-sass {
+ --fa: "\f41e";
+}
+
+.fa-vuejs {
+ --fa: "\f41f";
+}
+
+.fa-angular {
+ --fa: "\f420";
+}
+
+.fa-aviato {
+ --fa: "\f421";
+}
+
+.fa-ember {
+ --fa: "\f423";
+}
+
+.fa-gitter {
+ --fa: "\f426";
+}
+
+.fa-hooli {
+ --fa: "\f427";
+}
+
+.fa-strava {
+ --fa: "\f428";
+}
+
+.fa-stripe {
+ --fa: "\f429";
+}
+
+.fa-stripe-s {
+ --fa: "\f42a";
+}
+
+.fa-typo3 {
+ --fa: "\f42b";
+}
+
+.fa-amazon-pay {
+ --fa: "\f42c";
+}
+
+.fa-cc-amazon-pay {
+ --fa: "\f42d";
+}
+
+.fa-ethereum {
+ --fa: "\f42e";
+}
+
+.fa-korvue {
+ --fa: "\f42f";
+}
+
+.fa-elementor {
+ --fa: "\f430";
+}
+
+.fa-square-youtube {
+ --fa: "\f431";
+}
+
+.fa-youtube-square {
+ --fa: "\f431";
+}
+
+.fa-flipboard {
+ --fa: "\f44d";
+}
+
+.fa-hips {
+ --fa: "\f452";
+}
+
+.fa-php {
+ --fa: "\f457";
+}
+
+.fa-quinscape {
+ --fa: "\f459";
+}
+
+.fa-readme {
+ --fa: "\f4d5";
+}
+
+.fa-java {
+ --fa: "\f4e4";
+}
+
+.fa-pied-piper-hat {
+ --fa: "\f4e5";
+}
+
+.fa-creative-commons-by {
+ --fa: "\f4e7";
+}
+
+.fa-creative-commons-nc {
+ --fa: "\f4e8";
+}
+
+.fa-creative-commons-nc-eu {
+ --fa: "\f4e9";
+}
+
+.fa-creative-commons-nc-jp {
+ --fa: "\f4ea";
+}
+
+.fa-creative-commons-nd {
+ --fa: "\f4eb";
+}
+
+.fa-creative-commons-pd {
+ --fa: "\f4ec";
+}
+
+.fa-creative-commons-pd-alt {
+ --fa: "\f4ed";
+}
+
+.fa-creative-commons-remix {
+ --fa: "\f4ee";
+}
+
+.fa-creative-commons-sa {
+ --fa: "\f4ef";
+}
+
+.fa-creative-commons-sampling {
+ --fa: "\f4f0";
+}
+
+.fa-creative-commons-sampling-plus {
+ --fa: "\f4f1";
+}
+
+.fa-creative-commons-share {
+ --fa: "\f4f2";
+}
+
+.fa-creative-commons-zero {
+ --fa: "\f4f3";
+}
+
+.fa-ebay {
+ --fa: "\f4f4";
+}
+
+.fa-keybase {
+ --fa: "\f4f5";
+}
+
+.fa-mastodon {
+ --fa: "\f4f6";
+}
+
+.fa-r-project {
+ --fa: "\f4f7";
+}
+
+.fa-researchgate {
+ --fa: "\f4f8";
+}
+
+.fa-teamspeak {
+ --fa: "\f4f9";
+}
+
+.fa-first-order-alt {
+ --fa: "\f50a";
+}
+
+.fa-fulcrum {
+ --fa: "\f50b";
+}
+
+.fa-galactic-republic {
+ --fa: "\f50c";
+}
+
+.fa-galactic-senate {
+ --fa: "\f50d";
+}
+
+.fa-jedi-order {
+ --fa: "\f50e";
+}
+
+.fa-mandalorian {
+ --fa: "\f50f";
+}
+
+.fa-old-republic {
+ --fa: "\f510";
+}
+
+.fa-phoenix-squadron {
+ --fa: "\f511";
+}
+
+.fa-sith {
+ --fa: "\f512";
+}
+
+.fa-trade-federation {
+ --fa: "\f513";
+}
+
+.fa-wolf-pack-battalion {
+ --fa: "\f514";
+}
+
+.fa-hornbill {
+ --fa: "\f592";
+}
+
+.fa-mailchimp {
+ --fa: "\f59e";
+}
+
+.fa-megaport {
+ --fa: "\f5a3";
+}
+
+.fa-nimblr {
+ --fa: "\f5a8";
+}
+
+.fa-rev {
+ --fa: "\f5b2";
+}
+
+.fa-shopware {
+ --fa: "\f5b5";
+}
+
+.fa-squarespace {
+ --fa: "\f5be";
+}
+
+.fa-themeco {
+ --fa: "\f5c6";
+}
+
+.fa-weebly {
+ --fa: "\f5cc";
+}
+
+.fa-wix {
+ --fa: "\f5cf";
+}
+
+.fa-ello {
+ --fa: "\f5f1";
+}
+
+.fa-hackerrank {
+ --fa: "\f5f7";
+}
+
+.fa-kaggle {
+ --fa: "\f5fa";
+}
+
+.fa-markdown {
+ --fa: "\f60f";
+}
+
+.fa-neos {
+ --fa: "\f612";
+}
+
+.fa-zhihu {
+ --fa: "\f63f";
+}
+
+.fa-alipay {
+ --fa: "\f642";
+}
+
+.fa-the-red-yeti {
+ --fa: "\f69d";
+}
+
+.fa-critical-role {
+ --fa: "\f6c9";
+}
+
+.fa-d-and-d-beyond {
+ --fa: "\f6ca";
+}
+
+.fa-dev {
+ --fa: "\f6cc";
+}
+
+.fa-fantasy-flight-games {
+ --fa: "\f6dc";
+}
+
+.fa-wizards-of-the-coast {
+ --fa: "\f730";
+}
+
+.fa-think-peaks {
+ --fa: "\f731";
+}
+
+.fa-reacteurope {
+ --fa: "\f75d";
+}
+
+.fa-artstation {
+ --fa: "\f77a";
+}
+
+.fa-atlassian {
+ --fa: "\f77b";
+}
+
+.fa-canadian-maple-leaf {
+ --fa: "\f785";
+}
+
+.fa-centos {
+ --fa: "\f789";
+}
+
+.fa-confluence {
+ --fa: "\f78d";
+}
+
+.fa-dhl {
+ --fa: "\f790";
+}
+
+.fa-diaspora {
+ --fa: "\f791";
+}
+
+.fa-fedex {
+ --fa: "\f797";
+}
+
+.fa-fedora {
+ --fa: "\f798";
+}
+
+.fa-figma {
+ --fa: "\f799";
+}
+
+.fa-intercom {
+ --fa: "\f7af";
+}
+
+.fa-invision {
+ --fa: "\f7b0";
+}
+
+.fa-jira {
+ --fa: "\f7b1";
+}
+
+.fa-mendeley {
+ --fa: "\f7b3";
+}
+
+.fa-raspberry-pi {
+ --fa: "\f7bb";
+}
+
+.fa-redhat {
+ --fa: "\f7bc";
+}
+
+.fa-sketch {
+ --fa: "\f7c6";
+}
+
+.fa-sourcetree {
+ --fa: "\f7d3";
+}
+
+.fa-suse {
+ --fa: "\f7d6";
+}
+
+.fa-ubuntu {
+ --fa: "\f7df";
+}
+
+.fa-ups {
+ --fa: "\f7e0";
+}
+
+.fa-usps {
+ --fa: "\f7e1";
+}
+
+.fa-yarn {
+ --fa: "\f7e3";
+}
+
+.fa-airbnb {
+ --fa: "\f834";
+}
+
+.fa-battle-net {
+ --fa: "\f835";
+}
+
+.fa-bootstrap {
+ --fa: "\f836";
+}
+
+.fa-buffer {
+ --fa: "\f837";
+}
+
+.fa-chromecast {
+ --fa: "\f838";
+}
+
+.fa-evernote {
+ --fa: "\f839";
+}
+
+.fa-itch-io {
+ --fa: "\f83a";
+}
+
+.fa-salesforce {
+ --fa: "\f83b";
+}
+
+.fa-speaker-deck {
+ --fa: "\f83c";
+}
+
+.fa-symfony {
+ --fa: "\f83d";
+}
+
+.fa-waze {
+ --fa: "\f83f";
+}
+
+.fa-yammer {
+ --fa: "\f840";
+}
+
+.fa-git-alt {
+ --fa: "\f841";
+}
+
+.fa-stackpath {
+ --fa: "\f842";
+}
+
+.fa-cotton-bureau {
+ --fa: "\f89e";
+}
+
+.fa-buy-n-large {
+ --fa: "\f8a6";
+}
+
+.fa-mdb {
+ --fa: "\f8ca";
+}
+
+.fa-orcid {
+ --fa: "\f8d2";
+}
+
+.fa-swift {
+ --fa: "\f8e1";
+}
+
+.fa-umbraco {
+ --fa: "\f8e8";
+}:root, :host {
+ --fa-family-classic: 'Font Awesome 7 Free';
+ --fa-font-regular: normal 400 1em/1 var(--fa-family-classic);
+ /* deprecated: this older custom property will be removed next major release */
+ --fa-style-family-classic: var(--fa-family-classic);
+}
+
+@font-face {
+ font-family: "Font Awesome 7 Free";
+ font-style: normal;
+ font-weight: 400;
+ font-display: block;
+ src: url("../webfonts/fa-regular-400.woff2");
+}
+.far {
+ --fa-family: var(--fa-family-classic);
+ --fa-style: 400;
+}
+
+.fa-classic {
+ --fa-family: var(--fa-family-classic);
+}
+
+.fa-regular {
+ --fa-style: 400;
+}:root, :host {
+ --fa-family-classic: 'Font Awesome 7 Free';
+ --fa-font-solid: normal 900 1em/1 var(--fa-family-classic);
+ /* deprecated: this older custom property will be removed next major release */
+ --fa-style-family-classic: var(--fa-family-classic);
+}
+
+@font-face {
+ font-family: "Font Awesome 7 Free";
+ font-style: normal;
+ font-weight: 900;
+ font-display: block;
+ src: url("../webfonts/fa-solid-900.woff2");
+}
+.fas {
+ --fa-family: var(--fa-family-classic);
+ --fa-style: 900;
+}
+
+.fa-classic {
+ --fa-family: var(--fa-family-classic);
+}
+
+.fa-solid {
+ --fa-style: 900;
+}@font-face {
+ font-family: "Font Awesome 5 Brands";
+ font-display: block;
+ font-weight: 400;
+ src: url("../webfonts/fa-brands-400.woff2") format("woff2");
+}
+@font-face {
+ font-family: "Font Awesome 5 Free";
+ font-display: block;
+ font-weight: 900;
+ src: url("../webfonts/fa-solid-900.woff2") format("woff2");
+}
+@font-face {
+ font-family: "Font Awesome 5 Free";
+ font-display: block;
+ font-weight: 400;
+ src: url("../webfonts/fa-regular-400.woff2") format("woff2");
+}@font-face {
+ font-family: "FontAwesome";
+ font-display: block;
+ src: url("../webfonts/fa-solid-900.woff2") format("woff2");
+}
+@font-face {
+ font-family: "FontAwesome";
+ font-display: block;
+ src: url("../webfonts/fa-brands-400.woff2") format("woff2");
+}
+@font-face {
+ font-family: "FontAwesome";
+ font-display: block;
+ src: url("../webfonts/fa-regular-400.woff2") format("woff2");
+ unicode-range: U+F003, U+F006, U+F014, U+F016-F017, U+F01A-F01B, U+F01D, U+F022, U+F03E, U+F044, U+F046, U+F05C-F05D, U+F06E, U+F070, U+F087-F088, U+F08A, U+F094, U+F096-F097, U+F09D, U+F0A0, U+F0A2, U+F0A4-F0A7, U+F0C5, U+F0C7, U+F0E5-F0E6, U+F0EB, U+F0F6-F0F8, U+F10C, U+F114-F115, U+F118-F11A, U+F11C-F11D, U+F133, U+F147, U+F14E, U+F150-F152, U+F185-F186, U+F18E, U+F190-F192, U+F196, U+F1C1-F1C9, U+F1D9, U+F1DB, U+F1E3, U+F1EA, U+F1F7, U+F1F9, U+F20A, U+F247-F248, U+F24A, U+F24D, U+F255-F25B, U+F25D, U+F271-F274, U+F278, U+F27B, U+F28C, U+F28E, U+F29C, U+F2B5, U+F2B7, U+F2BA, U+F2BC, U+F2BE, U+F2C0-F2C1, U+F2C3, U+F2D0, U+F2D2, U+F2D4, U+F2DC;
+}
+@font-face {
+ font-family: "FontAwesome";
+ font-display: block;
+ src: url("../webfonts/fa-v4compatibility.woff2") format("woff2");
+ unicode-range: U+F041, U+F047, U+F065-F066, U+F07D-F07E, U+F080, U+F08B, U+F08E, U+F090, U+F09A, U+F0AC, U+F0AE, U+F0B2, U+F0D0, U+F0D6, U+F0E4, U+F0EC, U+F10A-F10B, U+F123, U+F13E, U+F148-F149, U+F14C, U+F156, U+F15E, U+F160-F161, U+F163, U+F175-F178, U+F195, U+F1F8, U+F219, U+F27A;
+}
\ No newline at end of file
diff --git a/src/EventHub.Admin.Web/wwwroot/libs/@fortawesome/fontawesome-free/css/v4-shims.css b/src/EventHub.Admin.Web/wwwroot/libs/@fortawesome/fontawesome-free/css/v4-shims.css
new file mode 100644
index 0000000..10cc005
--- /dev/null
+++ b/src/EventHub.Admin.Web/wwwroot/libs/@fortawesome/fontawesome-free/css/v4-shims.css
@@ -0,0 +1,2818 @@
+/*!
+ * Font Awesome Free 7.3.0 by @fontawesome - https://fontawesome.com
+ * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
+ * Copyright 2026 Fonticons, Inc.
+ */
+.fa.fa-glass {
+ --fa: "\f000";
+}
+
+.fa.fa-envelope-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-envelope-o {
+ --fa: "\f0e0";
+}
+
+.fa.fa-star-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-star-o {
+ --fa: "\f005";
+}
+
+.fa.fa-remove {
+ --fa: "\f00d";
+}
+
+.fa.fa-close {
+ --fa: "\f00d";
+}
+
+.fa.fa-gear {
+ --fa: "\f013";
+}
+
+.fa.fa-trash-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-trash-o {
+ --fa: "\f2ed";
+}
+
+.fa.fa-home {
+ --fa: "\f015";
+}
+
+.fa.fa-file-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-file-o {
+ --fa: "\f15b";
+}
+
+.fa.fa-clock-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-clock-o {
+ --fa: "\f017";
+}
+
+.fa.fa-arrow-circle-o-down {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-arrow-circle-o-down {
+ --fa: "\f358";
+}
+
+.fa.fa-arrow-circle-o-up {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-arrow-circle-o-up {
+ --fa: "\f35b";
+}
+
+.fa.fa-play-circle-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-play-circle-o {
+ --fa: "\f144";
+}
+
+.fa.fa-repeat {
+ --fa: "\f01e";
+}
+
+.fa.fa-rotate-right {
+ --fa: "\f01e";
+}
+
+.fa.fa-refresh {
+ --fa: "\f021";
+}
+
+.fa.fa-list-alt {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-list-alt {
+ --fa: "\f022";
+}
+
+.fa.fa-dedent {
+ --fa: "\f03b";
+}
+
+.fa.fa-video-camera {
+ --fa: "\f03d";
+}
+
+.fa.fa-picture-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-picture-o {
+ --fa: "\f03e";
+}
+
+.fa.fa-photo {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-photo {
+ --fa: "\f03e";
+}
+
+.fa.fa-image {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-image {
+ --fa: "\f03e";
+}
+
+.fa.fa-map-marker {
+ --fa: "\f3c5";
+}
+
+.fa.fa-pencil-square-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-pencil-square-o {
+ --fa: "\f044";
+}
+
+.fa.fa-edit {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-edit {
+ --fa: "\f044";
+}
+
+.fa.fa-share-square-o {
+ --fa: "\f14d";
+}
+
+.fa.fa-check-square-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-check-square-o {
+ --fa: "\f14a";
+}
+
+.fa.fa-arrows {
+ --fa: "\f0b2";
+}
+
+.fa.fa-times-circle-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-times-circle-o {
+ --fa: "\f057";
+}
+
+.fa.fa-check-circle-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-check-circle-o {
+ --fa: "\f058";
+}
+
+.fa.fa-mail-forward {
+ --fa: "\f064";
+}
+
+.fa.fa-expand {
+ --fa: "\f424";
+}
+
+.fa.fa-compress {
+ --fa: "\f422";
+}
+
+.fa.fa-eye {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-eye-slash {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-warning {
+ --fa: "\f071";
+}
+
+.fa.fa-calendar {
+ --fa: "\f073";
+}
+
+.fa.fa-arrows-v {
+ --fa: "\f338";
+}
+
+.fa.fa-arrows-h {
+ --fa: "\f337";
+}
+
+.fa.fa-bar-chart {
+ --fa: "\e0e3";
+}
+
+.fa.fa-bar-chart-o {
+ --fa: "\e0e3";
+}
+
+.fa.fa-twitter-square {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-twitter-square {
+ --fa: "\f081";
+}
+
+.fa.fa-facebook-square {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-facebook-square {
+ --fa: "\f082";
+}
+
+.fa.fa-gears {
+ --fa: "\f085";
+}
+
+.fa.fa-thumbs-o-up {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-thumbs-o-up {
+ --fa: "\f164";
+}
+
+.fa.fa-thumbs-o-down {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-thumbs-o-down {
+ --fa: "\f165";
+}
+
+.fa.fa-heart-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-heart-o {
+ --fa: "\f004";
+}
+
+.fa.fa-sign-out {
+ --fa: "\f2f5";
+}
+
+.fa.fa-linkedin-square {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-linkedin-square {
+ --fa: "\f08c";
+}
+
+.fa.fa-thumb-tack {
+ --fa: "\f08d";
+}
+
+.fa.fa-external-link {
+ --fa: "\f35d";
+}
+
+.fa.fa-sign-in {
+ --fa: "\f2f6";
+}
+
+.fa.fa-github-square {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-github-square {
+ --fa: "\f092";
+}
+
+.fa.fa-lemon-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-lemon-o {
+ --fa: "\f094";
+}
+
+.fa.fa-square-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-square-o {
+ --fa: "\f0c8";
+}
+
+.fa.fa-bookmark-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-bookmark-o {
+ --fa: "\f02e";
+}
+
+.fa.fa-twitter {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-facebook {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-facebook {
+ --fa: "\f39e";
+}
+
+.fa.fa-facebook-f {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-facebook-f {
+ --fa: "\f39e";
+}
+
+.fa.fa-github {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-credit-card {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-feed {
+ --fa: "\f09e";
+}
+
+.fa.fa-hdd-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-hdd-o {
+ --fa: "\f0a0";
+}
+
+.fa.fa-hand-o-right {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-hand-o-right {
+ --fa: "\f0a4";
+}
+
+.fa.fa-hand-o-left {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-hand-o-left {
+ --fa: "\f0a5";
+}
+
+.fa.fa-hand-o-up {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-hand-o-up {
+ --fa: "\f0a6";
+}
+
+.fa.fa-hand-o-down {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-hand-o-down {
+ --fa: "\f0a7";
+}
+
+.fa.fa-globe {
+ --fa: "\f57d";
+}
+
+.fa.fa-tasks {
+ --fa: "\f828";
+}
+
+.fa.fa-arrows-alt {
+ --fa: "\f31e";
+}
+
+.fa.fa-group {
+ --fa: "\f0c0";
+}
+
+.fa.fa-chain {
+ --fa: "\f0c1";
+}
+
+.fa.fa-cut {
+ --fa: "\f0c4";
+}
+
+.fa.fa-files-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-files-o {
+ --fa: "\f0c5";
+}
+
+.fa.fa-floppy-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-floppy-o {
+ --fa: "\f0c7";
+}
+
+.fa.fa-save {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-save {
+ --fa: "\f0c7";
+}
+
+.fa.fa-navicon {
+ --fa: "\f0c9";
+}
+
+.fa.fa-reorder {
+ --fa: "\f0c9";
+}
+
+.fa.fa-magic {
+ --fa: "\e2ca";
+}
+
+.fa.fa-pinterest {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-pinterest-square {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-pinterest-square {
+ --fa: "\f0d3";
+}
+
+.fa.fa-google-plus-square {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-google-plus-square {
+ --fa: "\f0d4";
+}
+
+.fa.fa-google-plus {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-google-plus {
+ --fa: "\f0d5";
+}
+
+.fa.fa-money {
+ --fa: "\f3d1";
+}
+
+.fa.fa-unsorted {
+ --fa: "\f0dc";
+}
+
+.fa.fa-sort-desc {
+ --fa: "\f0dd";
+}
+
+.fa.fa-sort-asc {
+ --fa: "\f0de";
+}
+
+.fa.fa-linkedin {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-linkedin {
+ --fa: "\f0e1";
+}
+
+.fa.fa-rotate-left {
+ --fa: "\f0e2";
+}
+
+.fa.fa-legal {
+ --fa: "\f0e3";
+}
+
+.fa.fa-tachometer {
+ --fa: "\f625";
+}
+
+.fa.fa-dashboard {
+ --fa: "\f625";
+}
+
+.fa.fa-comment-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-comment-o {
+ --fa: "\f075";
+}
+
+.fa.fa-comments-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-comments-o {
+ --fa: "\f086";
+}
+
+.fa.fa-flash {
+ --fa: "\f0e7";
+}
+
+.fa.fa-clipboard {
+ --fa: "\f0ea";
+}
+
+.fa.fa-lightbulb-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-lightbulb-o {
+ --fa: "\f0eb";
+}
+
+.fa.fa-exchange {
+ --fa: "\f362";
+}
+
+.fa.fa-cloud-download {
+ --fa: "\f0ed";
+}
+
+.fa.fa-cloud-upload {
+ --fa: "\f0ee";
+}
+
+.fa.fa-bell-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-bell-o {
+ --fa: "\f0f3";
+}
+
+.fa.fa-cutlery {
+ --fa: "\f2e7";
+}
+
+.fa.fa-file-text-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-file-text-o {
+ --fa: "\f15c";
+}
+
+.fa.fa-building-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-building-o {
+ --fa: "\f1ad";
+}
+
+.fa.fa-hospital-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-hospital-o {
+ --fa: "\f0f8";
+}
+
+.fa.fa-tablet {
+ --fa: "\f3fa";
+}
+
+.fa.fa-mobile {
+ --fa: "\f3cd";
+}
+
+.fa.fa-mobile-phone {
+ --fa: "\f3cd";
+}
+
+.fa.fa-circle-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-circle-o {
+ --fa: "\f111";
+}
+
+.fa.fa-mail-reply {
+ --fa: "\f3e5";
+}
+
+.fa.fa-github-alt {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-folder-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-folder-o {
+ --fa: "\f07b";
+}
+
+.fa.fa-folder-open-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-folder-open-o {
+ --fa: "\f07c";
+}
+
+.fa.fa-smile-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-smile-o {
+ --fa: "\f118";
+}
+
+.fa.fa-frown-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-frown-o {
+ --fa: "\f119";
+}
+
+.fa.fa-meh-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-meh-o {
+ --fa: "\f11a";
+}
+
+.fa.fa-keyboard-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-keyboard-o {
+ --fa: "\f11c";
+}
+
+.fa.fa-flag-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-flag-o {
+ --fa: "\f024";
+}
+
+.fa.fa-mail-reply-all {
+ --fa: "\f122";
+}
+
+.fa.fa-star-half-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-star-half-o {
+ --fa: "\f5c0";
+}
+
+.fa.fa-star-half-empty {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-star-half-empty {
+ --fa: "\f5c0";
+}
+
+.fa.fa-star-half-full {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-star-half-full {
+ --fa: "\f5c0";
+}
+
+.fa.fa-code-fork {
+ --fa: "\f126";
+}
+
+.fa.fa-chain-broken {
+ --fa: "\f127";
+}
+
+.fa.fa-unlink {
+ --fa: "\f127";
+}
+
+.fa.fa-calendar-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-calendar-o {
+ --fa: "\f133";
+}
+
+.fa.fa-maxcdn {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-html5 {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-css3 {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-unlock-alt {
+ --fa: "\f09c";
+}
+
+.fa.fa-minus-square-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-minus-square-o {
+ --fa: "\f146";
+}
+
+.fa.fa-level-up {
+ --fa: "\f3bf";
+}
+
+.fa.fa-level-down {
+ --fa: "\f3be";
+}
+
+.fa.fa-pencil-square {
+ --fa: "\f14b";
+}
+
+.fa.fa-external-link-square {
+ --fa: "\f360";
+}
+
+.fa.fa-compass {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-caret-square-o-down {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-caret-square-o-down {
+ --fa: "\f150";
+}
+
+.fa.fa-toggle-down {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-toggle-down {
+ --fa: "\f150";
+}
+
+.fa.fa-caret-square-o-up {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-caret-square-o-up {
+ --fa: "\f151";
+}
+
+.fa.fa-toggle-up {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-toggle-up {
+ --fa: "\f151";
+}
+
+.fa.fa-caret-square-o-right {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-caret-square-o-right {
+ --fa: "\f152";
+}
+
+.fa.fa-toggle-right {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-toggle-right {
+ --fa: "\f152";
+}
+
+.fa.fa-eur {
+ --fa: "\f153";
+}
+
+.fa.fa-euro {
+ --fa: "\f153";
+}
+
+.fa.fa-gbp {
+ --fa: "\f154";
+}
+
+.fa.fa-usd {
+ --fa: "\$";
+}
+
+.fa.fa-dollar {
+ --fa: "\$";
+}
+
+.fa.fa-inr {
+ --fa: "\e1bc";
+}
+
+.fa.fa-rupee {
+ --fa: "\e1bc";
+}
+
+.fa.fa-jpy {
+ --fa: "\f157";
+}
+
+.fa.fa-cny {
+ --fa: "\f157";
+}
+
+.fa.fa-rmb {
+ --fa: "\f157";
+}
+
+.fa.fa-yen {
+ --fa: "\f157";
+}
+
+.fa.fa-rub {
+ --fa: "\f158";
+}
+
+.fa.fa-ruble {
+ --fa: "\f158";
+}
+
+.fa.fa-rouble {
+ --fa: "\f158";
+}
+
+.fa.fa-krw {
+ --fa: "\f159";
+}
+
+.fa.fa-won {
+ --fa: "\f159";
+}
+
+.fa.fa-btc {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-bitcoin {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-bitcoin {
+ --fa: "\f15a";
+}
+
+.fa.fa-file-text {
+ --fa: "\f15c";
+}
+
+.fa.fa-sort-alpha-asc {
+ --fa: "\f15d";
+}
+
+.fa.fa-sort-alpha-desc {
+ --fa: "\f881";
+}
+
+.fa.fa-sort-amount-asc {
+ --fa: "\f884";
+}
+
+.fa.fa-sort-amount-desc {
+ --fa: "\f160";
+}
+
+.fa.fa-sort-numeric-asc {
+ --fa: "\f162";
+}
+
+.fa.fa-sort-numeric-desc {
+ --fa: "\f886";
+}
+
+.fa.fa-youtube-square {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-youtube-square {
+ --fa: "\f431";
+}
+
+.fa.fa-youtube {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-xing {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-xing-square {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-xing-square {
+ --fa: "\f169";
+}
+
+.fa.fa-youtube-play {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-youtube-play {
+ --fa: "\f167";
+}
+
+.fa.fa-dropbox {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-stack-overflow {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-instagram {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-flickr {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-adn {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-bitbucket {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-bitbucket-square {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-bitbucket-square {
+ --fa: "\f171";
+}
+
+.fa.fa-tumblr {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-tumblr-square {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-tumblr-square {
+ --fa: "\f174";
+}
+
+.fa.fa-long-arrow-down {
+ --fa: "\f309";
+}
+
+.fa.fa-long-arrow-up {
+ --fa: "\f30c";
+}
+
+.fa.fa-long-arrow-left {
+ --fa: "\f30a";
+}
+
+.fa.fa-long-arrow-right {
+ --fa: "\f30b";
+}
+
+.fa.fa-apple {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-windows {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-android {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-linux {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-dribbble {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-skype {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-foursquare {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-trello {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-gratipay {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-gittip {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-gittip {
+ --fa: "\f184";
+}
+
+.fa.fa-sun-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-sun-o {
+ --fa: "\f185";
+}
+
+.fa.fa-moon-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-moon-o {
+ --fa: "\f186";
+}
+
+.fa.fa-vk {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-weibo {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-renren {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-pagelines {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-stack-exchange {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-arrow-circle-o-right {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-arrow-circle-o-right {
+ --fa: "\f35a";
+}
+
+.fa.fa-arrow-circle-o-left {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-arrow-circle-o-left {
+ --fa: "\f359";
+}
+
+.fa.fa-caret-square-o-left {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-caret-square-o-left {
+ --fa: "\f191";
+}
+
+.fa.fa-toggle-left {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-toggle-left {
+ --fa: "\f191";
+}
+
+.fa.fa-dot-circle-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-dot-circle-o {
+ --fa: "\f192";
+}
+
+.fa.fa-vimeo-square {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-vimeo-square {
+ --fa: "\f194";
+}
+
+.fa.fa-try {
+ --fa: "\e2bb";
+}
+
+.fa.fa-turkish-lira {
+ --fa: "\e2bb";
+}
+
+.fa.fa-plus-square-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-plus-square-o {
+ --fa: "\f0fe";
+}
+
+.fa.fa-slack {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-wordpress {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-openid {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-institution {
+ --fa: "\f19c";
+}
+
+.fa.fa-bank {
+ --fa: "\f19c";
+}
+
+.fa.fa-mortar-board {
+ --fa: "\f19d";
+}
+
+.fa.fa-yahoo {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-google {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-reddit {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-reddit-square {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-reddit-square {
+ --fa: "\f1a2";
+}
+
+.fa.fa-stumbleupon-circle {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-stumbleupon {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-delicious {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-digg {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-pied-piper-pp {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-pied-piper-alt {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-drupal {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-joomla {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-behance {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-behance-square {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-behance-square {
+ --fa: "\f1b5";
+}
+
+.fa.fa-steam {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-steam-square {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-steam-square {
+ --fa: "\f1b7";
+}
+
+.fa.fa-automobile {
+ --fa: "\f1b9";
+}
+
+.fa.fa-cab {
+ --fa: "\f1ba";
+}
+
+.fa.fa-spotify {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-deviantart {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-soundcloud {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-file-pdf-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-file-pdf-o {
+ --fa: "\f1c1";
+}
+
+.fa.fa-file-word-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-file-word-o {
+ --fa: "\f1c2";
+}
+
+.fa.fa-file-excel-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-file-excel-o {
+ --fa: "\f1c3";
+}
+
+.fa.fa-file-powerpoint-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-file-powerpoint-o {
+ --fa: "\f1c4";
+}
+
+.fa.fa-file-image-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-file-image-o {
+ --fa: "\f1c5";
+}
+
+.fa.fa-file-photo-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-file-photo-o {
+ --fa: "\f1c5";
+}
+
+.fa.fa-file-picture-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-file-picture-o {
+ --fa: "\f1c5";
+}
+
+.fa.fa-file-archive-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-file-archive-o {
+ --fa: "\f1c6";
+}
+
+.fa.fa-file-zip-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-file-zip-o {
+ --fa: "\f1c6";
+}
+
+.fa.fa-file-audio-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-file-audio-o {
+ --fa: "\f1c7";
+}
+
+.fa.fa-file-sound-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-file-sound-o {
+ --fa: "\f1c7";
+}
+
+.fa.fa-file-video-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-file-video-o {
+ --fa: "\f1c8";
+}
+
+.fa.fa-file-movie-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-file-movie-o {
+ --fa: "\f1c8";
+}
+
+.fa.fa-file-code-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-file-code-o {
+ --fa: "\f1c9";
+}
+
+.fa.fa-vine {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-codepen {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-jsfiddle {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-life-bouy {
+ --fa: "\f1cd";
+}
+
+.fa.fa-life-buoy {
+ --fa: "\f1cd";
+}
+
+.fa.fa-life-saver {
+ --fa: "\f1cd";
+}
+
+.fa.fa-support {
+ --fa: "\f1cd";
+}
+
+.fa.fa-circle-o-notch {
+ --fa: "\f1ce";
+}
+
+.fa.fa-rebel {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-ra {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-ra {
+ --fa: "\f1d0";
+}
+
+.fa.fa-resistance {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-resistance {
+ --fa: "\f1d0";
+}
+
+.fa.fa-empire {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-ge {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-ge {
+ --fa: "\f1d1";
+}
+
+.fa.fa-git-square {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-git-square {
+ --fa: "\f1d2";
+}
+
+.fa.fa-git {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-hacker-news {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-y-combinator-square {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-y-combinator-square {
+ --fa: "\f1d4";
+}
+
+.fa.fa-yc-square {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-yc-square {
+ --fa: "\f1d4";
+}
+
+.fa.fa-tencent-weibo {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-qq {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-weixin {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-wechat {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-wechat {
+ --fa: "\f1d7";
+}
+
+.fa.fa-send {
+ --fa: "\f1d8";
+}
+
+.fa.fa-paper-plane-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-paper-plane-o {
+ --fa: "\f1d8";
+}
+
+.fa.fa-send-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-send-o {
+ --fa: "\f1d8";
+}
+
+.fa.fa-circle-thin {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-circle-thin {
+ --fa: "\f111";
+}
+
+.fa.fa-header {
+ --fa: "\f1dc";
+}
+
+.fa.fa-futbol-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-futbol-o {
+ --fa: "\f1e3";
+}
+
+.fa.fa-soccer-ball-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-soccer-ball-o {
+ --fa: "\f1e3";
+}
+
+.fa.fa-slideshare {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-twitch {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-yelp {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-newspaper-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-newspaper-o {
+ --fa: "\f1ea";
+}
+
+.fa.fa-paypal {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-google-wallet {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-cc-visa {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-cc-mastercard {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-cc-discover {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-cc-amex {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-cc-paypal {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-cc-stripe {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-bell-slash-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-bell-slash-o {
+ --fa: "\f1f6";
+}
+
+.fa.fa-trash {
+ --fa: "\f2ed";
+}
+
+.fa.fa-copyright {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-eyedropper {
+ --fa: "\f1fb";
+}
+
+.fa.fa-area-chart {
+ --fa: "\f1fe";
+}
+
+.fa.fa-pie-chart {
+ --fa: "\f200";
+}
+
+.fa.fa-line-chart {
+ --fa: "\f201";
+}
+
+.fa.fa-lastfm {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-lastfm-square {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-lastfm-square {
+ --fa: "\f203";
+}
+
+.fa.fa-ioxhost {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-angellist {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-cc {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-cc {
+ --fa: "\f20a";
+}
+
+.fa.fa-ils {
+ --fa: "\f20b";
+}
+
+.fa.fa-shekel {
+ --fa: "\f20b";
+}
+
+.fa.fa-sheqel {
+ --fa: "\f20b";
+}
+
+.fa.fa-buysellads {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-connectdevelop {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-dashcube {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-forumbee {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-leanpub {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-sellsy {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-shirtsinbulk {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-simplybuilt {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-skyatlas {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-diamond {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-diamond {
+ --fa: "\f3a5";
+}
+
+.fa.fa-transgender {
+ --fa: "\f224";
+}
+
+.fa.fa-intersex {
+ --fa: "\f224";
+}
+
+.fa.fa-transgender-alt {
+ --fa: "\f225";
+}
+
+.fa.fa-facebook-official {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-facebook-official {
+ --fa: "\f09a";
+}
+
+.fa.fa-pinterest-p {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-whatsapp {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-hotel {
+ --fa: "\f236";
+}
+
+.fa.fa-viacoin {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-medium {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-y-combinator {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-yc {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-yc {
+ --fa: "\f23b";
+}
+
+.fa.fa-optin-monster {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-opencart {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-expeditedssl {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-battery-4 {
+ --fa: "\f240";
+}
+
+.fa.fa-battery {
+ --fa: "\f240";
+}
+
+.fa.fa-battery-3 {
+ --fa: "\f241";
+}
+
+.fa.fa-battery-2 {
+ --fa: "\f242";
+}
+
+.fa.fa-battery-1 {
+ --fa: "\f243";
+}
+
+.fa.fa-battery-0 {
+ --fa: "\f244";
+}
+
+.fa.fa-object-group {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-object-ungroup {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-sticky-note-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-sticky-note-o {
+ --fa: "\f249";
+}
+
+.fa.fa-cc-jcb {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-cc-diners-club {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-clone {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-hourglass-o {
+ --fa: "\f254";
+}
+
+.fa.fa-hourglass-1 {
+ --fa: "\f251";
+}
+
+.fa.fa-hourglass-2 {
+ --fa: "\f252";
+}
+
+.fa.fa-hourglass-3 {
+ --fa: "\f253";
+}
+
+.fa.fa-hand-rock-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-hand-rock-o {
+ --fa: "\f255";
+}
+
+.fa.fa-hand-grab-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-hand-grab-o {
+ --fa: "\f255";
+}
+
+.fa.fa-hand-paper-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-hand-paper-o {
+ --fa: "\f256";
+}
+
+.fa.fa-hand-stop-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-hand-stop-o {
+ --fa: "\f256";
+}
+
+.fa.fa-hand-scissors-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-hand-scissors-o {
+ --fa: "\f257";
+}
+
+.fa.fa-hand-lizard-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-hand-lizard-o {
+ --fa: "\f258";
+}
+
+.fa.fa-hand-spock-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-hand-spock-o {
+ --fa: "\f259";
+}
+
+.fa.fa-hand-pointer-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-hand-pointer-o {
+ --fa: "\f25a";
+}
+
+.fa.fa-hand-peace-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-hand-peace-o {
+ --fa: "\f25b";
+}
+
+.fa.fa-registered {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-creative-commons {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-gg {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-gg-circle {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-odnoklassniki {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-odnoklassniki-square {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-odnoklassniki-square {
+ --fa: "\f264";
+}
+
+.fa.fa-get-pocket {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-wikipedia-w {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-safari {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-chrome {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-firefox {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-opera {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-internet-explorer {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-television {
+ --fa: "\f26c";
+}
+
+.fa.fa-contao {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-500px {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-amazon {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-calendar-plus-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-calendar-plus-o {
+ --fa: "\f271";
+}
+
+.fa.fa-calendar-minus-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-calendar-minus-o {
+ --fa: "\f272";
+}
+
+.fa.fa-calendar-times-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-calendar-times-o {
+ --fa: "\f273";
+}
+
+.fa.fa-calendar-check-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-calendar-check-o {
+ --fa: "\f274";
+}
+
+.fa.fa-map-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-map-o {
+ --fa: "\f279";
+}
+
+.fa.fa-commenting {
+ --fa: "\f4ad";
+}
+
+.fa.fa-commenting-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-commenting-o {
+ --fa: "\f4ad";
+}
+
+.fa.fa-houzz {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-vimeo {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-vimeo {
+ --fa: "\f27d";
+}
+
+.fa.fa-black-tie {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-fonticons {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-reddit-alien {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-edge {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-credit-card-alt {
+ --fa: "\f09d";
+}
+
+.fa.fa-codiepie {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-modx {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-fort-awesome {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-usb {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-product-hunt {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-mixcloud {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-scribd {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-pause-circle-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-pause-circle-o {
+ --fa: "\f28b";
+}
+
+.fa.fa-stop-circle-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-stop-circle-o {
+ --fa: "\f28d";
+}
+
+.fa.fa-bluetooth {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-bluetooth-b {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-gitlab {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-wpbeginner {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-wpforms {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-envira {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-wheelchair-alt {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-wheelchair-alt {
+ --fa: "\f368";
+}
+
+.fa.fa-question-circle-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-question-circle-o {
+ --fa: "\f059";
+}
+
+.fa.fa-volume-control-phone {
+ --fa: "\f2a0";
+}
+
+.fa.fa-asl-interpreting {
+ --fa: "\f2a3";
+}
+
+.fa.fa-deafness {
+ --fa: "\f2a4";
+}
+
+.fa.fa-hard-of-hearing {
+ --fa: "\f2a4";
+}
+
+.fa.fa-glide {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-glide-g {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-signing {
+ --fa: "\f2a7";
+}
+
+.fa.fa-viadeo {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-viadeo-square {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-viadeo-square {
+ --fa: "\f2aa";
+}
+
+.fa.fa-snapchat {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-snapchat-ghost {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-snapchat-ghost {
+ --fa: "\f2ab";
+}
+
+.fa.fa-snapchat-square {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-snapchat-square {
+ --fa: "\f2ad";
+}
+
+.fa.fa-pied-piper {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-first-order {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-yoast {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-themeisle {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-google-plus-official {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-google-plus-official {
+ --fa: "\f2b3";
+}
+
+.fa.fa-google-plus-circle {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-google-plus-circle {
+ --fa: "\f2b3";
+}
+
+.fa.fa-font-awesome {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-fa {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-fa {
+ --fa: "\f2b4";
+}
+
+.fa.fa-handshake-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-handshake-o {
+ --fa: "\f2b5";
+}
+
+.fa.fa-envelope-open-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-envelope-open-o {
+ --fa: "\f2b6";
+}
+
+.fa.fa-linode {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-address-book-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-address-book-o {
+ --fa: "\f2b9";
+}
+
+.fa.fa-vcard {
+ --fa: "\f2bb";
+}
+
+.fa.fa-address-card-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-address-card-o {
+ --fa: "\f2bb";
+}
+
+.fa.fa-vcard-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-vcard-o {
+ --fa: "\f2bb";
+}
+
+.fa.fa-user-circle-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-user-circle-o {
+ --fa: "\f2bd";
+}
+
+.fa.fa-user-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-user-o {
+ --fa: "\f007";
+}
+
+.fa.fa-id-badge {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-drivers-license {
+ --fa: "\f2c2";
+}
+
+.fa.fa-id-card-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-id-card-o {
+ --fa: "\f2c2";
+}
+
+.fa.fa-drivers-license-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-drivers-license-o {
+ --fa: "\f2c2";
+}
+
+.fa.fa-quora {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-free-code-camp {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-telegram {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-thermometer-4 {
+ --fa: "\f2c7";
+}
+
+.fa.fa-thermometer {
+ --fa: "\f2c7";
+}
+
+.fa.fa-thermometer-3 {
+ --fa: "\f2c8";
+}
+
+.fa.fa-thermometer-2 {
+ --fa: "\f2c9";
+}
+
+.fa.fa-thermometer-1 {
+ --fa: "\f2ca";
+}
+
+.fa.fa-thermometer-0 {
+ --fa: "\f2cb";
+}
+
+.fa.fa-bathtub {
+ --fa: "\f2cd";
+}
+
+.fa.fa-s15 {
+ --fa: "\f2cd";
+}
+
+.fa.fa-window-maximize {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-window-restore {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-times-rectangle {
+ --fa: "\f410";
+}
+
+.fa.fa-window-close-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-window-close-o {
+ --fa: "\f410";
+}
+
+.fa.fa-times-rectangle-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-times-rectangle-o {
+ --fa: "\f410";
+}
+
+.fa.fa-bandcamp {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-grav {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-etsy {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-imdb {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-ravelry {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-eercast {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-eercast {
+ --fa: "\f2da";
+}
+
+.fa.fa-snowflake-o {
+ font-family: "Font Awesome 7 Free";
+ font-weight: 400;
+}
+
+.fa.fa-snowflake-o {
+ --fa: "\f2dc";
+}
+
+.fa.fa-superpowers {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-wpexplorer {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
+
+.fa.fa-meetup {
+ font-family: "Font Awesome 7 Brands";
+ font-weight: 400;
+}
\ No newline at end of file
diff --git a/src/EventHub.Admin.Web/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-brands-400.woff2 b/src/EventHub.Admin.Web/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-brands-400.woff2
new file mode 100644
index 0000000..4aa6dea
Binary files /dev/null and b/src/EventHub.Admin.Web/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-brands-400.woff2 differ
diff --git a/src/EventHub.Admin.Web/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-regular-400.woff2 b/src/EventHub.Admin.Web/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-regular-400.woff2
new file mode 100644
index 0000000..f6590ce
Binary files /dev/null and b/src/EventHub.Admin.Web/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-regular-400.woff2 differ
diff --git a/src/EventHub.Admin.Web/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-solid-900.woff2 b/src/EventHub.Admin.Web/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-solid-900.woff2
new file mode 100644
index 0000000..d7e38a2
Binary files /dev/null and b/src/EventHub.Admin.Web/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-solid-900.woff2 differ
diff --git a/src/EventHub.Admin.Web/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-v4compatibility.woff2 b/src/EventHub.Admin.Web/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-v4compatibility.woff2
new file mode 100644
index 0000000..5491ff8
Binary files /dev/null and b/src/EventHub.Admin.Web/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-v4compatibility.woff2 differ
diff --git a/src/EventHub.Admin.Web/wwwroot/libs/@popperjs/popper.min.js b/src/EventHub.Admin.Web/wwwroot/libs/@popperjs/popper.min.js
new file mode 100644
index 0000000..3938564
--- /dev/null
+++ b/src/EventHub.Admin.Web/wwwroot/libs/@popperjs/popper.min.js
@@ -0,0 +1,6 @@
+/**
+ * @popperjs/core v2.11.8 - MIT License
+ */
+
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).Popper={})}(this,(function(e){"use strict";function t(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function n(e){return e instanceof t(e).Element||e instanceof Element}function r(e){return e instanceof t(e).HTMLElement||e instanceof HTMLElement}function o(e){return"undefined"!=typeof ShadowRoot&&(e instanceof t(e).ShadowRoot||e instanceof ShadowRoot)}var i=Math.max,a=Math.min,s=Math.round;function f(){var e=navigator.userAgentData;return null!=e&&e.brands&&Array.isArray(e.brands)?e.brands.map((function(e){return e.brand+"/"+e.version})).join(" "):navigator.userAgent}function c(){return!/^((?!chrome|android).)*safari/i.test(f())}function p(e,o,i){void 0===o&&(o=!1),void 0===i&&(i=!1);var a=e.getBoundingClientRect(),f=1,p=1;o&&r(e)&&(f=e.offsetWidth>0&&s(a.width)/e.offsetWidth||1,p=e.offsetHeight>0&&s(a.height)/e.offsetHeight||1);var u=(n(e)?t(e):window).visualViewport,l=!c()&&i,d=(a.left+(l&&u?u.offsetLeft:0))/f,h=(a.top+(l&&u?u.offsetTop:0))/p,m=a.width/f,v=a.height/p;return{width:m,height:v,top:h,right:d+m,bottom:h+v,left:d,x:d,y:h}}function u(e){var n=t(e);return{scrollLeft:n.pageXOffset,scrollTop:n.pageYOffset}}function l(e){return e?(e.nodeName||"").toLowerCase():null}function d(e){return((n(e)?e.ownerDocument:e.document)||window.document).documentElement}function h(e){return p(d(e)).left+u(e).scrollLeft}function m(e){return t(e).getComputedStyle(e)}function v(e){var t=m(e),n=t.overflow,r=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+r)}function y(e,n,o){void 0===o&&(o=!1);var i,a,f=r(n),c=r(n)&&function(e){var t=e.getBoundingClientRect(),n=s(t.width)/e.offsetWidth||1,r=s(t.height)/e.offsetHeight||1;return 1!==n||1!==r}(n),m=d(n),y=p(e,c,o),g={scrollLeft:0,scrollTop:0},b={x:0,y:0};return(f||!f&&!o)&&(("body"!==l(n)||v(m))&&(g=(i=n)!==t(i)&&r(i)?{scrollLeft:(a=i).scrollLeft,scrollTop:a.scrollTop}:u(i)),r(n)?((b=p(n,!0)).x+=n.clientLeft,b.y+=n.clientTop):m&&(b.x=h(m))),{x:y.left+g.scrollLeft-b.x,y:y.top+g.scrollTop-b.y,width:y.width,height:y.height}}function g(e){var t=p(e),n=e.offsetWidth,r=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-r)<=1&&(r=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:r}}function b(e){return"html"===l(e)?e:e.assignedSlot||e.parentNode||(o(e)?e.host:null)||d(e)}function x(e){return["html","body","#document"].indexOf(l(e))>=0?e.ownerDocument.body:r(e)&&v(e)?e:x(b(e))}function w(e,n){var r;void 0===n&&(n=[]);var o=x(e),i=o===(null==(r=e.ownerDocument)?void 0:r.body),a=t(o),s=i?[a].concat(a.visualViewport||[],v(o)?o:[]):o,f=n.concat(s);return i?f:f.concat(w(b(s)))}function O(e){return["table","td","th"].indexOf(l(e))>=0}function j(e){return r(e)&&"fixed"!==m(e).position?e.offsetParent:null}function E(e){for(var n=t(e),i=j(e);i&&O(i)&&"static"===m(i).position;)i=j(i);return i&&("html"===l(i)||"body"===l(i)&&"static"===m(i).position)?n:i||function(e){var t=/firefox/i.test(f());if(/Trident/i.test(f())&&r(e)&&"fixed"===m(e).position)return null;var n=b(e);for(o(n)&&(n=n.host);r(n)&&["html","body"].indexOf(l(n))<0;){var i=m(n);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||-1!==["transform","perspective"].indexOf(i.willChange)||t&&"filter"===i.willChange||t&&i.filter&&"none"!==i.filter)return n;n=n.parentNode}return null}(e)||n}var D="top",A="bottom",L="right",P="left",M="auto",k=[D,A,L,P],W="start",B="end",H="viewport",T="popper",R=k.reduce((function(e,t){return e.concat([t+"-"+W,t+"-"+B])}),[]),S=[].concat(k,[M]).reduce((function(e,t){return e.concat([t,t+"-"+W,t+"-"+B])}),[]),V=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"];function q(e){var t=new Map,n=new Set,r=[];function o(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!n.has(e)){var r=t.get(e);r&&o(r)}})),r.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){n.has(e.name)||o(e)})),r}function C(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&o(n)){var r=t;do{if(r&&e.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function N(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function I(e,r,o){return r===H?N(function(e,n){var r=t(e),o=d(e),i=r.visualViewport,a=o.clientWidth,s=o.clientHeight,f=0,p=0;if(i){a=i.width,s=i.height;var u=c();(u||!u&&"fixed"===n)&&(f=i.offsetLeft,p=i.offsetTop)}return{width:a,height:s,x:f+h(e),y:p}}(e,o)):n(r)?function(e,t){var n=p(e,!1,"fixed"===t);return n.top=n.top+e.clientTop,n.left=n.left+e.clientLeft,n.bottom=n.top+e.clientHeight,n.right=n.left+e.clientWidth,n.width=e.clientWidth,n.height=e.clientHeight,n.x=n.left,n.y=n.top,n}(r,o):N(function(e){var t,n=d(e),r=u(e),o=null==(t=e.ownerDocument)?void 0:t.body,a=i(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=i(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),f=-r.scrollLeft+h(e),c=-r.scrollTop;return"rtl"===m(o||n).direction&&(f+=i(n.clientWidth,o?o.clientWidth:0)-a),{width:a,height:s,x:f,y:c}}(d(e)))}function _(e,t,o,s){var f="clippingParents"===t?function(e){var t=w(b(e)),o=["absolute","fixed"].indexOf(m(e).position)>=0&&r(e)?E(e):e;return n(o)?t.filter((function(e){return n(e)&&C(e,o)&&"body"!==l(e)})):[]}(e):[].concat(t),c=[].concat(f,[o]),p=c[0],u=c.reduce((function(t,n){var r=I(e,n,s);return t.top=i(r.top,t.top),t.right=a(r.right,t.right),t.bottom=a(r.bottom,t.bottom),t.left=i(r.left,t.left),t}),I(e,p,s));return u.width=u.right-u.left,u.height=u.bottom-u.top,u.x=u.left,u.y=u.top,u}function F(e){return e.split("-")[0]}function U(e){return e.split("-")[1]}function z(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function X(e){var t,n=e.reference,r=e.element,o=e.placement,i=o?F(o):null,a=o?U(o):null,s=n.x+n.width/2-r.width/2,f=n.y+n.height/2-r.height/2;switch(i){case D:t={x:s,y:n.y-r.height};break;case A:t={x:s,y:n.y+n.height};break;case L:t={x:n.x+n.width,y:f};break;case P:t={x:n.x-r.width,y:f};break;default:t={x:n.x,y:n.y}}var c=i?z(i):null;if(null!=c){var p="y"===c?"height":"width";switch(a){case W:t[c]=t[c]-(n[p]/2-r[p]/2);break;case B:t[c]=t[c]+(n[p]/2-r[p]/2)}}return t}function Y(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function G(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})}function J(e,t){void 0===t&&(t={});var r=t,o=r.placement,i=void 0===o?e.placement:o,a=r.strategy,s=void 0===a?e.strategy:a,f=r.boundary,c=void 0===f?"clippingParents":f,u=r.rootBoundary,l=void 0===u?H:u,h=r.elementContext,m=void 0===h?T:h,v=r.altBoundary,y=void 0!==v&&v,g=r.padding,b=void 0===g?0:g,x=Y("number"!=typeof b?b:G(b,k)),w=m===T?"reference":T,O=e.rects.popper,j=e.elements[y?w:m],E=_(n(j)?j:j.contextElement||d(e.elements.popper),c,l,s),P=p(e.elements.reference),M=X({reference:P,element:O,strategy:"absolute",placement:i}),W=N(Object.assign({},O,M)),B=m===T?W:P,R={top:E.top-B.top+x.top,bottom:B.bottom-E.bottom+x.bottom,left:E.left-B.left+x.left,right:B.right-E.right+x.right},S=e.modifiersData.offset;if(m===T&&S){var V=S[i];Object.keys(R).forEach((function(e){var t=[L,A].indexOf(e)>=0?1:-1,n=[D,A].indexOf(e)>=0?"y":"x";R[e]+=V[n]*t}))}return R}var K={placement:"bottom",modifiers:[],strategy:"absolute"};function Q(){for(var e=arguments.length,t=new Array(e),n=0;n=0?-1:1,i="function"==typeof n?n(Object.assign({},t,{placement:e})):n,a=i[0],s=i[1];return a=a||0,s=(s||0)*o,[P,L].indexOf(r)>=0?{x:s,y:a}:{x:a,y:s}}(n,t.rects,i),e}),{}),s=a[t.placement],f=s.x,c=s.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=f,t.modifiersData.popperOffsets.y+=c),t.modifiersData[r]=a}},se={left:"right",right:"left",bottom:"top",top:"bottom"};function fe(e){return e.replace(/left|right|bottom|top/g,(function(e){return se[e]}))}var ce={start:"end",end:"start"};function pe(e){return e.replace(/start|end/g,(function(e){return ce[e]}))}function ue(e,t){void 0===t&&(t={});var n=t,r=n.placement,o=n.boundary,i=n.rootBoundary,a=n.padding,s=n.flipVariations,f=n.allowedAutoPlacements,c=void 0===f?S:f,p=U(r),u=p?s?R:R.filter((function(e){return U(e)===p})):k,l=u.filter((function(e){return c.indexOf(e)>=0}));0===l.length&&(l=u);var d=l.reduce((function(t,n){return t[n]=J(e,{placement:n,boundary:o,rootBoundary:i,padding:a})[F(n)],t}),{});return Object.keys(d).sort((function(e,t){return d[e]-d[t]}))}var le={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name;if(!t.modifiersData[r]._skip){for(var o=n.mainAxis,i=void 0===o||o,a=n.altAxis,s=void 0===a||a,f=n.fallbackPlacements,c=n.padding,p=n.boundary,u=n.rootBoundary,l=n.altBoundary,d=n.flipVariations,h=void 0===d||d,m=n.allowedAutoPlacements,v=t.options.placement,y=F(v),g=f||(y===v||!h?[fe(v)]:function(e){if(F(e)===M)return[];var t=fe(e);return[pe(e),t,pe(t)]}(v)),b=[v].concat(g).reduce((function(e,n){return e.concat(F(n)===M?ue(t,{placement:n,boundary:p,rootBoundary:u,padding:c,flipVariations:h,allowedAutoPlacements:m}):n)}),[]),x=t.rects.reference,w=t.rects.popper,O=new Map,j=!0,E=b[0],k=0;k=0,S=R?"width":"height",V=J(t,{placement:B,boundary:p,rootBoundary:u,altBoundary:l,padding:c}),q=R?T?L:P:T?A:D;x[S]>w[S]&&(q=fe(q));var C=fe(q),N=[];if(i&&N.push(V[H]<=0),s&&N.push(V[q]<=0,V[C]<=0),N.every((function(e){return e}))){E=B,j=!1;break}O.set(B,N)}if(j)for(var I=function(e){var t=b.find((function(t){var n=O.get(t);if(n)return n.slice(0,e).every((function(e){return e}))}));if(t)return E=t,"break"},_=h?3:1;_>0;_--){if("break"===I(_))break}t.placement!==E&&(t.modifiersData[r]._skip=!0,t.placement=E,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function de(e,t,n){return i(e,a(t,n))}var he={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name,o=n.mainAxis,s=void 0===o||o,f=n.altAxis,c=void 0!==f&&f,p=n.boundary,u=n.rootBoundary,l=n.altBoundary,d=n.padding,h=n.tether,m=void 0===h||h,v=n.tetherOffset,y=void 0===v?0:v,b=J(t,{boundary:p,rootBoundary:u,padding:d,altBoundary:l}),x=F(t.placement),w=U(t.placement),O=!w,j=z(x),M="x"===j?"y":"x",k=t.modifiersData.popperOffsets,B=t.rects.reference,H=t.rects.popper,T="function"==typeof y?y(Object.assign({},t.rects,{placement:t.placement})):y,R="number"==typeof T?{mainAxis:T,altAxis:T}:Object.assign({mainAxis:0,altAxis:0},T),S=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,V={x:0,y:0};if(k){if(s){var q,C="y"===j?D:P,N="y"===j?A:L,I="y"===j?"height":"width",_=k[j],X=_+b[C],Y=_-b[N],G=m?-H[I]/2:0,K=w===W?B[I]:H[I],Q=w===W?-H[I]:-B[I],Z=t.elements.arrow,$=m&&Z?g(Z):{width:0,height:0},ee=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},te=ee[C],ne=ee[N],re=de(0,B[I],$[I]),oe=O?B[I]/2-G-re-te-R.mainAxis:K-re-te-R.mainAxis,ie=O?-B[I]/2+G+re+ne+R.mainAxis:Q+re+ne+R.mainAxis,ae=t.elements.arrow&&E(t.elements.arrow),se=ae?"y"===j?ae.clientTop||0:ae.clientLeft||0:0,fe=null!=(q=null==S?void 0:S[j])?q:0,ce=_+ie-fe,pe=de(m?a(X,_+oe-fe-se):X,_,m?i(Y,ce):Y);k[j]=pe,V[j]=pe-_}if(c){var ue,le="x"===j?D:P,he="x"===j?A:L,me=k[M],ve="y"===M?"height":"width",ye=me+b[le],ge=me-b[he],be=-1!==[D,P].indexOf(x),xe=null!=(ue=null==S?void 0:S[M])?ue:0,we=be?ye:me-B[ve]-H[ve]-xe+R.altAxis,Oe=be?me+B[ve]+H[ve]-xe-R.altAxis:ge,je=m&&be?function(e,t,n){var r=de(e,t,n);return r>n?n:r}(we,me,Oe):de(m?we:ye,me,m?Oe:ge);k[M]=je,V[M]=je-me}t.modifiersData[r]=V}},requiresIfExists:["offset"]};var me={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,n=e.state,r=e.name,o=e.options,i=n.elements.arrow,a=n.modifiersData.popperOffsets,s=F(n.placement),f=z(s),c=[P,L].indexOf(s)>=0?"height":"width";if(i&&a){var p=function(e,t){return Y("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:G(e,k))}(o.padding,n),u=g(i),l="y"===f?D:P,d="y"===f?A:L,h=n.rects.reference[c]+n.rects.reference[f]-a[f]-n.rects.popper[c],m=a[f]-n.rects.reference[f],v=E(i),y=v?"y"===f?v.clientHeight||0:v.clientWidth||0:0,b=h/2-m/2,x=p[l],w=y-u[c]-p[d],O=y/2-u[c]/2+b,j=de(x,O,w),M=f;n.modifiersData[r]=((t={})[M]=j,t.centerOffset=j-O,t)}},effect:function(e){var t=e.state,n=e.options.element,r=void 0===n?"[data-popper-arrow]":n;null!=r&&("string"!=typeof r||(r=t.elements.popper.querySelector(r)))&&C(t.elements.popper,r)&&(t.elements.arrow=r)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function ve(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function ye(e){return[D,L,A,P].some((function(t){return e[t]>=0}))}var ge={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,n=e.name,r=t.rects.reference,o=t.rects.popper,i=t.modifiersData.preventOverflow,a=J(t,{elementContext:"reference"}),s=J(t,{altBoundary:!0}),f=ve(a,r),c=ve(s,o,i),p=ye(f),u=ye(c);t.modifiersData[n]={referenceClippingOffsets:f,popperEscapeOffsets:c,isReferenceHidden:p,hasPopperEscaped:u},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":p,"data-popper-escaped":u})}},be=Z({defaultModifiers:[ee,te,oe,ie]}),xe=[ee,te,oe,ie,ae,le,he,me,ge],we=Z({defaultModifiers:xe});e.applyStyles=ie,e.arrow=me,e.computeStyles=oe,e.createPopper=we,e.createPopperLite=be,e.defaultModifiers=xe,e.detectOverflow=J,e.eventListeners=ee,e.flip=le,e.hide=ge,e.offset=ae,e.popperGenerator=Z,e.popperOffsets=te,e.preventOverflow=he,Object.defineProperty(e,"__esModule",{value:!0})}));
+//# sourceMappingURL=popper.min.js.map
diff --git a/src/EventHub.Admin.Web/wwwroot/libs/@popperjs/popper.min.js.map b/src/EventHub.Admin.Web/wwwroot/libs/@popperjs/popper.min.js.map
new file mode 100644
index 0000000..e3471cf
--- /dev/null
+++ b/src/EventHub.Admin.Web/wwwroot/libs/@popperjs/popper.min.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"popper.min.js","sources":["../../src/dom-utils/getWindow.js","../../src/dom-utils/instanceOf.js","../../src/utils/math.js","../../src/utils/userAgent.js","../../src/dom-utils/isLayoutViewport.js","../../src/dom-utils/getBoundingClientRect.js","../../src/dom-utils/getWindowScroll.js","../../src/dom-utils/getNodeName.js","../../src/dom-utils/getDocumentElement.js","../../src/dom-utils/getWindowScrollBarX.js","../../src/dom-utils/getComputedStyle.js","../../src/dom-utils/isScrollParent.js","../../src/dom-utils/getCompositeRect.js","../../src/dom-utils/getNodeScroll.js","../../src/dom-utils/getHTMLElementScroll.js","../../src/dom-utils/getLayoutRect.js","../../src/dom-utils/getParentNode.js","../../src/dom-utils/getScrollParent.js","../../src/dom-utils/listScrollParents.js","../../src/dom-utils/isTableElement.js","../../src/dom-utils/getOffsetParent.js","../../src/enums.js","../../src/utils/orderModifiers.js","../../src/dom-utils/contains.js","../../src/utils/rectToClientRect.js","../../src/dom-utils/getClippingRect.js","../../src/dom-utils/getViewportRect.js","../../src/dom-utils/getDocumentRect.js","../../src/utils/getBasePlacement.js","../../src/utils/getVariation.js","../../src/utils/getMainAxisFromPlacement.js","../../src/utils/computeOffsets.js","../../src/utils/mergePaddingObject.js","../../src/utils/getFreshSideObject.js","../../src/utils/expandToHashMap.js","../../src/utils/detectOverflow.js","../../src/createPopper.js","../../src/utils/debounce.js","../../src/utils/mergeByName.js","../../src/modifiers/eventListeners.js","../../src/modifiers/popperOffsets.js","../../src/modifiers/computeStyles.js","../../src/modifiers/applyStyles.js","../../src/modifiers/offset.js","../../src/utils/getOppositePlacement.js","../../src/utils/getOppositeVariationPlacement.js","../../src/utils/computeAutoPlacement.js","../../src/modifiers/flip.js","../../src/utils/within.js","../../src/modifiers/preventOverflow.js","../../src/utils/getAltAxis.js","../../src/modifiers/arrow.js","../../src/modifiers/hide.js","../../src/popper-lite.js","../../src/popper.js"],"sourcesContent":["// @flow\nimport type { Window } from '../types';\ndeclare function getWindow(node: Node | Window): Window;\n\nexport default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n const ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}\n","// @flow\nimport getWindow from './getWindow';\n\ndeclare function isElement(node: mixed): boolean %checks(node instanceof\n Element);\nfunction isElement(node) {\n const OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\ndeclare function isHTMLElement(node: mixed): boolean %checks(node instanceof\n HTMLElement);\nfunction isHTMLElement(node) {\n const OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\ndeclare function isShadowRoot(node: mixed): boolean %checks(node instanceof\n ShadowRoot);\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n const OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };\n","// @flow\nexport const max = Math.max;\nexport const min = Math.min;\nexport const round = Math.round;\n","// @flow\ntype Navigator = Navigator & { userAgentData?: NavigatorUAData };\n\ninterface NavigatorUAData {\n brands: Array<{ brand: string, version: string }>;\n mobile: boolean;\n platform: string;\n}\n\nexport default function getUAString(): string {\n const uaData = (navigator: Navigator).userAgentData;\n\n if (uaData?.brands && Array.isArray(uaData.brands)) {\n return uaData.brands\n .map((item) => `${item.brand}/${item.version}`)\n .join(' ');\n }\n\n return navigator.userAgent;\n}\n","// @flow\nimport getUAString from '../utils/userAgent';\n\nexport default function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}\n","// @flow\nimport type { ClientRectObject, VirtualElement } from '../types';\nimport { isElement, isHTMLElement } from './instanceOf';\nimport { round } from '../utils/math';\nimport getWindow from './getWindow';\nimport isLayoutViewport from './isLayoutViewport';\n\nexport default function getBoundingClientRect(\n element: Element | VirtualElement,\n includeScale: boolean = false,\n isFixedStrategy: boolean = false\n): ClientRectObject {\n const clientRect = element.getBoundingClientRect();\n let scaleX = 1;\n let scaleY = 1;\n\n if (includeScale && isHTMLElement(element)) {\n scaleX =\n (element: HTMLElement).offsetWidth > 0\n ? round(clientRect.width) / (element: HTMLElement).offsetWidth || 1\n : 1;\n scaleY =\n (element: HTMLElement).offsetHeight > 0\n ? round(clientRect.height) / (element: HTMLElement).offsetHeight || 1\n : 1;\n }\n\n const { visualViewport } = isElement(element) ? getWindow(element) : window;\n const addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n\n const x =\n (clientRect.left +\n (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) /\n scaleX;\n const y =\n (clientRect.top +\n (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) /\n scaleY;\n const width = clientRect.width / scaleX;\n const height = clientRect.height / scaleY;\n\n return {\n width,\n height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x,\n y,\n };\n}\n","// @flow\nimport getWindow from './getWindow';\nimport type { Window } from '../types';\n\nexport default function getWindowScroll(node: Node | Window) {\n const win = getWindow(node);\n const scrollLeft = win.pageXOffset;\n const scrollTop = win.pageYOffset;\n\n return {\n scrollLeft,\n scrollTop,\n };\n}\n","// @flow\nimport type { Window } from '../types';\n\nexport default function getNodeName(element: ?Node | Window): ?string {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}\n","// @flow\nimport { isElement } from './instanceOf';\nimport type { Window } from '../types';\n\nexport default function getDocumentElement(\n element: Element | Window\n): HTMLElement {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return (\n (isElement(element)\n ? element.ownerDocument\n : // $FlowFixMe[prop-missing]\n element.document) || window.document\n ).documentElement;\n}\n","// @flow\nimport getBoundingClientRect from './getBoundingClientRect';\nimport getDocumentElement from './getDocumentElement';\nimport getWindowScroll from './getWindowScroll';\n\nexport default function getWindowScrollBarX(element: Element): number {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on \n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return (\n getBoundingClientRect(getDocumentElement(element)).left +\n getWindowScroll(element).scrollLeft\n );\n}\n","// @flow\nimport getWindow from './getWindow';\n\nexport default function getComputedStyle(\n element: Element\n): CSSStyleDeclaration {\n return getWindow(element).getComputedStyle(element);\n}\n","// @flow\nimport getComputedStyle from './getComputedStyle';\n\nexport default function isScrollParent(element: HTMLElement): boolean {\n // Firefox wants us to check `-x` and `-y` variations as well\n const { overflow, overflowX, overflowY } = getComputedStyle(element);\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}\n","// @flow\nimport type { Rect, VirtualElement, Window } from '../types';\nimport getBoundingClientRect from './getBoundingClientRect';\nimport getNodeScroll from './getNodeScroll';\nimport getNodeName from './getNodeName';\nimport { isHTMLElement } from './instanceOf';\nimport getWindowScrollBarX from './getWindowScrollBarX';\nimport getDocumentElement from './getDocumentElement';\nimport isScrollParent from './isScrollParent';\nimport { round } from '../utils/math';\n\nfunction isElementScaled(element: HTMLElement) {\n const rect = element.getBoundingClientRect();\n const scaleX = round(rect.width) / element.offsetWidth || 1;\n const scaleY = round(rect.height) / element.offsetHeight || 1;\n\n return scaleX !== 1 || scaleY !== 1;\n}\n\n// Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\nexport default function getCompositeRect(\n elementOrVirtualElement: Element | VirtualElement,\n offsetParent: Element | Window,\n isFixed: boolean = false\n): Rect {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const offsetParentIsScaled =\n isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const rect = getBoundingClientRect(\n elementOrVirtualElement,\n offsetParentIsScaled,\n isFixed\n );\n\n let scroll = { scrollLeft: 0, scrollTop: 0 };\n let offsets = { x: 0, y: 0 };\n\n if (isOffsetParentAnElement || (!isOffsetParentAnElement && !isFixed)) {\n if (\n getNodeName(offsetParent) !== 'body' ||\n // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)\n ) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height,\n };\n}\n","// @flow\nimport getWindowScroll from './getWindowScroll';\nimport getWindow from './getWindow';\nimport { isHTMLElement } from './instanceOf';\nimport getHTMLElementScroll from './getHTMLElementScroll';\nimport type { Window } from '../types';\n\nexport default function getNodeScroll(node: Node | Window) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}\n","// @flow\n\nexport default function getHTMLElementScroll(element: HTMLElement) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop,\n };\n}\n","// @flow\nimport type { Rect } from '../types';\nimport getBoundingClientRect from './getBoundingClientRect';\n\n// Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\nexport default function getLayoutRect(element: HTMLElement): Rect {\n const clientRect = getBoundingClientRect(element);\n\n // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n let width = element.offsetWidth;\n let height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width,\n height,\n };\n}\n","// @flow\nimport getNodeName from './getNodeName';\nimport getDocumentElement from './getDocumentElement';\nimport { isShadowRoot } from './instanceOf';\n\nexport default function getParentNode(element: Node | ShadowRoot): Node {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (\n // this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || // DOM Element detected\n (isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n );\n}\n","// @flow\nimport getParentNode from './getParentNode';\nimport isScrollParent from './isScrollParent';\nimport getNodeName from './getNodeName';\nimport { isHTMLElement } from './instanceOf';\n\nexport default function getScrollParent(node: Node): HTMLElement {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}\n","// @flow\nimport getScrollParent from './getScrollParent';\nimport getParentNode from './getParentNode';\nimport getWindow from './getWindow';\nimport type { Window, VisualViewport } from '../types';\nimport isScrollParent from './isScrollParent';\n\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\nexport default function listScrollParents(\n element: Node,\n list: Array = []\n): Array {\n const scrollParent = getScrollParent(element);\n const isBody = scrollParent === element.ownerDocument?.body;\n const win = getWindow(scrollParent);\n const target = isBody\n ? [win].concat(\n win.visualViewport || [],\n isScrollParent(scrollParent) ? scrollParent : []\n )\n : scrollParent;\n const updatedList = list.concat(target);\n\n return isBody\n ? updatedList\n : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}\n","// @flow\nimport getNodeName from './getNodeName';\n\nexport default function isTableElement(element: Element): boolean {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}\n","// @flow\nimport getWindow from './getWindow';\nimport getNodeName from './getNodeName';\nimport getComputedStyle from './getComputedStyle';\nimport { isHTMLElement, isShadowRoot } from './instanceOf';\nimport isTableElement from './isTableElement';\nimport getParentNode from './getParentNode';\nimport getUAString from '../utils/userAgent';\n\nfunction getTrueOffsetParent(element: Element): ?Element {\n if (\n !isHTMLElement(element) ||\n // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed'\n ) {\n return null;\n }\n\n return element.offsetParent;\n}\n\n// `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\nfunction getContainingBlock(element: Element) {\n const isFirefox = /firefox/i.test(getUAString());\n const isIE = /Trident/i.test(getUAString());\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n const elementCss = getComputedStyle(element);\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n let currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (\n isHTMLElement(currentNode) &&\n ['html', 'body'].indexOf(getNodeName(currentNode)) < 0\n ) {\n const css = getComputedStyle(currentNode);\n\n // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n if (\n css.transform !== 'none' ||\n css.perspective !== 'none' ||\n css.contain === 'paint' ||\n ['transform', 'perspective'].indexOf(css.willChange) !== -1 ||\n (isFirefox && css.willChange === 'filter') ||\n (isFirefox && css.filter && css.filter !== 'none')\n ) {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nexport default function getOffsetParent(element: Element) {\n const window = getWindow(element);\n\n let offsetParent = getTrueOffsetParent(element);\n\n while (\n offsetParent &&\n isTableElement(offsetParent) &&\n getComputedStyle(offsetParent).position === 'static'\n ) {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (\n offsetParent &&\n (getNodeName(offsetParent) === 'html' ||\n (getNodeName(offsetParent) === 'body' &&\n getComputedStyle(offsetParent).position === 'static'))\n ) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}\n","// @flow\nexport const top: 'top' = 'top';\nexport const bottom: 'bottom' = 'bottom';\nexport const right: 'right' = 'right';\nexport const left: 'left' = 'left';\nexport const auto: 'auto' = 'auto';\nexport type BasePlacement =\n | typeof top\n | typeof bottom\n | typeof right\n | typeof left;\nexport const basePlacements: Array = [top, bottom, right, left];\n\nexport const start: 'start' = 'start';\nexport const end: 'end' = 'end';\nexport type Variation = typeof start | typeof end;\n\nexport const clippingParents: 'clippingParents' = 'clippingParents';\nexport const viewport: 'viewport' = 'viewport';\nexport type Boundary = Element | Array | typeof clippingParents;\nexport type RootBoundary = typeof viewport | 'document';\n\nexport const popper: 'popper' = 'popper';\nexport const reference: 'reference' = 'reference';\nexport type Context = typeof popper | typeof reference;\n\nexport type VariationPlacement =\n | 'top-start'\n | 'top-end'\n | 'bottom-start'\n | 'bottom-end'\n | 'right-start'\n | 'right-end'\n | 'left-start'\n | 'left-end';\nexport type AutoPlacement = 'auto' | 'auto-start' | 'auto-end';\nexport type ComputedPlacement = VariationPlacement | BasePlacement;\nexport type Placement = AutoPlacement | BasePlacement | VariationPlacement;\n\nexport const variationPlacements: Array = basePlacements.reduce(\n (acc: Array, placement: BasePlacement) =>\n acc.concat([(`${placement}-${start}`: any), (`${placement}-${end}`: any)]),\n []\n);\nexport const placements: Array = [...basePlacements, auto].reduce(\n (\n acc: Array,\n placement: BasePlacement | typeof auto\n ): Array =>\n acc.concat([\n placement,\n (`${placement}-${start}`: any),\n (`${placement}-${end}`: any),\n ]),\n []\n);\n\n// modifiers that need to read the DOM\nexport const beforeRead: 'beforeRead' = 'beforeRead';\nexport const read: 'read' = 'read';\nexport const afterRead: 'afterRead' = 'afterRead';\n// pure-logic modifiers\nexport const beforeMain: 'beforeMain' = 'beforeMain';\nexport const main: 'main' = 'main';\nexport const afterMain: 'afterMain' = 'afterMain';\n// modifier with the purpose to write to the DOM (or write into a framework state)\nexport const beforeWrite: 'beforeWrite' = 'beforeWrite';\nexport const write: 'write' = 'write';\nexport const afterWrite: 'afterWrite' = 'afterWrite';\nexport const modifierPhases: Array = [\n beforeRead,\n read,\n afterRead,\n beforeMain,\n main,\n afterMain,\n beforeWrite,\n write,\n afterWrite,\n];\n\nexport type ModifierPhases =\n | typeof beforeRead\n | typeof read\n | typeof afterRead\n | typeof beforeMain\n | typeof main\n | typeof afterMain\n | typeof beforeWrite\n | typeof write\n | typeof afterWrite;\n","// @flow\nimport type { Modifier } from '../types';\nimport { modifierPhases } from '../enums';\n\n// source: https://stackoverflow.com/questions/49875255\nfunction order(modifiers) {\n const map = new Map();\n const visited = new Set();\n const result = [];\n\n modifiers.forEach(modifier => {\n map.set(modifier.name, modifier);\n });\n\n // On visiting object, check for its dependencies and visit them recursively\n function sort(modifier: Modifier) {\n visited.add(modifier.name);\n\n const requires = [\n ...(modifier.requires || []),\n ...(modifier.requiresIfExists || []),\n ];\n\n requires.forEach(dep => {\n if (!visited.has(dep)) {\n const depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n\n result.push(modifier);\n }\n\n modifiers.forEach(modifier => {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n\n return result;\n}\n\nexport default function orderModifiers(\n modifiers: Array>\n): Array> {\n // order based on dependencies\n const orderedModifiers = order(modifiers);\n\n // order based on phase\n return modifierPhases.reduce((acc, phase) => {\n return acc.concat(\n orderedModifiers.filter(modifier => modifier.phase === phase)\n );\n }, []);\n}\n","// @flow\nimport { isShadowRoot } from './instanceOf';\n\nexport default function contains(parent: Element, child: Element) {\n const rootNode = child.getRootNode && child.getRootNode();\n\n // First, attempt with faster native method\n if (parent.contains(child)) {\n return true;\n }\n // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n let next = child;\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n }\n // $FlowFixMe[prop-missing]: need a better way to handle this...\n next = next.parentNode || next.host;\n } while (next);\n }\n\n // Give up, the result is false\n return false;\n}\n","// @flow\nimport type { Rect, ClientRectObject } from '../types';\n\nexport default function rectToClientRect(rect: Rect): ClientRectObject {\n return {\n ...rect,\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height,\n };\n}\n","// @flow\nimport type { ClientRectObject, PositioningStrategy } from '../types';\nimport type { Boundary, RootBoundary } from '../enums';\nimport { viewport } from '../enums';\nimport getViewportRect from './getViewportRect';\nimport getDocumentRect from './getDocumentRect';\nimport listScrollParents from './listScrollParents';\nimport getOffsetParent from './getOffsetParent';\nimport getDocumentElement from './getDocumentElement';\nimport getComputedStyle from './getComputedStyle';\nimport { isElement, isHTMLElement } from './instanceOf';\nimport getBoundingClientRect from './getBoundingClientRect';\nimport getParentNode from './getParentNode';\nimport contains from './contains';\nimport getNodeName from './getNodeName';\nimport rectToClientRect from '../utils/rectToClientRect';\nimport { max, min } from '../utils/math';\n\nfunction getInnerBoundingClientRect(\n element: Element,\n strategy: PositioningStrategy\n) {\n const rect = getBoundingClientRect(element, false, strategy === 'fixed');\n\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n\n return rect;\n}\n\nfunction getClientRectFromMixedType(\n element: Element,\n clippingParent: Element | RootBoundary,\n strategy: PositioningStrategy\n): ClientRectObject {\n return clippingParent === viewport\n ? rectToClientRect(getViewportRect(element, strategy))\n : isElement(clippingParent)\n ? getInnerBoundingClientRect(clippingParent, strategy)\n : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n}\n\n// A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\nfunction getClippingParents(element: Element): Array {\n const clippingParents = listScrollParents(getParentNode(element));\n const canEscapeClipping =\n ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n const clipperElement =\n canEscapeClipping && isHTMLElement(element)\n ? getOffsetParent(element)\n : element;\n\n if (!isElement(clipperElement)) {\n return [];\n }\n\n // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n return clippingParents.filter(\n (clippingParent) =>\n isElement(clippingParent) &&\n contains(clippingParent, clipperElement) &&\n getNodeName(clippingParent) !== 'body'\n );\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping parents\nexport default function getClippingRect(\n element: Element,\n boundary: Boundary,\n rootBoundary: RootBoundary,\n strategy: PositioningStrategy\n): ClientRectObject {\n const mainClippingParents =\n boundary === 'clippingParents'\n ? getClippingParents(element)\n : [].concat(boundary);\n const clippingParents = [...mainClippingParents, rootBoundary];\n const firstClippingParent = clippingParents[0];\n\n const clippingRect = clippingParents.reduce((accRect, clippingParent) => {\n const rect = getClientRectFromMixedType(element, clippingParent, strategy);\n\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n\n return clippingRect;\n}\n","// @flow\nimport getWindow from './getWindow';\nimport getDocumentElement from './getDocumentElement';\nimport getWindowScrollBarX from './getWindowScrollBarX';\nimport isLayoutViewport from './isLayoutViewport';\nimport type { PositioningStrategy } from '../types';\n\nexport default function getViewportRect(\n element: Element,\n strategy: PositioningStrategy\n) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n\n const layoutViewport = isLayoutViewport();\n\n if (layoutViewport || (!layoutViewport && strategy === 'fixed')) {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width,\n height,\n x: x + getWindowScrollBarX(element),\n y,\n };\n}\n","// @flow\nimport type { Rect } from '../types';\nimport getDocumentElement from './getDocumentElement';\nimport getComputedStyle from './getComputedStyle';\nimport getWindowScrollBarX from './getWindowScrollBarX';\nimport getWindowScroll from './getWindowScroll';\nimport { max } from '../utils/math';\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable\nexport default function getDocumentRect(element: HTMLElement): Rect {\n const html = getDocumentElement(element);\n const winScroll = getWindowScroll(element);\n const body = element.ownerDocument?.body;\n\n const width = max(\n html.scrollWidth,\n html.clientWidth,\n body ? body.scrollWidth : 0,\n body ? body.clientWidth : 0\n );\n const height = max(\n html.scrollHeight,\n html.clientHeight,\n body ? body.scrollHeight : 0,\n body ? body.clientHeight : 0\n );\n\n let x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n const y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return { width, height, x, y };\n}\n","// @flow\nimport { type BasePlacement, type Placement, auto } from '../enums';\n\nexport default function getBasePlacement(\n placement: Placement | typeof auto\n): BasePlacement {\n return (placement.split('-')[0]: any);\n}\n","// @flow\nimport { type Variation, type Placement } from '../enums';\n\nexport default function getVariation(placement: Placement): ?Variation {\n return (placement.split('-')[1]: any);\n}\n","// @flow\nimport type { Placement } from '../enums';\n\nexport default function getMainAxisFromPlacement(\n placement: Placement\n): 'x' | 'y' {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}\n","// @flow\nimport getBasePlacement from './getBasePlacement';\nimport getVariation from './getVariation';\nimport getMainAxisFromPlacement from './getMainAxisFromPlacement';\nimport type {\n Rect,\n PositioningStrategy,\n Offsets,\n ClientRectObject,\n} from '../types';\nimport { top, right, bottom, left, start, end, type Placement } from '../enums';\n\nexport default function computeOffsets({\n reference,\n element,\n placement,\n}: {\n reference: Rect | ClientRectObject,\n element: Rect | ClientRectObject,\n strategy: PositioningStrategy,\n placement?: Placement,\n}): Offsets {\n const basePlacement = placement ? getBasePlacement(placement) : null;\n const variation = placement ? getVariation(placement) : null;\n const commonX = reference.x + reference.width / 2 - element.width / 2;\n const commonY = reference.y + reference.height / 2 - element.height / 2;\n\n let offsets;\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height,\n };\n break;\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height,\n };\n break;\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY,\n };\n break;\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY,\n };\n break;\n default:\n offsets = {\n x: reference.x,\n y: reference.y,\n };\n }\n\n const mainAxis = basePlacement\n ? getMainAxisFromPlacement(basePlacement)\n : null;\n\n if (mainAxis != null) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] =\n offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n case end:\n offsets[mainAxis] =\n offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n default:\n }\n }\n\n return offsets;\n}\n","// @flow\nimport type { SideObject } from '../types';\nimport getFreshSideObject from './getFreshSideObject';\n\nexport default function mergePaddingObject(\n paddingObject: $Shape\n): SideObject {\n return {\n ...getFreshSideObject(),\n ...paddingObject,\n };\n}\n","// @flow\nimport type { SideObject } from '../types';\n\nexport default function getFreshSideObject(): SideObject {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n };\n}\n","// @flow\n\nexport default function expandToHashMap<\n T: number | string | boolean,\n K: string\n>(value: T, keys: Array): { [key: string]: T } {\n return keys.reduce((hashMap, key) => {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}\n","// @flow\nimport type { State, SideObject, Padding, PositioningStrategy } from '../types';\nimport type { Placement, Boundary, RootBoundary, Context } from '../enums';\nimport getClippingRect from '../dom-utils/getClippingRect';\nimport getDocumentElement from '../dom-utils/getDocumentElement';\nimport getBoundingClientRect from '../dom-utils/getBoundingClientRect';\nimport computeOffsets from './computeOffsets';\nimport rectToClientRect from './rectToClientRect';\nimport {\n clippingParents,\n reference,\n popper,\n bottom,\n top,\n right,\n basePlacements,\n viewport,\n} from '../enums';\nimport { isElement } from '../dom-utils/instanceOf';\nimport mergePaddingObject from './mergePaddingObject';\nimport expandToHashMap from './expandToHashMap';\n\n// eslint-disable-next-line import/no-unused-modules\nexport type Options = {\n placement: Placement,\n strategy: PositioningStrategy,\n boundary: Boundary,\n rootBoundary: RootBoundary,\n elementContext: Context,\n altBoundary: boolean,\n padding: Padding,\n};\n\nexport default function detectOverflow(\n state: State,\n options: $Shape = {}\n): SideObject {\n const {\n placement = state.placement,\n strategy = state.strategy,\n boundary = clippingParents,\n rootBoundary = viewport,\n elementContext = popper,\n altBoundary = false,\n padding = 0,\n } = options;\n\n const paddingObject = mergePaddingObject(\n typeof padding !== 'number'\n ? padding\n : expandToHashMap(padding, basePlacements)\n );\n\n const altContext = elementContext === popper ? reference : popper;\n\n const popperRect = state.rects.popper;\n const element = state.elements[altBoundary ? altContext : elementContext];\n\n const clippingClientRect = getClippingRect(\n isElement(element)\n ? element\n : element.contextElement || getDocumentElement(state.elements.popper),\n boundary,\n rootBoundary,\n strategy\n );\n\n const referenceClientRect = getBoundingClientRect(state.elements.reference);\n\n const popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement,\n });\n\n const popperClientRect = rectToClientRect({\n ...popperRect,\n ...popperOffsets,\n });\n\n const elementClientRect =\n elementContext === popper ? popperClientRect : referenceClientRect;\n\n // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n const overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom:\n elementClientRect.bottom -\n clippingClientRect.bottom +\n paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right:\n elementClientRect.right - clippingClientRect.right + paddingObject.right,\n };\n\n const offsetData = state.modifiersData.offset;\n\n // Offsets can be applied only to the popper element\n if (elementContext === popper && offsetData) {\n const offset = offsetData[placement];\n\n Object.keys(overflowOffsets).forEach((key) => {\n const multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n const axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}\n","// @flow\nimport type {\n State,\n OptionsGeneric,\n Modifier,\n Instance,\n VirtualElement,\n} from './types';\nimport getCompositeRect from './dom-utils/getCompositeRect';\nimport getLayoutRect from './dom-utils/getLayoutRect';\nimport listScrollParents from './dom-utils/listScrollParents';\nimport getOffsetParent from './dom-utils/getOffsetParent';\nimport orderModifiers from './utils/orderModifiers';\nimport debounce from './utils/debounce';\nimport mergeByName from './utils/mergeByName';\nimport detectOverflow from './utils/detectOverflow';\nimport { isElement } from './dom-utils/instanceOf';\n\nconst DEFAULT_OPTIONS: OptionsGeneric = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute',\n};\n\ntype PopperGeneratorArgs = {\n defaultModifiers?: Array>,\n defaultOptions?: $Shape>,\n};\n\nfunction areValidElements(...args: Array): boolean {\n return !args.some(\n (element) =>\n !(element && typeof element.getBoundingClientRect === 'function')\n );\n}\n\nexport function popperGenerator(generatorOptions: PopperGeneratorArgs = {}) {\n const { defaultModifiers = [], defaultOptions = DEFAULT_OPTIONS } =\n generatorOptions;\n\n return function createPopper>>(\n reference: Element | VirtualElement,\n popper: HTMLElement,\n options: $Shape> = defaultOptions\n ): Instance {\n let state: $Shape = {\n placement: 'bottom',\n orderedModifiers: [],\n options: { ...DEFAULT_OPTIONS, ...defaultOptions },\n modifiersData: {},\n elements: {\n reference,\n popper,\n },\n attributes: {},\n styles: {},\n };\n\n let effectCleanupFns: Array<() => void> = [];\n let isDestroyed = false;\n\n const instance = {\n state,\n setOptions(setOptionsAction) {\n const options =\n typeof setOptionsAction === 'function'\n ? setOptionsAction(state.options)\n : setOptionsAction;\n\n cleanupModifierEffects();\n\n state.options = {\n // $FlowFixMe[exponential-spread]\n ...defaultOptions,\n ...state.options,\n ...options,\n };\n\n state.scrollParents = {\n reference: isElement(reference)\n ? listScrollParents(reference)\n : reference.contextElement\n ? listScrollParents(reference.contextElement)\n : [],\n popper: listScrollParents(popper),\n };\n\n // Orders the modifiers based on their dependencies and `phase`\n // properties\n const orderedModifiers = orderModifiers(\n mergeByName([...defaultModifiers, ...state.options.modifiers])\n );\n\n // Strip out disabled modifiers\n state.orderedModifiers = orderedModifiers.filter((m) => m.enabled);\n\n runModifierEffects();\n\n return instance.update();\n },\n\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n const { reference, popper } = state.elements;\n\n // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n if (!areValidElements(reference, popper)) {\n return;\n }\n\n // Store the reference and popper rects to be read by modifiers\n state.rects = {\n reference: getCompositeRect(\n reference,\n getOffsetParent(popper),\n state.options.strategy === 'fixed'\n ),\n popper: getLayoutRect(popper),\n };\n\n // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n state.reset = false;\n\n state.placement = state.options.placement;\n\n // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n state.orderedModifiers.forEach(\n (modifier) =>\n (state.modifiersData[modifier.name] = {\n ...modifier.data,\n })\n );\n\n for (let index = 0; index < state.orderedModifiers.length; index++) {\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n const { fn, options = {}, name } = state.orderedModifiers[index];\n\n if (typeof fn === 'function') {\n state = fn({ state, options, name, instance }) || state;\n }\n }\n },\n\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce<$Shape>(\n () =>\n new Promise<$Shape>((resolve) => {\n instance.forceUpdate();\n resolve(state);\n })\n ),\n\n destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n },\n };\n\n if (!areValidElements(reference, popper)) {\n return instance;\n }\n\n instance.setOptions(options).then((state) => {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n });\n\n // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n function runModifierEffects() {\n state.orderedModifiers.forEach(({ name, options = {}, effect }) => {\n if (typeof effect === 'function') {\n const cleanupFn = effect({ state, name, instance, options });\n const noopFn = () => {};\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach((fn) => fn());\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\n\nexport const createPopper = popperGenerator();\n\n// eslint-disable-next-line import/no-unused-modules\nexport { detectOverflow };\n","// @flow\n\nexport default function debounce(fn: Function): () => Promise {\n let pending;\n return () => {\n if (!pending) {\n pending = new Promise(resolve => {\n Promise.resolve().then(() => {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}\n","// @flow\nimport type { Modifier } from '../types';\n\nexport default function mergeByName(\n modifiers: Array<$Shape>>\n): Array<$Shape>> {\n const merged = modifiers.reduce((merged, current) => {\n const existing = merged[current.name];\n merged[current.name] = existing\n ? {\n ...existing,\n ...current,\n options: { ...existing.options, ...current.options },\n data: { ...existing.data, ...current.data },\n }\n : current;\n return merged;\n }, {});\n\n // IE11 does not support Object.values\n return Object.keys(merged).map(key => merged[key]);\n}\n","// @flow\nimport type { ModifierArguments, Modifier } from '../types';\nimport getWindow from '../dom-utils/getWindow';\n\n// eslint-disable-next-line import/no-unused-modules\nexport type Options = {\n scroll: boolean,\n resize: boolean,\n};\n\nconst passive = { passive: true };\n\nfunction effect({ state, instance, options }: ModifierArguments) {\n const { scroll = true, resize = true } = options;\n\n const window = getWindow(state.elements.popper);\n const scrollParents = [\n ...state.scrollParents.reference,\n ...state.scrollParents.popper,\n ];\n\n if (scroll) {\n scrollParents.forEach(scrollParent => {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return () => {\n if (scroll) {\n scrollParents.forEach(scrollParent => {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n}\n\n// eslint-disable-next-line import/no-unused-modules\nexport type EventListenersModifier = Modifier<'eventListeners', Options>;\nexport default ({\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: () => {},\n effect,\n data: {},\n}: EventListenersModifier);\n","// @flow\nimport type { ModifierArguments, Modifier } from '../types';\nimport computeOffsets from '../utils/computeOffsets';\n\nfunction popperOffsets({ state, name }: ModifierArguments<{||}>) {\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement,\n });\n}\n\n// eslint-disable-next-line import/no-unused-modules\nexport type PopperOffsetsModifier = Modifier<'popperOffsets', {||}>;\nexport default ({\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {},\n}: PopperOffsetsModifier);\n","// @flow\nimport type {\n PositioningStrategy,\n Offsets,\n Modifier,\n ModifierArguments,\n Rect,\n Window,\n} from '../types';\nimport {\n type BasePlacement,\n type Variation,\n top,\n left,\n right,\n bottom,\n end,\n} from '../enums';\nimport getOffsetParent from '../dom-utils/getOffsetParent';\nimport getWindow from '../dom-utils/getWindow';\nimport getDocumentElement from '../dom-utils/getDocumentElement';\nimport getComputedStyle from '../dom-utils/getComputedStyle';\nimport getBasePlacement from '../utils/getBasePlacement';\nimport getVariation from '../utils/getVariation';\nimport { round } from '../utils/math';\n\n// eslint-disable-next-line import/no-unused-modules\nexport type RoundOffsets = (\n offsets: $Shape<{ x: number, y: number, centerOffset: number }>\n) => Offsets;\n\n// eslint-disable-next-line import/no-unused-modules\nexport type Options = {\n gpuAcceleration: boolean,\n adaptive: boolean,\n roundOffsets?: boolean | RoundOffsets,\n};\n\nconst unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto',\n};\n\n// Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\nfunction roundOffsetsByDPR({ x, y }, win: Window): Offsets {\n const dpr = win.devicePixelRatio || 1;\n\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0,\n };\n}\n\nexport function mapToStyles({\n popper,\n popperRect,\n placement,\n variation,\n offsets,\n position,\n gpuAcceleration,\n adaptive,\n roundOffsets,\n isFixed,\n}: {\n popper: HTMLElement,\n popperRect: Rect,\n placement: BasePlacement,\n variation: ?Variation,\n offsets: $Shape<{ x: number, y: number, centerOffset: number }>,\n position: PositioningStrategy,\n gpuAcceleration: boolean,\n adaptive: boolean,\n roundOffsets: boolean | RoundOffsets,\n isFixed: boolean,\n}) {\n let { x = 0, y = 0 } = offsets;\n\n ({ x, y } =\n typeof roundOffsets === 'function' ? roundOffsets({ x, y }) : { x, y });\n\n const hasX = offsets.hasOwnProperty('x');\n const hasY = offsets.hasOwnProperty('y');\n\n let sideX: string = left;\n let sideY: string = top;\n\n const win: Window = window;\n\n if (adaptive) {\n let offsetParent = getOffsetParent(popper);\n let heightProp = 'clientHeight';\n let widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (\n getComputedStyle(offsetParent).position !== 'static' &&\n position === 'absolute'\n ) {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n }\n\n // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n offsetParent = (offsetParent: Element);\n\n if (\n placement === top ||\n ((placement === left || placement === right) && variation === end)\n ) {\n sideY = bottom;\n const offsetY =\n isFixed && offsetParent === win && win.visualViewport\n ? win.visualViewport.height\n : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (\n placement === left ||\n ((placement === top || placement === bottom) && variation === end)\n ) {\n sideX = right;\n const offsetX =\n isFixed && offsetParent === win && win.visualViewport\n ? win.visualViewport.width\n : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n const commonStyles = {\n position,\n ...(adaptive && unsetSides),\n };\n\n ({ x, y } =\n roundOffsets === true\n ? roundOffsetsByDPR({ x, y }, getWindow(popper))\n : { x, y });\n\n if (gpuAcceleration) {\n return {\n ...commonStyles,\n [sideY]: hasY ? '0' : '',\n [sideX]: hasX ? '0' : '',\n // Layer acceleration can disable subpixel rendering which causes slightly\n // blurry text on low PPI displays, so we want to use 2D transforms\n // instead\n transform:\n (win.devicePixelRatio || 1) <= 1\n ? `translate(${x}px, ${y}px)`\n : `translate3d(${x}px, ${y}px, 0)`,\n };\n }\n\n return {\n ...commonStyles,\n [sideY]: hasY ? `${y}px` : '',\n [sideX]: hasX ? `${x}px` : '',\n transform: '',\n };\n}\n\nfunction computeStyles({ state, options }: ModifierArguments) {\n const {\n gpuAcceleration = true,\n adaptive = true,\n // defaults to use builtin `roundOffsetsByDPR`\n roundOffsets = true,\n } = options;\n\n const commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration,\n isFixed: state.options.strategy === 'fixed',\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = {\n ...state.styles.popper,\n ...mapToStyles({\n ...commonStyles,\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive,\n roundOffsets,\n }),\n };\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = {\n ...state.styles.arrow,\n ...mapToStyles({\n ...commonStyles,\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets,\n }),\n };\n }\n\n state.attributes.popper = {\n ...state.attributes.popper,\n 'data-popper-placement': state.placement,\n };\n}\n\n// eslint-disable-next-line import/no-unused-modules\nexport type ComputeStylesModifier = Modifier<'computeStyles', Options>;\nexport default ({\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {},\n}: ComputeStylesModifier);\n","// @flow\nimport type { Modifier, ModifierArguments } from '../types';\nimport getNodeName from '../dom-utils/getNodeName';\nimport { isHTMLElement } from '../dom-utils/instanceOf';\n\n// This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles({ state }: ModifierArguments<{||}>) {\n Object.keys(state.elements).forEach((name) => {\n const style = state.styles[name] || {};\n\n const attributes = state.attributes[name] || {};\n const element = state.elements[name];\n\n // arrow is optional + virtual elements\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n Object.assign(element.style, style);\n\n Object.keys(attributes).forEach((name) => {\n const value = attributes[name];\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect({ state }: ModifierArguments<{||}>) {\n const initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0',\n },\n arrow: {\n position: 'absolute',\n },\n reference: {},\n };\n\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return () => {\n Object.keys(state.elements).forEach((name) => {\n const element = state.elements[name];\n const attributes = state.attributes[name] || {};\n\n const styleProperties = Object.keys(\n state.styles.hasOwnProperty(name)\n ? state.styles[name]\n : initialStyles[name]\n );\n\n // Set all values to an empty string to unset them\n const style = styleProperties.reduce((style, property) => {\n style[property] = '';\n return style;\n }, {});\n\n // arrow is optional + virtual elements\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n\n Object.keys(attributes).forEach((attribute) => {\n element.removeAttribute(attribute);\n });\n });\n };\n}\n\n// eslint-disable-next-line import/no-unused-modules\nexport type ApplyStylesModifier = Modifier<'applyStyles', {||}>;\nexport default ({\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect,\n requires: ['computeStyles'],\n}: ApplyStylesModifier);\n","// @flow\nimport type { Placement } from '../enums';\nimport type { ModifierArguments, Modifier, Rect, Offsets } from '../types';\nimport getBasePlacement from '../utils/getBasePlacement';\nimport { top, left, right, placements } from '../enums';\n\n// eslint-disable-next-line import/no-unused-modules\nexport type OffsetsFunction = ({\n popper: Rect,\n reference: Rect,\n placement: Placement,\n}) => [?number, ?number];\n\ntype Offset = OffsetsFunction | [?number, ?number];\n\n// eslint-disable-next-line import/no-unused-modules\nexport type Options = {\n offset: Offset,\n};\n\nexport function distanceAndSkiddingToXY(\n placement: Placement,\n rects: { popper: Rect, reference: Rect },\n offset: Offset\n): Offsets {\n const basePlacement = getBasePlacement(placement);\n const invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n let [skidding, distance] =\n typeof offset === 'function'\n ? offset({\n ...rects,\n placement,\n })\n : offset;\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n\n return [left, right].indexOf(basePlacement) >= 0\n ? { x: distance, y: skidding }\n : { x: skidding, y: distance };\n}\n\nfunction offset({ state, options, name }: ModifierArguments) {\n const { offset = [0, 0] } = options;\n\n const data = placements.reduce((acc, placement) => {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n\n const { x, y } = data[state.placement];\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n}\n\n// eslint-disable-next-line import/no-unused-modules\nexport type OffsetModifier = Modifier<'offset', Options>;\nexport default ({\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset,\n}: OffsetModifier);\n","// @flow\nimport type { Placement } from '../enums';\n\nconst hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n\nexport default function getOppositePlacement(placement: Placement): Placement {\n return (placement.replace(\n /left|right|bottom|top/g,\n matched => hash[matched]\n ): any);\n}\n","// @flow\nimport type { Placement } from '../enums';\n\nconst hash = { start: 'end', end: 'start' };\n\nexport default function getOppositeVariationPlacement(\n placement: Placement\n): Placement {\n return (placement.replace(/start|end/g, matched => hash[matched]): any);\n}\n","// @flow\nimport type { State, Padding } from '../types';\nimport type {\n Placement,\n ComputedPlacement,\n Boundary,\n RootBoundary,\n} from '../enums';\nimport getVariation from './getVariation';\nimport {\n variationPlacements,\n basePlacements,\n placements as allPlacements,\n} from '../enums';\nimport detectOverflow from './detectOverflow';\nimport getBasePlacement from './getBasePlacement';\n\ntype Options = {\n placement: Placement,\n padding: Padding,\n boundary: Boundary,\n rootBoundary: RootBoundary,\n flipVariations: boolean,\n allowedAutoPlacements?: Array,\n};\n\ntype OverflowsMap = { [ComputedPlacement]: number };\n\nexport default function computeAutoPlacement(\n state: $Shape,\n options: Options = {}\n): Array {\n const {\n placement,\n boundary,\n rootBoundary,\n padding,\n flipVariations,\n allowedAutoPlacements = allPlacements,\n } = options;\n\n const variation = getVariation(placement);\n\n const placements = variation\n ? flipVariations\n ? variationPlacements\n : variationPlacements.filter(\n (placement) => getVariation(placement) === variation\n )\n : basePlacements;\n\n let allowedPlacements = placements.filter(\n (placement) => allowedAutoPlacements.indexOf(placement) >= 0\n );\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n }\n\n // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n const overflows: OverflowsMap = allowedPlacements.reduce((acc, placement) => {\n acc[placement] = detectOverflow(state, {\n placement,\n boundary,\n rootBoundary,\n padding,\n })[getBasePlacement(placement)];\n\n return acc;\n }, {});\n\n return Object.keys(overflows).sort((a, b) => overflows[a] - overflows[b]);\n}\n","// @flow\nimport type { Placement, Boundary, RootBoundary } from '../enums';\nimport type { ModifierArguments, Modifier, Padding } from '../types';\nimport getOppositePlacement from '../utils/getOppositePlacement';\nimport getBasePlacement from '../utils/getBasePlacement';\nimport getOppositeVariationPlacement from '../utils/getOppositeVariationPlacement';\nimport detectOverflow from '../utils/detectOverflow';\nimport computeAutoPlacement from '../utils/computeAutoPlacement';\nimport { bottom, top, start, right, left, auto } from '../enums';\nimport getVariation from '../utils/getVariation';\n\n// eslint-disable-next-line import/no-unused-modules\nexport type Options = {\n mainAxis: boolean,\n altAxis: boolean,\n fallbackPlacements: Array,\n padding: Padding,\n boundary: Boundary,\n rootBoundary: RootBoundary,\n altBoundary: boolean,\n flipVariations: boolean,\n allowedAutoPlacements: Array,\n};\n\nfunction getExpandedFallbackPlacements(placement: Placement): Array {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n const oppositePlacement = getOppositePlacement(placement);\n\n return [\n getOppositeVariationPlacement(placement),\n oppositePlacement,\n getOppositeVariationPlacement(oppositePlacement),\n ];\n}\n\nfunction flip({ state, options, name }: ModifierArguments) {\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n const {\n mainAxis: checkMainAxis = true,\n altAxis: checkAltAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n padding,\n boundary,\n rootBoundary,\n altBoundary,\n flipVariations = true,\n allowedAutoPlacements,\n } = options;\n\n const preferredPlacement = state.options.placement;\n const basePlacement = getBasePlacement(preferredPlacement);\n const isBasePlacement = basePlacement === preferredPlacement;\n\n const fallbackPlacements =\n specifiedFallbackPlacements ||\n (isBasePlacement || !flipVariations\n ? [getOppositePlacement(preferredPlacement)]\n : getExpandedFallbackPlacements(preferredPlacement));\n\n const placements = [preferredPlacement, ...fallbackPlacements].reduce(\n (acc, placement) => {\n return acc.concat(\n getBasePlacement(placement) === auto\n ? computeAutoPlacement(state, {\n placement,\n boundary,\n rootBoundary,\n padding,\n flipVariations,\n allowedAutoPlacements,\n })\n : placement\n );\n },\n []\n );\n\n const referenceRect = state.rects.reference;\n const popperRect = state.rects.popper;\n\n const checksMap = new Map();\n let makeFallbackChecks = true;\n let firstFittingPlacement = placements[0];\n\n for (let i = 0; i < placements.length; i++) {\n const placement = placements[i];\n const basePlacement = getBasePlacement(placement);\n const isStartVariation = getVariation(placement) === start;\n const isVertical = [top, bottom].indexOf(basePlacement) >= 0;\n const len = isVertical ? 'width' : 'height';\n\n const overflow = detectOverflow(state, {\n placement,\n boundary,\n rootBoundary,\n altBoundary,\n padding,\n });\n\n let mainVariationSide: any = isVertical\n ? isStartVariation\n ? right\n : left\n : isStartVariation\n ? bottom\n : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n const altVariationSide: any = getOppositePlacement(mainVariationSide);\n\n const checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(\n overflow[mainVariationSide] <= 0,\n overflow[altVariationSide] <= 0\n );\n }\n\n if (checks.every((check) => check)) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n const numberOfChecks = flipVariations ? 3 : 1;\n\n for (let i = numberOfChecks; i > 0; i--) {\n const fittingPlacement = placements.find((placement) => {\n const checks = checksMap.get(placement);\n if (checks) {\n return checks.slice(0, i).every((check) => check);\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n break;\n }\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n}\n\n// eslint-disable-next-line import/no-unused-modules\nexport type FlipModifier = Modifier<'flip', Options>;\nexport default ({\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: { _skip: false },\n}: FlipModifier);\n","// @flow\nimport { max as mathMax, min as mathMin } from './math';\n\nexport function within(min: number, value: number, max: number): number {\n return mathMax(min, mathMin(value, max));\n}\n\nexport function withinMaxClamp(min: number, value: number, max: number) {\n const v = within(min, value, max);\n return v > max ? max : v;\n}\n","// @flow\nimport { top, left, right, bottom, start } from '../enums';\nimport type { Placement, Boundary, RootBoundary } from '../enums';\nimport type { Rect, ModifierArguments, Modifier, Padding } from '../types';\nimport getBasePlacement from '../utils/getBasePlacement';\nimport getMainAxisFromPlacement from '../utils/getMainAxisFromPlacement';\nimport getAltAxis from '../utils/getAltAxis';\nimport { within, withinMaxClamp } from '../utils/within';\nimport getLayoutRect from '../dom-utils/getLayoutRect';\nimport getOffsetParent from '../dom-utils/getOffsetParent';\nimport detectOverflow from '../utils/detectOverflow';\nimport getVariation from '../utils/getVariation';\nimport getFreshSideObject from '../utils/getFreshSideObject';\nimport { min as mathMin, max as mathMax } from '../utils/math';\n\ntype TetherOffset =\n | (({\n popper: Rect,\n reference: Rect,\n placement: Placement,\n }) => number | { mainAxis: number, altAxis: number })\n | number\n | { mainAxis: number, altAxis: number };\n\n// eslint-disable-next-line import/no-unused-modules\nexport type Options = {\n /* Prevents boundaries overflow on the main axis */\n mainAxis: boolean,\n /* Prevents boundaries overflow on the alternate axis */\n altAxis: boolean,\n /* The area to check the popper is overflowing in */\n boundary: Boundary,\n /* If the popper is not overflowing the main area, fallback to this one */\n rootBoundary: RootBoundary,\n /* Use the reference's \"clippingParents\" boundary context */\n altBoundary: boolean,\n /**\n * Allows the popper to overflow from its boundaries to keep it near its\n * reference element\n */\n tether: boolean,\n /* Offsets when the `tether` option should activate */\n tetherOffset: TetherOffset,\n /* Sets a padding to the provided boundary */\n padding: Padding,\n};\n\nfunction preventOverflow({ state, options, name }: ModifierArguments) {\n const {\n mainAxis: checkMainAxis = true,\n altAxis: checkAltAxis = false,\n boundary,\n rootBoundary,\n altBoundary,\n padding,\n tether = true,\n tetherOffset = 0,\n } = options;\n\n const overflow = detectOverflow(state, {\n boundary,\n rootBoundary,\n padding,\n altBoundary,\n });\n const basePlacement = getBasePlacement(state.placement);\n const variation = getVariation(state.placement);\n const isBasePlacement = !variation;\n const mainAxis = getMainAxisFromPlacement(basePlacement);\n const altAxis = getAltAxis(mainAxis);\n const popperOffsets = state.modifiersData.popperOffsets;\n const referenceRect = state.rects.reference;\n const popperRect = state.rects.popper;\n const tetherOffsetValue =\n typeof tetherOffset === 'function'\n ? tetherOffset({\n ...state.rects,\n placement: state.placement,\n })\n : tetherOffset;\n const normalizedTetherOffsetValue =\n typeof tetherOffsetValue === 'number'\n ? { mainAxis: tetherOffsetValue, altAxis: tetherOffsetValue }\n : { mainAxis: 0, altAxis: 0, ...tetherOffsetValue };\n const offsetModifierState = state.modifiersData.offset\n ? state.modifiersData.offset[state.placement]\n : null;\n\n const data = { x: 0, y: 0 };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n const mainSide = mainAxis === 'y' ? top : left;\n const altSide = mainAxis === 'y' ? bottom : right;\n const len = mainAxis === 'y' ? 'height' : 'width';\n const offset = popperOffsets[mainAxis];\n\n const min = offset + overflow[mainSide];\n const max = offset - overflow[altSide];\n\n const additive = tether ? -popperRect[len] / 2 : 0;\n\n const minLen = variation === start ? referenceRect[len] : popperRect[len];\n const maxLen = variation === start ? -popperRect[len] : -referenceRect[len];\n\n // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n const arrowElement = state.elements.arrow;\n const arrowRect =\n tether && arrowElement\n ? getLayoutRect(arrowElement)\n : { width: 0, height: 0 };\n const arrowPaddingObject = state.modifiersData['arrow#persistent']\n ? state.modifiersData['arrow#persistent'].padding\n : getFreshSideObject();\n const arrowPaddingMin = arrowPaddingObject[mainSide];\n const arrowPaddingMax = arrowPaddingObject[altSide];\n\n // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n const arrowLen = within(0, referenceRect[len], arrowRect[len]);\n\n const minOffset = isBasePlacement\n ? referenceRect[len] / 2 -\n additive -\n arrowLen -\n arrowPaddingMin -\n normalizedTetherOffsetValue.mainAxis\n : minLen -\n arrowLen -\n arrowPaddingMin -\n normalizedTetherOffsetValue.mainAxis;\n const maxOffset = isBasePlacement\n ? -referenceRect[len] / 2 +\n additive +\n arrowLen +\n arrowPaddingMax +\n normalizedTetherOffsetValue.mainAxis\n : maxLen +\n arrowLen +\n arrowPaddingMax +\n normalizedTetherOffsetValue.mainAxis;\n\n const arrowOffsetParent =\n state.elements.arrow && getOffsetParent(state.elements.arrow);\n const clientOffset = arrowOffsetParent\n ? mainAxis === 'y'\n ? arrowOffsetParent.clientTop || 0\n : arrowOffsetParent.clientLeft || 0\n : 0;\n\n const offsetModifierValue = offsetModifierState?.[mainAxis] ?? 0;\n const tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n const tetherMax = offset + maxOffset - offsetModifierValue;\n\n const preventedOffset = within(\n tether ? mathMin(min, tetherMin) : min,\n offset,\n tether ? mathMax(max, tetherMax) : max\n );\n\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n const mainSide = mainAxis === 'x' ? top : left;\n const altSide = mainAxis === 'x' ? bottom : right;\n const offset = popperOffsets[altAxis];\n\n const len = altAxis === 'y' ? 'height' : 'width';\n\n const min = offset + overflow[mainSide];\n const max = offset - overflow[altSide];\n\n const isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n const offsetModifierValue = offsetModifierState?.[altAxis] ?? 0;\n const tetherMin = isOriginSide\n ? min\n : offset -\n referenceRect[len] -\n popperRect[len] -\n offsetModifierValue +\n normalizedTetherOffsetValue.altAxis;\n const tetherMax = isOriginSide\n ? offset +\n referenceRect[len] +\n popperRect[len] -\n offsetModifierValue -\n normalizedTetherOffsetValue.altAxis\n : max;\n\n const preventedOffset =\n tether && isOriginSide\n ? withinMaxClamp(tetherMin, offset, tetherMax)\n : within(tether ? tetherMin : min, offset, tether ? tetherMax : max);\n\n popperOffsets[altAxis] = preventedOffset;\n data[altAxis] = preventedOffset - offset;\n }\n\n state.modifiersData[name] = data;\n}\n\n// eslint-disable-next-line import/no-unused-modules\nexport type PreventOverflowModifier = Modifier<'preventOverflow', Options>;\nexport default ({\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset'],\n}: PreventOverflowModifier);\n","// @flow\n\nexport default function getAltAxis(axis: 'x' | 'y'): 'x' | 'y' {\n return axis === 'x' ? 'y' : 'x';\n}\n","// @flow\nimport type { Modifier, ModifierArguments, Padding, Rect } from '../types';\nimport type { Placement } from '../enums';\nimport getBasePlacement from '../utils/getBasePlacement';\nimport getLayoutRect from '../dom-utils/getLayoutRect';\nimport contains from '../dom-utils/contains';\nimport getOffsetParent from '../dom-utils/getOffsetParent';\nimport getMainAxisFromPlacement from '../utils/getMainAxisFromPlacement';\nimport { within } from '../utils/within';\nimport mergePaddingObject from '../utils/mergePaddingObject';\nimport expandToHashMap from '../utils/expandToHashMap';\nimport { left, right, basePlacements, top, bottom } from '../enums';\n\n// eslint-disable-next-line import/no-unused-modules\nexport type Options = {\n element: HTMLElement | string | null,\n padding:\n | Padding\n | (({|\n popper: Rect,\n reference: Rect,\n placement: Placement,\n |}) => Padding),\n};\n\nconst toPaddingObject = (padding, state) => {\n padding =\n typeof padding === 'function'\n ? padding({ ...state.rects, placement: state.placement })\n : padding;\n\n return mergePaddingObject(\n typeof padding !== 'number'\n ? padding\n : expandToHashMap(padding, basePlacements)\n );\n};\n\nfunction arrow({ state, name, options }: ModifierArguments) {\n const arrowElement = state.elements.arrow;\n const popperOffsets = state.modifiersData.popperOffsets;\n const basePlacement = getBasePlacement(state.placement);\n const axis = getMainAxisFromPlacement(basePlacement);\n const isVertical = [left, right].indexOf(basePlacement) >= 0;\n const len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n const paddingObject = toPaddingObject(options.padding, state);\n const arrowRect = getLayoutRect(arrowElement);\n const minProp = axis === 'y' ? top : left;\n const maxProp = axis === 'y' ? bottom : right;\n\n const endDiff =\n state.rects.reference[len] +\n state.rects.reference[axis] -\n popperOffsets[axis] -\n state.rects.popper[len];\n const startDiff = popperOffsets[axis] - state.rects.reference[axis];\n\n const arrowOffsetParent = getOffsetParent(arrowElement);\n const clientSize = arrowOffsetParent\n ? axis === 'y'\n ? arrowOffsetParent.clientHeight || 0\n : arrowOffsetParent.clientWidth || 0\n : 0;\n\n const centerToReference = endDiff / 2 - startDiff / 2;\n\n // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n const min = paddingObject[minProp];\n const max = clientSize - arrowRect[len] - paddingObject[maxProp];\n const center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n const offset = within(min, center, max);\n\n // Prevents breaking syntax highlighting...\n const axisProp: string = axis;\n state.modifiersData[name] = {\n [axisProp]: offset,\n centerOffset: offset - center,\n };\n}\n\nfunction effect({ state, options }: ModifierArguments) {\n let { element: arrowElement = '[data-popper-arrow]' } = options;\n\n if (arrowElement == null) {\n return;\n }\n\n // CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n return;\n }\n\n state.elements.arrow = arrowElement;\n}\n\n// eslint-disable-next-line import/no-unused-modules\nexport type ArrowModifier = Modifier<'arrow', Options>;\nexport default ({\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow'],\n}: ArrowModifier);\n","// @flow\nimport type {\n ModifierArguments,\n Modifier,\n Rect,\n SideObject,\n Offsets,\n} from '../types';\nimport { top, bottom, left, right } from '../enums';\nimport detectOverflow from '../utils/detectOverflow';\n\nfunction getSideOffsets(\n overflow: SideObject,\n rect: Rect,\n preventedOffsets: Offsets = { x: 0, y: 0 }\n): SideObject {\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x,\n };\n}\n\nfunction isAnySideFullyClipped(overflow: SideObject): boolean {\n return [top, right, bottom, left].some((side) => overflow[side] >= 0);\n}\n\nfunction hide({ state, name }: ModifierArguments<{||}>) {\n const referenceRect = state.rects.reference;\n const popperRect = state.rects.popper;\n const preventedOffsets = state.modifiersData.preventOverflow;\n\n const referenceOverflow = detectOverflow(state, {\n elementContext: 'reference',\n });\n const popperAltOverflow = detectOverflow(state, {\n altBoundary: true,\n });\n\n const referenceClippingOffsets = getSideOffsets(\n referenceOverflow,\n referenceRect\n );\n const popperEscapeOffsets = getSideOffsets(\n popperAltOverflow,\n popperRect,\n preventedOffsets\n );\n\n const isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n const hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n\n state.modifiersData[name] = {\n referenceClippingOffsets,\n popperEscapeOffsets,\n isReferenceHidden,\n hasPopperEscaped,\n };\n\n state.attributes.popper = {\n ...state.attributes.popper,\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped,\n };\n}\n\n// eslint-disable-next-line import/no-unused-modules\nexport type HideModifier = Modifier<'hide', {||}>;\nexport default ({\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide,\n}: HideModifier);\n","// @flow\nimport { popperGenerator, detectOverflow } from './createPopper';\n\nimport eventListeners from './modifiers/eventListeners';\nimport popperOffsets from './modifiers/popperOffsets';\nimport computeStyles from './modifiers/computeStyles';\nimport applyStyles from './modifiers/applyStyles';\n\nexport type * from './types';\n\nconst defaultModifiers = [\n eventListeners,\n popperOffsets,\n computeStyles,\n applyStyles,\n];\n\nconst createPopper = popperGenerator({ defaultModifiers });\n\n// eslint-disable-next-line import/no-unused-modules\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow };\n","// @flow\nimport { popperGenerator, detectOverflow } from './createPopper';\n\nimport eventListeners from './modifiers/eventListeners';\nimport popperOffsets from './modifiers/popperOffsets';\nimport computeStyles from './modifiers/computeStyles';\nimport applyStyles from './modifiers/applyStyles';\nimport offset from './modifiers/offset';\nimport flip from './modifiers/flip';\nimport preventOverflow from './modifiers/preventOverflow';\nimport arrow from './modifiers/arrow';\nimport hide from './modifiers/hide';\n\nexport type * from './types';\n\nconst defaultModifiers = [\n eventListeners,\n popperOffsets,\n computeStyles,\n applyStyles,\n offset,\n flip,\n preventOverflow,\n arrow,\n hide,\n];\n\nconst createPopper = popperGenerator({ defaultModifiers });\n\n// eslint-disable-next-line import/no-unused-modules\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow };\n// eslint-disable-next-line import/no-unused-modules\nexport { createPopper as createPopperLite } from './popper-lite';\n// eslint-disable-next-line import/no-unused-modules\nexport * from './modifiers';\n"],"names":["getWindow","node","window","toString","ownerDocument","defaultView","isElement","Element","isHTMLElement","HTMLElement","isShadowRoot","ShadowRoot","max","Math","min","round","getUAString","uaData","navigator","userAgentData","brands","Array","isArray","map","item","brand","version","join","userAgent","isLayoutViewport","test","getBoundingClientRect","element","includeScale","isFixedStrategy","clientRect","scaleX","scaleY","offsetWidth","width","offsetHeight","height","visualViewport","addVisualOffsets","x","left","offsetLeft","y","top","offsetTop","right","bottom","getWindowScroll","win","scrollLeft","pageXOffset","scrollTop","pageYOffset","getNodeName","nodeName","toLowerCase","getDocumentElement","document","documentElement","getWindowScrollBarX","getComputedStyle","isScrollParent","overflow","overflowX","overflowY","getCompositeRect","elementOrVirtualElement","offsetParent","isFixed","isOffsetParentAnElement","offsetParentIsScaled","rect","isElementScaled","scroll","offsets","clientLeft","clientTop","getLayoutRect","abs","getParentNode","assignedSlot","parentNode","host","getScrollParent","indexOf","body","listScrollParents","list","scrollParent","isBody","_element$ownerDocumen","target","concat","updatedList","isTableElement","getTrueOffsetParent","position","getOffsetParent","isFirefox","currentNode","css","transform","perspective","contain","willChange","filter","getContainingBlock","auto","basePlacements","start","end","viewport","popper","variationPlacements","reduce","acc","placement","placements","modifierPhases","order","modifiers","Map","visited","Set","result","sort","modifier","add","name","requires","requiresIfExists","forEach","dep","has","depModifier","get","push","set","contains","parent","child","rootNode","getRootNode","next","isSameNode","rectToClientRect","getClientRectFromMixedType","clippingParent","strategy","html","clientWidth","clientHeight","layoutViewport","getViewportRect","getInnerBoundingClientRect","winScroll","scrollWidth","scrollHeight","direction","getDocumentRect","getClippingRect","boundary","rootBoundary","mainClippingParents","clippingParents","clipperElement","getClippingParents","firstClippingParent","clippingRect","accRect","getBasePlacement","split","getVariation","getMainAxisFromPlacement","computeOffsets","reference","basePlacement","variation","commonX","commonY","mainAxis","len","mergePaddingObject","paddingObject","expandToHashMap","value","keys","hashMap","key","detectOverflow","state","options","elementContext","altBoundary","padding","altContext","popperRect","rects","elements","clippingClientRect","contextElement","referenceClientRect","popperOffsets","popperClientRect","elementClientRect","overflowOffsets","offsetData","modifiersData","offset","Object","multiply","axis","DEFAULT_OPTIONS","areValidElements","args","some","popperGenerator","generatorOptions","defaultModifiers","defaultOptions","fn","pending","orderedModifiers","attributes","styles","effectCleanupFns","isDestroyed","instance","setOptions","setOptionsAction","cleanupModifierEffects","scrollParents","merged","phase","orderModifiers","current","existing","data","m","enabled","effect","cleanupFn","noopFn","update","forceUpdate","reset","index","length","Promise","resolve","then","undefined","destroy","onFirstUpdate","passive","resize","addEventListener","removeEventListener","unsetSides","mapToStyles","gpuAcceleration","adaptive","roundOffsets","hasX","hasOwnProperty","hasY","sideX","sideY","heightProp","widthProp","commonStyles","dpr","devicePixelRatio","roundOffsetsByDPR","arrow","style","assign","removeAttribute","setAttribute","initialStyles","margin","property","attribute","invertDistance","skidding","distance","distanceAndSkiddingToXY","hash","getOppositePlacement","replace","matched","getOppositeVariationPlacement","computeAutoPlacement","flipVariations","allowedAutoPlacements","allPlacements","allowedPlacements","overflows","a","b","_skip","checkMainAxis","altAxis","checkAltAxis","specifiedFallbackPlacements","fallbackPlacements","preferredPlacement","oppositePlacement","getExpandedFallbackPlacements","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","i","isStartVariation","isVertical","mainVariationSide","altVariationSide","checks","every","check","fittingPlacement","find","slice","within","mathMax","mathMin","tether","tetherOffset","isBasePlacement","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","mainSide","altSide","additive","minLen","maxLen","arrowElement","arrowRect","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","arrowOffsetParent","clientOffset","offsetModifierValue","tetherMax","preventedOffset","isOriginSide","tetherMin","v","withinMaxClamp","toPaddingObject","minProp","maxProp","endDiff","startDiff","clientSize","centerToReference","center","axisProp","centerOffset","querySelector","getSideOffsets","preventedOffsets","isAnySideFullyClipped","side","preventOverflow","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","createPopper","eventListeners","computeStyles","applyStyles","flip","hide"],"mappings":"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"}
\ No newline at end of file
diff --git a/src/EventHub.Admin.Web/wwwroot/libs/abp/core/abp.css b/src/EventHub.Admin.Web/wwwroot/libs/abp/core/abp.css
new file mode 100644
index 0000000..ddf9cae
--- /dev/null
+++ b/src/EventHub.Admin.Web/wwwroot/libs/abp/core/abp.css
@@ -0,0 +1,56 @@
+@keyframes spin {
+ 0% {
+ transform: translateZ(0) rotate(0deg);
+ }
+
+ 100% {
+ transform: translateZ(0) rotate(360deg);
+ }
+}
+
+.abp-block-area {
+ position: fixed;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ z-index: 102;
+ background-color: #fff;
+ opacity: .8;
+ transition: opacity .25s;
+}
+
+ .abp-block-area.abp-block-area-disappearing {
+ opacity: 0;
+ }
+
+ .abp-block-area.abp-block-area-busy:after {
+ content: attr(data-text);
+ display: block;
+ max-width: 125px;
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ font-size: 20px;
+ font-family: sans-serif;
+ color: #343a40;
+ text-align: center;
+ text-transform: uppercase;
+ }
+
+ .abp-block-area.abp-block-area-busy:before {
+ content: "";
+ display: block;
+ width: 150px;
+ height: 150px;
+ border-radius: 50%;
+ border-width: 2px;
+ border-style: solid;
+ border-color: transparent #228ae6 #228ae6 #228ae6;
+ position: absolute;
+ top: calc(50% - 75px);
+ left: calc(50% - 75px);
+ will-change: transform;
+ animation: spin .75s infinite ease-in-out;
+ }
diff --git a/src/EventHub.Admin.Web/wwwroot/libs/abp/core/abp.js b/src/EventHub.Admin.Web/wwwroot/libs/abp/core/abp.js
new file mode 100644
index 0000000..5ad66ca
--- /dev/null
+++ b/src/EventHub.Admin.Web/wwwroot/libs/abp/core/abp.js
@@ -0,0 +1,882 @@
+var abp = abp || {};
+(function () {
+
+ /* Application paths *****************************************/
+
+ //Current application root path (including virtual directory if exists).
+ var baseElement = document.querySelector('base');
+ var baseHref = baseElement ? baseElement.getAttribute('href') : null;
+ abp.appPath = baseHref || abp.appPath || '/';
+
+ abp.pageLoadTime = new Date();
+
+ //Converts given path to absolute path using abp.appPath variable.
+ abp.toAbsAppPath = function (path) {
+ if (path.indexOf('/') == 0) {
+ path = path.substring(1);
+ }
+
+ return abp.appPath + path;
+ };
+
+ /* LOGGING ***************************************************/
+ //Implements Logging API that provides secure & controlled usage of console.log
+
+ abp.log = abp.log || {};
+
+ abp.log.levels = {
+ DEBUG: 1,
+ INFO: 2,
+ WARN: 3,
+ ERROR: 4,
+ FATAL: 5
+ };
+
+ abp.log.level = abp.log.levels.DEBUG;
+
+ abp.log.log = function (logObject, logLevel) {
+ if (!window.console || !window.console.log) {
+ return;
+ }
+
+ if (logLevel != undefined && logLevel < abp.log.level) {
+ return;
+ }
+
+ console.log(logObject);
+ };
+
+ abp.log.debug = function (logObject) {
+ abp.log.log("DEBUG: ", abp.log.levels.DEBUG);
+ abp.log.log(logObject, abp.log.levels.DEBUG);
+ };
+
+ abp.log.info = function (logObject) {
+ abp.log.log("INFO: ", abp.log.levels.INFO);
+ abp.log.log(logObject, abp.log.levels.INFO);
+ };
+
+ abp.log.warn = function (logObject) {
+ abp.log.log("WARN: ", abp.log.levels.WARN);
+ abp.log.log(logObject, abp.log.levels.WARN);
+ };
+
+ abp.log.error = function (logObject) {
+ abp.log.log("ERROR: ", abp.log.levels.ERROR);
+ abp.log.log(logObject, abp.log.levels.ERROR);
+ };
+
+ abp.log.fatal = function (logObject) {
+ abp.log.log("FATAL: ", abp.log.levels.FATAL);
+ abp.log.log(logObject, abp.log.levels.FATAL);
+ };
+
+ /* LOCALIZATION ***********************************************/
+
+ abp.localization = abp.localization || {};
+ abp.localization.internal = abp.localization.internal || {};
+ abp.localization.values = abp.localization.values || {};
+ abp.localization.resources = abp.localization.resources || {};
+
+ abp.localization.internal.getResource = function (resourceName) {
+ var resource = abp.localization.resources[resourceName];
+ if (resource) {
+ return resource;
+ }
+
+ var legacySource = abp.localization.values[resourceName];
+ if (legacySource) {
+ return {
+ texts: abp.localization.values[resourceName],
+ baseResources: []
+ };
+ }
+
+ abp.log.warn('Could not find localization source: ' + resourceName);
+ return null;
+ };
+
+ abp.localization.internal.localize = function (key, sourceName) {
+ var resource = abp.localization.internal.getResource(sourceName);
+ if (!resource){
+ return {
+ value: key,
+ found: false
+ };
+ }
+
+ var value = resource.texts[key];
+ if (value === undefined) {
+ for (var i = 0; i < resource.baseResources.length; i++){
+ var basedArguments = Array.prototype.slice.call(arguments, 0);
+ basedArguments[1] = resource.baseResources[i];
+
+ var result = abp.localization.internal.localize.apply(this, basedArguments);
+ if (result.found){
+ return result;
+ }
+ }
+
+ return {
+ value: key,
+ found: false
+ };
+ }
+
+ var copiedArguments = Array.prototype.slice.call(arguments, 0);
+ copiedArguments.splice(1, 1);
+ copiedArguments[0] = value;
+
+ return {
+ value: abp.utils.formatString.apply(this, copiedArguments),
+ found: true
+ };
+ };
+
+ abp.localization.localize = function (key, sourceName) {
+ if (sourceName === '_') { //A convention to suppress the localization
+ return key;
+ }
+
+ if (sourceName) {
+ return abp.localization.internal.localize.apply(this, arguments).value;
+ }
+
+ if (!abp.localization.defaultResourceName) {
+ abp.log.warn('Localization source name is not specified and the defaultResourceName was not defined!');
+ return key;
+ }
+
+ var copiedArguments = Array.prototype.slice.call(arguments, 0);
+ copiedArguments.splice(1, 1, abp.localization.defaultResourceName);
+
+ return abp.localization.internal.localize.apply(this, copiedArguments).value;
+ };
+
+ abp.localization.isLocalized = function (key, sourceName) {
+ if (sourceName === '_') { //A convention to suppress the localization
+ return true;
+ }
+
+ sourceName = sourceName || abp.localization.defaultResourceName;
+ if (!sourceName) {
+ return false;
+ }
+
+ return abp.localization.internal.localize(key, sourceName).found;
+ };
+
+ abp.localization.getResource = function (name) {
+ return function () {
+ var copiedArguments = Array.prototype.slice.call(arguments, 0);
+ copiedArguments.splice(1, 0, name);
+ return abp.localization.localize.apply(this, copiedArguments);
+ };
+ };
+
+ abp.localization.defaultResourceName = undefined;
+ abp.localization.currentCulture = {
+ cultureName: undefined
+ };
+
+ var getMapValue = function (packageMaps, packageName, language) {
+ language = language || abp.localization.currentCulture.name;
+ if (!packageMaps || !packageName || !language) {
+ return language;
+ }
+
+ var packageMap = packageMaps[packageName];
+ if (!packageMap) {
+ return language;
+ }
+
+ for (var i = 0; i < packageMap.length; i++) {
+ var map = packageMap[i];
+ if (map.name === language){
+ return map.value;
+ }
+ }
+
+ return language;
+ };
+
+ abp.localization.getLanguagesMap = function (packageName, language) {
+ return getMapValue(abp.localization.languagesMap, packageName, language);
+ };
+
+ abp.localization.getLanguageFilesMap = function (packageName, language) {
+ return getMapValue(abp.localization.languageFilesMap, packageName, language);
+ };
+
+ /* AUTHORIZATION **********************************************/
+
+ abp.auth = abp.auth || {};
+
+ abp.auth.grantedPolicies = abp.auth.grantedPolicies || {};
+
+ abp.auth.isGranted = function (policyName) {
+ return abp.auth.grantedPolicies[policyName] != undefined;
+ };
+
+ abp.auth.isAnyGranted = function () {
+ if (!arguments || arguments.length <= 0) {
+ return true;
+ }
+
+ for (var i = 0; i < arguments.length; i++) {
+ if (abp.auth.isGranted(arguments[i])) {
+ return true;
+ }
+ }
+
+ return false;
+ };
+
+ abp.auth.areAllGranted = function () {
+ if (!arguments || arguments.length <= 0) {
+ return true;
+ }
+
+ for (var i = 0; i < arguments.length; i++) {
+ if (!abp.auth.isGranted(arguments[i])) {
+ return false;
+ }
+ }
+
+ return true;
+ };
+
+ abp.auth.tokenCookieName = 'Abp.AuthToken';
+
+ abp.auth.setToken = function (authToken, expireDate) {
+ abp.utils.setCookieValue(abp.auth.tokenCookieName, authToken, expireDate, abp.appPath, abp.domain);
+ };
+
+ abp.auth.getToken = function () {
+ return abp.utils.getCookieValue(abp.auth.tokenCookieName);
+ }
+
+ abp.auth.clearToken = function () {
+ abp.auth.setToken();
+ }
+
+ /* SETTINGS *************************************************/
+
+ abp.setting = abp.setting || {};
+
+ abp.setting.values = abp.setting.values || {};
+
+ abp.setting.get = function (name) {
+ return abp.setting.values[name];
+ };
+
+ abp.setting.getBoolean = function (name) {
+ var value = abp.setting.get(name);
+ return value == 'true' || value == 'True';
+ };
+
+ abp.setting.getInt = function (name) {
+ return parseInt(abp.setting.values[name]);
+ };
+
+ /* NOTIFICATION *********************************************/
+ //Defines Notification API, not implements it
+
+ abp.notify = abp.notify || {};
+
+ abp.notify.success = function (message, title, options) {
+ abp.log.warn('abp.notify.success is not implemented!');
+ };
+
+ abp.notify.info = function (message, title, options) {
+ abp.log.warn('abp.notify.info is not implemented!');
+ };
+
+ abp.notify.warn = function (message, title, options) {
+ abp.log.warn('abp.notify.warn is not implemented!');
+ };
+
+ abp.notify.error = function (message, title, options) {
+ abp.log.warn('abp.notify.error is not implemented!');
+ };
+
+ /* MESSAGE **************************************************/
+ //Defines Message API, not implements it
+
+ abp.message = abp.message || {};
+
+ abp.message._showMessage = function (message, title) {
+ alert((title || '') + ' ' + message);
+ };
+
+ abp.message.info = function (message, title) {
+ abp.log.warn('abp.message.info is not implemented!');
+ return abp.message._showMessage(message, title);
+ };
+
+ abp.message.success = function (message, title) {
+ abp.log.warn('abp.message.success is not implemented!');
+ return abp.message._showMessage(message, title);
+ };
+
+ abp.message.warn = function (message, title) {
+ abp.log.warn('abp.message.warn is not implemented!');
+ return abp.message._showMessage(message, title);
+ };
+
+ abp.message.error = function (message, title) {
+ abp.log.warn('abp.message.error is not implemented!');
+ return abp.message._showMessage(message, title);
+ };
+
+ abp.message.confirm = function (message, titleOrCallback, callback) {
+ abp.log.warn('abp.message.confirm is not properly implemented!');
+
+ if (titleOrCallback && !(typeof titleOrCallback == 'string')) {
+ callback = titleOrCallback;
+ }
+
+ var result = confirm(message);
+ callback && callback(result);
+ };
+
+ abp.message.prompt = function (message, titleOrOptionsOrCallback, callback) {
+ abp.log.warn('abp.message.prompt is not properly implemented!');
+
+ if (titleOrOptionsOrCallback && !(typeof titleOrOptionsOrCallback == 'string')) {
+ callback = titleOrOptionsOrCallback;
+ }
+
+ var result = prompt(message);
+ callback && callback(result);
+ };
+
+ /* UI *******************************************************/
+
+ abp.ui = abp.ui || {};
+
+ /* UI BLOCK */
+ //Defines UI Block API and implements basically
+
+ var $abpBlockArea = document.createElement('div');
+ $abpBlockArea.classList.add('abp-block-area');
+
+ /* opts: { //Can be an object with options or a string for query a selector
+ * elm: a query selector (optional - default: document.body)
+ * busy: boolean (optional - default: false)
+ * promise: A promise with always or finally handler (optional - auto unblocks the ui if provided)
+ * }
+ */
+ abp.ui.block = function (opts) {
+ if (!opts) {
+ opts = {};
+ } else if (typeof opts == 'string') {
+ opts = {
+ elm: opts
+ };
+ }
+
+ var $elm = document.querySelector(opts.elm) || document.body;
+
+ if (opts.busy) {
+ $abpBlockArea.classList.add('abp-block-area-busy');
+ } else {
+ $abpBlockArea.classList.remove('abp-block-area-busy');
+ }
+
+ if (document.querySelector(opts.elm)) {
+ $abpBlockArea.style.position = 'absolute';
+ } else {
+ $abpBlockArea.style.position = 'fixed';
+ }
+
+ $elm.appendChild($abpBlockArea);
+
+ if (opts.promise) {
+ if (opts.promise.always) { //jQuery.Deferred style
+ opts.promise.always(function () {
+ abp.ui.unblock({
+ $elm: opts.elm
+ });
+ });
+ } else if (opts.promise['finally']) { //Q style
+ opts.promise['finally'](function () {
+ abp.ui.unblock({
+ $elm: opts.elm
+ });
+ });
+ }
+ }
+ };
+
+ /* opts: {
+ *
+ * }
+ */
+ abp.ui.unblock = function (opts) {
+ var element = document.querySelector('.abp-block-area');
+ if (element) {
+ element.classList.add('abp-block-area-disappearing');
+ setTimeout(function () {
+ if (element) {
+ element.classList.remove('abp-block-area-disappearing');
+ if (element.parentElement) {
+ element.parentElement.removeChild(element);
+ }
+ }
+ }, 250);
+ }
+ };
+
+ /* UI BUSY */
+ //Defines UI Busy API, not implements it
+
+ abp.ui.setBusy = function (opts) {
+ if (!opts) {
+ opts = {
+ busy: true
+ };
+ } else if (typeof opts == 'string') {
+ opts = {
+ elm: opts,
+ busy: true
+ };
+ }
+
+ abp.ui.block(opts);
+ };
+
+ abp.ui.clearBusy = function (opts) {
+ abp.ui.unblock(opts);
+ };
+
+ /* SIMPLE EVENT BUS *****************************************/
+
+ abp.event = (function () {
+
+ var _callbacks = {};
+
+ var on = function (eventName, callback) {
+ if (!_callbacks[eventName]) {
+ _callbacks[eventName] = [];
+ }
+
+ _callbacks[eventName].push(callback);
+ };
+
+ var off = function (eventName, callback) {
+ var callbacks = _callbacks[eventName];
+ if (!callbacks) {
+ return;
+ }
+
+ var index = -1;
+ for (var i = 0; i < callbacks.length; i++) {
+ if (callbacks[i] === callback) {
+ index = i;
+ break;
+ }
+ }
+
+ if (index < 0) {
+ return;
+ }
+
+ _callbacks[eventName].splice(index, 1);
+ };
+
+ var trigger = function (eventName) {
+ var callbacks = _callbacks[eventName];
+ if (!callbacks || !callbacks.length) {
+ return;
+ }
+
+ var args = Array.prototype.slice.call(arguments, 1);
+ for (var i = 0; i < callbacks.length; i++) {
+ try {
+ callbacks[i].apply(this, args);
+ } catch(e) {
+ console.error(e);
+ }
+ }
+ };
+
+ // Public interface ///////////////////////////////////////////////////
+
+ return {
+ on: on,
+ off: off,
+ trigger: trigger
+ };
+ })();
+
+
+ /* UTILS ***************************************************/
+
+ abp.utils = abp.utils || {};
+
+ /* Creates a name namespace.
+ * Example:
+ * var taskService = abp.utils.createNamespace(abp, 'services.task');
+ * taskService will be equal to abp.services.task
+ * first argument (root) must be defined first
+ ************************************************************/
+ abp.utils.createNamespace = function (root, ns) {
+ var parts = ns.split('.');
+ for (var i = 0; i < parts.length; i++) {
+ if (typeof root[parts[i]] == 'undefined') {
+ root[parts[i]] = {};
+ }
+
+ root = root[parts[i]];
+ }
+
+ return root;
+ };
+
+ /* Find and replaces a string (search) to another string (replacement) in
+ * given string (str).
+ * Example:
+ * abp.utils.replaceAll('This is a test string', 'is', 'X') = 'ThX X a test string'
+ ************************************************************/
+ abp.utils.replaceAll = function (str, search, replacement) {
+ var fix = search.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
+ return str.replace(new RegExp(fix, 'g'), replacement);
+ };
+
+ /* Formats a string just like string.format in C#.
+ * Example:
+ * abp.utils.formatString('Hello {0}','Tuana') = 'Hello Tuana'
+ ************************************************************/
+ abp.utils.formatString = function () {
+ if (arguments.length < 1) {
+ return null;
+ }
+
+ var str = arguments[0];
+
+ for (var i = 1; i < arguments.length; i++) {
+ var placeHolder = '{' + (i - 1) + '}';
+ str = abp.utils.replaceAll(str, placeHolder, arguments[i]);
+ }
+
+ return str;
+ };
+
+ abp.utils.toPascalCase = function (str) {
+ if (!str || !str.length) {
+ return str;
+ }
+
+ if (str.length === 1) {
+ return str.charAt(0).toUpperCase();
+ }
+
+ return str.charAt(0).toUpperCase() + str.substr(1);
+ }
+
+ abp.utils.toCamelCase = function (str) {
+ if (!str || !str.length) {
+ return str;
+ }
+
+ if (str.length === 1) {
+ return str.charAt(0).toLowerCase();
+ }
+
+ return str.charAt(0).toLowerCase() + str.substr(1);
+ }
+
+ abp.utils.truncateString = function (str, maxLength) {
+ if (!str || !str.length || str.length <= maxLength) {
+ return str;
+ }
+
+ return str.substr(0, maxLength);
+ };
+
+ abp.utils.truncateStringWithPostfix = function (str, maxLength, postfix) {
+ postfix = postfix || '...';
+
+ if (!str || !str.length || str.length <= maxLength) {
+ return str;
+ }
+
+ if (maxLength <= postfix.length) {
+ return postfix.substr(0, maxLength);
+ }
+
+ return str.substr(0, maxLength - postfix.length) + postfix;
+ };
+
+ abp.utils.isFunction = function (obj) {
+ return !!(obj && obj.constructor && obj.call && obj.apply);
+ };
+
+ /**
+ * parameterInfos should be an array of { name, value } objects
+ * where name is query string parameter name and value is it's value.
+ * includeQuestionMark is true by default.
+ */
+ abp.utils.buildQueryString = function (parameterInfos, includeQuestionMark) {
+ if (includeQuestionMark === undefined) {
+ includeQuestionMark = true;
+ }
+
+ var qs = '';
+
+ function addSeperator() {
+ if (!qs.length) {
+ if (includeQuestionMark) {
+ qs = qs + '?';
+ }
+ } else {
+ qs = qs + '&';
+ }
+ }
+
+ for (var i = 0; i < parameterInfos.length; ++i) {
+ var parameterInfo = parameterInfos[i];
+ if (parameterInfo.value === undefined) {
+ continue;
+ }
+
+ if (parameterInfo.value === null) {
+ parameterInfo.value = '';
+ }
+
+ addSeperator();
+
+ if (parameterInfo.value.toJSON && typeof parameterInfo.value.toJSON === "function") {
+ qs = qs + parameterInfo.name + '=' + encodeURIComponent(parameterInfo.value.toJSON());
+ } else if (Array.isArray(parameterInfo.value) && parameterInfo.value.length) {
+ for (var j = 0; j < parameterInfo.value.length; j++) {
+ if (j > 0) {
+ addSeperator();
+ }
+
+ qs = qs + parameterInfo.name + '[' + j + ']=' + encodeURIComponent(parameterInfo.value[j]);
+ }
+ } else {
+ qs = qs + parameterInfo.name + '=' + encodeURIComponent(parameterInfo.value);
+ }
+ }
+
+ return qs;
+ }
+
+ /**
+ * Sets a cookie value for given key.
+ * This is a simple implementation created to be used by ABP.
+ * Please use a complete cookie library if you need.
+ * @param {string} key
+ * @param {string} value
+ * @param {Date} expireDate (optional). If not specified the cookie will expire at the end of session.
+ * @param {string} path (optional)
+ */
+ abp.utils.setCookieValue = function (key, value, expireDate, path) {
+ var cookieValue = encodeURIComponent(key) + '=';
+
+ if (value) {
+ cookieValue = cookieValue + encodeURIComponent(value);
+ }
+
+ if (expireDate) {
+ cookieValue = cookieValue + "; expires=" + expireDate.toUTCString();
+ }
+
+ if (path) {
+ cookieValue = cookieValue + "; path=" + path;
+ }
+
+ document.cookie = cookieValue;
+ };
+
+ /**
+ * Gets a cookie with given key.
+ * This is a simple implementation created to be used by ABP.
+ * Please use a complete cookie library if you need.
+ * @param {string} key
+ * @returns {string} Cookie value or null
+ */
+ abp.utils.getCookieValue = function (key) {
+ var equalities = document.cookie.split('; ');
+ for (var i = 0; i < equalities.length; i++) {
+ if (!equalities[i]) {
+ continue;
+ }
+
+ var splitted = equalities[i].split('=');
+ if (splitted.length != 2) {
+ continue;
+ }
+
+ if (decodeURIComponent(splitted[0]) === key) {
+ return decodeURIComponent(splitted[1] || '');
+ }
+ }
+
+ return null;
+ };
+
+ /**
+ * Deletes cookie for given key.
+ * This is a simple implementation created to be used by ABP.
+ * Please use a complete cookie library if you need.
+ * @param {string} key
+ * @param {string} path (optional)
+ */
+ abp.utils.deleteCookie = function (key, path) {
+ var cookieValue = encodeURIComponent(key) + '=';
+
+ cookieValue = cookieValue + "; expires=" + (new Date(new Date().getTime() - 86400000)).toUTCString();
+
+ if (path) {
+ cookieValue = cookieValue + "; path=" + path;
+ }
+
+ document.cookie = cookieValue;
+ }
+
+ /**
+ * Escape HTML to help prevent XSS attacks.
+ */
+ abp.utils.htmlEscape = function (html) {
+ return typeof html === 'string' ? html.replace(/&/g, '&').replace(//g, '>').replace(/"/g, '"') : html;
+ }
+
+ /* SECURITY ***************************************/
+ abp.security = abp.security || {};
+ abp.security.antiForgery = abp.security.antiForgery || {};
+
+ abp.security.antiForgery.tokenCookieName = 'XSRF-TOKEN';
+ abp.security.antiForgery.tokenHeaderName = 'RequestVerificationToken';
+
+ abp.security.antiForgery.getToken = function () {
+ return abp.utils.getCookieValue(abp.security.antiForgery.tokenCookieName);
+ };
+
+ /* CLOCK *****************************************/
+ abp.clock = abp.clock || {};
+
+ abp.clock.kind = 'Unspecified';
+
+ abp.clock.supportsMultipleTimezone = function () {
+ return abp.clock.kind === 'Utc';
+ }
+
+ abp.clock.timeZone = function () {
+ return abp.setting.get('Abp.Timing.TimeZone') || abp.clock.browserTimeZone();
+ }
+
+ // Normalize Date object or date string to standard string format that will be sent to server
+ abp.clock.normalizeToString = function (date) {
+ if (!date) {
+ return date;
+ }
+
+ var dateObj = date instanceof Date ? date : new Date(date);
+ if (isNaN(dateObj)) {
+ return date;
+ }
+
+ function padZero(num) {
+ return num < 10 ? '0' + num : num;
+ }
+
+ var addZulu = false;
+ if (abp.clock.supportsMultipleTimezone()) {
+ var timeZone = abp.clock.timeZone();
+ var now = new Date();
+ var formattedDate = now.toLocaleString('en-US', { timeZone: timeZone, timeZoneName: 'longOffset' });
+ var match = formattedDate.match(/GMT([+-]\d+)/);
+ var targetOffsetHours = match ? parseInt(match[1], 10) : 0;
+ dateObj = new Date(dateObj.getTime() - (targetOffsetHours * 60 * 60 * 1000));
+ addZulu = true;
+ }
+
+ // yyyy-MM-DDTHH:mm:ss
+ return dateObj.getFullYear() + '-' +
+ padZero(dateObj.getMonth() + 1) + '-' +
+ padZero(dateObj.getDate()) + 'T' +
+ padZero(dateObj.getHours()) + ':' +
+ padZero(dateObj.getMinutes()) + ':' +
+ padZero(dateObj.getSeconds()) + (addZulu ? 'Z' : '');
+ };
+
+ // Default options for toLocaleString
+ abp.clock.toLocaleStringOptions = abp.clock.toLocaleStringOptions || {
+ "year": "numeric",
+ "month": "long",
+ "day": "numeric",
+ "hour": "numeric",
+ "minute": "numeric",
+ "second": "numeric"
+ };
+
+ // Normalize date string to locale date string that will be displayed to user
+ abp.clock.normalizeToLocaleString = function (dateString, options) {
+ if (!dateString) {
+ return dateString;
+ }
+
+ var date = new Date(dateString);
+ if (isNaN(date)) {
+ return dateString;
+ }
+
+ var culture = abp.localization.currentCulture.cultureName;
+ options = options || abp.clock.toLocaleStringOptions;
+ if (abp.clock.supportsMultipleTimezone()) {
+ var timezone = abp.clock.timeZone();
+ if (timezone) {
+ return date.toLocaleString(culture, Object.assign({}, options, { timeZone: timezone }));
+ }
+ }
+ return date.toLocaleString(culture, options);
+ }
+
+ abp.clock.browserTimeZone = function () {
+ return Intl.DateTimeFormat().resolvedOptions().timeZone;
+ }
+
+ abp.clock.trySetBrowserTimeZoneToCookie = true;
+
+ abp.clock.setBrowserTimeZoneToCookie = function () {
+ if (!abp.clock.trySetBrowserTimeZoneToCookie || !abp.clock.supportsMultipleTimezone()) {
+ return;
+ }
+
+ abp.utils.setCookieValue('__timezone', abp.clock.browserTimeZone(), new Date(new Date().setFullYear(new Date().getFullYear() + 1)), '/');
+ }
+
+ abp.event.on('abp.configurationInitialized', function () {
+ abp.clock.setBrowserTimeZoneToCookie();
+ });
+
+ /* FEATURES *************************************************/
+
+ abp.features = abp.features || {};
+
+ abp.features.values = abp.features.values || {};
+
+ abp.features.isEnabled = function(name){
+ var value = abp.features.get(name);
+ return value == 'true' || value == 'True';
+ }
+
+ abp.features.get = function (name) {
+ return abp.features.values[name];
+ };
+
+ /* GLOBAL FEATURES *************************************************/
+
+ abp.globalFeatures = abp.globalFeatures || {};
+
+ abp.globalFeatures.enabledFeatures = abp.globalFeatures.enabledFeatures || [];
+
+ abp.globalFeatures.isEnabled = function(name){
+ return abp.globalFeatures.enabledFeatures.indexOf(name) != -1;
+ }
+
+})();
diff --git a/src/EventHub.Admin.Web/wwwroot/libs/abp/jquery/abp.jquery.js b/src/EventHub.Admin.Web/wwwroot/libs/abp/jquery/abp.jquery.js
new file mode 100644
index 0000000..7dc3439
--- /dev/null
+++ b/src/EventHub.Admin.Web/wwwroot/libs/abp/jquery/abp.jquery.js
@@ -0,0 +1,411 @@
+var abp = abp || {};
+(function($) {
+
+ if (!$) {
+ throw "abp/jquery library requires the jquery library included to the page!";
+ }
+
+ // ABP CORE OVERRIDES /////////////////////////////////////////////////////
+
+ abp.message._showMessage = function (message, title) {
+ alert((title || '') + ' ' + message);
+
+ return $.Deferred(function ($dfd) {
+ $dfd.resolve();
+ });
+ };
+
+ abp.message.confirm = function (message, titleOrCallback, callback) {
+ if (titleOrCallback && !(typeof titleOrCallback == 'string')) {
+ callback = titleOrCallback;
+ }
+
+ var result = confirm(message);
+ callback && callback(result);
+
+ return $.Deferred(function ($dfd) {
+ $dfd.resolve(result);
+ });
+ };
+
+ abp.utils.isFunction = function (obj) {
+ return $.isFunction(obj);
+ };
+
+ // JQUERY EXTENSIONS //////////////////////////////////////////////////////
+
+ $.fn.findWithSelf = function (selector) {
+ return this.filter(selector).add(this.find(selector));
+ };
+
+ // DOM ////////////////////////////////////////////////////////////////////
+
+ abp.dom = abp.dom || {};
+
+ abp.dom.onNodeAdded = function (callback) {
+ abp.event.on('abp.dom.nodeAdded', callback);
+ };
+
+ abp.dom.onNodeRemoved = function (callback) {
+ abp.event.on('abp.dom.nodeRemoved', callback);
+ };
+
+ var mutationObserverCallback = function (mutationsList) {
+ for (var i = 0; i < mutationsList.length; i++) {
+ var mutation = mutationsList[i];
+ if (mutation.type === 'childList') {
+ if (mutation.addedNodes && mutation.removedNodes.length) {
+ for (var k = 0; k < mutation.removedNodes.length; k++) {
+ abp.event.trigger(
+ 'abp.dom.nodeRemoved',
+ {
+ $el: $(mutation.removedNodes[k])
+ }
+ );
+ }
+ }
+
+ if (mutation.addedNodes && mutation.addedNodes.length) {
+ for (var j = 0; j < mutation.addedNodes.length; j++) {
+ abp.event.trigger(
+ 'abp.dom.nodeAdded',
+ {
+ $el: $(mutation.addedNodes[j])
+ }
+ );
+ }
+ }
+ }
+ }
+ };
+
+ $(function(){
+ new MutationObserver(mutationObserverCallback).observe(
+ $('body')[0],
+ {
+ subtree: true,
+ childList: true
+ }
+ );
+ });
+
+ // AJAX ///////////////////////////////////////////////////////////////////
+
+ abp.ajax = function (userOptions) {
+ userOptions = userOptions || {};
+
+ var options = $.extend(true, {}, abp.ajax.defaultOpts, userOptions);
+
+ options.success = undefined;
+ options.error = undefined;
+
+ var xhr = null;
+ var promise = $.Deferred(function ($dfd) {
+ xhr = $.ajax(options)
+ .done(function (data, textStatus, jqXHR) {
+ $dfd.resolve(data);
+ userOptions.success && userOptions.success(data);
+ }).fail(function (jqXHR) {
+ if(jqXHR.statusText === 'abort') {
+ //ajax request is abort, ignore error handle.
+ return;
+ }
+ if (jqXHR.getResponseHeader('_AbpErrorFormat') === 'true') {
+ abp.ajax.handleAbpErrorResponse(jqXHR, userOptions, $dfd);
+ } else {
+ abp.ajax.handleNonAbpErrorResponse(jqXHR, userOptions, $dfd);
+ }
+ });
+ }).promise();
+
+ promise['jqXHR'] = xhr;
+
+ return promise;
+ };
+
+ $.extend(abp.ajax, {
+ defaultOpts: {
+ dataType: 'json',
+ type: 'POST',
+ contentType: 'application/json',
+ headers: {
+ 'X-Requested-With': 'XMLHttpRequest'
+ }
+ },
+
+ defaultError: {
+ message: 'An error has occurred!',
+ details: 'Error detail not sent by server.'
+ },
+
+ defaultError401: {
+ message: 'You are not authenticated!',
+ details: 'You should be authenticated (sign in) in order to perform this operation.'
+ },
+
+ defaultError403: {
+ message: 'You are not authorized!',
+ details: 'You are not allowed to perform this operation.'
+ },
+
+ defaultError404: {
+ message: 'Resource not found!',
+ details: 'The resource requested could not found on the server.'
+ },
+
+ logError: function (error) {
+ abp.log.error(error);
+ },
+
+ showError: function (error) {
+ if (error.details) {
+ return abp.message.error(error.details, error.message);
+ } else {
+ return abp.message.error(error.message || abp.ajax.defaultError.message);
+ }
+ },
+
+ handleTargetUrl: function (targetUrl) {
+ if (!targetUrl) {
+ location.href = abp.appPath;
+ } else {
+ location.href = targetUrl;
+ }
+ },
+
+ handleErrorStatusCode: function (status) {
+ switch (status) {
+ case 401:
+ abp.ajax.handleUnAuthorizedRequest(
+ abp.ajax.showError(abp.ajax.defaultError401),
+ abp.appPath
+ );
+ break;
+ case 403:
+ abp.ajax.showError(abp.ajax.defaultError403);
+ break;
+ case 404:
+ abp.ajax.showError(abp.ajax.defaultError404);
+ break;
+ default:
+ abp.ajax.showError(abp.ajax.defaultError);
+ break;
+ }
+ },
+
+ handleNonAbpErrorResponse: function (jqXHR, userOptions, $dfd) {
+ if (userOptions.abpHandleError !== false) {
+ abp.ajax.handleErrorStatusCode(jqXHR.status);
+ }
+
+ $dfd.reject.apply(this, arguments);
+ userOptions.error && userOptions.error.apply(this, arguments);
+ },
+
+ handleAbpErrorResponse: function (jqXHR, userOptions, $dfd) {
+ var messagePromise = null;
+
+ var responseJSON = jqXHR.responseJSON ? jqXHR.responseJSON : JSON.parse(jqXHR.responseText);
+
+ if (userOptions.abpHandleError !== false) {
+ messagePromise = abp.ajax.showError(responseJSON.error);
+ }
+
+ abp.ajax.logError(responseJSON.error);
+
+ $dfd && $dfd.reject(responseJSON.error, jqXHR);
+ userOptions.error && userOptions.error(responseJSON.error, jqXHR);
+
+ if (jqXHR.status === 401 && userOptions.abpHandleError !== false) {
+ abp.ajax.handleUnAuthorizedRequest(messagePromise);
+ }
+ },
+
+ handleUnAuthorizedRequest: function (messagePromise, targetUrl) {
+ if (messagePromise) {
+ messagePromise.done(function () {
+ abp.ajax.handleTargetUrl(targetUrl);
+ });
+ } else {
+ abp.ajax.handleTargetUrl(targetUrl);
+ }
+ },
+
+ blockUI: function (options) {
+ if (options.blockUI) {
+ if (options.blockUI === true) { //block whole page
+ abp.ui.setBusy();
+ } else { //block an element
+ abp.ui.setBusy(options.blockUI);
+ }
+ }
+ },
+
+ unblockUI: function (options) {
+ if (options.blockUI) {
+ if (options.blockUI === true) { //unblock whole page
+ abp.ui.clearBusy();
+ } else { //unblock an element
+ abp.ui.clearBusy(options.blockUI);
+ }
+ }
+ },
+
+ ajaxSendHandler: function (event, request, settings) {
+ var token = abp.security.antiForgery.getToken();
+ if (!token) {
+ return;
+ }
+
+ if (!settings.headers || settings.headers[abp.security.antiForgery.tokenHeaderName] === undefined) {
+ request.setRequestHeader(abp.security.antiForgery.tokenHeaderName, token);
+ }
+ }
+ });
+
+ $(document).ajaxSend(function (event, request, settings) {
+ return abp.ajax.ajaxSendHandler(event, request, settings);
+ });
+
+ abp.event.on('abp.configurationInitialized', function () {
+ var l = abp.localization.getResource('AbpUi');
+
+ abp.ajax.defaultError.message = l('DefaultErrorMessage');
+ abp.ajax.defaultError.details = l('DefaultErrorMessageDetail');
+ abp.ajax.defaultError401.message = l('DefaultErrorMessage401');
+ abp.ajax.defaultError401.details = l('DefaultErrorMessage401Detail');
+ abp.ajax.defaultError403.message = l('DefaultErrorMessage403');
+ abp.ajax.defaultError403.details = l('DefaultErrorMessage403Detail');
+ abp.ajax.defaultError404.message = l('DefaultErrorMessage404');
+ abp.ajax.defaultError404.details = l('DefaultErrorMessage404Detail');
+ });
+
+ // RESOURCE LOADER ////////////////////////////////////////////////////////
+
+ /* UrlStates enum */
+ var UrlStates = {
+ LOADING: 'LOADING',
+ LOADED: 'LOADED',
+ FAILED: 'FAILED'
+ };
+
+ /* UrlInfo class */
+ function UrlInfo(url) {
+ this.url = url;
+ this.state = UrlStates.LOADING;
+ this.loadCallbacks = [];
+ this.failCallbacks = [];
+ }
+
+ UrlInfo.prototype.succeed = function () {
+ this.state = UrlStates.LOADED;
+ for (var i = 0; i < this.loadCallbacks.length; i++) {
+ this.loadCallbacks[i]();
+ }
+ };
+
+ UrlInfo.prototype.failed = function () {
+ this.state = UrlStates.FAILED;
+ for (var i = 0; i < this.failCallbacks.length; i++) {
+ this.failCallbacks[i]();
+ }
+ };
+
+ UrlInfo.prototype.handleCallbacks = function (loadCallback, failCallback) {
+ switch (this.state) {
+ case UrlStates.LOADED:
+ loadCallback && loadCallback();
+ break;
+ case UrlStates.FAILED:
+ failCallback && failCallback();
+ break;
+ case UrlStates.LOADING:
+ this.addCallbacks(loadCallback, failCallback);
+ break;
+ }
+ };
+
+ UrlInfo.prototype.addCallbacks = function (loadCallback, failCallback) {
+ loadCallback && this.loadCallbacks.push(loadCallback);
+ failCallback && this.failCallbacks.push(failCallback);
+ };
+
+ /* ResourceLoader API */
+
+ abp.ResourceLoader = (function () {
+
+ var _urlInfos = {};
+
+ function getCacheKey(url) {
+ return url;
+ }
+
+ function appendTimeToUrl(url) {
+
+ if (url.indexOf('?') < 0) {
+ url += '?';
+ } else {
+ url += '&';
+ }
+
+ url += '_=' + new Date().getTime();
+
+ return url;
+ }
+
+ var _loadFromUrl = function (url, loadCallback, failCallback, serverLoader) {
+
+ var cacheKey = getCacheKey(url);
+
+ var urlInfo = _urlInfos[cacheKey];
+
+ if (urlInfo) {
+ urlInfo.handleCallbacks(loadCallback, failCallback);
+ return;
+ }
+
+ _urlInfos[cacheKey] = urlInfo = new UrlInfo(url);
+ urlInfo.addCallbacks(loadCallback, failCallback);
+
+ serverLoader(urlInfo);
+ };
+
+ var _loadScript = function (url, loadCallback, failCallback) {
+ var nonce = document.body.nonce || document.body.getAttribute('nonce');
+ _loadFromUrl(url, loadCallback, failCallback, function (urlInfo) {
+ $.get({
+ url: url,
+ dataType: 'text'
+ })
+ .done(function (script) {
+ if(nonce){
+ $.globalEval(script, { nonce: nonce});
+ }else{
+ $.globalEval(script);
+ }
+ urlInfo.succeed();
+ })
+ .fail(function () {
+ urlInfo.failed();
+ });
+ });
+ };
+
+ var _loadStyle = function (url) {
+ _loadFromUrl(url, undefined, undefined, function (urlInfo) {
+
+ $(' ', {
+ rel: 'stylesheet',
+ type: 'text/css',
+ href: appendTimeToUrl(url)
+ }).appendTo('head');
+ });
+ };
+
+ return {
+ loadScript: _loadScript,
+ loadStyle: _loadStyle
+ }
+ })();
+
+})(jQuery);
\ No newline at end of file
diff --git a/src/EventHub.Admin.Web/wwwroot/libs/abp/luxon/abp.luxon.js b/src/EventHub.Admin.Web/wwwroot/libs/abp/luxon/abp.luxon.js
new file mode 100644
index 0000000..40b3f96
--- /dev/null
+++ b/src/EventHub.Admin.Web/wwwroot/libs/abp/luxon/abp.luxon.js
@@ -0,0 +1,102 @@
+var abp = abp || {};
+(function () {
+
+ if (!luxon) {
+ throw "abp/luxon library requires the luxon library included to the page!";
+ }
+
+ /* TIMING *************************************************/
+
+ abp.timing = abp.timing || {};
+
+ var setObjectValue = function (obj, property, value) {
+ if (typeof property === "string") {
+ property = property.split('.');
+ }
+
+ if (property.length > 1) {
+ var p = property.shift();
+ setObjectValue(obj[p], property, value);
+ } else {
+ obj[property[0]] = value;
+ }
+ }
+
+ var getObjectValue = function (obj, property) {
+ return property.split('.').reduce((a, v) => a[v], obj)
+ }
+
+ abp.timing.convertFieldsToIsoDate = function (form, fields) {
+ for (var field of fields) {
+ var dateTime = luxon.DateTime
+ .fromFormat(
+ getObjectValue(form, field),
+ abp.localization.currentCulture.dateTimeFormat.shortDatePattern,
+ { locale: abp.localization.currentCulture.cultureName }
+ );
+
+ if (!dateTime.invalid) {
+ setObjectValue(form, field, dateTime.toFormat("yyyy-MM-dd HH:mm:ss"))
+ }
+ }
+
+ return form;
+ }
+
+ // Normalize Date object or date string to standard string format that will be sent to server
+ abp.clock.normalizeToString = function (date) {
+ if (!date) {
+ return date;
+ }
+
+ var dateObj = date instanceof Date ? date : new Date(date);
+ if (isNaN(dateObj)) {
+ return date;
+ }
+
+ var timeZone = abp.clock.timeZone();
+ if (abp.clock.supportsMultipleTimezone() && timeZone) {
+ return luxon.DateTime.fromObject({
+ year: dateObj.getFullYear(),
+ month: dateObj.getMonth() + 1,
+ day: dateObj.getDate(),
+ hour: dateObj.getHours(),
+ minute: dateObj.getMinutes(),
+ second: dateObj.getSeconds()
+ }, { zone: timeZone }).setZone("utc").toISO();
+ } else {
+ return luxon.DateTime.fromJSDate(dateObj).toFormat("yyyy-MM-dd'T'HH:mm:ss");
+ }
+ };
+
+ // Normalize date string to locale date string that will be displayed to user
+ abp.clock.normalizeToLocaleString = function (dateString, options) {
+ if (!dateString) {
+ return dateString;
+ }
+
+ var date = new Date(dateString);
+ if (isNaN(date)) {
+ return dateString;
+ }
+
+ options = options || abp.clock.toLocaleStringOptions;
+ if (abp.clock.supportsMultipleTimezone()) {
+ var timezone = abp.clock.timeZone();
+ if (timezone) {
+ return luxon.DateTime.fromJSDate(date)
+ .setZone(timezone)
+ .setLocale(abp.localization.currentCulture.cultureName)
+ .toLocaleString(options);
+ }
+ }
+
+ return luxon.DateTime.fromJSDate(date)
+ .setLocale(abp.localization.currentCulture.cultureName)
+ .toLocaleString(options);
+ }
+
+ abp.clock.browserTimeZone = function () {
+ return luxon.DateTime.local().zoneName;
+ }
+})(jQuery);
diff --git a/src/EventHub.Admin.Web/wwwroot/libs/abp/utils/abp-utils.umd.js b/src/EventHub.Admin.Web/wwwroot/libs/abp/utils/abp-utils.umd.js
new file mode 100644
index 0000000..28ebcc3
--- /dev/null
+++ b/src/EventHub.Admin.Web/wwwroot/libs/abp/utils/abp-utils.umd.js
@@ -0,0 +1,694 @@
+(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('just-compare')) :
+ typeof define === 'function' && define.amd ? define('@abp/utils', ['exports', 'just-compare'], factory) :
+ (global = global || self, factory((global.abp = global.abp || {}, global.abp.utils = global.abp.utils || {}, global.abp.utils.common = {}), global.compare));
+}(this, (function (exports, compare) { 'use strict';
+
+ compare = compare && Object.prototype.hasOwnProperty.call(compare, 'default') ? compare['default'] : compare;
+
+ /*! *****************************************************************************
+ Copyright (c) Microsoft Corporation.
+
+ Permission to use, copy, modify, and/or distribute this software for any
+ purpose with or without fee is hereby granted.
+
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ PERFORMANCE OF THIS SOFTWARE.
+ ***************************************************************************** */
+ /* global Reflect, Promise */
+ var extendStatics = function (d, b) {
+ extendStatics = Object.setPrototypeOf ||
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+ function (d, b) { for (var p in b)
+ if (b.hasOwnProperty(p))
+ d[p] = b[p]; };
+ return extendStatics(d, b);
+ };
+ function __extends(d, b) {
+ extendStatics(d, b);
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ }
+ var __assign = function () {
+ __assign = Object.assign || function __assign(t) {
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
+ s = arguments[i];
+ for (var p in s)
+ if (Object.prototype.hasOwnProperty.call(s, p))
+ t[p] = s[p];
+ }
+ return t;
+ };
+ return __assign.apply(this, arguments);
+ };
+ function __rest(s, e) {
+ var t = {};
+ for (var p in s)
+ if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
+ t[p] = s[p];
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
+ t[p[i]] = s[p[i]];
+ }
+ return t;
+ }
+ function __decorate(decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
+ r = Reflect.decorate(decorators, target, key, desc);
+ else
+ for (var i = decorators.length - 1; i >= 0; i--)
+ if (d = decorators[i])
+ r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ }
+ function __param(paramIndex, decorator) {
+ return function (target, key) { decorator(target, key, paramIndex); };
+ }
+ function __metadata(metadataKey, metadataValue) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
+ return Reflect.metadata(metadataKey, metadataValue);
+ }
+ function __awaiter(thisArg, _arguments, P, generator) {
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try {
+ step(generator.next(value));
+ }
+ catch (e) {
+ reject(e);
+ } }
+ function rejected(value) { try {
+ step(generator["throw"](value));
+ }
+ catch (e) {
+ reject(e);
+ } }
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+ }
+ function __generator(thisArg, body) {
+ var _ = { label: 0, sent: function () { if (t[0] & 1)
+ throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { return this; }), g;
+ function verb(n) { return function (v) { return step([n, v]); }; }
+ function step(op) {
+ if (f)
+ throw new TypeError("Generator is already executing.");
+ while (_)
+ try {
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done)
+ return t;
+ if (y = 0, t)
+ op = [op[0] & 2, t.value];
+ switch (op[0]) {
+ case 0:
+ case 1:
+ t = op;
+ break;
+ case 4:
+ _.label++;
+ return { value: op[1], done: false };
+ case 5:
+ _.label++;
+ y = op[1];
+ op = [0];
+ continue;
+ case 7:
+ op = _.ops.pop();
+ _.trys.pop();
+ continue;
+ default:
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
+ _ = 0;
+ continue;
+ }
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) {
+ _.label = op[1];
+ break;
+ }
+ if (op[0] === 6 && _.label < t[1]) {
+ _.label = t[1];
+ t = op;
+ break;
+ }
+ if (t && _.label < t[2]) {
+ _.label = t[2];
+ _.ops.push(op);
+ break;
+ }
+ if (t[2])
+ _.ops.pop();
+ _.trys.pop();
+ continue;
+ }
+ op = body.call(thisArg, _);
+ }
+ catch (e) {
+ op = [6, e];
+ y = 0;
+ }
+ finally {
+ f = t = 0;
+ }
+ if (op[0] & 5)
+ throw op[1];
+ return { value: op[0] ? op[1] : void 0, done: true };
+ }
+ }
+ var __createBinding = Object.create ? (function (o, m, k, k2) {
+ if (k2 === undefined)
+ k2 = k;
+ Object.defineProperty(o, k2, { enumerable: true, get: function () { return m[k]; } });
+ }) : (function (o, m, k, k2) {
+ if (k2 === undefined)
+ k2 = k;
+ o[k2] = m[k];
+ });
+ function __exportStar(m, exports) {
+ for (var p in m)
+ if (p !== "default" && !exports.hasOwnProperty(p))
+ __createBinding(exports, m, p);
+ }
+ function __values(o) {
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
+ if (m)
+ return m.call(o);
+ if (o && typeof o.length === "number")
+ return {
+ next: function () {
+ if (o && i >= o.length)
+ o = void 0;
+ return { value: o && o[i++], done: !o };
+ }
+ };
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
+ }
+ function __read(o, n) {
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
+ if (!m)
+ return o;
+ var i = m.call(o), r, ar = [], e;
+ try {
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done)
+ ar.push(r.value);
+ }
+ catch (error) {
+ e = { error: error };
+ }
+ finally {
+ try {
+ if (r && !r.done && (m = i["return"]))
+ m.call(i);
+ }
+ finally {
+ if (e)
+ throw e.error;
+ }
+ }
+ return ar;
+ }
+ function __spread() {
+ for (var ar = [], i = 0; i < arguments.length; i++)
+ ar = ar.concat(__read(arguments[i]));
+ return ar;
+ }
+ function __spreadArrays() {
+ for (var s = 0, i = 0, il = arguments.length; i < il; i++)
+ s += arguments[i].length;
+ for (var r = Array(s), k = 0, i = 0; i < il; i++)
+ for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
+ r[k] = a[j];
+ return r;
+ }
+ ;
+ function __await(v) {
+ return this instanceof __await ? (this.v = v, this) : new __await(v);
+ }
+ function __asyncGenerator(thisArg, _arguments, generator) {
+ if (!Symbol.asyncIterator)
+ throw new TypeError("Symbol.asyncIterator is not defined.");
+ var g = generator.apply(thisArg, _arguments || []), i, q = [];
+ return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
+ function verb(n) { if (g[n])
+ i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
+ function resume(n, v) { try {
+ step(g[n](v));
+ }
+ catch (e) {
+ settle(q[0][3], e);
+ } }
+ function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
+ function fulfill(value) { resume("next", value); }
+ function reject(value) { resume("throw", value); }
+ function settle(f, v) { if (f(v), q.shift(), q.length)
+ resume(q[0][0], q[0][1]); }
+ }
+ function __asyncDelegator(o) {
+ var i, p;
+ return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
+ function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
+ }
+ function __asyncValues(o) {
+ if (!Symbol.asyncIterator)
+ throw new TypeError("Symbol.asyncIterator is not defined.");
+ var m = o[Symbol.asyncIterator], i;
+ return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
+ function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
+ function settle(resolve, reject, d, v) { Promise.resolve(v).then(function (v) { resolve({ value: v, done: d }); }, reject); }
+ }
+ function __makeTemplateObject(cooked, raw) {
+ if (Object.defineProperty) {
+ Object.defineProperty(cooked, "raw", { value: raw });
+ }
+ else {
+ cooked.raw = raw;
+ }
+ return cooked;
+ }
+ ;
+ var __setModuleDefault = Object.create ? (function (o, v) {
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
+ }) : function (o, v) {
+ o["default"] = v;
+ };
+ function __importStar(mod) {
+ if (mod && mod.__esModule)
+ return mod;
+ var result = {};
+ if (mod != null)
+ for (var k in mod)
+ if (Object.hasOwnProperty.call(mod, k))
+ __createBinding(result, mod, k);
+ __setModuleDefault(result, mod);
+ return result;
+ }
+ function __importDefault(mod) {
+ return (mod && mod.__esModule) ? mod : { default: mod };
+ }
+ function __classPrivateFieldGet(receiver, privateMap) {
+ if (!privateMap.has(receiver)) {
+ throw new TypeError("attempted to get private field on non-instance");
+ }
+ return privateMap.get(receiver);
+ }
+ function __classPrivateFieldSet(receiver, privateMap, value) {
+ if (!privateMap.has(receiver)) {
+ throw new TypeError("attempted to set private field on non-instance");
+ }
+ privateMap.set(receiver, value);
+ return value;
+ }
+
+ var ListNode = /** @class */ (function () {
+ function ListNode(value) {
+ this.value = value;
+ }
+ return ListNode;
+ }());
+ var LinkedList = /** @class */ (function () {
+ function LinkedList() {
+ this.size = 0;
+ }
+ Object.defineProperty(LinkedList.prototype, "head", {
+ get: function () {
+ return this.first;
+ },
+ enumerable: false,
+ configurable: true
+ });
+ Object.defineProperty(LinkedList.prototype, "tail", {
+ get: function () {
+ return this.last;
+ },
+ enumerable: false,
+ configurable: true
+ });
+ Object.defineProperty(LinkedList.prototype, "length", {
+ get: function () {
+ return this.size;
+ },
+ enumerable: false,
+ configurable: true
+ });
+ LinkedList.prototype.attach = function (value, previousNode, nextNode) {
+ if (!previousNode)
+ return this.addHead(value);
+ if (!nextNode)
+ return this.addTail(value);
+ var node = new ListNode(value);
+ node.previous = previousNode;
+ previousNode.next = node;
+ node.next = nextNode;
+ nextNode.previous = node;
+ this.size++;
+ return node;
+ };
+ LinkedList.prototype.attachMany = function (values, previousNode, nextNode) {
+ if (!values.length)
+ return [];
+ if (!previousNode)
+ return this.addManyHead(values);
+ if (!nextNode)
+ return this.addManyTail(values);
+ var list = new LinkedList();
+ list.addManyTail(values);
+ list.first.previous = previousNode;
+ previousNode.next = list.first;
+ list.last.next = nextNode;
+ nextNode.previous = list.last;
+ this.size += values.length;
+ return list.toNodeArray();
+ };
+ LinkedList.prototype.detach = function (node) {
+ if (!node.previous)
+ return this.dropHead();
+ if (!node.next)
+ return this.dropTail();
+ node.previous.next = node.next;
+ node.next.previous = node.previous;
+ this.size--;
+ return node;
+ };
+ LinkedList.prototype.add = function (value) {
+ var _this = this;
+ return {
+ after: function () {
+ var _a;
+ var params = [];
+ for (var _i = 0; _i < arguments.length; _i++) {
+ params[_i] = arguments[_i];
+ }
+ return (_a = _this.addAfter).call.apply(_a, __spread([_this, value], params));
+ },
+ before: function () {
+ var _a;
+ var params = [];
+ for (var _i = 0; _i < arguments.length; _i++) {
+ params[_i] = arguments[_i];
+ }
+ return (_a = _this.addBefore).call.apply(_a, __spread([_this, value], params));
+ },
+ byIndex: function (position) { return _this.addByIndex(value, position); },
+ head: function () { return _this.addHead(value); },
+ tail: function () { return _this.addTail(value); },
+ };
+ };
+ LinkedList.prototype.addMany = function (values) {
+ var _this = this;
+ return {
+ after: function () {
+ var _a;
+ var params = [];
+ for (var _i = 0; _i < arguments.length; _i++) {
+ params[_i] = arguments[_i];
+ }
+ return (_a = _this.addManyAfter).call.apply(_a, __spread([_this, values], params));
+ },
+ before: function () {
+ var _a;
+ var params = [];
+ for (var _i = 0; _i < arguments.length; _i++) {
+ params[_i] = arguments[_i];
+ }
+ return (_a = _this.addManyBefore).call.apply(_a, __spread([_this, values], params));
+ },
+ byIndex: function (position) { return _this.addManyByIndex(values, position); },
+ head: function () { return _this.addManyHead(values); },
+ tail: function () { return _this.addManyTail(values); },
+ };
+ };
+ LinkedList.prototype.addAfter = function (value, previousValue, compareFn) {
+ if (compareFn === void 0) { compareFn = compare; }
+ var previous = this.find(function (node) { return compareFn(node.value, previousValue); });
+ return previous ? this.attach(value, previous, previous.next) : this.addTail(value);
+ };
+ LinkedList.prototype.addBefore = function (value, nextValue, compareFn) {
+ if (compareFn === void 0) { compareFn = compare; }
+ var next = this.find(function (node) { return compareFn(node.value, nextValue); });
+ return next ? this.attach(value, next.previous, next) : this.addHead(value);
+ };
+ LinkedList.prototype.addByIndex = function (value, position) {
+ if (position < 0)
+ position += this.size;
+ else if (position >= this.size)
+ return this.addTail(value);
+ if (position <= 0)
+ return this.addHead(value);
+ var next = this.get(position);
+ return this.attach(value, next.previous, next);
+ };
+ LinkedList.prototype.addHead = function (value) {
+ var node = new ListNode(value);
+ node.next = this.first;
+ if (this.first)
+ this.first.previous = node;
+ else
+ this.last = node;
+ this.first = node;
+ this.size++;
+ return node;
+ };
+ LinkedList.prototype.addTail = function (value) {
+ var node = new ListNode(value);
+ if (this.first) {
+ node.previous = this.last;
+ this.last.next = node;
+ this.last = node;
+ }
+ else {
+ this.first = node;
+ this.last = node;
+ }
+ this.size++;
+ return node;
+ };
+ LinkedList.prototype.addManyAfter = function (values, previousValue, compareFn) {
+ if (compareFn === void 0) { compareFn = compare; }
+ var previous = this.find(function (node) { return compareFn(node.value, previousValue); });
+ return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);
+ };
+ LinkedList.prototype.addManyBefore = function (values, nextValue, compareFn) {
+ if (compareFn === void 0) { compareFn = compare; }
+ var next = this.find(function (node) { return compareFn(node.value, nextValue); });
+ return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);
+ };
+ LinkedList.prototype.addManyByIndex = function (values, position) {
+ if (position < 0)
+ position += this.size;
+ if (position <= 0)
+ return this.addManyHead(values);
+ if (position >= this.size)
+ return this.addManyTail(values);
+ var next = this.get(position);
+ return this.attachMany(values, next.previous, next);
+ };
+ LinkedList.prototype.addManyHead = function (values) {
+ var _this = this;
+ return values.reduceRight(function (nodes, value) {
+ nodes.unshift(_this.addHead(value));
+ return nodes;
+ }, []);
+ };
+ LinkedList.prototype.addManyTail = function (values) {
+ var _this = this;
+ return values.map(function (value) { return _this.addTail(value); });
+ };
+ LinkedList.prototype.drop = function () {
+ var _this = this;
+ return {
+ byIndex: function (position) { return _this.dropByIndex(position); },
+ byValue: function () {
+ var params = [];
+ for (var _i = 0; _i < arguments.length; _i++) {
+ params[_i] = arguments[_i];
+ }
+ return _this.dropByValue.apply(_this, params);
+ },
+ byValueAll: function () {
+ var params = [];
+ for (var _i = 0; _i < arguments.length; _i++) {
+ params[_i] = arguments[_i];
+ }
+ return _this.dropByValueAll.apply(_this, params);
+ },
+ head: function () { return _this.dropHead(); },
+ tail: function () { return _this.dropTail(); },
+ };
+ };
+ LinkedList.prototype.dropMany = function (count) {
+ var _this = this;
+ return {
+ byIndex: function (position) { return _this.dropManyByIndex(count, position); },
+ head: function () { return _this.dropManyHead(count); },
+ tail: function () { return _this.dropManyTail(count); },
+ };
+ };
+ LinkedList.prototype.dropByIndex = function (position) {
+ if (position < 0)
+ position += this.size;
+ var current = this.get(position);
+ return current ? this.detach(current) : undefined;
+ };
+ LinkedList.prototype.dropByValue = function (value, compareFn) {
+ if (compareFn === void 0) { compareFn = compare; }
+ var position = this.findIndex(function (node) { return compareFn(node.value, value); });
+ return position < 0 ? undefined : this.dropByIndex(position);
+ };
+ LinkedList.prototype.dropByValueAll = function (value, compareFn) {
+ if (compareFn === void 0) { compareFn = compare; }
+ var dropped = [];
+ for (var current = this.first, position = 0; current; position++, current = current.next) {
+ if (compareFn(current.value, value)) {
+ dropped.push(this.dropByIndex(position - dropped.length));
+ }
+ }
+ return dropped;
+ };
+ LinkedList.prototype.dropHead = function () {
+ var head = this.first;
+ if (head) {
+ this.first = head.next;
+ if (this.first)
+ this.first.previous = undefined;
+ else
+ this.last = undefined;
+ this.size--;
+ return head;
+ }
+ return undefined;
+ };
+ LinkedList.prototype.dropTail = function () {
+ var tail = this.last;
+ if (tail) {
+ this.last = tail.previous;
+ if (this.last)
+ this.last.next = undefined;
+ else
+ this.first = undefined;
+ this.size--;
+ return tail;
+ }
+ return undefined;
+ };
+ LinkedList.prototype.dropManyByIndex = function (count, position) {
+ if (count <= 0)
+ return [];
+ if (position < 0)
+ position = Math.max(position + this.size, 0);
+ else if (position >= this.size)
+ return [];
+ count = Math.min(count, this.size - position);
+ var dropped = [];
+ while (count--) {
+ var current = this.get(position);
+ dropped.push(this.detach(current));
+ }
+ return dropped;
+ };
+ LinkedList.prototype.dropManyHead = function (count) {
+ if (count <= 0)
+ return [];
+ count = Math.min(count, this.size);
+ var dropped = [];
+ while (count--)
+ dropped.unshift(this.dropHead());
+ return dropped;
+ };
+ LinkedList.prototype.dropManyTail = function (count) {
+ if (count <= 0)
+ return [];
+ count = Math.min(count, this.size);
+ var dropped = [];
+ while (count--)
+ dropped.push(this.dropTail());
+ return dropped;
+ };
+ LinkedList.prototype.find = function (predicate) {
+ for (var current = this.first, position = 0; current; position++, current = current.next) {
+ if (predicate(current, position, this))
+ return current;
+ }
+ return undefined;
+ };
+ LinkedList.prototype.findIndex = function (predicate) {
+ for (var current = this.first, position = 0; current; position++, current = current.next) {
+ if (predicate(current, position, this))
+ return position;
+ }
+ return -1;
+ };
+ LinkedList.prototype.forEach = function (iteratorFn) {
+ for (var node = this.first, position = 0; node; position++, node = node.next) {
+ iteratorFn(node, position, this);
+ }
+ };
+ LinkedList.prototype.get = function (position) {
+ return this.find(function (_, index) { return position === index; });
+ };
+ LinkedList.prototype.indexOf = function (value, compareFn) {
+ if (compareFn === void 0) { compareFn = compare; }
+ return this.findIndex(function (node) { return compareFn(node.value, value); });
+ };
+ LinkedList.prototype.toArray = function () {
+ var array = new Array(this.size);
+ this.forEach(function (node, index) { return (array[index] = node.value); });
+ return array;
+ };
+ LinkedList.prototype.toNodeArray = function () {
+ var array = new Array(this.size);
+ this.forEach(function (node, index) { return (array[index] = node); });
+ return array;
+ };
+ LinkedList.prototype.toString = function (mapperFn) {
+ if (mapperFn === void 0) { mapperFn = JSON.stringify; }
+ return this.toArray()
+ .map(function (value) { return mapperFn(value); })
+ .join(' <-> ');
+ };
+ // Cannot use Generator type because of ng-packagr
+ LinkedList.prototype[Symbol.iterator] = function () {
+ var node, position;
+ return __generator(this, function (_a) {
+ switch (_a.label) {
+ case 0:
+ node = this.first, position = 0;
+ _a.label = 1;
+ case 1:
+ if (!node) return [3 /*break*/, 4];
+ return [4 /*yield*/, node.value];
+ case 2:
+ _a.sent();
+ _a.label = 3;
+ case 3:
+ position++, node = node.next;
+ return [3 /*break*/, 1];
+ case 4: return [2 /*return*/];
+ }
+ });
+ };
+ return LinkedList;
+ }());
+
+ /*
+ * Public API Surface of utils
+ */
+
+ /**
+ * Generated bundle index. Do not edit.
+ */
+
+ exports.LinkedList = LinkedList;
+ exports.ListNode = ListNode;
+
+ Object.defineProperty(exports, '__esModule', { value: true });
+
+})));
+//# sourceMappingURL=abp-utils.umd.js.map
diff --git a/src/EventHub.Admin.Web/wwwroot/libs/abp/utils/abp-utils.umd.js.map b/src/EventHub.Admin.Web/wwwroot/libs/abp/utils/abp-utils.umd.js.map
new file mode 100644
index 0000000..c8cf999
--- /dev/null
+++ b/src/EventHub.Admin.Web/wwwroot/libs/abp/utils/abp-utils.umd.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"abp-utils.umd.js","sources":["../../node_modules/tslib/tslib.es6.js","../../projects/utils/src/lib/linked-list.ts","../../projects/utils/src/public-api.ts","../../projects/utils/src/abp-utils.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* tslint:disable:no-non-null-assertion */\r\n\r\nimport compare from 'just-compare';\r\n\r\nexport class ListNode {\r\n next: ListNode | undefined;\r\n previous: ListNode | undefined;\r\n constructor(public readonly value: T) {}\r\n}\r\n\r\nexport class LinkedList {\r\n private first: ListNode | undefined;\r\n private last: ListNode | undefined;\r\n private size = 0;\r\n\r\n get head(): ListNode | undefined {\r\n return this.first;\r\n }\r\n get tail(): ListNode | undefined {\r\n return this.last;\r\n }\r\n get length(): number {\r\n return this.size;\r\n }\r\n\r\n private attach(\r\n value: T,\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode {\r\n if (!previousNode) return this.addHead(value);\r\n\r\n if (!nextNode) return this.addTail(value);\r\n\r\n const node = new ListNode(value);\r\n node.previous = previousNode;\r\n previousNode.next = node;\r\n node.next = nextNode;\r\n nextNode.previous = node;\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n private attachMany(\r\n values: T[],\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode[] {\r\n if (!values.length) return [];\r\n\r\n if (!previousNode) return this.addManyHead(values);\r\n\r\n if (!nextNode) return this.addManyTail(values);\r\n\r\n const list = new LinkedList();\r\n list.addManyTail(values);\r\n list.first!.previous = previousNode;\r\n previousNode.next = list.first;\r\n list.last!.next = nextNode;\r\n nextNode.previous = list.last;\r\n\r\n this.size += values.length;\r\n\r\n return list.toNodeArray();\r\n }\r\n\r\n private detach(node: ListNode) {\r\n if (!node.previous) return this.dropHead();\r\n\r\n if (!node.next) return this.dropTail();\r\n\r\n node.previous.next = node.next;\r\n node.next.previous = node.previous;\r\n\r\n this.size--;\r\n\r\n return node;\r\n }\r\n\r\n add(value: T) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addAfter.call(this, value, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addBefore.call(this, value, ...params),\r\n byIndex: (position: number) => this.addByIndex(value, position),\r\n head: () => this.addHead(value),\r\n tail: () => this.addTail(value),\r\n };\r\n }\r\n\r\n addMany(values: T[]) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyAfter.call(this, values, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyBefore.call(this, values, ...params),\r\n byIndex: (position: number) => this.addManyByIndex(values, position),\r\n head: () => this.addManyHead(values),\r\n tail: () => this.addManyTail(values),\r\n };\r\n }\r\n\r\n addAfter(value: T, previousValue: T): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attach(value, previous, previous.next) : this.addTail(value);\r\n }\r\n\r\n addBefore(value: T, nextValue: T): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn