From e2c115d0f2b9780fcf636aba1370654f5250bdb2 Mon Sep 17 00:00:00 2001 From: nullius Date: Mon, 11 Dec 2017 20:45:10 +0000 Subject: [PATCH 01/15] Import XPI and code from addons.mozilla.org Initial commit. Version 0.0.0-prealpha. - Glance over code to make sure it looks sane - Create git repository - Add substantive files - Fix icons (PNG CRC errors) - Add archival copy of xpi from addons.mozilla.org, with metadata - Add README.md, LICENSE.md - NOT YET TESTED BY MAINTAINER (@nym-zone) --- LICENSE.md | 11 ++++++ README.md | 12 +++++++ archive/amo.md | 10 ++++++ ...ock_cloudflare_mitm_attack-1.0.0-an+fx.xpi | Bin 0 -> 9767 bytes archive/headers0.http | 17 +++++++++ archive/headers1.http | 15 ++++++++ archive/sha256.txt | 1 + archive/sha512.txt | 1 + src/icons/icon-48.png | Bin 0 -> 1587 bytes src/icons/icon-64.png | Bin 0 -> 2037 bytes src/manifest.json | 15 ++++++++ src/stop_cf_mitm.js | 33 ++++++++++++++++++ 12 files changed, 115 insertions(+) create mode 100644 LICENSE.md create mode 100644 README.md create mode 100644 archive/amo.md create mode 100644 archive/block_cloudflare_mitm_attack-1.0.0-an+fx.xpi create mode 100644 archive/headers0.http create mode 100644 archive/headers1.http create mode 100644 archive/sha256.txt create mode 100644 archive/sha512.txt create mode 100644 src/icons/icon-48.png create mode 100644 src/icons/icon-64.png create mode 100644 src/manifest.json create mode 100644 src/stop_cf_mitm.js diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 000000000..418134fb0 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,11 @@ +[Original license](https://addons.mozilla.org/en-US/firefox/addon/block-cloudflare-mitm-attack/license/1.0.0): + +# Block Cloudflare MiTM Attack 1.0.0 +# Source Code License +# WTFPL + +WTFPL + +--- + +Any modifications by nullius are released to the public domain. Copyright is irrevocably disclaimed on behalf of self, heirs, assigns, etc., etc. In other words, NO LICENSE! The public domain is not a license. I politely request that derivative works either stay in the public domain, or keep a liberal license. diff --git a/README.md b/README.md new file mode 100644 index 000000000..ab7beafc2 --- /dev/null +++ b/README.md @@ -0,0 +1,12 @@ +# Block Cloudflare MITM Attack + +**Pull requests are welcome!** + +The purpose of this browser add-on is to block Cloudflare sites. + +The TLS protocol promises end-to-end encryption between the client and an authenticated, identified endpoint server. The browser’s lock icon is a UI widget which makes this promise to the user. Cloudflare is a mass-decryption chokepoint, which intercepts and decrypts the Web requests made by billions of people to millions of websites. + +- Prior discussion: [Tor Browser Bug #24351: Block Global Active Adversary Cloudflare](https://trac.torproject.org/projects/tor/ticket/24351) +- Imported from [block_cloudflare_mitm_attack-1.0.0-an+fx.xpi](https://addons.mozilla.org/en-US/firefox/addon/block-cloudflare-mitm-attack/), by an anonymous cypherpunk. “Cyperpunks write code.” Cheers! +- [Original announcement](https://trac.torproject.org/projects/tor/ticket/24351#comment:25) +- Thanks to [Debian Bug #831835](https://bugs.debian.org/831835) for some inspiration. diff --git a/archive/amo.md b/archive/amo.md new file mode 100644 index 000000000..d8bde2873 --- /dev/null +++ b/archive/amo.md @@ -0,0 +1,10 @@ +[https://addons.mozilla.org/en-US/firefox/addon/block-cloudflare-mitm-attack/](https://addons.mozilla.org/en-US/firefox/addon/block-cloudflare-mitm-attack/) + +# Block Cloudflare MiTM Attack +## by [cypherpunks](https://addons.mozilla.org/en-US/firefox/user/JustATorUser/) + +If the destination use Cloudflare, block future request. + +Please read: +[https://trac.torproject.org/projects/tor/ticket/24351](https://trac.torproject.org/projects/tor/ticket/24351) +[http://www.crimeflare.com/](http://www.crimeflare.com/) diff --git a/archive/block_cloudflare_mitm_attack-1.0.0-an+fx.xpi b/archive/block_cloudflare_mitm_attack-1.0.0-an+fx.xpi new file mode 100644 index 0000000000000000000000000000000000000000..225bd41985e035d5ab7ce95d66b63e5e8d3c6bb5 GIT binary patch literal 9767 zcmbVy1yG&alJ3UcU4pv>cMT4~HMsl6-61%H;JyhGg1fuBySoN=mq+f*oiq2$dsTN{ zSM|SYty=YUS65f}>i%0%76K9z006)OdYmF<>0J-a;E@0T6I1}; castBXByu?SK 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 MzQ-h6@;|%(1NWJwb^rhX literal 0 HcmV?d00001 diff --git a/archive/headers0.http b/archive/headers0.http new file mode 100644 index 000000000..598564aa6 --- /dev/null +++ b/archive/headers0.http @@ -0,0 +1,17 @@ +HTTP/1.1 302 FOUND +Content-Security-Policy: script-src https://ssl.google-analytics.com/ga.js https://www.google.com/recaptcha/ https://www.gstatic.com/recaptcha/ https://addons.cdn.mozilla.net; style-src 'self' 'unsafe-inline' https://addons.cdn.mozilla.net; default-src 'self'; frame-src 'self' https://www.google.com/recaptcha/; child-src 'self' https://www.google.com/recaptcha/; img-src 'self' data: blob: https://ssl.google-analytics.com https://addons.cdn.mozilla.net https://static.addons.mozilla.net https://sentry.prod.mozaws.net; media-src https://videos.cdn.mozilla.net; object-src 'none'; connect-src 'self' https://sentry.prod.mozaws.net; font-src 'self' https://addons.cdn.mozilla.net; form-action 'self' https://developer.mozilla.org; base-uri 'self' https://addons.mozilla.org; report-uri /__cspreport__ +Content-Type: text/html; charset=utf-8 +Date: Mon, 11 Dec 2017 18:27:56 GMT +ETag: "d41d8cd98f00b204e9800998ecf8427e" +Location: https://addons.cdn.mozilla.net/user-media/addons/902908/block_cloudflare_mitm_attack-1.0.0-an+fx.xpi?filehash=sha256%3A335868a2ef8966ecd11db6532bca642cbd1d9eb31d5f9f1d79d9bd0d77f15c45 +Public-Key-Pins: max-age=5184000; includeSubDomains; pin-sha256="WoiWRyIOVNa9ihaBciRSC7XHjliYS9VwUGOIud4PB18="; pin-sha256="r/mIkG3eEpVdm+u/ko/cwxzOMo1bk4TyHIlByibiA5E=" +Server: nginx +strict-transport-security: max-age=31536000 +Vary: User-Agent +x-content-type-options: nosniff +X-Frame-Options: DENY +X-Target-Digest: sha256:335868a2ef8966ecd11db6532bca642cbd1d9eb31d5f9f1d79d9bd0d77f15c45 +x-xss-protection: 1; mode=block +Content-Length: 0 +Connection: keep-alive + diff --git a/archive/headers1.http b/archive/headers1.http new file mode 100644 index 000000000..8c0a71cb9 --- /dev/null +++ b/archive/headers1.http @@ -0,0 +1,15 @@ +HTTP/1.1 200 OK +Content-Type: application/x-xpinstall +Content-Length: 9767 +Connection: keep-alive +Accept-Ranges: bytes +Cache-Control: max-age=86400 +Content-Security-Policy: default-src 'none'; report-uri https://addons.mozilla.org/__cspreport__ +Date: Mon, 11 Dec 2017 18:29:33 GMT +Expires: Tue, 12 Dec 2017 18:29:33 GMT +Last-Modified: Mon, 11 Dec 2017 14:30:08 GMT +Server: nginx +X-Cache: Miss from cloudfront +Via: 1.1 3905f6b396c96f958286f8e228e61547.cloudfront.net (CloudFront) +X-Amz-Cf-Id: U05sJSn5Gc55Pittka0jqN1NF1a1_b5HNUDS4DLf3-I4U-dXOzJApw== + diff --git a/archive/sha256.txt b/archive/sha256.txt new file mode 100644 index 000000000..07440040c --- /dev/null +++ b/archive/sha256.txt @@ -0,0 +1 @@ +335868a2ef8966ecd11db6532bca642cbd1d9eb31d5f9f1d79d9bd0d77f15c45 block_cloudflare_mitm_attack-1.0.0-an+fx.xpi diff --git a/archive/sha512.txt b/archive/sha512.txt new file mode 100644 index 000000000..e9c3d46ea --- /dev/null +++ b/archive/sha512.txt @@ -0,0 +1 @@ +55e0a9c04e891e9bf3abe5b72d38d4e3213e120adbbbb1422cf5bd21bac4008e546988b987d684cdf8838d773cc8bcd9d61767a53a0b7f5674abc361b1fb3a4c block_cloudflare_mitm_attack-1.0.0-an+fx.xpi diff --git a/src/icons/icon-48.png b/src/icons/icon-48.png new file mode 100644 index 0000000000000000000000000000000000000000..31dcc7fa7c8fa5e8e0a588d412addec88685d677 GIT binary patch literal 1587 zcmV-32F&@1P)f4sXw1Bo1DbP!y0tL~QM_Zxv-QM;V``amkF>Vtj z;QZr$$(Pe}&hMQ2`|kbnJEu#QkRU;V1PKx(NRU`?0KjU(sM+e!NHcL&my#IfEA6AV zly>bC z%lYZC;T!od!bt$*RbQ}N-3gYCY|x4e09Q%DJl5BR8ScjNkyKu`m17` z`?W|f&c1Ho$62hU>%qYIWSS<%M}S}PMDze#sW%uIA3qwm6g?a_Gd=`sxeuu8euD`K z!-`KTTAfa3?xG8rQgZz*bwAoH{KyCTYX`u}*yO@Xy{40z53Qve;6DE(82TDrc8iI= z=mLygWw^TP7Z|Ne1RMRmc_nQwc%omq7fi!l;3Vv(#q#{Ch_Cl|RIR}~Qo%~!_{bvj zp`lEEvWbQs6%8AgF782FHC_%7RrRR3g15dU+xnV-u(@dVxI23;K_H z{wMFA@&v^h)TW^R3D2j-x;c>O37QNKw68bZySN$5CF{X1jBh~#-dGR;1VL=E)qZ1C zq;7=kK|atNu<*PdJo7uy2L_Y90dM+A?9ysiE|37*R-6}PlqC3qAZGufQy9A+>}@B- z?(4>UEwjRXr$JmdQ+?Jr`k4nNTCxv554EDaV1xA9?*?gA!Ys9d{E%l^>l_yCb)WL{ z5};6yRMK*D$2lCX4pp8LNYHBlOO`$_9S%pZRN6gW*U+eEv#a#=^^N-8-rg9p3kxTCE_Ma3?0d%KfWah2e5>j@s8N0=>U!rd1LLJ=WIwcPxBElgsCH2Ly&dQt~N?iH!xL(FlGA{NUXAbnxD=0n*N;+dtc}!&OjN z1lgA6&~BO?V{LUQ~gTXRU zsZR1_f) z3Sr;Az}0NF@J%E@h`z9{tE-!R_uf6$rAyg3oz8$=yLQ243WbP|KkBNgs)m@DSZHl+ zgFn!|;Smwg+b0LPT;8lyDp{i%&DN)#woy!G85SNMjzvXBWBG-Jr!HTnWV6|9tVhX%} literal 0 HcmV?d00001 diff --git a/src/icons/icon-64.png b/src/icons/icon-64.png new file mode 100644 index 0000000000000000000000000000000000000000..44dc2ae2546d7d69fe19850c91245c91e5819ead GIT binary patch literal 2037 zcmV(9tLU0jCHoOIPVObu#%gSRP_qDtH zd+s6xwVgu3!^C@L{&Vl%d(S=R`+ev8&N+8>5r9RHvK9#d1ONg60e}EN03ZMm00;mC z00IC3fB@i81R#_JEW`sp8XFt?o!xG0wcD&jED_hr{~jB&$CLYyeQ%Ao*=+lm5pADE zkqBLJG_>h{phZp?xxNva+`qumk^#;<4E{L+;>qum*MDfUaYanSRVd?L!f?h;-1#C6 zbbFygmexG)!{%ST2vM8^M}}KpA?#Q6|_p79@lY5iR{r7*AqbqL;?N zl<0z<&qYwzWILphrxB%2N?nsRd9PC{g7Mlqn2JMS&hiG`lnh!aMQ?33SP~-iz-^2f z``sQoV;P27Nj&pohM|u0M-t1&^(}HOALqI>A80Z{CS^{3&Jq6;8W8{af&2Q8#_#FV zcHvImKA3O3220Hu7}RahwpE`YZR~h>JZ|qV7GFV-EQw&aN~(5+}Qe9ohfw#EYjmJIw!G zInaLW0gWUUR)$WT$GM)0rf>K-I%K@I7Mc%Nqvy2qv~*7l$2m>A-h_1LzOH9T_eH{C!H~P!D;-Qyh9b^ z0_rnoFy$d++04xS%8+GQKPKlDXwR*L^bJpx`Y*gXPPu|93B;J8e?9^Pe^B{g&O{72_eSXji<6%#!(i^+5&$FZZO zrR69nk{~lP+o7^DDZ0D67j~O#G#V9q{9c2PuP-iKNHBzigiwbMhhb=Fh*LB)vIT`j zY++$Bn|Gst)%5nTG()q+l2Vqe3|V!uNoq&J;-{aYs;bH%vbC+eDX&p`z3hdOk`lKmp|?3UF4na8iN$1;l;Q4r zr0IpVYw>SU5_0qMuyyNJq>Iz>)`=7Nm6sPJl49}>30hiPXSPxliISRk|6w=GX7k>O zYgVh(i*&Aw2jKnNors7$j^FR_!O6Ez@|~Up5V$W0uEeX6M~-2~&Ruxk!vksQ;zX zvhdRMlrW5?%gNaZ{$%7FI2a0dcX!m>szcPfQCPWZ6~e-g;GYSX324*vGXl`k($>7} zC(9rbi7=qkOWNAoC9!emq19?}?AS4UCc1{?Y$!y?lO{1aRnZI0}nPNcil= z+4ysgAw2RV4I4Hf^5{_zr(nJ3dQ?~6bo47YB+Sv5h{&VFN#5vGc7fDITifkwk|ZUX z{sGA}zv0=hl$Mq`azJo!F!l!p;nJm#8+)``_rJe?8e*}SZ(J9!H^3Yp9}k0J2(Q2X zCjv-^ccV|CsksG8((vf$DB?bhM|Msw8X6k0%f|=){{9FI48+0EP*QIYLFC=H+rI`t z4A@gvF2k$aU&VIs?L^-A$CuS<@{SHA_`FqL z{{>>>;vMz9NnP)|^?3($s=6?fEWKqyMvCH(%lOaHQ?9S(IPRBIpZhkN((bbV^Xvon z@9WpJ+7XISgd!B7Jkmw@i;Mt303ZMm00;mC00IC3fB--MAOH{m2mk~CkDUGk8+=#l TO%2YZ00000NkvXXu0mjfnLFfJ literal 0 HcmV?d00001 diff --git a/src/manifest.json b/src/manifest.json new file mode 100644 index 000000000..27b114bcc --- /dev/null +++ b/src/manifest.json @@ -0,0 +1,15 @@ +{ +"manifest_version": 2, +"name": "Block Cloudflare MiTM Attack", +"description": "If the destination use Cloudflare, block future request.", +"version": "1.0.0", +"homepage_url": "https://trac.torproject.org/projects/tor/ticket/24351", +"permissions": ["webRequest","webRequestBlocking",""], +"icons": { + "48": "icons/icon-48.png", + "64": "icons/icon-64.png" +}, +"background": { + "scripts": ["stop_cf_mitm.js"] +} +} \ No newline at end of file diff --git a/src/stop_cf_mitm.js b/src/stop_cf_mitm.js new file mode 100644 index 000000000..f00c9eb20 --- /dev/null +++ b/src/stop_cf_mitm.js @@ -0,0 +1,33 @@ +/* + <<< Detect Cloudflare MiTM Attack >>> + by Sw + why? because... + https://trac.torproject.org/projects/tor/ticket/24351 + http://www.crimeflare.com/ +*/ +//=============================================== +function analyzemydata(res){ +//console.log("mitmdetector: scanning: "+res.url); +var cflink=document.createElement('a');cflink.setAttribute('href',res.url); +var cf_hostname=cflink.hostname; +var cf_protocol=cflink.protocol; +var cf_gothead=res.responseHeaders; +cflink=null; +if ((cf_protocol=='http:'||cf_protocol=='https:') && cf_hostname.length>=4){ +//console.log("mitmdetector: testing...: "+res.url); +var is_cloudflare_infected=0;// 2 to confirm +for(var i=0;i=1){ +console.log('SECURITY_WARN: Cloudflare Detected: '+res.url); +return {redirectUrl: "https://0.0.0.0/"};// just drop the connection +} +} +return; +} +browser.webRequest.onHeadersReceived.addListener(analyzemydata,{urls: [""]},["blocking","responseHeaders"]); +// \ No newline at end of file From 5370bb3fe2f34d8de5692a1d710e8548f563a0c5 Mon Sep 17 00:00:00 2001 From: nullius Date: Mon, 11 Dec 2017 20:47:48 +0000 Subject: [PATCH 02/15] Clean up & prepare for initial push to Github Version 0.0.1-prealpha. - Delete archival copy of XPI; git history preserves it - NOT YET TESTED BY MAINTAINER (@nym-zone) --- archive/amo.md | 10 ---------- ...lock_cloudflare_mitm_attack-1.0.0-an+fx.xpi | Bin 9767 -> 0 bytes archive/headers0.http | 17 ----------------- archive/headers1.http | 15 --------------- archive/sha256.txt | 1 - archive/sha512.txt | 1 - 6 files changed, 44 deletions(-) delete mode 100644 archive/amo.md delete mode 100644 archive/block_cloudflare_mitm_attack-1.0.0-an+fx.xpi delete mode 100644 archive/headers0.http delete mode 100644 archive/headers1.http delete mode 100644 archive/sha256.txt delete mode 100644 archive/sha512.txt diff --git a/archive/amo.md b/archive/amo.md deleted file mode 100644 index d8bde2873..000000000 --- a/archive/amo.md +++ /dev/null @@ -1,10 +0,0 @@ -[https://addons.mozilla.org/en-US/firefox/addon/block-cloudflare-mitm-attack/](https://addons.mozilla.org/en-US/firefox/addon/block-cloudflare-mitm-attack/) - -# Block Cloudflare MiTM Attack -## by [cypherpunks](https://addons.mozilla.org/en-US/firefox/user/JustATorUser/) - -If the destination use Cloudflare, block future request. - -Please read: -[https://trac.torproject.org/projects/tor/ticket/24351](https://trac.torproject.org/projects/tor/ticket/24351) -[http://www.crimeflare.com/](http://www.crimeflare.com/) diff --git a/archive/block_cloudflare_mitm_attack-1.0.0-an+fx.xpi b/archive/block_cloudflare_mitm_attack-1.0.0-an+fx.xpi deleted file mode 100644 index 225bd41985e035d5ab7ce95d66b63e5e8d3c6bb5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9767 zcmbVy1yG&alJ3UcU4pv>cMT4~HMsl6-61%H;JyhGg1fuBySoN=mq+f*oiq2$dsTN{ zSM|SYty=YUS65f}>i%0%76K9z006)OdYmF<>0J-a;E@0T6I1}; castBXByu?SK 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 MzQ-h6@;|%(1NWJwb^rhX diff --git a/archive/headers0.http b/archive/headers0.http deleted file mode 100644 index 598564aa6..000000000 --- a/archive/headers0.http +++ /dev/null @@ -1,17 +0,0 @@ -HTTP/1.1 302 FOUND -Content-Security-Policy: script-src https://ssl.google-analytics.com/ga.js https://www.google.com/recaptcha/ https://www.gstatic.com/recaptcha/ https://addons.cdn.mozilla.net; style-src 'self' 'unsafe-inline' https://addons.cdn.mozilla.net; default-src 'self'; frame-src 'self' https://www.google.com/recaptcha/; child-src 'self' https://www.google.com/recaptcha/; img-src 'self' data: blob: https://ssl.google-analytics.com https://addons.cdn.mozilla.net https://static.addons.mozilla.net https://sentry.prod.mozaws.net; media-src https://videos.cdn.mozilla.net; object-src 'none'; connect-src 'self' https://sentry.prod.mozaws.net; font-src 'self' https://addons.cdn.mozilla.net; form-action 'self' https://developer.mozilla.org; base-uri 'self' https://addons.mozilla.org; report-uri /__cspreport__ -Content-Type: text/html; charset=utf-8 -Date: Mon, 11 Dec 2017 18:27:56 GMT -ETag: "d41d8cd98f00b204e9800998ecf8427e" -Location: https://addons.cdn.mozilla.net/user-media/addons/902908/block_cloudflare_mitm_attack-1.0.0-an+fx.xpi?filehash=sha256%3A335868a2ef8966ecd11db6532bca642cbd1d9eb31d5f9f1d79d9bd0d77f15c45 -Public-Key-Pins: max-age=5184000; includeSubDomains; pin-sha256="WoiWRyIOVNa9ihaBciRSC7XHjliYS9VwUGOIud4PB18="; pin-sha256="r/mIkG3eEpVdm+u/ko/cwxzOMo1bk4TyHIlByibiA5E=" -Server: nginx -strict-transport-security: max-age=31536000 -Vary: User-Agent -x-content-type-options: nosniff -X-Frame-Options: DENY -X-Target-Digest: sha256:335868a2ef8966ecd11db6532bca642cbd1d9eb31d5f9f1d79d9bd0d77f15c45 -x-xss-protection: 1; mode=block -Content-Length: 0 -Connection: keep-alive - diff --git a/archive/headers1.http b/archive/headers1.http deleted file mode 100644 index 8c0a71cb9..000000000 --- a/archive/headers1.http +++ /dev/null @@ -1,15 +0,0 @@ -HTTP/1.1 200 OK -Content-Type: application/x-xpinstall -Content-Length: 9767 -Connection: keep-alive -Accept-Ranges: bytes -Cache-Control: max-age=86400 -Content-Security-Policy: default-src 'none'; report-uri https://addons.mozilla.org/__cspreport__ -Date: Mon, 11 Dec 2017 18:29:33 GMT -Expires: Tue, 12 Dec 2017 18:29:33 GMT -Last-Modified: Mon, 11 Dec 2017 14:30:08 GMT -Server: nginx -X-Cache: Miss from cloudfront -Via: 1.1 3905f6b396c96f958286f8e228e61547.cloudfront.net (CloudFront) -X-Amz-Cf-Id: U05sJSn5Gc55Pittka0jqN1NF1a1_b5HNUDS4DLf3-I4U-dXOzJApw== - diff --git a/archive/sha256.txt b/archive/sha256.txt deleted file mode 100644 index 07440040c..000000000 --- a/archive/sha256.txt +++ /dev/null @@ -1 +0,0 @@ -335868a2ef8966ecd11db6532bca642cbd1d9eb31d5f9f1d79d9bd0d77f15c45 block_cloudflare_mitm_attack-1.0.0-an+fx.xpi diff --git a/archive/sha512.txt b/archive/sha512.txt deleted file mode 100644 index e9c3d46ea..000000000 --- a/archive/sha512.txt +++ /dev/null @@ -1 +0,0 @@ -55e0a9c04e891e9bf3abe5b72d38d4e3213e120adbbbb1422cf5bd21bac4008e546988b987d684cdf8838d773cc8bcd9d61767a53a0b7f5674abc361b1fb3a4c block_cloudflare_mitm_attack-1.0.0-an+fx.xpi From 9c4cd9c9841567fdf68919da245f9587bbab78c6 Mon Sep 17 00:00:00 2001 From: nullius Date: Tue, 12 Dec 2017 04:31:18 +0000 Subject: [PATCH 03/15] Restyle main Javascript file I tried to copy the indent style of files seen in Torbutton, with added guidance from my instincts as a C programmer accustomed to KNF. This can now be edited without wrecking diffs, unless I change it again because this will drive me crazy. Closes issue #1. --- src/stop_cf_mitm.js | 73 ++++++++++++++++++++++++++------------------- 1 file changed, 42 insertions(+), 31 deletions(-) diff --git a/src/stop_cf_mitm.js b/src/stop_cf_mitm.js index f00c9eb20..c438d2bce 100644 --- a/src/stop_cf_mitm.js +++ b/src/stop_cf_mitm.js @@ -1,33 +1,44 @@ -/* - <<< Detect Cloudflare MiTM Attack >>> - by Sw - why? because... - https://trac.torproject.org/projects/tor/ticket/24351 - http://www.crimeflare.com/ -*/ -//=============================================== -function analyzemydata(res){ -//console.log("mitmdetector: scanning: "+res.url); -var cflink=document.createElement('a');cflink.setAttribute('href',res.url); -var cf_hostname=cflink.hostname; -var cf_protocol=cflink.protocol; -var cf_gothead=res.responseHeaders; -cflink=null; -if ((cf_protocol=='http:'||cf_protocol=='https:') && cf_hostname.length>=4){ -//console.log("mitmdetector: testing...: "+res.url); -var is_cloudflare_infected=0;// 2 to confirm -for(var i=0;i=1){ -console.log('SECURITY_WARN: Cloudflare Detected: '+res.url); -return {redirectUrl: "https://0.0.0.0/"};// just drop the connection -} -} -return; +/** + * <<< Detect Cloudflare MiTM Attack >>> + * by Sw + * why? because... + * https://trac.torproject.org/projects/tor/ticket/24351 + * http://www.crimeflare.com/ + */ + +function analyzemydata(res) { + //console.log("mitmdetector: scanning: "+res.url); + var cflink = document.createElement('a'); + cflink.setAttribute('href',res.url); + var cf_hostname = cflink.hostname; + var cf_protocol = cflink.protocol; + var cf_gothead = res.responseHeaders; + cflink = null; + + if ((cf_protocol == 'http:' || cf_protocol == 'https:') && + cf_hostname.length >= 4) { + //console.log("mitmdetector: testing...: "+res.url); + var is_cloudflare_infected=0; // 2 to confirm + + for (var i=0; i < cf_gothead.length; i++) { + var cfv=cf_gothead[i]; + if (cfv['name'] == 'cf-ray' && cfv['value'] != undefined) { + is_cloudflare_infected += 1; + } + if (cfv['name'] == 'server' && cfv['value'].includes("cloudflare")) { + is_cloudflare_infected += 1; + } + if (is_cloudflare_infected == 2) { + break; + } + } + + if (is_cloudflare_infected >= 1) { + console.log('SECURITY_WARN: Cloudflare Detected: '+res.url); + return {redirectUrl: "https://0.0.0.0/"}; // just drop the connection + } + } + return; } + browser.webRequest.onHeadersReceived.addListener(analyzemydata,{urls: [""]},["blocking","responseHeaders"]); -// \ No newline at end of file From ce7503453cb41fd0471fad664e8c3b0dd80ce002 Mon Sep 17 00:00:00 2001 From: nullius Date: Sat, 30 Dec 2017 21:55:46 +0000 Subject: [PATCH 04/15] Import v1.0.7.1 from a.m.o. This is a huge jump. Sorry, I will not manually import all intermediary versions to track development. Significant changes: - Major feature: Now works with Firefox 52 / current Tor Browser. Closes #2. - Major feature: Error page. Closes #3. - Major feature: Whitelist. Closes #4. - Regression: Indentation/style is busted. Reopens #1. --- src/icons/icon-16.png | Bin 0 -> 508 bytes src/icons/icon-32.png | Bin 0 -> 1264 bytes src/icons/icon-48.png | Bin 1587 -> 1949 bytes src/icons/icon-64.png | Bin 2037 -> 2371 bytes src/manifest.json | 26 +++++-- src/setwhitelist.html | 18 +++++ src/setwhitelist.js | 44 ++++++++++++ src/stop_cf_mitm.js | 155 +++++++++++++++++++++++++++++++++++------- 8 files changed, 215 insertions(+), 28 deletions(-) create mode 100644 src/icons/icon-16.png create mode 100644 src/icons/icon-32.png create mode 100644 src/setwhitelist.html create mode 100644 src/setwhitelist.js diff --git a/src/icons/icon-16.png b/src/icons/icon-16.png new file mode 100644 index 0000000000000000000000000000000000000000..9f24ca2ed77e0e62a456d508854a57f49b704f9c GIT binary patch literal 508 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 delta 1570 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"], +"permissions": ["webRequest","webRequestBlocking","","storage","activeTab"], +"options_ui": { + "page": "setwhitelist.html", + "browser_style": true +}, "icons": { + "32": "icons/icon-32.png", "48": "icons/icon-48.png", "64": "icons/icon-64.png" }, -"background": { - "scripts": ["stop_cf_mitm.js"] +"browser_action": { +"browser_style": true, +"default_icon": { + "16": "icons/icon-16.png", + "32": "icons/icon-32.png" +} +}, +"background": {"scripts": ["stop_cf_mitm.js"]}, +"applications": { + "gecko": { + "id": "{d86b44dd-ef12-4f28-ab1c-ea32664490ac}", + "strict_min_version": "52.0" + } } } \ No newline at end of file diff --git a/src/setwhitelist.html b/src/setwhitelist.html new file mode 100644 index 000000000..4304a2648 --- /dev/null +++ b/src/setwhitelist.html @@ -0,0 +1,18 @@ +
+[Whitelist]
+1. Add FQDN you want to ignore. One FQDN per line. Click "Save".
+2. Open new tab and visit whitelisted website.
+
+
+[Advanced]
+
+
+
+
+
+
+
+
+ +
+ \ No newline at end of file diff --git a/src/setwhitelist.js b/src/setwhitelist.js new file mode 100644 index 000000000..5d009b417 --- /dev/null +++ b/src/setwhitelist.js @@ -0,0 +1,44 @@ +function saveWhitelist(e) { +e.preventDefault(); +//WHITELIST +// check each line and remove bad fqdn (simple check) +var cf_tmpdata=document.querySelector("#myset_cfwhite").value.split("\n"); +for (var i=0;ib}).reduce(function(a,b){if (a.slice(-1)[0]!==b){a.push(b);};return a;},[]);// -duplicate +cf_tmpdata=cf_tmpdata.filter(v=>v!='');// -empty +cf_tmpdata=cf_tmpdata.join("\n"); +browser.storage.local.set({myset_cfwhite: cf_tmpdata}); +document.querySelector("#myset_cfwhite").value=cf_tmpdata; +//workaround - simplewarn didn't work as expected if igncj is active +if (document.querySelector("#myset_xsimplewarn").checked){document.querySelector("#myset_xigncj").checked=false;} +//ADVANCED +if (document.querySelector("#myset_xincapsula").checked){browser.storage.local.set({myset_xincapsula: "y"});}else{browser.storage.local.set({myset_xincapsula: "n"});} +if (document.querySelector("#myset_xgshield").checked){browser.storage.local.set({myset_xgshield: "y"});}else{browser.storage.local.set({myset_xgshield: "n"});} +if (document.querySelector("#myset_xsucuri").checked){browser.storage.local.set({myset_xsucuri: "y"});}else{browser.storage.local.set({myset_xsucuri: "n"});} +if (document.querySelector("#myset_xignhttp").checked){browser.storage.local.set({myset_xignhttp: "y"});}else{browser.storage.local.set({myset_xignhttp: "n"});} +if (document.querySelector("#myset_xigncj").checked){browser.storage.local.set({myset_xigncj: "y"});}else{browser.storage.local.set({myset_xigncj: "n"});} +if (document.querySelector("#myset_xsimplewarn").checked){browser.storage.local.set({myset_xsimplewarn: "y"});}else{browser.storage.local.set({myset_xsimplewarn: "n"});} +} +function loadWhitelist(){ +function setCurrentChoice(r){ +//WHITELIST +document.querySelector("#myset_cfwhite").value = r.myset_cfwhite||""; +//ADVANCED +if (r.myset_xincapsula=='y'){document.querySelector("#myset_xincapsula").checked=true;}else{document.querySelector("#myset_xincapsula").checked=false;} +if (r.myset_xgshield=='y'){document.querySelector("#myset_xgshield").checked=true;}else{document.querySelector("#myset_xgshield").checked=false;} +if (r.myset_xsucuri=='y'){document.querySelector("#myset_xsucuri").checked=true;}else{document.querySelector("#myset_xsucuri").checked=false;} +if (r.myset_xignhttp=='y'){document.querySelector("#myset_xignhttp").checked=true;}else{document.querySelector("#myset_xignhttp").checked=false;} +if (r.myset_xigncj=='y'){document.querySelector("#myset_xigncj").checked=true;}else{document.querySelector("#myset_xigncj").checked=false;} +if (r.myset_xsimplewarn=='y'){document.querySelector("#myset_xsimplewarn").checked=true;}else{document.querySelector("#myset_xsimplewarn").checked=false;} +} +function onError(e){console.log(`CFMITM_CFG Error:${e}`);} +var getting=browser.storage.local.get(); +getting.then(setCurrentChoice, onError); +} +document.addEventListener("DOMContentLoaded", loadWhitelist); +document.querySelector("form").addEventListener("submit", saveWhitelist); \ No newline at end of file diff --git a/src/stop_cf_mitm.js b/src/stop_cf_mitm.js index c438d2bce..74c4f4c9b 100644 --- a/src/stop_cf_mitm.js +++ b/src/stop_cf_mitm.js @@ -6,8 +6,38 @@ * http://www.crimeflare.com/ */ -function analyzemydata(res) { - //console.log("mitmdetector: scanning: "+res.url); +var cf_ignore=[]; +var cf_history=[];//used by whitelist-from-warnpage +var stop_incapsula=0; +var stop_gshield=0; +var stop_sucuri=0; +var ign_phttp=0; +var ign_rescj=0; +var do_simplewarn=0; + +function whitelist_reload(w){ +//WHITELIST +if (w.myset_cfwhite){ +var tmp_whitelist=w.myset_cfwhite; +tmp_whitelist=tmp_whitelist.split("\n").filter(v=>v!=''); +cf_ignore=tmp_whitelist; +//console.log(cf_ignore); +}else{cf_ignore=[];} +//ADVANCED +if (w.myset_xincapsula=='y'){stop_incapsula=1;}else{stop_incapsula=0;} +if (w.myset_xgshield=='y'){stop_gshield=1;}else{stop_gshield=0;} +if (w.myset_xsucuri=='y'){stop_sucuri=1;}else{stop_sucuri=0;} +if (w.myset_xignhttp=='y'){ign_phttp=1;}else{ign_phttp=0;} +if (w.myset_xigncj=='y'){ign_rescj=1;}else{ign_rescj=0;} +if (w.myset_xsimplewarn=='y'){do_simplewarn=1;}else{do_simplewarn=0;} +} + +function onError(e){console.log(`CFMITM Error:${e}`);} + +function analyzemydata(res){ +var lmcfg=browser.storage.local.get();lmcfg.then(whitelist_reload,onError);// load latest settings without restarting a browser + +//console.log("CFMITM: scanning: "+res.url); var cflink = document.createElement('a'); cflink.setAttribute('href',res.url); var cf_hostname = cflink.hostname; @@ -15,30 +45,109 @@ function analyzemydata(res) { var cf_gothead = res.responseHeaders; cflink = null; - if ((cf_protocol == 'http:' || cf_protocol == 'https:') && - cf_hostname.length >= 4) { - //console.log("mitmdetector: testing...: "+res.url); - var is_cloudflare_infected=0; // 2 to confirm +//whitelisted by default (destination is same) +if (cf_hostname.endsWith('.cloudflare.com')||cf_hostname=='cloudflare.com'){return;} +if (stop_incapsula==1){if (cf_hostname.endsWith('.incapsula.com')||cf_hostname=='incapsula.com'){return;}} +if (stop_gshield==1){if (cf_hostname.endsWith('.withgoogle.com')||cf_hostname.endsWith('.google.com')){return;}} +if (stop_sucuri==1){if (cf_hostname.endsWith('.sucuri.net')||cf_hostname=='sucuri.net'){return;}} +//whitelisted +if (cf_ignore.includes(cf_hostname)){return;} +if (cf_protocol=='http:' && ign_phttp==1){return;} +if (ign_rescj==1 && /^http(.*)\.(js|css|jpg|jpeg|gif|png|tif|ico|svg|woff|woff2|ttf|cur|ani)(|\?(.*))$/.test(res.url)){return;} - for (var i=0; i < cf_gothead.length; i++) { - var cfv=cf_gothead[i]; - if (cfv['name'] == 'cf-ray' && cfv['value'] != undefined) { - is_cloudflare_infected += 1; - } - if (cfv['name'] == 'server' && cfv['value'].includes("cloudflare")) { - is_cloudflare_infected += 1; - } - if (is_cloudflare_infected == 2) { - break; - } - } - if (is_cloudflare_infected >= 1) { - console.log('SECURITY_WARN: Cloudflare Detected: '+res.url); - return {redirectUrl: "https://0.0.0.0/"}; // just drop the connection - } + if ((cf_protocol == 'http:' || cf_protocol == 'https:') && cf_hostname.length >= 4) { + +//console.log("CFMITM: testing...: "+res.url); + +var mitm_isdetected=0; +var mitm_cdnname='Cloudflare'; + +for (var i=0;i +if (mitm_isdetected>=2){break;} +} + + +var cfblockscreen=''; +if (mitm_isdetected>=1){ + +//add to history (used in gotwhitelistrequest()) +if (cf_history.length>=10){cf_history=[];} +if (!cf_history.includes(cf_hostname)){cf_history.push(cf_hostname);} + + +if (do_simplewarn!=1){// block + +console.log('SECURITY_WARN: '+mitm_cdnname+' MiTM Detected: '+res.url); +cfblockscreen='document.documentElement.innerHTML=atob(\'PGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPjxoZWFkPjx0aXRsZT5JbnNlY3VyZSBDb25uZWN0aW9uPC90aXRsZT4KPCEtLQpUaGlzIFNvdXJjZSBDb2RlIEZvcm0gaXMgc3ViamVjdCB0byB0aGUgdGVybXMgb2YgdGhlIE1vemlsbGEgUHVibGljIExpY2Vuc2UsIHYuIDIuMC4KSWYgYSBjb3B5IG9mIHRoZSBNUEwgd2FzIG5vdCBkaXN0cmlidXRlZCB3aXRoIHRoaXMgZmlsZSwgWW91IGNhbiBvYnRhaW4gb25lIGF0IGh0dHBzOi8vbW96aWxsYS5vcmcvTVBMLzIuMC8uCi8vLS0+CjxsaW5rIGlkPSJmYXZpY29uIiByZWw9Imljb24iIHR5cGU9ImltYWdlL3gtaWNvbiIgaHJlZj0iZGF0YTppbWFnZS94LWljb247YmFzZTY0LEFBQUJBQUVBRUJBQUFBRUFJQUJvQkFBQUZnQUFBQ2dBQUFBUUFBQUFJQUFBQUFFQUlBQUFBQUFBQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFPems0T0twTVNrcTZVRTlQdWxSVFU3cFhWMWU2VzF0YnVsMWRYYnBiVzF1NldGaFl1bFZWVmJwVFUxTzZVRkJRdWt4TVRMb3RMUzJiQUFBQU96WTBOSjdZM056L3Y5emgvOEhlNC8vRDRlYi94dVRwLzhqbTYvL0k1T24veCtQby84Ymo2Zi9FNGVmL3d0L2wvOEhkNC8rLzJkLy8zTi9mL3hrWkdZVTJOVFdkMk43ZS94ZWt4ZjhXdWVEL0ZycmgveGE3NGY4VXI5UC9JaXd1L3lJc0x2OFdzOS8vRjdEZS94ZXIzUDhYcHRyL0lKUzYvOTdnNGY4WkdSbUNBQUFBVjlIUTBPOTFzN3ovRjhIai94YkM0LzhXdytUL0ZMYlYveUFyTGY4Z0t5My9GcnJoL3hhMTMvOFhzTjcvRnFiVi81RzN2Zit4c2JIVUFBQUFSUUFBQUM1b1oyZVYyTjdmL3lXdHYvOFh5dWIvRnNybS94Yko1djhacThmL0dhdkgveGJBNC84V3UrSC9GclhmL3pXZ3VmL1oyZG4vTHk4dmVBQUFBQndBQUFBQUFBQUFTc2JGeGQyZ3k4Ny9LdFRtL3huVTZ2OFcwT2ovRkVKSS94UkNTUDhXeGVYL0ZyL2oveFd3MC8rc3dzUC9rNU9UdGdBQUFEb0FBQUFBQUFBQUFBQUFBQ0ZGUlVWKzZldnIvenExdnY4dzVQSC9KOS92L3lJaUl2OGlJaUwvRnNybS94YkU1UDlYcTduLzE5ZlgrQmtaR1cwQUFBQUtBQUFBQUFBQUFBQUFBQUFBQUFBQVByZTJ0c25BM3VEL0xOcmoveS9vOHY4ckt5di9LeXNyL3l2Yjd2OG12ZEQveE0vUC8zZDNkNkFBQUFBMEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCVWJHeHR0OFBEdytGckF3Lzh1N1BQL05EUTAvelEwTlA4dzNlLy9nTHUvLzhqSXlPZ0FBQUJSQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTkoyZG5iVFM0K1QvS2REVi96UThQUDgwUUVIL05MM0ovOVhaMmY5V1ZsYUxBQUFBS0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFrQUFBQlgzOS9mNzMzRXh2OHQ1dkgvTGRycC81ckJ3LysydHJiVUFBQUFSUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFMbTF0YlpYZjV1Yi9MTG5ELzBTN3hQL2QzZDMvTVRFeGVBQUFBQndBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCS3g4ZkgzYkhQMGYrOHpNMy9sNWVYdGdBQUFEb0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlUSXlNbmErdnI3VHJxNnV5UmtaR1cwQUFBQUtBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFiQUFBQVJBQUFBRDRBQUFBVkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBLy84QUFJQUJBQUFBQUFBQUFBQUFBSUFCQUFDQUF3QUF3QU1BQU9BSEFBRGdCd0FBOEE4QUFQQVBBQUQ0SHdBQStEOEFBUHcvQUFEK2Z3QUEvLzhBQUE9PSI+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+QG5hbWVzcGFjZSBodG1sICJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIjtAbmFtZXNwYWNlIHh1bCAiaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9rZXltYXN0ZXIvZ2F0ZWtlZXBlci90aGVyZS5pcy5vbmx5Lnh1bCI7KnwqOnJvb3R7LS1pbi1jb250ZW50LXBhZ2UtY29sb3I6IzQyNGU1YTstLWluLWNvbnRlbnQtcGFnZS1iYWNrZ3JvdW5kOiNmYmZiZmI7LS1pbi1jb250ZW50LXRleHQtY29sb3I6IzMzMzstLWluLWNvbnRlbnQtc2VsZWN0ZWQtdGV4dDojZmZmOy0taW4tY29udGVudC1oZWFkZXItYm9yZGVyLWNvbG9yOiNjOGM4Yzg7LS1pbi1jb250ZW50LWJveC1iYWNrZ3JvdW5kOiNmZmY7LS1pbi1jb250ZW50LWJveC1iYWNrZ3JvdW5kLW9kZDojZjNmNmZhOy0taW4tY29udGVudC1ib3gtYmFja2dyb3VuZC1ob3ZlcjojZWJlYmViOy0taW4tY29udGVudC1ib3gtYmFja2dyb3VuZC1hY3RpdmU6I2RhZGFkYTstLWluLWNvbnRlbnQtYm94LWJvcmRlci1jb2xvcjojYzFjMWMxOy0taW4tY29udGVudC1pdGVtLWhvdmVyOnJnYmEoMCwxNDksMjIxLDAuMjUpOy0taW4tY29udGVudC1pdGVtLXNlbGVjdGVkOiMwMDk1ZGQ7LS1pbi1jb250ZW50LWJvcmRlci1oaWdobGlnaHQ6I2ZmOTUwMDstLWluLWNvbnRlbnQtYm9yZGVyLWZvY3VzOiMwMDk1ZGQ7LS1pbi1jb250ZW50LWJvcmRlci1jb2xvcjojYzFjMWMxOy0taW4tY29udGVudC1jYXRlZ29yeS10ZXh0OiNjMWMxYzE7LS1pbi1jb250ZW50LWNhdGVnb3J5LWJvcmRlci1mb2N1czoxcHggZG90dGVkICNmZmY7LS1pbi1jb250ZW50LWNhdGVnb3J5LXRleHQtc2VsZWN0ZWQ6I2YyZjJmMjstLWluLWNvbnRlbnQtY2F0ZWdvcnktYmFja2dyb3VuZDojNDI0ZjVhOy0taW4tY29udGVudC1jYXRlZ29yeS1iYWNrZ3JvdW5kLWhvdmVyOiM1ZTY5NzI7LS1pbi1jb250ZW50LWNhdGVnb3J5LWJhY2tncm91bmQtYWN0aXZlOiMzNDNmNDg7LS1pbi1jb250ZW50LXRhYi1jb2xvcjojNDI0ZjVhOy0taW4tY29udGVudC1saW5rLWNvbG9yOiMwMDk1ZGQ7LS1pbi1jb250ZW50LWxpbmstY29sb3ItaG92ZXI6IzE3OGNlNTstLWluLWNvbnRlbnQtbGluay1jb2xvci1hY3RpdmU6I2ZmOTUwMDstLWluLWNvbnRlbnQtbGluay1jb2xvci12aXNpdGVkOiM1NTFhOGI7LS1pbi1jb250ZW50LXByaW1hcnktYnV0dG9uLWJhY2tncm91bmQ6IzAwOTVkZDstLWluLWNvbnRlbnQtcHJpbWFyeS1idXR0b24tYmFja2dyb3VuZC1ob3ZlcjojMDA4YWNiOy0taW4tY29udGVudC1wcmltYXJ5LWJ1dHRvbi1iYWNrZ3JvdW5kLWFjdGl2ZTojMDA2YjlkOy0taW4tY29udGVudC10YWJsZS1ib3JkZXItZGFyay1jb2xvcjojZDFkMWQxOy0taW4tY29udGVudC10YWJsZS1oZWFkZXItYmFja2dyb3VuZDojMDA5NWRkfWh0bWx8aHRtbCx4dWx8cGFnZSx4dWx8d2luZG93e2ZvbnQ6bWVzc2FnZS1ib3g7LW1vei1hcHBlYXJhbmNlOm5vbmU7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LXBhZ2UtYmFja2dyb3VuZCk7Y29sb3I6dmFyKC0taW4tY29udGVudC1wYWdlLWNvbG9yKX1odG1sfGJvZHl7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6bm9ybWFsO21hcmdpbjowfWh0bWx8aDF7Zm9udC1zaXplOjIuNWVtO2ZvbnQtd2VpZ2h0OmxpZ2h0ZXI7bGluZS1oZWlnaHQ6MS4yO2NvbG9yOnZhcigtLWluLWNvbnRlbnQtdGV4dC1jb2xvcik7bWFyZ2luOjA7bWFyZ2luLWJvdHRvbTouNWVtfWh0bWx8aHJ7Ym9yZGVyLXN0eWxlOnNvbGlkIG5vbmUgbm9uZSBub25lO2JvcmRlci1jb2xvcjp2YXIoLS1pbi1jb250ZW50LWJvcmRlci1jb2xvcil9eHVsfGNhcHRpb257LW1vei1hcHBlYXJhbmNlOm5vbmU7bWFyZ2luOjB9eHVsfGNhcHRpb24+eHVsfGNoZWNrYm94LHh1bHxjYXB0aW9uPnh1bHxsYWJlbHtmb250LXNpemU6MS4zcmVtO2ZvbnQtd2VpZ2h0OmJvbGQ7bGluZS1oZWlnaHQ6MjJweH14dWx8Y2FwdGlvbj54dWx8Y2hlY2tib3gseHVsfGNhcHRpb24+eHVsfGxhYmVse21hcmdpbjowIWltcG9ydGFudH0qfCoubWFpbi1jb250ZW50e3BhZGRpbmctdG9wOjQwcHg7cGFkZGluZy1pbmxpbmUtZW5kOjQ0cHg7cGFkZGluZy1ib3R0b206NDhweDtwYWRkaW5nLWlubGluZS1zdGFydDo0OHB4O292ZXJmbG93OmF1dG99eHVsfHByZWZwYW5lPnh1bHwqLmNvbnRlbnQtYm94e292ZXJmbG93OnZpc2libGV9eHVsfGdyb3VwYm94ey1tb3otYXBwZWFyYW5jZTpub25lO2JvcmRlcjowO21hcmdpbjoxNXB4IDAgMDtwYWRkaW5nLWlubGluZS1zdGFydDowO3BhZGRpbmctaW5saW5lLWVuZDowO2ZvbnQtc2l6ZToxLjI1cmVtfXh1bHxncm91cGJveCB4dWx8bGFiZWw6bm90KC5tZW51LWFjY2VsKTpub3QoLm1lbnUtdGV4dCk6bm90KC5pbmRlbnQpLHh1bHxncm91cGJveCB4dWx8ZGVzY3JpcHRpb257bWFyZ2luLWlubGluZS1zdGFydDowIWltcG9ydGFudDttYXJnaW4taW5saW5lLWVuZDowIWltcG9ydGFudH14dWx8dGFicGFuZWxzey1tb3otYXBwZWFyYW5jZTpub25lO2ZvbnQtc2l6ZToxLjI1cmVtO2xpbmUtaGVpZ2h0OjIycHg7Ym9yZGVyOjA7cGFkZGluZzowO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Y29sb3I6aW5oZXJpdH14dWx8dGFic3ttYXJnaW4tYm90dG9tOjE1cHg7Ym9yZGVyLXRvcDoxcHggc29saWQgdmFyKC0taW4tY29udGVudC1ib3gtYm9yZGVyLWNvbG9yKTtib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1pbi1jb250ZW50LWJveC1ib3JkZXItY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0taW4tY29udGVudC1wYWdlLWJhY2tncm91bmQpfXh1bHwqLnRhYnMtbGVmdCx4dWx8Ki50YWJzLXJpZ2h0e2JvcmRlci1ib3R0b206MH14dWx8dGFiey1tb3otYXBwZWFyYW5jZTpub25lO21hcmdpbi10b3A6MDtwYWRkaW5nOjRweCAyMHB4O21pbi1oZWlnaHQ6NDRweDtjb2xvcjp2YXIoLS1pbi1jb250ZW50LXRhYi1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LXBhZ2UtYmFja2dyb3VuZCk7Ym9yZGVyLXdpZHRoOjA7Ym9yZGVyLXJhZGl1czowIWltcG9ydGFudDt0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgNTBtcyBlYXNlIDBzfXh1bHx0YWI6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LWJveC1iYWNrZ3JvdW5kLWhvdmVyKX14dWx8dGFiW3NlbGVjdGVkXXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtYm94LWJhY2tncm91bmQtaG92ZXIpO3BhZGRpbmctYm90dG9tOjA7Ym9yZGVyLWJvdHRvbTo0cHggc29saWQgdmFyKC0taW4tY29udGVudC1ib3JkZXItaGlnaGxpZ2h0KX14dWx8Ki50YWItdGV4dHtmb250LXNpemU6MS4zcmVtO2xpbmUtaGVpZ2h0OjIycHh9aHRtbHxidXR0b257cGFkZGluZzozcHg7Zm9udDppbmhlcml0fSp8YnV0dG9uLGh0bWx8c2VsZWN0LHh1bHxjb2xvcnBpY2tlclt0eXBlPSJidXR0b24iXSx4dWx8bWVudWxpc3R7LW1vei1hcHBlYXJhbmNlOm5vbmU7bWluLWhlaWdodDozMHB4O2NvbG9yOnZhcigtLWluLWNvbnRlbnQtdGV4dC1jb2xvcik7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1pbi1jb250ZW50LWJveC1ib3JkZXItY29sb3IpOy1tb3otYm9yZGVyLXRvcC1jb2xvcnM6bm9uZSFpbXBvcnRhbnQ7LW1vei1ib3JkZXItcmlnaHQtY29sb3JzOm5vbmUhaW1wb3J0YW50Oy1tb3otYm9yZGVyLWJvdHRvbS1jb2xvcnM6bm9uZSFpbXBvcnRhbnQ7LW1vei1ib3JkZXItbGVmdC1jb2xvcnM6bm9uZSFpbXBvcnRhbnQ7Ym9yZGVyLXJhZGl1czoycHg7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LXBhZ2UtYmFja2dyb3VuZCl9aHRtbHxidXR0b246ZW5hYmxlZDpob3ZlcixodG1sfHNlbGVjdDplbmFibGVkOmhvdmVyLHh1bHxidXR0b246bm90KFtkaXNhYmxlZD0idHJ1ZSJdKTpob3Zlcix4dWx8Y29sb3JwaWNrZXJbdHlwZT0iYnV0dG9uIl06bm90KFtkaXNhYmxlZD0idHJ1ZSJdKTpob3Zlcix4dWx8bWVudWxpc3Q6bm90KFtkaXNhYmxlZD0idHJ1ZSJdKTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtYm94LWJhY2tncm91bmQtaG92ZXIpfWh0bWx8YnV0dG9uOmVuYWJsZWQ6aG92ZXI6YWN0aXZlLGh0bWx8c2VsZWN0OmVuYWJsZWQ6aG92ZXI6YWN0aXZlLHh1bHxidXR0b246bm90KFtkaXNhYmxlZD0idHJ1ZSJdKTpob3ZlcjphY3RpdmUseHVsfGNvbG9ycGlja2VyW3R5cGU9ImJ1dHRvbiJdOm5vdChbZGlzYWJsZWQ9InRydWUiXSk6aG92ZXI6YWN0aXZlLHh1bHxtZW51bGlzdFtvcGVuPSJ0cnVlIl06bm90KFtkaXNhYmxlZD0idHJ1ZSJdKXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtYm94LWJhY2tncm91bmQtYWN0aXZlKX1odG1sfGJ1dHRvbjpkaXNhYmxlZCxodG1sfHNlbGVjdDpkaXNhYmxlZCx4dWx8YnV0dG9uW2Rpc2FibGVkPSJ0cnVlIl0seHVsfGNvbG9ycGlja2VyW3R5cGU9ImJ1dHRvbiJdW2Rpc2FibGVkPSJ0cnVlIl0seHVsfG1lbnVsaXN0W2Rpc2FibGVkPSJ0cnVlIl17b3BhY2l0eTouNX0qfGJ1dHRvbi5wcmltYXJ5e2JhY2tncm91bmQtY29sb3I6dmFyKC0taW4tY29udGVudC1wcmltYXJ5LWJ1dHRvbi1iYWNrZ3JvdW5kKTtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQ7Y29sb3I6dmFyKC0taW4tY29udGVudC1zZWxlY3RlZC10ZXh0KX1odG1sfGJ1dHRvbi5wcmltYXJ5OmVuYWJsZWQ6aG92ZXIseHVsfGJ1dHRvbi5wcmltYXJ5Om5vdChbZGlzYWJsZWQ9InRydWUiXSk6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LXByaW1hcnktYnV0dG9uLWJhY2tncm91bmQtaG92ZXIpfWh0bWx8YnV0dG9uLnByaW1hcnk6ZW5hYmxlZDpob3ZlcjphY3RpdmUseHVsfGJ1dHRvbi5wcmltYXJ5Om5vdChbZGlzYWJsZWQ9InRydWUiXSk6aG92ZXI6YWN0aXZle2JhY2tncm91bmQtY29sb3I6dmFyKC0taW4tY29udGVudC1wcmltYXJ5LWJ1dHRvbi1iYWNrZ3JvdW5kLWFjdGl2ZSl9eHVsfGNvbG9ycGlja2VyW3R5cGU9ImJ1dHRvbiJde3BhZGRpbmc6NnB4O3dpZHRoOjUwcHh9eHVsfGJ1dHRvbj54dWx8Ki5idXR0b24tYm94e3BhZGRpbmctcmlnaHQ6MTBweCFpbXBvcnRhbnQ7cGFkZGluZy1sZWZ0OjEwcHghaW1wb3J0YW50fXh1bHxtZW51bGlzdD54dWx8Ki5tZW51bGlzdC1sYWJlbC1ib3g+eHVsfCoubWVudWxpc3QtaWNvbltzcmNde21hcmdpbi1pbmxpbmUtZW5kOjVweH14dWx8YnV0dG9uW3R5cGU9Im1lbnUiXT54dWx8Ki5idXR0b24tYm94Pnh1bHwqLmJ1dHRvbi1tZW51LWRyb3BtYXJrZXJ7LW1vei1hcHBlYXJhbmNlOm5vbmU7bWFyZ2luOjFweCAwO21hcmdpbi1pbmxpbmUtc3RhcnQ6MTBweDtwYWRkaW5nOjA7d2lkdGg6MTBweDtoZWlnaHQ6MTZweDtib3JkZXI6MDtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fXh1bHxidXR0b25bdHlwZT0ibWVudSJdPnh1bHxtZW51cG9wdXB7LW1vei1hcHBlYXJhbmNlOm5vbmU7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1pbi1jb250ZW50LWJveC1ib3JkZXItY29sb3IpO2JvcmRlci1yYWRpdXM6MnB4O2JhY2tncm91bmQtY29sb3I6dmFyKC0taW4tY29udGVudC1ib3gtYmFja2dyb3VuZCl9eHVsfG1lbnVsaXN0Pnh1bHxtZW51cG9wdXAgeHVsfG1lbnUseHVsfG1lbnVsaXN0Pnh1bHxtZW51cG9wdXAgeHVsfG1lbnVpdGVtLHh1bHxidXR0b25bdHlwZT0ibWVudSJdPnh1bHxtZW51cG9wdXAgeHVsfG1lbnUseHVsfGJ1dHRvblt0eXBlPSJtZW51Il0+eHVsfG1lbnVwb3B1cCB4dWx8bWVudWl0ZW17LW1vei1hcHBlYXJhbmNlOm5vbmU7Zm9udC1zaXplOjFlbTtjb2xvcjp2YXIoLS1pbi1jb250ZW50LXRleHQtY29sb3IpO3BhZGRpbmctdG9wOi4yZW07cGFkZGluZy1ib3R0b206LjJlbTtwYWRkaW5nLWlubGluZS1zdGFydDoxMHB4O3BhZGRpbmctaW5saW5lLWVuZDozMHB4fXh1bHxtZW51bGlzdD54dWx8bWVudXBvcHVwPnh1bHxtZW51Om5vdChbZGlzYWJsZWQ9InRydWUiXSlbX21vei1tZW51YWN0aXZlPSJ0cnVlIl0seHVsfG1lbnVsaXN0Pnh1bHxtZW51cG9wdXA+eHVsfG1lbnVpdGVtOm5vdChbZGlzYWJsZWQ9InRydWUiXSlbX21vei1tZW51YWN0aXZlPSJ0cnVlIl0seHVsfGJ1dHRvblt0eXBlPSJtZW51Il0+eHVsfG1lbnVwb3B1cD54dWx8bWVudTpub3QoW2Rpc2FibGVkPSJ0cnVlIl0pW19tb3otbWVudWFjdGl2ZT0idHJ1ZSJdLHh1bHxidXR0b25bdHlwZT0ibWVudSJdPnh1bHxtZW51cG9wdXA+eHVsfG1lbnVpdGVtOm5vdChbZGlzYWJsZWQ9InRydWUiXSlbX21vei1tZW51YWN0aXZlPSJ0cnVlIl17Y29sb3I6dmFyKC0taW4tY29udGVudC10ZXh0LWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtaXRlbS1ob3Zlcil9eHVsfG1lbnVsaXN0Pnh1bHxtZW51cG9wdXA+eHVsfG1lbnU6bm90KFtkaXNhYmxlZD0idHJ1ZSJdKVtzZWxlY3RlZD0idHJ1ZSJdLHh1bHxtZW51bGlzdD54dWx8bWVudXBvcHVwPnh1bHxtZW51aXRlbTpub3QoW2Rpc2FibGVkPSJ0cnVlIl0pW3NlbGVjdGVkPSJ0cnVlIl0seHVsfGJ1dHRvblt0eXBlPSJtZW51Il0+eHVsfG1lbnVwb3B1cD54dWx8bWVudTpub3QoW2Rpc2FibGVkPSJ0cnVlIl0pW3NlbGVjdGVkPSJ0cnVlIl0seHVsfGJ1dHRvblt0eXBlPSJtZW51Il0+eHVsfG1lbnVwb3B1cD54dWx8bWVudWl0ZW06bm90KFtkaXNhYmxlZD0idHJ1ZSJdKVtzZWxlY3RlZD0idHJ1ZSJde2NvbG9yOnZhcigtLWluLWNvbnRlbnQtc2VsZWN0ZWQtdGV4dCk7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LWl0ZW0tc2VsZWN0ZWQpfXh1bHxtZW51bGlzdD54dWx8bWVudXBvcHVwPnh1bHxtZW51W2Rpc2FibGVkPSJ0cnVlIl0seHVsfG1lbnVsaXN0Pnh1bHxtZW51cG9wdXA+eHVsfG1lbnVpdGVtW2Rpc2FibGVkPSJ0cnVlIl0seHVsfGJ1dHRvblt0eXBlPSJtZW51Il0+eHVsfG1lbnVwb3B1cD54dWx8bWVudVtkaXNhYmxlZD0idHJ1ZSJdLHh1bHxidXR0b25bdHlwZT0ibWVudSJdPnh1bHxtZW51cG9wdXA+eHVsfG1lbnVpdGVtW2Rpc2FibGVkPSJ0cnVlIl17Y29sb3I6Izk5OTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fXh1bHxtZW51bGlzdD54dWx8bWVudXBvcHVwIHh1bHxtZW51c2VwYXJhdG9yLHh1bHxidXR0b25bdHlwZT0ibWVudSJdPnh1bHxtZW51cG9wdXAgeHVsfG1lbnVzZXBhcmF0b3J7LW1vei1hcHBlYXJhbmNlOm5vbmU7bWFyZ2luOjA7cGFkZGluZzowO2JvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLWluLWNvbnRlbnQtYm94LWJvcmRlci1jb2xvcik7Ym9yZGVyLWJvdHRvbTowfWh0bWx8aW5wdXRbdHlwZT0idGV4dCJdLGh0bWx8dGV4dGFyZWEseHVsfHRleHRib3h7LW1vei1hcHBlYXJhbmNlOm5vbmU7Y29sb3I6dmFyKC0taW4tY29udGVudC10ZXh0LWNvbG9yKTtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWluLWNvbnRlbnQtYm94LWJvcmRlci1jb2xvcik7LW1vei1ib3JkZXItdG9wLWNvbG9yczpub25lIWltcG9ydGFudDstbW96LWJvcmRlci1yaWdodC1jb2xvcnM6bm9uZSFpbXBvcnRhbnQ7LW1vei1ib3JkZXItYm90dG9tLWNvbG9yczpub25lIWltcG9ydGFudDstbW96LWJvcmRlci1sZWZ0LWNvbG9yczpub25lIWltcG9ydGFudDtib3JkZXItcmFkaXVzOjJweDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtYm94LWJhY2tncm91bmQpfXh1bHx0ZXh0Ym94e21pbi1oZWlnaHQ6MzBweDtwYWRkaW5nLXJpZ2h0OjEwcHg7cGFkZGluZy1sZWZ0OjEwcHh9eHVsfHRleHRib3gudHJlZS1pbnB1dHttaW4taGVpZ2h0OnVuc2V0O3BhZGRpbmctcmlnaHQ6dW5zZXQ7cGFkZGluZy1sZWZ0OnVuc2V0fWh0bWx8aW5wdXRbdHlwZT0idGV4dCJdLGh0bWx8dGV4dGFyZWF7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtwYWRkaW5nOjVweCAxMHB4fWh0bWx8aW5wdXRbdHlwZT0idGV4dCJdOmZvY3VzLGh0bWx8dGV4dGFyZWE6Zm9jdXMseHVsfHRleHRib3hbZm9jdXNlZF17Ym9yZGVyLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtYm9yZGVyLWZvY3VzKX1odG1sfGlucHV0W3R5cGU9InRleHQiXTpkaXNhYmxlZCxodG1sfHRleHRhcmVhOmRpc2FibGVkLHh1bHx0ZXh0Ym94W2Rpc2FibGVkPSJ0cnVlIl17b3BhY2l0eTouNX1odG1sfGEsLnRleHQtbGlua3tjb2xvcjp2YXIoLS1pbi1jb250ZW50LWxpbmstY29sb3IpO3RleHQtZGVjb3JhdGlvbjpub25lfWh0bWx8YTpob3ZlciwudGV4dC1saW5rOmhvdmVye2NvbG9yOnZhcigtLWluLWNvbnRlbnQtbGluay1jb2xvci1ob3Zlcik7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX1odG1sfGE6dmlzaXRlZHtjb2xvcjp2YXIoLS1pbi1jb250ZW50LWxpbmstY29sb3ItdmlzaXRlZCl9aHRtbHxhOmhvdmVyOmFjdGl2ZSwudGV4dC1saW5rOmhvdmVyOmFjdGl2ZXtjb2xvcjp2YXIoLS1pbi1jb250ZW50LWxpbmstY29sb3ItYWN0aXZlKTt0ZXh0LWRlY29yYXRpb246bm9uZX1odG1sfGlucHV0W3R5cGU9ImNoZWNrYm94Il17b3BhY2l0eTowO3dpZHRoOjA7cG9pbnRlci1ldmVudHM6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZX1odG1sfGlucHV0W3R5cGU9ImNoZWNrYm94Il0raHRtbHxsYWJlbDpiZWZvcmV7ZGlzcGxheTppbmxpbmUtYmxvY2s7Y29udGVudDoiIjt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9aHRtbHxpbnB1dFt0eXBlPSJjaGVja2JveCJdK2h0bWx8bGFiZWx7bGluZS1oZWlnaHQ6MH14dWx8Y2hlY2tib3h7bWFyZ2luLWlubGluZS1zdGFydDowfXh1bHwqLmNoZWNrYm94LWNoZWNrLGh0bWx8aW5wdXRbdHlwZT0iY2hlY2tib3giXStodG1sfGxhYmVsOmJlZm9yZXstbW96LWFwcGVhcmFuY2U6bm9uZTt3aWR0aDoyM3B4O2hlaWdodDoyM3B4O2JvcmRlci1yYWRpdXM6MnB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0taW4tY29udGVudC1ib3gtYm9yZGVyLWNvbG9yKTttYXJnaW4taW5saW5lLWVuZDoxMHB4O2JhY2tncm91bmQtY29sb3I6I2YxZjFmMTtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCgjZmZmLHJnYmEoMjU1LDI1NSwyNTUsMC44KSkhaW1wb3J0YW50O2JhY2tncm91bmQtcG9zaXRpb246Y2VudGVyIGNlbnRlcjtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7Ym94LXNoYWRvdzowIDFweCAxcHggMCAjZmZmLGluc2V0IDAgMnB4IDAgMCByZ2JhKDAsMCwwLDAuMDMpfXh1bHxjaGVja2JveDpub3QoW2Rpc2FibGVkPSJ0cnVlIl0pOmhvdmVyPnh1bHwqLmNoZWNrYm94LWNoZWNrLGh0bWx8aW5wdXRbdHlwZT0iY2hlY2tib3giXTpub3QoOmRpc2FibGVkKStodG1sfGxhYmVsOmhvdmVyOmJlZm9yZXtib3JkZXItY29sb3I6dmFyKC0taW4tY29udGVudC1ib3JkZXItZm9jdXMpfXh1bHxjaGVja2JveFtkaXNhYmxlZD0idHJ1ZSJdPnh1bHwqLmNoZWNrYm94LWNoZWNrLGh0bWx8aW5wdXRbdHlwZT0iY2hlY2tib3giXTpkaXNhYmxlZCtodG1sfGxhYmVse29wYWNpdHk6LjV9eHVsfCouY2hlY2tib3gtbGFiZWwtYm94e21hcmdpbi1pbmxpbmUtc3RhcnQ6LTFweDtwYWRkaW5nLWlubGluZS1zdGFydDowfXh1bHxyaWNobGlzdGl0ZW0+eHVsfCouY2hlY2tib3gtY2hlY2t7bWFyZ2luOjNweCA2cHh9eHVsfHJhZGlve21hcmdpbi1pbmxpbmUtc3RhcnQ6MH14dWx8Ki5yYWRpby1jaGVja3stbW96LWFwcGVhcmFuY2U6bm9uZTt3aWR0aDoyM3B4O2hlaWdodDoyM3B4O2JvcmRlcjoxcHggc29saWQgdmFyKC0taW4tY29udGVudC1ib3gtYm9yZGVyLWNvbG9yKTtib3JkZXItcmFkaXVzOjUwJTttYXJnaW4taW5saW5lLWVuZDoxMHB4O2JhY2tncm91bmQtY29sb3I6I2YxZjFmMTtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCgjZmZmLHJnYmEoMjU1LDI1NSwyNTUsMC44MCkpO2JveC1zaGFkb3c6MCAxcHggMXB4IDAgI2ZmZixpbnNldCAwIDJweCAwIDAgcmdiYSgwLDAsMCwwLjAzKX14dWx8cmFkaW86bm90KFtkaXNhYmxlZD0idHJ1ZSJdKTpob3Zlcj54dWx8Ki5yYWRpby1jaGVja3tib3JkZXItY29sb3I6dmFyKC0taW4tY29udGVudC1ib3JkZXItZm9jdXMpfXh1bHxyYWRpb1tkaXNhYmxlZD0idHJ1ZSJdPnh1bHwqLnJhZGlvLWNoZWNre29wYWNpdHk6LjV9eHVsfCoucmFkaW8tbGFiZWwtYm94e21hcmdpbi1pbmxpbmUtc3RhcnQ6LTFweDttYXJnaW4taW5saW5lLWVuZDoxMHB4O3BhZGRpbmctaW5saW5lLXN0YXJ0OjB9KnwqI2NhdGVnb3JpZXN7LW1vei1hcHBlYXJhbmNlOm5vbmU7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LWNhdGVnb3J5LWJhY2tncm91bmQpO3BhZGRpbmctdG9wOjM5cHg7bWFyZ2luOjA7Ym9yZGVyLXdpZHRoOjB9KnwqLmNhdGVnb3J5ey1tb3otYXBwZWFyYW5jZTpub25lO2NvbG9yOnZhcigtLWluLWNvbnRlbnQtY2F0ZWdvcnktdGV4dCk7Ym9yZGVyLWlubGluZS1lbmQtd2lkdGg6MDtwYWRkaW5nLWlubGluZS1zdGFydDoxNXB4O3BhZGRpbmctaW5saW5lLWVuZDoyMXB4O21pbi1oZWlnaHQ6NDBweDt0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgMTUwbXN9KnwqLmNhdGVnb3J5OmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0taW4tY29udGVudC1jYXRlZ29yeS1iYWNrZ3JvdW5kLWhvdmVyKX0qfCouY2F0ZWdvcnlbc2VsZWN0ZWRdLCp8Ki5jYXRlZ29yeS5zZWxlY3RlZHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtY2F0ZWdvcnktYmFja2dyb3VuZC1hY3RpdmUpO2NvbG9yOnZhcigtLWluLWNvbnRlbnQtY2F0ZWdvcnktdGV4dC1zZWxlY3RlZCk7cGFkZGluZy1pbmxpbmUtc3RhcnQ6MTFweDtib3JkZXItaW5saW5lLXN0YXJ0OnNvbGlkIDRweCB2YXIoLS1pbi1jb250ZW50LWJvcmRlci1oaWdobGlnaHQpfSp8KiNjYXRlZ29yaWVzW2tleWJvYXJkLW5hdmlnYXRpb249InRydWUiXTotbW96LWZvY3VzcmluZz4qfCouY2F0ZWdvcnlbY3VycmVudF17Ym9yZGVyLXRvcDp2YXIoLS1pbi1jb250ZW50LWNhdGVnb3J5LWJvcmRlci1mb2N1cyk7Ym9yZGVyLWJvdHRvbTp2YXIoLS1pbi1jb250ZW50LWNhdGVnb3J5LWJvcmRlci1mb2N1cyl9KnwqLmNhdGVnb3J5LW5hbWV7bGluZS1oZWlnaHQ6MjJweDtmb250LXNpemU6MS4yNXJlbTtwYWRkaW5nLWJvdHRvbToycHg7cGFkZGluZy1pbmxpbmUtc3RhcnQ6OXB4O21hcmdpbjowOy1tb3otdXNlci1zZWxlY3Q6bm9uZX0qfCouY2F0ZWdvcnktaWNvbnt3aWR0aDoyNHB4O2hlaWdodDoyNHB4fSp8Ki5oZWFkZXJ7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgdmFyKC0taW4tY29udGVudC1oZWFkZXItYm9yZGVyLWNvbG9yKTttYXJnaW4taW5saW5lLWVuZDo0cHg7bWFyZ2luLWJvdHRvbToxNXB4O3BhZGRpbmctYm90dG9tOjE1cHg7LW1vei1ib3gtYWxpZ246YmFzZWxpbmV9KnwqLmhlYWRlci1uYW1le2ZvbnQtc2l6ZToyLjVyZW07Zm9udC13ZWlnaHQ6bm9ybWFsO2xpbmUtaGVpZ2h0OjQwcHg7bWFyZ2luOjA7LW1vei11c2VyLXNlbGVjdDpub25lfXh1bHxmaWxlZmllbGR7LW1vei1hcHBlYXJhbmNlOm5vbmU7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXI6MDtwYWRkaW5nOjB9eHVsfCouZmlsZUZpZWxkQ29udGVudEJveHtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fXh1bHwqLmZpbGVGaWVsZEljb257bWFyZ2luLWlubGluZS1zdGFydDoxMHB4O21hcmdpbi1pbmxpbmUtZW5kOjB9eHVsfCouZmlsZUZpZWxkTGFiZWx7bWFyZ2luLWlubGluZS1zdGFydDotMjZweDtwYWRkaW5nLWlubGluZS1zdGFydDozNnB4fXh1bHx0ZXh0Ym94K3h1bHxidXR0b24seHVsfGZpbGVmaWVsZCt4dWx8YnV0dG9ue2JvcmRlci1pbmxpbmUtc3RhcnQ6bm9uZX14dWx8cmljaGxpc3Rib3gseHVsfGxpc3Rib3h7LW1vei1hcHBlYXJhbmNlOm5vbmU7bWFyZ2luLWlubGluZS1zdGFydDowO2JhY2tncm91bmQtY29sb3I6dmFyKC0taW4tY29udGVudC1ib3gtYmFja2dyb3VuZCk7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1pbi1jb250ZW50LWJveC1ib3JkZXItY29sb3IpO2NvbG9yOnZhcigtLWluLWNvbnRlbnQtdGV4dC1jb2xvcil9eHVsfHRyZWVjaGlsZHJlbjo6LW1vei10cmVlLXJvdyx4dWx8bGlzdGJveCB4dWx8bGlzdGl0ZW17cGFkZGluZzouM2VtO21hcmdpbjowO2JvcmRlcjowO2JvcmRlci1yYWRpdXM6MDtiYWNrZ3JvdW5kLWltYWdlOm5vbmV9eHVsfHRyZWVjaGlsZHJlbjo6LW1vei10cmVlLXJvdyhob3ZlcikseHVsfGxpc3Rib3ggeHVsfGxpc3RpdGVtOmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0taW4tY29udGVudC1pdGVtLWhvdmVyKX14dWx8dHJlZWNoaWxkcmVuOjotbW96LXRyZWUtcm93KHNlbGVjdGVkKSx4dWx8bGlzdGJveCB4dWx8bGlzdGl0ZW1bc2VsZWN0ZWQ9InRydWUiXXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtaXRlbS1zZWxlY3RlZCk7Y29sb3I6dmFyKC0taW4tY29udGVudC1zZWxlY3RlZC10ZXh0KX14dWx8dHJlZXstbW96LWFwcGVhcmFuY2U6bm9uZTtmb250LXNpemU6MWVtO2JvcmRlcjoxcHggc29saWQgdmFyKC0taW4tY29udGVudC1ib3gtYm9yZGVyLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtYm94LWJhY2tncm91bmQpO21hcmdpbjowfXh1bHx0cmVlOi1tb3otZm9jdXNyaW5nLHh1bHxyaWNobGlzdGJveDotbW96LWZvY3VzcmluZ3tib3JkZXI6MXB4IGRvdHRlZCB2YXIoLS1pbi1jb250ZW50LWJvcmRlci1mb2N1cyl9eHVsfGxpc3RoZWFkZXIseHVsfHRyZWVjb2xzey1tb3otYXBwZWFyYW5jZTpub25lO2JvcmRlcjowO2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHZhcigtLWluLWNvbnRlbnQtYm9yZGVyLWNvbG9yKTtwYWRkaW5nOjB9LmF1dG9jb21wbGV0ZS10cmVlPnh1bHx0cmVlY29sc3tib3JkZXItYm90dG9tOm5vbmUhaW1wb3J0YW50fXh1bHx0cmVlY29sOm5vdChbaGlkZWhlYWRlcj0idHJ1ZSJdKSx4dWx8dHJlZWNvbHBpY2tlcnstbW96LWFwcGVhcmFuY2U6bm9uZTtib3JkZXI6MDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtYm94LWJhY2tncm91bmQtaG92ZXIpO2NvbG9yOiM4MDgwODA7cGFkZGluZzo1cHggMTBweH14dWx8dHJlZWNvbDpub3QoW2hpZGVoZWFkZXI9InRydWUiXSk6bm90KFtzb3J0YWJsZT0iZmFsc2UiXSk6aG92ZXIseHVsfHRyZWVjb2xwaWNrZXI6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LWJveC1iYWNrZ3JvdW5kLWFjdGl2ZSk7Y29sb3I6dmFyKC0taW4tY29udGVudC10ZXh0LWNvbG9yKX14dWx8dHJlZWNvbDpub3QoW2hpZGVoZWFkZXI9InRydWUiXSk6bm90KDpmaXJzdC1jaGlsZCkseHVsfHRyZWVjb2xwaWNrZXJ7Ym9yZGVyLWlubGluZS1zdGFydC13aWR0aDoxcHg7Ym9yZGVyLWlubGluZS1zdGFydC1zdHlsZTpzb2xpZDtib3JkZXItaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRyYW5zcGFyZW50IDAsdHJhbnNwYXJlbnQgMjAlLCNjMWMxYzEgMjAlLCNjMWMxYzEgODAlLHRyYW5zcGFyZW50IDgwJSx0cmFuc3BhcmVudCAxMDAlKSAxIDF9eHVsfHRyZWVjb2w6bm90KFtoaWRlaGVhZGVyPSJ0cnVlIl0pPnh1bHwqLnRyZWVjb2wtc29ydGRpcmVjdGlvbltzb3J0RGlyZWN0aW9uXXt3aWR0aDoxOHB4O2hlaWdodDoxOHB4fXh1bHx0cmVlY29sOm5vdChbaGlkZWhlYWRlcj0idHJ1ZSJdKT54dWx8Ki50cmVlY29sLXNvcnRkaXJlY3Rpb25bc29ydERpcmVjdGlvbj0iYXNjZW5kaW5nIl17dHJhbnNmb3JtOnNjYWxlWSgtMSl9eHVsfHRyZWVjaGlsZHJlbjo6LW1vei10cmVlLXJvd3ttaW4taGVpZ2h0OjJlbX14dWx8dHJlZWNoaWxkcmVuOjotbW96LXRyZWUtY2VsbC10ZXh0e2NvbG9yOnZhcigtLWluLWNvbnRlbnQtdGV4dC1jb2xvcil9eHVsfHRyZWVjaGlsZHJlbjo6LW1vei10cmVlLWNlbGwtdGV4dChzZWxlY3RlZCl7Y29sb3I6dmFyKC0taW4tY29udGVudC1zZWxlY3RlZC10ZXh0KX14dWx8Y2FwdGlvbntiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fXh1bHxidXR0b24saHRtbHxidXR0b24seHVsfGNvbG9ycGlja2VyW3R5cGU9ImJ1dHRvbiJdLHh1bHxtZW51bGlzdHttYXJnaW46MnB4IDRweH14dWx8bWVudWxpc3Q6bm90KFtlZGl0YWJsZT0idHJ1ZSJdKT54dWx8Ki5tZW51bGlzdC1kcm9wbWFya2Vye21hcmdpbi10b3A6MXB4O21hcmdpbi1ib3R0b206MXB4fXh1bHxjaGVja2JveHtwYWRkaW5nLWlubGluZS1zdGFydDowfXh1bHwqLmJ1dHRvbi1ib3gseHVsfCoubWVudWxpc3QtbGFiZWwtYm94LHh1bHwqLnJhZGlvLWxhYmVsLWJveCx4dWx8Ki5jaGVja2JveC1sYWJlbC1ib3h7Ym9yZGVyLXN0eWxlOm5vbmV9eHVsfGJ1dHRvbjotbW96LWZvY3VzcmluZz54dWx8Ki5idXR0b24tYm94LHh1bHxtZW51bGlzdDotbW96LWZvY3VzcmluZz54dWx8Ki5tZW51bGlzdC1sYWJlbC1ib3gseHVsfHJhZGlvW2ZvY3VzZWQ9InRydWUiXT54dWx8Ki5yYWRpby1sYWJlbC1ib3gsaHRtbHxpbnB1dFt0eXBlPSJjaGVja2JveCJdOi1tb3otZm9jdXNyaW5nK2h0bWx8bGFiZWw6YmVmb3JlLHh1bHxjaGVja2JveDotbW96LWZvY3VzcmluZz54dWx8Ki5jaGVja2JveC1sYWJlbC1ib3h7b3V0bGluZToxcHggZG90dGVkfWJvZHl7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtib3gtc2l6aW5nOmJvcmRlci1ib3g7bWluLWhlaWdodDoxMDB2aDtwYWRkaW5nLXRvcDowO3BhZGRpbmctYm90dG9tOjA7cGFkZGluZy1pbmxpbmUtc3RhcnQ6Y2FsYyg0OHB4KzQuNmVtKTtwYWRkaW5nLWlubGluZS1lbmQ6NDhweDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcn0uY29udGFpbmVye21pbi13aWR0aDoxM2VtO21heC13aWR0aDo1MmVtfS5jb250YWluZXIucmVzdG9yZS1jaG9zZW57ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtmbGV4LWdyb3c6MTttYXJnaW46MTB2aCAwfS50aXRsZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOmxlZnQgMDtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1zaXplOjEuNmVtO21hcmdpbi1pbmxpbmUtc3RhcnQ6LTIuM2VtO3BhZGRpbmctaW5saW5lLXN0YXJ0OjIuM2VtO2ZvbnQtc2l6ZToyLjVlbX0udGl0bGU6ZGlyKHJ0bCl7YmFja2dyb3VuZC1wb3NpdGlvbjpyaWdodCAwfS50aXRsZS10ZXh0e2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNjMWMxYzE7Zm9udC1zaXplOmluaGVyaXQ7cGFkZGluZy1ib3R0b206LjRlbX0uYnV0dG9uLWNvbnRhaW5lcnttYXJnaW4tdG9wOjEuMmVtfS5idXR0b24tY29udGFpbmVyPmJ1dHRvbnttaW4td2lkdGg6MTUwcHh9LmJ1dHRvbi1jb250YWluZXI+YnV0dG9uOmZpcnN0LWNoaWxke21hcmdpbi1pbmxpbmUtc3RhcnQ6MH1ib2R5e2JhY2tncm91bmQtc2l6ZTo2NHB4IDMycHg7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXg7cGFkZGluZzo3NXB4IDA7bWluLXdpZHRoOjEzZW19LmJ1dHRvbi1jb250YWluZXJ7ZGlzcGxheTpmbGV4O2ZsZXgtZmxvdzpyb3cgd3JhcH0uYnV0dG9uLXNwYWNlcntmbGV4OjF9Ym9keXtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCgtNDVkZWcsI2YwZDAwMCwjZjBkMDAwIDMzJSwjZmVkYzAwIDMzJSwjZmVkYzAwIDY2JSwjZjBkMDAwIDY2JSwjZjBkMDAwKX0jcmV0dXJuQnV0dG9ue21pbi13aWR0aDoyNTBweH0uY29udGFpbmVye3Bvc2l0aW9uOnJlbGF0aXZlfTwvc3R5bGU+CjwvaGVhZD48Ym9keT4KPGRpdiBpZD0iZXJyb3JQYWdlQ29udGFpbmVyIiBjbGFzcz0iY29udGFpbmVyIj4KPGRpdiBjbGFzcz0idGl0bGUiPjxoMSBjbGFzcz0idGl0bGUtdGV4dCI+WW91ciBjb25uZWN0aW9uIGlzIG5vdCBzZWN1cmU8L2gxPjwvZGl2PjxkaXYgaWQ9ImVycm9yTG9uZ0NvbnRlbnQiPgo8ZGl2IGlkPSJlcnJvclNob3J0RGVzYyI+PHAgaWQ9ImVycm9yU2hvcnREZXNjVGV4dCI+ClRoZSBvd25lciBvZiB0aGlzIHdlYnNpdGUgaGFzIGNvbmZpZ3VyZWQgdGhlaXIgd2Vic2l0ZSBpbXByb3Blcmx5LgpUaGUgY29ubmVjdGlvbiBiZXR3ZWVuIHlvdSBhbmQg\')+\''+cf_hostname+' is being MITMed by '+mitm_cdnname+'\'+atob(\'LgpUbyBwcm90ZWN0IHlvdXIgaW5mb3JtYXRpb24gZnJvbSBiZWluZyBzdG9sZW4sIHRoZSBhZGQtb24gc3RvcHBlZCBmdXJ0aGVyIGNvbm5lY3Rpb24gdG8gdGhpcyB3ZWJzaXRlLgo8L3A+PC9kaXY+PGRpdiBpZD0iY2VydEVycm9yQW5kQ2FwdGl2ZVBvcnRhbEJ1dHRvbkNvbnRhaW5lciIgY2xhc3M9ImJ1dHRvbi1jb250YWluZXIiPgo8YnV0dG9uIGlkPSJyZXR1cm5CdXR0b24iIGNsYXNzPSJwcmltYXJ5IiBhdXRvY29tcGxldGU9Im9mZiIgb25jbGljaz0iaGlzdG9yeS5nbygtMSkiPkdvIEJhY2s8L2J1dHRvbj4KPGRpdiBjbGFzcz0iYnV0dG9uLXNwYWNlciI+PC9kaXY+CjxidXR0b24gaWQ9ImFkdmFuY2VkQnV0dG9uIiBhdXRvY29tcGxldGU9Im9mZiIgb25jbGljaz0iaWYgKGNvbmZpcm0oJ0RvIHlvdSByZWFsbHkgd2FudCB0byBhZGQg\')+\''+cf_hostname+'\'+atob(\'IHRvIHdoaXRlbGlzdD8nKSl7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjbGluaycpLnNyYz0naHR0cHM6Ly8wLjAuMC4wL2NmbWl0bV9hZGRvbi9hbGxvdy8=\')+\''+cf_hostname+'?'+btoa(cf_hostname)+'\'+atob(\'Jzt9Ij5BZGQgRXhjZXB0aW9uPC9idXR0b24+CjwvZGl2Pgo8L2Rpdj4KPC9kaXY+CjxkaXYgc3R5bGU9ImRpc3BsYXk6bm9uZSI+PGlmcmFtZSBpZD0iYWNsaW5rIiBzcmM9Imh0dHBzOi8vMC4wLjAuMC9jZm1pdG1fYWRkb24vIj48L2lmcmFtZT48L2Rpdj4KPC9ib2R5PjwvaHRtbD4=\');window.stop();'; +var blockingCFnow=browser.tabs.executeScript(res.tabId,{code: cfblockscreen});blockingCFnow.then(()=>{return {cancel: true};},onError); + +}else{// warning only + +console.log('SECURITY_ALERT: '+mitm_cdnname+' MiTM Detected: '+res.url); +cfblockscreen='var orig_dt=document.title;setInterval(function(){var link=document.querySelector("link[rel*=\'icon\']")||document.createElement(\'link\');link.type=\'image/x-icon\';link.rel=\'icon\';link.href=\'data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOzk4OKpMSkq6UE9PulRTU7pXV1e6W1tbul1dXbpbW1u6WFhYulVVVbpTU1O6UFBQukxMTLotLS2bAAAAOzY0NJ7Y3Nz/v9zh/8He4//D4eb/xuTp/8jm6//I5On/x+Po/8bj6f/E4ef/wt/l/8Hd4/+/2d//3N/f/xkZGYU2NTWd2N7e/xekxf8WueD/Frrh/xa74f8Ur9P/Iiwu/yIsLv8Ws9//F7De/xer3P8Xptr/IJS6/97g4f8ZGRmCAAAAV9HQ0O91s7z/F8Hj/xbC4/8Ww+T/FLbV/yArLf8gKy3/Frrh/xa13/8XsN7/FqbV/5G3vf+xsbHUAAAARQAAAC5oZ2eV2N7f/yWtv/8Xyub/Fsrm/xbJ5v8Zq8f/GavH/xbA4/8Wu+H/FrXf/zWguf/Z2dn/Ly8veAAAABwAAAAAAAAASsbFxd2gy87/KtTm/xnU6v8W0Oj/FEJI/xRCSP8WxeX/Fr/j/xWw0/+swsP/k5OTtgAAADoAAAAAAAAAAAAAACFFRUV+6evr/zq1vv8w5PH/J9/v/yIiIv8iIiL/Fsrm/xbE5P9Xq7n/19fX+BkZGW0AAAAKAAAAAAAAAAAAAAAAAAAAPre2tsnA3uD/LNrj/y/o8v8rKyv/Kysr/yvb7v8mvdD/xM/P/3d3d6AAAAA0AAAAAAAAAAAAAAAAAAAAAAAAABUbGxtt8PDw+FrAw/8u7PP/NDQ0/zQ0NP8w3e//gLu//8jIyOgAAABRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANJ2dnbTS4+T/KdDV/zQ8PP80QEH/NL3J/9XZ2f9WVlaLAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAABX39/f733Exv8t5vH/Ldrp/5rBw/+2trbUAAAARQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALm1tbZXf5ub/LLnD/0S7xP/d3d3/MTExeAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABKx8fH3bHP0f+8zM3/l5eXtgAAADoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITIyMna+vr7Trq6uyRkZGW0AAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAARAAAAD4AAAAVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAIABAAAAAAAAAAAAAIABAACAAwAAwAMAAOAHAADgBwAA8A8AAPAPAAD4HwAA+D8AAPw/AAD+fwAA//8AAA==\';document.getElementsByTagName(\'head\')[0].appendChild(link);if (!document.title.startsWith(\'[!!\') && !document.title.includes(\'!!]\')){document.title=\'[!!'+mitm_cdnname+'!!] \'+orig_dt;}},2500);'; +var warningCFnow=browser.tabs.executeScript(res.tabId,{code: cfblockscreen});warningCFnow.then(function(){},onError); + +} +} + } return; } -browser.webRequest.onHeadersReceived.addListener(analyzemydata,{urls: [""]},["blocking","responseHeaders"]); +function gotwhitelistrequest(r){ +var v_whitelist=r.url.replace('https://0.0.0.0/cfmitm_addon/allow/','',).split('?',2); +if (v_whitelist.length==2){if (/^([0-9a-z.-]{4,200})$/.test(v_whitelist[0]) && v_whitelist[1]==btoa(v_whitelist[0])){ +if (cf_history.includes(v_whitelist[0])){// found in history, assume this request is valid +console.log('CFMITM: Adding to whitelist: '+v_whitelist[0]); +var _gwr=browser.storage.local.get();_gwr.then(function(r){ +var _currentwhitelist=v_whitelist[0]+"\n";if (r.myset_cfwhite){_currentwhitelist+=r.myset_cfwhite;} +_currentwhitelist=_currentwhitelist.split("\n");for (var l=0;l<_currentwhitelist.length;l++){ +if (!/^([0-9a-z.-]{1,})\.([a-z]{2,20})$/.test(_currentwhitelist[l])||_currentwhitelist[l].startsWith(".")||_currentwhitelist[l].includes("..")|| +_currentwhitelist[l].endsWith(".cloudflare.com")||_currentwhitelist[l]=='cloudflare.com'|| +_currentwhitelist[l].endsWith(".incapsula.com")||_currentwhitelist[l]=='incapsula.com'|| +_currentwhitelist[l].endsWith(".withgoogle.com")||_currentwhitelist[l].endsWith(".google.com")){_currentwhitelist[l]='';} +} +_currentwhitelist=_currentwhitelist.slice().sort(function(a,b){return a>b}).reduce(function(a,b){if (a.slice(-1)[0]!==b){a.push(b);};return a;},[]);// -duplicate +_currentwhitelist=_currentwhitelist.filter(v=>v!='');// -empty +_currentwhitelist=_currentwhitelist.join("\n"); +browser.storage.local.set({myset_cfwhite: _currentwhitelist}); +cf_ignore=_currentwhitelist.split("\n").filter(v=>v!='');//update whitelist +browser.tabs.executeScript({code: 'location.reload();'}); +},onError); +} +}} +return {cancel: true}; +} + +browser.webRequest.onHeadersReceived.addListener(analyzemydata,{urls:["http://*/*","https://*/*"]},["blocking","responseHeaders"]); +browser.webRequest.onBeforeRequest.addListener(gotwhitelistrequest,{urls:["https://0.0.0.0/cfmitm_addon/*"]},["blocking"]); +browser.browserAction.onClicked.addListener(function(t){browser.runtime.openOptionsPage().then(function(){},onError);}); From d675c90d2b096651175735279759de5a91ffb2aa Mon Sep 17 00:00:00 2001 From: nullius Date: Sat, 30 Dec 2017 22:03:16 +0000 Subject: [PATCH 05/15] Import 1.0.8 from a.m.o. Closes #7. --- src/manifest.json | 2 +- src/setwhitelist.js | 5 +++-- src/stop_cf_mitm.js | 15 +++++++-------- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/manifest.json b/src/manifest.json index eb4d69391..f94170713 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -2,7 +2,7 @@ "manifest_version": 2, "name": "Block Cloudflare MiTM Attack", "description": "If the destination website use Cloudflare, block further request.", -"version": "1.0.7.1", +"version": "1.0.8", "homepage_url": "https://trac.torproject.org/projects/tor/ticket/24351", "permissions": ["webRequest","webRequestBlocking","","storage","activeTab"], "options_ui": { diff --git a/src/setwhitelist.js b/src/setwhitelist.js index 5d009b417..33148cc50 100644 --- a/src/setwhitelist.js +++ b/src/setwhitelist.js @@ -1,4 +1,5 @@ -function saveWhitelist(e) { +function onError(e){console.log(`CFMITM_CFG Error:${e}`);} +function saveWhitelist(e){ e.preventDefault(); //WHITELIST // check each line and remove bad fqdn (simple check) @@ -23,6 +24,7 @@ if (document.querySelector("#myset_xsucuri").checked){browser.storage.local.set( if (document.querySelector("#myset_xignhttp").checked){browser.storage.local.set({myset_xignhttp: "y"});}else{browser.storage.local.set({myset_xignhttp: "n"});} if (document.querySelector("#myset_xigncj").checked){browser.storage.local.set({myset_xigncj: "y"});}else{browser.storage.local.set({myset_xigncj: "n"});} if (document.querySelector("#myset_xsimplewarn").checked){browser.storage.local.set({myset_xsimplewarn: "y"});}else{browser.storage.local.set({myset_xsimplewarn: "n"});} +browser.runtime.sendMessage({relnow:'go'}).then(function(r){},onError); } function loadWhitelist(){ function setCurrentChoice(r){ @@ -36,7 +38,6 @@ if (r.myset_xignhttp=='y'){document.querySelector("#myset_xignhttp").checked=tru if (r.myset_xigncj=='y'){document.querySelector("#myset_xigncj").checked=true;}else{document.querySelector("#myset_xigncj").checked=false;} if (r.myset_xsimplewarn=='y'){document.querySelector("#myset_xsimplewarn").checked=true;}else{document.querySelector("#myset_xsimplewarn").checked=false;} } -function onError(e){console.log(`CFMITM_CFG Error:${e}`);} var getting=browser.storage.local.get(); getting.then(setCurrentChoice, onError); } diff --git a/src/stop_cf_mitm.js b/src/stop_cf_mitm.js index 74c4f4c9b..d0fe5995e 100644 --- a/src/stop_cf_mitm.js +++ b/src/stop_cf_mitm.js @@ -6,6 +6,7 @@ * http://www.crimeflare.com/ */ +var cfaddon_isdone=0; var cf_ignore=[]; var cf_history=[];//used by whitelist-from-warnpage var stop_incapsula=0; @@ -15,13 +16,11 @@ var ign_phttp=0; var ign_rescj=0; var do_simplewarn=0; -function whitelist_reload(w){ +function whitelist_reload(){browser.storage.local.get().then(function(w){ //WHITELIST if (w.myset_cfwhite){ -var tmp_whitelist=w.myset_cfwhite; -tmp_whitelist=tmp_whitelist.split("\n").filter(v=>v!=''); +var tmp_whitelist=w.myset_cfwhite;tmp_whitelist=tmp_whitelist.split("\n").filter(v=>v!=''); cf_ignore=tmp_whitelist; -//console.log(cf_ignore); }else{cf_ignore=[];} //ADVANCED if (w.myset_xincapsula=='y'){stop_incapsula=1;}else{stop_incapsula=0;} @@ -30,12 +29,13 @@ if (w.myset_xsucuri=='y'){stop_sucuri=1;}else{stop_sucuri=0;} if (w.myset_xignhttp=='y'){ign_phttp=1;}else{ign_phttp=0;} if (w.myset_xigncj=='y'){ign_rescj=1;}else{ign_rescj=0;} if (w.myset_xsimplewarn=='y'){do_simplewarn=1;}else{do_simplewarn=0;} -} +},onError);} function onError(e){console.log(`CFMITM Error:${e}`);} function analyzemydata(res){ -var lmcfg=browser.storage.local.get();lmcfg.then(whitelist_reload,onError);// load latest settings without restarting a browser +if (cfaddon_isdone==0){cfaddon_isdone=1;whitelist_reload();} +if (ign_rescj==1){if (/^http(.*)\.(js|css|jpg|jpeg|gif|png|tif|ico|svg|woff|woff2|ttf|cur|ani)(|\?(.*))$/.test(res.url)||['image','stylesheet'].includes(res.type)){return;}} //console.log("CFMITM: scanning: "+res.url); var cflink = document.createElement('a'); @@ -53,8 +53,6 @@ if (stop_sucuri==1){if (cf_hostname.endsWith('.sucuri.net')||cf_hostname=='sucur //whitelisted if (cf_ignore.includes(cf_hostname)){return;} if (cf_protocol=='http:' && ign_phttp==1){return;} -if (ign_rescj==1 && /^http(.*)\.(js|css|jpg|jpeg|gif|png|tif|ico|svg|woff|woff2|ttf|cur|ani)(|\?(.*))$/.test(res.url)){return;} - if ((cf_protocol == 'http:' || cf_protocol == 'https:') && cf_hostname.length >= 4) { @@ -150,4 +148,5 @@ return {cancel: true}; browser.webRequest.onHeadersReceived.addListener(analyzemydata,{urls:["http://*/*","https://*/*"]},["blocking","responseHeaders"]); browser.webRequest.onBeforeRequest.addListener(gotwhitelistrequest,{urls:["https://0.0.0.0/cfmitm_addon/*"]},["blocking"]); +browser.runtime.onMessage.addListener(function(r,s,sr){if (r.relnow!=undefined){whitelist_reload();sr({response: 'ok'});};return true;}); browser.browserAction.onClicked.addListener(function(t){browser.runtime.openOptionsPage().then(function(){},onError);}); From 1b8c9cbb96899b8e22ea3495fed86944a54a0964 Mon Sep 17 00:00:00 2001 From: whatsusername <34956062+whatsusername@users.noreply.github.com> Date: Sun, 31 Dec 2017 09:03:48 +0000 Subject: [PATCH 06/15] Update README.md 1.0."8" --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ab7beafc2..7987dd2fb 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,6 @@ The purpose of this browser add-on is to block Cloudflare sites. The TLS protocol promises end-to-end encryption between the client and an authenticated, identified endpoint server. The browser’s lock icon is a UI widget which makes this promise to the user. Cloudflare is a mass-decryption chokepoint, which intercepts and decrypts the Web requests made by billions of people to millions of websites. - Prior discussion: [Tor Browser Bug #24351: Block Global Active Adversary Cloudflare](https://trac.torproject.org/projects/tor/ticket/24351) -- Imported from [block_cloudflare_mitm_attack-1.0.0-an+fx.xpi](https://addons.mozilla.org/en-US/firefox/addon/block-cloudflare-mitm-attack/), by an anonymous cypherpunk. “Cyperpunks write code.” Cheers! +- Imported from [block_cloudflare_mitm_attack-1.0.8-an+fx.xpi](https://addons.mozilla.org/en-US/firefox/addon/block-cloudflare-mitm-attack/), by an anonymous cypherpunk. “Cyperpunks write code.” Cheers! - [Original announcement](https://trac.torproject.org/projects/tor/ticket/24351#comment:25) - Thanks to [Debian Bug #831835](https://bugs.debian.org/831835) for some inspiration. From f5662f9d009ec9ab01c37e68b1c2e86837b25611 Mon Sep 17 00:00:00 2001 From: whatsusername <34956062+whatsusername@users.noreply.github.com> Date: Sun, 31 Dec 2017 09:08:16 +0000 Subject: [PATCH 07/15] Update setwhitelist.html --- src/setwhitelist.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/setwhitelist.html b/src/setwhitelist.html index 4304a2648..14ea029b9 100644 --- a/src/setwhitelist.html +++ b/src/setwhitelist.html @@ -1,4 +1,4 @@ -
+ [Whitelist]
1. Add FQDN you want to ignore. One FQDN per line. Click "Save".
2. Open new tab and visit whitelisted website.
@@ -15,4 +15,4 @@
- \ No newline at end of file + From 7bfd49499d0b3f29cc62ca48d8e13efcf38727eb Mon Sep 17 00:00:00 2001 From: whatsusername <34956062+whatsusername@users.noreply.github.com> Date: Sun, 31 Dec 2017 09:09:30 +0000 Subject: [PATCH 08/15] Update manifest.json --- src/manifest.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/manifest.json b/src/manifest.json index f94170713..e168c3fa5 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -2,12 +2,12 @@ "manifest_version": 2, "name": "Block Cloudflare MiTM Attack", "description": "If the destination website use Cloudflare, block further request.", -"version": "1.0.8", +"version": "1.0.8.1", "homepage_url": "https://trac.torproject.org/projects/tor/ticket/24351", "permissions": ["webRequest","webRequestBlocking","","storage","activeTab"], "options_ui": { "page": "setwhitelist.html", - "browser_style": true + "browser_style": false }, "icons": { "32": "icons/icon-32.png", @@ -28,4 +28,4 @@ "strict_min_version": "52.0" } } -} \ No newline at end of file +} From 03babb23b45da000739b420d98a8f13367befa2d Mon Sep 17 00:00:00 2001 From: whatsusername <34956062+whatsusername@users.noreply.github.com> Date: Sun, 31 Dec 2017 09:10:32 +0000 Subject: [PATCH 09/15] Update setwhitelist.html --- src/setwhitelist.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/setwhitelist.html b/src/setwhitelist.html index 14ea029b9..cf19c9d40 100644 --- a/src/setwhitelist.html +++ b/src/setwhitelist.html @@ -2,7 +2,7 @@ [Whitelist]
1. Add FQDN you want to ignore. One FQDN per line. Click "Save".
2. Open new tab and visit whitelisted website.
-
+

[Advanced]

From eff8be1b9152724b7a75b8be0ca27d0beba64d72 Mon Sep 17 00:00:00 2001 From: whatsusername <34956062+whatsusername@users.noreply.github.com> Date: Sun, 31 Dec 2017 09:12:08 +0000 Subject: [PATCH 10/15] Create style.css --- src/style.css | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 src/style.css diff --git a/src/style.css b/src/style.css new file mode 100644 index 000000000..594891ef7 --- /dev/null +++ b/src/style.css @@ -0,0 +1,3 @@ +body{font:13px Verdana} +label{-webkit-user-select:none;-moz-user-select:none} +textarea{white-space:pre;overflow-wrap:normal;overflow-x:scroll} From 0524b2a7cdc406dddc6adb456c9c6c69fde744a3 Mon Sep 17 00:00:00 2001 From: nullius Date: Tue, 2 Jan 2018 04:42:22 +0000 Subject: [PATCH 11/15] Import 1.0.8.6 from a.m.o. Closes #10. --- README.md | 2 +- src/META-INF/manifest.mf | 47 ++++++++++++++++++++ src/META-INF/mozilla.rsa | Bin 0 -> 4196 bytes src/META-INF/mozilla.sf | 4 ++ src/manifest.json | 4 +- src/setwhitelist.html | 16 ++++--- src/setwhitelist.js | 26 ++++++----- src/stop_cf_mitm.js | 90 ++++++++++++++++++--------------------- src/style.css | 2 +- 9 files changed, 121 insertions(+), 70 deletions(-) create mode 100644 src/META-INF/manifest.mf create mode 100644 src/META-INF/mozilla.rsa create mode 100644 src/META-INF/mozilla.sf diff --git a/README.md b/README.md index 7987dd2fb..70b62da8a 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,6 @@ The purpose of this browser add-on is to block Cloudflare sites. The TLS protocol promises end-to-end encryption between the client and an authenticated, identified endpoint server. The browser’s lock icon is a UI widget which makes this promise to the user. Cloudflare is a mass-decryption chokepoint, which intercepts and decrypts the Web requests made by billions of people to millions of websites. - Prior discussion: [Tor Browser Bug #24351: Block Global Active Adversary Cloudflare](https://trac.torproject.org/projects/tor/ticket/24351) -- Imported from [block_cloudflare_mitm_attack-1.0.8-an+fx.xpi](https://addons.mozilla.org/en-US/firefox/addon/block-cloudflare-mitm-attack/), by an anonymous cypherpunk. “Cyperpunks write code.” Cheers! +- Imported from [block_cloudflare_mitm_attack-1.0.8.6-an+fx.xpi](https://addons.mozilla.org/en-US/firefox/addon/block-cloudflare-mitm-attack/), by an anonymous cypherpunk. “Cyperpunks write code.” Cheers! - [Original announcement](https://trac.torproject.org/projects/tor/ticket/24351#comment:25) - Thanks to [Debian Bug #831835](https://bugs.debian.org/831835) for some inspiration. diff --git a/src/META-INF/manifest.mf b/src/META-INF/manifest.mf new file mode 100644 index 000000000..a59452c70 --- /dev/null +++ b/src/META-INF/manifest.mf @@ -0,0 +1,47 @@ +Manifest-Version: 1.0 + +Name: manifest.json +Digest-Algorithms: MD5 SHA1 +MD5-Digest: zGY60qlrfec2aFsUpYrEqw== +SHA1-Digest: v9XeO2ot0V/rLuSXYs4AUccSP4Y= + +Name: setwhitelist.html +Digest-Algorithms: MD5 SHA1 +MD5-Digest: 5IRX40t9xV3hOSzG5DQt8g== +SHA1-Digest: bZ6eElvQE432Qn5zeoGXI46I4OU= + +Name: setwhitelist.js +Digest-Algorithms: MD5 SHA1 +MD5-Digest: zyiTPW8+zVdotk5uf71nuw== +SHA1-Digest: Ttn6071lJN7uBVK2UaZOhroEm5I= + +Name: stop_cf_mitm.js +Digest-Algorithms: MD5 SHA1 +MD5-Digest: z8IOdHN5/VdbDGGQNMqMnw== +SHA1-Digest: jzwn+6SLINasUf2De/FE8fpmNJc= + +Name: style.css +Digest-Algorithms: MD5 SHA1 +MD5-Digest: qVs2pHeT+noWZ7sQttO/2Q== +SHA1-Digest: TgXktEJyUNImPTbaPF/viYfWcQo= + +Name: icons/icon-16.png +Digest-Algorithms: MD5 SHA1 +MD5-Digest: BMpS9q28ylgmlebPGO0HBw== +SHA1-Digest: ejT7934OdR+CRbKWJFoXPSvAo7M= + +Name: icons/icon-32.png +Digest-Algorithms: MD5 SHA1 +MD5-Digest: DPnYcEZnUZa6voVAI6nm0w== +SHA1-Digest: CqFkcPOpoKmq7Ly82vbmq/Ouhzs= + +Name: icons/icon-48.png +Digest-Algorithms: MD5 SHA1 +MD5-Digest: PVwvbCCjWU+2fJeaUrrwVA== +SHA1-Digest: upats+fdmYeFmAtgvIVwaW8mszA= + +Name: icons/icon-64.png +Digest-Algorithms: MD5 SHA1 +MD5-Digest: YVzojmSoYwjhM0m20OOk5A== +SHA1-Digest: sa4ES4gA5mSb0cu9UgGpp/2eh84= + diff --git a/src/META-INF/mozilla.rsa b/src/META-INF/mozilla.rsa new file mode 100644 index 0000000000000000000000000000000000000000..65093fd1a3f6cef872e4c6b025cc749496fce9be GIT binary patch literal 4196 zcmds4XH-+&wk3stbO-`U6$C^GoP^$yCW`bTMS&Q43mpV$K@pG^3sq`FKq*p#C?Hit znt*g8V4;ZgUgUy4KYjQ8c)#9wW8886oO#w<`>eCiUUTmW;23OR$IeD-MQ+l9D8Sh` z1_J=cpaTYhkkr627`ZSV1bmX5450o)0%hZ9-T^rBZU6_V&W3=01F;X2qrCs$WAj~dp?1M7wMal*PI#Q?-nlo~GZ zJ9k4N7NYwL?SBJdbFIk-EyJMb9UdHFeE?2t%6>?i>OKjZNa3E};VgutLh(YCf& zcW+U*U+)sddO08^0MtJv9s{xPd;c2B8-exk7XHQmm9O$U3xjn7xL9eCG5``l0Z2(e zT*iWx7A1ZN53ipP2#-d>0mfg&Q~fFUzkfUnzg!<)6n zS{pqL&pY<%zSnL)uS)CJ=m#HQ-fhH0GosQ3JzKI$`d;J_ugiR9BrHZ-^S$|a(6pi6 z?bvACW8nL+I!TO!{!JqS)+ zzBQ^-v3X1UiVyn=qd%ID>*n`%VKNP!a(rsNvpmPC(MZ(4$p(#~V2 zh?Z^-l002o7ag`)(6B*eN-8Emb~wA|5tmi9V&f|>yq~l7Rf1&;zZpS6`p$T~P@pwO zm_kEvXNJ;e2bjB!XDD8Mk>+-wwBQm59}Y9-S1W(LPJFwhc&30&l9zx+sBT8 zCcB=M>Yf7&a)J12+3h-T?kwxKB(r@$r{ftnyhR}^+nJC2B*)bRK|g}I4@aPz3 zdj2DMNY}lQd7f)$F2KZscVCh_lwc}hMA|MXokoR4S@i_Q(g~ek?2s;KQ)k?2p|R?_ zNJ*7X7zEjDbQG4w)0m+~(=H5W(DyRzz=BSgK63k9W}~0c0oyRwQ^=|JZXAoJOeS9G zrOLe?TU}`L#lKrsUUHn$ee<)kBUh5{W(V%otWl*0n%#W^GH^Gu21!5ABK=OHoF
    os(VjoXjDX;!mYA|8yeTAVUA=a5z7H8Zj ze|(l(MutUD34edX7M=biTy~MH;N{A3wsyI&Qz{xBo{n$BFq{#sdX!E)sXE#X`%{Gv^%g0O5|>0tppI1d2ul1H{Eyjf{x=10>J%TT z=3ttn;;TzLfytXOx_#37zR+^ge6vG_)?P^GOP2P!MEgyNLe8O&&nt_Zb)MMh*7;AT z>y$PLcMbC1p&3iqP|cj)L#HVugQ+8>1uiy~lPT4mQUSH^fEuB^1322XBiLTEDm4t|t&KO;CxaW>B z4R)+hubXjzNM!jApzey*GA9RFX`OKWF^e_KTNU8BBPtZd`c&}U+Qui+t<9G43w9q~ z38~cm=+hcC2odpUUyvm06qdo;Yx10iC>79~Lhd>&KI03l1esIZ4BXc<^E=fW_9a|w z^j%Fys#%v^c&*du@IF^)6UQK%eiYn<`{s77V!zLH=G;qb=_Lf7IfznNGEj(O%?r+# zS1eVz5#=@fKGLJt?%u_8dux$z!FakL-X79S(fNfWni!JYPEYWI2zmRbrRL>T>vdX5 zVmsRUp4!s>&GI%kNSKqam122PM6qF>mevya3Ld8CuRLj_rqoOw9Hiw@jc(I{lwB0K zN6e1(n>A`3@#XiS@BiE$sxWyc#*j!HsVl5$X_xbbQ-O3N@cRT|KX0=-{=z=`Hjd7| z8!4ZxdCnFmNyQ94-oss8Y0$`F5D#4aejqUfRo~ zkz`^{c=)5x|7S_Sfk1#b?3hiY7ASH{6$FI}u$*@E@$rxo6Z@ZMKQRni4CCc0>S5>h zZ^HI-`zs!52p%5$j+6)pX-{}*Jdrf6ea7rV%PEtvXDsxI2hNzSUTzm@KEtU&h^8_+ zU6ErxFyX68!2QtmNa0G_ZYIhWfblHAi)k(S$iQnusOPlbRaP zv$W@eiWBS{(^GYeC%@-iZoS$WT}l0x?l}LwR4Gr@YnH5?hGk@q@j+sY1pze6jN224 zx!i&Wd6^ZrUHB;R5G5ppE`zu6vu?@ttpJk$<{ zk8HGO!|1?n}ofH{Z{T)005TSAxpsupx8C`w$Wiff)UKj73gZ|H~Jp0;idzu&UG=6)qQGsu4Zz*SHbICgB2X zSBlzlo>8D|svB!FLoJy7-H+2dvsSeg-TIJfKhknKNMNbveDd}s#h0Li*h+cugdDdZ za{Gi}con6Utb$tJOWzfZ1+cQay(xm|z+th+a}lBN6-7P4zW0NT7W;K(O>(boqz4#@?`SUS(*3BBSxLb; zyHPd6dR?wOhmEwa(hdC)g-xv-iz#CdI0L=Bu3=~OV?_(c->+R>Liu#;!=(6~R^%M3 zZlkA~bhKbd&43NZ8V^!i?@Bkmt2#@~$xB@&%(R)P1fiWCt2@mcD76p>B4Oc1^K3hEM=aww=ZXIKRiy( bN=ze=nQx)nMpLN52kdJ)Ywsm+ffD}(M+maj literal 0 HcmV?d00001 diff --git a/src/META-INF/mozilla.sf b/src/META-INF/mozilla.sf new file mode 100644 index 000000000..320319dd0 --- /dev/null +++ b/src/META-INF/mozilla.sf @@ -0,0 +1,4 @@ +Signature-Version: 1.0 +MD5-Digest-Manifest: /gjyjvUwMAfWGYwYw54bpw== +SHA1-Digest-Manifest: 93RJzzo6Uc5BI3Yj2ffLSr6dWnI= + diff --git a/src/manifest.json b/src/manifest.json index e168c3fa5..0a42b2156 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -2,7 +2,7 @@ "manifest_version": 2, "name": "Block Cloudflare MiTM Attack", "description": "If the destination website use Cloudflare, block further request.", -"version": "1.0.8.1", +"version": "1.0.8.6", "homepage_url": "https://trac.torproject.org/projects/tor/ticket/24351", "permissions": ["webRequest","webRequestBlocking","","storage","activeTab"], "options_ui": { @@ -28,4 +28,4 @@ "strict_min_version": "52.0" } } -} +} \ No newline at end of file diff --git a/src/setwhitelist.html b/src/setwhitelist.html index cf19c9d40..1214be2b7 100644 --- a/src/setwhitelist.html +++ b/src/setwhitelist.html @@ -1,18 +1,22 @@
    [Whitelist]
    -1. Add FQDN you want to ignore. One FQDN per line. Click "Save".
    +1. Add FQDN or .FQDN you want to ignore. Click "Save".
    2. Open new tab and visit whitelisted website.
    +(.mozilla.org will allow mozilla.org and *.mozilla.org)

    [Advanced]



    -
    -
    -
    +


    - +When MiTM attempt is detected:
    +
    +
    +
    +
    +
    - + \ No newline at end of file diff --git a/src/setwhitelist.js b/src/setwhitelist.js index 33148cc50..a0e7305da 100644 --- a/src/setwhitelist.js +++ b/src/setwhitelist.js @@ -5,7 +5,7 @@ e.preventDefault(); // check each line and remove bad fqdn (simple check) var cf_tmpdata=document.querySelector("#myset_cfwhite").value.split("\n"); for (var i=0;ib}).reduce(function(a,b){if (a.slice(-1)[0]!==b){a.push(b);};return a;},[]);// -duplicate cf_tmpdata=cf_tmpdata.filter(v=>v!='');// -empty cf_tmpdata=cf_tmpdata.join("\n"); -browser.storage.local.set({myset_cfwhite: cf_tmpdata}); -document.querySelector("#myset_cfwhite").value=cf_tmpdata; -//workaround - simplewarn didn't work as expected if igncj is active -if (document.querySelector("#myset_xsimplewarn").checked){document.querySelector("#myset_xigncj").checked=false;} +browser.storage.local.set({myset_cfwhite: cf_tmpdata});document.querySelector("#myset_cfwhite").value=cf_tmpdata; +//workaround - simplewarn didn't work as expected if ign3p is active +if (document.querySelector("#myset_xsimplewarn_1").checked){document.querySelector("#myset_xign3p").checked=false;} //ADVANCED if (document.querySelector("#myset_xincapsula").checked){browser.storage.local.set({myset_xincapsula: "y"});}else{browser.storage.local.set({myset_xincapsula: "n"});} if (document.querySelector("#myset_xgshield").checked){browser.storage.local.set({myset_xgshield: "y"});}else{browser.storage.local.set({myset_xgshield: "n"});} if (document.querySelector("#myset_xsucuri").checked){browser.storage.local.set({myset_xsucuri: "y"});}else{browser.storage.local.set({myset_xsucuri: "n"});} -if (document.querySelector("#myset_xignhttp").checked){browser.storage.local.set({myset_xignhttp: "y"});}else{browser.storage.local.set({myset_xignhttp: "n"});} -if (document.querySelector("#myset_xigncj").checked){browser.storage.local.set({myset_xigncj: "y"});}else{browser.storage.local.set({myset_xigncj: "n"});} -if (document.querySelector("#myset_xsimplewarn").checked){browser.storage.local.set({myset_xsimplewarn: "y"});}else{browser.storage.local.set({myset_xsimplewarn: "n"});} +if (document.querySelector("#myset_xign3p").checked){browser.storage.local.set({myset_xign3p: "y"});}else{browser.storage.local.set({myset_xign3p: "n"});} +//ACTION +if (document.querySelector("#myset_xsimplewarn_0").checked){browser.storage.local.set({myset_xsimplewarn:0});} +if (document.querySelector("#myset_xsimplewarn_1").checked){browser.storage.local.set({myset_xsimplewarn:1});} +if (document.querySelector("#myset_xsimplewarn_2").checked){browser.storage.local.set({myset_xsimplewarn:2});} browser.runtime.sendMessage({relnow:'go'}).then(function(r){},onError); } function loadWhitelist(){ @@ -34,9 +35,12 @@ document.querySelector("#myset_cfwhite").value = r.myset_cfwhite||""; if (r.myset_xincapsula=='y'){document.querySelector("#myset_xincapsula").checked=true;}else{document.querySelector("#myset_xincapsula").checked=false;} if (r.myset_xgshield=='y'){document.querySelector("#myset_xgshield").checked=true;}else{document.querySelector("#myset_xgshield").checked=false;} if (r.myset_xsucuri=='y'){document.querySelector("#myset_xsucuri").checked=true;}else{document.querySelector("#myset_xsucuri").checked=false;} -if (r.myset_xignhttp=='y'){document.querySelector("#myset_xignhttp").checked=true;}else{document.querySelector("#myset_xignhttp").checked=false;} -if (r.myset_xigncj=='y'){document.querySelector("#myset_xigncj").checked=true;}else{document.querySelector("#myset_xigncj").checked=false;} -if (r.myset_xsimplewarn=='y'){document.querySelector("#myset_xsimplewarn").checked=true;}else{document.querySelector("#myset_xsimplewarn").checked=false;} +if (r.myset_xign3p=='y'){document.querySelector("#myset_xign3p").checked=true;}else{document.querySelector("#myset_xign3p").checked=false;} +if (r.myset_xsimplewarn){switch(r.myset_xsimplewarn){ +case 1:document.querySelector("#myset_xsimplewarn_1").checked=true;break; +case 2:document.querySelector("#myset_xsimplewarn_2").checked=true;break; +default:document.querySelector("#myset_xsimplewarn_0").checked=true;break; +}}else{document.querySelector("#myset_xsimplewarn_0").checked=true;} } var getting=browser.storage.local.get(); getting.then(setCurrentChoice, onError); diff --git a/src/stop_cf_mitm.js b/src/stop_cf_mitm.js index d0fe5995e..6aff8ced4 100644 --- a/src/stop_cf_mitm.js +++ b/src/stop_cf_mitm.js @@ -12,10 +12,12 @@ var cf_history=[];//used by whitelist-from-warnpage var stop_incapsula=0; var stop_gshield=0; var stop_sucuri=0; -var ign_phttp=0; -var ign_rescj=0; -var do_simplewarn=0; +var ign_thirdparty=0; +var do_reaction=0; +var cfblockscreen=''; +var cf_blocked_img='data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQBCgAAACwAAAAAAQABAAACAkQBADs='; +function onError(e){console.log(`CFMITM Error:${e}`);} function whitelist_reload(){browser.storage.local.get().then(function(w){ //WHITELIST if (w.myset_cfwhite){ @@ -26,16 +28,28 @@ cf_ignore=tmp_whitelist; if (w.myset_xincapsula=='y'){stop_incapsula=1;}else{stop_incapsula=0;} if (w.myset_xgshield=='y'){stop_gshield=1;}else{stop_gshield=0;} if (w.myset_xsucuri=='y'){stop_sucuri=1;}else{stop_sucuri=0;} -if (w.myset_xignhttp=='y'){ign_phttp=1;}else{ign_phttp=0;} -if (w.myset_xigncj=='y'){ign_rescj=1;}else{ign_rescj=0;} -if (w.myset_xsimplewarn=='y'){do_simplewarn=1;}else{do_simplewarn=0;} +if (w.myset_xign3p=='y'){ign_thirdparty=1;}else{ign_thirdparty=0;} +//ACTION +if (w.myset_xsimplewarn){switch(w.myset_xsimplewarn){ +case 1:do_reaction=1;break; +case 2:do_reaction=2;break; +default:do_reaction=0;break; +}}else{do_reaction=0;} },onError);} -function onError(e){console.log(`CFMITM Error:${e}`);} +function is_domain_ignored(w){ +if (cf_ignore.includes(w)){return true;} +var dotSTXfound=0;for(var f=0;f= 4) { //console.log("CFMITM: testing...: "+res.url); -var mitm_isdetected=0; -var mitm_cdnname='Cloudflare'; - -for (var i=0;i -if (mitm_isdetected>=2){break;} +if (mitm_isdetected>=1){break;} } - -var cfblockscreen=''; if (mitm_isdetected>=1){ - //add to history (used in gotwhitelistrequest()) if (cf_history.length>=10){cf_history=[];} if (!cf_history.includes(cf_hostname)){cf_history.push(cf_hostname);} - - -if (do_simplewarn!=1){// block - console.log('SECURITY_WARN: '+mitm_cdnname+' MiTM Detected: '+res.url); -cfblockscreen='document.documentElement.innerHTML=atob(\'PGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPjxoZWFkPjx0aXRsZT5JbnNlY3VyZSBDb25uZWN0aW9uPC90aXRsZT4KPCEtLQpUaGlzIFNvdXJjZSBDb2RlIEZvcm0gaXMgc3ViamVjdCB0byB0aGUgdGVybXMgb2YgdGhlIE1vemlsbGEgUHVibGljIExpY2Vuc2UsIHYuIDIuMC4KSWYgYSBjb3B5IG9mIHRoZSBNUEwgd2FzIG5vdCBkaXN0cmlidXRlZCB3aXRoIHRoaXMgZmlsZSwgWW91IGNhbiBvYnRhaW4gb25lIGF0IGh0dHBzOi8vbW96aWxsYS5vcmcvTVBMLzIuMC8uCi8vLS0+CjxsaW5rIGlkPSJmYXZpY29uIiByZWw9Imljb24iIHR5cGU9ImltYWdlL3gtaWNvbiIgaHJlZj0iZGF0YTppbWFnZS94LWljb247YmFzZTY0LEFBQUJBQUVBRUJBQUFBRUFJQUJvQkFBQUZnQUFBQ2dBQUFBUUFBQUFJQUFBQUFFQUlBQUFBQUFBQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFPems0T0twTVNrcTZVRTlQdWxSVFU3cFhWMWU2VzF0YnVsMWRYYnBiVzF1NldGaFl1bFZWVmJwVFUxTzZVRkJRdWt4TVRMb3RMUzJiQUFBQU96WTBOSjdZM056L3Y5emgvOEhlNC8vRDRlYi94dVRwLzhqbTYvL0k1T24veCtQby84Ymo2Zi9FNGVmL3d0L2wvOEhkNC8rLzJkLy8zTi9mL3hrWkdZVTJOVFdkMk43ZS94ZWt4ZjhXdWVEL0ZycmgveGE3NGY4VXI5UC9JaXd1L3lJc0x2OFdzOS8vRjdEZS94ZXIzUDhYcHRyL0lKUzYvOTdnNGY4WkdSbUNBQUFBVjlIUTBPOTFzN3ovRjhIai94YkM0LzhXdytUL0ZMYlYveUFyTGY4Z0t5My9GcnJoL3hhMTMvOFhzTjcvRnFiVi81RzN2Zit4c2JIVUFBQUFSUUFBQUM1b1oyZVYyTjdmL3lXdHYvOFh5dWIvRnNybS94Yko1djhacThmL0dhdkgveGJBNC84V3UrSC9GclhmL3pXZ3VmL1oyZG4vTHk4dmVBQUFBQndBQUFBQUFBQUFTc2JGeGQyZ3k4Ny9LdFRtL3huVTZ2OFcwT2ovRkVKSS94UkNTUDhXeGVYL0ZyL2oveFd3MC8rc3dzUC9rNU9UdGdBQUFEb0FBQUFBQUFBQUFBQUFBQ0ZGUlVWKzZldnIvenExdnY4dzVQSC9KOS92L3lJaUl2OGlJaUwvRnNybS94YkU1UDlYcTduLzE5ZlgrQmtaR1cwQUFBQUtBQUFBQUFBQUFBQUFBQUFBQUFBQVByZTJ0c25BM3VEL0xOcmoveS9vOHY4ckt5di9LeXNyL3l2Yjd2OG12ZEQveE0vUC8zZDNkNkFBQUFBMEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCVWJHeHR0OFBEdytGckF3Lzh1N1BQL05EUTAvelEwTlA4dzNlLy9nTHUvLzhqSXlPZ0FBQUJSQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTkoyZG5iVFM0K1QvS2REVi96UThQUDgwUUVIL05MM0ovOVhaMmY5V1ZsYUxBQUFBS0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFrQUFBQlgzOS9mNzMzRXh2OHQ1dkgvTGRycC81ckJ3LysydHJiVUFBQUFSUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFMbTF0YlpYZjV1Yi9MTG5ELzBTN3hQL2QzZDMvTVRFeGVBQUFBQndBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCS3g4ZkgzYkhQMGYrOHpNMy9sNWVYdGdBQUFEb0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlUSXlNbmErdnI3VHJxNnV5UmtaR1cwQUFBQUtBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFiQUFBQVJBQUFBRDRBQUFBVkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBLy84QUFJQUJBQUFBQUFBQUFBQUFBSUFCQUFDQUF3QUF3QU1BQU9BSEFBRGdCd0FBOEE4QUFQQVBBQUQ0SHdBQStEOEFBUHcvQUFEK2Z3QUEvLzhBQUE9PSI+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+QG5hbWVzcGFjZSBodG1sICJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIjtAbmFtZXNwYWNlIHh1bCAiaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9rZXltYXN0ZXIvZ2F0ZWtlZXBlci90aGVyZS5pcy5vbmx5Lnh1bCI7KnwqOnJvb3R7LS1pbi1jb250ZW50LXBhZ2UtY29sb3I6IzQyNGU1YTstLWluLWNvbnRlbnQtcGFnZS1iYWNrZ3JvdW5kOiNmYmZiZmI7LS1pbi1jb250ZW50LXRleHQtY29sb3I6IzMzMzstLWluLWNvbnRlbnQtc2VsZWN0ZWQtdGV4dDojZmZmOy0taW4tY29udGVudC1oZWFkZXItYm9yZGVyLWNvbG9yOiNjOGM4Yzg7LS1pbi1jb250ZW50LWJveC1iYWNrZ3JvdW5kOiNmZmY7LS1pbi1jb250ZW50LWJveC1iYWNrZ3JvdW5kLW9kZDojZjNmNmZhOy0taW4tY29udGVudC1ib3gtYmFja2dyb3VuZC1ob3ZlcjojZWJlYmViOy0taW4tY29udGVudC1ib3gtYmFja2dyb3VuZC1hY3RpdmU6I2RhZGFkYTstLWluLWNvbnRlbnQtYm94LWJvcmRlci1jb2xvcjojYzFjMWMxOy0taW4tY29udGVudC1pdGVtLWhvdmVyOnJnYmEoMCwxNDksMjIxLDAuMjUpOy0taW4tY29udGVudC1pdGVtLXNlbGVjdGVkOiMwMDk1ZGQ7LS1pbi1jb250ZW50LWJvcmRlci1oaWdobGlnaHQ6I2ZmOTUwMDstLWluLWNvbnRlbnQtYm9yZGVyLWZvY3VzOiMwMDk1ZGQ7LS1pbi1jb250ZW50LWJvcmRlci1jb2xvcjojYzFjMWMxOy0taW4tY29udGVudC1jYXRlZ29yeS10ZXh0OiNjMWMxYzE7LS1pbi1jb250ZW50LWNhdGVnb3J5LWJvcmRlci1mb2N1czoxcHggZG90dGVkICNmZmY7LS1pbi1jb250ZW50LWNhdGVnb3J5LXRleHQtc2VsZWN0ZWQ6I2YyZjJmMjstLWluLWNvbnRlbnQtY2F0ZWdvcnktYmFja2dyb3VuZDojNDI0ZjVhOy0taW4tY29udGVudC1jYXRlZ29yeS1iYWNrZ3JvdW5kLWhvdmVyOiM1ZTY5NzI7LS1pbi1jb250ZW50LWNhdGVnb3J5LWJhY2tncm91bmQtYWN0aXZlOiMzNDNmNDg7LS1pbi1jb250ZW50LXRhYi1jb2xvcjojNDI0ZjVhOy0taW4tY29udGVudC1saW5rLWNvbG9yOiMwMDk1ZGQ7LS1pbi1jb250ZW50LWxpbmstY29sb3ItaG92ZXI6IzE3OGNlNTstLWluLWNvbnRlbnQtbGluay1jb2xvci1hY3RpdmU6I2ZmOTUwMDstLWluLWNvbnRlbnQtbGluay1jb2xvci12aXNpdGVkOiM1NTFhOGI7LS1pbi1jb250ZW50LXByaW1hcnktYnV0dG9uLWJhY2tncm91bmQ6IzAwOTVkZDstLWluLWNvbnRlbnQtcHJpbWFyeS1idXR0b24tYmFja2dyb3VuZC1ob3ZlcjojMDA4YWNiOy0taW4tY29udGVudC1wcmltYXJ5LWJ1dHRvbi1iYWNrZ3JvdW5kLWFjdGl2ZTojMDA2YjlkOy0taW4tY29udGVudC10YWJsZS1ib3JkZXItZGFyay1jb2xvcjojZDFkMWQxOy0taW4tY29udGVudC10YWJsZS1oZWFkZXItYmFja2dyb3VuZDojMDA5NWRkfWh0bWx8aHRtbCx4dWx8cGFnZSx4dWx8d2luZG93e2ZvbnQ6bWVzc2FnZS1ib3g7LW1vei1hcHBlYXJhbmNlOm5vbmU7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LXBhZ2UtYmFja2dyb3VuZCk7Y29sb3I6dmFyKC0taW4tY29udGVudC1wYWdlLWNvbG9yKX1odG1sfGJvZHl7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6bm9ybWFsO21hcmdpbjowfWh0bWx8aDF7Zm9udC1zaXplOjIuNWVtO2ZvbnQtd2VpZ2h0OmxpZ2h0ZXI7bGluZS1oZWlnaHQ6MS4yO2NvbG9yOnZhcigtLWluLWNvbnRlbnQtdGV4dC1jb2xvcik7bWFyZ2luOjA7bWFyZ2luLWJvdHRvbTouNWVtfWh0bWx8aHJ7Ym9yZGVyLXN0eWxlOnNvbGlkIG5vbmUgbm9uZSBub25lO2JvcmRlci1jb2xvcjp2YXIoLS1pbi1jb250ZW50LWJvcmRlci1jb2xvcil9eHVsfGNhcHRpb257LW1vei1hcHBlYXJhbmNlOm5vbmU7bWFyZ2luOjB9eHVsfGNhcHRpb24+eHVsfGNoZWNrYm94LHh1bHxjYXB0aW9uPnh1bHxsYWJlbHtmb250LXNpemU6MS4zcmVtO2ZvbnQtd2VpZ2h0OmJvbGQ7bGluZS1oZWlnaHQ6MjJweH14dWx8Y2FwdGlvbj54dWx8Y2hlY2tib3gseHVsfGNhcHRpb24+eHVsfGxhYmVse21hcmdpbjowIWltcG9ydGFudH0qfCoubWFpbi1jb250ZW50e3BhZGRpbmctdG9wOjQwcHg7cGFkZGluZy1pbmxpbmUtZW5kOjQ0cHg7cGFkZGluZy1ib3R0b206NDhweDtwYWRkaW5nLWlubGluZS1zdGFydDo0OHB4O292ZXJmbG93OmF1dG99eHVsfHByZWZwYW5lPnh1bHwqLmNvbnRlbnQtYm94e292ZXJmbG93OnZpc2libGV9eHVsfGdyb3VwYm94ey1tb3otYXBwZWFyYW5jZTpub25lO2JvcmRlcjowO21hcmdpbjoxNXB4IDAgMDtwYWRkaW5nLWlubGluZS1zdGFydDowO3BhZGRpbmctaW5saW5lLWVuZDowO2ZvbnQtc2l6ZToxLjI1cmVtfXh1bHxncm91cGJveCB4dWx8bGFiZWw6bm90KC5tZW51LWFjY2VsKTpub3QoLm1lbnUtdGV4dCk6bm90KC5pbmRlbnQpLHh1bHxncm91cGJveCB4dWx8ZGVzY3JpcHRpb257bWFyZ2luLWlubGluZS1zdGFydDowIWltcG9ydGFudDttYXJnaW4taW5saW5lLWVuZDowIWltcG9ydGFudH14dWx8dGFicGFuZWxzey1tb3otYXBwZWFyYW5jZTpub25lO2ZvbnQtc2l6ZToxLjI1cmVtO2xpbmUtaGVpZ2h0OjIycHg7Ym9yZGVyOjA7cGFkZGluZzowO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Y29sb3I6aW5oZXJpdH14dWx8dGFic3ttYXJnaW4tYm90dG9tOjE1cHg7Ym9yZGVyLXRvcDoxcHggc29saWQgdmFyKC0taW4tY29udGVudC1ib3gtYm9yZGVyLWNvbG9yKTtib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1pbi1jb250ZW50LWJveC1ib3JkZXItY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0taW4tY29udGVudC1wYWdlLWJhY2tncm91bmQpfXh1bHwqLnRhYnMtbGVmdCx4dWx8Ki50YWJzLXJpZ2h0e2JvcmRlci1ib3R0b206MH14dWx8dGFiey1tb3otYXBwZWFyYW5jZTpub25lO21hcmdpbi10b3A6MDtwYWRkaW5nOjRweCAyMHB4O21pbi1oZWlnaHQ6NDRweDtjb2xvcjp2YXIoLS1pbi1jb250ZW50LXRhYi1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LXBhZ2UtYmFja2dyb3VuZCk7Ym9yZGVyLXdpZHRoOjA7Ym9yZGVyLXJhZGl1czowIWltcG9ydGFudDt0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgNTBtcyBlYXNlIDBzfXh1bHx0YWI6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LWJveC1iYWNrZ3JvdW5kLWhvdmVyKX14dWx8dGFiW3NlbGVjdGVkXXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtYm94LWJhY2tncm91bmQtaG92ZXIpO3BhZGRpbmctYm90dG9tOjA7Ym9yZGVyLWJvdHRvbTo0cHggc29saWQgdmFyKC0taW4tY29udGVudC1ib3JkZXItaGlnaGxpZ2h0KX14dWx8Ki50YWItdGV4dHtmb250LXNpemU6MS4zcmVtO2xpbmUtaGVpZ2h0OjIycHh9aHRtbHxidXR0b257cGFkZGluZzozcHg7Zm9udDppbmhlcml0fSp8YnV0dG9uLGh0bWx8c2VsZWN0LHh1bHxjb2xvcnBpY2tlclt0eXBlPSJidXR0b24iXSx4dWx8bWVudWxpc3R7LW1vei1hcHBlYXJhbmNlOm5vbmU7bWluLWhlaWdodDozMHB4O2NvbG9yOnZhcigtLWluLWNvbnRlbnQtdGV4dC1jb2xvcik7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1pbi1jb250ZW50LWJveC1ib3JkZXItY29sb3IpOy1tb3otYm9yZGVyLXRvcC1jb2xvcnM6bm9uZSFpbXBvcnRhbnQ7LW1vei1ib3JkZXItcmlnaHQtY29sb3JzOm5vbmUhaW1wb3J0YW50Oy1tb3otYm9yZGVyLWJvdHRvbS1jb2xvcnM6bm9uZSFpbXBvcnRhbnQ7LW1vei1ib3JkZXItbGVmdC1jb2xvcnM6bm9uZSFpbXBvcnRhbnQ7Ym9yZGVyLXJhZGl1czoycHg7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LXBhZ2UtYmFja2dyb3VuZCl9aHRtbHxidXR0b246ZW5hYmxlZDpob3ZlcixodG1sfHNlbGVjdDplbmFibGVkOmhvdmVyLHh1bHxidXR0b246bm90KFtkaXNhYmxlZD0idHJ1ZSJdKTpob3Zlcix4dWx8Y29sb3JwaWNrZXJbdHlwZT0iYnV0dG9uIl06bm90KFtkaXNhYmxlZD0idHJ1ZSJdKTpob3Zlcix4dWx8bWVudWxpc3Q6bm90KFtkaXNhYmxlZD0idHJ1ZSJdKTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtYm94LWJhY2tncm91bmQtaG92ZXIpfWh0bWx8YnV0dG9uOmVuYWJsZWQ6aG92ZXI6YWN0aXZlLGh0bWx8c2VsZWN0OmVuYWJsZWQ6aG92ZXI6YWN0aXZlLHh1bHxidXR0b246bm90KFtkaXNhYmxlZD0idHJ1ZSJdKTpob3ZlcjphY3RpdmUseHVsfGNvbG9ycGlja2VyW3R5cGU9ImJ1dHRvbiJdOm5vdChbZGlzYWJsZWQ9InRydWUiXSk6aG92ZXI6YWN0aXZlLHh1bHxtZW51bGlzdFtvcGVuPSJ0cnVlIl06bm90KFtkaXNhYmxlZD0idHJ1ZSJdKXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtYm94LWJhY2tncm91bmQtYWN0aXZlKX1odG1sfGJ1dHRvbjpkaXNhYmxlZCxodG1sfHNlbGVjdDpkaXNhYmxlZCx4dWx8YnV0dG9uW2Rpc2FibGVkPSJ0cnVlIl0seHVsfGNvbG9ycGlja2VyW3R5cGU9ImJ1dHRvbiJdW2Rpc2FibGVkPSJ0cnVlIl0seHVsfG1lbnVsaXN0W2Rpc2FibGVkPSJ0cnVlIl17b3BhY2l0eTouNX0qfGJ1dHRvbi5wcmltYXJ5e2JhY2tncm91bmQtY29sb3I6dmFyKC0taW4tY29udGVudC1wcmltYXJ5LWJ1dHRvbi1iYWNrZ3JvdW5kKTtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQ7Y29sb3I6dmFyKC0taW4tY29udGVudC1zZWxlY3RlZC10ZXh0KX1odG1sfGJ1dHRvbi5wcmltYXJ5OmVuYWJsZWQ6aG92ZXIseHVsfGJ1dHRvbi5wcmltYXJ5Om5vdChbZGlzYWJsZWQ9InRydWUiXSk6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LXByaW1hcnktYnV0dG9uLWJhY2tncm91bmQtaG92ZXIpfWh0bWx8YnV0dG9uLnByaW1hcnk6ZW5hYmxlZDpob3ZlcjphY3RpdmUseHVsfGJ1dHRvbi5wcmltYXJ5Om5vdChbZGlzYWJsZWQ9InRydWUiXSk6aG92ZXI6YWN0aXZle2JhY2tncm91bmQtY29sb3I6dmFyKC0taW4tY29udGVudC1wcmltYXJ5LWJ1dHRvbi1iYWNrZ3JvdW5kLWFjdGl2ZSl9eHVsfGNvbG9ycGlja2VyW3R5cGU9ImJ1dHRvbiJde3BhZGRpbmc6NnB4O3dpZHRoOjUwcHh9eHVsfGJ1dHRvbj54dWx8Ki5idXR0b24tYm94e3BhZGRpbmctcmlnaHQ6MTBweCFpbXBvcnRhbnQ7cGFkZGluZy1sZWZ0OjEwcHghaW1wb3J0YW50fXh1bHxtZW51bGlzdD54dWx8Ki5tZW51bGlzdC1sYWJlbC1ib3g+eHVsfCoubWVudWxpc3QtaWNvbltzcmNde21hcmdpbi1pbmxpbmUtZW5kOjVweH14dWx8YnV0dG9uW3R5cGU9Im1lbnUiXT54dWx8Ki5idXR0b24tYm94Pnh1bHwqLmJ1dHRvbi1tZW51LWRyb3BtYXJrZXJ7LW1vei1hcHBlYXJhbmNlOm5vbmU7bWFyZ2luOjFweCAwO21hcmdpbi1pbmxpbmUtc3RhcnQ6MTBweDtwYWRkaW5nOjA7d2lkdGg6MTBweDtoZWlnaHQ6MTZweDtib3JkZXI6MDtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fXh1bHxidXR0b25bdHlwZT0ibWVudSJdPnh1bHxtZW51cG9wdXB7LW1vei1hcHBlYXJhbmNlOm5vbmU7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1pbi1jb250ZW50LWJveC1ib3JkZXItY29sb3IpO2JvcmRlci1yYWRpdXM6MnB4O2JhY2tncm91bmQtY29sb3I6dmFyKC0taW4tY29udGVudC1ib3gtYmFja2dyb3VuZCl9eHVsfG1lbnVsaXN0Pnh1bHxtZW51cG9wdXAgeHVsfG1lbnUseHVsfG1lbnVsaXN0Pnh1bHxtZW51cG9wdXAgeHVsfG1lbnVpdGVtLHh1bHxidXR0b25bdHlwZT0ibWVudSJdPnh1bHxtZW51cG9wdXAgeHVsfG1lbnUseHVsfGJ1dHRvblt0eXBlPSJtZW51Il0+eHVsfG1lbnVwb3B1cCB4dWx8bWVudWl0ZW17LW1vei1hcHBlYXJhbmNlOm5vbmU7Zm9udC1zaXplOjFlbTtjb2xvcjp2YXIoLS1pbi1jb250ZW50LXRleHQtY29sb3IpO3BhZGRpbmctdG9wOi4yZW07cGFkZGluZy1ib3R0b206LjJlbTtwYWRkaW5nLWlubGluZS1zdGFydDoxMHB4O3BhZGRpbmctaW5saW5lLWVuZDozMHB4fXh1bHxtZW51bGlzdD54dWx8bWVudXBvcHVwPnh1bHxtZW51Om5vdChbZGlzYWJsZWQ9InRydWUiXSlbX21vei1tZW51YWN0aXZlPSJ0cnVlIl0seHVsfG1lbnVsaXN0Pnh1bHxtZW51cG9wdXA+eHVsfG1lbnVpdGVtOm5vdChbZGlzYWJsZWQ9InRydWUiXSlbX21vei1tZW51YWN0aXZlPSJ0cnVlIl0seHVsfGJ1dHRvblt0eXBlPSJtZW51Il0+eHVsfG1lbnVwb3B1cD54dWx8bWVudTpub3QoW2Rpc2FibGVkPSJ0cnVlIl0pW19tb3otbWVudWFjdGl2ZT0idHJ1ZSJdLHh1bHxidXR0b25bdHlwZT0ibWVudSJdPnh1bHxtZW51cG9wdXA+eHVsfG1lbnVpdGVtOm5vdChbZGlzYWJsZWQ9InRydWUiXSlbX21vei1tZW51YWN0aXZlPSJ0cnVlIl17Y29sb3I6dmFyKC0taW4tY29udGVudC10ZXh0LWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtaXRlbS1ob3Zlcil9eHVsfG1lbnVsaXN0Pnh1bHxtZW51cG9wdXA+eHVsfG1lbnU6bm90KFtkaXNhYmxlZD0idHJ1ZSJdKVtzZWxlY3RlZD0idHJ1ZSJdLHh1bHxtZW51bGlzdD54dWx8bWVudXBvcHVwPnh1bHxtZW51aXRlbTpub3QoW2Rpc2FibGVkPSJ0cnVlIl0pW3NlbGVjdGVkPSJ0cnVlIl0seHVsfGJ1dHRvblt0eXBlPSJtZW51Il0+eHVsfG1lbnVwb3B1cD54dWx8bWVudTpub3QoW2Rpc2FibGVkPSJ0cnVlIl0pW3NlbGVjdGVkPSJ0cnVlIl0seHVsfGJ1dHRvblt0eXBlPSJtZW51Il0+eHVsfG1lbnVwb3B1cD54dWx8bWVudWl0ZW06bm90KFtkaXNhYmxlZD0idHJ1ZSJdKVtzZWxlY3RlZD0idHJ1ZSJde2NvbG9yOnZhcigtLWluLWNvbnRlbnQtc2VsZWN0ZWQtdGV4dCk7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LWl0ZW0tc2VsZWN0ZWQpfXh1bHxtZW51bGlzdD54dWx8bWVudXBvcHVwPnh1bHxtZW51W2Rpc2FibGVkPSJ0cnVlIl0seHVsfG1lbnVsaXN0Pnh1bHxtZW51cG9wdXA+eHVsfG1lbnVpdGVtW2Rpc2FibGVkPSJ0cnVlIl0seHVsfGJ1dHRvblt0eXBlPSJtZW51Il0+eHVsfG1lbnVwb3B1cD54dWx8bWVudVtkaXNhYmxlZD0idHJ1ZSJdLHh1bHxidXR0b25bdHlwZT0ibWVudSJdPnh1bHxtZW51cG9wdXA+eHVsfG1lbnVpdGVtW2Rpc2FibGVkPSJ0cnVlIl17Y29sb3I6Izk5OTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fXh1bHxtZW51bGlzdD54dWx8bWVudXBvcHVwIHh1bHxtZW51c2VwYXJhdG9yLHh1bHxidXR0b25bdHlwZT0ibWVudSJdPnh1bHxtZW51cG9wdXAgeHVsfG1lbnVzZXBhcmF0b3J7LW1vei1hcHBlYXJhbmNlOm5vbmU7bWFyZ2luOjA7cGFkZGluZzowO2JvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLWluLWNvbnRlbnQtYm94LWJvcmRlci1jb2xvcik7Ym9yZGVyLWJvdHRvbTowfWh0bWx8aW5wdXRbdHlwZT0idGV4dCJdLGh0bWx8dGV4dGFyZWEseHVsfHRleHRib3h7LW1vei1hcHBlYXJhbmNlOm5vbmU7Y29sb3I6dmFyKC0taW4tY29udGVudC10ZXh0LWNvbG9yKTtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWluLWNvbnRlbnQtYm94LWJvcmRlci1jb2xvcik7LW1vei1ib3JkZXItdG9wLWNvbG9yczpub25lIWltcG9ydGFudDstbW96LWJvcmRlci1yaWdodC1jb2xvcnM6bm9uZSFpbXBvcnRhbnQ7LW1vei1ib3JkZXItYm90dG9tLWNvbG9yczpub25lIWltcG9ydGFudDstbW96LWJvcmRlci1sZWZ0LWNvbG9yczpub25lIWltcG9ydGFudDtib3JkZXItcmFkaXVzOjJweDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtYm94LWJhY2tncm91bmQpfXh1bHx0ZXh0Ym94e21pbi1oZWlnaHQ6MzBweDtwYWRkaW5nLXJpZ2h0OjEwcHg7cGFkZGluZy1sZWZ0OjEwcHh9eHVsfHRleHRib3gudHJlZS1pbnB1dHttaW4taGVpZ2h0OnVuc2V0O3BhZGRpbmctcmlnaHQ6dW5zZXQ7cGFkZGluZy1sZWZ0OnVuc2V0fWh0bWx8aW5wdXRbdHlwZT0idGV4dCJdLGh0bWx8dGV4dGFyZWF7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtwYWRkaW5nOjVweCAxMHB4fWh0bWx8aW5wdXRbdHlwZT0idGV4dCJdOmZvY3VzLGh0bWx8dGV4dGFyZWE6Zm9jdXMseHVsfHRleHRib3hbZm9jdXNlZF17Ym9yZGVyLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtYm9yZGVyLWZvY3VzKX1odG1sfGlucHV0W3R5cGU9InRleHQiXTpkaXNhYmxlZCxodG1sfHRleHRhcmVhOmRpc2FibGVkLHh1bHx0ZXh0Ym94W2Rpc2FibGVkPSJ0cnVlIl17b3BhY2l0eTouNX1odG1sfGEsLnRleHQtbGlua3tjb2xvcjp2YXIoLS1pbi1jb250ZW50LWxpbmstY29sb3IpO3RleHQtZGVjb3JhdGlvbjpub25lfWh0bWx8YTpob3ZlciwudGV4dC1saW5rOmhvdmVye2NvbG9yOnZhcigtLWluLWNvbnRlbnQtbGluay1jb2xvci1ob3Zlcik7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX1odG1sfGE6dmlzaXRlZHtjb2xvcjp2YXIoLS1pbi1jb250ZW50LWxpbmstY29sb3ItdmlzaXRlZCl9aHRtbHxhOmhvdmVyOmFjdGl2ZSwudGV4dC1saW5rOmhvdmVyOmFjdGl2ZXtjb2xvcjp2YXIoLS1pbi1jb250ZW50LWxpbmstY29sb3ItYWN0aXZlKTt0ZXh0LWRlY29yYXRpb246bm9uZX1odG1sfGlucHV0W3R5cGU9ImNoZWNrYm94Il17b3BhY2l0eTowO3dpZHRoOjA7cG9pbnRlci1ldmVudHM6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZX1odG1sfGlucHV0W3R5cGU9ImNoZWNrYm94Il0raHRtbHxsYWJlbDpiZWZvcmV7ZGlzcGxheTppbmxpbmUtYmxvY2s7Y29udGVudDoiIjt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9aHRtbHxpbnB1dFt0eXBlPSJjaGVja2JveCJdK2h0bWx8bGFiZWx7bGluZS1oZWlnaHQ6MH14dWx8Y2hlY2tib3h7bWFyZ2luLWlubGluZS1zdGFydDowfXh1bHwqLmNoZWNrYm94LWNoZWNrLGh0bWx8aW5wdXRbdHlwZT0iY2hlY2tib3giXStodG1sfGxhYmVsOmJlZm9yZXstbW96LWFwcGVhcmFuY2U6bm9uZTt3aWR0aDoyM3B4O2hlaWdodDoyM3B4O2JvcmRlci1yYWRpdXM6MnB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0taW4tY29udGVudC1ib3gtYm9yZGVyLWNvbG9yKTttYXJnaW4taW5saW5lLWVuZDoxMHB4O2JhY2tncm91bmQtY29sb3I6I2YxZjFmMTtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCgjZmZmLHJnYmEoMjU1LDI1NSwyNTUsMC44KSkhaW1wb3J0YW50O2JhY2tncm91bmQtcG9zaXRpb246Y2VudGVyIGNlbnRlcjtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7Ym94LXNoYWRvdzowIDFweCAxcHggMCAjZmZmLGluc2V0IDAgMnB4IDAgMCByZ2JhKDAsMCwwLDAuMDMpfXh1bHxjaGVja2JveDpub3QoW2Rpc2FibGVkPSJ0cnVlIl0pOmhvdmVyPnh1bHwqLmNoZWNrYm94LWNoZWNrLGh0bWx8aW5wdXRbdHlwZT0iY2hlY2tib3giXTpub3QoOmRpc2FibGVkKStodG1sfGxhYmVsOmhvdmVyOmJlZm9yZXtib3JkZXItY29sb3I6dmFyKC0taW4tY29udGVudC1ib3JkZXItZm9jdXMpfXh1bHxjaGVja2JveFtkaXNhYmxlZD0idHJ1ZSJdPnh1bHwqLmNoZWNrYm94LWNoZWNrLGh0bWx8aW5wdXRbdHlwZT0iY2hlY2tib3giXTpkaXNhYmxlZCtodG1sfGxhYmVse29wYWNpdHk6LjV9eHVsfCouY2hlY2tib3gtbGFiZWwtYm94e21hcmdpbi1pbmxpbmUtc3RhcnQ6LTFweDtwYWRkaW5nLWlubGluZS1zdGFydDowfXh1bHxyaWNobGlzdGl0ZW0+eHVsfCouY2hlY2tib3gtY2hlY2t7bWFyZ2luOjNweCA2cHh9eHVsfHJhZGlve21hcmdpbi1pbmxpbmUtc3RhcnQ6MH14dWx8Ki5yYWRpby1jaGVja3stbW96LWFwcGVhcmFuY2U6bm9uZTt3aWR0aDoyM3B4O2hlaWdodDoyM3B4O2JvcmRlcjoxcHggc29saWQgdmFyKC0taW4tY29udGVudC1ib3gtYm9yZGVyLWNvbG9yKTtib3JkZXItcmFkaXVzOjUwJTttYXJnaW4taW5saW5lLWVuZDoxMHB4O2JhY2tncm91bmQtY29sb3I6I2YxZjFmMTtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCgjZmZmLHJnYmEoMjU1LDI1NSwyNTUsMC44MCkpO2JveC1zaGFkb3c6MCAxcHggMXB4IDAgI2ZmZixpbnNldCAwIDJweCAwIDAgcmdiYSgwLDAsMCwwLjAzKX14dWx8cmFkaW86bm90KFtkaXNhYmxlZD0idHJ1ZSJdKTpob3Zlcj54dWx8Ki5yYWRpby1jaGVja3tib3JkZXItY29sb3I6dmFyKC0taW4tY29udGVudC1ib3JkZXItZm9jdXMpfXh1bHxyYWRpb1tkaXNhYmxlZD0idHJ1ZSJdPnh1bHwqLnJhZGlvLWNoZWNre29wYWNpdHk6LjV9eHVsfCoucmFkaW8tbGFiZWwtYm94e21hcmdpbi1pbmxpbmUtc3RhcnQ6LTFweDttYXJnaW4taW5saW5lLWVuZDoxMHB4O3BhZGRpbmctaW5saW5lLXN0YXJ0OjB9KnwqI2NhdGVnb3JpZXN7LW1vei1hcHBlYXJhbmNlOm5vbmU7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LWNhdGVnb3J5LWJhY2tncm91bmQpO3BhZGRpbmctdG9wOjM5cHg7bWFyZ2luOjA7Ym9yZGVyLXdpZHRoOjB9KnwqLmNhdGVnb3J5ey1tb3otYXBwZWFyYW5jZTpub25lO2NvbG9yOnZhcigtLWluLWNvbnRlbnQtY2F0ZWdvcnktdGV4dCk7Ym9yZGVyLWlubGluZS1lbmQtd2lkdGg6MDtwYWRkaW5nLWlubGluZS1zdGFydDoxNXB4O3BhZGRpbmctaW5saW5lLWVuZDoyMXB4O21pbi1oZWlnaHQ6NDBweDt0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgMTUwbXN9KnwqLmNhdGVnb3J5OmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0taW4tY29udGVudC1jYXRlZ29yeS1iYWNrZ3JvdW5kLWhvdmVyKX0qfCouY2F0ZWdvcnlbc2VsZWN0ZWRdLCp8Ki5jYXRlZ29yeS5zZWxlY3RlZHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtY2F0ZWdvcnktYmFja2dyb3VuZC1hY3RpdmUpO2NvbG9yOnZhcigtLWluLWNvbnRlbnQtY2F0ZWdvcnktdGV4dC1zZWxlY3RlZCk7cGFkZGluZy1pbmxpbmUtc3RhcnQ6MTFweDtib3JkZXItaW5saW5lLXN0YXJ0OnNvbGlkIDRweCB2YXIoLS1pbi1jb250ZW50LWJvcmRlci1oaWdobGlnaHQpfSp8KiNjYXRlZ29yaWVzW2tleWJvYXJkLW5hdmlnYXRpb249InRydWUiXTotbW96LWZvY3VzcmluZz4qfCouY2F0ZWdvcnlbY3VycmVudF17Ym9yZGVyLXRvcDp2YXIoLS1pbi1jb250ZW50LWNhdGVnb3J5LWJvcmRlci1mb2N1cyk7Ym9yZGVyLWJvdHRvbTp2YXIoLS1pbi1jb250ZW50LWNhdGVnb3J5LWJvcmRlci1mb2N1cyl9KnwqLmNhdGVnb3J5LW5hbWV7bGluZS1oZWlnaHQ6MjJweDtmb250LXNpemU6MS4yNXJlbTtwYWRkaW5nLWJvdHRvbToycHg7cGFkZGluZy1pbmxpbmUtc3RhcnQ6OXB4O21hcmdpbjowOy1tb3otdXNlci1zZWxlY3Q6bm9uZX0qfCouY2F0ZWdvcnktaWNvbnt3aWR0aDoyNHB4O2hlaWdodDoyNHB4fSp8Ki5oZWFkZXJ7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgdmFyKC0taW4tY29udGVudC1oZWFkZXItYm9yZGVyLWNvbG9yKTttYXJnaW4taW5saW5lLWVuZDo0cHg7bWFyZ2luLWJvdHRvbToxNXB4O3BhZGRpbmctYm90dG9tOjE1cHg7LW1vei1ib3gtYWxpZ246YmFzZWxpbmV9KnwqLmhlYWRlci1uYW1le2ZvbnQtc2l6ZToyLjVyZW07Zm9udC13ZWlnaHQ6bm9ybWFsO2xpbmUtaGVpZ2h0OjQwcHg7bWFyZ2luOjA7LW1vei11c2VyLXNlbGVjdDpub25lfXh1bHxmaWxlZmllbGR7LW1vei1hcHBlYXJhbmNlOm5vbmU7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXI6MDtwYWRkaW5nOjB9eHVsfCouZmlsZUZpZWxkQ29udGVudEJveHtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fXh1bHwqLmZpbGVGaWVsZEljb257bWFyZ2luLWlubGluZS1zdGFydDoxMHB4O21hcmdpbi1pbmxpbmUtZW5kOjB9eHVsfCouZmlsZUZpZWxkTGFiZWx7bWFyZ2luLWlubGluZS1zdGFydDotMjZweDtwYWRkaW5nLWlubGluZS1zdGFydDozNnB4fXh1bHx0ZXh0Ym94K3h1bHxidXR0b24seHVsfGZpbGVmaWVsZCt4dWx8YnV0dG9ue2JvcmRlci1pbmxpbmUtc3RhcnQ6bm9uZX14dWx8cmljaGxpc3Rib3gseHVsfGxpc3Rib3h7LW1vei1hcHBlYXJhbmNlOm5vbmU7bWFyZ2luLWlubGluZS1zdGFydDowO2JhY2tncm91bmQtY29sb3I6dmFyKC0taW4tY29udGVudC1ib3gtYmFja2dyb3VuZCk7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1pbi1jb250ZW50LWJveC1ib3JkZXItY29sb3IpO2NvbG9yOnZhcigtLWluLWNvbnRlbnQtdGV4dC1jb2xvcil9eHVsfHRyZWVjaGlsZHJlbjo6LW1vei10cmVlLXJvdyx4dWx8bGlzdGJveCB4dWx8bGlzdGl0ZW17cGFkZGluZzouM2VtO21hcmdpbjowO2JvcmRlcjowO2JvcmRlci1yYWRpdXM6MDtiYWNrZ3JvdW5kLWltYWdlOm5vbmV9eHVsfHRyZWVjaGlsZHJlbjo6LW1vei10cmVlLXJvdyhob3ZlcikseHVsfGxpc3Rib3ggeHVsfGxpc3RpdGVtOmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0taW4tY29udGVudC1pdGVtLWhvdmVyKX14dWx8dHJlZWNoaWxkcmVuOjotbW96LXRyZWUtcm93KHNlbGVjdGVkKSx4dWx8bGlzdGJveCB4dWx8bGlzdGl0ZW1bc2VsZWN0ZWQ9InRydWUiXXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtaXRlbS1zZWxlY3RlZCk7Y29sb3I6dmFyKC0taW4tY29udGVudC1zZWxlY3RlZC10ZXh0KX14dWx8dHJlZXstbW96LWFwcGVhcmFuY2U6bm9uZTtmb250LXNpemU6MWVtO2JvcmRlcjoxcHggc29saWQgdmFyKC0taW4tY29udGVudC1ib3gtYm9yZGVyLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtYm94LWJhY2tncm91bmQpO21hcmdpbjowfXh1bHx0cmVlOi1tb3otZm9jdXNyaW5nLHh1bHxyaWNobGlzdGJveDotbW96LWZvY3VzcmluZ3tib3JkZXI6MXB4IGRvdHRlZCB2YXIoLS1pbi1jb250ZW50LWJvcmRlci1mb2N1cyl9eHVsfGxpc3RoZWFkZXIseHVsfHRyZWVjb2xzey1tb3otYXBwZWFyYW5jZTpub25lO2JvcmRlcjowO2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHZhcigtLWluLWNvbnRlbnQtYm9yZGVyLWNvbG9yKTtwYWRkaW5nOjB9LmF1dG9jb21wbGV0ZS10cmVlPnh1bHx0cmVlY29sc3tib3JkZXItYm90dG9tOm5vbmUhaW1wb3J0YW50fXh1bHx0cmVlY29sOm5vdChbaGlkZWhlYWRlcj0idHJ1ZSJdKSx4dWx8dHJlZWNvbHBpY2tlcnstbW96LWFwcGVhcmFuY2U6bm9uZTtib3JkZXI6MDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtYm94LWJhY2tncm91bmQtaG92ZXIpO2NvbG9yOiM4MDgwODA7cGFkZGluZzo1cHggMTBweH14dWx8dHJlZWNvbDpub3QoW2hpZGVoZWFkZXI9InRydWUiXSk6bm90KFtzb3J0YWJsZT0iZmFsc2UiXSk6aG92ZXIseHVsfHRyZWVjb2xwaWNrZXI6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LWJveC1iYWNrZ3JvdW5kLWFjdGl2ZSk7Y29sb3I6dmFyKC0taW4tY29udGVudC10ZXh0LWNvbG9yKX14dWx8dHJlZWNvbDpub3QoW2hpZGVoZWFkZXI9InRydWUiXSk6bm90KDpmaXJzdC1jaGlsZCkseHVsfHRyZWVjb2xwaWNrZXJ7Ym9yZGVyLWlubGluZS1zdGFydC13aWR0aDoxcHg7Ym9yZGVyLWlubGluZS1zdGFydC1zdHlsZTpzb2xpZDtib3JkZXItaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRyYW5zcGFyZW50IDAsdHJhbnNwYXJlbnQgMjAlLCNjMWMxYzEgMjAlLCNjMWMxYzEgODAlLHRyYW5zcGFyZW50IDgwJSx0cmFuc3BhcmVudCAxMDAlKSAxIDF9eHVsfHRyZWVjb2w6bm90KFtoaWRlaGVhZGVyPSJ0cnVlIl0pPnh1bHwqLnRyZWVjb2wtc29ydGRpcmVjdGlvbltzb3J0RGlyZWN0aW9uXXt3aWR0aDoxOHB4O2hlaWdodDoxOHB4fXh1bHx0cmVlY29sOm5vdChbaGlkZWhlYWRlcj0idHJ1ZSJdKT54dWx8Ki50cmVlY29sLXNvcnRkaXJlY3Rpb25bc29ydERpcmVjdGlvbj0iYXNjZW5kaW5nIl17dHJhbnNmb3JtOnNjYWxlWSgtMSl9eHVsfHRyZWVjaGlsZHJlbjo6LW1vei10cmVlLXJvd3ttaW4taGVpZ2h0OjJlbX14dWx8dHJlZWNoaWxkcmVuOjotbW96LXRyZWUtY2VsbC10ZXh0e2NvbG9yOnZhcigtLWluLWNvbnRlbnQtdGV4dC1jb2xvcil9eHVsfHRyZWVjaGlsZHJlbjo6LW1vei10cmVlLWNlbGwtdGV4dChzZWxlY3RlZCl7Y29sb3I6dmFyKC0taW4tY29udGVudC1zZWxlY3RlZC10ZXh0KX14dWx8Y2FwdGlvbntiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fXh1bHxidXR0b24saHRtbHxidXR0b24seHVsfGNvbG9ycGlja2VyW3R5cGU9ImJ1dHRvbiJdLHh1bHxtZW51bGlzdHttYXJnaW46MnB4IDRweH14dWx8bWVudWxpc3Q6bm90KFtlZGl0YWJsZT0idHJ1ZSJdKT54dWx8Ki5tZW51bGlzdC1kcm9wbWFya2Vye21hcmdpbi10b3A6MXB4O21hcmdpbi1ib3R0b206MXB4fXh1bHxjaGVja2JveHtwYWRkaW5nLWlubGluZS1zdGFydDowfXh1bHwqLmJ1dHRvbi1ib3gseHVsfCoubWVudWxpc3QtbGFiZWwtYm94LHh1bHwqLnJhZGlvLWxhYmVsLWJveCx4dWx8Ki5jaGVja2JveC1sYWJlbC1ib3h7Ym9yZGVyLXN0eWxlOm5vbmV9eHVsfGJ1dHRvbjotbW96LWZvY3VzcmluZz54dWx8Ki5idXR0b24tYm94LHh1bHxtZW51bGlzdDotbW96LWZvY3VzcmluZz54dWx8Ki5tZW51bGlzdC1sYWJlbC1ib3gseHVsfHJhZGlvW2ZvY3VzZWQ9InRydWUiXT54dWx8Ki5yYWRpby1sYWJlbC1ib3gsaHRtbHxpbnB1dFt0eXBlPSJjaGVja2JveCJdOi1tb3otZm9jdXNyaW5nK2h0bWx8bGFiZWw6YmVmb3JlLHh1bHxjaGVja2JveDotbW96LWZvY3VzcmluZz54dWx8Ki5jaGVja2JveC1sYWJlbC1ib3h7b3V0bGluZToxcHggZG90dGVkfWJvZHl7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtib3gtc2l6aW5nOmJvcmRlci1ib3g7bWluLWhlaWdodDoxMDB2aDtwYWRkaW5nLXRvcDowO3BhZGRpbmctYm90dG9tOjA7cGFkZGluZy1pbmxpbmUtc3RhcnQ6Y2FsYyg0OHB4KzQuNmVtKTtwYWRkaW5nLWlubGluZS1lbmQ6NDhweDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcn0uY29udGFpbmVye21pbi13aWR0aDoxM2VtO21heC13aWR0aDo1MmVtfS5jb250YWluZXIucmVzdG9yZS1jaG9zZW57ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtmbGV4LWdyb3c6MTttYXJnaW46MTB2aCAwfS50aXRsZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOmxlZnQgMDtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1zaXplOjEuNmVtO21hcmdpbi1pbmxpbmUtc3RhcnQ6LTIuM2VtO3BhZGRpbmctaW5saW5lLXN0YXJ0OjIuM2VtO2ZvbnQtc2l6ZToyLjVlbX0udGl0bGU6ZGlyKHJ0bCl7YmFja2dyb3VuZC1wb3NpdGlvbjpyaWdodCAwfS50aXRsZS10ZXh0e2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNjMWMxYzE7Zm9udC1zaXplOmluaGVyaXQ7cGFkZGluZy1ib3R0b206LjRlbX0uYnV0dG9uLWNvbnRhaW5lcnttYXJnaW4tdG9wOjEuMmVtfS5idXR0b24tY29udGFpbmVyPmJ1dHRvbnttaW4td2lkdGg6MTUwcHh9LmJ1dHRvbi1jb250YWluZXI+YnV0dG9uOmZpcnN0LWNoaWxke21hcmdpbi1pbmxpbmUtc3RhcnQ6MH1ib2R5e2JhY2tncm91bmQtc2l6ZTo2NHB4IDMycHg7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXg7cGFkZGluZzo3NXB4IDA7bWluLXdpZHRoOjEzZW19LmJ1dHRvbi1jb250YWluZXJ7ZGlzcGxheTpmbGV4O2ZsZXgtZmxvdzpyb3cgd3JhcH0uYnV0dG9uLXNwYWNlcntmbGV4OjF9Ym9keXtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCgtNDVkZWcsI2YwZDAwMCwjZjBkMDAwIDMzJSwjZmVkYzAwIDMzJSwjZmVkYzAwIDY2JSwjZjBkMDAwIDY2JSwjZjBkMDAwKX0jcmV0dXJuQnV0dG9ue21pbi13aWR0aDoyNTBweH0uY29udGFpbmVye3Bvc2l0aW9uOnJlbGF0aXZlfTwvc3R5bGU+CjwvaGVhZD48Ym9keT4KPGRpdiBpZD0iZXJyb3JQYWdlQ29udGFpbmVyIiBjbGFzcz0iY29udGFpbmVyIj4KPGRpdiBjbGFzcz0idGl0bGUiPjxoMSBjbGFzcz0idGl0bGUtdGV4dCI+WW91ciBjb25uZWN0aW9uIGlzIG5vdCBzZWN1cmU8L2gxPjwvZGl2PjxkaXYgaWQ9ImVycm9yTG9uZ0NvbnRlbnQiPgo8ZGl2IGlkPSJlcnJvclNob3J0RGVzYyI+PHAgaWQ9ImVycm9yU2hvcnREZXNjVGV4dCI+ClRoZSBvd25lciBvZiB0aGlzIHdlYnNpdGUgaGFzIGNvbmZpZ3VyZWQgdGhlaXIgd2Vic2l0ZSBpbXByb3Blcmx5LgpUaGUgY29ubmVjdGlvbiBiZXR3ZWVuIHlvdSBhbmQg\')+\''+cf_hostname+' is being MITMed by '+mitm_cdnname+'\'+atob(\'LgpUbyBwcm90ZWN0IHlvdXIgaW5mb3JtYXRpb24gZnJvbSBiZWluZyBzdG9sZW4sIHRoZSBhZGQtb24gc3RvcHBlZCBmdXJ0aGVyIGNvbm5lY3Rpb24gdG8gdGhpcyB3ZWJzaXRlLgo8L3A+PC9kaXY+PGRpdiBpZD0iY2VydEVycm9yQW5kQ2FwdGl2ZVBvcnRhbEJ1dHRvbkNvbnRhaW5lciIgY2xhc3M9ImJ1dHRvbi1jb250YWluZXIiPgo8YnV0dG9uIGlkPSJyZXR1cm5CdXR0b24iIGNsYXNzPSJwcmltYXJ5IiBhdXRvY29tcGxldGU9Im9mZiIgb25jbGljaz0iaGlzdG9yeS5nbygtMSkiPkdvIEJhY2s8L2J1dHRvbj4KPGRpdiBjbGFzcz0iYnV0dG9uLXNwYWNlciI+PC9kaXY+CjxidXR0b24gaWQ9ImFkdmFuY2VkQnV0dG9uIiBhdXRvY29tcGxldGU9Im9mZiIgb25jbGljaz0iaWYgKGNvbmZpcm0oJ0RvIHlvdSByZWFsbHkgd2FudCB0byBhZGQg\')+\''+cf_hostname+'\'+atob(\'IHRvIHdoaXRlbGlzdD8nKSl7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjbGluaycpLnNyYz0naHR0cHM6Ly8wLjAuMC4wL2NmbWl0bV9hZGRvbi9hbGxvdy8=\')+\''+cf_hostname+'?'+btoa(cf_hostname)+'\'+atob(\'Jzt9Ij5BZGQgRXhjZXB0aW9uPC9idXR0b24+CjwvZGl2Pgo8L2Rpdj4KPC9kaXY+CjxkaXYgc3R5bGU9ImRpc3BsYXk6bm9uZSI+PGlmcmFtZSBpZD0iYWNsaW5rIiBzcmM9Imh0dHBzOi8vMC4wLjAuMC9jZm1pdG1fYWRkb24vIj48L2lmcmFtZT48L2Rpdj4KPC9ib2R5PjwvaHRtbD4=\');window.stop();'; +if (do_reaction==0){ +cfblockscreen='document.documentElement.innerHTML=atob(\'PGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPjxoZWFkPjx0aXRsZT5JbnNlY3VyZSBDb25uZWN0aW9uPC90aXRsZT4KPCEtLQpUaGlzIFNvdXJjZSBDb2RlIEZvcm0gaXMgc3ViamVjdCB0byB0aGUgdGVybXMgb2YgdGhlIE1vemlsbGEgUHVibGljIExpY2Vuc2UsIHYuIDIuMC4KSWYgYSBjb3B5IG9mIHRoZSBNUEwgd2FzIG5vdCBkaXN0cmlidXRlZCB3aXRoIHRoaXMgZmlsZSwgWW91IGNhbiBvYnRhaW4gb25lIGF0IGh0dHBzOi8vbW96aWxsYS5vcmcvTVBMLzIuMC8uCi8vLS0+CjxsaW5rIGlkPSJmYXZpY29uIiByZWw9Imljb24iIHR5cGU9ImltYWdlL3gtaWNvbiIgaHJlZj0iZGF0YTppbWFnZS94LWljb247YmFzZTY0LEFBQUJBQUVBRUJBQUFBRUFJQUJvQkFBQUZnQUFBQ2dBQUFBUUFBQUFJQUFBQUFFQUlBQUFBQUFBQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFPems0T0twTVNrcTZVRTlQdWxSVFU3cFhWMWU2VzF0YnVsMWRYYnBiVzF1NldGaFl1bFZWVmJwVFUxTzZVRkJRdWt4TVRMb3RMUzJiQUFBQU96WTBOSjdZM056L3Y5emgvOEhlNC8vRDRlYi94dVRwLzhqbTYvL0k1T24veCtQby84Ymo2Zi9FNGVmL3d0L2wvOEhkNC8rLzJkLy8zTi9mL3hrWkdZVTJOVFdkMk43ZS94ZWt4ZjhXdWVEL0ZycmgveGE3NGY4VXI5UC9JaXd1L3lJc0x2OFdzOS8vRjdEZS94ZXIzUDhYcHRyL0lKUzYvOTdnNGY4WkdSbUNBQUFBVjlIUTBPOTFzN3ovRjhIai94YkM0LzhXdytUL0ZMYlYveUFyTGY4Z0t5My9GcnJoL3hhMTMvOFhzTjcvRnFiVi81RzN2Zit4c2JIVUFBQUFSUUFBQUM1b1oyZVYyTjdmL3lXdHYvOFh5dWIvRnNybS94Yko1djhacThmL0dhdkgveGJBNC84V3UrSC9GclhmL3pXZ3VmL1oyZG4vTHk4dmVBQUFBQndBQUFBQUFBQUFTc2JGeGQyZ3k4Ny9LdFRtL3huVTZ2OFcwT2ovRkVKSS94UkNTUDhXeGVYL0ZyL2oveFd3MC8rc3dzUC9rNU9UdGdBQUFEb0FBQUFBQUFBQUFBQUFBQ0ZGUlVWKzZldnIvenExdnY4dzVQSC9KOS92L3lJaUl2OGlJaUwvRnNybS94YkU1UDlYcTduLzE5ZlgrQmtaR1cwQUFBQUtBQUFBQUFBQUFBQUFBQUFBQUFBQVByZTJ0c25BM3VEL0xOcmoveS9vOHY4ckt5di9LeXNyL3l2Yjd2OG12ZEQveE0vUC8zZDNkNkFBQUFBMEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCVWJHeHR0OFBEdytGckF3Lzh1N1BQL05EUTAvelEwTlA4dzNlLy9nTHUvLzhqSXlPZ0FBQUJSQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTkoyZG5iVFM0K1QvS2REVi96UThQUDgwUUVIL05MM0ovOVhaMmY5V1ZsYUxBQUFBS0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFrQUFBQlgzOS9mNzMzRXh2OHQ1dkgvTGRycC81ckJ3LysydHJiVUFBQUFSUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFMbTF0YlpYZjV1Yi9MTG5ELzBTN3hQL2QzZDMvTVRFeGVBQUFBQndBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCS3g4ZkgzYkhQMGYrOHpNMy9sNWVYdGdBQUFEb0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlUSXlNbmErdnI3VHJxNnV5UmtaR1cwQUFBQUtBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFiQUFBQVJBQUFBRDRBQUFBVkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBLy84QUFJQUJBQUFBQUFBQUFBQUFBSUFCQUFDQUF3QUF3QU1BQU9BSEFBRGdCd0FBOEE4QUFQQVBBQUQ0SHdBQStEOEFBUHcvQUFEK2Z3QUEvLzhBQUE9PSI+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+QG5hbWVzcGFjZSBodG1sICJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIjtAbmFtZXNwYWNlIHh1bCAiaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9rZXltYXN0ZXIvZ2F0ZWtlZXBlci90aGVyZS5pcy5vbmx5Lnh1bCI7KnwqOnJvb3R7LS1pbi1jb250ZW50LXBhZ2UtY29sb3I6IzQyNGU1YTstLWluLWNvbnRlbnQtcGFnZS1iYWNrZ3JvdW5kOiNmYmZiZmI7LS1pbi1jb250ZW50LXRleHQtY29sb3I6IzMzMzstLWluLWNvbnRlbnQtc2VsZWN0ZWQtdGV4dDojZmZmOy0taW4tY29udGVudC1oZWFkZXItYm9yZGVyLWNvbG9yOiNjOGM4Yzg7LS1pbi1jb250ZW50LWJveC1iYWNrZ3JvdW5kOiNmZmY7LS1pbi1jb250ZW50LWJveC1iYWNrZ3JvdW5kLW9kZDojZjNmNmZhOy0taW4tY29udGVudC1ib3gtYmFja2dyb3VuZC1ob3ZlcjojZWJlYmViOy0taW4tY29udGVudC1ib3gtYmFja2dyb3VuZC1hY3RpdmU6I2RhZGFkYTstLWluLWNvbnRlbnQtYm94LWJvcmRlci1jb2xvcjojYzFjMWMxOy0taW4tY29udGVudC1pdGVtLWhvdmVyOnJnYmEoMCwxNDksMjIxLDAuMjUpOy0taW4tY29udGVudC1pdGVtLXNlbGVjdGVkOiMwMDk1ZGQ7LS1pbi1jb250ZW50LWJvcmRlci1oaWdobGlnaHQ6I2ZmOTUwMDstLWluLWNvbnRlbnQtYm9yZGVyLWZvY3VzOiMwMDk1ZGQ7LS1pbi1jb250ZW50LWJvcmRlci1jb2xvcjojYzFjMWMxOy0taW4tY29udGVudC1jYXRlZ29yeS10ZXh0OiNjMWMxYzE7LS1pbi1jb250ZW50LWNhdGVnb3J5LWJvcmRlci1mb2N1czoxcHggZG90dGVkICNmZmY7LS1pbi1jb250ZW50LWNhdGVnb3J5LXRleHQtc2VsZWN0ZWQ6I2YyZjJmMjstLWluLWNvbnRlbnQtY2F0ZWdvcnktYmFja2dyb3VuZDojNDI0ZjVhOy0taW4tY29udGVudC1jYXRlZ29yeS1iYWNrZ3JvdW5kLWhvdmVyOiM1ZTY5NzI7LS1pbi1jb250ZW50LWNhdGVnb3J5LWJhY2tncm91bmQtYWN0aXZlOiMzNDNmNDg7LS1pbi1jb250ZW50LXRhYi1jb2xvcjojNDI0ZjVhOy0taW4tY29udGVudC1saW5rLWNvbG9yOiMwMDk1ZGQ7LS1pbi1jb250ZW50LWxpbmstY29sb3ItaG92ZXI6IzE3OGNlNTstLWluLWNvbnRlbnQtbGluay1jb2xvci1hY3RpdmU6I2ZmOTUwMDstLWluLWNvbnRlbnQtbGluay1jb2xvci12aXNpdGVkOiM1NTFhOGI7LS1pbi1jb250ZW50LXByaW1hcnktYnV0dG9uLWJhY2tncm91bmQ6IzAwOTVkZDstLWluLWNvbnRlbnQtcHJpbWFyeS1idXR0b24tYmFja2dyb3VuZC1ob3ZlcjojMDA4YWNiOy0taW4tY29udGVudC1wcmltYXJ5LWJ1dHRvbi1iYWNrZ3JvdW5kLWFjdGl2ZTojMDA2YjlkOy0taW4tY29udGVudC10YWJsZS1ib3JkZXItZGFyay1jb2xvcjojZDFkMWQxOy0taW4tY29udGVudC10YWJsZS1oZWFkZXItYmFja2dyb3VuZDojMDA5NWRkfWh0bWx8aHRtbCx4dWx8cGFnZSx4dWx8d2luZG93e2ZvbnQ6bWVzc2FnZS1ib3g7LW1vei1hcHBlYXJhbmNlOm5vbmU7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LXBhZ2UtYmFja2dyb3VuZCk7Y29sb3I6dmFyKC0taW4tY29udGVudC1wYWdlLWNvbG9yKX1odG1sfGJvZHl7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6bm9ybWFsO21hcmdpbjowfWh0bWx8aDF7Zm9udC1zaXplOjIuNWVtO2ZvbnQtd2VpZ2h0OmxpZ2h0ZXI7bGluZS1oZWlnaHQ6MS4yO2NvbG9yOnZhcigtLWluLWNvbnRlbnQtdGV4dC1jb2xvcik7bWFyZ2luOjA7bWFyZ2luLWJvdHRvbTouNWVtfWh0bWx8aHJ7Ym9yZGVyLXN0eWxlOnNvbGlkIG5vbmUgbm9uZSBub25lO2JvcmRlci1jb2xvcjp2YXIoLS1pbi1jb250ZW50LWJvcmRlci1jb2xvcil9eHVsfGNhcHRpb257LW1vei1hcHBlYXJhbmNlOm5vbmU7bWFyZ2luOjB9eHVsfGNhcHRpb24+eHVsfGNoZWNrYm94LHh1bHxjYXB0aW9uPnh1bHxsYWJlbHtmb250LXNpemU6MS4zcmVtO2ZvbnQtd2VpZ2h0OmJvbGQ7bGluZS1oZWlnaHQ6MjJweH14dWx8Y2FwdGlvbj54dWx8Y2hlY2tib3gseHVsfGNhcHRpb24+eHVsfGxhYmVse21hcmdpbjowIWltcG9ydGFudH0qfCoubWFpbi1jb250ZW50e3BhZGRpbmctdG9wOjQwcHg7cGFkZGluZy1pbmxpbmUtZW5kOjQ0cHg7cGFkZGluZy1ib3R0b206NDhweDtwYWRkaW5nLWlubGluZS1zdGFydDo0OHB4O292ZXJmbG93OmF1dG99eHVsfHByZWZwYW5lPnh1bHwqLmNvbnRlbnQtYm94e292ZXJmbG93OnZpc2libGV9eHVsfGdyb3VwYm94ey1tb3otYXBwZWFyYW5jZTpub25lO2JvcmRlcjowO21hcmdpbjoxNXB4IDAgMDtwYWRkaW5nLWlubGluZS1zdGFydDowO3BhZGRpbmctaW5saW5lLWVuZDowO2ZvbnQtc2l6ZToxLjI1cmVtfXh1bHxncm91cGJveCB4dWx8bGFiZWw6bm90KC5tZW51LWFjY2VsKTpub3QoLm1lbnUtdGV4dCk6bm90KC5pbmRlbnQpLHh1bHxncm91cGJveCB4dWx8ZGVzY3JpcHRpb257bWFyZ2luLWlubGluZS1zdGFydDowIWltcG9ydGFudDttYXJnaW4taW5saW5lLWVuZDowIWltcG9ydGFudH14dWx8dGFicGFuZWxzey1tb3otYXBwZWFyYW5jZTpub25lO2ZvbnQtc2l6ZToxLjI1cmVtO2xpbmUtaGVpZ2h0OjIycHg7Ym9yZGVyOjA7cGFkZGluZzowO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Y29sb3I6aW5oZXJpdH14dWx8dGFic3ttYXJnaW4tYm90dG9tOjE1cHg7Ym9yZGVyLXRvcDoxcHggc29saWQgdmFyKC0taW4tY29udGVudC1ib3gtYm9yZGVyLWNvbG9yKTtib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1pbi1jb250ZW50LWJveC1ib3JkZXItY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0taW4tY29udGVudC1wYWdlLWJhY2tncm91bmQpfXh1bHwqLnRhYnMtbGVmdCx4dWx8Ki50YWJzLXJpZ2h0e2JvcmRlci1ib3R0b206MH14dWx8dGFiey1tb3otYXBwZWFyYW5jZTpub25lO21hcmdpbi10b3A6MDtwYWRkaW5nOjRweCAyMHB4O21pbi1oZWlnaHQ6NDRweDtjb2xvcjp2YXIoLS1pbi1jb250ZW50LXRhYi1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LXBhZ2UtYmFja2dyb3VuZCk7Ym9yZGVyLXdpZHRoOjA7Ym9yZGVyLXJhZGl1czowIWltcG9ydGFudDt0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgNTBtcyBlYXNlIDBzfXh1bHx0YWI6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LWJveC1iYWNrZ3JvdW5kLWhvdmVyKX14dWx8dGFiW3NlbGVjdGVkXXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtYm94LWJhY2tncm91bmQtaG92ZXIpO3BhZGRpbmctYm90dG9tOjA7Ym9yZGVyLWJvdHRvbTo0cHggc29saWQgdmFyKC0taW4tY29udGVudC1ib3JkZXItaGlnaGxpZ2h0KX14dWx8Ki50YWItdGV4dHtmb250LXNpemU6MS4zcmVtO2xpbmUtaGVpZ2h0OjIycHh9aHRtbHxidXR0b257cGFkZGluZzozcHg7Zm9udDppbmhlcml0fSp8YnV0dG9uLGh0bWx8c2VsZWN0LHh1bHxjb2xvcnBpY2tlclt0eXBlPSJidXR0b24iXSx4dWx8bWVudWxpc3R7LW1vei1hcHBlYXJhbmNlOm5vbmU7bWluLWhlaWdodDozMHB4O2NvbG9yOnZhcigtLWluLWNvbnRlbnQtdGV4dC1jb2xvcik7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1pbi1jb250ZW50LWJveC1ib3JkZXItY29sb3IpOy1tb3otYm9yZGVyLXRvcC1jb2xvcnM6bm9uZSFpbXBvcnRhbnQ7LW1vei1ib3JkZXItcmlnaHQtY29sb3JzOm5vbmUhaW1wb3J0YW50Oy1tb3otYm9yZGVyLWJvdHRvbS1jb2xvcnM6bm9uZSFpbXBvcnRhbnQ7LW1vei1ib3JkZXItbGVmdC1jb2xvcnM6bm9uZSFpbXBvcnRhbnQ7Ym9yZGVyLXJhZGl1czoycHg7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LXBhZ2UtYmFja2dyb3VuZCl9aHRtbHxidXR0b246ZW5hYmxlZDpob3ZlcixodG1sfHNlbGVjdDplbmFibGVkOmhvdmVyLHh1bHxidXR0b246bm90KFtkaXNhYmxlZD0idHJ1ZSJdKTpob3Zlcix4dWx8Y29sb3JwaWNrZXJbdHlwZT0iYnV0dG9uIl06bm90KFtkaXNhYmxlZD0idHJ1ZSJdKTpob3Zlcix4dWx8bWVudWxpc3Q6bm90KFtkaXNhYmxlZD0idHJ1ZSJdKTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtYm94LWJhY2tncm91bmQtaG92ZXIpfWh0bWx8YnV0dG9uOmVuYWJsZWQ6aG92ZXI6YWN0aXZlLGh0bWx8c2VsZWN0OmVuYWJsZWQ6aG92ZXI6YWN0aXZlLHh1bHxidXR0b246bm90KFtkaXNhYmxlZD0idHJ1ZSJdKTpob3ZlcjphY3RpdmUseHVsfGNvbG9ycGlja2VyW3R5cGU9ImJ1dHRvbiJdOm5vdChbZGlzYWJsZWQ9InRydWUiXSk6aG92ZXI6YWN0aXZlLHh1bHxtZW51bGlzdFtvcGVuPSJ0cnVlIl06bm90KFtkaXNhYmxlZD0idHJ1ZSJdKXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtYm94LWJhY2tncm91bmQtYWN0aXZlKX1odG1sfGJ1dHRvbjpkaXNhYmxlZCxodG1sfHNlbGVjdDpkaXNhYmxlZCx4dWx8YnV0dG9uW2Rpc2FibGVkPSJ0cnVlIl0seHVsfGNvbG9ycGlja2VyW3R5cGU9ImJ1dHRvbiJdW2Rpc2FibGVkPSJ0cnVlIl0seHVsfG1lbnVsaXN0W2Rpc2FibGVkPSJ0cnVlIl17b3BhY2l0eTouNX0qfGJ1dHRvbi5wcmltYXJ5e2JhY2tncm91bmQtY29sb3I6dmFyKC0taW4tY29udGVudC1wcmltYXJ5LWJ1dHRvbi1iYWNrZ3JvdW5kKTtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQ7Y29sb3I6dmFyKC0taW4tY29udGVudC1zZWxlY3RlZC10ZXh0KX1odG1sfGJ1dHRvbi5wcmltYXJ5OmVuYWJsZWQ6aG92ZXIseHVsfGJ1dHRvbi5wcmltYXJ5Om5vdChbZGlzYWJsZWQ9InRydWUiXSk6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LXByaW1hcnktYnV0dG9uLWJhY2tncm91bmQtaG92ZXIpfWh0bWx8YnV0dG9uLnByaW1hcnk6ZW5hYmxlZDpob3ZlcjphY3RpdmUseHVsfGJ1dHRvbi5wcmltYXJ5Om5vdChbZGlzYWJsZWQ9InRydWUiXSk6aG92ZXI6YWN0aXZle2JhY2tncm91bmQtY29sb3I6dmFyKC0taW4tY29udGVudC1wcmltYXJ5LWJ1dHRvbi1iYWNrZ3JvdW5kLWFjdGl2ZSl9eHVsfGNvbG9ycGlja2VyW3R5cGU9ImJ1dHRvbiJde3BhZGRpbmc6NnB4O3dpZHRoOjUwcHh9eHVsfGJ1dHRvbj54dWx8Ki5idXR0b24tYm94e3BhZGRpbmctcmlnaHQ6MTBweCFpbXBvcnRhbnQ7cGFkZGluZy1sZWZ0OjEwcHghaW1wb3J0YW50fXh1bHxtZW51bGlzdD54dWx8Ki5tZW51bGlzdC1sYWJlbC1ib3g+eHVsfCoubWVudWxpc3QtaWNvbltzcmNde21hcmdpbi1pbmxpbmUtZW5kOjVweH14dWx8YnV0dG9uW3R5cGU9Im1lbnUiXT54dWx8Ki5idXR0b24tYm94Pnh1bHwqLmJ1dHRvbi1tZW51LWRyb3BtYXJrZXJ7LW1vei1hcHBlYXJhbmNlOm5vbmU7bWFyZ2luOjFweCAwO21hcmdpbi1pbmxpbmUtc3RhcnQ6MTBweDtwYWRkaW5nOjA7d2lkdGg6MTBweDtoZWlnaHQ6MTZweDtib3JkZXI6MDtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fXh1bHxidXR0b25bdHlwZT0ibWVudSJdPnh1bHxtZW51cG9wdXB7LW1vei1hcHBlYXJhbmNlOm5vbmU7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1pbi1jb250ZW50LWJveC1ib3JkZXItY29sb3IpO2JvcmRlci1yYWRpdXM6MnB4O2JhY2tncm91bmQtY29sb3I6dmFyKC0taW4tY29udGVudC1ib3gtYmFja2dyb3VuZCl9eHVsfG1lbnVsaXN0Pnh1bHxtZW51cG9wdXAgeHVsfG1lbnUseHVsfG1lbnVsaXN0Pnh1bHxtZW51cG9wdXAgeHVsfG1lbnVpdGVtLHh1bHxidXR0b25bdHlwZT0ibWVudSJdPnh1bHxtZW51cG9wdXAgeHVsfG1lbnUseHVsfGJ1dHRvblt0eXBlPSJtZW51Il0+eHVsfG1lbnVwb3B1cCB4dWx8bWVudWl0ZW17LW1vei1hcHBlYXJhbmNlOm5vbmU7Zm9udC1zaXplOjFlbTtjb2xvcjp2YXIoLS1pbi1jb250ZW50LXRleHQtY29sb3IpO3BhZGRpbmctdG9wOi4yZW07cGFkZGluZy1ib3R0b206LjJlbTtwYWRkaW5nLWlubGluZS1zdGFydDoxMHB4O3BhZGRpbmctaW5saW5lLWVuZDozMHB4fXh1bHxtZW51bGlzdD54dWx8bWVudXBvcHVwPnh1bHxtZW51Om5vdChbZGlzYWJsZWQ9InRydWUiXSlbX21vei1tZW51YWN0aXZlPSJ0cnVlIl0seHVsfG1lbnVsaXN0Pnh1bHxtZW51cG9wdXA+eHVsfG1lbnVpdGVtOm5vdChbZGlzYWJsZWQ9InRydWUiXSlbX21vei1tZW51YWN0aXZlPSJ0cnVlIl0seHVsfGJ1dHRvblt0eXBlPSJtZW51Il0+eHVsfG1lbnVwb3B1cD54dWx8bWVudTpub3QoW2Rpc2FibGVkPSJ0cnVlIl0pW19tb3otbWVudWFjdGl2ZT0idHJ1ZSJdLHh1bHxidXR0b25bdHlwZT0ibWVudSJdPnh1bHxtZW51cG9wdXA+eHVsfG1lbnVpdGVtOm5vdChbZGlzYWJsZWQ9InRydWUiXSlbX21vei1tZW51YWN0aXZlPSJ0cnVlIl17Y29sb3I6dmFyKC0taW4tY29udGVudC10ZXh0LWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtaXRlbS1ob3Zlcil9eHVsfG1lbnVsaXN0Pnh1bHxtZW51cG9wdXA+eHVsfG1lbnU6bm90KFtkaXNhYmxlZD0idHJ1ZSJdKVtzZWxlY3RlZD0idHJ1ZSJdLHh1bHxtZW51bGlzdD54dWx8bWVudXBvcHVwPnh1bHxtZW51aXRlbTpub3QoW2Rpc2FibGVkPSJ0cnVlIl0pW3NlbGVjdGVkPSJ0cnVlIl0seHVsfGJ1dHRvblt0eXBlPSJtZW51Il0+eHVsfG1lbnVwb3B1cD54dWx8bWVudTpub3QoW2Rpc2FibGVkPSJ0cnVlIl0pW3NlbGVjdGVkPSJ0cnVlIl0seHVsfGJ1dHRvblt0eXBlPSJtZW51Il0+eHVsfG1lbnVwb3B1cD54dWx8bWVudWl0ZW06bm90KFtkaXNhYmxlZD0idHJ1ZSJdKVtzZWxlY3RlZD0idHJ1ZSJde2NvbG9yOnZhcigtLWluLWNvbnRlbnQtc2VsZWN0ZWQtdGV4dCk7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LWl0ZW0tc2VsZWN0ZWQpfXh1bHxtZW51bGlzdD54dWx8bWVudXBvcHVwPnh1bHxtZW51W2Rpc2FibGVkPSJ0cnVlIl0seHVsfG1lbnVsaXN0Pnh1bHxtZW51cG9wdXA+eHVsfG1lbnVpdGVtW2Rpc2FibGVkPSJ0cnVlIl0seHVsfGJ1dHRvblt0eXBlPSJtZW51Il0+eHVsfG1lbnVwb3B1cD54dWx8bWVudVtkaXNhYmxlZD0idHJ1ZSJdLHh1bHxidXR0b25bdHlwZT0ibWVudSJdPnh1bHxtZW51cG9wdXA+eHVsfG1lbnVpdGVtW2Rpc2FibGVkPSJ0cnVlIl17Y29sb3I6Izk5OTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fXh1bHxtZW51bGlzdD54dWx8bWVudXBvcHVwIHh1bHxtZW51c2VwYXJhdG9yLHh1bHxidXR0b25bdHlwZT0ibWVudSJdPnh1bHxtZW51cG9wdXAgeHVsfG1lbnVzZXBhcmF0b3J7LW1vei1hcHBlYXJhbmNlOm5vbmU7bWFyZ2luOjA7cGFkZGluZzowO2JvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLWluLWNvbnRlbnQtYm94LWJvcmRlci1jb2xvcik7Ym9yZGVyLWJvdHRvbTowfWh0bWx8aW5wdXRbdHlwZT0idGV4dCJdLGh0bWx8dGV4dGFyZWEseHVsfHRleHRib3h7LW1vei1hcHBlYXJhbmNlOm5vbmU7Y29sb3I6dmFyKC0taW4tY29udGVudC10ZXh0LWNvbG9yKTtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWluLWNvbnRlbnQtYm94LWJvcmRlci1jb2xvcik7LW1vei1ib3JkZXItdG9wLWNvbG9yczpub25lIWltcG9ydGFudDstbW96LWJvcmRlci1yaWdodC1jb2xvcnM6bm9uZSFpbXBvcnRhbnQ7LW1vei1ib3JkZXItYm90dG9tLWNvbG9yczpub25lIWltcG9ydGFudDstbW96LWJvcmRlci1sZWZ0LWNvbG9yczpub25lIWltcG9ydGFudDtib3JkZXItcmFkaXVzOjJweDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtYm94LWJhY2tncm91bmQpfXh1bHx0ZXh0Ym94e21pbi1oZWlnaHQ6MzBweDtwYWRkaW5nLXJpZ2h0OjEwcHg7cGFkZGluZy1sZWZ0OjEwcHh9eHVsfHRleHRib3gudHJlZS1pbnB1dHttaW4taGVpZ2h0OnVuc2V0O3BhZGRpbmctcmlnaHQ6dW5zZXQ7cGFkZGluZy1sZWZ0OnVuc2V0fWh0bWx8aW5wdXRbdHlwZT0idGV4dCJdLGh0bWx8dGV4dGFyZWF7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtwYWRkaW5nOjVweCAxMHB4fWh0bWx8aW5wdXRbdHlwZT0idGV4dCJdOmZvY3VzLGh0bWx8dGV4dGFyZWE6Zm9jdXMseHVsfHRleHRib3hbZm9jdXNlZF17Ym9yZGVyLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtYm9yZGVyLWZvY3VzKX1odG1sfGlucHV0W3R5cGU9InRleHQiXTpkaXNhYmxlZCxodG1sfHRleHRhcmVhOmRpc2FibGVkLHh1bHx0ZXh0Ym94W2Rpc2FibGVkPSJ0cnVlIl17b3BhY2l0eTouNX1odG1sfGEsLnRleHQtbGlua3tjb2xvcjp2YXIoLS1pbi1jb250ZW50LWxpbmstY29sb3IpO3RleHQtZGVjb3JhdGlvbjpub25lfWh0bWx8YTpob3ZlciwudGV4dC1saW5rOmhvdmVye2NvbG9yOnZhcigtLWluLWNvbnRlbnQtbGluay1jb2xvci1ob3Zlcik7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX1odG1sfGE6dmlzaXRlZHtjb2xvcjp2YXIoLS1pbi1jb250ZW50LWxpbmstY29sb3ItdmlzaXRlZCl9aHRtbHxhOmhvdmVyOmFjdGl2ZSwudGV4dC1saW5rOmhvdmVyOmFjdGl2ZXtjb2xvcjp2YXIoLS1pbi1jb250ZW50LWxpbmstY29sb3ItYWN0aXZlKTt0ZXh0LWRlY29yYXRpb246bm9uZX1odG1sfGlucHV0W3R5cGU9ImNoZWNrYm94Il17b3BhY2l0eTowO3dpZHRoOjA7cG9pbnRlci1ldmVudHM6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZX1odG1sfGlucHV0W3R5cGU9ImNoZWNrYm94Il0raHRtbHxsYWJlbDpiZWZvcmV7ZGlzcGxheTppbmxpbmUtYmxvY2s7Y29udGVudDoiIjt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9aHRtbHxpbnB1dFt0eXBlPSJjaGVja2JveCJdK2h0bWx8bGFiZWx7bGluZS1oZWlnaHQ6MH14dWx8Y2hlY2tib3h7bWFyZ2luLWlubGluZS1zdGFydDowfXh1bHwqLmNoZWNrYm94LWNoZWNrLGh0bWx8aW5wdXRbdHlwZT0iY2hlY2tib3giXStodG1sfGxhYmVsOmJlZm9yZXstbW96LWFwcGVhcmFuY2U6bm9uZTt3aWR0aDoyM3B4O2hlaWdodDoyM3B4O2JvcmRlci1yYWRpdXM6MnB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0taW4tY29udGVudC1ib3gtYm9yZGVyLWNvbG9yKTttYXJnaW4taW5saW5lLWVuZDoxMHB4O2JhY2tncm91bmQtY29sb3I6I2YxZjFmMTtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCgjZmZmLHJnYmEoMjU1LDI1NSwyNTUsMC44KSkhaW1wb3J0YW50O2JhY2tncm91bmQtcG9zaXRpb246Y2VudGVyIGNlbnRlcjtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7Ym94LXNoYWRvdzowIDFweCAxcHggMCAjZmZmLGluc2V0IDAgMnB4IDAgMCByZ2JhKDAsMCwwLDAuMDMpfXh1bHxjaGVja2JveDpub3QoW2Rpc2FibGVkPSJ0cnVlIl0pOmhvdmVyPnh1bHwqLmNoZWNrYm94LWNoZWNrLGh0bWx8aW5wdXRbdHlwZT0iY2hlY2tib3giXTpub3QoOmRpc2FibGVkKStodG1sfGxhYmVsOmhvdmVyOmJlZm9yZXtib3JkZXItY29sb3I6dmFyKC0taW4tY29udGVudC1ib3JkZXItZm9jdXMpfXh1bHxjaGVja2JveFtkaXNhYmxlZD0idHJ1ZSJdPnh1bHwqLmNoZWNrYm94LWNoZWNrLGh0bWx8aW5wdXRbdHlwZT0iY2hlY2tib3giXTpkaXNhYmxlZCtodG1sfGxhYmVse29wYWNpdHk6LjV9eHVsfCouY2hlY2tib3gtbGFiZWwtYm94e21hcmdpbi1pbmxpbmUtc3RhcnQ6LTFweDtwYWRkaW5nLWlubGluZS1zdGFydDowfXh1bHxyaWNobGlzdGl0ZW0+eHVsfCouY2hlY2tib3gtY2hlY2t7bWFyZ2luOjNweCA2cHh9eHVsfHJhZGlve21hcmdpbi1pbmxpbmUtc3RhcnQ6MH14dWx8Ki5yYWRpby1jaGVja3stbW96LWFwcGVhcmFuY2U6bm9uZTt3aWR0aDoyM3B4O2hlaWdodDoyM3B4O2JvcmRlcjoxcHggc29saWQgdmFyKC0taW4tY29udGVudC1ib3gtYm9yZGVyLWNvbG9yKTtib3JkZXItcmFkaXVzOjUwJTttYXJnaW4taW5saW5lLWVuZDoxMHB4O2JhY2tncm91bmQtY29sb3I6I2YxZjFmMTtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCgjZmZmLHJnYmEoMjU1LDI1NSwyNTUsMC44MCkpO2JveC1zaGFkb3c6MCAxcHggMXB4IDAgI2ZmZixpbnNldCAwIDJweCAwIDAgcmdiYSgwLDAsMCwwLjAzKX14dWx8cmFkaW86bm90KFtkaXNhYmxlZD0idHJ1ZSJdKTpob3Zlcj54dWx8Ki5yYWRpby1jaGVja3tib3JkZXItY29sb3I6dmFyKC0taW4tY29udGVudC1ib3JkZXItZm9jdXMpfXh1bHxyYWRpb1tkaXNhYmxlZD0idHJ1ZSJdPnh1bHwqLnJhZGlvLWNoZWNre29wYWNpdHk6LjV9eHVsfCoucmFkaW8tbGFiZWwtYm94e21hcmdpbi1pbmxpbmUtc3RhcnQ6LTFweDttYXJnaW4taW5saW5lLWVuZDoxMHB4O3BhZGRpbmctaW5saW5lLXN0YXJ0OjB9KnwqI2NhdGVnb3JpZXN7LW1vei1hcHBlYXJhbmNlOm5vbmU7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LWNhdGVnb3J5LWJhY2tncm91bmQpO3BhZGRpbmctdG9wOjM5cHg7bWFyZ2luOjA7Ym9yZGVyLXdpZHRoOjB9KnwqLmNhdGVnb3J5ey1tb3otYXBwZWFyYW5jZTpub25lO2NvbG9yOnZhcigtLWluLWNvbnRlbnQtY2F0ZWdvcnktdGV4dCk7Ym9yZGVyLWlubGluZS1lbmQtd2lkdGg6MDtwYWRkaW5nLWlubGluZS1zdGFydDoxNXB4O3BhZGRpbmctaW5saW5lLWVuZDoyMXB4O21pbi1oZWlnaHQ6NDBweDt0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgMTUwbXN9KnwqLmNhdGVnb3J5OmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0taW4tY29udGVudC1jYXRlZ29yeS1iYWNrZ3JvdW5kLWhvdmVyKX0qfCouY2F0ZWdvcnlbc2VsZWN0ZWRdLCp8Ki5jYXRlZ29yeS5zZWxlY3RlZHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtY2F0ZWdvcnktYmFja2dyb3VuZC1hY3RpdmUpO2NvbG9yOnZhcigtLWluLWNvbnRlbnQtY2F0ZWdvcnktdGV4dC1zZWxlY3RlZCk7cGFkZGluZy1pbmxpbmUtc3RhcnQ6MTFweDtib3JkZXItaW5saW5lLXN0YXJ0OnNvbGlkIDRweCB2YXIoLS1pbi1jb250ZW50LWJvcmRlci1oaWdobGlnaHQpfSp8KiNjYXRlZ29yaWVzW2tleWJvYXJkLW5hdmlnYXRpb249InRydWUiXTotbW96LWZvY3VzcmluZz4qfCouY2F0ZWdvcnlbY3VycmVudF17Ym9yZGVyLXRvcDp2YXIoLS1pbi1jb250ZW50LWNhdGVnb3J5LWJvcmRlci1mb2N1cyk7Ym9yZGVyLWJvdHRvbTp2YXIoLS1pbi1jb250ZW50LWNhdGVnb3J5LWJvcmRlci1mb2N1cyl9KnwqLmNhdGVnb3J5LW5hbWV7bGluZS1oZWlnaHQ6MjJweDtmb250LXNpemU6MS4yNXJlbTtwYWRkaW5nLWJvdHRvbToycHg7cGFkZGluZy1pbmxpbmUtc3RhcnQ6OXB4O21hcmdpbjowOy1tb3otdXNlci1zZWxlY3Q6bm9uZX0qfCouY2F0ZWdvcnktaWNvbnt3aWR0aDoyNHB4O2hlaWdodDoyNHB4fSp8Ki5oZWFkZXJ7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgdmFyKC0taW4tY29udGVudC1oZWFkZXItYm9yZGVyLWNvbG9yKTttYXJnaW4taW5saW5lLWVuZDo0cHg7bWFyZ2luLWJvdHRvbToxNXB4O3BhZGRpbmctYm90dG9tOjE1cHg7LW1vei1ib3gtYWxpZ246YmFzZWxpbmV9KnwqLmhlYWRlci1uYW1le2ZvbnQtc2l6ZToyLjVyZW07Zm9udC13ZWlnaHQ6bm9ybWFsO2xpbmUtaGVpZ2h0OjQwcHg7bWFyZ2luOjA7LW1vei11c2VyLXNlbGVjdDpub25lfXh1bHxmaWxlZmllbGR7LW1vei1hcHBlYXJhbmNlOm5vbmU7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXI6MDtwYWRkaW5nOjB9eHVsfCouZmlsZUZpZWxkQ29udGVudEJveHtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fXh1bHwqLmZpbGVGaWVsZEljb257bWFyZ2luLWlubGluZS1zdGFydDoxMHB4O21hcmdpbi1pbmxpbmUtZW5kOjB9eHVsfCouZmlsZUZpZWxkTGFiZWx7bWFyZ2luLWlubGluZS1zdGFydDotMjZweDtwYWRkaW5nLWlubGluZS1zdGFydDozNnB4fXh1bHx0ZXh0Ym94K3h1bHxidXR0b24seHVsfGZpbGVmaWVsZCt4dWx8YnV0dG9ue2JvcmRlci1pbmxpbmUtc3RhcnQ6bm9uZX14dWx8cmljaGxpc3Rib3gseHVsfGxpc3Rib3h7LW1vei1hcHBlYXJhbmNlOm5vbmU7bWFyZ2luLWlubGluZS1zdGFydDowO2JhY2tncm91bmQtY29sb3I6dmFyKC0taW4tY29udGVudC1ib3gtYmFja2dyb3VuZCk7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1pbi1jb250ZW50LWJveC1ib3JkZXItY29sb3IpO2NvbG9yOnZhcigtLWluLWNvbnRlbnQtdGV4dC1jb2xvcil9eHVsfHRyZWVjaGlsZHJlbjo6LW1vei10cmVlLXJvdyx4dWx8bGlzdGJveCB4dWx8bGlzdGl0ZW17cGFkZGluZzouM2VtO21hcmdpbjowO2JvcmRlcjowO2JvcmRlci1yYWRpdXM6MDtiYWNrZ3JvdW5kLWltYWdlOm5vbmV9eHVsfHRyZWVjaGlsZHJlbjo6LW1vei10cmVlLXJvdyhob3ZlcikseHVsfGxpc3Rib3ggeHVsfGxpc3RpdGVtOmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0taW4tY29udGVudC1pdGVtLWhvdmVyKX14dWx8dHJlZWNoaWxkcmVuOjotbW96LXRyZWUtcm93KHNlbGVjdGVkKSx4dWx8bGlzdGJveCB4dWx8bGlzdGl0ZW1bc2VsZWN0ZWQ9InRydWUiXXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtaXRlbS1zZWxlY3RlZCk7Y29sb3I6dmFyKC0taW4tY29udGVudC1zZWxlY3RlZC10ZXh0KX14dWx8dHJlZXstbW96LWFwcGVhcmFuY2U6bm9uZTtmb250LXNpemU6MWVtO2JvcmRlcjoxcHggc29saWQgdmFyKC0taW4tY29udGVudC1ib3gtYm9yZGVyLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtYm94LWJhY2tncm91bmQpO21hcmdpbjowfXh1bHx0cmVlOi1tb3otZm9jdXNyaW5nLHh1bHxyaWNobGlzdGJveDotbW96LWZvY3VzcmluZ3tib3JkZXI6MXB4IGRvdHRlZCB2YXIoLS1pbi1jb250ZW50LWJvcmRlci1mb2N1cyl9eHVsfGxpc3RoZWFkZXIseHVsfHRyZWVjb2xzey1tb3otYXBwZWFyYW5jZTpub25lO2JvcmRlcjowO2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHZhcigtLWluLWNvbnRlbnQtYm9yZGVyLWNvbG9yKTtwYWRkaW5nOjB9LmF1dG9jb21wbGV0ZS10cmVlPnh1bHx0cmVlY29sc3tib3JkZXItYm90dG9tOm5vbmUhaW1wb3J0YW50fXh1bHx0cmVlY29sOm5vdChbaGlkZWhlYWRlcj0idHJ1ZSJdKSx4dWx8dHJlZWNvbHBpY2tlcnstbW96LWFwcGVhcmFuY2U6bm9uZTtib3JkZXI6MDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtYm94LWJhY2tncm91bmQtaG92ZXIpO2NvbG9yOiM4MDgwODA7cGFkZGluZzo1cHggMTBweH14dWx8dHJlZWNvbDpub3QoW2hpZGVoZWFkZXI9InRydWUiXSk6bm90KFtzb3J0YWJsZT0iZmFsc2UiXSk6aG92ZXIseHVsfHRyZWVjb2xwaWNrZXI6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LWJveC1iYWNrZ3JvdW5kLWFjdGl2ZSk7Y29sb3I6dmFyKC0taW4tY29udGVudC10ZXh0LWNvbG9yKX14dWx8dHJlZWNvbDpub3QoW2hpZGVoZWFkZXI9InRydWUiXSk6bm90KDpmaXJzdC1jaGlsZCkseHVsfHRyZWVjb2xwaWNrZXJ7Ym9yZGVyLWlubGluZS1zdGFydC13aWR0aDoxcHg7Ym9yZGVyLWlubGluZS1zdGFydC1zdHlsZTpzb2xpZDtib3JkZXItaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRyYW5zcGFyZW50IDAsdHJhbnNwYXJlbnQgMjAlLCNjMWMxYzEgMjAlLCNjMWMxYzEgODAlLHRyYW5zcGFyZW50IDgwJSx0cmFuc3BhcmVudCAxMDAlKSAxIDF9eHVsfHRyZWVjb2w6bm90KFtoaWRlaGVhZGVyPSJ0cnVlIl0pPnh1bHwqLnRyZWVjb2wtc29ydGRpcmVjdGlvbltzb3J0RGlyZWN0aW9uXXt3aWR0aDoxOHB4O2hlaWdodDoxOHB4fXh1bHx0cmVlY29sOm5vdChbaGlkZWhlYWRlcj0idHJ1ZSJdKT54dWx8Ki50cmVlY29sLXNvcnRkaXJlY3Rpb25bc29ydERpcmVjdGlvbj0iYXNjZW5kaW5nIl17dHJhbnNmb3JtOnNjYWxlWSgtMSl9eHVsfHRyZWVjaGlsZHJlbjo6LW1vei10cmVlLXJvd3ttaW4taGVpZ2h0OjJlbX14dWx8dHJlZWNoaWxkcmVuOjotbW96LXRyZWUtY2VsbC10ZXh0e2NvbG9yOnZhcigtLWluLWNvbnRlbnQtdGV4dC1jb2xvcil9eHVsfHRyZWVjaGlsZHJlbjo6LW1vei10cmVlLWNlbGwtdGV4dChzZWxlY3RlZCl7Y29sb3I6dmFyKC0taW4tY29udGVudC1zZWxlY3RlZC10ZXh0KX14dWx8Y2FwdGlvbntiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fXh1bHxidXR0b24saHRtbHxidXR0b24seHVsfGNvbG9ycGlja2VyW3R5cGU9ImJ1dHRvbiJdLHh1bHxtZW51bGlzdHttYXJnaW46MnB4IDRweH14dWx8bWVudWxpc3Q6bm90KFtlZGl0YWJsZT0idHJ1ZSJdKT54dWx8Ki5tZW51bGlzdC1kcm9wbWFya2Vye21hcmdpbi10b3A6MXB4O21hcmdpbi1ib3R0b206MXB4fXh1bHxjaGVja2JveHtwYWRkaW5nLWlubGluZS1zdGFydDowfXh1bHwqLmJ1dHRvbi1ib3gseHVsfCoubWVudWxpc3QtbGFiZWwtYm94LHh1bHwqLnJhZGlvLWxhYmVsLWJveCx4dWx8Ki5jaGVja2JveC1sYWJlbC1ib3h7Ym9yZGVyLXN0eWxlOm5vbmV9eHVsfGJ1dHRvbjotbW96LWZvY3VzcmluZz54dWx8Ki5idXR0b24tYm94LHh1bHxtZW51bGlzdDotbW96LWZvY3VzcmluZz54dWx8Ki5tZW51bGlzdC1sYWJlbC1ib3gseHVsfHJhZGlvW2ZvY3VzZWQ9InRydWUiXT54dWx8Ki5yYWRpby1sYWJlbC1ib3gsaHRtbHxpbnB1dFt0eXBlPSJjaGVja2JveCJdOi1tb3otZm9jdXNyaW5nK2h0bWx8bGFiZWw6YmVmb3JlLHh1bHxjaGVja2JveDotbW96LWZvY3VzcmluZz54dWx8Ki5jaGVja2JveC1sYWJlbC1ib3h7b3V0bGluZToxcHggZG90dGVkfWJvZHl7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtib3gtc2l6aW5nOmJvcmRlci1ib3g7bWluLWhlaWdodDoxMDB2aDtwYWRkaW5nLXRvcDowO3BhZGRpbmctYm90dG9tOjA7cGFkZGluZy1pbmxpbmUtc3RhcnQ6Y2FsYyg0OHB4KzQuNmVtKTtwYWRkaW5nLWlubGluZS1lbmQ6NDhweDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcn0uY29udGFpbmVye21pbi13aWR0aDoxM2VtO21heC13aWR0aDo1MmVtfS5jb250YWluZXIucmVzdG9yZS1jaG9zZW57ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtmbGV4LWdyb3c6MTttYXJnaW46MTB2aCAwfS50aXRsZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOmxlZnQgMDtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1zaXplOjEuNmVtO21hcmdpbi1pbmxpbmUtc3RhcnQ6LTIuM2VtO3BhZGRpbmctaW5saW5lLXN0YXJ0OjIuM2VtO2ZvbnQtc2l6ZToyLjVlbX0udGl0bGU6ZGlyKHJ0bCl7YmFja2dyb3VuZC1wb3NpdGlvbjpyaWdodCAwfS50aXRsZS10ZXh0e2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNjMWMxYzE7Zm9udC1zaXplOmluaGVyaXQ7cGFkZGluZy1ib3R0b206LjRlbX0uYnV0dG9uLWNvbnRhaW5lcnttYXJnaW4tdG9wOjEuMmVtfS5idXR0b24tY29udGFpbmVyPmJ1dHRvbnttaW4td2lkdGg6MTUwcHh9LmJ1dHRvbi1jb250YWluZXI+YnV0dG9uOmZpcnN0LWNoaWxke21hcmdpbi1pbmxpbmUtc3RhcnQ6MH1ib2R5e2JhY2tncm91bmQtc2l6ZTo2NHB4IDMycHg7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXg7cGFkZGluZzo3NXB4IDA7bWluLXdpZHRoOjEzZW19LmJ1dHRvbi1jb250YWluZXJ7ZGlzcGxheTpmbGV4O2ZsZXgtZmxvdzpyb3cgd3JhcH0uYnV0dG9uLXNwYWNlcntmbGV4OjF9Ym9keXtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCgtNDVkZWcsI2YwZDAwMCwjZjBkMDAwIDMzJSwjZmVkYzAwIDMzJSwjZmVkYzAwIDY2JSwjZjBkMDAwIDY2JSwjZjBkMDAwKX0jcmV0dXJuQnV0dG9ue21pbi13aWR0aDoyNTBweH0uY29udGFpbmVye3Bvc2l0aW9uOnJlbGF0aXZlfTwvc3R5bGU+CjwvaGVhZD48Ym9keT4KPGRpdiBpZD0iZXJyb3JQYWdlQ29udGFpbmVyIiBjbGFzcz0iY29udGFpbmVyIj4KPGRpdiBjbGFzcz0idGl0bGUiPjxoMSBjbGFzcz0idGl0bGUtdGV4dCI+WW91ciBjb25uZWN0aW9uIGlzIG5vdCBzZWN1cmU8L2gxPjwvZGl2PjxkaXYgaWQ9ImVycm9yTG9uZ0NvbnRlbnQiPgo8ZGl2IGlkPSJlcnJvclNob3J0RGVzYyI+PHAgaWQ9ImVycm9yU2hvcnREZXNjVGV4dCI+ClRoZSBvd25lciBvZiB0aGlzIHdlYnNpdGUgaGFzIGNvbmZpZ3VyZWQgdGhlaXIgd2Vic2l0ZSBpbXByb3Blcmx5LgpUaGUgY29ubmVjdGlvbiBiZXR3ZWVuIHlvdSBhbmQg\')+\''+cf_hostname+' is being MITMed by '+mitm_cdnname+'\'+atob(\'LgpUbyBwcm90ZWN0IHlvdXIgaW5mb3JtYXRpb24gZnJvbSBiZWluZyBzdG9sZW4sIHRoZSBhZGQtb24gc3RvcHBlZCBmdXJ0aGVyIGNvbm5lY3Rpb24gdG8gdGhpcyB3ZWJzaXRlLgo8L3A+PC9kaXY+PGRpdiBpZD0iY2VydEVycm9yQW5kQ2FwdGl2ZVBvcnRhbEJ1dHRvbkNvbnRhaW5lciIgY2xhc3M9ImJ1dHRvbi1jb250YWluZXIiPgo8YnV0dG9uIGlkPSJyZXR1cm5CdXR0b24iIGNsYXNzPSJwcmltYXJ5IiBhdXRvY29tcGxldGU9Im9mZiIgb25jbGljaz0iaGlzdG9yeS5nbygtMSkiPkdvIEJhY2s8L2J1dHRvbj4KPGRpdiBjbGFzcz0iYnV0dG9uLXNwYWNlciI+PC9kaXY+CjxidXR0b24gaWQ9ImFkdmFuY2VkQnV0dG9uIiBhdXRvY29tcGxldGU9Im9mZiIgb25jbGljaz0iaWYgKGNvbmZpcm0oJ0RvIHlvdSByZWFsbHkgd2FudCB0byBhZGQg\')+\''+cf_hostname+'\'+atob(\'IHRvIHdoaXRlbGlzdD8nKSl7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjbGluaycpLnNyYz0naHR0cHM6Ly8wLjAuMC4wL2NmbWl0bV9hZGRvbi9hbGxvdy8=\')+\''+cf_hostname+'?'+btoa(cf_hostname)+'\'+atob(\'Jzt9Ij5BZGQgRXhjZXB0aW9uPC9idXR0b24+DQo8YnV0dG9uIGlkPSJhZHZhbmNlZEJ1dHRvbiIgYXV0b2NvbXBsZXRlPSJvZmYiIG9uY2xpY2s9ImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY2xpbmsnKS5zcmM9J2h0dHBzOi8vMC4wLjAuMC9jZm1pdG1fYWRkb24vYWxsb3cvdmlld2V4Y2VwdGlvbnM/bm93JzsiPlZpZXcgRXhjZXB0aW9uczwvYnV0dG9uPg0KPC9kaXY+DQo8L2Rpdj4NCjwvZGl2Pg0KPGRpdiBzdHlsZT0iZGlzcGxheTpub25lIj48aWZyYW1lIGlkPSJhY2xpbmsiIHNyYz0iaHR0cHM6Ly8wLjAuMC4wL2NmbWl0bV9hZGRvbi8iPjwvaWZyYW1lPjwvZGl2Pg0KPC9ib2R5PjwvaHRtbD4=\');window.stop();'; var blockingCFnow=browser.tabs.executeScript(res.tabId,{code: cfblockscreen});blockingCFnow.then(()=>{return {cancel: true};},onError); - -}else{// warning only - -console.log('SECURITY_ALERT: '+mitm_cdnname+' MiTM Detected: '+res.url); +} +if (do_reaction==1){ cfblockscreen='var orig_dt=document.title;setInterval(function(){var link=document.querySelector("link[rel*=\'icon\']")||document.createElement(\'link\');link.type=\'image/x-icon\';link.rel=\'icon\';link.href=\'data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOzk4OKpMSkq6UE9PulRTU7pXV1e6W1tbul1dXbpbW1u6WFhYulVVVbpTU1O6UFBQukxMTLotLS2bAAAAOzY0NJ7Y3Nz/v9zh/8He4//D4eb/xuTp/8jm6//I5On/x+Po/8bj6f/E4ef/wt/l/8Hd4/+/2d//3N/f/xkZGYU2NTWd2N7e/xekxf8WueD/Frrh/xa74f8Ur9P/Iiwu/yIsLv8Ws9//F7De/xer3P8Xptr/IJS6/97g4f8ZGRmCAAAAV9HQ0O91s7z/F8Hj/xbC4/8Ww+T/FLbV/yArLf8gKy3/Frrh/xa13/8XsN7/FqbV/5G3vf+xsbHUAAAARQAAAC5oZ2eV2N7f/yWtv/8Xyub/Fsrm/xbJ5v8Zq8f/GavH/xbA4/8Wu+H/FrXf/zWguf/Z2dn/Ly8veAAAABwAAAAAAAAASsbFxd2gy87/KtTm/xnU6v8W0Oj/FEJI/xRCSP8WxeX/Fr/j/xWw0/+swsP/k5OTtgAAADoAAAAAAAAAAAAAACFFRUV+6evr/zq1vv8w5PH/J9/v/yIiIv8iIiL/Fsrm/xbE5P9Xq7n/19fX+BkZGW0AAAAKAAAAAAAAAAAAAAAAAAAAPre2tsnA3uD/LNrj/y/o8v8rKyv/Kysr/yvb7v8mvdD/xM/P/3d3d6AAAAA0AAAAAAAAAAAAAAAAAAAAAAAAABUbGxtt8PDw+FrAw/8u7PP/NDQ0/zQ0NP8w3e//gLu//8jIyOgAAABRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANJ2dnbTS4+T/KdDV/zQ8PP80QEH/NL3J/9XZ2f9WVlaLAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAABX39/f733Exv8t5vH/Ldrp/5rBw/+2trbUAAAARQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALm1tbZXf5ub/LLnD/0S7xP/d3d3/MTExeAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABKx8fH3bHP0f+8zM3/l5eXtgAAADoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITIyMna+vr7Trq6uyRkZGW0AAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAARAAAAD4AAAAVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAIABAAAAAAAAAAAAAIABAACAAwAAwAMAAOAHAADgBwAA8A8AAPAPAAD4HwAA+D8AAPw/AAD+fwAA//8AAA==\';document.getElementsByTagName(\'head\')[0].appendChild(link);if (!document.title.startsWith(\'[!!\') && !document.title.includes(\'!!]\')){document.title=\'[!!'+mitm_cdnname+'!!] \'+orig_dt;}},2500);'; var warningCFnow=browser.tabs.executeScript(res.tabId,{code: cfblockscreen});warningCFnow.then(function(){},onError); - +} +if (do_reaction==2){ +if (res.type=='image'){return {redirectUrl: cf_blocked_img};}else{if (res.type=='main_frame'){return {redirectUrl: 'https://0.0.0.0/'};}else{return {cancel: true};}} } } @@ -122,27 +126,15 @@ var warningCFnow=browser.tabs.executeScript(res.tabId,{code: cfblockscreen});war } function gotwhitelistrequest(r){ -var v_whitelist=r.url.replace('https://0.0.0.0/cfmitm_addon/allow/','',).split('?',2); -if (v_whitelist.length==2){if (/^([0-9a-z.-]{4,200})$/.test(v_whitelist[0]) && v_whitelist[1]==btoa(v_whitelist[0])){ -if (cf_history.includes(v_whitelist[0])){// found in history, assume this request is valid +if (r.url=='https://0.0.0.0/cfmitm_addon/allow/viewexceptions?now'){browser.runtime.openOptionsPage().then(function(){},onError);}else{ +var v_whitelist=r.url.replace('https://0.0.0.0/cfmitm_addon/allow/','',).split('?',2);if (v_whitelist.length==2){if (/^([0-9a-z.-]{4,200})$/.test(v_whitelist[0]) && v_whitelist[1]==btoa(v_whitelist[0])){//cfinfection?originhash +if (cf_history.includes(v_whitelist[0])){if (!cf_ignore.includes(v_whitelist[0])){// found in history and rule not found console.log('CFMITM: Adding to whitelist: '+v_whitelist[0]); -var _gwr=browser.storage.local.get();_gwr.then(function(r){ -var _currentwhitelist=v_whitelist[0]+"\n";if (r.myset_cfwhite){_currentwhitelist+=r.myset_cfwhite;} -_currentwhitelist=_currentwhitelist.split("\n");for (var l=0;l<_currentwhitelist.length;l++){ -if (!/^([0-9a-z.-]{1,})\.([a-z]{2,20})$/.test(_currentwhitelist[l])||_currentwhitelist[l].startsWith(".")||_currentwhitelist[l].includes("..")|| -_currentwhitelist[l].endsWith(".cloudflare.com")||_currentwhitelist[l]=='cloudflare.com'|| -_currentwhitelist[l].endsWith(".incapsula.com")||_currentwhitelist[l]=='incapsula.com'|| -_currentwhitelist[l].endsWith(".withgoogle.com")||_currentwhitelist[l].endsWith(".google.com")){_currentwhitelist[l]='';} -} -_currentwhitelist=_currentwhitelist.slice().sort(function(a,b){return a>b}).reduce(function(a,b){if (a.slice(-1)[0]!==b){a.push(b);};return a;},[]);// -duplicate -_currentwhitelist=_currentwhitelist.filter(v=>v!='');// -empty -_currentwhitelist=_currentwhitelist.join("\n"); -browser.storage.local.set({myset_cfwhite: _currentwhitelist}); -cf_ignore=_currentwhitelist.split("\n").filter(v=>v!='');//update whitelist -browser.tabs.executeScript({code: 'location.reload();'}); -},onError); -} +cf_ignore.push(v_whitelist[0]); +browser.storage.local.set({myset_cfwhite: cf_ignore.join("\n")}).then(function(){browser.tabs.executeScript({code: 'location.reload();'});},onError); }} +}} +} return {cancel: true}; } diff --git a/src/style.css b/src/style.css index 594891ef7..207f5e518 100644 --- a/src/style.css +++ b/src/style.css @@ -1,3 +1,3 @@ body{font:13px Verdana} label{-webkit-user-select:none;-moz-user-select:none} -textarea{white-space:pre;overflow-wrap:normal;overflow-x:scroll} +textarea{white-space:pre;overflow-wrap:normal;overflow-x:scroll} \ No newline at end of file From ee528226a8225917c67e2adad05b3f71d2652359 Mon Sep 17 00:00:00 2001 From: nullius Date: Tue, 2 Jan 2018 04:50:30 +0000 Subject: [PATCH 12/15] Add missing '\n' to last lines of files; rm sigs Files from the 1.0.8.6 xpi were missing '\n' at the end of their last lines. Changing this would invalidate the Mozilla manifest/signature data, so I removed that. No substantive code changes in this commit. --- src/META-INF/manifest.mf | 47 --------------------------------------- src/META-INF/mozilla.rsa | Bin 4196 -> 0 bytes src/META-INF/mozilla.sf | 4 ---- src/manifest.json | 2 +- src/setwhitelist.html | 2 +- src/setwhitelist.js | 2 +- src/style.css | 2 +- 7 files changed, 4 insertions(+), 55 deletions(-) delete mode 100644 src/META-INF/manifest.mf delete mode 100644 src/META-INF/mozilla.rsa delete mode 100644 src/META-INF/mozilla.sf diff --git a/src/META-INF/manifest.mf b/src/META-INF/manifest.mf deleted file mode 100644 index a59452c70..000000000 --- a/src/META-INF/manifest.mf +++ /dev/null @@ -1,47 +0,0 @@ -Manifest-Version: 1.0 - -Name: manifest.json -Digest-Algorithms: MD5 SHA1 -MD5-Digest: zGY60qlrfec2aFsUpYrEqw== -SHA1-Digest: v9XeO2ot0V/rLuSXYs4AUccSP4Y= - -Name: setwhitelist.html -Digest-Algorithms: MD5 SHA1 -MD5-Digest: 5IRX40t9xV3hOSzG5DQt8g== -SHA1-Digest: bZ6eElvQE432Qn5zeoGXI46I4OU= - -Name: setwhitelist.js -Digest-Algorithms: MD5 SHA1 -MD5-Digest: zyiTPW8+zVdotk5uf71nuw== -SHA1-Digest: Ttn6071lJN7uBVK2UaZOhroEm5I= - -Name: stop_cf_mitm.js -Digest-Algorithms: MD5 SHA1 -MD5-Digest: z8IOdHN5/VdbDGGQNMqMnw== -SHA1-Digest: jzwn+6SLINasUf2De/FE8fpmNJc= - -Name: style.css -Digest-Algorithms: MD5 SHA1 -MD5-Digest: qVs2pHeT+noWZ7sQttO/2Q== -SHA1-Digest: TgXktEJyUNImPTbaPF/viYfWcQo= - -Name: icons/icon-16.png -Digest-Algorithms: MD5 SHA1 -MD5-Digest: BMpS9q28ylgmlebPGO0HBw== -SHA1-Digest: ejT7934OdR+CRbKWJFoXPSvAo7M= - -Name: icons/icon-32.png -Digest-Algorithms: MD5 SHA1 -MD5-Digest: DPnYcEZnUZa6voVAI6nm0w== -SHA1-Digest: CqFkcPOpoKmq7Ly82vbmq/Ouhzs= - -Name: icons/icon-48.png -Digest-Algorithms: MD5 SHA1 -MD5-Digest: PVwvbCCjWU+2fJeaUrrwVA== -SHA1-Digest: upats+fdmYeFmAtgvIVwaW8mszA= - -Name: icons/icon-64.png -Digest-Algorithms: MD5 SHA1 -MD5-Digest: YVzojmSoYwjhM0m20OOk5A== -SHA1-Digest: sa4ES4gA5mSb0cu9UgGpp/2eh84= - diff --git a/src/META-INF/mozilla.rsa b/src/META-INF/mozilla.rsa deleted file mode 100644 index 65093fd1a3f6cef872e4c6b025cc749496fce9be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4196 zcmds4XH-+&wk3stbO-`U6$C^GoP^$yCW`bTMS&Q43mpV$K@pG^3sq`FKq*p#C?Hit znt*g8V4;ZgUgUy4KYjQ8c)#9wW8886oO#w<`>eCiUUTmW;23OR$IeD-MQ+l9D8Sh` z1_J=cpaTYhkkr627`ZSV1bmX5450o)0%hZ9-T^rBZU6_V&W3=01F;X2qrCs$WAj~dp?1M7wMal*PI#Q?-nlo~GZ zJ9k4N7NYwL?SBJdbFIk-EyJMb9UdHFeE?2t%6>?i>OKjZNa3E};VgutLh(YCf& zcW+U*U+)sddO08^0MtJv9s{xPd;c2B8-exk7XHQmm9O$U3xjn7xL9eCG5``l0Z2(e zT*iWx7A1ZN53ipP2#-d>0mfg&Q~fFUzkfUnzg!<)6n zS{pqL&pY<%zSnL)uS)CJ=m#HQ-fhH0GosQ3JzKI$`d;J_ugiR9BrHZ-^S$|a(6pi6 z?bvACW8nL+I!TO!{!JqS)+ zzBQ^-v3X1UiVyn=qd%ID>*n`%VKNP!a(rsNvpmPC(MZ(4$p(#~V2 zh?Z^-l002o7ag`)(6B*eN-8Emb~wA|5tmi9V&f|>yq~l7Rf1&;zZpS6`p$T~P@pwO zm_kEvXNJ;e2bjB!XDD8Mk>+-wwBQm59}Y9-S1W(LPJFwhc&30&l9zx+sBT8 zCcB=M>Yf7&a)J12+3h-T?kwxKB(r@$r{ftnyhR}^+nJC2B*)bRK|g}I4@aPz3 zdj2DMNY}lQd7f)$F2KZscVCh_lwc}hMA|MXokoR4S@i_Q(g~ek?2s;KQ)k?2p|R?_ zNJ*7X7zEjDbQG4w)0m+~(=H5W(DyRzz=BSgK63k9W}~0c0oyRwQ^=|JZXAoJOeS9G zrOLe?TU}`L#lKrsUUHn$ee<)kBUh5{W(V%otWl*0n%#W^GH^Gu21!5ABK=OHoF
      os(VjoXjDX;!mYA|8yeTAVUA=a5z7H8Zj ze|(l(MutUD34edX7M=biTy~MH;N{A3wsyI&Qz{xBo{n$BFq{#sdX!E)sXE#X`%{Gv^%g0O5|>0tppI1d2ul1H{Eyjf{x=10>J%TT z=3ttn;;TzLfytXOx_#37zR+^ge6vG_)?P^GOP2P!MEgyNLe8O&&nt_Zb)MMh*7;AT z>y$PLcMbC1p&3iqP|cj)L#HVugQ+8>1uiy~lPT4mQUSH^fEuB^1322XBiLTEDm4t|t&KO;CxaW>B z4R)+hubXjzNM!jApzey*GA9RFX`OKWF^e_KTNU8BBPtZd`c&}U+Qui+t<9G43w9q~ z38~cm=+hcC2odpUUyvm06qdo;Yx10iC>79~Lhd>&KI03l1esIZ4BXc<^E=fW_9a|w z^j%Fys#%v^c&*du@IF^)6UQK%eiYn<`{s77V!zLH=G;qb=_Lf7IfznNGEj(O%?r+# zS1eVz5#=@fKGLJt?%u_8dux$z!FakL-X79S(fNfWni!JYPEYWI2zmRbrRL>T>vdX5 zVmsRUp4!s>&GI%kNSKqam122PM6qF>mevya3Ld8CuRLj_rqoOw9Hiw@jc(I{lwB0K zN6e1(n>A`3@#XiS@BiE$sxWyc#*j!HsVl5$X_xbbQ-O3N@cRT|KX0=-{=z=`Hjd7| z8!4ZxdCnFmNyQ94-oss8Y0$`F5D#4aejqUfRo~ zkz`^{c=)5x|7S_Sfk1#b?3hiY7ASH{6$FI}u$*@E@$rxo6Z@ZMKQRni4CCc0>S5>h zZ^HI-`zs!52p%5$j+6)pX-{}*Jdrf6ea7rV%PEtvXDsxI2hNzSUTzm@KEtU&h^8_+ zU6ErxFyX68!2QtmNa0G_ZYIhWfblHAi)k(S$iQnusOPlbRaP zv$W@eiWBS{(^GYeC%@-iZoS$WT}l0x?l}LwR4Gr@YnH5?hGk@q@j+sY1pze6jN224 zx!i&Wd6^ZrUHB;R5G5ppE`zu6vu?@ttpJk$<{ zk8HGO!|1?n}ofH{Z{T)005TSAxpsupx8C`w$Wiff)UKj73gZ|H~Jp0;idzu&UG=6)qQGsu4Zz*SHbICgB2X zSBlzlo>8D|svB!FLoJy7-H+2dvsSeg-TIJfKhknKNMNbveDd}s#h0Li*h+cugdDdZ za{Gi}con6Utb$tJOWzfZ1+cQay(xm|z+th+a}lBN6-7P4zW0NT7W;K(O>(boqz4#@?`SUS(*3BBSxLb; zyHPd6dR?wOhmEwa(hdC)g-xv-iz#CdI0L=Bu3=~OV?_(c->+R>Liu#;!=(6~R^%M3 zZlkA~bhKbd&43NZ8V^!i?@Bkmt2#@~$xB@&%(R)P1fiWCt2@mcD76p>B4Oc1^K3hEM=aww=ZXIKRiy( bN=ze=nQx)nMpLN52kdJ)Ywsm+ffD}(M+maj diff --git a/src/META-INF/mozilla.sf b/src/META-INF/mozilla.sf deleted file mode 100644 index 320319dd0..000000000 --- a/src/META-INF/mozilla.sf +++ /dev/null @@ -1,4 +0,0 @@ -Signature-Version: 1.0 -MD5-Digest-Manifest: /gjyjvUwMAfWGYwYw54bpw== -SHA1-Digest-Manifest: 93RJzzo6Uc5BI3Yj2ffLSr6dWnI= - diff --git a/src/manifest.json b/src/manifest.json index 0a42b2156..802ee9c70 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -28,4 +28,4 @@ "strict_min_version": "52.0" } } -} \ No newline at end of file +} diff --git a/src/setwhitelist.html b/src/setwhitelist.html index 1214be2b7..241e909c6 100644 --- a/src/setwhitelist.html +++ b/src/setwhitelist.html @@ -19,4 +19,4 @@ When MiTM attempt is detected:

      - \ No newline at end of file + diff --git a/src/setwhitelist.js b/src/setwhitelist.js index a0e7305da..f3e46b3a6 100644 --- a/src/setwhitelist.js +++ b/src/setwhitelist.js @@ -46,4 +46,4 @@ var getting=browser.storage.local.get(); getting.then(setCurrentChoice, onError); } document.addEventListener("DOMContentLoaded", loadWhitelist); -document.querySelector("form").addEventListener("submit", saveWhitelist); \ No newline at end of file +document.querySelector("form").addEventListener("submit", saveWhitelist); diff --git a/src/style.css b/src/style.css index 207f5e518..594891ef7 100644 --- a/src/style.css +++ b/src/style.css @@ -1,3 +1,3 @@ body{font:13px Verdana} label{-webkit-user-select:none;-moz-user-select:none} -textarea{white-space:pre;overflow-wrap:normal;overflow-x:scroll} \ No newline at end of file +textarea{white-space:pre;overflow-wrap:normal;overflow-x:scroll} From c50bfa5f85df730a977813ac5bd4dc0007a1fe5d Mon Sep 17 00:00:00 2001 From: nullius Date: Sun, 7 Jan 2018 04:42:39 +0000 Subject: [PATCH 13/15] Pull v1.0.10.1 from a.m.o.; change to MIT license - Pull v1.0.10.1 from a.m.o. Source files here included as-is. - Change to MIT license. Closes #6. --- LICENSE.md | 24 +++++--- src/LICENSE.txt | 21 +++++++ src/META-INF/manifest.mf | 52 ++++++++++++++++++ src/META-INF/mozilla.rsa | Bin 0 -> 4196 bytes src/META-INF/mozilla.sf | 4 ++ src/manifest.json | 6 +- src/setwhitelist.html | 16 ++++-- src/setwhitelist.js | 9 ++- src/stop_cf_mitm.js | 115 +++++++++++++++++++++++++++------------ src/style.css | 2 +- 10 files changed, 193 insertions(+), 56 deletions(-) create mode 100644 src/LICENSE.txt create mode 100644 src/META-INF/manifest.mf create mode 100644 src/META-INF/mozilla.rsa create mode 100644 src/META-INF/mozilla.sf diff --git a/LICENSE.md b/LICENSE.md index 418134fb0..78663a998 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,11 +1,21 @@ -[Original license](https://addons.mozilla.org/en-US/firefox/addon/block-cloudflare-mitm-attack/license/1.0.0): +# MIT License -# Block Cloudflare MiTM Attack 1.0.0 -# Source Code License -# WTFPL +Copyright (c) 2017–2018 cypherpunk, nullius. All rights reserved. -WTFPL +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: ---- +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. -Any modifications by nullius are released to the public domain. Copyright is irrevocably disclaimed on behalf of self, heirs, assigns, etc., etc. In other words, NO LICENSE! The public domain is not a license. I politely request that derivative works either stay in the public domain, or keep a liberal license. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/src/LICENSE.txt b/src/LICENSE.txt new file mode 100644 index 000000000..f16841348 --- /dev/null +++ b/src/LICENSE.txt @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2017 cypherpunk + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/src/META-INF/manifest.mf b/src/META-INF/manifest.mf new file mode 100644 index 000000000..c307b274c --- /dev/null +++ b/src/META-INF/manifest.mf @@ -0,0 +1,52 @@ +Manifest-Version: 1.0 + +Name: LICENSE.txt +Digest-Algorithms: MD5 SHA1 +MD5-Digest: qXb1tNEEzwKzeshtJ1M/kQ== +SHA1-Digest: 03detz1pRNQMPN5Zzrp9QUFgEzI= + +Name: manifest.json +Digest-Algorithms: MD5 SHA1 +MD5-Digest: QnJYk5CRbNCObYHSeZVH6g== +SHA1-Digest: jHusL8aDzwijyyieVxDd93fXaPA= + +Name: setwhitelist.html +Digest-Algorithms: MD5 SHA1 +MD5-Digest: fm+fbvhq6VT6zFDMVOqj0g== +SHA1-Digest: xO/+NXtU9pseGAziYa0dpLb2nKc= + +Name: setwhitelist.js +Digest-Algorithms: MD5 SHA1 +MD5-Digest: 5SSypsVZZWyJmmISP3hQIQ== +SHA1-Digest: 3r0rOXaShtVuuvJktGoEIEcj584= + +Name: stop_cf_mitm.js +Digest-Algorithms: MD5 SHA1 +MD5-Digest: Aou+XD559L8hukeSmmQ+Zw== +SHA1-Digest: hP9OxIjetlG8v+eU1467GVlY1UI= + +Name: style.css +Digest-Algorithms: MD5 SHA1 +MD5-Digest: qVs2pHeT+noWZ7sQttO/2Q== +SHA1-Digest: TgXktEJyUNImPTbaPF/viYfWcQo= + +Name: icons/icon-16.png +Digest-Algorithms: MD5 SHA1 +MD5-Digest: BMpS9q28ylgmlebPGO0HBw== +SHA1-Digest: ejT7934OdR+CRbKWJFoXPSvAo7M= + +Name: icons/icon-32.png +Digest-Algorithms: MD5 SHA1 +MD5-Digest: DPnYcEZnUZa6voVAI6nm0w== +SHA1-Digest: CqFkcPOpoKmq7Ly82vbmq/Ouhzs= + +Name: icons/icon-48.png +Digest-Algorithms: MD5 SHA1 +MD5-Digest: PVwvbCCjWU+2fJeaUrrwVA== +SHA1-Digest: upats+fdmYeFmAtgvIVwaW8mszA= + +Name: icons/icon-64.png +Digest-Algorithms: MD5 SHA1 +MD5-Digest: YVzojmSoYwjhM0m20OOk5A== +SHA1-Digest: sa4ES4gA5mSb0cu9UgGpp/2eh84= + diff --git a/src/META-INF/mozilla.rsa b/src/META-INF/mozilla.rsa new file mode 100644 index 0000000000000000000000000000000000000000..409df64b00a7f0dc9af0e35c93f51f04165b0973 GIT binary patch literal 4196 zcmds4c|4SD+ct|KCWOX5MibE(?iq}Im+U(!#55QRBYT#Zp+O5-vSd#lOHm>uk}V#D zgpjRxvb0zdvh`9=PrdK=$M@Iw`+mRozx%k)wf!I_ za4wC*9H4O+gFzr1E3gm7h+%_(`574i)?Xx0E)D(ypfPp>G)Pr01PlU$VIZe&UCB^j z|354c>uwUY_4^*|@s|;@Edr z?fas@G{4vTGmDuEtgZQTQ6Su6A$93Cs{idVoA&)`T{7orTFK#-MH z1c;d-GC*ixc81;eEMOWK#Beu;^MMpODc^5{t$&{A{HV0yAip zu7hF|(>S3bV$AU|vMvkpF3qRfS>!}5@Awcj)2>-sBhKV9;o!lHrM#3Iobpb&%kLV4 z*&pl8cHztLJ&&hNFz?>INI3G_&WmQb31?`n+Ec8m{W=p=hy3$#R)hT0KKxmb3`30=h6W_jIP) ziX3J*t0(p=wsYW#(RzlT6}GTKEwx+W{;8d8d+|SE*+ky9kJRbBO0kgHX#G0!moE{u zPA3xwTBG$hEe}7HV2%-Et}HeatUVsqcA%ueORBV0Ut5=Z#bA1oZf+fLRQ2}OeKLn6 zn3u2n9JzgJRr4;S(%i_+p5s{#o1r>F?QvUOm4RL*&+{4WCE9Nk*E9VYL+*NN>|yl0e`oMkh4#i9&LY^2Z8N0@#U|)m9#^+D z&)_JwZxvV$&_(K!Kdm2J;_=mGk;F*HjB+|#)!bn4P?ov0s?p2P3z`%sUFa*Q^`hAD&HtOyU0Wk#Le&Jhp9BnJr?#Jq;Zm@`< zT0P;xt6y4Dc_4{T7_j3#?kRpfv*pW`YWv*oIMpue!Y@>)M#9Yi0<AJ>Y7((6p}kQPrGPM8Xuo6Tm{=op)V_1XV1Dt< z;07Q`etQ0_OU9BzN}oGIq`dP=fncv3Q?Ji4G=q>@xs6?|x_yDJY#IA#tFs(=A^Yp` ztn!gbYyDb7R%loyoppql zj#dv{*7w%Iiw2{}NXV0(@xFl;RN!-S_ctdmUKI>(DZP|@Pb5BSObr?E*vWgT$S8)0 zo+i6vpJLd#H143`_s0`C8;_;2#OoAJJ{`<5u2E2$^B7z7r(Cy= z)!O+hmtSd8+x4#WsxBuEM+?k@%yo{exvshfb|~6dR4GR-WpC@=eWd|yx@S(f+*)<& zqG7XEN_XK$_L<}(k0^ij%9R{Hg|w@|mp`(st4RlFuuXslo%*5Z5Do_L@4E!PE9YT9 zrRo1f&4mG>A8L;9p-}vG^&9(}suMja-&I%+kip60W#sU(_&pWggR+0a|C-b0e^coT;gO> zA2^d?e6I=feDKf}`0Mypt?ZdC;!TxQFe_bN%%JH3gUTjj0Iu9c0<%-pMnP{vN4bXJ zPxGxliy+UiJLC@rUW>~O)>{&K#%E}qCDfMjr1%`=-kb_5s6B2u_Q@?!*+t2FvzA8W zBrlRpm|KNT{VW+Go8#Y)Pn53ZP7OJ&$LFy#N3kgQEQY!wB@x4O=g5nd)v57IYb~St zE@Mw6H0pQy^hV4tN_w|{l4Iz?C?vS*q7FmUir8%+iR6X*=-^7wNv5daZByF-k=}^E zsL~@ZYC6(wpSw_N-A9JDk>O2(gS=)jT-L%-Uu#ug`psm|*Ez~BViUMSm@#s}5=<*T zTh)5jHw?|r8_EYZD?5dblla@zuA!uG5?ni0GJ~M`t z8;B)U=Uxq%vuqvq7xiO*Io%$v^5)8Ai|Xp(`r?|Fb|rr<7LZ9~!gf9;z}L23w78G` znP696Xxfw`>S$>S;qu@gTQrB|hGTggGQpoeev^F#)mcN09Ad^L2p@ajs*43fVAk^a zG>{@d1IYpK-KG)Zf-(XS5a=7gwujhvpP|xP83;#7qvtmu*uL5D{;2A~%0<)NX}T!5Mt!Cg@|Z|isGjaSgo2X`{j z$Rd(tYIPo!dOQ68SrTX<5Fi8F=S0^7(bu&=P^cK8pmYq1PXAvOyQyE+|M^q;T1ZUpXFYtdXIMM3R6x>;wmqj^)TU?0rfubPz z(t)p&*!f#UHwv;VqR)vkf963w7EE8Y`J>>rq(De-7JwYry*sX+S9bOKna`$^Z3Y@0 zt=O7d#lngEPCk69)HP8?SlgF35=Pg~fy^qdZ@!IT>{bp4&qg=-s~u2({pb4dha67H zurIS%YvkirhnCOntwHX5URLWpk)!?sIU)dk{E-^05Xvpr7gp1NeV?)72&$_7Lpd(l zX1}alt^>gP%L74hzdJiX@K=Np$NnF-2SERd zLUFs=al4c;%@2WC#``trhJ*?sUQQ{x{oY%<<^xItGjL?|*Cx!z1yUnqkTu*c{QHh% zD2lDv^34;6Ge$XutaTYW*&Op#O@$utfOIXc8mo+B_$N07?nZ7!;m zD>-`d`U|*vpq*d5pL5%?F!q(F>2-3{cC2alhgryXbZ% zSA;K|wuG;>Mfsz*k|()NF}N7LY(EfCjh)~{hJW3}z$cRO&iQajgsYBj^)UdpriDQQ zS07eA+5IH(&;H!wfuzqg_+fqt9yEwd~VwKXdEO7Uu$?XU~$rEa3i9t4l-+JJ0 z{MQ`&p2Y-3pA4Dkem!ciEXWECrD(HsrJJR#{+@{Kn)lRv@@8$b)7 ejvn$|Gi|JJ6=qwB","storage","activeTab"], +"permissions": ["webRequest","webRequestBlocking","","storage","activeTab","tabs"], "options_ui": { "page": "setwhitelist.html", "browser_style": false @@ -28,4 +28,4 @@ "strict_min_version": "52.0" } } -} +} \ No newline at end of file diff --git a/src/setwhitelist.html b/src/setwhitelist.html index 241e909c6..6df154855 100644 --- a/src/setwhitelist.html +++ b/src/setwhitelist.html @@ -2,21 +2,25 @@ [Whitelist]
      1. Add FQDN or .FQDN you want to ignore. Click "Save".
      2. Open new tab and visit whitelisted website.
      -(.mozilla.org will allow mozilla.org and *.mozilla.org) +(.mozilla.org will allow mozilla.org and *.mozilla.org)

      +
      (Add-on will notify you)

      [Advanced]
      -
      -
      -

      +


      +Also detect:
      +
      +
      +
      +
      When MiTM attempt is detected:

      -
      +


      - + \ No newline at end of file diff --git a/src/setwhitelist.js b/src/setwhitelist.js index f3e46b3a6..33df3078a 100644 --- a/src/setwhitelist.js +++ b/src/setwhitelist.js @@ -17,10 +17,12 @@ browser.storage.local.set({myset_cfwhite: cf_tmpdata});document.querySelector("# //workaround - simplewarn didn't work as expected if ign3p is active if (document.querySelector("#myset_xsimplewarn_1").checked){document.querySelector("#myset_xign3p").checked=false;} //ADVANCED +if (document.querySelector("#myset_xautoclean").checked){browser.storage.local.set({myset_xautoclean: "y"});}else{browser.storage.local.set({myset_xautoclean: "n"});} if (document.querySelector("#myset_xincapsula").checked){browser.storage.local.set({myset_xincapsula: "y"});}else{browser.storage.local.set({myset_xincapsula: "n"});} if (document.querySelector("#myset_xgshield").checked){browser.storage.local.set({myset_xgshield: "y"});}else{browser.storage.local.set({myset_xgshield: "n"});} if (document.querySelector("#myset_xsucuri").checked){browser.storage.local.set({myset_xsucuri: "y"});}else{browser.storage.local.set({myset_xsucuri: "n"});} if (document.querySelector("#myset_xign3p").checked){browser.storage.local.set({myset_xign3p: "y"});}else{browser.storage.local.set({myset_xign3p: "n"});} +if (document.querySelector("#myset_xwhitemark").checked){browser.storage.local.set({myset_xwhitemark: "y"});}else{browser.storage.local.set({myset_xwhitemark: "n"});} //ACTION if (document.querySelector("#myset_xsimplewarn_0").checked){browser.storage.local.set({myset_xsimplewarn:0});} if (document.querySelector("#myset_xsimplewarn_1").checked){browser.storage.local.set({myset_xsimplewarn:1});} @@ -32,18 +34,19 @@ function setCurrentChoice(r){ //WHITELIST document.querySelector("#myset_cfwhite").value = r.myset_cfwhite||""; //ADVANCED +if (r.myset_xautoclean=='y'){document.querySelector("#myset_xautoclean").checked=true;}else{document.querySelector("#myset_xautoclean").checked=false;} if (r.myset_xincapsula=='y'){document.querySelector("#myset_xincapsula").checked=true;}else{document.querySelector("#myset_xincapsula").checked=false;} if (r.myset_xgshield=='y'){document.querySelector("#myset_xgshield").checked=true;}else{document.querySelector("#myset_xgshield").checked=false;} if (r.myset_xsucuri=='y'){document.querySelector("#myset_xsucuri").checked=true;}else{document.querySelector("#myset_xsucuri").checked=false;} if (r.myset_xign3p=='y'){document.querySelector("#myset_xign3p").checked=true;}else{document.querySelector("#myset_xign3p").checked=false;} +if (r.myset_xwhitemark=='y'){document.querySelector("#myset_xwhitemark").checked=true;}else{document.querySelector("#myset_xwhitemark").checked=false;} if (r.myset_xsimplewarn){switch(r.myset_xsimplewarn){ case 1:document.querySelector("#myset_xsimplewarn_1").checked=true;break; case 2:document.querySelector("#myset_xsimplewarn_2").checked=true;break; default:document.querySelector("#myset_xsimplewarn_0").checked=true;break; }}else{document.querySelector("#myset_xsimplewarn_0").checked=true;} } -var getting=browser.storage.local.get(); -getting.then(setCurrentChoice, onError); +var getting=browser.storage.local.get();getting.then(setCurrentChoice,onError); } document.addEventListener("DOMContentLoaded", loadWhitelist); -document.querySelector("form").addEventListener("submit", saveWhitelist); +document.querySelector("form").addEventListener("submit", saveWhitelist); \ No newline at end of file diff --git a/src/stop_cf_mitm.js b/src/stop_cf_mitm.js index 6aff8ced4..2b16e0349 100644 --- a/src/stop_cf_mitm.js +++ b/src/stop_cf_mitm.js @@ -8,14 +8,19 @@ var cfaddon_isdone=0; var cf_ignore=[]; -var cf_history=[];//used by whitelist-from-warnpage +var cf_history=[]; +var cf_dstarray={}; +var wl_autoclean=0; var stop_incapsula=0; var stop_gshield=0; var stop_sucuri=0; var ign_thirdparty=0; +var do_markwhitelistsite=0; var do_reaction=0; var cfblockscreen=''; var cf_blocked_img='data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQBCgAAACwAAAAAAQABAAACAkQBADs='; +var cf_template_blocked='PGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPjxoZWFkPjx0aXRsZT5JbnNlY3VyZSBDb25uZWN0aW9uPC90aXRsZT48bWV0YSBjaGFyc2V0PSJ1dGYtOCI+DQo8bGluayBpZD0iZmF2aWNvbiIgcmVsPSJpY29uIiB0eXBlPSJpbWFnZS94LWljb24iIGhyZWY9ImRhdGE6aW1hZ2UveC1pY29uO2Jhc2U2NCxBQUFCQUFFQUVCQUFBQUVBSUFCb0JBQUFGZ0FBQUNnQUFBQVFBQUFBSUFBQUFBRUFJQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT3prNE9LcE1Ta3E2VUU5UHVsUlRVN3BYVjFlNlcxdGJ1bDFkWGJwYlcxdTZXRmhZdWxWVlZicFRVMU82VUZCUXVreE1UTG90TFMyYkFBQUFPelkwTko3WTNOei92OXpoLzhIZTQvL0Q0ZWIveHVUcC84am02Ly9JNU9uL3grUG8vOGJqNmYvRTRlZi93dC9sLzhIZDQvKy8yZC8vM04vZi94a1pHWVUyTlRXZDJON2UveGVreGY4V3VlRC9GcnJoL3hhNzRmOFVyOVAvSWl3dS95SXNMdjhXczkvL0Y3RGUveGVyM1A4WHB0ci9JSlM2Lzk3ZzRmOFpHUm1DQUFBQVY5SFEwTzkxczd6L0Y4SGoveGJDNC84V3crVC9GTGJWL3lBckxmOGdLeTMvRnJyaC94YTEzLzhYc043L0ZxYlYvNUczdmYreHNiSFVBQUFBUlFBQUFDNW9aMmVWMk43Zi95V3R2LzhYeXViL0Zzcm0veGJKNXY4WnE4Zi9HYXZIL3hiQTQvOFd1K0gvRnJYZi96V2d1Zi9aMmRuL0x5OHZlQUFBQUJ3QUFBQUFBQUFBU3NiRnhkMmd5ODcvS3RUbS94blU2djhXME9qL0ZFSkkveFJDU1A4V3hlWC9Gci9qL3hXdzAvK3N3c1AvazVPVHRnQUFBRG9BQUFBQUFBQUFBQUFBQUNGRlJVVis2ZXZyL3pxMXZ2OHc1UEgvSjkvdi95SWlJdjhpSWlML0Zzcm0veGJFNVA5WHE3bi8xOWZYK0JrWkdXMEFBQUFLQUFBQUFBQUFBQUFBQUFBQUFBQUFQcmUydHNuQTN1RC9MTnJqL3kvbzh2OHJLeXYvS3lzci95dmI3djhtdmREL3hNL1AvM2QzZDZBQUFBQTBBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQlViR3h0dDhQRHcrRnJBdy84dTdQUC9ORFEwL3pRME5QOHczZS8vZ0x1Ly84akl5T2dBQUFCUkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU5KMmRuYlRTNCtUL0tkRFYvelE4UFA4MFFFSC9OTDNKLzlYWjJmOVdWbGFMQUFBQUtBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBa0FBQUJYMzkvZjczM0V4djh0NXZIL0xkcnAvNXJCdy8rMnRyYlVBQUFBUlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTG0xdGJaWGY1dWIvTExuRC8wUzd4UC9kM2QzL01URXhlQUFBQUJ3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkt4OGZIM2JIUDBmKzh6TTMvbDVlWHRnQUFBRG9BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJVEl5TW5hK3ZyN1RycTZ1eVJrWkdXMEFBQUFLQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBYkFBQUFSQUFBQUQ0QUFBQVZBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQS8vOEFBSUFCQUFBQUFBQUFBQUFBQUlBQkFBQ0FBd0FBd0FNQUFPQUhBQURnQndBQThBOEFBUEFQQUFENEh3QUErRDhBQVB3L0FBRCtmd0FBLy84QUFBPT0iPg0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj48IS0tQG5hbWVzcGFjZSBodG1sICJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIjtAbmFtZXNwYWNlIHh1bCAiaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9rZXltYXN0ZXIvZ2F0ZWtlZXBlci90aGVyZS5pcy5vbmx5Lnh1bCI7KnwqOnJvb3R7LS1pbi1jb250ZW50LXBhZ2UtY29sb3I6IzQyNGU1YTstLWluLWNvbnRlbnQtcGFnZS1iYWNrZ3JvdW5kOiNmYmZiZmI7LS1pbi1jb250ZW50LXRleHQtY29sb3I6IzMzMzstLWluLWNvbnRlbnQtc2VsZWN0ZWQtdGV4dDojZmZmOy0taW4tY29udGVudC1oZWFkZXItYm9yZGVyLWNvbG9yOiNjOGM4Yzg7LS1pbi1jb250ZW50LWJveC1iYWNrZ3JvdW5kOiNmZmY7LS1pbi1jb250ZW50LWJveC1iYWNrZ3JvdW5kLW9kZDojZjNmNmZhOy0taW4tY29udGVudC1ib3gtYmFja2dyb3VuZC1ob3ZlcjojZWJlYmViOy0taW4tY29udGVudC1ib3gtYmFja2dyb3VuZC1hY3RpdmU6I2RhZGFkYTstLWluLWNvbnRlbnQtYm94LWJvcmRlci1jb2xvcjojYzFjMWMxOy0taW4tY29udGVudC1pdGVtLWhvdmVyOnJnYmEoMCwxNDksMjIxLDAuMjUpOy0taW4tY29udGVudC1pdGVtLXNlbGVjdGVkOiMwMDk1ZGQ7LS1pbi1jb250ZW50LWJvcmRlci1oaWdobGlnaHQ6I2ZmOTUwMDstLWluLWNvbnRlbnQtYm9yZGVyLWZvY3VzOiMwMDk1ZGQ7LS1pbi1jb250ZW50LWJvcmRlci1jb2xvcjojYzFjMWMxOy0taW4tY29udGVudC1jYXRlZ29yeS10ZXh0OiNjMWMxYzE7LS1pbi1jb250ZW50LWNhdGVnb3J5LWJvcmRlci1mb2N1czoxcHggZG90dGVkICNmZmY7LS1pbi1jb250ZW50LWNhdGVnb3J5LXRleHQtc2VsZWN0ZWQ6I2YyZjJmMjstLWluLWNvbnRlbnQtY2F0ZWdvcnktYmFja2dyb3VuZDojNDI0ZjVhOy0taW4tY29udGVudC1jYXRlZ29yeS1iYWNrZ3JvdW5kLWhvdmVyOiM1ZTY5NzI7LS1pbi1jb250ZW50LWNhdGVnb3J5LWJhY2tncm91bmQtYWN0aXZlOiMzNDNmNDg7LS1pbi1jb250ZW50LXRhYi1jb2xvcjojNDI0ZjVhOy0taW4tY29udGVudC1saW5rLWNvbG9yOiMwMDk1ZGQ7LS1pbi1jb250ZW50LWxpbmstY29sb3ItaG92ZXI6IzE3OGNlNTstLWluLWNvbnRlbnQtbGluay1jb2xvci1hY3RpdmU6I2ZmOTUwMDstLWluLWNvbnRlbnQtbGluay1jb2xvci12aXNpdGVkOiM1NTFhOGI7LS1pbi1jb250ZW50LXByaW1hcnktYnV0dG9uLWJhY2tncm91bmQ6IzAwOTVkZDstLWluLWNvbnRlbnQtcHJpbWFyeS1idXR0b24tYmFja2dyb3VuZC1ob3ZlcjojMDA4YWNiOy0taW4tY29udGVudC1wcmltYXJ5LWJ1dHRvbi1iYWNrZ3JvdW5kLWFjdGl2ZTojMDA2YjlkOy0taW4tY29udGVudC10YWJsZS1ib3JkZXItZGFyay1jb2xvcjojZDFkMWQxOy0taW4tY29udGVudC10YWJsZS1oZWFkZXItYmFja2dyb3VuZDojMDA5NWRkfWh0bWx8aHRtbCx4dWx8cGFnZSx4dWx8d2luZG93e2ZvbnQ6bWVzc2FnZS1ib3g7LW1vei1hcHBlYXJhbmNlOm5vbmU7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LXBhZ2UtYmFja2dyb3VuZCk7Y29sb3I6dmFyKC0taW4tY29udGVudC1wYWdlLWNvbG9yKX1odG1sfGJvZHl7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6bm9ybWFsO21hcmdpbjowfWh0bWx8aDF7Zm9udC1zaXplOjIuNWVtO2ZvbnQtd2VpZ2h0OmxpZ2h0ZXI7bGluZS1oZWlnaHQ6MS4yO2NvbG9yOnZhcigtLWluLWNvbnRlbnQtdGV4dC1jb2xvcik7bWFyZ2luOjA7bWFyZ2luLWJvdHRvbTouNWVtfWh0bWx8aHJ7Ym9yZGVyLXN0eWxlOnNvbGlkIG5vbmUgbm9uZSBub25lO2JvcmRlci1jb2xvcjp2YXIoLS1pbi1jb250ZW50LWJvcmRlci1jb2xvcil9eHVsfGNhcHRpb257LW1vei1hcHBlYXJhbmNlOm5vbmU7bWFyZ2luOjB9eHVsfGNhcHRpb24+eHVsfGNoZWNrYm94LHh1bHxjYXB0aW9uPnh1bHxsYWJlbHtmb250LXNpemU6MS4zcmVtO2ZvbnQtd2VpZ2h0OmJvbGQ7bGluZS1oZWlnaHQ6MjJweH14dWx8Y2FwdGlvbj54dWx8Y2hlY2tib3gseHVsfGNhcHRpb24+eHVsfGxhYmVse21hcmdpbjowIWltcG9ydGFudH0qfCoubWFpbi1jb250ZW50e3BhZGRpbmctdG9wOjQwcHg7cGFkZGluZy1pbmxpbmUtZW5kOjQ0cHg7cGFkZGluZy1ib3R0b206NDhweDtwYWRkaW5nLWlubGluZS1zdGFydDo0OHB4O292ZXJmbG93OmF1dG99eHVsfHByZWZwYW5lPnh1bHwqLmNvbnRlbnQtYm94e292ZXJmbG93OnZpc2libGV9eHVsfGdyb3VwYm94ey1tb3otYXBwZWFyYW5jZTpub25lO2JvcmRlcjowO21hcmdpbjoxNXB4IDAgMDtwYWRkaW5nLWlubGluZS1zdGFydDowO3BhZGRpbmctaW5saW5lLWVuZDowO2ZvbnQtc2l6ZToxLjI1cmVtfXh1bHxncm91cGJveCB4dWx8bGFiZWw6bm90KC5tZW51LWFjY2VsKTpub3QoLm1lbnUtdGV4dCk6bm90KC5pbmRlbnQpLHh1bHxncm91cGJveCB4dWx8ZGVzY3JpcHRpb257bWFyZ2luLWlubGluZS1zdGFydDowIWltcG9ydGFudDttYXJnaW4taW5saW5lLWVuZDowIWltcG9ydGFudH14dWx8dGFicGFuZWxzey1tb3otYXBwZWFyYW5jZTpub25lO2ZvbnQtc2l6ZToxLjI1cmVtO2xpbmUtaGVpZ2h0OjIycHg7Ym9yZGVyOjA7cGFkZGluZzowO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Y29sb3I6aW5oZXJpdH14dWx8dGFic3ttYXJnaW4tYm90dG9tOjE1cHg7Ym9yZGVyLXRvcDoxcHggc29saWQgdmFyKC0taW4tY29udGVudC1ib3gtYm9yZGVyLWNvbG9yKTtib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1pbi1jb250ZW50LWJveC1ib3JkZXItY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0taW4tY29udGVudC1wYWdlLWJhY2tncm91bmQpfXh1bHwqLnRhYnMtbGVmdCx4dWx8Ki50YWJzLXJpZ2h0e2JvcmRlci1ib3R0b206MH14dWx8dGFiey1tb3otYXBwZWFyYW5jZTpub25lO21hcmdpbi10b3A6MDtwYWRkaW5nOjRweCAyMHB4O21pbi1oZWlnaHQ6NDRweDtjb2xvcjp2YXIoLS1pbi1jb250ZW50LXRhYi1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LXBhZ2UtYmFja2dyb3VuZCk7Ym9yZGVyLXdpZHRoOjA7Ym9yZGVyLXJhZGl1czowIWltcG9ydGFudDt0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgNTBtcyBlYXNlIDBzfXh1bHx0YWI6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LWJveC1iYWNrZ3JvdW5kLWhvdmVyKX14dWx8dGFiW3NlbGVjdGVkXXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtYm94LWJhY2tncm91bmQtaG92ZXIpO3BhZGRpbmctYm90dG9tOjA7Ym9yZGVyLWJvdHRvbTo0cHggc29saWQgdmFyKC0taW4tY29udGVudC1ib3JkZXItaGlnaGxpZ2h0KX14dWx8Ki50YWItdGV4dHtmb250LXNpemU6MS4zcmVtO2xpbmUtaGVpZ2h0OjIycHh9aHRtbHxidXR0b257cGFkZGluZzozcHg7Zm9udDppbmhlcml0fSp8YnV0dG9uLGh0bWx8c2VsZWN0LHh1bHxjb2xvcnBpY2tlclt0eXBlPSJidXR0b24iXSx4dWx8bWVudWxpc3R7LW1vei1hcHBlYXJhbmNlOm5vbmU7bWluLWhlaWdodDozMHB4O2NvbG9yOnZhcigtLWluLWNvbnRlbnQtdGV4dC1jb2xvcik7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1pbi1jb250ZW50LWJveC1ib3JkZXItY29sb3IpOy1tb3otYm9yZGVyLXRvcC1jb2xvcnM6bm9uZSFpbXBvcnRhbnQ7LW1vei1ib3JkZXItcmlnaHQtY29sb3JzOm5vbmUhaW1wb3J0YW50Oy1tb3otYm9yZGVyLWJvdHRvbS1jb2xvcnM6bm9uZSFpbXBvcnRhbnQ7LW1vei1ib3JkZXItbGVmdC1jb2xvcnM6bm9uZSFpbXBvcnRhbnQ7Ym9yZGVyLXJhZGl1czoycHg7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LXBhZ2UtYmFja2dyb3VuZCl9aHRtbHxidXR0b246ZW5hYmxlZDpob3ZlcixodG1sfHNlbGVjdDplbmFibGVkOmhvdmVyLHh1bHxidXR0b246bm90KFtkaXNhYmxlZD0idHJ1ZSJdKTpob3Zlcix4dWx8Y29sb3JwaWNrZXJbdHlwZT0iYnV0dG9uIl06bm90KFtkaXNhYmxlZD0idHJ1ZSJdKTpob3Zlcix4dWx8bWVudWxpc3Q6bm90KFtkaXNhYmxlZD0idHJ1ZSJdKTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtYm94LWJhY2tncm91bmQtaG92ZXIpfWh0bWx8YnV0dG9uOmVuYWJsZWQ6aG92ZXI6YWN0aXZlLGh0bWx8c2VsZWN0OmVuYWJsZWQ6aG92ZXI6YWN0aXZlLHh1bHxidXR0b246bm90KFtkaXNhYmxlZD0idHJ1ZSJdKTpob3ZlcjphY3RpdmUseHVsfGNvbG9ycGlja2VyW3R5cGU9ImJ1dHRvbiJdOm5vdChbZGlzYWJsZWQ9InRydWUiXSk6aG92ZXI6YWN0aXZlLHh1bHxtZW51bGlzdFtvcGVuPSJ0cnVlIl06bm90KFtkaXNhYmxlZD0idHJ1ZSJdKXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtYm94LWJhY2tncm91bmQtYWN0aXZlKX1odG1sfGJ1dHRvbjpkaXNhYmxlZCxodG1sfHNlbGVjdDpkaXNhYmxlZCx4dWx8YnV0dG9uW2Rpc2FibGVkPSJ0cnVlIl0seHVsfGNvbG9ycGlja2VyW3R5cGU9ImJ1dHRvbiJdW2Rpc2FibGVkPSJ0cnVlIl0seHVsfG1lbnVsaXN0W2Rpc2FibGVkPSJ0cnVlIl17b3BhY2l0eTouNX0qfGJ1dHRvbi5wcmltYXJ5e2JhY2tncm91bmQtY29sb3I6dmFyKC0taW4tY29udGVudC1wcmltYXJ5LWJ1dHRvbi1iYWNrZ3JvdW5kKTtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQ7Y29sb3I6dmFyKC0taW4tY29udGVudC1zZWxlY3RlZC10ZXh0KX1odG1sfGJ1dHRvbi5wcmltYXJ5OmVuYWJsZWQ6aG92ZXIseHVsfGJ1dHRvbi5wcmltYXJ5Om5vdChbZGlzYWJsZWQ9InRydWUiXSk6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LXByaW1hcnktYnV0dG9uLWJhY2tncm91bmQtaG92ZXIpfWh0bWx8YnV0dG9uLnByaW1hcnk6ZW5hYmxlZDpob3ZlcjphY3RpdmUseHVsfGJ1dHRvbi5wcmltYXJ5Om5vdChbZGlzYWJsZWQ9InRydWUiXSk6aG92ZXI6YWN0aXZle2JhY2tncm91bmQtY29sb3I6dmFyKC0taW4tY29udGVudC1wcmltYXJ5LWJ1dHRvbi1iYWNrZ3JvdW5kLWFjdGl2ZSl9eHVsfGNvbG9ycGlja2VyW3R5cGU9ImJ1dHRvbiJde3BhZGRpbmc6NnB4O3dpZHRoOjUwcHh9eHVsfGJ1dHRvbj54dWx8Ki5idXR0b24tYm94e3BhZGRpbmctcmlnaHQ6MTBweCFpbXBvcnRhbnQ7cGFkZGluZy1sZWZ0OjEwcHghaW1wb3J0YW50fXh1bHxtZW51bGlzdD54dWx8Ki5tZW51bGlzdC1sYWJlbC1ib3g+eHVsfCoubWVudWxpc3QtaWNvbltzcmNde21hcmdpbi1pbmxpbmUtZW5kOjVweH14dWx8YnV0dG9uW3R5cGU9Im1lbnUiXT54dWx8Ki5idXR0b24tYm94Pnh1bHwqLmJ1dHRvbi1tZW51LWRyb3BtYXJrZXJ7LW1vei1hcHBlYXJhbmNlOm5vbmU7bWFyZ2luOjFweCAwO21hcmdpbi1pbmxpbmUtc3RhcnQ6MTBweDtwYWRkaW5nOjA7d2lkdGg6MTBweDtoZWlnaHQ6MTZweDtib3JkZXI6MDtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fXh1bHxidXR0b25bdHlwZT0ibWVudSJdPnh1bHxtZW51cG9wdXB7LW1vei1hcHBlYXJhbmNlOm5vbmU7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1pbi1jb250ZW50LWJveC1ib3JkZXItY29sb3IpO2JvcmRlci1yYWRpdXM6MnB4O2JhY2tncm91bmQtY29sb3I6dmFyKC0taW4tY29udGVudC1ib3gtYmFja2dyb3VuZCl9eHVsfG1lbnVsaXN0Pnh1bHxtZW51cG9wdXAgeHVsfG1lbnUseHVsfG1lbnVsaXN0Pnh1bHxtZW51cG9wdXAgeHVsfG1lbnVpdGVtLHh1bHxidXR0b25bdHlwZT0ibWVudSJdPnh1bHxtZW51cG9wdXAgeHVsfG1lbnUseHVsfGJ1dHRvblt0eXBlPSJtZW51Il0+eHVsfG1lbnVwb3B1cCB4dWx8bWVudWl0ZW17LW1vei1hcHBlYXJhbmNlOm5vbmU7Zm9udC1zaXplOjFlbTtjb2xvcjp2YXIoLS1pbi1jb250ZW50LXRleHQtY29sb3IpO3BhZGRpbmctdG9wOi4yZW07cGFkZGluZy1ib3R0b206LjJlbTtwYWRkaW5nLWlubGluZS1zdGFydDoxMHB4O3BhZGRpbmctaW5saW5lLWVuZDozMHB4fXh1bHxtZW51bGlzdD54dWx8bWVudXBvcHVwPnh1bHxtZW51Om5vdChbZGlzYWJsZWQ9InRydWUiXSlbX21vei1tZW51YWN0aXZlPSJ0cnVlIl0seHVsfG1lbnVsaXN0Pnh1bHxtZW51cG9wdXA+eHVsfG1lbnVpdGVtOm5vdChbZGlzYWJsZWQ9InRydWUiXSlbX21vei1tZW51YWN0aXZlPSJ0cnVlIl0seHVsfGJ1dHRvblt0eXBlPSJtZW51Il0+eHVsfG1lbnVwb3B1cD54dWx8bWVudTpub3QoW2Rpc2FibGVkPSJ0cnVlIl0pW19tb3otbWVudWFjdGl2ZT0idHJ1ZSJdLHh1bHxidXR0b25bdHlwZT0ibWVudSJdPnh1bHxtZW51cG9wdXA+eHVsfG1lbnVpdGVtOm5vdChbZGlzYWJsZWQ9InRydWUiXSlbX21vei1tZW51YWN0aXZlPSJ0cnVlIl17Y29sb3I6dmFyKC0taW4tY29udGVudC10ZXh0LWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtaXRlbS1ob3Zlcil9eHVsfG1lbnVsaXN0Pnh1bHxtZW51cG9wdXA+eHVsfG1lbnU6bm90KFtkaXNhYmxlZD0idHJ1ZSJdKVtzZWxlY3RlZD0idHJ1ZSJdLHh1bHxtZW51bGlzdD54dWx8bWVudXBvcHVwPnh1bHxtZW51aXRlbTpub3QoW2Rpc2FibGVkPSJ0cnVlIl0pW3NlbGVjdGVkPSJ0cnVlIl0seHVsfGJ1dHRvblt0eXBlPSJtZW51Il0+eHVsfG1lbnVwb3B1cD54dWx8bWVudTpub3QoW2Rpc2FibGVkPSJ0cnVlIl0pW3NlbGVjdGVkPSJ0cnVlIl0seHVsfGJ1dHRvblt0eXBlPSJtZW51Il0+eHVsfG1lbnVwb3B1cD54dWx8bWVudWl0ZW06bm90KFtkaXNhYmxlZD0idHJ1ZSJdKVtzZWxlY3RlZD0idHJ1ZSJde2NvbG9yOnZhcigtLWluLWNvbnRlbnQtc2VsZWN0ZWQtdGV4dCk7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LWl0ZW0tc2VsZWN0ZWQpfXh1bHxtZW51bGlzdD54dWx8bWVudXBvcHVwPnh1bHxtZW51W2Rpc2FibGVkPSJ0cnVlIl0seHVsfG1lbnVsaXN0Pnh1bHxtZW51cG9wdXA+eHVsfG1lbnVpdGVtW2Rpc2FibGVkPSJ0cnVlIl0seHVsfGJ1dHRvblt0eXBlPSJtZW51Il0+eHVsfG1lbnVwb3B1cD54dWx8bWVudVtkaXNhYmxlZD0idHJ1ZSJdLHh1bHxidXR0b25bdHlwZT0ibWVudSJdPnh1bHxtZW51cG9wdXA+eHVsfG1lbnVpdGVtW2Rpc2FibGVkPSJ0cnVlIl17Y29sb3I6Izk5OTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fXh1bHxtZW51bGlzdD54dWx8bWVudXBvcHVwIHh1bHxtZW51c2VwYXJhdG9yLHh1bHxidXR0b25bdHlwZT0ibWVudSJdPnh1bHxtZW51cG9wdXAgeHVsfG1lbnVzZXBhcmF0b3J7LW1vei1hcHBlYXJhbmNlOm5vbmU7bWFyZ2luOjA7cGFkZGluZzowO2JvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLWluLWNvbnRlbnQtYm94LWJvcmRlci1jb2xvcik7Ym9yZGVyLWJvdHRvbTowfWh0bWx8aW5wdXRbdHlwZT0idGV4dCJdLGh0bWx8dGV4dGFyZWEseHVsfHRleHRib3h7LW1vei1hcHBlYXJhbmNlOm5vbmU7Y29sb3I6dmFyKC0taW4tY29udGVudC10ZXh0LWNvbG9yKTtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWluLWNvbnRlbnQtYm94LWJvcmRlci1jb2xvcik7LW1vei1ib3JkZXItdG9wLWNvbG9yczpub25lIWltcG9ydGFudDstbW96LWJvcmRlci1yaWdodC1jb2xvcnM6bm9uZSFpbXBvcnRhbnQ7LW1vei1ib3JkZXItYm90dG9tLWNvbG9yczpub25lIWltcG9ydGFudDstbW96LWJvcmRlci1sZWZ0LWNvbG9yczpub25lIWltcG9ydGFudDtib3JkZXItcmFkaXVzOjJweDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtYm94LWJhY2tncm91bmQpfXh1bHx0ZXh0Ym94e21pbi1oZWlnaHQ6MzBweDtwYWRkaW5nLXJpZ2h0OjEwcHg7cGFkZGluZy1sZWZ0OjEwcHh9eHVsfHRleHRib3gudHJlZS1pbnB1dHttaW4taGVpZ2h0OnVuc2V0O3BhZGRpbmctcmlnaHQ6dW5zZXQ7cGFkZGluZy1sZWZ0OnVuc2V0fWh0bWx8aW5wdXRbdHlwZT0idGV4dCJdLGh0bWx8dGV4dGFyZWF7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtwYWRkaW5nOjVweCAxMHB4fWh0bWx8aW5wdXRbdHlwZT0idGV4dCJdOmZvY3VzLGh0bWx8dGV4dGFyZWE6Zm9jdXMseHVsfHRleHRib3hbZm9jdXNlZF17Ym9yZGVyLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtYm9yZGVyLWZvY3VzKX1odG1sfGlucHV0W3R5cGU9InRleHQiXTpkaXNhYmxlZCxodG1sfHRleHRhcmVhOmRpc2FibGVkLHh1bHx0ZXh0Ym94W2Rpc2FibGVkPSJ0cnVlIl17b3BhY2l0eTouNX1odG1sfGEsLnRleHQtbGlua3tjb2xvcjp2YXIoLS1pbi1jb250ZW50LWxpbmstY29sb3IpO3RleHQtZGVjb3JhdGlvbjpub25lfWh0bWx8YTpob3ZlciwudGV4dC1saW5rOmhvdmVye2NvbG9yOnZhcigtLWluLWNvbnRlbnQtbGluay1jb2xvci1ob3Zlcik7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX1odG1sfGE6dmlzaXRlZHtjb2xvcjp2YXIoLS1pbi1jb250ZW50LWxpbmstY29sb3ItdmlzaXRlZCl9aHRtbHxhOmhvdmVyOmFjdGl2ZSwudGV4dC1saW5rOmhvdmVyOmFjdGl2ZXtjb2xvcjp2YXIoLS1pbi1jb250ZW50LWxpbmstY29sb3ItYWN0aXZlKTt0ZXh0LWRlY29yYXRpb246bm9uZX1odG1sfGlucHV0W3R5cGU9ImNoZWNrYm94Il17b3BhY2l0eTowO3dpZHRoOjA7cG9pbnRlci1ldmVudHM6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZX1odG1sfGlucHV0W3R5cGU9ImNoZWNrYm94Il0raHRtbHxsYWJlbDpiZWZvcmV7ZGlzcGxheTppbmxpbmUtYmxvY2s7Y29udGVudDoiIjt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9aHRtbHxpbnB1dFt0eXBlPSJjaGVja2JveCJdK2h0bWx8bGFiZWx7bGluZS1oZWlnaHQ6MH14dWx8Y2hlY2tib3h7bWFyZ2luLWlubGluZS1zdGFydDowfXh1bHwqLmNoZWNrYm94LWNoZWNrLGh0bWx8aW5wdXRbdHlwZT0iY2hlY2tib3giXStodG1sfGxhYmVsOmJlZm9yZXstbW96LWFwcGVhcmFuY2U6bm9uZTt3aWR0aDoyM3B4O2hlaWdodDoyM3B4O2JvcmRlci1yYWRpdXM6MnB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0taW4tY29udGVudC1ib3gtYm9yZGVyLWNvbG9yKTttYXJnaW4taW5saW5lLWVuZDoxMHB4O2JhY2tncm91bmQtY29sb3I6I2YxZjFmMTtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCgjZmZmLHJnYmEoMjU1LDI1NSwyNTUsMC44KSkhaW1wb3J0YW50O2JhY2tncm91bmQtcG9zaXRpb246Y2VudGVyIGNlbnRlcjtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7Ym94LXNoYWRvdzowIDFweCAxcHggMCAjZmZmLGluc2V0IDAgMnB4IDAgMCByZ2JhKDAsMCwwLDAuMDMpfXh1bHxjaGVja2JveDpub3QoW2Rpc2FibGVkPSJ0cnVlIl0pOmhvdmVyPnh1bHwqLmNoZWNrYm94LWNoZWNrLGh0bWx8aW5wdXRbdHlwZT0iY2hlY2tib3giXTpub3QoOmRpc2FibGVkKStodG1sfGxhYmVsOmhvdmVyOmJlZm9yZXtib3JkZXItY29sb3I6dmFyKC0taW4tY29udGVudC1ib3JkZXItZm9jdXMpfXh1bHxjaGVja2JveFtkaXNhYmxlZD0idHJ1ZSJdPnh1bHwqLmNoZWNrYm94LWNoZWNrLGh0bWx8aW5wdXRbdHlwZT0iY2hlY2tib3giXTpkaXNhYmxlZCtodG1sfGxhYmVse29wYWNpdHk6LjV9eHVsfCouY2hlY2tib3gtbGFiZWwtYm94e21hcmdpbi1pbmxpbmUtc3RhcnQ6LTFweDtwYWRkaW5nLWlubGluZS1zdGFydDowfXh1bHxyaWNobGlzdGl0ZW0+eHVsfCouY2hlY2tib3gtY2hlY2t7bWFyZ2luOjNweCA2cHh9eHVsfHJhZGlve21hcmdpbi1pbmxpbmUtc3RhcnQ6MH14dWx8Ki5yYWRpby1jaGVja3stbW96LWFwcGVhcmFuY2U6bm9uZTt3aWR0aDoyM3B4O2hlaWdodDoyM3B4O2JvcmRlcjoxcHggc29saWQgdmFyKC0taW4tY29udGVudC1ib3gtYm9yZGVyLWNvbG9yKTtib3JkZXItcmFkaXVzOjUwJTttYXJnaW4taW5saW5lLWVuZDoxMHB4O2JhY2tncm91bmQtY29sb3I6I2YxZjFmMTtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCgjZmZmLHJnYmEoMjU1LDI1NSwyNTUsMC44MCkpO2JveC1zaGFkb3c6MCAxcHggMXB4IDAgI2ZmZixpbnNldCAwIDJweCAwIDAgcmdiYSgwLDAsMCwwLjAzKX14dWx8cmFkaW86bm90KFtkaXNhYmxlZD0idHJ1ZSJdKTpob3Zlcj54dWx8Ki5yYWRpby1jaGVja3tib3JkZXItY29sb3I6dmFyKC0taW4tY29udGVudC1ib3JkZXItZm9jdXMpfXh1bHxyYWRpb1tkaXNhYmxlZD0idHJ1ZSJdPnh1bHwqLnJhZGlvLWNoZWNre29wYWNpdHk6LjV9eHVsfCoucmFkaW8tbGFiZWwtYm94e21hcmdpbi1pbmxpbmUtc3RhcnQ6LTFweDttYXJnaW4taW5saW5lLWVuZDoxMHB4O3BhZGRpbmctaW5saW5lLXN0YXJ0OjB9KnwqI2NhdGVnb3JpZXN7LW1vei1hcHBlYXJhbmNlOm5vbmU7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LWNhdGVnb3J5LWJhY2tncm91bmQpO3BhZGRpbmctdG9wOjM5cHg7bWFyZ2luOjA7Ym9yZGVyLXdpZHRoOjB9KnwqLmNhdGVnb3J5ey1tb3otYXBwZWFyYW5jZTpub25lO2NvbG9yOnZhcigtLWluLWNvbnRlbnQtY2F0ZWdvcnktdGV4dCk7Ym9yZGVyLWlubGluZS1lbmQtd2lkdGg6MDtwYWRkaW5nLWlubGluZS1zdGFydDoxNXB4O3BhZGRpbmctaW5saW5lLWVuZDoyMXB4O21pbi1oZWlnaHQ6NDBweDt0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgMTUwbXN9KnwqLmNhdGVnb3J5OmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0taW4tY29udGVudC1jYXRlZ29yeS1iYWNrZ3JvdW5kLWhvdmVyKX0qfCouY2F0ZWdvcnlbc2VsZWN0ZWRdLCp8Ki5jYXRlZ29yeS5zZWxlY3RlZHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtY2F0ZWdvcnktYmFja2dyb3VuZC1hY3RpdmUpO2NvbG9yOnZhcigtLWluLWNvbnRlbnQtY2F0ZWdvcnktdGV4dC1zZWxlY3RlZCk7cGFkZGluZy1pbmxpbmUtc3RhcnQ6MTFweDtib3JkZXItaW5saW5lLXN0YXJ0OnNvbGlkIDRweCB2YXIoLS1pbi1jb250ZW50LWJvcmRlci1oaWdobGlnaHQpfSp8KiNjYXRlZ29yaWVzW2tleWJvYXJkLW5hdmlnYXRpb249InRydWUiXTotbW96LWZvY3VzcmluZz4qfCouY2F0ZWdvcnlbY3VycmVudF17Ym9yZGVyLXRvcDp2YXIoLS1pbi1jb250ZW50LWNhdGVnb3J5LWJvcmRlci1mb2N1cyk7Ym9yZGVyLWJvdHRvbTp2YXIoLS1pbi1jb250ZW50LWNhdGVnb3J5LWJvcmRlci1mb2N1cyl9KnwqLmNhdGVnb3J5LW5hbWV7bGluZS1oZWlnaHQ6MjJweDtmb250LXNpemU6MS4yNXJlbTtwYWRkaW5nLWJvdHRvbToycHg7cGFkZGluZy1pbmxpbmUtc3RhcnQ6OXB4O21hcmdpbjowOy1tb3otdXNlci1zZWxlY3Q6bm9uZX0qfCouY2F0ZWdvcnktaWNvbnt3aWR0aDoyNHB4O2hlaWdodDoyNHB4fSp8Ki5oZWFkZXJ7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgdmFyKC0taW4tY29udGVudC1oZWFkZXItYm9yZGVyLWNvbG9yKTttYXJnaW4taW5saW5lLWVuZDo0cHg7bWFyZ2luLWJvdHRvbToxNXB4O3BhZGRpbmctYm90dG9tOjE1cHg7LW1vei1ib3gtYWxpZ246YmFzZWxpbmV9KnwqLmhlYWRlci1uYW1le2ZvbnQtc2l6ZToyLjVyZW07Zm9udC13ZWlnaHQ6bm9ybWFsO2xpbmUtaGVpZ2h0OjQwcHg7bWFyZ2luOjA7LW1vei11c2VyLXNlbGVjdDpub25lfXh1bHxmaWxlZmllbGR7LW1vei1hcHBlYXJhbmNlOm5vbmU7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXI6MDtwYWRkaW5nOjB9eHVsfCouZmlsZUZpZWxkQ29udGVudEJveHtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fXh1bHwqLmZpbGVGaWVsZEljb257bWFyZ2luLWlubGluZS1zdGFydDoxMHB4O21hcmdpbi1pbmxpbmUtZW5kOjB9eHVsfCouZmlsZUZpZWxkTGFiZWx7bWFyZ2luLWlubGluZS1zdGFydDotMjZweDtwYWRkaW5nLWlubGluZS1zdGFydDozNnB4fXh1bHx0ZXh0Ym94K3h1bHxidXR0b24seHVsfGZpbGVmaWVsZCt4dWx8YnV0dG9ue2JvcmRlci1pbmxpbmUtc3RhcnQ6bm9uZX14dWx8cmljaGxpc3Rib3gseHVsfGxpc3Rib3h7LW1vei1hcHBlYXJhbmNlOm5vbmU7bWFyZ2luLWlubGluZS1zdGFydDowO2JhY2tncm91bmQtY29sb3I6dmFyKC0taW4tY29udGVudC1ib3gtYmFja2dyb3VuZCk7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1pbi1jb250ZW50LWJveC1ib3JkZXItY29sb3IpO2NvbG9yOnZhcigtLWluLWNvbnRlbnQtdGV4dC1jb2xvcil9eHVsfHRyZWVjaGlsZHJlbjo6LW1vei10cmVlLXJvdyx4dWx8bGlzdGJveCB4dWx8bGlzdGl0ZW17cGFkZGluZzouM2VtO21hcmdpbjowO2JvcmRlcjowO2JvcmRlci1yYWRpdXM6MDtiYWNrZ3JvdW5kLWltYWdlOm5vbmV9eHVsfHRyZWVjaGlsZHJlbjo6LW1vei10cmVlLXJvdyhob3ZlcikseHVsfGxpc3Rib3ggeHVsfGxpc3RpdGVtOmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0taW4tY29udGVudC1pdGVtLWhvdmVyKX14dWx8dHJlZWNoaWxkcmVuOjotbW96LXRyZWUtcm93KHNlbGVjdGVkKSx4dWx8bGlzdGJveCB4dWx8bGlzdGl0ZW1bc2VsZWN0ZWQ9InRydWUiXXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtaXRlbS1zZWxlY3RlZCk7Y29sb3I6dmFyKC0taW4tY29udGVudC1zZWxlY3RlZC10ZXh0KX14dWx8dHJlZXstbW96LWFwcGVhcmFuY2U6bm9uZTtmb250LXNpemU6MWVtO2JvcmRlcjoxcHggc29saWQgdmFyKC0taW4tY29udGVudC1ib3gtYm9yZGVyLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtYm94LWJhY2tncm91bmQpO21hcmdpbjowfXh1bHx0cmVlOi1tb3otZm9jdXNyaW5nLHh1bHxyaWNobGlzdGJveDotbW96LWZvY3VzcmluZ3tib3JkZXI6MXB4IGRvdHRlZCB2YXIoLS1pbi1jb250ZW50LWJvcmRlci1mb2N1cyl9eHVsfGxpc3RoZWFkZXIseHVsfHRyZWVjb2xzey1tb3otYXBwZWFyYW5jZTpub25lO2JvcmRlcjowO2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHZhcigtLWluLWNvbnRlbnQtYm9yZGVyLWNvbG9yKTtwYWRkaW5nOjB9LmF1dG9jb21wbGV0ZS10cmVlPnh1bHx0cmVlY29sc3tib3JkZXItYm90dG9tOm5vbmUhaW1wb3J0YW50fXh1bHx0cmVlY29sOm5vdChbaGlkZWhlYWRlcj0idHJ1ZSJdKSx4dWx8dHJlZWNvbHBpY2tlcnstbW96LWFwcGVhcmFuY2U6bm9uZTtib3JkZXI6MDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtYm94LWJhY2tncm91bmQtaG92ZXIpO2NvbG9yOiM4MDgwODA7cGFkZGluZzo1cHggMTBweH14dWx8dHJlZWNvbDpub3QoW2hpZGVoZWFkZXI9InRydWUiXSk6bm90KFtzb3J0YWJsZT0iZmFsc2UiXSk6aG92ZXIseHVsfHRyZWVjb2xwaWNrZXI6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LWJveC1iYWNrZ3JvdW5kLWFjdGl2ZSk7Y29sb3I6dmFyKC0taW4tY29udGVudC10ZXh0LWNvbG9yKX14dWx8dHJlZWNvbDpub3QoW2hpZGVoZWFkZXI9InRydWUiXSk6bm90KDpmaXJzdC1jaGlsZCkseHVsfHRyZWVjb2xwaWNrZXJ7Ym9yZGVyLWlubGluZS1zdGFydC13aWR0aDoxcHg7Ym9yZGVyLWlubGluZS1zdGFydC1zdHlsZTpzb2xpZDtib3JkZXItaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRyYW5zcGFyZW50IDAsdHJhbnNwYXJlbnQgMjAlLCNjMWMxYzEgMjAlLCNjMWMxYzEgODAlLHRyYW5zcGFyZW50IDgwJSx0cmFuc3BhcmVudCAxMDAlKSAxIDF9eHVsfHRyZWVjb2w6bm90KFtoaWRlaGVhZGVyPSJ0cnVlIl0pPnh1bHwqLnRyZWVjb2wtc29ydGRpcmVjdGlvbltzb3J0RGlyZWN0aW9uXXt3aWR0aDoxOHB4O2hlaWdodDoxOHB4fXh1bHx0cmVlY29sOm5vdChbaGlkZWhlYWRlcj0idHJ1ZSJdKT54dWx8Ki50cmVlY29sLXNvcnRkaXJlY3Rpb25bc29ydERpcmVjdGlvbj0iYXNjZW5kaW5nIl17dHJhbnNmb3JtOnNjYWxlWSgtMSl9eHVsfHRyZWVjaGlsZHJlbjo6LW1vei10cmVlLXJvd3ttaW4taGVpZ2h0OjJlbX14dWx8dHJlZWNoaWxkcmVuOjotbW96LXRyZWUtY2VsbC10ZXh0e2NvbG9yOnZhcigtLWluLWNvbnRlbnQtdGV4dC1jb2xvcil9eHVsfHRyZWVjaGlsZHJlbjo6LW1vei10cmVlLWNlbGwtdGV4dChzZWxlY3RlZCl7Y29sb3I6dmFyKC0taW4tY29udGVudC1zZWxlY3RlZC10ZXh0KX14dWx8Y2FwdGlvbntiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fXh1bHxidXR0b24saHRtbHxidXR0b24seHVsfGNvbG9ycGlja2VyW3R5cGU9ImJ1dHRvbiJdLHh1bHxtZW51bGlzdHttYXJnaW46MnB4IDRweH14dWx8bWVudWxpc3Q6bm90KFtlZGl0YWJsZT0idHJ1ZSJdKT54dWx8Ki5tZW51bGlzdC1kcm9wbWFya2Vye21hcmdpbi10b3A6MXB4O21hcmdpbi1ib3R0b206MXB4fXh1bHxjaGVja2JveHtwYWRkaW5nLWlubGluZS1zdGFydDowfXh1bHwqLmJ1dHRvbi1ib3gseHVsfCoubWVudWxpc3QtbGFiZWwtYm94LHh1bHwqLnJhZGlvLWxhYmVsLWJveCx4dWx8Ki5jaGVja2JveC1sYWJlbC1ib3h7Ym9yZGVyLXN0eWxlOm5vbmV9eHVsfGJ1dHRvbjotbW96LWZvY3VzcmluZz54dWx8Ki5idXR0b24tYm94LHh1bHxtZW51bGlzdDotbW96LWZvY3VzcmluZz54dWx8Ki5tZW51bGlzdC1sYWJlbC1ib3gseHVsfHJhZGlvW2ZvY3VzZWQ9InRydWUiXT54dWx8Ki5yYWRpby1sYWJlbC1ib3gsaHRtbHxpbnB1dFt0eXBlPSJjaGVja2JveCJdOi1tb3otZm9jdXNyaW5nK2h0bWx8bGFiZWw6YmVmb3JlLHh1bHxjaGVja2JveDotbW96LWZvY3VzcmluZz54dWx8Ki5jaGVja2JveC1sYWJlbC1ib3h7b3V0bGluZToxcHggZG90dGVkfWJvZHl7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtib3gtc2l6aW5nOmJvcmRlci1ib3g7bWluLWhlaWdodDoxMDB2aDtwYWRkaW5nLXRvcDowO3BhZGRpbmctYm90dG9tOjA7cGFkZGluZy1pbmxpbmUtc3RhcnQ6Y2FsYyg0OHB4KzQuNmVtKTtwYWRkaW5nLWlubGluZS1lbmQ6NDhweDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcn0uY29udGFpbmVye21pbi13aWR0aDoxM2VtO21heC13aWR0aDo1MmVtfS5jb250YWluZXIucmVzdG9yZS1jaG9zZW57ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtmbGV4LWdyb3c6MTttYXJnaW46MTB2aCAwfS50aXRsZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOmxlZnQgMDtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1zaXplOjEuNmVtO21hcmdpbi1pbmxpbmUtc3RhcnQ6LTIuM2VtO3BhZGRpbmctaW5saW5lLXN0YXJ0OjIuM2VtO2ZvbnQtc2l6ZToyLjVlbX0udGl0bGU6ZGlyKHJ0bCl7YmFja2dyb3VuZC1wb3NpdGlvbjpyaWdodCAwfS50aXRsZS10ZXh0e2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNjMWMxYzE7Zm9udC1zaXplOmluaGVyaXQ7cGFkZGluZy1ib3R0b206LjRlbX0uYnV0dG9uLWNvbnRhaW5lcnttYXJnaW4tdG9wOjEuMmVtfS5idXR0b24tY29udGFpbmVyPmJ1dHRvbnttaW4td2lkdGg6MTUwcHh9LmJ1dHRvbi1jb250YWluZXI+YnV0dG9uOmZpcnN0LWNoaWxke21hcmdpbi1pbmxpbmUtc3RhcnQ6MH1ib2R5e2JhY2tncm91bmQtc2l6ZTo2NHB4IDMycHg7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXg7cGFkZGluZzo3NXB4IDA7bWluLXdpZHRoOjEzZW19LmJ1dHRvbi1jb250YWluZXJ7ZGlzcGxheTpmbGV4O2ZsZXgtZmxvdzpyb3cgd3JhcH0uYnV0dG9uLXNwYWNlcntmbGV4OjF9Ym9keXtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCgtNDVkZWcsI2YwZDAwMCwjZjBkMDAwIDMzJSwjZmVkYzAwIDMzJSwjZmVkYzAwIDY2JSwjZjBkMDAwIDY2JSwjZjBkMDAwKX1hLGE6YWN0aXZlLGE6Zm9jdXN7b3V0bGluZTpub25lO2N1cnNvcjpkZWZhdWx0fXVse21hcmdpbjowLjFlbSAwO3BhZGRpbmc6MCAxZW07bGlzdC1zdHlsZTpub25lO31saTpiZWZvcmV7Y29udGVudDoiIjtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQgIzExMTtib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLXdpZHRoOjAuMzVlbSAwIDAuMzVlbSAwLjQ1ZW07ZGlzcGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO2xlZnQ6LTFlbTt0b3A6MWVtO3Bvc2l0aW9uOnJlbGF0aXZlfS8vLS0+PC9zdHlsZT4NCjwvaGVhZD48Ym9keT48ZGl2IGlkPSJlcnJvclBhZ2VDb250YWluZXIiIGNsYXNzPSJjb250YWluZXIiPg0KPGRpdiBjbGFzcz0idGl0bGUiPjxoMSBjbGFzcz0idGl0bGUtdGV4dCI+WW91ciBjb25uZWN0aW9uIGlzIG5vdCBzZWN1cmU8L2gxPjwvZGl2PjxkaXYgaWQ9ImVycm9yTG9uZ0NvbnRlbnQiPg0KPGRpdiBpZD0iZXJyb3JTaG9ydERlc2MiPjxwIGlkPSJlcnJvclNob3J0RGVzY1RleHQiPg0KVGhlIG93bmVyIG9mIHRoaXMgd2Vic2l0ZSBoYXMgY29uZmlndXJlZCB0aGVpciB3ZWJzaXRlIGltcHJvcGVybHkuDQpUaGUgY29ubmVjdGlvbiBiZXR3ZWVuIHlvdSBhbmQgPGI+JSVDRl9IT1NUTkFNRSUlPC9iPiBpcyBiZWluZyBNSVRNZWQgYnkgPGI+JSVDRl9QUk9ETkFNRSUlPC9iPi4NClRvIHByb3RlY3QgeW91ciBpbmZvcm1hdGlvbiBmcm9tIGJlaW5nIHN0b2xlbiwgdGhlIGFkZC1vbiBzdG9wcGVkIGZ1cnRoZXIgY29ubmVjdGlvbiB0byB0aGlzIHdlYnNpdGUuDQo8L3A+PC9kaXY+PGRpdiBpZD0iY2VydEVycm9yQW5kQ2FwdGl2ZVBvcnRhbEJ1dHRvbkNvbnRhaW5lciIgY2xhc3M9ImJ1dHRvbi1jb250YWluZXIiPg0KPHVsPg0KPGxpPjxhIGhyZWY9IiUlQ0ZfVVJMX0xBU1RPSyUlIj48Yj5HbyBCYWNrPC9iPjwvYT48L2xpPg0KPGxpPjxhIGhyZWY9Imh0dHBzOi8vd2ViLmFyY2hpdmUub3JnL3dlYi8lJUNGX1VSTF9JVFNNRSUlIj48Yj5UcnkgV2F5YmFjayBNYWNoaW5lPC9iPjwvYT48L2xpPg0KPC91bD4NCjxkaXYgY2xhc3M9ImJ1dHRvbi1zcGFjZXIiPjwvZGl2Pg0KPHVsPg0KPGxpPjxhIGhyZWY9Imh0dHBzOi8vMC4wLjAuMC9jZm1pdG1fYWRkb24vYWxsb3cvJSVDRl9XSElURVBBSVIlJSI+PGI+QWRkIEV4Y2VwdGlvbjwvYj48L2E+PC9saT4NCjxsaT48YSBocmVmPSJodHRwczovLzAuMC4wLjAvY2ZtaXRtX2FkZG9uL2FsbG93L3ZpZXdleGNlcHRpb25zP25vdyI+PGI+VmlldyBFeGNlcHRpb25zPC9iPjwvYT48L2xpPg0KPC91bD4NCjwvZGl2PjwvZGl2PjwvZGl2PjwvYm9keT48L2h0bWw+'; +var cf_template_wlnotify='PGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPjxoZWFkPjx0aXRsZT5Hb29kIENvbm5lY3Rpb248L3RpdGxlPjxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4NCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+PCEtLUBuYW1lc3BhY2UgaHRtbCAiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI7QG5hbWVzcGFjZSB4dWwgImh0dHA6Ly93d3cubW96aWxsYS5vcmcva2V5bWFzdGVyL2dhdGVrZWVwZXIvdGhlcmUuaXMub25seS54dWwiOyp8Kjpyb290ey0taW4tY29udGVudC1wYWdlLWNvbG9yOiM0MjRlNWE7LS1pbi1jb250ZW50LXBhZ2UtYmFja2dyb3VuZDojZmJmYmZiOy0taW4tY29udGVudC10ZXh0LWNvbG9yOiMzMzM7LS1pbi1jb250ZW50LXNlbGVjdGVkLXRleHQ6I2ZmZjstLWluLWNvbnRlbnQtaGVhZGVyLWJvcmRlci1jb2xvcjojYzhjOGM4Oy0taW4tY29udGVudC1ib3gtYmFja2dyb3VuZDojZmZmOy0taW4tY29udGVudC1ib3gtYmFja2dyb3VuZC1vZGQ6I2YzZjZmYTstLWluLWNvbnRlbnQtYm94LWJhY2tncm91bmQtaG92ZXI6I2ViZWJlYjstLWluLWNvbnRlbnQtYm94LWJhY2tncm91bmQtYWN0aXZlOiNkYWRhZGE7LS1pbi1jb250ZW50LWJveC1ib3JkZXItY29sb3I6I2MxYzFjMTstLWluLWNvbnRlbnQtaXRlbS1ob3ZlcjpyZ2JhKDAsMTQ5LDIyMSwwLjI1KTstLWluLWNvbnRlbnQtaXRlbS1zZWxlY3RlZDojMDA5NWRkOy0taW4tY29udGVudC1ib3JkZXItaGlnaGxpZ2h0OiNmZjk1MDA7LS1pbi1jb250ZW50LWJvcmRlci1mb2N1czojMDA5NWRkOy0taW4tY29udGVudC1ib3JkZXItY29sb3I6I2MxYzFjMTstLWluLWNvbnRlbnQtY2F0ZWdvcnktdGV4dDojYzFjMWMxOy0taW4tY29udGVudC1jYXRlZ29yeS1ib3JkZXItZm9jdXM6MXB4IGRvdHRlZCAjZmZmOy0taW4tY29udGVudC1jYXRlZ29yeS10ZXh0LXNlbGVjdGVkOiNmMmYyZjI7LS1pbi1jb250ZW50LWNhdGVnb3J5LWJhY2tncm91bmQ6IzQyNGY1YTstLWluLWNvbnRlbnQtY2F0ZWdvcnktYmFja2dyb3VuZC1ob3ZlcjojNWU2OTcyOy0taW4tY29udGVudC1jYXRlZ29yeS1iYWNrZ3JvdW5kLWFjdGl2ZTojMzQzZjQ4Oy0taW4tY29udGVudC10YWItY29sb3I6IzQyNGY1YTstLWluLWNvbnRlbnQtbGluay1jb2xvcjojMDA5NWRkOy0taW4tY29udGVudC1saW5rLWNvbG9yLWhvdmVyOiMxNzhjZTU7LS1pbi1jb250ZW50LWxpbmstY29sb3ItYWN0aXZlOiNmZjk1MDA7LS1pbi1jb250ZW50LWxpbmstY29sb3ItdmlzaXRlZDojNTUxYThiOy0taW4tY29udGVudC1wcmltYXJ5LWJ1dHRvbi1iYWNrZ3JvdW5kOiMwMDk1ZGQ7LS1pbi1jb250ZW50LXByaW1hcnktYnV0dG9uLWJhY2tncm91bmQtaG92ZXI6IzAwOGFjYjstLWluLWNvbnRlbnQtcHJpbWFyeS1idXR0b24tYmFja2dyb3VuZC1hY3RpdmU6IzAwNmI5ZDstLWluLWNvbnRlbnQtdGFibGUtYm9yZGVyLWRhcmstY29sb3I6I2QxZDFkMTstLWluLWNvbnRlbnQtdGFibGUtaGVhZGVyLWJhY2tncm91bmQ6IzAwOTVkZH1odG1sfGh0bWwseHVsfHBhZ2UseHVsfHdpbmRvd3tmb250Om1lc3NhZ2UtYm94Oy1tb3otYXBwZWFyYW5jZTpub25lO2JhY2tncm91bmQtY29sb3I6dmFyKC0taW4tY29udGVudC1wYWdlLWJhY2tncm91bmQpO2NvbG9yOnZhcigtLWluLWNvbnRlbnQtcGFnZS1jb2xvcil9aHRtbHxib2R5e2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0Om5vcm1hbDttYXJnaW46MH1odG1sfGgxe2ZvbnQtc2l6ZToyLjVlbTtmb250LXdlaWdodDpsaWdodGVyO2xpbmUtaGVpZ2h0OjEuMjtjb2xvcjp2YXIoLS1pbi1jb250ZW50LXRleHQtY29sb3IpO21hcmdpbjowO21hcmdpbi1ib3R0b206LjVlbX1odG1sfGhye2JvcmRlci1zdHlsZTpzb2xpZCBub25lIG5vbmUgbm9uZTtib3JkZXItY29sb3I6dmFyKC0taW4tY29udGVudC1ib3JkZXItY29sb3IpfXh1bHxjYXB0aW9uey1tb3otYXBwZWFyYW5jZTpub25lO21hcmdpbjowfXh1bHxjYXB0aW9uPnh1bHxjaGVja2JveCx4dWx8Y2FwdGlvbj54dWx8bGFiZWx7Zm9udC1zaXplOjEuM3JlbTtmb250LXdlaWdodDpib2xkO2xpbmUtaGVpZ2h0OjIycHh9eHVsfGNhcHRpb24+eHVsfGNoZWNrYm94LHh1bHxjYXB0aW9uPnh1bHxsYWJlbHttYXJnaW46MCFpbXBvcnRhbnR9KnwqLm1haW4tY29udGVudHtwYWRkaW5nLXRvcDo0MHB4O3BhZGRpbmctaW5saW5lLWVuZDo0NHB4O3BhZGRpbmctYm90dG9tOjQ4cHg7cGFkZGluZy1pbmxpbmUtc3RhcnQ6NDhweDtvdmVyZmxvdzphdXRvfXh1bHxwcmVmcGFuZT54dWx8Ki5jb250ZW50LWJveHtvdmVyZmxvdzp2aXNpYmxlfXh1bHxncm91cGJveHstbW96LWFwcGVhcmFuY2U6bm9uZTtib3JkZXI6MDttYXJnaW46MTVweCAwIDA7cGFkZGluZy1pbmxpbmUtc3RhcnQ6MDtwYWRkaW5nLWlubGluZS1lbmQ6MDtmb250LXNpemU6MS4yNXJlbX14dWx8Z3JvdXBib3ggeHVsfGxhYmVsOm5vdCgubWVudS1hY2NlbCk6bm90KC5tZW51LXRleHQpOm5vdCguaW5kZW50KSx4dWx8Z3JvdXBib3ggeHVsfGRlc2NyaXB0aW9ue21hcmdpbi1pbmxpbmUtc3RhcnQ6MCFpbXBvcnRhbnQ7bWFyZ2luLWlubGluZS1lbmQ6MCFpbXBvcnRhbnR9eHVsfHRhYnBhbmVsc3stbW96LWFwcGVhcmFuY2U6bm9uZTtmb250LXNpemU6MS4yNXJlbTtsaW5lLWhlaWdodDoyMnB4O2JvcmRlcjowO3BhZGRpbmc6MDtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2NvbG9yOmluaGVyaXR9eHVsfHRhYnN7bWFyZ2luLWJvdHRvbToxNXB4O2JvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLWluLWNvbnRlbnQtYm94LWJvcmRlci1jb2xvcik7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgdmFyKC0taW4tY29udGVudC1ib3gtYm9yZGVyLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtcGFnZS1iYWNrZ3JvdW5kKX14dWx8Ki50YWJzLWxlZnQseHVsfCoudGFicy1yaWdodHtib3JkZXItYm90dG9tOjB9eHVsfHRhYnstbW96LWFwcGVhcmFuY2U6bm9uZTttYXJnaW4tdG9wOjA7cGFkZGluZzo0cHggMjBweDttaW4taGVpZ2h0OjQ0cHg7Y29sb3I6dmFyKC0taW4tY29udGVudC10YWItY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0taW4tY29udGVudC1wYWdlLWJhY2tncm91bmQpO2JvcmRlci13aWR0aDowO2JvcmRlci1yYWRpdXM6MCFpbXBvcnRhbnQ7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIDUwbXMgZWFzZSAwc314dWx8dGFiOmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0taW4tY29udGVudC1ib3gtYmFja2dyb3VuZC1ob3Zlcil9eHVsfHRhYltzZWxlY3RlZF17YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LWJveC1iYWNrZ3JvdW5kLWhvdmVyKTtwYWRkaW5nLWJvdHRvbTowO2JvcmRlci1ib3R0b206NHB4IHNvbGlkIHZhcigtLWluLWNvbnRlbnQtYm9yZGVyLWhpZ2hsaWdodCl9eHVsfCoudGFiLXRleHR7Zm9udC1zaXplOjEuM3JlbTtsaW5lLWhlaWdodDoyMnB4fWh0bWx8YnV0dG9ue3BhZGRpbmc6M3B4O2ZvbnQ6aW5oZXJpdH0qfGJ1dHRvbixodG1sfHNlbGVjdCx4dWx8Y29sb3JwaWNrZXJbdHlwZT0iYnV0dG9uIl0seHVsfG1lbnVsaXN0ey1tb3otYXBwZWFyYW5jZTpub25lO21pbi1oZWlnaHQ6MzBweDtjb2xvcjp2YXIoLS1pbi1jb250ZW50LXRleHQtY29sb3IpO2JvcmRlcjoxcHggc29saWQgdmFyKC0taW4tY29udGVudC1ib3gtYm9yZGVyLWNvbG9yKTstbW96LWJvcmRlci10b3AtY29sb3JzOm5vbmUhaW1wb3J0YW50Oy1tb3otYm9yZGVyLXJpZ2h0LWNvbG9yczpub25lIWltcG9ydGFudDstbW96LWJvcmRlci1ib3R0b20tY29sb3JzOm5vbmUhaW1wb3J0YW50Oy1tb3otYm9yZGVyLWxlZnQtY29sb3JzOm5vbmUhaW1wb3J0YW50O2JvcmRlci1yYWRpdXM6MnB4O2JhY2tncm91bmQtY29sb3I6dmFyKC0taW4tY29udGVudC1wYWdlLWJhY2tncm91bmQpfWh0bWx8YnV0dG9uOmVuYWJsZWQ6aG92ZXIsaHRtbHxzZWxlY3Q6ZW5hYmxlZDpob3Zlcix4dWx8YnV0dG9uOm5vdChbZGlzYWJsZWQ9InRydWUiXSk6aG92ZXIseHVsfGNvbG9ycGlja2VyW3R5cGU9ImJ1dHRvbiJdOm5vdChbZGlzYWJsZWQ9InRydWUiXSk6aG92ZXIseHVsfG1lbnVsaXN0Om5vdChbZGlzYWJsZWQ9InRydWUiXSk6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LWJveC1iYWNrZ3JvdW5kLWhvdmVyKX1odG1sfGJ1dHRvbjplbmFibGVkOmhvdmVyOmFjdGl2ZSxodG1sfHNlbGVjdDplbmFibGVkOmhvdmVyOmFjdGl2ZSx4dWx8YnV0dG9uOm5vdChbZGlzYWJsZWQ9InRydWUiXSk6aG92ZXI6YWN0aXZlLHh1bHxjb2xvcnBpY2tlclt0eXBlPSJidXR0b24iXTpub3QoW2Rpc2FibGVkPSJ0cnVlIl0pOmhvdmVyOmFjdGl2ZSx4dWx8bWVudWxpc3Rbb3Blbj0idHJ1ZSJdOm5vdChbZGlzYWJsZWQ9InRydWUiXSl7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LWJveC1iYWNrZ3JvdW5kLWFjdGl2ZSl9aHRtbHxidXR0b246ZGlzYWJsZWQsaHRtbHxzZWxlY3Q6ZGlzYWJsZWQseHVsfGJ1dHRvbltkaXNhYmxlZD0idHJ1ZSJdLHh1bHxjb2xvcnBpY2tlclt0eXBlPSJidXR0b24iXVtkaXNhYmxlZD0idHJ1ZSJdLHh1bHxtZW51bGlzdFtkaXNhYmxlZD0idHJ1ZSJde29wYWNpdHk6LjV9KnxidXR0b24ucHJpbWFyeXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtcHJpbWFyeS1idXR0b24tYmFja2dyb3VuZCk7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50O2NvbG9yOnZhcigtLWluLWNvbnRlbnQtc2VsZWN0ZWQtdGV4dCl9aHRtbHxidXR0b24ucHJpbWFyeTplbmFibGVkOmhvdmVyLHh1bHxidXR0b24ucHJpbWFyeTpub3QoW2Rpc2FibGVkPSJ0cnVlIl0pOmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0taW4tY29udGVudC1wcmltYXJ5LWJ1dHRvbi1iYWNrZ3JvdW5kLWhvdmVyKX1odG1sfGJ1dHRvbi5wcmltYXJ5OmVuYWJsZWQ6aG92ZXI6YWN0aXZlLHh1bHxidXR0b24ucHJpbWFyeTpub3QoW2Rpc2FibGVkPSJ0cnVlIl0pOmhvdmVyOmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtcHJpbWFyeS1idXR0b24tYmFja2dyb3VuZC1hY3RpdmUpfXh1bHxjb2xvcnBpY2tlclt0eXBlPSJidXR0b24iXXtwYWRkaW5nOjZweDt3aWR0aDo1MHB4fXh1bHxidXR0b24+eHVsfCouYnV0dG9uLWJveHtwYWRkaW5nLXJpZ2h0OjEwcHghaW1wb3J0YW50O3BhZGRpbmctbGVmdDoxMHB4IWltcG9ydGFudH14dWx8bWVudWxpc3Q+eHVsfCoubWVudWxpc3QtbGFiZWwtYm94Pnh1bHwqLm1lbnVsaXN0LWljb25bc3JjXXttYXJnaW4taW5saW5lLWVuZDo1cHh9eHVsfGJ1dHRvblt0eXBlPSJtZW51Il0+eHVsfCouYnV0dG9uLWJveD54dWx8Ki5idXR0b24tbWVudS1kcm9wbWFya2Vyey1tb3otYXBwZWFyYW5jZTpub25lO21hcmdpbjoxcHggMDttYXJnaW4taW5saW5lLXN0YXJ0OjEwcHg7cGFkZGluZzowO3dpZHRoOjEwcHg7aGVpZ2h0OjE2cHg7Ym9yZGVyOjA7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH14dWx8YnV0dG9uW3R5cGU9Im1lbnUiXT54dWx8bWVudXBvcHVwey1tb3otYXBwZWFyYW5jZTpub25lO2JvcmRlcjoxcHggc29saWQgdmFyKC0taW4tY29udGVudC1ib3gtYm9yZGVyLWNvbG9yKTtib3JkZXItcmFkaXVzOjJweDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtYm94LWJhY2tncm91bmQpfXh1bHxtZW51bGlzdD54dWx8bWVudXBvcHVwIHh1bHxtZW51LHh1bHxtZW51bGlzdD54dWx8bWVudXBvcHVwIHh1bHxtZW51aXRlbSx4dWx8YnV0dG9uW3R5cGU9Im1lbnUiXT54dWx8bWVudXBvcHVwIHh1bHxtZW51LHh1bHxidXR0b25bdHlwZT0ibWVudSJdPnh1bHxtZW51cG9wdXAgeHVsfG1lbnVpdGVtey1tb3otYXBwZWFyYW5jZTpub25lO2ZvbnQtc2l6ZToxZW07Y29sb3I6dmFyKC0taW4tY29udGVudC10ZXh0LWNvbG9yKTtwYWRkaW5nLXRvcDouMmVtO3BhZGRpbmctYm90dG9tOi4yZW07cGFkZGluZy1pbmxpbmUtc3RhcnQ6MTBweDtwYWRkaW5nLWlubGluZS1lbmQ6MzBweH14dWx8bWVudWxpc3Q+eHVsfG1lbnVwb3B1cD54dWx8bWVudTpub3QoW2Rpc2FibGVkPSJ0cnVlIl0pW19tb3otbWVudWFjdGl2ZT0idHJ1ZSJdLHh1bHxtZW51bGlzdD54dWx8bWVudXBvcHVwPnh1bHxtZW51aXRlbTpub3QoW2Rpc2FibGVkPSJ0cnVlIl0pW19tb3otbWVudWFjdGl2ZT0idHJ1ZSJdLHh1bHxidXR0b25bdHlwZT0ibWVudSJdPnh1bHxtZW51cG9wdXA+eHVsfG1lbnU6bm90KFtkaXNhYmxlZD0idHJ1ZSJdKVtfbW96LW1lbnVhY3RpdmU9InRydWUiXSx4dWx8YnV0dG9uW3R5cGU9Im1lbnUiXT54dWx8bWVudXBvcHVwPnh1bHxtZW51aXRlbTpub3QoW2Rpc2FibGVkPSJ0cnVlIl0pW19tb3otbWVudWFjdGl2ZT0idHJ1ZSJde2NvbG9yOnZhcigtLWluLWNvbnRlbnQtdGV4dC1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LWl0ZW0taG92ZXIpfXh1bHxtZW51bGlzdD54dWx8bWVudXBvcHVwPnh1bHxtZW51Om5vdChbZGlzYWJsZWQ9InRydWUiXSlbc2VsZWN0ZWQ9InRydWUiXSx4dWx8bWVudWxpc3Q+eHVsfG1lbnVwb3B1cD54dWx8bWVudWl0ZW06bm90KFtkaXNhYmxlZD0idHJ1ZSJdKVtzZWxlY3RlZD0idHJ1ZSJdLHh1bHxidXR0b25bdHlwZT0ibWVudSJdPnh1bHxtZW51cG9wdXA+eHVsfG1lbnU6bm90KFtkaXNhYmxlZD0idHJ1ZSJdKVtzZWxlY3RlZD0idHJ1ZSJdLHh1bHxidXR0b25bdHlwZT0ibWVudSJdPnh1bHxtZW51cG9wdXA+eHVsfG1lbnVpdGVtOm5vdChbZGlzYWJsZWQ9InRydWUiXSlbc2VsZWN0ZWQ9InRydWUiXXtjb2xvcjp2YXIoLS1pbi1jb250ZW50LXNlbGVjdGVkLXRleHQpO2JhY2tncm91bmQtY29sb3I6dmFyKC0taW4tY29udGVudC1pdGVtLXNlbGVjdGVkKX14dWx8bWVudWxpc3Q+eHVsfG1lbnVwb3B1cD54dWx8bWVudVtkaXNhYmxlZD0idHJ1ZSJdLHh1bHxtZW51bGlzdD54dWx8bWVudXBvcHVwPnh1bHxtZW51aXRlbVtkaXNhYmxlZD0idHJ1ZSJdLHh1bHxidXR0b25bdHlwZT0ibWVudSJdPnh1bHxtZW51cG9wdXA+eHVsfG1lbnVbZGlzYWJsZWQ9InRydWUiXSx4dWx8YnV0dG9uW3R5cGU9Im1lbnUiXT54dWx8bWVudXBvcHVwPnh1bHxtZW51aXRlbVtkaXNhYmxlZD0idHJ1ZSJde2NvbG9yOiM5OTk7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH14dWx8bWVudWxpc3Q+eHVsfG1lbnVwb3B1cCB4dWx8bWVudXNlcGFyYXRvcix4dWx8YnV0dG9uW3R5cGU9Im1lbnUiXT54dWx8bWVudXBvcHVwIHh1bHxtZW51c2VwYXJhdG9yey1tb3otYXBwZWFyYW5jZTpub25lO21hcmdpbjowO3BhZGRpbmc6MDtib3JkZXItdG9wOjFweCBzb2xpZCB2YXIoLS1pbi1jb250ZW50LWJveC1ib3JkZXItY29sb3IpO2JvcmRlci1ib3R0b206MH1odG1sfGlucHV0W3R5cGU9InRleHQiXSxodG1sfHRleHRhcmVhLHh1bHx0ZXh0Ym94ey1tb3otYXBwZWFyYW5jZTpub25lO2NvbG9yOnZhcigtLWluLWNvbnRlbnQtdGV4dC1jb2xvcik7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1pbi1jb250ZW50LWJveC1ib3JkZXItY29sb3IpOy1tb3otYm9yZGVyLXRvcC1jb2xvcnM6bm9uZSFpbXBvcnRhbnQ7LW1vei1ib3JkZXItcmlnaHQtY29sb3JzOm5vbmUhaW1wb3J0YW50Oy1tb3otYm9yZGVyLWJvdHRvbS1jb2xvcnM6bm9uZSFpbXBvcnRhbnQ7LW1vei1ib3JkZXItbGVmdC1jb2xvcnM6bm9uZSFpbXBvcnRhbnQ7Ym9yZGVyLXJhZGl1czoycHg7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LWJveC1iYWNrZ3JvdW5kKX14dWx8dGV4dGJveHttaW4taGVpZ2h0OjMwcHg7cGFkZGluZy1yaWdodDoxMHB4O3BhZGRpbmctbGVmdDoxMHB4fXh1bHx0ZXh0Ym94LnRyZWUtaW5wdXR7bWluLWhlaWdodDp1bnNldDtwYWRkaW5nLXJpZ2h0OnVuc2V0O3BhZGRpbmctbGVmdDp1bnNldH1odG1sfGlucHV0W3R5cGU9InRleHQiXSxodG1sfHRleHRhcmVhe2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7cGFkZGluZzo1cHggMTBweH1odG1sfGlucHV0W3R5cGU9InRleHQiXTpmb2N1cyxodG1sfHRleHRhcmVhOmZvY3VzLHh1bHx0ZXh0Ym94W2ZvY3VzZWRde2JvcmRlci1jb2xvcjp2YXIoLS1pbi1jb250ZW50LWJvcmRlci1mb2N1cyl9aHRtbHxpbnB1dFt0eXBlPSJ0ZXh0Il06ZGlzYWJsZWQsaHRtbHx0ZXh0YXJlYTpkaXNhYmxlZCx4dWx8dGV4dGJveFtkaXNhYmxlZD0idHJ1ZSJde29wYWNpdHk6LjV9aHRtbHxhLC50ZXh0LWxpbmt7Y29sb3I6dmFyKC0taW4tY29udGVudC1saW5rLWNvbG9yKTt0ZXh0LWRlY29yYXRpb246bm9uZX1odG1sfGE6aG92ZXIsLnRleHQtbGluazpob3Zlcntjb2xvcjp2YXIoLS1pbi1jb250ZW50LWxpbmstY29sb3ItaG92ZXIpO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9aHRtbHxhOnZpc2l0ZWR7Y29sb3I6dmFyKC0taW4tY29udGVudC1saW5rLWNvbG9yLXZpc2l0ZWQpfWh0bWx8YTpob3ZlcjphY3RpdmUsLnRleHQtbGluazpob3ZlcjphY3RpdmV7Y29sb3I6dmFyKC0taW4tY29udGVudC1saW5rLWNvbG9yLWFjdGl2ZSk7dGV4dC1kZWNvcmF0aW9uOm5vbmV9aHRtbHxpbnB1dFt0eXBlPSJjaGVja2JveCJde29wYWNpdHk6MDt3aWR0aDowO3BvaW50ZXItZXZlbnRzOm5vbmU7cG9zaXRpb246YWJzb2x1dGV9aHRtbHxpbnB1dFt0eXBlPSJjaGVja2JveCJdK2h0bWx8bGFiZWw6YmVmb3Jle2Rpc3BsYXk6aW5saW5lLWJsb2NrO2NvbnRlbnQ6IiI7dmVydGljYWwtYWxpZ246bWlkZGxlfWh0bWx8aW5wdXRbdHlwZT0iY2hlY2tib3giXStodG1sfGxhYmVse2xpbmUtaGVpZ2h0OjB9eHVsfGNoZWNrYm94e21hcmdpbi1pbmxpbmUtc3RhcnQ6MH14dWx8Ki5jaGVja2JveC1jaGVjayxodG1sfGlucHV0W3R5cGU9ImNoZWNrYm94Il0raHRtbHxsYWJlbDpiZWZvcmV7LW1vei1hcHBlYXJhbmNlOm5vbmU7d2lkdGg6MjNweDtoZWlnaHQ6MjNweDtib3JkZXItcmFkaXVzOjJweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWluLWNvbnRlbnQtYm94LWJvcmRlci1jb2xvcik7bWFyZ2luLWlubGluZS1lbmQ6MTBweDtiYWNrZ3JvdW5kLWNvbG9yOiNmMWYxZjE7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQoI2ZmZixyZ2JhKDI1NSwyNTUsMjU1LDAuOCkpIWltcG9ydGFudDtiYWNrZ3JvdW5kLXBvc2l0aW9uOmNlbnRlciBjZW50ZXI7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2JveC1zaGFkb3c6MCAxcHggMXB4IDAgI2ZmZixpbnNldCAwIDJweCAwIDAgcmdiYSgwLDAsMCwwLjAzKX14dWx8Y2hlY2tib3g6bm90KFtkaXNhYmxlZD0idHJ1ZSJdKTpob3Zlcj54dWx8Ki5jaGVja2JveC1jaGVjayxodG1sfGlucHV0W3R5cGU9ImNoZWNrYm94Il06bm90KDpkaXNhYmxlZCkraHRtbHxsYWJlbDpob3ZlcjpiZWZvcmV7Ym9yZGVyLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtYm9yZGVyLWZvY3VzKX14dWx8Y2hlY2tib3hbZGlzYWJsZWQ9InRydWUiXT54dWx8Ki5jaGVja2JveC1jaGVjayxodG1sfGlucHV0W3R5cGU9ImNoZWNrYm94Il06ZGlzYWJsZWQraHRtbHxsYWJlbHtvcGFjaXR5Oi41fXh1bHwqLmNoZWNrYm94LWxhYmVsLWJveHttYXJnaW4taW5saW5lLXN0YXJ0Oi0xcHg7cGFkZGluZy1pbmxpbmUtc3RhcnQ6MH14dWx8cmljaGxpc3RpdGVtPnh1bHwqLmNoZWNrYm94LWNoZWNre21hcmdpbjozcHggNnB4fXh1bHxyYWRpb3ttYXJnaW4taW5saW5lLXN0YXJ0OjB9eHVsfCoucmFkaW8tY2hlY2t7LW1vei1hcHBlYXJhbmNlOm5vbmU7d2lkdGg6MjNweDtoZWlnaHQ6MjNweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWluLWNvbnRlbnQtYm94LWJvcmRlci1jb2xvcik7Ym9yZGVyLXJhZGl1czo1MCU7bWFyZ2luLWlubGluZS1lbmQ6MTBweDtiYWNrZ3JvdW5kLWNvbG9yOiNmMWYxZjE7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQoI2ZmZixyZ2JhKDI1NSwyNTUsMjU1LDAuODApKTtib3gtc2hhZG93OjAgMXB4IDFweCAwICNmZmYsaW5zZXQgMCAycHggMCAwIHJnYmEoMCwwLDAsMC4wMyl9eHVsfHJhZGlvOm5vdChbZGlzYWJsZWQ9InRydWUiXSk6aG92ZXI+eHVsfCoucmFkaW8tY2hlY2t7Ym9yZGVyLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtYm9yZGVyLWZvY3VzKX14dWx8cmFkaW9bZGlzYWJsZWQ9InRydWUiXT54dWx8Ki5yYWRpby1jaGVja3tvcGFjaXR5Oi41fXh1bHwqLnJhZGlvLWxhYmVsLWJveHttYXJnaW4taW5saW5lLXN0YXJ0Oi0xcHg7bWFyZ2luLWlubGluZS1lbmQ6MTBweDtwYWRkaW5nLWlubGluZS1zdGFydDowfSp8KiNjYXRlZ29yaWVzey1tb3otYXBwZWFyYW5jZTpub25lO2JhY2tncm91bmQtY29sb3I6dmFyKC0taW4tY29udGVudC1jYXRlZ29yeS1iYWNrZ3JvdW5kKTtwYWRkaW5nLXRvcDozOXB4O21hcmdpbjowO2JvcmRlci13aWR0aDowfSp8Ki5jYXRlZ29yeXstbW96LWFwcGVhcmFuY2U6bm9uZTtjb2xvcjp2YXIoLS1pbi1jb250ZW50LWNhdGVnb3J5LXRleHQpO2JvcmRlci1pbmxpbmUtZW5kLXdpZHRoOjA7cGFkZGluZy1pbmxpbmUtc3RhcnQ6MTVweDtwYWRkaW5nLWlubGluZS1lbmQ6MjFweDttaW4taGVpZ2h0OjQwcHg7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIDE1MG1zfSp8Ki5jYXRlZ29yeTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtY2F0ZWdvcnktYmFja2dyb3VuZC1ob3Zlcil9KnwqLmNhdGVnb3J5W3NlbGVjdGVkXSwqfCouY2F0ZWdvcnkuc2VsZWN0ZWR7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LWNhdGVnb3J5LWJhY2tncm91bmQtYWN0aXZlKTtjb2xvcjp2YXIoLS1pbi1jb250ZW50LWNhdGVnb3J5LXRleHQtc2VsZWN0ZWQpO3BhZGRpbmctaW5saW5lLXN0YXJ0OjExcHg7Ym9yZGVyLWlubGluZS1zdGFydDpzb2xpZCA0cHggdmFyKC0taW4tY29udGVudC1ib3JkZXItaGlnaGxpZ2h0KX0qfCojY2F0ZWdvcmllc1trZXlib2FyZC1uYXZpZ2F0aW9uPSJ0cnVlIl06LW1vei1mb2N1c3Jpbmc+KnwqLmNhdGVnb3J5W2N1cnJlbnRde2JvcmRlci10b3A6dmFyKC0taW4tY29udGVudC1jYXRlZ29yeS1ib3JkZXItZm9jdXMpO2JvcmRlci1ib3R0b206dmFyKC0taW4tY29udGVudC1jYXRlZ29yeS1ib3JkZXItZm9jdXMpfSp8Ki5jYXRlZ29yeS1uYW1le2xpbmUtaGVpZ2h0OjIycHg7Zm9udC1zaXplOjEuMjVyZW07cGFkZGluZy1ib3R0b206MnB4O3BhZGRpbmctaW5saW5lLXN0YXJ0OjlweDttYXJnaW46MDstbW96LXVzZXItc2VsZWN0Om5vbmV9KnwqLmNhdGVnb3J5LWljb257d2lkdGg6MjRweDtoZWlnaHQ6MjRweH0qfCouaGVhZGVye2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHZhcigtLWluLWNvbnRlbnQtaGVhZGVyLWJvcmRlci1jb2xvcik7bWFyZ2luLWlubGluZS1lbmQ6NHB4O21hcmdpbi1ib3R0b206MTVweDtwYWRkaW5nLWJvdHRvbToxNXB4Oy1tb3otYm94LWFsaWduOmJhc2VsaW5lfSp8Ki5oZWFkZXItbmFtZXtmb250LXNpemU6Mi41cmVtO2ZvbnQtd2VpZ2h0Om5vcm1hbDtsaW5lLWhlaWdodDo0MHB4O21hcmdpbjowOy1tb3otdXNlci1zZWxlY3Q6bm9uZX14dWx8ZmlsZWZpZWxkey1tb3otYXBwZWFyYW5jZTpub25lO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Ym9yZGVyOjA7cGFkZGluZzowfXh1bHwqLmZpbGVGaWVsZENvbnRlbnRCb3h7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH14dWx8Ki5maWxlRmllbGRJY29ue21hcmdpbi1pbmxpbmUtc3RhcnQ6MTBweDttYXJnaW4taW5saW5lLWVuZDowfXh1bHwqLmZpbGVGaWVsZExhYmVse21hcmdpbi1pbmxpbmUtc3RhcnQ6LTI2cHg7cGFkZGluZy1pbmxpbmUtc3RhcnQ6MzZweH14dWx8dGV4dGJveCt4dWx8YnV0dG9uLHh1bHxmaWxlZmllbGQreHVsfGJ1dHRvbntib3JkZXItaW5saW5lLXN0YXJ0Om5vbmV9eHVsfHJpY2hsaXN0Ym94LHh1bHxsaXN0Ym94ey1tb3otYXBwZWFyYW5jZTpub25lO21hcmdpbi1pbmxpbmUtc3RhcnQ6MDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtYm94LWJhY2tncm91bmQpO2JvcmRlcjoxcHggc29saWQgdmFyKC0taW4tY29udGVudC1ib3gtYm9yZGVyLWNvbG9yKTtjb2xvcjp2YXIoLS1pbi1jb250ZW50LXRleHQtY29sb3IpfXh1bHx0cmVlY2hpbGRyZW46Oi1tb3otdHJlZS1yb3cseHVsfGxpc3Rib3ggeHVsfGxpc3RpdGVte3BhZGRpbmc6LjNlbTttYXJnaW46MDtib3JkZXI6MDtib3JkZXItcmFkaXVzOjA7YmFja2dyb3VuZC1pbWFnZTpub25lfXh1bHx0cmVlY2hpbGRyZW46Oi1tb3otdHJlZS1yb3coaG92ZXIpLHh1bHxsaXN0Ym94IHh1bHxsaXN0aXRlbTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtaXRlbS1ob3Zlcil9eHVsfHRyZWVjaGlsZHJlbjo6LW1vei10cmVlLXJvdyhzZWxlY3RlZCkseHVsfGxpc3Rib3ggeHVsfGxpc3RpdGVtW3NlbGVjdGVkPSJ0cnVlIl17YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LWl0ZW0tc2VsZWN0ZWQpO2NvbG9yOnZhcigtLWluLWNvbnRlbnQtc2VsZWN0ZWQtdGV4dCl9eHVsfHRyZWV7LW1vei1hcHBlYXJhbmNlOm5vbmU7Zm9udC1zaXplOjFlbTtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWluLWNvbnRlbnQtYm94LWJvcmRlci1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LWJveC1iYWNrZ3JvdW5kKTttYXJnaW46MH14dWx8dHJlZTotbW96LWZvY3VzcmluZyx4dWx8cmljaGxpc3Rib3g6LW1vei1mb2N1c3Jpbmd7Ym9yZGVyOjFweCBkb3R0ZWQgdmFyKC0taW4tY29udGVudC1ib3JkZXItZm9jdXMpfXh1bHxsaXN0aGVhZGVyLHh1bHx0cmVlY29sc3stbW96LWFwcGVhcmFuY2U6bm9uZTtib3JkZXI6MDtib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1pbi1jb250ZW50LWJvcmRlci1jb2xvcik7cGFkZGluZzowfS5hdXRvY29tcGxldGUtdHJlZT54dWx8dHJlZWNvbHN7Ym9yZGVyLWJvdHRvbTpub25lIWltcG9ydGFudH14dWx8dHJlZWNvbDpub3QoW2hpZGVoZWFkZXI9InRydWUiXSkseHVsfHRyZWVjb2xwaWNrZXJ7LW1vei1hcHBlYXJhbmNlOm5vbmU7Ym9yZGVyOjA7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LWJveC1iYWNrZ3JvdW5kLWhvdmVyKTtjb2xvcjojODA4MDgwO3BhZGRpbmc6NXB4IDEwcHh9eHVsfHRyZWVjb2w6bm90KFtoaWRlaGVhZGVyPSJ0cnVlIl0pOm5vdChbc29ydGFibGU9ImZhbHNlIl0pOmhvdmVyLHh1bHx0cmVlY29scGlja2VyOmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0taW4tY29udGVudC1ib3gtYmFja2dyb3VuZC1hY3RpdmUpO2NvbG9yOnZhcigtLWluLWNvbnRlbnQtdGV4dC1jb2xvcil9eHVsfHRyZWVjb2w6bm90KFtoaWRlaGVhZGVyPSJ0cnVlIl0pOm5vdCg6Zmlyc3QtY2hpbGQpLHh1bHx0cmVlY29scGlja2Vye2JvcmRlci1pbmxpbmUtc3RhcnQtd2lkdGg6MXB4O2JvcmRlci1pbmxpbmUtc3RhcnQtc3R5bGU6c29saWQ7Ym9yZGVyLWltYWdlOmxpbmVhci1ncmFkaWVudCh0cmFuc3BhcmVudCAwLHRyYW5zcGFyZW50IDIwJSwjYzFjMWMxIDIwJSwjYzFjMWMxIDgwJSx0cmFuc3BhcmVudCA4MCUsdHJhbnNwYXJlbnQgMTAwJSkgMSAxfXh1bHx0cmVlY29sOm5vdChbaGlkZWhlYWRlcj0idHJ1ZSJdKT54dWx8Ki50cmVlY29sLXNvcnRkaXJlY3Rpb25bc29ydERpcmVjdGlvbl17d2lkdGg6MThweDtoZWlnaHQ6MThweH14dWx8dHJlZWNvbDpub3QoW2hpZGVoZWFkZXI9InRydWUiXSk+eHVsfCoudHJlZWNvbC1zb3J0ZGlyZWN0aW9uW3NvcnREaXJlY3Rpb249ImFzY2VuZGluZyJde3RyYW5zZm9ybTpzY2FsZVkoLTEpfXh1bHx0cmVlY2hpbGRyZW46Oi1tb3otdHJlZS1yb3d7bWluLWhlaWdodDoyZW19eHVsfHRyZWVjaGlsZHJlbjo6LW1vei10cmVlLWNlbGwtdGV4dHtjb2xvcjp2YXIoLS1pbi1jb250ZW50LXRleHQtY29sb3IpfXh1bHx0cmVlY2hpbGRyZW46Oi1tb3otdHJlZS1jZWxsLXRleHQoc2VsZWN0ZWQpe2NvbG9yOnZhcigtLWluLWNvbnRlbnQtc2VsZWN0ZWQtdGV4dCl9eHVsfGNhcHRpb257YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH14dWx8YnV0dG9uLGh0bWx8YnV0dG9uLHh1bHxjb2xvcnBpY2tlclt0eXBlPSJidXR0b24iXSx4dWx8bWVudWxpc3R7bWFyZ2luOjJweCA0cHh9eHVsfG1lbnVsaXN0Om5vdChbZWRpdGFibGU9InRydWUiXSk+eHVsfCoubWVudWxpc3QtZHJvcG1hcmtlcnttYXJnaW4tdG9wOjFweDttYXJnaW4tYm90dG9tOjFweH14dWx8Y2hlY2tib3h7cGFkZGluZy1pbmxpbmUtc3RhcnQ6MH14dWx8Ki5idXR0b24tYm94LHh1bHwqLm1lbnVsaXN0LWxhYmVsLWJveCx4dWx8Ki5yYWRpby1sYWJlbC1ib3gseHVsfCouY2hlY2tib3gtbGFiZWwtYm94e2JvcmRlci1zdHlsZTpub25lfXh1bHxidXR0b246LW1vei1mb2N1c3Jpbmc+eHVsfCouYnV0dG9uLWJveCx4dWx8bWVudWxpc3Q6LW1vei1mb2N1c3Jpbmc+eHVsfCoubWVudWxpc3QtbGFiZWwtYm94LHh1bHxyYWRpb1tmb2N1c2VkPSJ0cnVlIl0+eHVsfCoucmFkaW8tbGFiZWwtYm94LGh0bWx8aW5wdXRbdHlwZT0iY2hlY2tib3giXTotbW96LWZvY3VzcmluZytodG1sfGxhYmVsOmJlZm9yZSx4dWx8Y2hlY2tib3g6LW1vei1mb2N1c3Jpbmc+eHVsfCouY2hlY2tib3gtbGFiZWwtYm94e291dGxpbmU6MXB4IGRvdHRlZH1ib2R5e2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Ym94LXNpemluZzpib3JkZXItYm94O21pbi1oZWlnaHQ6MTAwdmg7cGFkZGluZy10b3A6MDtwYWRkaW5nLWJvdHRvbTowO3BhZGRpbmctaW5saW5lLXN0YXJ0OmNhbGMoNDhweCs0LjZlbSk7cGFkZGluZy1pbmxpbmUtZW5kOjQ4cHg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXJ9LmNvbnRhaW5lcnttaW4td2lkdGg6MTNlbTttYXgtd2lkdGg6NTJlbX0uY29udGFpbmVyLnJlc3RvcmUtY2hvc2Vue2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47ZmxleC1ncm93OjE7bWFyZ2luOjEwdmggMH0udGl0bGV7YmFja2dyb3VuZC1wb3NpdGlvbjpsZWZ0IDA7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2JhY2tncm91bmQtc2l6ZToxLjZlbTttYXJnaW4taW5saW5lLXN0YXJ0Oi0yLjNlbTtwYWRkaW5nLWlubGluZS1zdGFydDoyLjNlbTtmb250LXNpemU6Mi41ZW19LnRpdGxlOmRpcihydGwpe2JhY2tncm91bmQtcG9zaXRpb246cmlnaHQgMH0udGl0bGUtdGV4dHtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjYzFjMWMxO2ZvbnQtc2l6ZTppbmhlcml0O3BhZGRpbmctYm90dG9tOi40ZW19LmJ1dHRvbi1jb250YWluZXJ7bWFyZ2luLXRvcDoxLjJlbX0uYnV0dG9uLWNvbnRhaW5lcj5idXR0b257bWluLXdpZHRoOjE1MHB4fS5idXR0b24tY29udGFpbmVyPmJ1dHRvbjpmaXJzdC1jaGlsZHttYXJnaW4taW5saW5lLXN0YXJ0OjB9Ym9keXtiYWNrZ3JvdW5kLXNpemU6NjRweCAzMnB4O2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14O3BhZGRpbmc6NzVweCAwO21pbi13aWR0aDoxM2VtfS5idXR0b24tY29udGFpbmVye2Rpc3BsYXk6ZmxleDtmbGV4LWZsb3c6cm93IHdyYXB9LmJ1dHRvbi1zcGFjZXJ7ZmxleDoxfWJvZHl7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCNmMGQwMDAsI2YwZDAwMCAzMyUsI2ZlZGMwMCAzMyUsI2ZlZGMwMCA2NiUsI2YwZDAwMCA2NiUsI2YwZDAwMCl9YSxhOmFjdGl2ZSxhOmZvY3Vze291dGxpbmU6bm9uZTtjdXJzb3I6ZGVmYXVsdH11bHttYXJnaW46MC4xZW0gMDtwYWRkaW5nOjAgMWVtO2xpc3Qtc3R5bGU6bm9uZTt9bGk6YmVmb3Jle2NvbnRlbnQ6IiI7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50ICMxMTE7Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci13aWR0aDowLjM1ZW0gMCAwLjM1ZW0gMC40NWVtO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7d2lkdGg6MDtsZWZ0Oi0xZW07dG9wOjFlbTtwb3NpdGlvbjpyZWxhdGl2ZX0vLy0tPjwvc3R5bGU+DQo8L2hlYWQ+PGJvZHk+PGRpdiBpZD0iZXJyb3JQYWdlQ29udGFpbmVyIiBjbGFzcz0iY29udGFpbmVyIj4NCjxkaXYgY2xhc3M9InRpdGxlIj48aDEgY2xhc3M9InRpdGxlLXRleHQiPkdvb2QgbmV3cyBmb3IgeW91PC9oMT48L2Rpdj48ZGl2IGlkPSJlcnJvckxvbmdDb250ZW50Ij4NCjxkaXYgaWQ9ImVycm9yU2hvcnREZXNjIj48cCBpZD0iZXJyb3JTaG9ydERlc2NUZXh0Ij4NClRoZSBvd25lciBvZiB0aGlzIHdlYnNpdGUgZGVjaWRlZCB0byBjb25maWd1cmUgdGhlaXIgd2Vic2l0ZSBwcm9wZXJseS4NClRoZSBjb25uZWN0aW9uIGJldHdlZW4geW91IGFuZCA8Yj4lJUNGX0hPU1ROQU1FJSU8L2I+IGlzIG5vIGxvbmdlciBNSVRNZWQgYnkgdGhlIGNvcnBvcmF0ZSBjZW5zb3JzaGlwIHNlcnZpY2VzLg0KVGhlIGFkZC1vbiByZW1vdmVkIDxiPiUlQ0ZfSE9TVE5BTUUlJTwvYj4gZnJvbSB5b3VyIHdoaXRlbGlzdC4gSWYgdGhpcyBoYXBwZW5lZCBhZ2FpbiwgcGxlYXNlIGNoZWNrIHlvdXIgd2hpdGVsaXN0Lg0KPC9wPjwvZGl2PjxkaXYgaWQ9ImNlcnRFcnJvckFuZENhcHRpdmVQb3J0YWxCdXR0b25Db250YWluZXIiIGNsYXNzPSJidXR0b24tY29udGFpbmVyIj4NCjx1bD4NCjxsaT48YSBocmVmPSJodHRwczovLzAuMC4wLjAvY2ZtaXRtX2FkZG9uL2FsbG93L3JlbG9hZD9ub3ciPjxiPkdvdCBpdCE8L2I+PC9hPjwvbGk+DQo8L3VsPg0KPC9kaXY+PC9kaXY+PC9kaXY+PC9ib2R5PjwvaHRtbD4='; function onError(e){console.log(`CFMITM Error:${e}`);} function whitelist_reload(){browser.storage.local.get().then(function(w){ @@ -25,10 +30,12 @@ var tmp_whitelist=w.myset_cfwhite;tmp_whitelist=tmp_whitelist.split("\n").filter cf_ignore=tmp_whitelist; }else{cf_ignore=[];} //ADVANCED +if (w.myset_xautoclean=='y'){wl_autoclean=1;}else{wl_autoclean=0;} if (w.myset_xincapsula=='y'){stop_incapsula=1;}else{stop_incapsula=0;} if (w.myset_xgshield=='y'){stop_gshield=1;}else{stop_gshield=0;} if (w.myset_xsucuri=='y'){stop_sucuri=1;}else{stop_sucuri=0;} if (w.myset_xign3p=='y'){ign_thirdparty=1;}else{ign_thirdparty=0;} +if (w.myset_xwhitemark=='y'){do_markwhitelistsite=1;}else{do_markwhitelistsite=0;} //ACTION if (w.myset_xsimplewarn){switch(w.myset_xsimplewarn){ case 1:do_reaction=1;break; @@ -48,97 +55,133 @@ return false; } function analyzemydata(res){ -if (cfaddon_isdone==0){cfaddon_isdone=1;whitelist_reload();} if (ign_thirdparty==1){if (res.type!='main_frame'){return;}} -//console.log("CFMITM: scanning: "+res.url); - var cflink = document.createElement('a'); - cflink.setAttribute('href',res.url); - var cf_hostname = cflink.hostname; - var cf_protocol = cflink.protocol; - var cf_gothead = res.responseHeaders; - cflink = null; +var cflink=document.createElement('a');cflink.setAttribute('href',res.url); +var cf_hostname=cflink.hostname; +var cf_protocol=cflink.protocol; +var cf_gothead=res.responseHeaders; +var cf_tab_id=res.tabId; +cflink=null; //whitelisted if (cf_hostname.endsWith('.cloudflare.com')||cf_hostname=='cloudflare.com'){return;} if (stop_incapsula==1){if (cf_hostname.endsWith('.incapsula.com')||cf_hostname=='incapsula.com'){return;}} if (stop_gshield==1){if (cf_hostname.endsWith('.withgoogle.com')||cf_hostname.endsWith('.google.com')){return;}} if (stop_sucuri==1){if (cf_hostname.endsWith('.sucuri.net')||cf_hostname=='sucuri.net'){return;}} -if (is_domain_ignored(cf_hostname)){return;} +if (cf_protocol!='http:' && cf_protocol!='https:'){return;} - if ((cf_protocol == 'http:' || cf_protocol == 'https:') && cf_hostname.length >= 4) { +//init array +if (cf_dstarray[cf_tab_id]==undefined){ +cf_dstarray[cf_tab_id]=[]; +cf_dstarray[cf_tab_id]['cf']=''; +cf_dstarray[cf_tab_id]['ok']=''; +} -//console.log("CFMITM: testing...: "+res.url); - -var mitm_isdetected=0;var mitm_cdnname='Cloudflare'; +if (cf_hostname.length>=4){ +var mitm_is=0;var mitm_cdnname='Cloudflare'; for(var i=0;i -if (mitm_isdetected>=1){break;} } -if (mitm_isdetected>=1){ +if (mitm_is==1){ +if (is_domain_ignored(cf_hostname)){ +if (do_markwhitelistsite==1){do_reaction=1;}else{return;} +} //add to history (used in gotwhitelistrequest()) if (cf_history.length>=10){cf_history=[];} if (!cf_history.includes(cf_hostname)){cf_history.push(cf_hostname);} console.log('SECURITY_WARN: '+mitm_cdnname+' MiTM Detected: '+res.url); if (do_reaction==0){ -cfblockscreen='document.documentElement.innerHTML=atob(\'PGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPjxoZWFkPjx0aXRsZT5JbnNlY3VyZSBDb25uZWN0aW9uPC90aXRsZT4KPCEtLQpUaGlzIFNvdXJjZSBDb2RlIEZvcm0gaXMgc3ViamVjdCB0byB0aGUgdGVybXMgb2YgdGhlIE1vemlsbGEgUHVibGljIExpY2Vuc2UsIHYuIDIuMC4KSWYgYSBjb3B5IG9mIHRoZSBNUEwgd2FzIG5vdCBkaXN0cmlidXRlZCB3aXRoIHRoaXMgZmlsZSwgWW91IGNhbiBvYnRhaW4gb25lIGF0IGh0dHBzOi8vbW96aWxsYS5vcmcvTVBMLzIuMC8uCi8vLS0+CjxsaW5rIGlkPSJmYXZpY29uIiByZWw9Imljb24iIHR5cGU9ImltYWdlL3gtaWNvbiIgaHJlZj0iZGF0YTppbWFnZS94LWljb247YmFzZTY0LEFBQUJBQUVBRUJBQUFBRUFJQUJvQkFBQUZnQUFBQ2dBQUFBUUFBQUFJQUFBQUFFQUlBQUFBQUFBQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFPems0T0twTVNrcTZVRTlQdWxSVFU3cFhWMWU2VzF0YnVsMWRYYnBiVzF1NldGaFl1bFZWVmJwVFUxTzZVRkJRdWt4TVRMb3RMUzJiQUFBQU96WTBOSjdZM056L3Y5emgvOEhlNC8vRDRlYi94dVRwLzhqbTYvL0k1T24veCtQby84Ymo2Zi9FNGVmL3d0L2wvOEhkNC8rLzJkLy8zTi9mL3hrWkdZVTJOVFdkMk43ZS94ZWt4ZjhXdWVEL0ZycmgveGE3NGY4VXI5UC9JaXd1L3lJc0x2OFdzOS8vRjdEZS94ZXIzUDhYcHRyL0lKUzYvOTdnNGY4WkdSbUNBQUFBVjlIUTBPOTFzN3ovRjhIai94YkM0LzhXdytUL0ZMYlYveUFyTGY4Z0t5My9GcnJoL3hhMTMvOFhzTjcvRnFiVi81RzN2Zit4c2JIVUFBQUFSUUFBQUM1b1oyZVYyTjdmL3lXdHYvOFh5dWIvRnNybS94Yko1djhacThmL0dhdkgveGJBNC84V3UrSC9GclhmL3pXZ3VmL1oyZG4vTHk4dmVBQUFBQndBQUFBQUFBQUFTc2JGeGQyZ3k4Ny9LdFRtL3huVTZ2OFcwT2ovRkVKSS94UkNTUDhXeGVYL0ZyL2oveFd3MC8rc3dzUC9rNU9UdGdBQUFEb0FBQUFBQUFBQUFBQUFBQ0ZGUlVWKzZldnIvenExdnY4dzVQSC9KOS92L3lJaUl2OGlJaUwvRnNybS94YkU1UDlYcTduLzE5ZlgrQmtaR1cwQUFBQUtBQUFBQUFBQUFBQUFBQUFBQUFBQVByZTJ0c25BM3VEL0xOcmoveS9vOHY4ckt5di9LeXNyL3l2Yjd2OG12ZEQveE0vUC8zZDNkNkFBQUFBMEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCVWJHeHR0OFBEdytGckF3Lzh1N1BQL05EUTAvelEwTlA4dzNlLy9nTHUvLzhqSXlPZ0FBQUJSQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTkoyZG5iVFM0K1QvS2REVi96UThQUDgwUUVIL05MM0ovOVhaMmY5V1ZsYUxBQUFBS0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFrQUFBQlgzOS9mNzMzRXh2OHQ1dkgvTGRycC81ckJ3LysydHJiVUFBQUFSUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFMbTF0YlpYZjV1Yi9MTG5ELzBTN3hQL2QzZDMvTVRFeGVBQUFBQndBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCS3g4ZkgzYkhQMGYrOHpNMy9sNWVYdGdBQUFEb0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlUSXlNbmErdnI3VHJxNnV5UmtaR1cwQUFBQUtBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFiQUFBQVJBQUFBRDRBQUFBVkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBLy84QUFJQUJBQUFBQUFBQUFBQUFBSUFCQUFDQUF3QUF3QU1BQU9BSEFBRGdCd0FBOEE4QUFQQVBBQUQ0SHdBQStEOEFBUHcvQUFEK2Z3QUEvLzhBQUE9PSI+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+QG5hbWVzcGFjZSBodG1sICJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIjtAbmFtZXNwYWNlIHh1bCAiaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9rZXltYXN0ZXIvZ2F0ZWtlZXBlci90aGVyZS5pcy5vbmx5Lnh1bCI7KnwqOnJvb3R7LS1pbi1jb250ZW50LXBhZ2UtY29sb3I6IzQyNGU1YTstLWluLWNvbnRlbnQtcGFnZS1iYWNrZ3JvdW5kOiNmYmZiZmI7LS1pbi1jb250ZW50LXRleHQtY29sb3I6IzMzMzstLWluLWNvbnRlbnQtc2VsZWN0ZWQtdGV4dDojZmZmOy0taW4tY29udGVudC1oZWFkZXItYm9yZGVyLWNvbG9yOiNjOGM4Yzg7LS1pbi1jb250ZW50LWJveC1iYWNrZ3JvdW5kOiNmZmY7LS1pbi1jb250ZW50LWJveC1iYWNrZ3JvdW5kLW9kZDojZjNmNmZhOy0taW4tY29udGVudC1ib3gtYmFja2dyb3VuZC1ob3ZlcjojZWJlYmViOy0taW4tY29udGVudC1ib3gtYmFja2dyb3VuZC1hY3RpdmU6I2RhZGFkYTstLWluLWNvbnRlbnQtYm94LWJvcmRlci1jb2xvcjojYzFjMWMxOy0taW4tY29udGVudC1pdGVtLWhvdmVyOnJnYmEoMCwxNDksMjIxLDAuMjUpOy0taW4tY29udGVudC1pdGVtLXNlbGVjdGVkOiMwMDk1ZGQ7LS1pbi1jb250ZW50LWJvcmRlci1oaWdobGlnaHQ6I2ZmOTUwMDstLWluLWNvbnRlbnQtYm9yZGVyLWZvY3VzOiMwMDk1ZGQ7LS1pbi1jb250ZW50LWJvcmRlci1jb2xvcjojYzFjMWMxOy0taW4tY29udGVudC1jYXRlZ29yeS10ZXh0OiNjMWMxYzE7LS1pbi1jb250ZW50LWNhdGVnb3J5LWJvcmRlci1mb2N1czoxcHggZG90dGVkICNmZmY7LS1pbi1jb250ZW50LWNhdGVnb3J5LXRleHQtc2VsZWN0ZWQ6I2YyZjJmMjstLWluLWNvbnRlbnQtY2F0ZWdvcnktYmFja2dyb3VuZDojNDI0ZjVhOy0taW4tY29udGVudC1jYXRlZ29yeS1iYWNrZ3JvdW5kLWhvdmVyOiM1ZTY5NzI7LS1pbi1jb250ZW50LWNhdGVnb3J5LWJhY2tncm91bmQtYWN0aXZlOiMzNDNmNDg7LS1pbi1jb250ZW50LXRhYi1jb2xvcjojNDI0ZjVhOy0taW4tY29udGVudC1saW5rLWNvbG9yOiMwMDk1ZGQ7LS1pbi1jb250ZW50LWxpbmstY29sb3ItaG92ZXI6IzE3OGNlNTstLWluLWNvbnRlbnQtbGluay1jb2xvci1hY3RpdmU6I2ZmOTUwMDstLWluLWNvbnRlbnQtbGluay1jb2xvci12aXNpdGVkOiM1NTFhOGI7LS1pbi1jb250ZW50LXByaW1hcnktYnV0dG9uLWJhY2tncm91bmQ6IzAwOTVkZDstLWluLWNvbnRlbnQtcHJpbWFyeS1idXR0b24tYmFja2dyb3VuZC1ob3ZlcjojMDA4YWNiOy0taW4tY29udGVudC1wcmltYXJ5LWJ1dHRvbi1iYWNrZ3JvdW5kLWFjdGl2ZTojMDA2YjlkOy0taW4tY29udGVudC10YWJsZS1ib3JkZXItZGFyay1jb2xvcjojZDFkMWQxOy0taW4tY29udGVudC10YWJsZS1oZWFkZXItYmFja2dyb3VuZDojMDA5NWRkfWh0bWx8aHRtbCx4dWx8cGFnZSx4dWx8d2luZG93e2ZvbnQ6bWVzc2FnZS1ib3g7LW1vei1hcHBlYXJhbmNlOm5vbmU7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LXBhZ2UtYmFja2dyb3VuZCk7Y29sb3I6dmFyKC0taW4tY29udGVudC1wYWdlLWNvbG9yKX1odG1sfGJvZHl7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6bm9ybWFsO21hcmdpbjowfWh0bWx8aDF7Zm9udC1zaXplOjIuNWVtO2ZvbnQtd2VpZ2h0OmxpZ2h0ZXI7bGluZS1oZWlnaHQ6MS4yO2NvbG9yOnZhcigtLWluLWNvbnRlbnQtdGV4dC1jb2xvcik7bWFyZ2luOjA7bWFyZ2luLWJvdHRvbTouNWVtfWh0bWx8aHJ7Ym9yZGVyLXN0eWxlOnNvbGlkIG5vbmUgbm9uZSBub25lO2JvcmRlci1jb2xvcjp2YXIoLS1pbi1jb250ZW50LWJvcmRlci1jb2xvcil9eHVsfGNhcHRpb257LW1vei1hcHBlYXJhbmNlOm5vbmU7bWFyZ2luOjB9eHVsfGNhcHRpb24+eHVsfGNoZWNrYm94LHh1bHxjYXB0aW9uPnh1bHxsYWJlbHtmb250LXNpemU6MS4zcmVtO2ZvbnQtd2VpZ2h0OmJvbGQ7bGluZS1oZWlnaHQ6MjJweH14dWx8Y2FwdGlvbj54dWx8Y2hlY2tib3gseHVsfGNhcHRpb24+eHVsfGxhYmVse21hcmdpbjowIWltcG9ydGFudH0qfCoubWFpbi1jb250ZW50e3BhZGRpbmctdG9wOjQwcHg7cGFkZGluZy1pbmxpbmUtZW5kOjQ0cHg7cGFkZGluZy1ib3R0b206NDhweDtwYWRkaW5nLWlubGluZS1zdGFydDo0OHB4O292ZXJmbG93OmF1dG99eHVsfHByZWZwYW5lPnh1bHwqLmNvbnRlbnQtYm94e292ZXJmbG93OnZpc2libGV9eHVsfGdyb3VwYm94ey1tb3otYXBwZWFyYW5jZTpub25lO2JvcmRlcjowO21hcmdpbjoxNXB4IDAgMDtwYWRkaW5nLWlubGluZS1zdGFydDowO3BhZGRpbmctaW5saW5lLWVuZDowO2ZvbnQtc2l6ZToxLjI1cmVtfXh1bHxncm91cGJveCB4dWx8bGFiZWw6bm90KC5tZW51LWFjY2VsKTpub3QoLm1lbnUtdGV4dCk6bm90KC5pbmRlbnQpLHh1bHxncm91cGJveCB4dWx8ZGVzY3JpcHRpb257bWFyZ2luLWlubGluZS1zdGFydDowIWltcG9ydGFudDttYXJnaW4taW5saW5lLWVuZDowIWltcG9ydGFudH14dWx8dGFicGFuZWxzey1tb3otYXBwZWFyYW5jZTpub25lO2ZvbnQtc2l6ZToxLjI1cmVtO2xpbmUtaGVpZ2h0OjIycHg7Ym9yZGVyOjA7cGFkZGluZzowO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Y29sb3I6aW5oZXJpdH14dWx8dGFic3ttYXJnaW4tYm90dG9tOjE1cHg7Ym9yZGVyLXRvcDoxcHggc29saWQgdmFyKC0taW4tY29udGVudC1ib3gtYm9yZGVyLWNvbG9yKTtib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1pbi1jb250ZW50LWJveC1ib3JkZXItY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0taW4tY29udGVudC1wYWdlLWJhY2tncm91bmQpfXh1bHwqLnRhYnMtbGVmdCx4dWx8Ki50YWJzLXJpZ2h0e2JvcmRlci1ib3R0b206MH14dWx8dGFiey1tb3otYXBwZWFyYW5jZTpub25lO21hcmdpbi10b3A6MDtwYWRkaW5nOjRweCAyMHB4O21pbi1oZWlnaHQ6NDRweDtjb2xvcjp2YXIoLS1pbi1jb250ZW50LXRhYi1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LXBhZ2UtYmFja2dyb3VuZCk7Ym9yZGVyLXdpZHRoOjA7Ym9yZGVyLXJhZGl1czowIWltcG9ydGFudDt0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgNTBtcyBlYXNlIDBzfXh1bHx0YWI6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LWJveC1iYWNrZ3JvdW5kLWhvdmVyKX14dWx8dGFiW3NlbGVjdGVkXXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtYm94LWJhY2tncm91bmQtaG92ZXIpO3BhZGRpbmctYm90dG9tOjA7Ym9yZGVyLWJvdHRvbTo0cHggc29saWQgdmFyKC0taW4tY29udGVudC1ib3JkZXItaGlnaGxpZ2h0KX14dWx8Ki50YWItdGV4dHtmb250LXNpemU6MS4zcmVtO2xpbmUtaGVpZ2h0OjIycHh9aHRtbHxidXR0b257cGFkZGluZzozcHg7Zm9udDppbmhlcml0fSp8YnV0dG9uLGh0bWx8c2VsZWN0LHh1bHxjb2xvcnBpY2tlclt0eXBlPSJidXR0b24iXSx4dWx8bWVudWxpc3R7LW1vei1hcHBlYXJhbmNlOm5vbmU7bWluLWhlaWdodDozMHB4O2NvbG9yOnZhcigtLWluLWNvbnRlbnQtdGV4dC1jb2xvcik7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1pbi1jb250ZW50LWJveC1ib3JkZXItY29sb3IpOy1tb3otYm9yZGVyLXRvcC1jb2xvcnM6bm9uZSFpbXBvcnRhbnQ7LW1vei1ib3JkZXItcmlnaHQtY29sb3JzOm5vbmUhaW1wb3J0YW50Oy1tb3otYm9yZGVyLWJvdHRvbS1jb2xvcnM6bm9uZSFpbXBvcnRhbnQ7LW1vei1ib3JkZXItbGVmdC1jb2xvcnM6bm9uZSFpbXBvcnRhbnQ7Ym9yZGVyLXJhZGl1czoycHg7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LXBhZ2UtYmFja2dyb3VuZCl9aHRtbHxidXR0b246ZW5hYmxlZDpob3ZlcixodG1sfHNlbGVjdDplbmFibGVkOmhvdmVyLHh1bHxidXR0b246bm90KFtkaXNhYmxlZD0idHJ1ZSJdKTpob3Zlcix4dWx8Y29sb3JwaWNrZXJbdHlwZT0iYnV0dG9uIl06bm90KFtkaXNhYmxlZD0idHJ1ZSJdKTpob3Zlcix4dWx8bWVudWxpc3Q6bm90KFtkaXNhYmxlZD0idHJ1ZSJdKTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtYm94LWJhY2tncm91bmQtaG92ZXIpfWh0bWx8YnV0dG9uOmVuYWJsZWQ6aG92ZXI6YWN0aXZlLGh0bWx8c2VsZWN0OmVuYWJsZWQ6aG92ZXI6YWN0aXZlLHh1bHxidXR0b246bm90KFtkaXNhYmxlZD0idHJ1ZSJdKTpob3ZlcjphY3RpdmUseHVsfGNvbG9ycGlja2VyW3R5cGU9ImJ1dHRvbiJdOm5vdChbZGlzYWJsZWQ9InRydWUiXSk6aG92ZXI6YWN0aXZlLHh1bHxtZW51bGlzdFtvcGVuPSJ0cnVlIl06bm90KFtkaXNhYmxlZD0idHJ1ZSJdKXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtYm94LWJhY2tncm91bmQtYWN0aXZlKX1odG1sfGJ1dHRvbjpkaXNhYmxlZCxodG1sfHNlbGVjdDpkaXNhYmxlZCx4dWx8YnV0dG9uW2Rpc2FibGVkPSJ0cnVlIl0seHVsfGNvbG9ycGlja2VyW3R5cGU9ImJ1dHRvbiJdW2Rpc2FibGVkPSJ0cnVlIl0seHVsfG1lbnVsaXN0W2Rpc2FibGVkPSJ0cnVlIl17b3BhY2l0eTouNX0qfGJ1dHRvbi5wcmltYXJ5e2JhY2tncm91bmQtY29sb3I6dmFyKC0taW4tY29udGVudC1wcmltYXJ5LWJ1dHRvbi1iYWNrZ3JvdW5kKTtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQ7Y29sb3I6dmFyKC0taW4tY29udGVudC1zZWxlY3RlZC10ZXh0KX1odG1sfGJ1dHRvbi5wcmltYXJ5OmVuYWJsZWQ6aG92ZXIseHVsfGJ1dHRvbi5wcmltYXJ5Om5vdChbZGlzYWJsZWQ9InRydWUiXSk6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LXByaW1hcnktYnV0dG9uLWJhY2tncm91bmQtaG92ZXIpfWh0bWx8YnV0dG9uLnByaW1hcnk6ZW5hYmxlZDpob3ZlcjphY3RpdmUseHVsfGJ1dHRvbi5wcmltYXJ5Om5vdChbZGlzYWJsZWQ9InRydWUiXSk6aG92ZXI6YWN0aXZle2JhY2tncm91bmQtY29sb3I6dmFyKC0taW4tY29udGVudC1wcmltYXJ5LWJ1dHRvbi1iYWNrZ3JvdW5kLWFjdGl2ZSl9eHVsfGNvbG9ycGlja2VyW3R5cGU9ImJ1dHRvbiJde3BhZGRpbmc6NnB4O3dpZHRoOjUwcHh9eHVsfGJ1dHRvbj54dWx8Ki5idXR0b24tYm94e3BhZGRpbmctcmlnaHQ6MTBweCFpbXBvcnRhbnQ7cGFkZGluZy1sZWZ0OjEwcHghaW1wb3J0YW50fXh1bHxtZW51bGlzdD54dWx8Ki5tZW51bGlzdC1sYWJlbC1ib3g+eHVsfCoubWVudWxpc3QtaWNvbltzcmNde21hcmdpbi1pbmxpbmUtZW5kOjVweH14dWx8YnV0dG9uW3R5cGU9Im1lbnUiXT54dWx8Ki5idXR0b24tYm94Pnh1bHwqLmJ1dHRvbi1tZW51LWRyb3BtYXJrZXJ7LW1vei1hcHBlYXJhbmNlOm5vbmU7bWFyZ2luOjFweCAwO21hcmdpbi1pbmxpbmUtc3RhcnQ6MTBweDtwYWRkaW5nOjA7d2lkdGg6MTBweDtoZWlnaHQ6MTZweDtib3JkZXI6MDtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fXh1bHxidXR0b25bdHlwZT0ibWVudSJdPnh1bHxtZW51cG9wdXB7LW1vei1hcHBlYXJhbmNlOm5vbmU7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1pbi1jb250ZW50LWJveC1ib3JkZXItY29sb3IpO2JvcmRlci1yYWRpdXM6MnB4O2JhY2tncm91bmQtY29sb3I6dmFyKC0taW4tY29udGVudC1ib3gtYmFja2dyb3VuZCl9eHVsfG1lbnVsaXN0Pnh1bHxtZW51cG9wdXAgeHVsfG1lbnUseHVsfG1lbnVsaXN0Pnh1bHxtZW51cG9wdXAgeHVsfG1lbnVpdGVtLHh1bHxidXR0b25bdHlwZT0ibWVudSJdPnh1bHxtZW51cG9wdXAgeHVsfG1lbnUseHVsfGJ1dHRvblt0eXBlPSJtZW51Il0+eHVsfG1lbnVwb3B1cCB4dWx8bWVudWl0ZW17LW1vei1hcHBlYXJhbmNlOm5vbmU7Zm9udC1zaXplOjFlbTtjb2xvcjp2YXIoLS1pbi1jb250ZW50LXRleHQtY29sb3IpO3BhZGRpbmctdG9wOi4yZW07cGFkZGluZy1ib3R0b206LjJlbTtwYWRkaW5nLWlubGluZS1zdGFydDoxMHB4O3BhZGRpbmctaW5saW5lLWVuZDozMHB4fXh1bHxtZW51bGlzdD54dWx8bWVudXBvcHVwPnh1bHxtZW51Om5vdChbZGlzYWJsZWQ9InRydWUiXSlbX21vei1tZW51YWN0aXZlPSJ0cnVlIl0seHVsfG1lbnVsaXN0Pnh1bHxtZW51cG9wdXA+eHVsfG1lbnVpdGVtOm5vdChbZGlzYWJsZWQ9InRydWUiXSlbX21vei1tZW51YWN0aXZlPSJ0cnVlIl0seHVsfGJ1dHRvblt0eXBlPSJtZW51Il0+eHVsfG1lbnVwb3B1cD54dWx8bWVudTpub3QoW2Rpc2FibGVkPSJ0cnVlIl0pW19tb3otbWVudWFjdGl2ZT0idHJ1ZSJdLHh1bHxidXR0b25bdHlwZT0ibWVudSJdPnh1bHxtZW51cG9wdXA+eHVsfG1lbnVpdGVtOm5vdChbZGlzYWJsZWQ9InRydWUiXSlbX21vei1tZW51YWN0aXZlPSJ0cnVlIl17Y29sb3I6dmFyKC0taW4tY29udGVudC10ZXh0LWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtaXRlbS1ob3Zlcil9eHVsfG1lbnVsaXN0Pnh1bHxtZW51cG9wdXA+eHVsfG1lbnU6bm90KFtkaXNhYmxlZD0idHJ1ZSJdKVtzZWxlY3RlZD0idHJ1ZSJdLHh1bHxtZW51bGlzdD54dWx8bWVudXBvcHVwPnh1bHxtZW51aXRlbTpub3QoW2Rpc2FibGVkPSJ0cnVlIl0pW3NlbGVjdGVkPSJ0cnVlIl0seHVsfGJ1dHRvblt0eXBlPSJtZW51Il0+eHVsfG1lbnVwb3B1cD54dWx8bWVudTpub3QoW2Rpc2FibGVkPSJ0cnVlIl0pW3NlbGVjdGVkPSJ0cnVlIl0seHVsfGJ1dHRvblt0eXBlPSJtZW51Il0+eHVsfG1lbnVwb3B1cD54dWx8bWVudWl0ZW06bm90KFtkaXNhYmxlZD0idHJ1ZSJdKVtzZWxlY3RlZD0idHJ1ZSJde2NvbG9yOnZhcigtLWluLWNvbnRlbnQtc2VsZWN0ZWQtdGV4dCk7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LWl0ZW0tc2VsZWN0ZWQpfXh1bHxtZW51bGlzdD54dWx8bWVudXBvcHVwPnh1bHxtZW51W2Rpc2FibGVkPSJ0cnVlIl0seHVsfG1lbnVsaXN0Pnh1bHxtZW51cG9wdXA+eHVsfG1lbnVpdGVtW2Rpc2FibGVkPSJ0cnVlIl0seHVsfGJ1dHRvblt0eXBlPSJtZW51Il0+eHVsfG1lbnVwb3B1cD54dWx8bWVudVtkaXNhYmxlZD0idHJ1ZSJdLHh1bHxidXR0b25bdHlwZT0ibWVudSJdPnh1bHxtZW51cG9wdXA+eHVsfG1lbnVpdGVtW2Rpc2FibGVkPSJ0cnVlIl17Y29sb3I6Izk5OTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fXh1bHxtZW51bGlzdD54dWx8bWVudXBvcHVwIHh1bHxtZW51c2VwYXJhdG9yLHh1bHxidXR0b25bdHlwZT0ibWVudSJdPnh1bHxtZW51cG9wdXAgeHVsfG1lbnVzZXBhcmF0b3J7LW1vei1hcHBlYXJhbmNlOm5vbmU7bWFyZ2luOjA7cGFkZGluZzowO2JvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLWluLWNvbnRlbnQtYm94LWJvcmRlci1jb2xvcik7Ym9yZGVyLWJvdHRvbTowfWh0bWx8aW5wdXRbdHlwZT0idGV4dCJdLGh0bWx8dGV4dGFyZWEseHVsfHRleHRib3h7LW1vei1hcHBlYXJhbmNlOm5vbmU7Y29sb3I6dmFyKC0taW4tY29udGVudC10ZXh0LWNvbG9yKTtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWluLWNvbnRlbnQtYm94LWJvcmRlci1jb2xvcik7LW1vei1ib3JkZXItdG9wLWNvbG9yczpub25lIWltcG9ydGFudDstbW96LWJvcmRlci1yaWdodC1jb2xvcnM6bm9uZSFpbXBvcnRhbnQ7LW1vei1ib3JkZXItYm90dG9tLWNvbG9yczpub25lIWltcG9ydGFudDstbW96LWJvcmRlci1sZWZ0LWNvbG9yczpub25lIWltcG9ydGFudDtib3JkZXItcmFkaXVzOjJweDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtYm94LWJhY2tncm91bmQpfXh1bHx0ZXh0Ym94e21pbi1oZWlnaHQ6MzBweDtwYWRkaW5nLXJpZ2h0OjEwcHg7cGFkZGluZy1sZWZ0OjEwcHh9eHVsfHRleHRib3gudHJlZS1pbnB1dHttaW4taGVpZ2h0OnVuc2V0O3BhZGRpbmctcmlnaHQ6dW5zZXQ7cGFkZGluZy1sZWZ0OnVuc2V0fWh0bWx8aW5wdXRbdHlwZT0idGV4dCJdLGh0bWx8dGV4dGFyZWF7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtwYWRkaW5nOjVweCAxMHB4fWh0bWx8aW5wdXRbdHlwZT0idGV4dCJdOmZvY3VzLGh0bWx8dGV4dGFyZWE6Zm9jdXMseHVsfHRleHRib3hbZm9jdXNlZF17Ym9yZGVyLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtYm9yZGVyLWZvY3VzKX1odG1sfGlucHV0W3R5cGU9InRleHQiXTpkaXNhYmxlZCxodG1sfHRleHRhcmVhOmRpc2FibGVkLHh1bHx0ZXh0Ym94W2Rpc2FibGVkPSJ0cnVlIl17b3BhY2l0eTouNX1odG1sfGEsLnRleHQtbGlua3tjb2xvcjp2YXIoLS1pbi1jb250ZW50LWxpbmstY29sb3IpO3RleHQtZGVjb3JhdGlvbjpub25lfWh0bWx8YTpob3ZlciwudGV4dC1saW5rOmhvdmVye2NvbG9yOnZhcigtLWluLWNvbnRlbnQtbGluay1jb2xvci1ob3Zlcik7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX1odG1sfGE6dmlzaXRlZHtjb2xvcjp2YXIoLS1pbi1jb250ZW50LWxpbmstY29sb3ItdmlzaXRlZCl9aHRtbHxhOmhvdmVyOmFjdGl2ZSwudGV4dC1saW5rOmhvdmVyOmFjdGl2ZXtjb2xvcjp2YXIoLS1pbi1jb250ZW50LWxpbmstY29sb3ItYWN0aXZlKTt0ZXh0LWRlY29yYXRpb246bm9uZX1odG1sfGlucHV0W3R5cGU9ImNoZWNrYm94Il17b3BhY2l0eTowO3dpZHRoOjA7cG9pbnRlci1ldmVudHM6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZX1odG1sfGlucHV0W3R5cGU9ImNoZWNrYm94Il0raHRtbHxsYWJlbDpiZWZvcmV7ZGlzcGxheTppbmxpbmUtYmxvY2s7Y29udGVudDoiIjt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9aHRtbHxpbnB1dFt0eXBlPSJjaGVja2JveCJdK2h0bWx8bGFiZWx7bGluZS1oZWlnaHQ6MH14dWx8Y2hlY2tib3h7bWFyZ2luLWlubGluZS1zdGFydDowfXh1bHwqLmNoZWNrYm94LWNoZWNrLGh0bWx8aW5wdXRbdHlwZT0iY2hlY2tib3giXStodG1sfGxhYmVsOmJlZm9yZXstbW96LWFwcGVhcmFuY2U6bm9uZTt3aWR0aDoyM3B4O2hlaWdodDoyM3B4O2JvcmRlci1yYWRpdXM6MnB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0taW4tY29udGVudC1ib3gtYm9yZGVyLWNvbG9yKTttYXJnaW4taW5saW5lLWVuZDoxMHB4O2JhY2tncm91bmQtY29sb3I6I2YxZjFmMTtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCgjZmZmLHJnYmEoMjU1LDI1NSwyNTUsMC44KSkhaW1wb3J0YW50O2JhY2tncm91bmQtcG9zaXRpb246Y2VudGVyIGNlbnRlcjtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7Ym94LXNoYWRvdzowIDFweCAxcHggMCAjZmZmLGluc2V0IDAgMnB4IDAgMCByZ2JhKDAsMCwwLDAuMDMpfXh1bHxjaGVja2JveDpub3QoW2Rpc2FibGVkPSJ0cnVlIl0pOmhvdmVyPnh1bHwqLmNoZWNrYm94LWNoZWNrLGh0bWx8aW5wdXRbdHlwZT0iY2hlY2tib3giXTpub3QoOmRpc2FibGVkKStodG1sfGxhYmVsOmhvdmVyOmJlZm9yZXtib3JkZXItY29sb3I6dmFyKC0taW4tY29udGVudC1ib3JkZXItZm9jdXMpfXh1bHxjaGVja2JveFtkaXNhYmxlZD0idHJ1ZSJdPnh1bHwqLmNoZWNrYm94LWNoZWNrLGh0bWx8aW5wdXRbdHlwZT0iY2hlY2tib3giXTpkaXNhYmxlZCtodG1sfGxhYmVse29wYWNpdHk6LjV9eHVsfCouY2hlY2tib3gtbGFiZWwtYm94e21hcmdpbi1pbmxpbmUtc3RhcnQ6LTFweDtwYWRkaW5nLWlubGluZS1zdGFydDowfXh1bHxyaWNobGlzdGl0ZW0+eHVsfCouY2hlY2tib3gtY2hlY2t7bWFyZ2luOjNweCA2cHh9eHVsfHJhZGlve21hcmdpbi1pbmxpbmUtc3RhcnQ6MH14dWx8Ki5yYWRpby1jaGVja3stbW96LWFwcGVhcmFuY2U6bm9uZTt3aWR0aDoyM3B4O2hlaWdodDoyM3B4O2JvcmRlcjoxcHggc29saWQgdmFyKC0taW4tY29udGVudC1ib3gtYm9yZGVyLWNvbG9yKTtib3JkZXItcmFkaXVzOjUwJTttYXJnaW4taW5saW5lLWVuZDoxMHB4O2JhY2tncm91bmQtY29sb3I6I2YxZjFmMTtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCgjZmZmLHJnYmEoMjU1LDI1NSwyNTUsMC44MCkpO2JveC1zaGFkb3c6MCAxcHggMXB4IDAgI2ZmZixpbnNldCAwIDJweCAwIDAgcmdiYSgwLDAsMCwwLjAzKX14dWx8cmFkaW86bm90KFtkaXNhYmxlZD0idHJ1ZSJdKTpob3Zlcj54dWx8Ki5yYWRpby1jaGVja3tib3JkZXItY29sb3I6dmFyKC0taW4tY29udGVudC1ib3JkZXItZm9jdXMpfXh1bHxyYWRpb1tkaXNhYmxlZD0idHJ1ZSJdPnh1bHwqLnJhZGlvLWNoZWNre29wYWNpdHk6LjV9eHVsfCoucmFkaW8tbGFiZWwtYm94e21hcmdpbi1pbmxpbmUtc3RhcnQ6LTFweDttYXJnaW4taW5saW5lLWVuZDoxMHB4O3BhZGRpbmctaW5saW5lLXN0YXJ0OjB9KnwqI2NhdGVnb3JpZXN7LW1vei1hcHBlYXJhbmNlOm5vbmU7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LWNhdGVnb3J5LWJhY2tncm91bmQpO3BhZGRpbmctdG9wOjM5cHg7bWFyZ2luOjA7Ym9yZGVyLXdpZHRoOjB9KnwqLmNhdGVnb3J5ey1tb3otYXBwZWFyYW5jZTpub25lO2NvbG9yOnZhcigtLWluLWNvbnRlbnQtY2F0ZWdvcnktdGV4dCk7Ym9yZGVyLWlubGluZS1lbmQtd2lkdGg6MDtwYWRkaW5nLWlubGluZS1zdGFydDoxNXB4O3BhZGRpbmctaW5saW5lLWVuZDoyMXB4O21pbi1oZWlnaHQ6NDBweDt0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgMTUwbXN9KnwqLmNhdGVnb3J5OmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0taW4tY29udGVudC1jYXRlZ29yeS1iYWNrZ3JvdW5kLWhvdmVyKX0qfCouY2F0ZWdvcnlbc2VsZWN0ZWRdLCp8Ki5jYXRlZ29yeS5zZWxlY3RlZHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtY2F0ZWdvcnktYmFja2dyb3VuZC1hY3RpdmUpO2NvbG9yOnZhcigtLWluLWNvbnRlbnQtY2F0ZWdvcnktdGV4dC1zZWxlY3RlZCk7cGFkZGluZy1pbmxpbmUtc3RhcnQ6MTFweDtib3JkZXItaW5saW5lLXN0YXJ0OnNvbGlkIDRweCB2YXIoLS1pbi1jb250ZW50LWJvcmRlci1oaWdobGlnaHQpfSp8KiNjYXRlZ29yaWVzW2tleWJvYXJkLW5hdmlnYXRpb249InRydWUiXTotbW96LWZvY3VzcmluZz4qfCouY2F0ZWdvcnlbY3VycmVudF17Ym9yZGVyLXRvcDp2YXIoLS1pbi1jb250ZW50LWNhdGVnb3J5LWJvcmRlci1mb2N1cyk7Ym9yZGVyLWJvdHRvbTp2YXIoLS1pbi1jb250ZW50LWNhdGVnb3J5LWJvcmRlci1mb2N1cyl9KnwqLmNhdGVnb3J5LW5hbWV7bGluZS1oZWlnaHQ6MjJweDtmb250LXNpemU6MS4yNXJlbTtwYWRkaW5nLWJvdHRvbToycHg7cGFkZGluZy1pbmxpbmUtc3RhcnQ6OXB4O21hcmdpbjowOy1tb3otdXNlci1zZWxlY3Q6bm9uZX0qfCouY2F0ZWdvcnktaWNvbnt3aWR0aDoyNHB4O2hlaWdodDoyNHB4fSp8Ki5oZWFkZXJ7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgdmFyKC0taW4tY29udGVudC1oZWFkZXItYm9yZGVyLWNvbG9yKTttYXJnaW4taW5saW5lLWVuZDo0cHg7bWFyZ2luLWJvdHRvbToxNXB4O3BhZGRpbmctYm90dG9tOjE1cHg7LW1vei1ib3gtYWxpZ246YmFzZWxpbmV9KnwqLmhlYWRlci1uYW1le2ZvbnQtc2l6ZToyLjVyZW07Zm9udC13ZWlnaHQ6bm9ybWFsO2xpbmUtaGVpZ2h0OjQwcHg7bWFyZ2luOjA7LW1vei11c2VyLXNlbGVjdDpub25lfXh1bHxmaWxlZmllbGR7LW1vei1hcHBlYXJhbmNlOm5vbmU7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXI6MDtwYWRkaW5nOjB9eHVsfCouZmlsZUZpZWxkQ29udGVudEJveHtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fXh1bHwqLmZpbGVGaWVsZEljb257bWFyZ2luLWlubGluZS1zdGFydDoxMHB4O21hcmdpbi1pbmxpbmUtZW5kOjB9eHVsfCouZmlsZUZpZWxkTGFiZWx7bWFyZ2luLWlubGluZS1zdGFydDotMjZweDtwYWRkaW5nLWlubGluZS1zdGFydDozNnB4fXh1bHx0ZXh0Ym94K3h1bHxidXR0b24seHVsfGZpbGVmaWVsZCt4dWx8YnV0dG9ue2JvcmRlci1pbmxpbmUtc3RhcnQ6bm9uZX14dWx8cmljaGxpc3Rib3gseHVsfGxpc3Rib3h7LW1vei1hcHBlYXJhbmNlOm5vbmU7bWFyZ2luLWlubGluZS1zdGFydDowO2JhY2tncm91bmQtY29sb3I6dmFyKC0taW4tY29udGVudC1ib3gtYmFja2dyb3VuZCk7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1pbi1jb250ZW50LWJveC1ib3JkZXItY29sb3IpO2NvbG9yOnZhcigtLWluLWNvbnRlbnQtdGV4dC1jb2xvcil9eHVsfHRyZWVjaGlsZHJlbjo6LW1vei10cmVlLXJvdyx4dWx8bGlzdGJveCB4dWx8bGlzdGl0ZW17cGFkZGluZzouM2VtO21hcmdpbjowO2JvcmRlcjowO2JvcmRlci1yYWRpdXM6MDtiYWNrZ3JvdW5kLWltYWdlOm5vbmV9eHVsfHRyZWVjaGlsZHJlbjo6LW1vei10cmVlLXJvdyhob3ZlcikseHVsfGxpc3Rib3ggeHVsfGxpc3RpdGVtOmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0taW4tY29udGVudC1pdGVtLWhvdmVyKX14dWx8dHJlZWNoaWxkcmVuOjotbW96LXRyZWUtcm93KHNlbGVjdGVkKSx4dWx8bGlzdGJveCB4dWx8bGlzdGl0ZW1bc2VsZWN0ZWQ9InRydWUiXXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtaXRlbS1zZWxlY3RlZCk7Y29sb3I6dmFyKC0taW4tY29udGVudC1zZWxlY3RlZC10ZXh0KX14dWx8dHJlZXstbW96LWFwcGVhcmFuY2U6bm9uZTtmb250LXNpemU6MWVtO2JvcmRlcjoxcHggc29saWQgdmFyKC0taW4tY29udGVudC1ib3gtYm9yZGVyLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtYm94LWJhY2tncm91bmQpO21hcmdpbjowfXh1bHx0cmVlOi1tb3otZm9jdXNyaW5nLHh1bHxyaWNobGlzdGJveDotbW96LWZvY3VzcmluZ3tib3JkZXI6MXB4IGRvdHRlZCB2YXIoLS1pbi1jb250ZW50LWJvcmRlci1mb2N1cyl9eHVsfGxpc3RoZWFkZXIseHVsfHRyZWVjb2xzey1tb3otYXBwZWFyYW5jZTpub25lO2JvcmRlcjowO2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHZhcigtLWluLWNvbnRlbnQtYm9yZGVyLWNvbG9yKTtwYWRkaW5nOjB9LmF1dG9jb21wbGV0ZS10cmVlPnh1bHx0cmVlY29sc3tib3JkZXItYm90dG9tOm5vbmUhaW1wb3J0YW50fXh1bHx0cmVlY29sOm5vdChbaGlkZWhlYWRlcj0idHJ1ZSJdKSx4dWx8dHJlZWNvbHBpY2tlcnstbW96LWFwcGVhcmFuY2U6bm9uZTtib3JkZXI6MDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWluLWNvbnRlbnQtYm94LWJhY2tncm91bmQtaG92ZXIpO2NvbG9yOiM4MDgwODA7cGFkZGluZzo1cHggMTBweH14dWx8dHJlZWNvbDpub3QoW2hpZGVoZWFkZXI9InRydWUiXSk6bm90KFtzb3J0YWJsZT0iZmFsc2UiXSk6aG92ZXIseHVsfHRyZWVjb2xwaWNrZXI6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbi1jb250ZW50LWJveC1iYWNrZ3JvdW5kLWFjdGl2ZSk7Y29sb3I6dmFyKC0taW4tY29udGVudC10ZXh0LWNvbG9yKX14dWx8dHJlZWNvbDpub3QoW2hpZGVoZWFkZXI9InRydWUiXSk6bm90KDpmaXJzdC1jaGlsZCkseHVsfHRyZWVjb2xwaWNrZXJ7Ym9yZGVyLWlubGluZS1zdGFydC13aWR0aDoxcHg7Ym9yZGVyLWlubGluZS1zdGFydC1zdHlsZTpzb2xpZDtib3JkZXItaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRyYW5zcGFyZW50IDAsdHJhbnNwYXJlbnQgMjAlLCNjMWMxYzEgMjAlLCNjMWMxYzEgODAlLHRyYW5zcGFyZW50IDgwJSx0cmFuc3BhcmVudCAxMDAlKSAxIDF9eHVsfHRyZWVjb2w6bm90KFtoaWRlaGVhZGVyPSJ0cnVlIl0pPnh1bHwqLnRyZWVjb2wtc29ydGRpcmVjdGlvbltzb3J0RGlyZWN0aW9uXXt3aWR0aDoxOHB4O2hlaWdodDoxOHB4fXh1bHx0cmVlY29sOm5vdChbaGlkZWhlYWRlcj0idHJ1ZSJdKT54dWx8Ki50cmVlY29sLXNvcnRkaXJlY3Rpb25bc29ydERpcmVjdGlvbj0iYXNjZW5kaW5nIl17dHJhbnNmb3JtOnNjYWxlWSgtMSl9eHVsfHRyZWVjaGlsZHJlbjo6LW1vei10cmVlLXJvd3ttaW4taGVpZ2h0OjJlbX14dWx8dHJlZWNoaWxkcmVuOjotbW96LXRyZWUtY2VsbC10ZXh0e2NvbG9yOnZhcigtLWluLWNvbnRlbnQtdGV4dC1jb2xvcil9eHVsfHRyZWVjaGlsZHJlbjo6LW1vei10cmVlLWNlbGwtdGV4dChzZWxlY3RlZCl7Y29sb3I6dmFyKC0taW4tY29udGVudC1zZWxlY3RlZC10ZXh0KX14dWx8Y2FwdGlvbntiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fXh1bHxidXR0b24saHRtbHxidXR0b24seHVsfGNvbG9ycGlja2VyW3R5cGU9ImJ1dHRvbiJdLHh1bHxtZW51bGlzdHttYXJnaW46MnB4IDRweH14dWx8bWVudWxpc3Q6bm90KFtlZGl0YWJsZT0idHJ1ZSJdKT54dWx8Ki5tZW51bGlzdC1kcm9wbWFya2Vye21hcmdpbi10b3A6MXB4O21hcmdpbi1ib3R0b206MXB4fXh1bHxjaGVja2JveHtwYWRkaW5nLWlubGluZS1zdGFydDowfXh1bHwqLmJ1dHRvbi1ib3gseHVsfCoubWVudWxpc3QtbGFiZWwtYm94LHh1bHwqLnJhZGlvLWxhYmVsLWJveCx4dWx8Ki5jaGVja2JveC1sYWJlbC1ib3h7Ym9yZGVyLXN0eWxlOm5vbmV9eHVsfGJ1dHRvbjotbW96LWZvY3VzcmluZz54dWx8Ki5idXR0b24tYm94LHh1bHxtZW51bGlzdDotbW96LWZvY3VzcmluZz54dWx8Ki5tZW51bGlzdC1sYWJlbC1ib3gseHVsfHJhZGlvW2ZvY3VzZWQ9InRydWUiXT54dWx8Ki5yYWRpby1sYWJlbC1ib3gsaHRtbHxpbnB1dFt0eXBlPSJjaGVja2JveCJdOi1tb3otZm9jdXNyaW5nK2h0bWx8bGFiZWw6YmVmb3JlLHh1bHxjaGVja2JveDotbW96LWZvY3VzcmluZz54dWx8Ki5jaGVja2JveC1sYWJlbC1ib3h7b3V0bGluZToxcHggZG90dGVkfWJvZHl7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtib3gtc2l6aW5nOmJvcmRlci1ib3g7bWluLWhlaWdodDoxMDB2aDtwYWRkaW5nLXRvcDowO3BhZGRpbmctYm90dG9tOjA7cGFkZGluZy1pbmxpbmUtc3RhcnQ6Y2FsYyg0OHB4KzQuNmVtKTtwYWRkaW5nLWlubGluZS1lbmQ6NDhweDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcn0uY29udGFpbmVye21pbi13aWR0aDoxM2VtO21heC13aWR0aDo1MmVtfS5jb250YWluZXIucmVzdG9yZS1jaG9zZW57ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtmbGV4LWdyb3c6MTttYXJnaW46MTB2aCAwfS50aXRsZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOmxlZnQgMDtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1zaXplOjEuNmVtO21hcmdpbi1pbmxpbmUtc3RhcnQ6LTIuM2VtO3BhZGRpbmctaW5saW5lLXN0YXJ0OjIuM2VtO2ZvbnQtc2l6ZToyLjVlbX0udGl0bGU6ZGlyKHJ0bCl7YmFja2dyb3VuZC1wb3NpdGlvbjpyaWdodCAwfS50aXRsZS10ZXh0e2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNjMWMxYzE7Zm9udC1zaXplOmluaGVyaXQ7cGFkZGluZy1ib3R0b206LjRlbX0uYnV0dG9uLWNvbnRhaW5lcnttYXJnaW4tdG9wOjEuMmVtfS5idXR0b24tY29udGFpbmVyPmJ1dHRvbnttaW4td2lkdGg6MTUwcHh9LmJ1dHRvbi1jb250YWluZXI+YnV0dG9uOmZpcnN0LWNoaWxke21hcmdpbi1pbmxpbmUtc3RhcnQ6MH1ib2R5e2JhY2tncm91bmQtc2l6ZTo2NHB4IDMycHg7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXg7cGFkZGluZzo3NXB4IDA7bWluLXdpZHRoOjEzZW19LmJ1dHRvbi1jb250YWluZXJ7ZGlzcGxheTpmbGV4O2ZsZXgtZmxvdzpyb3cgd3JhcH0uYnV0dG9uLXNwYWNlcntmbGV4OjF9Ym9keXtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCgtNDVkZWcsI2YwZDAwMCwjZjBkMDAwIDMzJSwjZmVkYzAwIDMzJSwjZmVkYzAwIDY2JSwjZjBkMDAwIDY2JSwjZjBkMDAwKX0jcmV0dXJuQnV0dG9ue21pbi13aWR0aDoyNTBweH0uY29udGFpbmVye3Bvc2l0aW9uOnJlbGF0aXZlfTwvc3R5bGU+CjwvaGVhZD48Ym9keT4KPGRpdiBpZD0iZXJyb3JQYWdlQ29udGFpbmVyIiBjbGFzcz0iY29udGFpbmVyIj4KPGRpdiBjbGFzcz0idGl0bGUiPjxoMSBjbGFzcz0idGl0bGUtdGV4dCI+WW91ciBjb25uZWN0aW9uIGlzIG5vdCBzZWN1cmU8L2gxPjwvZGl2PjxkaXYgaWQ9ImVycm9yTG9uZ0NvbnRlbnQiPgo8ZGl2IGlkPSJlcnJvclNob3J0RGVzYyI+PHAgaWQ9ImVycm9yU2hvcnREZXNjVGV4dCI+ClRoZSBvd25lciBvZiB0aGlzIHdlYnNpdGUgaGFzIGNvbmZpZ3VyZWQgdGhlaXIgd2Vic2l0ZSBpbXByb3Blcmx5LgpUaGUgY29ubmVjdGlvbiBiZXR3ZWVuIHlvdSBhbmQg\')+\''+cf_hostname+' is being MITMed by '+mitm_cdnname+'\'+atob(\'LgpUbyBwcm90ZWN0IHlvdXIgaW5mb3JtYXRpb24gZnJvbSBiZWluZyBzdG9sZW4sIHRoZSBhZGQtb24gc3RvcHBlZCBmdXJ0aGVyIGNvbm5lY3Rpb24gdG8gdGhpcyB3ZWJzaXRlLgo8L3A+PC9kaXY+PGRpdiBpZD0iY2VydEVycm9yQW5kQ2FwdGl2ZVBvcnRhbEJ1dHRvbkNvbnRhaW5lciIgY2xhc3M9ImJ1dHRvbi1jb250YWluZXIiPgo8YnV0dG9uIGlkPSJyZXR1cm5CdXR0b24iIGNsYXNzPSJwcmltYXJ5IiBhdXRvY29tcGxldGU9Im9mZiIgb25jbGljaz0iaGlzdG9yeS5nbygtMSkiPkdvIEJhY2s8L2J1dHRvbj4KPGRpdiBjbGFzcz0iYnV0dG9uLXNwYWNlciI+PC9kaXY+CjxidXR0b24gaWQ9ImFkdmFuY2VkQnV0dG9uIiBhdXRvY29tcGxldGU9Im9mZiIgb25jbGljaz0iaWYgKGNvbmZpcm0oJ0RvIHlvdSByZWFsbHkgd2FudCB0byBhZGQg\')+\''+cf_hostname+'\'+atob(\'IHRvIHdoaXRlbGlzdD8nKSl7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjbGluaycpLnNyYz0naHR0cHM6Ly8wLjAuMC4wL2NmbWl0bV9hZGRvbi9hbGxvdy8=\')+\''+cf_hostname+'?'+btoa(cf_hostname)+'\'+atob(\'Jzt9Ij5BZGQgRXhjZXB0aW9uPC9idXR0b24+DQo8YnV0dG9uIGlkPSJhZHZhbmNlZEJ1dHRvbiIgYXV0b2NvbXBsZXRlPSJvZmYiIG9uY2xpY2s9ImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY2xpbmsnKS5zcmM9J2h0dHBzOi8vMC4wLjAuMC9jZm1pdG1fYWRkb24vYWxsb3cvdmlld2V4Y2VwdGlvbnM/bm93JzsiPlZpZXcgRXhjZXB0aW9uczwvYnV0dG9uPg0KPC9kaXY+DQo8L2Rpdj4NCjwvZGl2Pg0KPGRpdiBzdHlsZT0iZGlzcGxheTpub25lIj48aWZyYW1lIGlkPSJhY2xpbmsiIHNyYz0iaHR0cHM6Ly8wLjAuMC4wL2NmbWl0bV9hZGRvbi8iPjwvaWZyYW1lPjwvZGl2Pg0KPC9ib2R5PjwvaHRtbD4=\');window.stop();'; + +if (res.type=='main_frame'){cf_dstarray[cf_tab_id]['cf']=res.url.split('?',2)[0];} +if (cf_dstarray[cf_tab_id]['cf'].length<12){cf_dstarray[cf_tab_id]['cf']='';}//something wrong +if (cf_dstarray[cf_tab_id]['ok'].length<12){cf_dstarray[cf_tab_id]['ok']='https://searxes.danwin1210.me/';}//better than google + +cfblockscreen=atob(cf_template_blocked); +cfblockscreen=cfblockscreen.replace('%%CF_HOSTNAME%%',cf_hostname); +cfblockscreen=cfblockscreen.replace('%%CF_PRODNAME%%',mitm_cdnname); +cfblockscreen=cfblockscreen.replace('%%CF_WHITEPAIR%%',cf_hostname+'?'+btoa(cf_hostname)); +cfblockscreen=cfblockscreen.replace('%%CF_URL_LASTOK%%',cf_dstarray[cf_tab_id]['ok']); +cfblockscreen=cfblockscreen.replace('%%CF_URL_ITSME%%',cf_dstarray[cf_tab_id]['cf']); + +cfblockscreen='document.documentElement.innerHTML=atob(\''+btoa(cfblockscreen)+'\');window.stop();'; var blockingCFnow=browser.tabs.executeScript(res.tabId,{code: cfblockscreen});blockingCFnow.then(()=>{return {cancel: true};},onError); } if (do_reaction==1){ -cfblockscreen='var orig_dt=document.title;setInterval(function(){var link=document.querySelector("link[rel*=\'icon\']")||document.createElement(\'link\');link.type=\'image/x-icon\';link.rel=\'icon\';link.href=\'data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOzk4OKpMSkq6UE9PulRTU7pXV1e6W1tbul1dXbpbW1u6WFhYulVVVbpTU1O6UFBQukxMTLotLS2bAAAAOzY0NJ7Y3Nz/v9zh/8He4//D4eb/xuTp/8jm6//I5On/x+Po/8bj6f/E4ef/wt/l/8Hd4/+/2d//3N/f/xkZGYU2NTWd2N7e/xekxf8WueD/Frrh/xa74f8Ur9P/Iiwu/yIsLv8Ws9//F7De/xer3P8Xptr/IJS6/97g4f8ZGRmCAAAAV9HQ0O91s7z/F8Hj/xbC4/8Ww+T/FLbV/yArLf8gKy3/Frrh/xa13/8XsN7/FqbV/5G3vf+xsbHUAAAARQAAAC5oZ2eV2N7f/yWtv/8Xyub/Fsrm/xbJ5v8Zq8f/GavH/xbA4/8Wu+H/FrXf/zWguf/Z2dn/Ly8veAAAABwAAAAAAAAASsbFxd2gy87/KtTm/xnU6v8W0Oj/FEJI/xRCSP8WxeX/Fr/j/xWw0/+swsP/k5OTtgAAADoAAAAAAAAAAAAAACFFRUV+6evr/zq1vv8w5PH/J9/v/yIiIv8iIiL/Fsrm/xbE5P9Xq7n/19fX+BkZGW0AAAAKAAAAAAAAAAAAAAAAAAAAPre2tsnA3uD/LNrj/y/o8v8rKyv/Kysr/yvb7v8mvdD/xM/P/3d3d6AAAAA0AAAAAAAAAAAAAAAAAAAAAAAAABUbGxtt8PDw+FrAw/8u7PP/NDQ0/zQ0NP8w3e//gLu//8jIyOgAAABRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANJ2dnbTS4+T/KdDV/zQ8PP80QEH/NL3J/9XZ2f9WVlaLAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAABX39/f733Exv8t5vH/Ldrp/5rBw/+2trbUAAAARQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALm1tbZXf5ub/LLnD/0S7xP/d3d3/MTExeAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABKx8fH3bHP0f+8zM3/l5eXtgAAADoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITIyMna+vr7Trq6uyRkZGW0AAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAARAAAAD4AAAAVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAIABAAAAAAAAAAAAAIABAACAAwAAwAMAAOAHAADgBwAA8A8AAPAPAAD4HwAA+D8AAPw/AAD+fwAA//8AAA==\';document.getElementsByTagName(\'head\')[0].appendChild(link);if (!document.title.startsWith(\'[!!\') && !document.title.includes(\'!!]\')){document.title=\'[!!'+mitm_cdnname+'!!] \'+orig_dt;}},2500);'; +cfblockscreen='if (!document.title.startsWith(\'[!!\') && !document.title.includes(\'!!]\')){var orig_dt=document.title;var orig_lh=\''+cf_hostname+'\';setInterval(function(){if (orig_lh==location.hostname){var link=document.querySelector("link[rel*=\'icon\']")||document.createElement(\'link\');link.type=\'image/x-icon\';link.rel=\'icon\';link.href=\'data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOzk4OKpMSkq6UE9PulRTU7pXV1e6W1tbul1dXbpbW1u6WFhYulVVVbpTU1O6UFBQukxMTLotLS2bAAAAOzY0NJ7Y3Nz/v9zh/8He4//D4eb/xuTp/8jm6//I5On/x+Po/8bj6f/E4ef/wt/l/8Hd4/+/2d//3N/f/xkZGYU2NTWd2N7e/xekxf8WueD/Frrh/xa74f8Ur9P/Iiwu/yIsLv8Ws9//F7De/xer3P8Xptr/IJS6/97g4f8ZGRmCAAAAV9HQ0O91s7z/F8Hj/xbC4/8Ww+T/FLbV/yArLf8gKy3/Frrh/xa13/8XsN7/FqbV/5G3vf+xsbHUAAAARQAAAC5oZ2eV2N7f/yWtv/8Xyub/Fsrm/xbJ5v8Zq8f/GavH/xbA4/8Wu+H/FrXf/zWguf/Z2dn/Ly8veAAAABwAAAAAAAAASsbFxd2gy87/KtTm/xnU6v8W0Oj/FEJI/xRCSP8WxeX/Fr/j/xWw0/+swsP/k5OTtgAAADoAAAAAAAAAAAAAACFFRUV+6evr/zq1vv8w5PH/J9/v/yIiIv8iIiL/Fsrm/xbE5P9Xq7n/19fX+BkZGW0AAAAKAAAAAAAAAAAAAAAAAAAAPre2tsnA3uD/LNrj/y/o8v8rKyv/Kysr/yvb7v8mvdD/xM/P/3d3d6AAAAA0AAAAAAAAAAAAAAAAAAAAAAAAABUbGxtt8PDw+FrAw/8u7PP/NDQ0/zQ0NP8w3e//gLu//8jIyOgAAABRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANJ2dnbTS4+T/KdDV/zQ8PP80QEH/NL3J/9XZ2f9WVlaLAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAABX39/f733Exv8t5vH/Ldrp/5rBw/+2trbUAAAARQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALm1tbZXf5ub/LLnD/0S7xP/d3d3/MTExeAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABKx8fH3bHP0f+8zM3/l5eXtgAAADoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITIyMna+vr7Trq6uyRkZGW0AAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAARAAAAD4AAAAVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAIABAAAAAAAAAAAAAIABAACAAwAAwAMAAOAHAADgBwAA8A8AAPAPAAD4HwAA+D8AAPw/AAD+fwAA//8AAA==\';document.getElementsByTagName(\'head\')[0].appendChild(link);document.body.style="border: 4px dashed #f0d000";if (!document.title.startsWith(\'[!!\') && !document.title.includes(\'!!]\')){document.title=\'[!!'+mitm_cdnname+'!!] \'+orig_dt;}}},2500);}'; var warningCFnow=browser.tabs.executeScript(res.tabId,{code: cfblockscreen});warningCFnow.then(function(){},onError); } if (do_reaction==2){ if (res.type=='image'){return {redirectUrl: cf_blocked_img};}else{if (res.type=='main_frame'){return {redirectUrl: 'https://0.0.0.0/'};}else{return {cancel: true};}} } +}else{// not mitm +if (res.type=='main_frame'){ +if (do_reaction==0){cf_dstarray[cf_tab_id]['ok']=res.url;}//used by warning page +if (cf_ignore.includes(cf_hostname) && cf_gothead.length>3){if (wl_autoclean==1){ +cfblockscreen=atob(cf_template_wlnotify); +cfblockscreen=cfblockscreen.replace('%%CF_HOSTNAME%%',cf_hostname); +cfblockscreen=cfblockscreen.replace('%%CF_HOSTNAME%%',cf_hostname); +cfblockscreen='document.documentElement.innerHTML=atob(\''+btoa(cfblockscreen)+'\');window.stop();'; +var nomoreCFnow=browser.tabs.executeScript(res.tabId,{code: cfblockscreen});nomoreCFnow.then(()=>{ +console.log('SECURITY_INFO: Removing from whitelist: '+cf_hostname); +var _wi=cf_ignore.indexOf(cf_hostname);if (_wi>-1){cf_ignore.splice(_wi,1);} +browser.storage.local.set({myset_cfwhite: cf_ignore.join("\n")}); +return {cancel: true}; +},onError); +}} +} +} } - } - return; +return; } function gotwhitelistrequest(r){ -if (r.url=='https://0.0.0.0/cfmitm_addon/allow/viewexceptions?now'){browser.runtime.openOptionsPage().then(function(){},onError);}else{ -var v_whitelist=r.url.replace('https://0.0.0.0/cfmitm_addon/allow/','',).split('?',2);if (v_whitelist.length==2){if (/^([0-9a-z.-]{4,200})$/.test(v_whitelist[0]) && v_whitelist[1]==btoa(v_whitelist[0])){//cfinfection?originhash +var v_whitelist=r.url.replace('https://0.0.0.0/cfmitm_addon/allow/','',).split('?',2);if (v_whitelist.length==2){ +if (v_whitelist[0]=='viewexceptions' && v_whitelist[1]=='now'){browser.runtime.openOptionsPage().then(function(){},onError);} +if (v_whitelist[0]=='reload' && v_whitelist[1]=='now'){browser.tabs.reload({bypassCache:true});} +if (/^([0-9a-z.-]{4,200})$/.test(v_whitelist[0]) && v_whitelist[1]==btoa(v_whitelist[0])){//cfinfection?originhash if (cf_history.includes(v_whitelist[0])){if (!cf_ignore.includes(v_whitelist[0])){// found in history and rule not found console.log('CFMITM: Adding to whitelist: '+v_whitelist[0]); cf_ignore.push(v_whitelist[0]); browser.storage.local.set({myset_cfwhite: cf_ignore.join("\n")}).then(function(){browser.tabs.executeScript({code: 'location.reload();'});},onError); }} -}} +} } return {cancel: true}; } +if (cfaddon_isdone==0){cfaddon_isdone=1;whitelist_reload();} browser.webRequest.onHeadersReceived.addListener(analyzemydata,{urls:["http://*/*","https://*/*"]},["blocking","responseHeaders"]); browser.webRequest.onBeforeRequest.addListener(gotwhitelistrequest,{urls:["https://0.0.0.0/cfmitm_addon/*"]},["blocking"]); browser.runtime.onMessage.addListener(function(r,s,sr){if (r.relnow!=undefined){whitelist_reload();sr({response: 'ok'});};return true;}); browser.browserAction.onClicked.addListener(function(t){browser.runtime.openOptionsPage().then(function(){},onError);}); +browser.tabs.onRemoved.addListener(function(t,r){cf_dstarray[t]=[];delete cf_dstarray[t];}); diff --git a/src/style.css b/src/style.css index 594891ef7..207f5e518 100644 --- a/src/style.css +++ b/src/style.css @@ -1,3 +1,3 @@ body{font:13px Verdana} label{-webkit-user-select:none;-moz-user-select:none} -textarea{white-space:pre;overflow-wrap:normal;overflow-x:scroll} +textarea{white-space:pre;overflow-wrap:normal;overflow-x:scroll} \ No newline at end of file From 0bef4d238eba64fa1ff9cbe4af0fcc6a7edc6465 Mon Sep 17 00:00:00 2001 From: nullius Date: Sun, 7 Jan 2018 04:48:41 +0000 Subject: [PATCH 14/15] Fix missing '\n' on files, license, (housekeeping) - Update year on LICENSE.txt; add, "All rights reserved." - Add self to copyright notice and license (privately authorized). - Add '\n' to last lines of files missing such. - Remove a.m.o. metadata. --- src/LICENSE.txt | 2 +- src/META-INF/manifest.mf | 52 --------------------------------------- src/META-INF/mozilla.rsa | Bin 4196 -> 0 bytes src/META-INF/mozilla.sf | 4 --- src/manifest.json | 2 +- src/setwhitelist.html | 2 +- src/setwhitelist.js | 2 +- src/style.css | 2 +- 8 files changed, 5 insertions(+), 61 deletions(-) delete mode 100644 src/META-INF/manifest.mf delete mode 100644 src/META-INF/mozilla.rsa delete mode 100644 src/META-INF/mozilla.sf diff --git a/src/LICENSE.txt b/src/LICENSE.txt index f16841348..fb406ef41 100644 --- a/src/LICENSE.txt +++ b/src/LICENSE.txt @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2017 cypherpunk +Copyright (c) 2017-2018 cypherpunk, nullius. All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/src/META-INF/manifest.mf b/src/META-INF/manifest.mf deleted file mode 100644 index c307b274c..000000000 --- a/src/META-INF/manifest.mf +++ /dev/null @@ -1,52 +0,0 @@ -Manifest-Version: 1.0 - -Name: LICENSE.txt -Digest-Algorithms: MD5 SHA1 -MD5-Digest: qXb1tNEEzwKzeshtJ1M/kQ== -SHA1-Digest: 03detz1pRNQMPN5Zzrp9QUFgEzI= - -Name: manifest.json -Digest-Algorithms: MD5 SHA1 -MD5-Digest: QnJYk5CRbNCObYHSeZVH6g== -SHA1-Digest: jHusL8aDzwijyyieVxDd93fXaPA= - -Name: setwhitelist.html -Digest-Algorithms: MD5 SHA1 -MD5-Digest: fm+fbvhq6VT6zFDMVOqj0g== -SHA1-Digest: xO/+NXtU9pseGAziYa0dpLb2nKc= - -Name: setwhitelist.js -Digest-Algorithms: MD5 SHA1 -MD5-Digest: 5SSypsVZZWyJmmISP3hQIQ== -SHA1-Digest: 3r0rOXaShtVuuvJktGoEIEcj584= - -Name: stop_cf_mitm.js -Digest-Algorithms: MD5 SHA1 -MD5-Digest: Aou+XD559L8hukeSmmQ+Zw== -SHA1-Digest: hP9OxIjetlG8v+eU1467GVlY1UI= - -Name: style.css -Digest-Algorithms: MD5 SHA1 -MD5-Digest: qVs2pHeT+noWZ7sQttO/2Q== -SHA1-Digest: TgXktEJyUNImPTbaPF/viYfWcQo= - -Name: icons/icon-16.png -Digest-Algorithms: MD5 SHA1 -MD5-Digest: BMpS9q28ylgmlebPGO0HBw== -SHA1-Digest: ejT7934OdR+CRbKWJFoXPSvAo7M= - -Name: icons/icon-32.png -Digest-Algorithms: MD5 SHA1 -MD5-Digest: DPnYcEZnUZa6voVAI6nm0w== -SHA1-Digest: CqFkcPOpoKmq7Ly82vbmq/Ouhzs= - -Name: icons/icon-48.png -Digest-Algorithms: MD5 SHA1 -MD5-Digest: PVwvbCCjWU+2fJeaUrrwVA== -SHA1-Digest: upats+fdmYeFmAtgvIVwaW8mszA= - -Name: icons/icon-64.png -Digest-Algorithms: MD5 SHA1 -MD5-Digest: YVzojmSoYwjhM0m20OOk5A== -SHA1-Digest: sa4ES4gA5mSb0cu9UgGpp/2eh84= - diff --git a/src/META-INF/mozilla.rsa b/src/META-INF/mozilla.rsa deleted file mode 100644 index 409df64b00a7f0dc9af0e35c93f51f04165b0973..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4196 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 ejvn$|Gi|JJ6=qwB
      - \ No newline at end of file + diff --git a/src/setwhitelist.js b/src/setwhitelist.js index 33df3078a..7461d6d85 100644 --- a/src/setwhitelist.js +++ b/src/setwhitelist.js @@ -49,4 +49,4 @@ default:document.querySelector("#myset_xsimplewarn_0").checked=true;break; var getting=browser.storage.local.get();getting.then(setCurrentChoice,onError); } document.addEventListener("DOMContentLoaded", loadWhitelist); -document.querySelector("form").addEventListener("submit", saveWhitelist); \ No newline at end of file +document.querySelector("form").addEventListener("submit", saveWhitelist); diff --git a/src/style.css b/src/style.css index 207f5e518..594891ef7 100644 --- a/src/style.css +++ b/src/style.css @@ -1,3 +1,3 @@ body{font:13px Verdana} label{-webkit-user-select:none;-moz-user-select:none} -textarea{white-space:pre;overflow-wrap:normal;overflow-x:scroll} \ No newline at end of file +textarea{white-space:pre;overflow-wrap:normal;overflow-x:scroll} From eec850a532e5a25687112ebe0084b6b7b0d308ff Mon Sep 17 00:00:00 2001 From: nullius Date: Sun, 7 Jan 2018 05:01:36 +0000 Subject: [PATCH 15/15] Fix version in README.md (nit) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 70b62da8a..89ea221f9 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,6 @@ The purpose of this browser add-on is to block Cloudflare sites. The TLS protocol promises end-to-end encryption between the client and an authenticated, identified endpoint server. The browser’s lock icon is a UI widget which makes this promise to the user. Cloudflare is a mass-decryption chokepoint, which intercepts and decrypts the Web requests made by billions of people to millions of websites. - Prior discussion: [Tor Browser Bug #24351: Block Global Active Adversary Cloudflare](https://trac.torproject.org/projects/tor/ticket/24351) -- Imported from [block_cloudflare_mitm_attack-1.0.8.6-an+fx.xpi](https://addons.mozilla.org/en-US/firefox/addon/block-cloudflare-mitm-attack/), by an anonymous cypherpunk. “Cyperpunks write code.” Cheers! +- Imported from [block_cloudflare_mitm_attack-1.0.10.1-an+fx.xpi](https://addons.mozilla.org/en-US/firefox/addon/block-cloudflare-mitm-attack/), by an anonymous cypherpunk. “Cyperpunks write code.” Cheers! - [Original announcement](https://trac.torproject.org/projects/tor/ticket/24351#comment:25) - Thanks to [Debian Bug #831835](https://bugs.debian.org/831835) for some inspiration.