commit c0a634cab5c147952ab5fab4cdaa81e7ca40480d Author: michael Date: Fri Aug 14 15:56:15 2026 -0400 den.js 1.0.0 — he exists diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7f8f9aa --- /dev/null +++ b/.gitignore @@ -0,0 +1,15 @@ +node_modules/ +package-lock.json + +# runtime data written by den.php (lives above docroot in deployment, +# but ignore it here in case anyone tests with it alongside) +*_presence.txt +*_guestbook.txt +*_poll.txt +*_pilgrims.txt +counter.txt +status.txt + +.DS_Store +*.swp +*~ diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..d4cfc30 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,19 @@ +# Changelog + +## 1.0.0 + +First release. He exists. + +- Autonomous critter: chase / rest / wander / errand / mischief states, turn-rate + limited movement, stride-based paw prints that rotate to face travel direction +- Burrow spawn animation, ten-minute idle sleep cycle with bed and circling ritual +- Emote bubbles and speech; `denSay` / `denYip` helpers +- `localStorage` memory: visits, lifetime pets, name. Pet milestones at 10/25/50/100, + behaviour changes with trust +- Portable shell tab with critter commands +- POI system via `data-den-poi` +- Mischief system via `data-den-steal` — steals below 25 pets, gifts at and above +- Event API: `celebrate`, `investigate`, `alarm`, `mischief`, `sleepy`, `zoomies` +- Optional PHP presence endpoint with HMAC'd fingerprints and per-IP caps +- Secret typed codes and the Konami code +- Respects `prefers-reduced-motion` diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..88e32bf --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 owo.ing + +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/README.md b/README.md new file mode 100644 index 0000000..927f473 --- /dev/null +++ b/README.md @@ -0,0 +1,232 @@ +# den.js + +An invisible kobold lives on your website. + +You never see him. You see his paw prints, his little dialogue, and — after ten +minutes of quiet — the bed he drags out to sleep in. He walks to your cursor, +gets bored and wanders off to sniff at things, remembers you between visits, and +depending on how well he knows you he will either steal your buttons and run, or +bring them to you as gifts. + +One script tag. No dependencies. No build step required. + +```html + +``` + +That's it. That's the integration. + +--- + +## What he does + +**Movement.** He has a position, a heading, and a turn rate, so he can't snap +around instantly — chase him with your cursor and the prints carve an arc as he +wheels to follow. He trots when you're close, sprints when you're far, and lays +prints by distance travelled rather than on a timer, so his stride stays +physically consistent at any framerate. + +**Moods.** `chase` when your cursor moves, `rest` when he arrives, `wander` when +he gets bored, `errand` when he's been sent somewhere, `mischief` when he's +committing a crime. Emote bubbles float off him — `❗` when he notices you, +`👃` while sniffing, `💤` while dozing, hearts when he's fond of you. + +**Sleep.** Ten minutes with no input and he yawns, walks the tight circle every +canid walks before lying down, and a bed fades in with a breathing lump under +the blanket. Any keypress, click, scroll, or mouse twitch wakes him — groggily. + +**Memory.** Visit count, lifetime pets, and his name persist in `localStorage`. +Return after a week and he says so. Pet him ten times and he decides you're +friends; at twenty-five he starts lingering near your cursor instead of +wandering off, and his stealing turns into gift-giving. + +**A shell.** A `>_ den` tab sits in the corner of every page. Open it and you can +`come`, `sit`, `pet`, `fetch`, `sleep`, `where`, `status`, or `name` him. + +**Presence.** Optional. With `den.php` on the server he'll notice how many other +people are on the site and mention that he can smell them. + +--- + +## Install + +Copy `src/den.js` (or a build from `build/`) to your web root and add the script +tag. Nothing else is required — he injects his own CSS and brings his own audio. + +For the presence counter, also copy `src/den.php` to your web root, change the +secret at the top, and make sure PHP can write one file next to it: + +```sh +touch ../owo_presence.txt +chown www-data:www-data ../owo_presence.txt +``` + +The storage file lives one level *above* the document root so it can never be +fetched over HTTP. + +--- + +## Page integration + +Everything beyond the script tag is declarative markup. + +### Points of interest + +Mark anything you want him to visit and comment on. Pipe-separate alternate +lines and he'll pick one at random: + +```html +
+``` + +When he decides to wander, there's a 45% chance he heads for a POI that's +currently on screen instead of a random point. He skips whichever one he visited +last, so he explores rather than fixating. + +### Stealable things + +Nothing is stealable unless you say so: + +```html +free gifs +``` + +He self-limits to elements between 8–220px wide and 8–90px tall, and only ones +currently visible. The original element is hidden and a fixed-position clone +follows him, so the page layout doesn't reflow while he's got it. **Everything +always comes back** — there are timeouts on every phase, and clicking him +returns the item instantly. + +### Showing the presence count + +```html + +``` + +Filled in on load and refreshed every 60 seconds. + +--- + +## Events + +Pages tell him what happened; he decides how to feel about it. + +```js +denEvent('celebrate', { text: 'YIP!! (a new signature!!)' }); +denEvent('investigate', { el: '#guestbook', text: 'yip? (what is this)' }); +denEvent('investigate', { x: 400, y: 300, run: true }); +denEvent('alarm', { text: 'YIP?! (INTRUDER)' }); +denEvent('mischief'); +denEvent('sleepy'); +denEvent('zoomies'); +``` + +`celebrate` is a happy spin with a heart burst. `investigate` sends him on an +errand — while on one he ignores your cursor, because he's busy. `alarm` startles +him into a panicked sprint. + +Lower-level helpers, if you want to drive him directly: + +```js +denSay('yip!!'); // speech bubble at his current position +denYip(); // the synthesized squeak +denSetName('crumb'); // returns the sanitized name, or null +denGetName(); +denOthers; // number, current presence count +``` + +### A worked example + +Redirect after a successful form post with a marker, then: + +```js +const q = new URLSearchParams(location.search); +if (q.get('signed') === '1') { + history.replaceState(null, '', location.pathname); + setTimeout(() => denEvent('celebrate', { text: 'YIP!! (for the hoard!!)' }), 3400); +} +``` + +The delay lets him finish climbing out of his burrow first. + +--- + +## Secret codes + +Typed anywhere outside a text field: + +| type | he says | +| --- | --- | +| `yip` | `yip!!` | +| `owo` | `*notices u*` | +| `uwu` | `yip (no)` | +| `kobold` | `yip!! (that is me)` | +| `shrine` | `YIP?! (how do u know about that)` | +| `zoomies` | ten seconds of chaos | +| `sleep` | bedtime | +| ↑↑↓↓←→←→BA | same as `zoomies` | + +--- + +## Building + +Optional — `src/den.js` runs fine as-is. Builds are for size and, if you want it, +hiding the surprises above from anyone who opens view-source. + +```sh +npm install -g terser javascript-obfuscator +./build.fish +``` + +| file | size | notes | +| --- | --- | --- | +| `src/den.js` | 33 KB | readable source, the one you edit | +| `build/den.min.js` | 20 KB | minified; recommended | +| `build/den.obf.js` | 88 KB | string-encoded and control-flow flattened | + +The obfuscated build hides all his dialogue and secrets from casual reading, at +4x the file size. Nothing stops a determined reader — this is spoiler protection, +not security. + +`build.fish` also bumps the `?v=N` cache-buster in any `.php` file that +references a build, because forgetting that will cost you an afternoon +convincing yourself the code is broken when the browser is simply serving you +last week's kobold. + +--- + +## Testing + +`test/sim.js` runs him headless in jsdom with a mocked clock, so you can step +through behaviour that would otherwise take ten minutes of sitting still: + +```sh +npm install jsdom +node test/sim.js # readable source +node test/sim.js build/den.obf.js # verify a build still works +``` + +It drives a full mischief cycle and asserts the stolen element is restored. + +--- + +## Notes + +- Respects `prefers-reduced-motion` — under it he doesn't spawn at all, and the + API becomes no-ops so your page code never errors. +- Everything is `position: fixed` with `pointer-events: none`, so he can't + intercept clicks or affect layout. +- Petting ignores clicks on links, buttons, and form fields. +- If `den.php` is missing, presence silently no-ops. +- He injects `text-align: left` on his own UI, because inheritable properties + leak in from host pages. If something of his looks off on a new page, check + what the host's `body` is setting. + +--- + +## License + +MIT — see [LICENSE](LICENSE). + +Built for [owo.ing](https://owo.ing). If you put him on your site, he's yours +now. Name him something good. diff --git a/build.fish b/build.fish new file mode 100755 index 0000000..1715e0f --- /dev/null +++ b/build.fish @@ -0,0 +1,70 @@ +#!/usr/bin/env fish +# den.js build: minify, obfuscate, syntax-check, bump cache version. +# needs: npm install -g terser javascript-obfuscator + +set -l src src/den.js +set -l min build/den.min.js +set -l obf build/den.obf.js +set -l banner "/* den.js - an invisible kobold. (c) 2026 owo.ing. hands off the hoard. */" + +if not test -f $src + echo "no $src here. run this from the repo root." + exit 1 +end + +mkdir -p build + +echo ":: minifying" +terser $src --compress passes=2 --mangle --format ascii_only=true -o $min +or begin + echo "terser failed" + exit 1 +end + +echo ":: obfuscating" +javascript-obfuscator $src --output $obf \ + --compact true \ + --self-defending true \ + --string-array true --string-array-encoding base64 --string-array-threshold 0.9 \ + --string-array-rotate true --string-array-shuffle true \ + --control-flow-flattening true --control-flow-flattening-threshold 0.4 \ + --dead-code-injection true --dead-code-injection-threshold 0.2 \ + --unicode-escape-sequence false +or begin + echo "obfuscator failed" + exit 1 +end + +echo ":: syntax check" +node --check $min; and node --check $obf +or begin + echo "SYNTAX CHECK FAILED - not touching your pages" + exit 1 +end + +# banner goes on after the tools run, or they'd strip it +for f in $min $obf + set -l tmp (mktemp) + echo $banner > $tmp + cat $f >> $tmp + mv $tmp $f +end + +# bump ?v=N wherever a build is referenced, so browsers actually refetch +set -l bumped 0 +for f in *.php example/*.html example/*.php + test -f $f; or continue + set -l cur (grep -oP 'den\.(min|obf)\.js\?v=\K\d+' $f | head -1) + if test -n "$cur" + set -l new (math $cur + 1) + sed -i "s/\(den\.\(min\|obf\)\.js?v=\)$cur/\1$new/g" $f + echo " $f: v$cur -> v$new" + set bumped (math $bumped + 1) + end +end +if test $bumped -eq 0 + echo " (no pages with ?v= found - remember to bust cache yourself)" +end + +echo ":: done" +ls -la $src $min $obf | awk '{printf " %8s %s\n", $5, $9}' diff --git a/build/den.min.js b/build/den.min.js new file mode 100644 index 0000000..4dbf0be --- /dev/null +++ b/build/den.min.js @@ -0,0 +1,2 @@ +/* den.js - the owo.ing kobold. (c) 2026 owo.ing. hands off the hoard. */ +!function(){if(!window.__denCritter){window.__denCritter=!0;var e=document.createElement("style");e.textContent='.paw-trail{position:fixed;pointer-events:none;z-index:9999;animation:pawfade 1s linear forwards;filter:drop-shadow(0 0 3px currentColor);}@keyframes pawfade{0%{opacity:.9;transform:scale(1);}100%{opacity:0;transform:scale(.5) translateY(10px);}}.emote{position:fixed;pointer-events:none;z-index:9999;font-size:15px;animation:emoterise 1.2s ease-out forwards;}.emote.say{font-size:12px;font-weight:bold;color:#c9b8ff;text-shadow:0 0 6px #8f7bff,1px 1px 0 #120a20;white-space:nowrap;font-family:"Comic Sans MS","Comic Sans",cursive;}@keyframes emoterise{0%{opacity:0;transform:translateY(0) scale(.6);}15%{opacity:1;}100%{opacity:0;transform:translateY(-34px) scale(1.15);}}.denbed{position:fixed;z-index:9998;pointer-events:none;animation:bedin .6s ease-out;transition:opacity .45s ease;}@keyframes bedin{from{opacity:0;transform:translateY(10px);}to{opacity:1;transform:translateY(0);}}.denbed .lump{animation:breathe 2.8s ease-in-out infinite;transform-origin:38px 24px;}@keyframes breathe{0%,100%{transform:scaleY(1);}50%{transform:scaleY(1.17);}}body.denzoom *,body.denzoom *::before,body.denzoom *::after{animation-duration:.22s !important;}.denhole{position:fixed;z-index:9997;pointer-events:none;transition:opacity .55s ease;animation:holein .5s ease-out;}@keyframes holein{from{opacity:0;transform:scale(.6);}to{opacity:1;transform:scale(1);}}.dentab{position:fixed;right:14px;bottom:0;text-align:left;z-index:10000;background:#1b1229;color:#8f7bff;border:2px ridge #6b5a8a;border-bottom:none;border-radius:8px 8px 0 0;font-family:"Courier New",monospace;font-size:11px;padding:3px 10px;cursor:pointer;opacity:.55;transition:opacity .2s;user-select:none;}.dentab:hover{opacity:1;}.denterm{position:fixed;right:8px;bottom:0;z-index:10000;width:300px;max-width:86vw;background:#0d0818;border:3px ridge #6b5a8a;border-bottom:none;border-radius:10px 10px 0 0;font-family:"Courier New",monospace;font-size:12px;padding:8px;display:none;text-align:left;}.denterm.open{display:block;}.denterm .dout{height:170px;overflow-y:auto;white-space:pre-wrap;word-break:break-word;color:#c9b8ff;}.denterm .dline{display:flex;gap:6px;margin-top:5px;align-items:center;}.denterm .dprompt{color:#ff6ec7;white-space:nowrap;}.denterm input{flex:1;background:transparent;border:none;outline:none;color:#a8ffe0;font-family:inherit;font-size:12px;}',document.head.appendChild(e);var t=null;if(window.denYip=Q,window.matchMedia&&window.matchMedia("(prefers-reduced-motion: reduce)").matches)window.denSay=function(){};else{var n,i,a=["#8f7bff","#4fc3ff"],o=Math.floor(4*Math.random());0===o?(n=70,i=80+Math.random()*Math.max(window.innerHeight-160,1)):1===o?(n=window.innerWidth-70,i=80+Math.random()*Math.max(window.innerHeight-160,1)):2===o?(n=80+Math.random()*Math.max(window.innerWidth-160,1),i=70):(n=80+Math.random()*Math.max(window.innerWidth-160,1),i=window.innerHeight-70);var r={x:n,y:i},s=Math.random()*Math.PI*2,l={x:r.x,y:r.y},d="rest",c=performance.now()+800,h=0,m=performance.now()+99999,p=0,f=1,u=0,y=performance.now(),w=performance.now(),x=0,v=0,g=0,M=!1,b=null,k=0,T=1,C=null,A=null,I=null,S=null,z=!1,L=0,q=null,E=0,P=null,Y=null,N=null,H={v:0,pets:0,name:null,last:0,id:null};try{var R=JSON.parse(localStorage.getItem("denmem"));R&&"object"==typeof R&&(H.v=0|R.v,H.pets=0|R.pets,H.name="string"==typeof R.name&&R.name?R.name.slice(0,16):null,H.last=R.last||0,"string"==typeof R.id&&/^[a-f0-9]{16}$/.test(R.id)&&(H.id=R.id))}catch(e){}var B=H.last;if(H.v++,H.last=Date.now(),!H.id){var F="";try{var W=new Uint8Array(8);crypto.getRandomValues(W);for(var O=0;O<8;O++)F+=("0"+W[O].toString(16)).slice(-2)}catch(e){for(var _=0;_<16;_++)F+=Math.floor(16*Math.random()).toString(16)}H.id=F}Z(),window.denSetName=function(e){return(e=String(e||"").replace(/[^\w \-]/g,"").trim().slice(0,16))?(H.name=e,Z(),ie("yip!! (i am "+e+")"),te("\ud83d\udc96",!0),N&&(N.textContent=$()),e):null},window.denGetName=function(){return H.name},window.denSay=ie,document.addEventListener("keydown",ae),document.addEventListener("scroll",ae,{passive:!0}),document.addEventListener("touchstart",ae,{passive:!0}),document.addEventListener("mousemove",function(e){if(l.x=e.clientX,l.y=e.clientY,ae(),"errand"!==d&&"mischief"!==d){var t=performance.now();t48||oe()}),window.denEvent=function(e,t){t=t||{};var n=performance.now();if(w=n,M&&ae(),"mischief"===d&&"mischief"!==e&&re(),"mischief"!==e)if("celebrate"===e)h=n+1100,d="rest",c=n+2800,m=n+99999,te("\u2728",!0),setTimeout(function(){te("\ud83d\udc95",!0)},300),setTimeout(function(){te("\u2728",!0)},650),setTimeout(function(){ie(t.text||"YIP!!")},180),Q();else if("investigate"===e){var i=function(e){var t=e.el;if("string"==typeof t&&(t=document.querySelector(t)),t&&t.getBoundingClientRect){var n=t.getBoundingClientRect();if(n.width>0)return le(n.left+.5*n.width,n.top+Math.min(.4*n.height,50))}return"number"==typeof e.x&&"number"==typeof e.y?le(e.x,e.y):null}(t);if(!i)return;I=i,S=t.text||null,z=!!t.run,L=n+9e3,d="errand"}else if("alarm"===e){te("\u26a0\ufe0f",!0),ie(t.text||"YIP?!");var a=Math.random()*Math.PI*2;I=le(r.x+260*Math.cos(a),r.y+260*Math.sin(a)),S=null,z=!0,L=n+4e3,d="errand"}else"sleepy"===e?(g=n+800,x=n+1400,ie("*yawn*")):"zoomies"===e?de():t.text&&ie(t.text);else se(!0)};var D=["ArrowUp","ArrowUp","ArrowDown","ArrowDown","ArrowLeft","ArrowRight","ArrowLeft","ArrowRight","b","a"],U=0;document.addEventListener("keydown",function(e){var t=1===e.key.length?e.key.toLowerCase():e.key;(U=t===D[U]?U+1:t===D[0]?1:0)===D.length&&(U=0,de())});var V="";document.addEventListener("keydown",function(e){var t=e.target;t&&("INPUT"===t.tagName||"TEXTAREA"===t.tagName||t.isContentEditable)||1===e.key.length&&("yip"===(V=(V+e.key.toLowerCase()).slice(-12)).slice(-3)?(ie("yip!!"),V=""):"owo"===V.slice(-3)?(ie("*notices u*"),V=""):"uwu"===V.slice(-3)?(ie("yip (no)"),V=""):"kobold"===V.slice(-6)?(te("\ud83d\udc95",!0),ie("yip!! (that is me)"),V=""):"shrine"===V.slice(-6)?(ie("YIP?! (how do u know about that)"),V=""):"zoomies"===V.slice(-7)?(de(),V=""):"sleep"===V.slice(-5)&&(g=performance.now()+800,x=performance.now()+1400,ie("*yawn*"),V=""))});var j=document.createElement("div");j.className="dentab",j.textContent=">_ den";var X=document.createElement("div");X.className="denterm",X.innerHTML='
den shell v2 (now portable)\ntype "help"\n
';var G=0,J=document.createElement("div");J.className="denhole",J.innerHTML='',J.style.left=r.x-28+"px",J.style.top=r.y-17+"px",document.body?ye():document.addEventListener("DOMContentLoaded",ye),requestAnimationFrame(function e(t){var n=Math.min((t-y)/1e3,.05);y=t;var i=T;if(M)return t>k&&(te("\ud83d\udca4",!0),k=t+2600),void requestAnimationFrame(e);if(x){if(t=24*.8&&(u=0,me())}else x=0,M=!0,r.x=Math.min(Math.max(r.x,44),window.innerWidth-44),r.y=Math.min(Math.max(r.y,40),window.innerHeight-30),(b=document.createElement("div")).className="denbed",b.innerHTML='',b.style.left=r.x-32+"px",b.style.top=r.y-26+"px",document.body.appendChild(b),ie("...zzz"),k=t+1800;requestAnimationFrame(e)}else{if(t-w>6e5&&t>h)return x=t+1400,ie("*yawn*"),void requestAnimationFrame(e);if(t=24*.8&&(u=0,me()),void requestAnimationFrame(e)}if("mischief"!==d)if("errand"!==d){var p=l.x-r.x,f=l.y-r.y,g=Math.hypot(p,f);if("chase"===d?g<26&&(d="rest",c=t+(H.pets>=25?4200:2500),m=t+1700,Math.random()<.5&&te(H.pets>=10?"\ud83d\udc95":"\u2728")):"rest"===d?(t>m&&(te("\ud83d\udca4"),m=t+1600),t>c&&(se(!1)||(l=he(),d="wander"))):g<14&&(d="rest",m=t+99999,C?(c=t+1200+1600*Math.random(),ie(C),C=null):(c=t+600+1600*Math.random(),te(ne(["\ud83d\udc43","\u2753","\ud83c\udf38","\u2728","\ud83d\udc3e"])))),"rest"!==d&&g>1){var A=Math.atan2(f,p),E=4*n*("chase"===d?2.2:1);s+=Math.max(-E,Math.min(E,ce(s,A)));var P="chase"===d&&g>160,Y=("chase"===d?P?340:150:70)*i,N=P?38:24,R=Math.min(Y*n,g);r.x+=Math.cos(s)*R,r.y+=Math.sin(s)*R,(u+=R)>=N&&(u=0,me())}requestAnimationFrame(e)}else{if(!I||t>L)I=null,d="wander",l=he();else{var B=I.x-r.x,F=I.y-r.y,W=Math.hypot(B,F);if(W<16)S?ie(S):te(ne(["\ud83d\udc43","\u2753"])),I=null,S=null,d="rest",c=t+1500,m=t+99999;else{var O=Math.atan2(F,B),_=4*n*2.2;s+=Math.max(-_,Math.min(_,ce(s,O)));var D=(z?340:150)*i,U=z?38:24,V=Math.min(D*n,W);r.x+=Math.cos(s)*V,r.y+=Math.sin(s)*V,(u+=V)>=U&&(u=0,me())}}requestAnimationFrame(e)}else{if(!q)return d="wander",l=he(),void requestAnimationFrame(e);if(t>q.deadline){if("carry"!==q.phase)return re(),void requestAnimationFrame(e);q.phase="dropped",q.dropTime=t,q.deadline=t+12e3,ie(q.gift?"*wheeze* (u are fast. here)":"*wheeze* (fine)")}if("togo"===q.phase||"carry"===q.phase){var j,X=(j="togo"===q.phase?q.pt:q.gift?le(l.x,l.y):q.dropPt).x-r.x,G=j.y-r.y,J=Math.hypot(X,G);if(J<16)"togo"===q.phase?function(){var e=q.el.getBoundingClientRect();q.clone=document.createElement("div"),q.clone.style.cssText="position:fixed;z-index:9998;pointer-events:none;margin:0;left:"+e.left+"px;top:"+e.top+"px;width:"+e.width+"px;height:"+e.height+"px;";var t=q.el.cloneNode(!0);if(t.style.margin="0",q.clone.appendChild(t),document.body.appendChild(q.clone),q.el.style.visibility="hidden",q.cw=e.width/2,q.ch=e.height,q.gift)ie("yip!");else{var n=Math.random()*Math.PI*2;q.dropPt=le(r.x+300*Math.cos(n),r.y+300*Math.sin(n)),ie(ne(["yip yip yip (mine now)","(catch me)","yip!! (tax)"]))}q.phase="carry"}():(q.phase="dropped",q.dropTime=t,q.gift?(ie(ne(["uwu (for u)","yip (i brought u this)","(i love u)"])),te("\ud83d\udc95",!0),setTimeout(function(){te("\ud83d\udc96",!0)},300)):ie(ne(["yip (u can have it back)","(hehe)","yip yip (a good crime)"])));else{var Q=Math.atan2(G,X),Z=4*n*2.2;s+=Math.max(-Z,Math.min(Z,ce(s,Q)));var $=("carry"!==q.phase||q.gift?150:340)*i,K="carry"!==q.phase||q.gift?24:38,ee=Math.min($*n,J);r.x+=Math.cos(s)*ee,r.y+=Math.sin(s)*ee,(u+=ee)>=K&&(u=0,me())}q&&q.clone&&"carry"===q.phase&&(q.clone.style.left=r.x-q.cw+"px",q.clone.style.top=r.y-q.ch-14+"px")}else if("dropped"===q.phase){if(t>q.dropTime+(q.gift?4200:5200)){var ae=q.el.getBoundingClientRect();q.clone.style.transition="left .6s ease, top .6s ease, opacity .6s ease",q.clone.style.left=ae.left+"px",q.clone.style.top=ae.top+"px",q.phase="returning",q.retTime=t,q.gift||ie("yip (fine. take it back)")}}else"returning"===q.phase&&t>q.retTime+700&&(te("\u2728",!0),re());requestAnimationFrame(e)}}}})}}function Q(){try{t||(t=new(window.AudioContext||window.webkitAudioContext)),"suspended"===t.state&&t.resume();var e=t.createOscillator(),n=t.createGain(),i=t.currentTime;e.type="sine",e.frequency.setValueAtTime(700+200*Math.random(),i),e.frequency.exponentialRampToValueAtTime(1400+300*Math.random(),i+.07),e.frequency.exponentialRampToValueAtTime(600,i+.14),n.gain.setValueAtTime(.12,i),n.gain.exponentialRampToValueAtTime(.001,i+.16),e.connect(n),n.connect(t.destination),e.start(i),e.stop(i+.18)}catch(e){}}function Z(){try{localStorage.setItem("denmem",JSON.stringify(H))}catch(e){}}function $(){return(H.name||"guest")+"@den ~>"}function K(e){return e<=0?"just u + the kobold rn":1===e?"1 other is here rn":e+" others are here rn"}function ee(){window.fetch&&fetch("/den.php?id="+H.id,{cache:"no-store"}).then(function(e){return e.ok?e.json():null}).then(function(e){if(e){var t=0|e.others;window.denOthers=t;for(var n=document.querySelectorAll("[data-den-others]"),i=0;i220||i.height<8||i.height>90||i.bottom<40||i.top>window.innerHeight-60||i.right<40||i.left>window.innerWidth-60||"hidden"!==t[n].style.visibility&&e.push(t[n])}return e}();if(!n.length)return!1;if(!e&&Math.random()>.07)return!1;var i=n[Math.floor(Math.random()*n.length)],a=i.getBoundingClientRect();return q={el:i,phase:"togo",pt:le(a.left+a.width/2,a.top+a.height/2),deadline:t+18e3,gift:H.pets>=25},E=t,d="mischief",!0}function le(e,t){return{x:Math.min(Math.max(e,20),window.innerWidth-20),y:Math.min(Math.max(t,20),window.innerHeight-20)}}function de(){document.body.classList.add("denzoom"),T=7.5;var e=document.title;document.title="YIP YIP YIP YIP YIP",ie("YIP YIP YIP YIP"),setTimeout(function(){document.body.classList.remove("denzoom"),T=1,document.title=e},1e4)}function ce(e,t){var n=(t-e)%(2*Math.PI);return n>Math.PI&&(n-=2*Math.PI),n<-Math.PI&&(n+=2*Math.PI),n}function he(){if(C=null,Math.random()<.45){var e=function(){for(var e=[],t=document.querySelectorAll("[data-den-poi]"),n=0;nwindow.innerHeight-40||i.right<40||i.left>window.innerWidth-40||e.push({el:t[n],r:i})}return e}().filter(function(e){return e.el!==A});if(e.length){var t=e[Math.floor(Math.random()*e.length)];A=t.el;var n=(t.el.getAttribute("data-den-poi")||"").split("|").filter(Boolean);return n.length&&(C=n[Math.floor(Math.random()*n.length)]),{x:Math.min(Math.max(t.r.left+t.r.width*(.25+.5*Math.random()),20),window.innerWidth-20),y:Math.min(Math.max(t.r.top+Math.min(.4*t.r.height,60)+20*Math.random(),20),window.innerHeight-20)}}}var i=60+120*Math.random(),a=s+2.6*(Math.random()-.5);return{x:Math.min(Math.max(r.x+Math.cos(a)*i,20),window.innerWidth-20),y:Math.min(Math.max(r.y+Math.sin(a)*i,20),window.innerHeight-20)}}function me(){f=-f;var e=document.createElement("span");e.className="paw-trail",e.innerHTML='';var t=a[f>0?0:1];e.querySelector("svg").style.fill=t,e.style.color=t;var n=180*s/Math.PI+90,i=7*-Math.sin(s)*f,o=7*Math.cos(s)*f;e.style.left=r.x+i-7+"px",e.style.top=r.y+o-7+"px",e.querySelector("svg").style.transform="rotate("+n+"deg) scaleX("+f+")",e.querySelector("svg").style.display="block",document.body.appendChild(e),setTimeout(function(){e.remove()},1300)}function pe(e){P.textContent+=e+"\n",P.scrollTop=P.scrollHeight}function fe(){X.classList.add("open"),j.style.display="none",Y.focus()}function ue(){X.classList.remove("open"),j.style.display=""}function ye(){document.body.appendChild(j),document.body.appendChild(X),P=X.querySelector(".dout"),Y=X.querySelector("input"),(N=X.querySelector(".dprompt")).textContent=$(),j.addEventListener("click",fe),Y.addEventListener("keydown",function(e){if("Escape"!==e.key){if("Enter"===e.key){var t=Y.value.trim();Y.value="",t&&(pe($()+" "+t),function(e){var t=e.toLowerCase();if(0!==t.indexOf("name "))if("name"!==t)if(0!==t.indexOf("sudo"))if(0!==t.indexOf("rm ")&&"rm"!==t)switch(t){case"help":pe("commands: pet, come, sit, fetch, sleep, wake, zoomies, where, status, name , ls, whoami, pwd, neofetch, yip, clear, exit");break;case"pet":case"pet kobold":G++,oe(),pe(G>=5?"*yip yip yip* (maximum happiness. further pets stored for later)":"*pets dispensed remotely* yip!");break;case"fetch":se(!0)?pe(H.pets>=25?"he goes to find u something":"oh no"):pe(q?"his paws are full":"nothing here worth taking. sad");break;case"come":var n=X.getBoundingClientRect();l={x:Math.min(Math.max(n.left+40,20),window.innerWidth-20),y:Math.min(Math.max(n.top-40,20),window.innerHeight-20)},M&&ae(),d="chase",pe("he is on his way");break;case"sit":d="rest",c=performance.now()+6e3,m=performance.now()+99999,ie("yip (sitting)"),pe("he sits. a good boy");break;case"sleep":g=performance.now()+800,x=performance.now()+1400,ie("*yawn*"),pe("bedtime initiated");break;case"wake":M?(ae(),pe("he stirs")):pe("he is already awake and probably watching u");break;case"zoomies":de(),pe("oh no");break;case"where":ie("yip!! (here)"),te("\u2728",!0),pe("listen for the yip");break;case"status":pe("mode: "+(M?"asleep":d)+" | pets: "+H.pets+" | name: "+(H.name||"(unnamed)")+" | visits: "+H.v);break;case"ls":pe("den/ hoard/ guestbook.txt do_not_open/ retopo_FINAL_v2/");break;case"whoami":pe("a guest in the den");break;case"pwd":pe("/home/den/u");break;case"yip":ie("yip!!"),pe("yip!!");break;case"neofetch":pe(" /\\_/\\ guest@den\n ( o.o ) ----------\n > ^ < OS: DenOS (yes it is just apache)\n kobold btw Shell: den shell 2.0\n Uptime: emotionally? unclear");break;case"clear":P.textContent="";break;case"exit":pe("u can check out any time u like..."),setTimeout(ue,600);break;default:pe("fish: Unknown command: '"+e.split(" ")[0].replace(/[^\w.-]/g,"")+"'")}else pe("rm: the hoard is load-bearing. request denied");else pe("no.");else pe(H.name?'the kobold is named "'+H.name+'"':"the kobold has no name yet. try: name ");else{var i=window.denSetName(e.slice(5));pe(i?'the kobold accepts the name "'+i+'". this is legally binding':"that name did not survive processing. try letters")}}(t))}}else ue()}),ee(),setInterval(ee,6e4),document.body.appendChild(J),setTimeout(function(){var e;te("\u2728",!0),ie((e=B?Date.now()-B:0,H.v<=1?"*yip* (hello)":e>6048e5?"YIP!! (where were u)":H.name?"*yip* ("+H.name+" missed u)":H.v>=8?"yip (welcome home)":"yip!! (u came back)"));var t=window.innerWidth/2,n=window.innerHeight/2,i=Math.atan2(n-r.y,t-r.x);s=i;var a=160+120*Math.random();l={x:Math.min(Math.max(r.x+Math.cos(i)*a,20),window.innerWidth-20),y:Math.min(Math.max(r.y+Math.sin(i)*a,20),window.innerHeight-20)},C=null,d="wander"},700),setTimeout(function(){J.style.opacity="0",setTimeout(function(){J.remove()},600)},2600),setTimeout(function(){var e=0|window.denOthers;e>0&&ie("yip ("+e+(1===e?" other is":" others are")+" here... i can smell them)")},9e3)}}(); \ No newline at end of file diff --git a/build/den.obf.js b/build/den.obf.js new file mode 100644 index 0000000..a2f00e7 --- /dev/null +++ b/build/den.obf.js @@ -0,0 +1,2 @@ +/* den.js - the owo.ing kobold. (c) 2026 owo.ing. hands off the hoard. */ +function a0_0x1a23(_0x2b72fd,_0x33fe9f){_0x2b72fd=_0x2b72fd-0x1c7;var _0x54183d=a0_0xebd5();var _0x1890b5=_0x54183d[_0x2b72fd];if(a0_0x1a23['vFHSJY']===undefined){var _0x18c9f0=function(_0x2fa02c){var _0x506cfb='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x10ce75='',_0x9d98fa='',_0x2368d6=_0x10ce75+_0x18c9f0,_0x169567=(''+function(){return 0x0;})['indexOf']('\x0a')!==-0x1;for(var _0x19573a=0x0,_0x1912cc,_0x46e62c,_0x302adb=0x0;_0x46e62c=_0x2fa02c['charAt'](_0x302adb++);~_0x46e62c&&(_0x1912cc=_0x19573a%0x4?_0x1912cc*0x40+_0x46e62c:_0x46e62c,_0x19573a++%0x4)?_0x10ce75+=_0x169567||_0x2368d6['charCodeAt'](_0x302adb+0xa)-0xa!==0x0?String['fromCharCode'](0xff&_0x1912cc>>(-0x2*_0x19573a&0x6)):_0x19573a:0x0){_0x46e62c=_0x506cfb['indexOf'](_0x46e62c);}for(var _0x84c63a=0x0,_0x453630=_0x10ce75['length'];_0x84c63a<_0x453630;_0x84c63a++){_0x9d98fa+='%'+('00'+_0x10ce75['charCodeAt'](_0x84c63a)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x9d98fa);};a0_0x1a23['PoyvSZ']=_0x18c9f0,a0_0x1a23['VZVaVB']={},a0_0x1a23['vFHSJY']=!![];}var _0xebd590=_0x54183d[0x0],_0x1a237e=_0x2b72fd+_0xebd590,_0x2a491a=a0_0x1a23['VZVaVB'][_0x1a237e];if(!_0x2a491a){var _0xb15384=function(_0x4dc44b){this['SWVaom']=_0x4dc44b,this['JWkuOe']=[0x1,0x0,0x0],this['rsPyCL']=function(){return'newState';},this['TrkWSV']='\x5c\x77\x2b\x20\x2a\x5c\x28\x5c\x29\x20\x2a\x7b\x5c\x77\x2b\x20\x2a',this['NzySAe']='\x5b\x27\x7c\x22\x5d\x2e\x2b\x5b\x27\x7c\x22\x5d\x3b\x3f\x20\x2a\x7d';};_0xb15384['prototype']['ODdJtj']=function(){var _0x11b25=new RegExp(this['TrkWSV']+this['NzySAe']),_0x46e6e4=_0x11b25['test'](this['rsPyCL']['toString']())?--this['JWkuOe'][0x1]:--this['JWkuOe'][0x0];return this['GRMTDb'](_0x46e6e4);},_0xb15384['prototype']['GRMTDb']=function(_0x37b845){if(!Boolean(~_0x37b845))return _0x37b845;return this['yvkskT'](this['SWVaom']);},_0xb15384['prototype']['yvkskT']=function(_0x4b84fc){for(var _0xc3b5ca=0x0,_0x26abfa=this['JWkuOe']['length'];_0xc3b5ca<_0x26abfa;_0xc3b5ca++){this['JWkuOe']['push'](Math['round'](Math['random']())),_0x26abfa=this['JWkuOe']['length'];}return _0x4b84fc(this['JWkuOe'][0x0]);},(''+function(){return 0x0;})['indexOf']('\x0a')===-0x1&&new _0xb15384(a0_0x1a23)['ODdJtj'](),_0x1890b5=a0_0x1a23['PoyvSZ'](_0x1890b5),a0_0x1a23['VZVaVB'][_0x1a237e]=_0x1890b5;}else _0x1890b5=_0x2a491a;return _0x1890b5;}function a0_0xebd5(){var _0x524642=['Ae1Vt3a','Cvj3Dgi','uuHwwvO','qgTLEwzYyw1LCYbIzwrPBNTMCM9TE29WywnPDhK6mdT0CMfUC2zVCM06DhjHBNnSyxrLwsGXmhb4ktT9Dg97B3bHy2L0EtOXo3rYyw5ZzM9YBtP0CMfUC2XHDgvzkdaPo319','Cwnuq3e','sxn4tMm','DgL0Bgu','zhzdDw8','lMrLBMjLzcaUBhvTChTHBMLTyxrPB246yNjLyxrOzsaYlJHZigvHC2uTAw4TB3v0igLUzMLUAxrLo3rYyw5ZzM9YBs1VCMLNAw46mZHWEcaYnhb4o30','B2GGBM8','Dg91y2HZDgfYDa','DKvzB3C','wxHnwve','rfrOsue','yMXVy2S','z0Lvqwm','pgvSBgLWC2uGy3G9iJiWiIbJEt0ImtaIihj4psi0iIbYEt0Ims42iIbMAwXSpsiJm2qYytu1iI8+','BeruA3C','C2nYB2XS','EwLWicHMAw5LlIb0ywTLigL0igjHy2SP','zM9JDxm','lMrLBMHVBgv7Cg9ZAxrPB246zML4zwq7EI1PBMrLEdO5otK3o3bVAw50zxiTzxzLBNrZoM5VBMu7DhjHBNnPDgLVBJPVCgfJAxr5ic41nxmGzwfZztTHBMLTyxrPB246Ag9SzwLUic41CYbLyxnLlw91DdT9','C3r5Bgu','uwfktu4','tLPgyMO','ig1PC3nLzcb1kq','qgrLBIb+pG','ufnmyuq','ExDqA3G','zwnXDeO','l2HVBwuVzgvUl3u','mti5mtH5qwznEwK','ChDK','qxjYB3Dmzwz0','ChnKsg4','AhLWB3q','u2Hwu00','sxnWDLy','Aw5Uzxjive1m','r3nvu3a','svDMDee','EwLWicHPigjYB3vNAhqGDsb0AgLZkq','qM9hsem','kNbLDhmGzgLZCgvUC2vKihjLBw90zwX5kIb5AxaH','Ce9zvKK','rKDxB0O','AKjyyMu','r3vLzMO','qMfrBui','sw1Atg8','AguGAxmGB24GAgLZihDHEq','AguGz29LCYb0BYbMAw5KihuGC29TzxrOAw5N','sNvkCMm','DMfSDwu','zgvZDgLUyxrPB24','uMvmwgO','AunjDhK','ueXSDe8','DgvZDa','EM9VBwLLCW','AhjOC0i','zMLZAdOGvw5RBM93BIbJB21Tyw5KoIaN','zMv0y2G','CMfUzg9T','mNWZFdz8nhWWFdv8mq','wuLqpYeGkgHVDYbKBYb1igTUB3CGywjVDxqGDgHHDcK','sMrWEe4','sNDHBvq','C2v0sxrLBq','Ce16twO','yMvbEKK','vNP1zvC','quf3BMe','AvHfENy','wKzpBxi','ALbvshK','phn2zYb3Awr0Ad0IntyIigHLAwDODd0ImZqIihzPzxDcB3G9iJaGmca1nIaZnciGEg1SBNm9iMH0Dha6lY93D3CUDZmUB3jNlZiWmdaVC3zNiJ4','ELfwBM8','mta2otCYnfHZA2DmuW','C2vHCMnO','C3rHDhvZ','y29UC3rYDwn0B3i','su5qvvq','w2rHDgeTzgvUlxbVAv0','AguGC3rPCNm','z2LyEvi','zgvUrxzLBNq','BM90AgLUzYbOzxjLihDVCNrOihrHA2LUzY4GC2fK','C3bHBG','ENvnB2S','vuH3ugy','DeXiBwS','EwLWiseGkgjVBMrLzca0igXPzMuP','t1PsCeu','y3HTtem','wLjuA3m','kcGOlISPkYKRksSK','ChG7D2LKDgG6','rLjKtwC','B1rbyNK','EwLWicHIzxn0igzYAwvUzcK','qwXoq1e','rNbwtNq','s2Pfuxe','A29mA3i','v3D1t1i','zgvUBwvT','ENLttuO','DhjPBq','AgLZihbHD3mGyxjLigz1BgW','yM9KEs5Kzw56B29TicOSyM9KEs5Kzw56B29TicO6oMjLzM9YzsXIB2r5lMrLBNPVB20GkJO6ywz0zxj7yw5PBwf0Aw9Ulwr1CMf0Aw9UoI4YmNmGiwLTCg9YDgfUDdT9','phn2zYb3Awr0Ad0InJqIigHLAwDODd0IndiIihzPzxDcB3G9iJaGmca2nca0mIiGEg1SBNm9iMH0Dha6lY93D3CUDZmUB3jNlZiWmdaVC3zNiJ4','ig90AgvYCYbHCMu','vwDqDgG','z2v0sxrLBq','t1vJqMG','tLLHruy','wLzOu1C','ywrK','AgPkq0G','qurbB1m','phn2zYb3Awr0Ad0ImtqIigHLAwDODd0ImtuIihzPzxDcB3G9iJaGmcaYmcaYmsiGEg1SBNm9iMH0Dha6lY93D3CUDZmUB3jNlZiWmdaVC3zNiJ4','Dg9W','EgH5AwG','uxngrKu','vNrYy2O','EwLWiseGkhrHEcK','C3zN','EwLWicG','C3rVCa','EgTHs1C','yxPiAxy','yuLgrg4','AuHQAg0','CgfYC2u','y21ABLa','z2LMDa','rLHcvxK','ndq1ndGXotbnB3HfyLG','BgfZDa','svvrtui','ywXHCM0','Bwf0y2HnzwrPyq','zxDVEeC','A2v5','vu9ctM0','rKPnzfO','AeH1qMG','wwrSAem','q0foALq','uwrwqwG','vfv6DLa','BMfTzsa','BKrOsfi','EwLWiseGkgHLCMuP','tLjwsNe','zKXNDxq','C2XutgG','mhW1Fdz8n3WYFdr8mxWZ','rfPwv00','AvvlBha','yM9KEq','BuzLyuK','AguGAxmGywXYzwfKEsbHD2fRzsbHBMqGChjVyMfIBhKGD2f0y2HPBMCGDq','zeHMDu8','D1Dquhi','CM90yxrLka','D2DOshu','yMvKDgLTzsbPBML0Awf0zwq','yxbWBhK','twLHy0K','C2LUzq','DNDMCuC','D1PpwKW','Cgv0igTVyM9Sza','C2LU','zK1IrvC','qwn3t2K','C2nYB2XSvg9W','zgvUt3rOzxjZ','sLHNAK8','BxvQALO','kNDOzwv6zsOGkgzPBMuP','t09jBMm','C2XPy2u','s0XAuuK','EwLWihLPCcb5AxaGkg1PBMuGBM93kq','qNDoyNu','AwD2seq','zxHrt1m','D2jkCxC','z3vlCem','y2XLyxi','igHLCMuUlI4GAsbJyw4GC21LBgWGDgHLBsK','Bwf4','yurOtw4','tMnSqvy','BgLZDgvUigzVCIb0AguGEwLW','t2HXAva','wKTSyxe','t1jyueS','AuDPq3a','w2rHDgeTzgvUlxn0zwfSxq','AfDmuM4','vwn2vgK','A3nHtMG','y3jLyxrLr2fPBG','txrHzMW','AejQy0u','y2fYCNK','EeXcruC','y3vYCMvUDfrPBwu','A0H0Aem','zwnpqva','Eu9XwvO','CM06ihrOzsbOB2fYzcbPCYbSB2fKlwjLyxjPBMCUihjLCxvLC3qGzgvUAwvK','zgvUr2v0tMfTzq','pgrPDIbJBgfZCZ0IzgXPBMuIpJXZCgfUignSyxnZpsjKChjVBxb0iJ48l3nWyw4+pgLUChv0igf1Dg9JB21WBgv0zt0IB2zMiIbZCgvSBgnOzwnRpsjMywXZzsiGyxjPys1SywjLBd0IzgvUihnOzwXSigLUChv0iJ48l2rPDJ4','BgvMDcaUnNmGzwfZzsWGDg9Wic42CYbLyxnLlcbVCgfJAxr5ic42CYbLyxnL','CvDHyuS','sgDsEfC','CgHHC2u','BKDeC1q','vMLqq2i','zwn4zfK','Cgv0','vKnWCum','vw5isNC','zw1VDgu','yxrHBJi','w2rHDgeTzgvUlw90AgvYC10','yM90Dg9T','txrSCKi','CNvU','veDvrgu','shzTEgO','whbAzva','khvUBMfTzwqP','sw1zuwe','zhDXA3i','kM5VDgLJzxmGDsO','B3bxy1a','mteWmZaWoePQB3HHrG','qxjYB3DvCa','Au5RAhC','rgzVCLK','pgvSBgLWC2uGy3G9iJeZiIbJEt0ImJiIihj4psi5iIbYEt0InsiGzMLSBd0Ii2m5yJHMzIiVpG','D2HLCMu','ysXIDxr0B24SAw5WDxqSDgv4DgfYzweSBgfIzwWSC2vSzwn0','CNrPvuC','rvjiuuG','y29SB3i','qujkAha','tfjowKi','B2jQzwn0','C2XLzxa','wuLcEei','wNbrwhq','DsbJyw4Gy2HLy2SGB3v0igfUEsb0Aw1LihuGBgLRzs4UlG','AvvpwNm','A0nSs3a','AxndB250zw50rwrPDgfIBgu','y3jRzfy','qNjABg4','zhjVChbLza','uxLnr20','qxvKAw9dB250zxH0','EMjbwK4','qMjJBgq','CMvWBgfJzq','v1rHyxm','uMH2DLe','EwLWiseGkgKGyw0G','zgvUDgvYBq','EwLWiseGkhDLigfYzsbMCMLLBMrZig5VDYK','mhWZFdr8mNWXFdu','Bwf0y2HLCW','CM0G','zMLSBa','pgvSBgLWC2uGy3G9iJCUnIiGy3K9iJuUnciGCNG9iJiUmsiGCNK9iJiUociVpG','pgvSBgLWC2uGy3G9iJi4iIbJEt0ImtCIihj4psiYnIiGCNK9iJe0iIbMAwXSpsiJmgqWode4iIbZDhjVA2u9iIm4zJDIzMyIihn0CM9Rzs13Awr0Ad0ImI41iI8+','mNWXFdb8nhWZ','y2XVC2vZDa','wfvwrue','z2v0qxr0CMLIDxrL','wLvjBMK','pgvSBgLWC2uGy3G9iJe2lJGIign5psi4lJyIihj4psiYlJeIihj5psiYlJCIlZ4','BM8TC3rVCMu','yxfoB0W','rwnswLm','DgHLigTVyM9SzcbHy2nLChrZihrOzsbUyw1Lici','ANPjqNu','vevyvefsrue','uNrzteK','D2fRzq','zw9cCw8','sM9Auu4','l2rLBI5WAha/Awq9','CMrWA1q','CMvZDw1L','yNffwvq','lMrLBNrLCM0GlMrWCM9TChr7y29SB3i6i2zMnMvJnZT3AgL0zs1ZCgfJztPUB3DYyxa7Fq','DvzcCey','rw50zxi','zgvUDgfI','zvv6AKe','CerotNG','yvrvB20','D2HVyw1P','Cg94qK4','y2XPzw50wa','Cgv0CW','lMrLBNrHyJPOB3zLCNTVCgfJAxr5oJe7Fq','C3vZCgvUzgvK','Aw5UzxjizwLNAhq','pgvSBgLWC2uGy3G9iJi4iIbJEt0ImtKIihj4psiXociGCNK9iJGIigzPBgW9iImWmdaIlZ4','DMLZAwjPBgL0Eq','DxjrsMe','ysbNDwvZDcbPBIb0AguGzgvU','wK1wBey','we1wzeK','zhHzBgK','mhW4FdD8mxWYFdv8nhWZFdz8oq','y1nIDLy','zgvUAg9Szq','CMLNAhq','qMXTs2O','zhjVCfb0','BhDWyNC','EwLWiseGkhuGy2fTzsbIywnRkq','nZq3nZmWmMTMrxnkwG','CeHzwNi','ndy3ndzbCLbkDeO','kNLPCcOGka','ChG7Dg9WoG','zMXVB3i','zgvUu2f5','D2fUzgvY','BgvMDa','ALbwve0','t0X2sKK','EMfuAwS','C3rHDgu','mhW1Fdf8m3WYFdq','BwfYz2LU','z2v0uMfUzg9TvMfSDwvZ','vMjAzvm','zMLSDgvY','s0Lwvgy','C3bSAxq','t2fgy0y','ChfNz0q','mNWZFdf8nhW1Fda','wfjyC3K','r2DezNa','y3jLyxrLrwXLBwvUDa','zK5erhm','whrluum','r0nfCuu','CwXou0y','thfPuuq','DgfYz2v0','oda1qKz5ugDf','y2XPzw50wq','q21lzuq','Egj3sNa','DgfNtMfTzq','EwLWicH3zwXJB21LigHVBwuP','vgnosfq','lMrLBNrHyNTWB3nPDgLVBJPMAxHLzdTYAwDODdOXnhb4o2jVDhrVBtOWo3rLEhqTywXPz246BgvMDdT6lwLUzgv4oJeWmdaWo2jHy2TNCM91BMq6iZfImtiYotTJB2XVCJOJogy3yMzMo2jVCMrLCJOYChGGCMLKz2uGiZzInwe4ytTIB3jKzxiTyM90Dg9ToM5VBMu7yM9YzgvYlxjHzgL1CZO4ChGGohb4idaGmdTMB250lwzHBwLSEtOIq291CMLLCIbozxCIlg1VBM9ZCgfJztTMB250lxnPEMu6mtfWEdTWywrKAw5NoJnWEcaXmhb4o2n1CNnVCJPWB2LUDgvYo29WywnPDhK6lJu1o3rYyw5ZAxrPB246B3bHy2L0EsaUmNm7DxnLCI1ZzwXLy3q6BM9UztT9','ovDqrg5Zqq','zgvNksbZy2fSzvGO','DMTLCve','DhjHBNnPDgLVBG','DhLWzq','phjLy3qGEd0ImIiGEt0ImJqIihDPzhrOpsi2mciGAgvPz2H0psiXmsiGCNG9iJuIigzPBgW9iImZzdjHntuIihn0CM9Rzt0IiZHMn2jMzIiGC3rYB2TLlxDPzhrOpsiYiI8+','AgvSCa','v0veufi','CwnTzNK','lMvTB3rLlNnHExTMB250lxnPEMu6mtjWEdTMB250lxDLAwDODdPIB2XKo2nVBg9YoInJowi4zMy7Dgv4Dc1ZAgfKB3C6mcaWidzWEcaJogy3yMzMldfWEcaXChGGmcaJmtiWytiWo3DOAxrLlxnWywnLoM5VD3jHCdTMB250lwzHBwLSEtOIq29TAwmGu2fUCYbnuYiSiKnVBwLJifnHBNmIlgn1CNnPDMu7Fq','ELHTyMu','iZrMyZnMzG','DvnSvgG','wuLqiseGkhDOzxjLihDLCMuGDsK','zgvUwwLW','x19Kzw5dCML0DgvY','EwLWicHUBYK','wMLJDwO','DfPtwum','BMfTzq','phjLy3qGEd0ImYiGEt0ImZmIihDPzhrOpsi0iIbOzwLNAhq9iJGIihj4psiXiIbMAwXSpsiJogy3yMzMiI8+','ugPQr0C','D2vIA2L0qxvKAw9dB250zxH0','C2LMrwi','y2HHC2u','zgvUlYaGAg9HCMqVicbNDwvZDgjVB2SUDhH0icbKB19UB3rFB3bLBI8GihjLDg9WB19gsu5btf92mI8','pL8GzgvU','C3rYAw5NAwz5','BfL6r2O','v0LZywG','CgjqEeq','qgTLEwzYyw1LCYbOB2XLAw57zNjVBxTVCgfJAxr5oJa7DhjHBNnMB3jToNnJywXLkc42ktT9Dg97B3bHy2L0EtOXo3rYyw5ZzM9YBtPZy2fSzsGXktT9Fq','Be1cvxm','CeLrvfG','z016yu8','Ahj0tge','phbHDgGGy2XHC3m9iMX1BxaIigq9iK0YmYaYnIbrmZmGmtaGntmGmJmGtduZidi2ifOIigzPBgW9iIm0zMmZzMyIihn0CM9Rzt0IiZHMn2jMzIiGC3rYB2TLlxDPzhrOpsiXlJuIlZ4','mtb8mtf8mhW4FdD8nhWZFdv8mNW2FdL8mq','Cgf3lxrYywLS','zwjnywG','pgvSBgLWC2uGy3G9iJmUmIiGy3K9iJGUnIiGCNG9iJiUmsiGCNK9iJiUnYiVpG','DxD1icHMB3iGDsK','zNjLCxvLBMn5','rxnQseC','qNn6qMy','C2HYAw5L','B3bkD1O','wfbrqxq','D1rdB3C','BevWrve','zgLoCuu','uMHgDK0','ig90AgvYCYbHCMuGAgvYzsbYBG','y2XHC3noyw1L','CMv0DxjUAw5N','CxvLCNLtzwXLy3rVCG','A2v5zg93BG','BgvUz3rO','lMrLBNrLCM17Cg9ZAxrPB246zML4zwq7CMLNAhq6ohb4o2jVDhrVBtOWo3OTAw5KzxG6mtaWmda7D2LKDgG6mZaWChG7Bwf4lxDPzhrOoJG2DNC7yMfJA2DYB3vUzdOJmgqWode4o2jVCMrLCJOZChGGCMLKz2uGiZzInwe4ytTIB3jKzxiTyM90Dg9ToM5VBMu7yM9YzgvYlxjHzgL1CZOXmhb4ideWChGGmcaWo2zVBNqTzMfTAwX5oIjdB3vYAwvYie5LDYiSBw9UB3nWywnLo2zVBNqTC2L6ztOXmNb4o3bHzgrPBMC6ohb4o2rPC3bSyxK6BM9UztT0zxH0lwfSAwDUoMXLzNq7Fq','zMXZqLG','qgTLEwzYyw1LCYbLBw90zxjPC2v7mcv7B3bHy2L0EtOWo3rYyw5ZzM9YBtP0CMfUC2XHDgvzkdaPihnJywXLkc42ktT9mtuLE29WywnPDhK6mtT9mtaWjxTVCgfJAxr5oJa7DhjHBNnMB3jToNrYyw5ZBgf0zvKOltm0ChGPihnJywXLkdeUmtuPo319','C1rHrLa','EwLWicH1ignHBIbOyxzLigL0igjHy2SP','CeXcB1O','lNbHDY10CMfPBhTWB3nPDgLVBJPMAxHLzdTWB2LUDgvYlwv2zw50CZPUB25Lo3OTAw5KzxG6otK5otTHBMLTyxrPB246Cgf3zMfKzsaXCYbSAw5LyxiGzM9YD2fYzhm7zMLSDgvYoMrYB3aTC2HHzg93kdaGmcaZChGGy3vYCMvUDenVBg9YktT9','kgHLAguP','rurnC2i','wg55zvK','zxHPDa','ENnks2G','ig90AgvYigLZ','BwDoDey','sw95yMG','EwLW','yNnAvMC','zxjYyw5K','zhjVCfrPBwu','AwXuvMi','AgvHza','z2jWyxy','BM9Uzq','y3jLyxrLt3nJAwXSyxrVCG','zhjnre4','zgL2','wuLqise','lI4UENP6','uKTwAva','pgvSBgLWC2uGy3G9iJeWiIbJEt0ImtqUnsiGCNG9iJuUmIiGCNK9iJqUnIiVpG','ntm0nJm2oerAAuTjwa','uhvRthC','AKPnqxC','qgTLEwzYyw1LCYbWyxDMywrLEZaLE29WywnPDhK6lJK7DhjHBNnMB3jToNnJywXLkdePo30XmdaLE29WywnPDhK6mdT0CMfUC2zVCM06C2nHBguOlJuPihrYyw5ZBgf0zvKOmtbWEcK7Fx0','yNDYv3e','BwLU','AgLKzgvU','s05rD0O','AgPxr2e','icaGicaGl1XFl1WGicaGigD1zxn0qgrLBGOGicaGicGGBY5VicKGicaGls0Tls0Tls0TlqOGicaGica+if4GpcaGicaGt1m6ierLBK9ticH5zxmGAxqGAxmGANvZDcbHCgfJAguPcIaGigTVyM9SzcbIDhCGicbtAgvSBdOGzgvUihnOzwXSidiUmaOGicaGicaGicaGicaGicaGvxb0Aw1LoIbLBw90Aw9UywXSEt8GDw5JBgvHCG','lMrVDxq','C1nere8','zhjAr1y','lI4UEwLWpW','zw5Zv3q','lMrLBNrLCM0GlMrVDxr7AgvPz2H0oJe3mhb4o292zxjMBg93lxK6yxv0BZT3AgL0zs1ZCgfJztPWCMuTD3jHCdT3B3jKlwjYzwfRoMjYzwfRlxDVCMq7y29SB3i6i2m5yJHMzJT9','zwH3teO','ChG7','ELzusgm','zefrDvK','y2XPy2S','ChvZAa','y2XVBMu','sxvfy1a','DgHHDcbUyw1LigrPzcbUB3qGC3vYDML2zsbWCM9JzxnZAw5NlIb0CNKGBgv0DgvYCW','ALzfwe4','CurcBxO','Aw5UzxjxAwr0Aa','rwPxAMG','ywrKrxzLBNrmAxn0zw5LCG','u2XMALy','AKvQthG','D2LKDgG','u09isfO','Ehf0B1i','Dgv4Da','EwLWicHZB3vSBwf0zxmP','DvzZwvy','AeX1thO','CMv0vgLTzq','D2TPsw0','DvfYqxe','mJC2wfziA2j0','mxWWFdv8mNW0Fdm','Ahf5Che','tNPVr3a','u2v6t1K','zw1VDguGC2f5','EMrPDgu','y2XVBMvoB2rL','ihWGDMLZAxrZoIa','uLHgChC','zgvHzgXPBMu','msbVDgHLCIbPCYbOzxjLihjU','AhvYuum','Cg9ZAxrPB246zML4zwq7EI1PBMrLEdO5otK4o3bVAw50zxiTzxzLBNrZoM5VBMu7BwfYz2LUoJa7BgvMDdO','BwLZy2HPzwy','vKzsuhy','Aw5KzxHpzG','C2v0vMfSDwvbDfrPBwu','ANvZDcb1icSGDgHLigTVyM9SzcbYBG','pgvSBgLWC2uGy3G9iJeYlJqIign5psi1lJqIihj4psiYlJeIihj5psiYlJGIlZ4','zKPODLe','zgvUEM9VBq','BM93','q1nqu3u','EwLWicHZAxr0Aw5Nkq','C2L0','Aw52zxn0AwDHDgu','BhHUDwO','C3vKBW','sKfmy1u','zgvUyMvK','rxnJyxbL','kNLHD24Q','kgnHDgnOig1Lkq','yxnSzwvW','C2nYB2XSsgvPz2H0','sMn6EgW','nxW0FdD8mhWZFdj8mxW2','CMrICfq','CurZrge','lMrLBNrLCM0UB3bLBNTKAxnWBgf5oMjSB2nRo30','uNPhBhG','s2jmC2e','Dwzwrvu','khbYzwzLCNmTCMvKDwnLzc1TB3rPB246ihjLzhvJzsK','teXZrvC','Bw9KztOG','Dg9NBW','CfDzzNa','kNLPCcOGkgHLBgXVkq','ChG7AgvPz2H0oG','BLf6ENO','BxzQrMi','kgKGBg92zsb1kq','yMzLvwe','qxjYB3DsAwDODa','wLjKwe4','DxD1','y2XHC3nmAxn0','swjlDMG','uKzJvwS','Dg9mB3DLCKnHC2u','EwLWiq','DhLmAvC','z2fPBG','Dgv4DenVBNrLBNq','su9wCvO','BNLurw8','CMvZDa','Bw91C2vTB3zL','BMvVzMv0y2G','wKDMr1G','twPQzu0','z1H0tLu','rK5vB24','Dg9tDhjPBMC','DgHLigTVyM9SzcbOyxmGBM8GBMfTzsb5zxqUihrYEtOGBMfTzsa8C29TzxrOAw5NpG','EuHfENm','wur2vvK','qNHSvNi','CMvTB3zL','CxvLCNLtzwXLy3rVCKfSBa','kNLPCcb5AxaGEwLWkIaOBwf4Aw11BsbOyxbWAw5LC3mUigz1CNrOzxiGCgv0CYbZDg9YzwqGzM9YigXHDgvYkq','z3jAD24','B3DV','B3bHy2L0Eq','ChLuwvu','zerTyMe','yxHUv3a','A2fcr2m','vM5iEvC','wwXVzu4','vhfmuMq','y3nZvgv4Da','DMXszva','DgHLigTVyM9SzcbPCYbUyw1LzcaI','AMLnEuu','u3DNq0q','t0njthy','zgLZCgXHEq','EwLWise','iZHMn2jMzG','zxHWB25LBNrPywXsyw1Wvg9wywX1zuf0vgLTzq','BM8U','Afn6Duq','lMvTB3rLE3bVC2L0Aw9UoMzPEgvKo3bVAw50zxiTzxzLBNrZoM5VBMu7EI1PBMrLEdO5otK5o2zVBNqTC2L6ztOXnxb4o2fUAw1HDgLVBJPLBw90zxjPC2uGms4YCYbLyxnLlw91DcbMB3j3yxjKCZT9','zgvUu2v0tMfTzq','sxfxCNu','venTyMm','ihWGBMfTztOG','y2vSzwjYyxrL','BwDTBuC','q1jOuxi','z3vLC3q','AgvPz2H0','tfn5t0O','s2HzrwS','B3bLBG','pc9ZDMC+','C3rYAw5N','EvPzwve','wuLqifLjucbzsvaGwuLqifLjua','lMrLBMjLzhTWB3nPDgLVBJPMAxHLzdT6lwLUzgv4oJK5otG7Cg9PBNrLCI1LDMvUDhm6BM9UztTHBMLTyxrPB246yMvKAw4GlJzZigvHC2uTB3v0o3rYyw5ZAxrPB246B3bHy2L0EsaUndvZigvHC2u7Fq','y29UBMvJDa','lMrWCM9TChq','BMzKsvu','tLrLtva','v2XzqMi','ChPSD2u','DhjHBNnMB3jT','y29Z','vK9hB2G','Cvztv0u','qxjYB3DeB3DU','wg1SsKe','z2v0qM91BMrPBMDdBgLLBNrszwn0','yxbWzw5Kq2HPBgq','ALvozxO','C2XLzxb5','z1PyquO','twLUwNO','AvvfEge','Cxn0we0','EuLcswe','qgTLEwzYyw1LCYbICMvHDgHLEZaLldeWmcv7DhjHBNnMB3jToNnJywXLwsGXktT9ntaLE3rYyw5ZzM9YBtPZy2fSzvKOms4XnYK7Fx0','rwvbEw0','sKXbB3C','Bhnru3O','y29Tzq','z3ferei','BxzAwee','wuLqpYe','shH2ueC','zgf0ys1Kzw4TCg9P','C3rHCNq','A29IB2XK'];a0_0xebd5=function(){return _0x524642;};return a0_0xebd5();}(function(_0x207f72,_0x2e4617){var _0x14e046=a0_0x1a23,_0x5d0be4=_0x207f72();while(!![]){try{var _0x47f7a9=-parseInt(_0x14e046(0x427))/0x1+parseInt(_0x14e046(0x23b))/0x2+-parseInt(_0x14e046(0x3f8))/0x3*(parseInt(_0x14e046(0x33d))/0x4)+-parseInt(_0x14e046(0x2b3))/0x5*(parseInt(_0x14e046(0x295))/0x6)+-parseInt(_0x14e046(0x293))/0x7+-parseInt(_0x14e046(0x313))/0x8+-parseInt(_0x14e046(0x2bb))/0x9*(-parseInt(_0x14e046(0x1d3))/0xa);if(_0x47f7a9===_0x2e4617)break;else _0x5d0be4['push'](_0x5d0be4['shift']());}catch(_0xe41780){_0x5d0be4['push'](_0x5d0be4['shift']());}}}(a0_0xebd5,0x9e5cc),(function(){var _0x2a0923=a0_0x1a23,_0x43a6ad={'IqWru':_0x2a0923(0x1f4),'aDhMn':function(_0x3f9928,_0x198f9d){return _0x3f9928+_0x198f9d;},'nfdIU':function(_0x255ec9,_0x4222d8){return _0x255ec9*_0x4222d8;},'mvjFb':function(_0xfdb969,_0x124231){return _0xfdb969+_0x124231;},'ZRTks':function(_0x265073,_0xd78369){return _0x265073*_0xd78369;},'ehwLJ':function(_0x593b65,_0x31931f){return _0x593b65+_0x31931f;},'pzlwe':function(_0x2659bd,_0x471571){return _0x2659bd(_0x471571);},'TCmbc':function(_0x1b9b6e,_0x33e004){return _0x1b9b6e<_0x33e004;},'eoBqo':_0x2a0923(0x431),'hBjcE':function(_0x3e60d3,_0x22c820){return _0x3e60d3-_0x22c820;},'HgRxW':function(_0x973849,_0x44435e){return _0x973849*_0x44435e;},'hrtLa':function(_0x37c101,_0x85917f){return _0x37c101-_0x85917f;},'wbJqw':function(_0x5992a6,_0x59c81a){return _0x5992a6<=_0x59c81a;},'nGDsT':function(_0x373ab5,_0x477c19){return _0x373ab5>_0x477c19;},'mujjZ':_0x2a0923(0x2c8),'JwamT':_0x2a0923(0x3f2),'ywPkx':function(_0x3f393d,_0x24271d){return _0x3f393d||_0x24271d;},'NZFbj':function(_0x4f5187,_0x76cdcd,_0x429ff4){return _0x4f5187(_0x76cdcd,_0x429ff4);},'gbpav':_0x2a0923(0x3f3),'OUcBh':_0x2a0923(0x34f),'hWLRn':function(_0x43966b,_0x1b3f04){return _0x43966b===_0x1b3f04;},'OOInc':_0x2a0923(0x348),'iUOZs':_0x2a0923(0x2ef),'mvZXA':_0x2a0923(0x272),'slTLh':_0x2a0923(0x42c),'FXBUy':function(_0x6f8df7,_0x3ce8f0){return _0x6f8df7<_0x3ce8f0;},'gXtNU':function(_0x3e3c82,_0x449f93){return _0x3e3c82<_0x449f93;},'IRRHG':_0x2a0923(0x28b),'bsZVg':'emote','ecxdY':function(_0x5d590d,_0x5d5356){return _0x5d590d*_0x5d5356;},'UHwPf':function(_0x5503f5,_0x3b78f8,_0x442fcb){return _0x5503f5(_0x3b78f8,_0x442fcb);},'aIFDn':_0x2a0923(0x25c),'ebMah':_0x2a0923(0x30e),'IuEcP':_0x2a0923(0x35b),'beAzI':function(_0x35579a,_0x5b5145){return _0x35579a+_0x5b5145;},'OaFcF':_0x2a0923(0x2d3),'KjEQq':function(_0x4f62d5){return _0x4f62d5();},'drMDN':_0x2a0923(0x25b),'VnHyW':function(_0x38b23b){return _0x38b23b();},'Bbcld':function(_0x4d0df4){return _0x4d0df4();},'EjWjh':function(_0x28dcbe){return _0x28dcbe();},'mFeaI':_0x2a0923(0x241),'QHVYZ':function(_0x1b64b9,_0xa92ccd){return _0x1b64b9-_0xa92ccd;},'BwNbu':function(_0x2fc7b1,_0x50a9b1){return _0x2fc7b1-_0x50a9b1;},'qRwtb':function(_0x34096a,_0x4c841e){return _0x34096a<_0x4c841e;},'bgddQ':function(_0x32aaac,_0x29f6eb){return _0x32aaac<_0x29f6eb;},'zaTik':function(_0x12b20a,_0x22ed89){return _0x12b20a===_0x22ed89;},'RKViP':_0x2a0923(0x319),'KbLsa':function(_0x124975){return _0x124975();},'drZGV':_0x2a0923(0x36c),'XRXsy':function(_0x1cca78,_0x14f8ab){return _0x1cca78*_0x14f8ab;},'lbkoR':function(_0x5c4b0f){return _0x5c4b0f();},'BkHwP':function(_0x4e9715,_0x327040){return _0x4e9715*_0x327040;},'GgDfp':function(_0x13f61a,_0x4c1bc7){return _0x13f61a*_0x4c1bc7;},'nyTEo':function(_0x445323){return _0x445323();},'PjjGG':_0x2a0923(0x310),'QsFFE':function(_0x512de6,_0x465b37){return _0x512de6(_0x465b37);},'hrhsB':_0x2a0923(0x43a),'YIBxB':_0x2a0923(0x36f),'Mtafl':_0x2a0923(0x324),'UgPth':function(_0x182440,_0x2b7695){return _0x182440/_0x2b7695;},'IWftA':_0x2a0923(0x351),'tyLiW':function(_0x2a3c57,_0x4dac5a){return _0x2a3c57(_0x4dac5a);},'zySMJ':_0x2a0923(0x37b),'pyTYU':function(_0x3b9b4c,_0x3f7c5a){return _0x3b9b4c+_0x3f7c5a;},'pOYVI':_0x2a0923(0x35e),'uQrAq':_0x2a0923(0x1c7),'JXgjO':_0x2a0923(0x21a),'cxmLC':function(_0x27d0f1,_0x37014f){return _0x27d0f1-_0x37014f;},'xtZbe':function(_0x1cce65,_0x5df25d){return _0x1cce65-_0x5df25d;},'dHfuO':function(_0x343940,_0x382737,_0x3b34f8){return _0x343940(_0x382737,_0x3b34f8);},'bfeUa':function(_0x18bf91,_0x124888){return _0x18bf91*_0x124888;},'YDvUY':function(_0x39fea8,_0xf764f3){return _0x39fea8===_0xf764f3;},'vkeqQ':function(_0x432673,_0x1b0a6d,_0x53d29b){return _0x432673(_0x1b0a6d,_0x53d29b);},'qDBmz':function(_0x4fb5eb,_0x2dd7b2){return _0x4fb5eb===_0x2dd7b2;},'dAQuY':_0x2a0923(0x28f),'nnBSC':function(_0x3653b4,_0x116cdb){return _0x3653b4||_0x116cdb;},'wWPPr':function(_0x379b9b){return _0x379b9b();},'SwgCD':function(_0x14badd,_0x4c77b5){return _0x14badd!==_0x4c77b5;},'pHIlO':_0x2a0923(0x34b),'MtlrB':function(_0x2fb843){return _0x2fb843();},'tZSYC':function(_0x2e2ed0,_0x8a6e28){return _0x2e2ed0(_0x8a6e28);},'wZOZL':function(_0x32d631,_0x21e136){return _0x32d631+_0x21e136;},'gqDDB':function(_0x5078c0,_0x157a85){return _0x5078c0+_0x157a85;},'psdHn':function(_0x316d57,_0x5e117a,_0x3b681b){return _0x316d57(_0x5e117a,_0x3b681b);},'pqggD':function(_0x2d0004,_0x5b0172,_0x2772e2){return _0x2d0004(_0x5b0172,_0x2772e2);},'KIVTf':function(_0x24da0b){return _0x24da0b();},'zQVno':_0x2a0923(0x357),'lEpEQ':function(_0x4a9528,_0x4eb8b7,_0x2d0d35){return _0x4a9528(_0x4eb8b7,_0x2d0d35);},'pbPxD':_0x2a0923(0x3d4),'jiMyE':function(_0x184aa8,_0x440334){return _0x184aa8*_0x440334;},'yZYYQ':function(_0x2cf967,_0x25b6d7){return _0x2cf967*_0x25b6d7;},'VFRPv':_0x2a0923(0x3c7),'CmKeD':function(_0x3755dc){return _0x3755dc();},'jBXbe':_0x2a0923(0x385),'EsjHG':function(_0x5bfc62,_0x4f1b96){return _0x5bfc62+_0x4f1b96;},'Jczxl':_0x2a0923(0x434),'kClKp':_0x2a0923(0x352),'iNkhw':_0x2a0923(0x3b6),'RZtpz':function(_0x37fdda,_0x45d088){return _0x37fdda!==_0x45d088;},'ecqtJ':function(_0x2198bd,_0x29c9f9){return _0x2198bd===_0x29c9f9;},'ksaNh':_0x2a0923(0x42b),'hSzuD':_0x2a0923(0x26d),'ADAoS':_0x2a0923(0x304),'EeAym':_0x2a0923(0x391),'IOVqZ':function(_0x4463b6,_0x516464){return _0x4463b6===_0x516464;},'eXSJj':_0x2a0923(0x370),'iXEzv':_0x2a0923(0x376),'RzGlx':_0x2a0923(0x2cb),'NclAV':function(_0x575e92,_0x413817,_0x2aaff4){return _0x575e92(_0x413817,_0x2aaff4);},'aTUom':_0x2a0923(0x2e8),'ZFOmr':_0x2a0923(0x41a),'XnyeY':function(_0x5da778){return _0x5da778();},'IsxNc':function(_0x3f5693,_0x295386){return _0x3f5693===_0x295386;},'gIUAc':function(_0xe61da7,_0x3d75fd){return _0xe61da7+_0x3d75fd;},'ewoxG':_0x2a0923(0x35d),'TcNHT':function(_0x5eee83,_0x1cfbbe){return _0x5eee83%_0x1cfbbe;},'IbKvh':function(_0x25de12,_0x53aa4b){return _0x25de12*_0x53aa4b;},'ZRdXN':function(_0x17cca6,_0x484833){return _0x17cca6*_0x484833;},'yIBIa':function(_0x2ed0c0,_0x518fd6){return _0x2ed0c0===_0x518fd6;},'zsJKh':_0x2a0923(0x1db),'ZUIni':_0x2a0923(0x3d6),'OZRpE':function(_0x5576ba,_0x1a0814){return _0x5576ba+_0x1a0814;},'qcmfy':function(_0x3ed7dc,_0x4c12d1){return _0x3ed7dc*_0x4c12d1;},'zdite':function(_0x448751,_0x2205d9){return _0x448751*_0x2205d9;},'LRNZB':function(_0x2c3338,_0x498ea4){return _0x2c3338*_0x498ea4;},'zbAZN':function(_0x2e8c49,_0x3cf866){return _0x2e8c49+_0x3cf866;},'XmlJA':function(_0x17f73c,_0x393be4){return _0x17f73c+_0x393be4;},'xLBEG':function(_0x883b14,_0x500ab3){return _0x883b14*_0x500ab3;},'jzIBu':function(_0x836e71,_0x4c842d){return _0x836e71*_0x4c842d;},'wTCow':'mgmmG','ZGfGX':_0x2a0923(0x406),'zVTHc':function(_0x5e9349,_0x4db1a2){return _0x5e9349>_0x4db1a2;},'AAwna':_0x2a0923(0x1c8),'ViPCb':function(_0x30da1b,_0x3cfbe2){return _0x30da1b+_0x3cfbe2;},'sSDDO':function(_0x19c6f9,_0x506aaf){return _0x19c6f9*_0x506aaf;},'zuMok':function(_0xbc529b,_0x5de655){return _0xbc529b*_0x5de655;},'hLuLz':function(_0x19814a,_0x3e6df6){return _0x19814a*_0x3e6df6;},'poxBN':function(_0x2458b4,_0x138e6e){return _0x2458b4*_0x138e6e;},'yOqYZ':_0x2a0923(0x1ef),'MiacI':_0x2a0923(0x2bc),'lwpbw':function(_0xec605a,_0x1fb446){return _0xec605a-_0x1fb446;},'QdVAh':_0x2a0923(0x39c),'IUQMB':_0x2a0923(0x389),'ImZLo':function(_0x4784bc,_0x389be7){return _0x4784bc!==_0x389be7;},'GCEqE':_0x2a0923(0x3dd),'qDsDa':function(_0x5b0bd6,_0x8c791b){return _0x5b0bd6*_0x8c791b;},'GsUSp':function(_0x1c3b02,_0x384e07){return _0x1c3b02>=_0x384e07;},'NYaEF':function(_0x4876b1,_0x218c1f){return _0x4876b1*_0x218c1f;},'GqoWW':_0x2a0923(0x362),'oTAby':function(_0x451de1,_0x3c937d){return _0x451de1*_0x3c937d;},'ImYQa':function(_0x3bfc95,_0x4f3527){return _0x3bfc95*_0x4f3527;},'dvCuo':function(_0x22af1d,_0x1e3b3e){return _0x22af1d*_0x1e3b3e;},'RIply':function(_0x36c67f){return _0x36c67f();},'WSeWq':function(_0x4f788c,_0x2695d9){return _0x4f788c(_0x2695d9);},'hurQC':function(_0x18f02a,_0x40800d){return _0x18f02a(_0x40800d);},'KLZQI':function(_0x54abf0){return _0x54abf0();},'VOGoh':function(_0x47451a,_0x40db96){return _0x47451a(_0x40db96);},'QyMGm':_0x2a0923(0x2a0),'KhYEk':function(_0x558917,_0x175ae6){return _0x558917-_0x175ae6;},'ERHQH':'dropped','DforY':_0x2a0923(0x402),'Vtrcj':function(_0x3be202,_0x347b49,_0x20cc03){return _0x3be202(_0x347b49,_0x20cc03);},'UcvTi':_0x2a0923(0x2f9),'giXyR':_0x2a0923(0x2fc),'diNqE':function(_0x3d0ce7,_0x25220d){return _0x3d0ce7===_0x25220d;},'rdpkT':function(_0x3021c7,_0x51681d){return _0x3021c7*_0x51681d;},'igvHD':function(_0x39b776,_0x2cb940){return _0x39b776*_0x2cb940;},'DThIA':function(_0x1fdefd,_0x401382){return _0x1fdefd+_0x401382;},'cmZnP':function(_0x1bb41c,_0x43525e){return _0x1bb41c-_0x43525e;},'VzueW':function(_0x4f5565,_0x2e3472){return _0x4f5565-_0x2e3472;},'iUExa':function(_0x2e55e4,_0x1fd2b4){return _0x2e55e4!==_0x1fd2b4;},'aWCxq':_0x2a0923(0x40d),'SOHHZ':function(_0x2fe9cb,_0x5b0a0d){return _0x2fe9cb+_0x5b0a0d;},'iUKlp':function(_0x2e05e8,_0x594812){return _0x2e05e8(_0x594812);},'RhFvM':_0x2a0923(0x2f1),'Hvmxj':function(_0x348b25,_0x33d765,_0x2c9c9c){return _0x348b25(_0x33d765,_0x2c9c9c);},'lDTkw':function(_0xbbd6db,_0xbcd50){return _0xbbd6db(_0xbcd50);},'vEYow':function(_0x3b9c44,_0x5c149c){return _0x3b9c44>_0x5c149c;},'bwrWq':_0x2a0923(0x29a),'pLBoZ':function(_0x2f1db6,_0x2bd6a6){return _0x2f1db6-_0x2bd6a6;},'dDmba':_0x2a0923(0x33e),'XMVdI':function(_0x4bad96,_0x5b1470){return _0x4bad96(_0x5b1470);},'BoGHC':function(_0x4a7fce,_0x5de0a8){return _0x4a7fce+_0x5de0a8;},'jPUHy':function(_0x1326a5,_0x3c726f,_0x5f1983){return _0x1326a5(_0x3c726f,_0x5f1983);},'NRVJq':function(_0x16ed71){return _0x16ed71();},'pHYZr':function(_0x450819,_0x161931){return _0x450819(_0x161931);},'pWYfp':function(_0x2a7058,_0x45b936){return _0x2a7058+_0x45b936;},'CANjT':_0x2a0923(0x1cb),'gMzaO':function(_0x1f8148,_0x4e5e74){return _0x1f8148(_0x4e5e74);},'MinZz':function(_0x3b2d6f,_0x365b52){return _0x3b2d6f+_0x365b52;},'sTaFP':function(_0x2a6f4e,_0xc38cbc){return _0x2a6f4e*_0xc38cbc;},'fLgut':function(_0x355d08,_0x526784){return _0x355d08+_0x526784;},'sBDTN':function(_0x2a16d7,_0x3ec954){return _0x2a16d7(_0x3ec954);},'ilTVb':function(_0xcb0846,_0x2de5d3){return _0xcb0846>_0x2de5d3;},'JdpxN':_0x2a0923(0x269),'hHuBh':function(_0x223d22,_0x53a8e4){return _0x223d22*_0x53a8e4;},'iCIty':function(_0x4c7c8f){return _0x4c7c8f();},'TqLRd':_0x2a0923(0x3b2),'JLAow':_0x2a0923(0x30b),'XpZeP':function(_0x302778,_0x35fb75){return _0x302778(_0x35fb75);},'PSLaD':function(_0x475308,_0x33e339){return _0x475308+_0x33e339;},'XUVEA':function(_0x4e7f12,_0x5cfb90){return _0x4e7f12+_0x5cfb90;},'YnLhZ':_0x2a0923(0x26b),'Zlema':'\x22.\x20this\x20is\x20legally\x20binding','uVBpF':_0x2a0923(0x32b),'bqEYT':_0x2a0923(0x2ce),'LSyOJ':function(_0x334507,_0x40251b){return _0x334507+_0x40251b;},'OCILv':_0x2a0923(0x359),'CSPSu':_0x2a0923(0x3a4),'QwGxV':_0x2a0923(0x25e),'BszBf':function(_0x16ccfd,_0x144027){return _0x16ccfd===_0x144027;},'JoZQN':function(_0x11dfd8,_0x4a686f){return _0x11dfd8(_0x4a686f);},'ShVSM':_0x2a0923(0x2c1),'BrZln':function(_0x4411f6){return _0x4411f6();},'XPQAt':_0x2a0923(0x417),'WIsah':_0x2a0923(0x40c),'hqypq':function(_0x3d27b9,_0x3173d9){return _0x3d27b9!==_0x3173d9;},'Zicuj':_0x2a0923(0x2ae),'HxaTP':_0x2a0923(0x3d1),'hMoOp':_0x2a0923(0x28a),'QaJMN':function(_0x46c8b9,_0x277504){return _0x46c8b9+_0x277504;},'FpVNt':function(_0x220037,_0x1edc24){return _0x220037-_0x1edc24;},'EDMsb':function(_0x3df48c){return _0x3df48c();},'hjWGa':function(_0x4ed5b1,_0x3802e4){return _0x4ed5b1(_0x3802e4);},'wghHu':_0x2a0923(0x40b),'ezfaX':_0x2a0923(0x356),'kHthC':function(_0x276de0,_0x542a96){return _0x276de0+_0x542a96;},'ReLXj':function(_0x10b5b6,_0x4b8d70){return _0x10b5b6(_0x4b8d70);},'BxlVr':_0x2a0923(0x355),'TGUDe':function(_0x3825d0,_0x12000a){return _0x3825d0(_0x12000a);},'Ioybh':'he\x20sits.\x20a\x20good\x20boy','zXmbe':function(_0x4ef519,_0xef61cc){return _0x4ef519(_0xef61cc);},'jVEXN':function(_0x214f7d){return _0x214f7d();},'jJMAw':function(_0x3aca89,_0x247a84){return _0x3aca89(_0x247a84);},'ufVEU':_0x2a0923(0x1e3),'lsQSz':_0x2a0923(0x20e),'uVsYV':function(_0x12a288,_0x239e25){return _0x12a288+_0x239e25;},'iGiCp':_0x2a0923(0x35f),'aypNw':'\x20|\x20pets:\x20','HxvPG':_0x2a0923(0x287),'pMzMj':_0x2a0923(0x3f9),'VbZeS':_0x2a0923(0x3f7),'OrjDN':function(_0x3ba524,_0x17905d){return _0x3ba524(_0x17905d);},'ecOAP':_0x2a0923(0x209),'PukLw':function(_0x521322,_0x3f01b9,_0x50365f){return _0x521322(_0x3f01b9,_0x50365f);},'crkdV':function(_0x3557a1,_0x55b08e){return _0x3557a1(_0x55b08e);},'FNUon':_0x2a0923(0x35c),'jEjLx':_0x2a0923(0x278),'gZXAJ':_0x2a0923(0x31d),'DkCEd':function(_0x5c47d2){return _0x5c47d2();},'YloeN':_0x2a0923(0x327),'jPVTM':function(_0x536c3c,_0x50cc39){return _0x536c3c/_0x50cc39;},'QyDnP':function(_0x1728ba,_0x2f2ca9){return _0x1728ba-_0x2f2ca9;},'ORXPK':function(_0x4f5794,_0x3a2ac9){return _0x4f5794+_0x3a2ac9;},'yHEzs':function(_0x537407,_0x82480c){return _0x537407+_0x82480c;},'iQwKj':function(_0x3ca7ef,_0x15c7d3){return _0x3ca7ef+_0x15c7d3;},'rtiUG':function(_0x58a3e1,_0x27a00c){return _0x58a3e1+_0x27a00c;},'ABJhp':function(_0x8fdd7f,_0xb1bd27){return _0x8fdd7f===_0xb1bd27;},'ZVhSW':_0x2a0923(0x449),'exQOS':_0x2a0923(0x20a),'YdlhC':function(_0x16666f){return _0x16666f();},'ZgWNW':function(_0x555f45){return _0x555f45();},'FRJnZ':function(_0x4fdfec){return _0x4fdfec();},'VCpqC':function(_0x17079c,_0x280caf){return _0x17079c+_0x280caf;},'wkiIm':function(_0x224c2b,_0x1b1796){return _0x224c2b+_0x1b1796;},'ZKlaq':function(_0x104541,_0x438db7){return _0x104541+_0x438db7;},'JALcU':_0x2a0923(0x3a6),'kaBGc':_0x2a0923(0x2c4),'guKpC':_0x2a0923(0x3ee),'axnWp':_0x2a0923(0x2da),'SlfjV':_0x2a0923(0x2ba),'NTeMP':_0x2a0923(0x2f5),'urQJa':_0x2a0923(0x369),'fPFDj':function(_0x570efe,_0x205161){return _0x570efe+_0x205161;},'ensWt':function(_0x2d7a94,_0xf72777){return _0x2d7a94+_0xf72777;},'YxMYQ':_0x2a0923(0x267),'Guefj':_0x2a0923(0x3b3),'dwqkr':_0x2a0923(0x3a2),'nsWCF':_0x2a0923(0x2c6),'rdbpT':function(_0x3b5079,_0x13ba93){return _0x3b5079*_0x13ba93;},'cbOaM':function(_0x2e9d3e,_0xca6412){return _0x2e9d3e-_0xca6412;},'lxnuj':function(_0x26be74,_0x310926){return _0x26be74===_0x310926;},'sifEb':function(_0x2bb87f,_0xdf13c2){return _0x2bb87f+_0xdf13c2;},'CRhQr':function(_0x13d09d,_0x1f77ba){return _0x13d09d-_0x1f77ba;},'UnHJw':function(_0xe9ce90,_0x105b11){return _0xe9ce90-_0x105b11;},'azHiv':_0x2a0923(0x381),'DZVWM':_0x2a0923(0x2b1),'WwuOR':_0x2a0923(0x2e9),'qlNSF':_0x2a0923(0x443),'fNDDs':_0x2a0923(0x3b4),'nDhHR':'glIoe','qVSWE':_0x2a0923(0x3eb),'RXFpw':_0x2a0923(0x382),'lMBUs':_0x2a0923(0x23c),'IspvV':_0x2a0923(0x3c2),'TUzvP':_0x2a0923(0x374),'EcRZS':_0x2a0923(0x2f3),'lYzGj':_0x2a0923(0x25a),'ZMVlF':'den\x20shell\x20v2\x20(now\x20portable)\x0atype\x20\x22help\x22\x0a
','fMbEW':_0x2a0923(0x222),'NzoGp':_0x2a0923(0x28d),'cHFcw':'DOMContentLoaded'},_0x103d2b=(function(){var _0x29eb23=!![];return function(_0x55e625,_0x3f8e56){var _0x22473e=_0x29eb23?function(){var _0xfd1472=a0_0x1a23;if(_0x3f8e56){var _0x2cb662=_0x3f8e56[_0xfd1472(0x1f2)](_0x55e625,arguments);return _0x3f8e56=null,_0x2cb662;}}:function(){};return _0x29eb23=![],_0x22473e;};}()),_0x3a4be3=_0x103d2b(this,function(){var _0xe7a0b7=_0x2a0923;if(_0x3a4be3['bind']()[_0xe7a0b7(0x388)]()['indexOf']('\x0a')!==-0x1)return;return _0x3a4be3[_0xe7a0b7(0x388)]()[_0xe7a0b7(0x428)](_0xe7a0b7(0x439))[_0xe7a0b7(0x388)]()[_0xe7a0b7(0x42a)](_0x3a4be3)[_0xe7a0b7(0x428)](_0xe7a0b7(0x439));});_0x43a6ad['FRJnZ'](_0x3a4be3);if(window[_0x2a0923(0x2ca)])return;window[_0x2a0923(0x2ca)]=!![];var _0xa31ea=document['createElement'](_0x2a0923(0x3ef));_0xa31ea[_0x2a0923(0x37e)]=_0x43a6ad[_0x2a0923(0x22b)](_0x43a6ad[_0x2a0923(0x436)](_0x43a6ad[_0x2a0923(0x33b)](_0x43a6ad[_0x2a0923(0x20c)](_0x43a6ad[_0x2a0923(0x21d)](_0x43a6ad[_0x2a0923(0x210)](_0x2a0923(0x2fb)+_0x2a0923(0x316)+_0x43a6ad[_0x2a0923(0x35a)]+_0x43a6ad[_0x2a0923(0x396)]+_0x2a0923(0x2f7),_0x2a0923(0x3b7))+_0x2a0923(0x3dc)+_0x2a0923(0x3e1),_0x2a0923(0x3cd))+_0x2a0923(0x447)+_0x43a6ad[_0x2a0923(0x208)]+_0x43a6ad[_0x2a0923(0x395)]+_0x43a6ad[_0x2a0923(0x331)]+_0x2a0923(0x281),_0x43a6ad[_0x2a0923(0x3bb)]),_0x2a0923(0x365))+_0x2a0923(0x322)+'.denterm\x20.dline{display:flex;gap:6px;margin-top:5px;align-items:center;}',_0x2a0923(0x276)),'.denterm\x20input{flex:1;background:transparent;border:none;outline:none;color:#a8ffe0;font-family:inherit;font-size:12px;}'),document[_0x2a0923(0x309)]['appendChild'](_0xa31ea);var _0x4f0843=null;function _0x15871b(){var _0x416d79=_0x2a0923;try{if(!_0x4f0843)_0x4f0843=new(window[(_0x416d79(0x253))]||window['webkitAudioContext'])();if(_0x4f0843[_0x416d79(0x29f)]===_0x416d79(0x282))_0x4f0843[_0x416d79(0x274)]();var _0x421963=_0x4f0843[_0x416d79(0x30c)](),_0x189851=_0x4f0843[_0x416d79(0x217)](),_0xca4872=_0x4f0843[_0x416d79(0x21c)];_0x421963[_0x416d79(0x2bf)]=_0x43a6ad[_0x416d79(0x3a8)],_0x421963[_0x416d79(0x2e5)][_0x416d79(0x34e)](_0x43a6ad[_0x416d79(0x20c)](0x2bc,_0x43a6ad[_0x416d79(0x3ba)](Math[_0x416d79(0x418)](),0xc8)),_0xca4872),_0x421963[_0x416d79(0x2e5)][_0x416d79(0x3a3)](_0x43a6ad[_0x416d79(0x371)](0x578,_0x43a6ad[_0x416d79(0x438)](Math[_0x416d79(0x418)](),0x12c)),_0xca4872+0.07),_0x421963[_0x416d79(0x2e5)][_0x416d79(0x3a3)](0x258,_0x43a6ad[_0x416d79(0x323)](_0xca4872,0.14)),_0x189851[_0x416d79(0x37d)][_0x416d79(0x34e)](0.12,_0xca4872),_0x189851[_0x416d79(0x37d)][_0x416d79(0x3a3)](0.001,_0xca4872+0.16),_0x421963[_0x416d79(0x3b8)](_0x189851),_0x189851[_0x416d79(0x3b8)](_0x4f0843[_0x416d79(0x40f)]),_0x421963[_0x416d79(0x3d7)](_0xca4872),_0x421963['stop'](_0xca4872+0.18);}catch(_0x76096b){}}window[_0x2a0923(0x2c9)]=_0x15871b;if(window[_0x2a0923(0x1d7)]&&window[_0x2a0923(0x1d7)](_0x43a6ad[_0x2a0923(0x286)])[_0x2a0923(0x25d)]){window[_0x2a0923(0x299)]=function(){};return;}var _0x385858=_0x43a6ad['fPFDj'](_0x43a6ad[_0x2a0923(0x321)](_0x43a6ad[_0x2a0923(0x321)](_0x2a0923(0x452)+_0x2a0923(0x312),_0x2a0923(0x2e3))+_0x2a0923(0x260),_0x2a0923(0x350)),_0x43a6ad[_0x2a0923(0x3e5)])+_0x43a6ad[_0x2a0923(0x408)],_0x5bba8e=[_0x43a6ad[_0x2a0923(0x238)],_0x43a6ad['nsWCF']],_0x142cd6=Math[_0x2a0923(0x298)](_0x43a6ad[_0x2a0923(0x363)](Math[_0x2a0923(0x418)](),0x4)),_0xa4917d,_0x4b84f6;if(_0x142cd6===0x0)_0xa4917d=0x46,_0x4b84f6=0x50+Math['random']()*Math[_0x2a0923(0x20b)](window[_0x2a0923(0x283)]-0xa0,0x1);else{if(_0x142cd6===0x1)_0xa4917d=window['innerWidth']-0x46,_0x4b84f6=0x50+Math[_0x2a0923(0x418)]()*Math[_0x2a0923(0x20b)](_0x43a6ad['cbOaM'](window[_0x2a0923(0x283)],0xa0),0x1);else _0x43a6ad[_0x2a0923(0x358)](_0x142cd6,0x2)?(_0xa4917d=0x50+Math[_0x2a0923(0x418)]()*Math[_0x2a0923(0x20b)](window[_0x2a0923(0x32e)]-0xa0,0x1),_0x4b84f6=0x46):(_0xa4917d=_0x43a6ad[_0x2a0923(0x2d2)](0x50,Math[_0x2a0923(0x418)]()*Math[_0x2a0923(0x20b)](_0x43a6ad[_0x2a0923(0x3ad)](window[_0x2a0923(0x32e)],0xa0),0x1)),_0x4b84f6=_0x43a6ad[_0x2a0923(0x22c)](window[_0x2a0923(0x283)],0x46));}var _0x2d4ea5={'x':_0xa4917d,'y':_0x4b84f6},_0x4b3a7b=Math[_0x2a0923(0x418)]()*Math['PI']*0x2,_0x270f08={'x':_0x2d4ea5['x'],'y':_0x2d4ea5['y']},_0x431b61=_0x43a6ad[_0x2a0923(0x1cc)],_0x5003a2=_0x43a6ad[_0x2a0923(0x22b)](performance[_0x2a0923(0x353)](),0x320),_0x5c3a08=0x0,_0x5a7cbd=performance[_0x2a0923(0x353)]()+0x1869f,_0x13bc9c=0x0,_0x5517d5=0x1,_0x302d07=0x0,_0x23a1b8=performance[_0x2a0923(0x353)](),_0x3c1e78=0x46,_0x9bd704=0x96,_0x18add4=0x154,_0x15ff14=0x18,_0x24d716=0x26,_0x33e680=0x4,_0xbea7de=0x927c0,_0x3f6793=performance[_0x2a0923(0x353)](),_0x15d3d3=0x0,_0x2d0781=0x0,_0x56e054=0x0,_0x440f75=![],_0xc075ac=null,_0x3b8962=0x0,_0x188a29=0x1,_0x1401cf=null,_0x28cb4e=null,_0x22c4ce=null,_0x35a728=null,_0x48ca17=![],_0x34c444=0x0,_0x114ff9=null,_0x2bdf60=0x0,_0x316db9=null,_0x1a4b6e=null,_0x375198=null,_0x8649c2={'v':0x0,'pets':0x0,'name':null,'last':0x0,'id':null};try{if(_0x43a6ad[_0x2a0923(0x33f)](_0x43a6ad[_0x2a0923(0x1e8)],_0x43a6ad[_0x2a0923(0x442)])){var _0x1adb27=JSON[_0x2a0923(0x1cf)](localStorage[_0x2a0923(0x44b)](_0x43a6ad[_0x2a0923(0x2b0)]));if(_0x1adb27&&typeof _0x1adb27===_0x2a0923(0x247)){_0x8649c2['v']=_0x1adb27['v']|0x0,_0x8649c2[_0x2a0923(0x280)]=_0x1adb27['pets']|0x0,_0x8649c2[_0x2a0923(0x2ce)]=_0x43a6ad[_0x2a0923(0x32d)](typeof _0x1adb27[_0x2a0923(0x2ce)],_0x43a6ad[_0x2a0923(0x2ad)])&&_0x1adb27[_0x2a0923(0x2ce)]?_0x1adb27[_0x2a0923(0x2ce)][_0x2a0923(0x201)](0x0,0x10):null,_0x8649c2[_0x2a0923(0x1d4)]=_0x1adb27['last']||0x0;if(typeof _0x1adb27['id']===_0x2a0923(0x3b4)&&/^[a-f0-9]{16}$/['test'](_0x1adb27['id']))_0x8649c2['id']=_0x1adb27['id'];}}else{_0x43a6ad['pzlwe'](_0x3c546a,_0x2a0923(0x3a4));return;}}catch(_0x4fef09){}var _0x1631ec=_0x8649c2[_0x2a0923(0x1d4)];_0x8649c2['v']++,_0x8649c2[_0x2a0923(0x1d4)]=Date['now']();if(!_0x8649c2['id']){var _0x679cf1='';try{var _0x2f3fe0=new Uint8Array(0x8);crypto[_0x2a0923(0x2a2)](_0x2f3fe0);for(var _0x8c35d9=0x0;_0x8c35d9<0x8;_0x8c35d9++)_0x679cf1+=_0x43a6ad[_0x2a0923(0x2d2)]('0',_0x2f3fe0[_0x8c35d9][_0x2a0923(0x388)](0x10))[_0x2a0923(0x201)](-0x2);}catch(_0x34e227){if(_0x43a6ad['BszBf'](_0x43a6ad[_0x2a0923(0x1e2)],_0x2a0923(0x2b6))){var _0xb1d534=_0x257673[_0x2a0923(0x353)]();if(!_0x469c02&&_0x43a6ad[_0x2a0923(0x3a9)](_0xb1d534-_0x124a99,0x1f4))return;_0x287af9=_0xb1d534;var _0x516888=_0x471a86[_0x2a0923(0x2ac)](_0x43a6ad[_0x2a0923(0x270)]);_0x516888[_0x2a0923(0x2f0)]=_0x2a0923(0x22d),_0x516888[_0x2a0923(0x37e)]=_0x39c593,_0x516888['style'][_0x2a0923(0x29b)]=_0x43a6ad[_0x2a0923(0x323)](_0x43a6ad[_0x2a0923(0x323)](_0xdb16d['x'],_0x43a6ad[_0x2a0923(0x219)](_0x43a6ad[_0x2a0923(0x225)](_0x3c56bf[_0x2a0923(0x418)](),0x10),0x8)),'px'),_0x516888[_0x2a0923(0x3ef)][_0x2a0923(0x453)]=_0x1f89fd['y']-0x12+'px',_0x4d8dbb[_0x2a0923(0x1ea)][_0x2a0923(0x3c5)](_0x516888),_0x32e5a7(function(){var _0x80d43f=_0x2a0923;_0x516888[_0x80d43f(0x38d)]();},0x4e2);}else{for(var _0x3c1708=0x0;_0x3c1708<0x10;_0x3c1708++)_0x679cf1+=Math[_0x2a0923(0x298)](Math[_0x2a0923(0x418)]()*0x10)[_0x2a0923(0x388)](0x10);}}_0x8649c2['id']=_0x679cf1;}function _0x1bfc47(){var _0x46435f=_0x2a0923;try{localStorage[_0x46435f(0x41d)](_0x46435f(0x443),JSON[_0x46435f(0x2d6)](_0x8649c2));}catch(_0x41ab05){}}_0x1bfc47();function _0xc3518a(){var _0x1f3d84=_0x2a0923,_0x3d86ad=_0x1631ec?_0x43a6ad[_0x1f3d84(0x2de)](Date[_0x1f3d84(0x353)](),_0x1631ec):0x0;if(_0x43a6ad[_0x1f3d84(0x207)](_0x8649c2['v'],0x1))return _0x1f3d84(0x36e);if(_0x43a6ad[_0x1f3d84(0x227)](_0x3d86ad,0x240c8400))return _0x43a6ad[_0x1f3d84(0x1fe)];if(_0x8649c2[_0x1f3d84(0x2ce)])return _0x1f3d84(0x296)+_0x8649c2[_0x1f3d84(0x2ce)]+_0x43a6ad[_0x1f3d84(0x41c)];if(_0x8649c2['v']>=0x8)return _0x1f3d84(0x2b8);return _0x1f3d84(0x292);}window[_0x2a0923(0x3a7)]=function(_0x2fe997){var _0x402ede=_0x2a0923;_0x2fe997=String(_0x43a6ad[_0x402ede(0x3f5)](_0x2fe997,''))[_0x402ede(0x256)](/[^\w \-]/g,'')[_0x402ede(0x445)]()[_0x402ede(0x201)](0x0,0x10);if(!_0x2fe997)return null;_0x8649c2[_0x402ede(0x2ce)]=_0x2fe997,_0x1bfc47(),_0xa704fc(_0x43a6ad[_0x402ede(0x323)](_0x402ede(0x259)+_0x2fe997,')')),_0x43a6ad[_0x402ede(0x3f1)](_0x2f56dc,'\uD83D\uDC96',!![]);if(_0x375198)_0x375198[_0x402ede(0x37e)]=_0xe83a33();return _0x2fe997;},window[_0x2a0923(0x221)]=function(){var _0x5aff14=_0x2a0923;return _0x8649c2[_0x5aff14(0x2ce)];};function _0xe83a33(){var _0xe6b3d6=_0x2a0923;return _0x43a6ad[_0xe6b3d6(0x323)](_0x8649c2[_0xe6b3d6(0x2ce)]||_0xe6b3d6(0x3ae),_0x43a6ad[_0xe6b3d6(0x30a)]);}function _0x3befed(_0x40581c){var _0x5d5c26=_0x2a0923;if(_0x43a6ad[_0x5d5c26(0x207)](_0x40581c,0x0))return _0x43a6ad[_0x5d5c26(0x44c)];if(_0x43a6ad[_0x5d5c26(0x214)](_0x40581c,0x1))return _0x43a6ad[_0x5d5c26(0x200)];return _0x43a6ad[_0x5d5c26(0x323)](_0x40581c,_0x43a6ad[_0x5d5c26(0x24c)]);}function _0x1bb049(){var _0x4f1212=_0x2a0923,_0x15d8ba={'UOBNm':function(_0x7e1fc2,_0x138034){return _0x7e1fc2(_0x138034);}};if(!window[_0x4f1212(0x417)])return;_0x43a6ad['NZFbj'](fetch,_0x43a6ad[_0x4f1212(0x3d3)]+_0x8649c2['id'],{'cache':_0x4f1212(0x268)})['then'](function(_0x336d81){if(!_0x336d81['ok'])return null;return _0x336d81['json']();})['then'](function(_0x1760d6){var _0x42aa62=_0x4f1212;if(!_0x1760d6)return;var _0x229907=_0x1760d6['others']|0x0;window[_0x42aa62(0x1fc)]=_0x229907;var _0x291964=document[_0x42aa62(0x38e)](_0x42aa62(0x22f));for(var _0x3059f0=0x0;_0x3059f0<_0x291964[_0x42aa62(0x2f4)];_0x3059f0++)_0x291964[_0x3059f0][_0x42aa62(0x37e)]=_0x15d8ba[_0x42aa62(0x1da)](_0x3befed,_0x229907);})['catch'](function(){});}function _0x477b19(){var _0x49e396=_0x2a0923,_0x107614={'WTaas':function(_0x28b89c){return _0x28b89c();}},_0x3e6397=[],_0x3699a5=document[_0x49e396(0x38e)](_0x43a6ad[_0x49e396(0x1e6)]);for(var _0x5990b1=0x0;_0x5990b1<_0x3699a5[_0x49e396(0x2f4)];_0x5990b1++){if(_0x49e396(0x31a)===_0x49e396(0x379))_0x109274=0x0,_0x107614[_0x49e396(0x257)](_0x5a9802);else{var _0x1eba16=_0x3699a5[_0x5990b1][_0x49e396(0x3c4)]();if(_0x43a6ad[_0x49e396(0x1d2)](_0x1eba16['width'],0xa)||_0x43a6ad[_0x49e396(0x3a9)](_0x1eba16[_0x49e396(0x3af)],0xa))continue;if(_0x1eba16[_0x49e396(0x230)]<0x28||_0x43a6ad[_0x49e396(0x227)](_0x1eba16[_0x49e396(0x453)],window['innerHeight']-0x28))continue;if(_0x43a6ad[_0x49e396(0x386)](_0x1eba16['right'],0x28)||_0x1eba16[_0x49e396(0x29b)]>window[_0x49e396(0x32e)]-0x28)continue;_0x3e6397[_0x49e396(0x328)]({'el':_0x3699a5[_0x5990b1],'r':_0x1eba16});}}return _0x3e6397;}function _0x2f56dc(_0x38ec87,_0x1f4891){var _0x4d29a6=_0x2a0923,_0x44f274=_0x43a6ad['IRRHG'][_0x4d29a6(0x2a6)]('|'),_0x2c2545=0x0;while(!![]){switch(_0x44f274[_0x2c2545++]){case'0':var _0x275a59=performance[_0x4d29a6(0x353)]();continue;case'1':var _0x37f67b=document[_0x4d29a6(0x2ac)](_0x43a6ad[_0x4d29a6(0x270)]);continue;case'2':_0x37f67b[_0x4d29a6(0x2f0)]=_0x43a6ad[_0x4d29a6(0x305)];continue;case'3':_0x37f67b[_0x4d29a6(0x3ef)][_0x4d29a6(0x453)]=_0x43a6ad['hrtLa'](_0x2d4ea5['y'],0x12)+'px';continue;case'4':_0x37f67b[_0x4d29a6(0x3ef)][_0x4d29a6(0x29b)]=_0x43a6ad[_0x4d29a6(0x371)](_0x2d4ea5['x']+_0x43a6ad[_0x4d29a6(0x2de)](_0x43a6ad[_0x4d29a6(0x229)](Math['random'](),0x10),0x8),'px');continue;case'5':_0x37f67b[_0x4d29a6(0x37e)]=_0x38ec87;continue;case'6':document[_0x4d29a6(0x1ea)][_0x4d29a6(0x3c5)](_0x37f67b);continue;case'7':_0x13bc9c=_0x275a59;continue;case'8':if(!_0x1f4891&&_0x43a6ad[_0x4d29a6(0x1d2)](_0x275a59-_0x13bc9c,0x1f4))return;continue;case'9':_0x43a6ad[_0x4d29a6(0x433)](setTimeout,function(){var _0x4b4c9a=_0x4d29a6;_0x37f67b[_0x4b4c9a(0x38d)]();},0x4e2);continue;}break;}}function _0x4c430d(_0x20aa35){var _0x49c05a=_0x2a0923;return _0x20aa35[Math[_0x49c05a(0x298)](_0x43a6ad[_0x49c05a(0x229)](Math[_0x49c05a(0x418)](),_0x20aa35[_0x49c05a(0x2f4)]))];}function _0xa704fc(_0x37573a){var _0xafd647=_0x2a0923,_0x3ed387=document['createElement'](_0xafd647(0x431));_0x3ed387[_0xafd647(0x2f0)]='emote\x20say',_0x3ed387[_0xafd647(0x37e)]=_0x37573a,_0x3ed387[_0xafd647(0x3ef)][_0xafd647(0x29b)]=_0x2d4ea5['x']-0xa+'px',_0x3ed387[_0xafd647(0x3ef)][_0xafd647(0x453)]=_0x43a6ad[_0xafd647(0x219)](_0x2d4ea5['y'],0x16)+'px',document[_0xafd647(0x1ea)][_0xafd647(0x3c5)](_0x3ed387),setTimeout(function(){var _0x2baafa=_0xafd647;_0x3ed387[_0x2baafa(0x38d)]();},0x4e2);}window[_0x2a0923(0x299)]=_0xa704fc;function _0x48277b(){var _0x8c8f3f=_0x2a0923,_0x2a6922=_0x43a6ad[_0x8c8f3f(0x1cd)][_0x8c8f3f(0x2a6)]('|'),_0x1b8c21=0x0;while(!![]){switch(_0x2a6922[_0x1b8c21++]){case'0':_0xc075ac=document[_0x8c8f3f(0x2ac)](_0x43a6ad[_0x8c8f3f(0x2e2)]);continue;case'1':_0xc075ac[_0x8c8f3f(0x3ef)][_0x8c8f3f(0x453)]=_0x2d4ea5['y']-0x1a+'px';continue;case'2':_0xc075ac[_0x8c8f3f(0x3ef)][_0x8c8f3f(0x29b)]=_0x2d4ea5['x']-0x20+'px';continue;case'3':_0xc075ac['className']=_0x43a6ad[_0x8c8f3f(0x32a)];continue;case'4':_0xc075ac[_0x8c8f3f(0x3ff)]=_0x43a6ad[_0x8c8f3f(0x41f)](_0x43a6ad[_0x8c8f3f(0x323)](_0x8c8f3f(0x448),_0x8c8f3f(0x2c0))+_0x8c8f3f(0x2cf)+'',_0x8c8f3f(0x23f))+_0x8c8f3f(0x2df)+_0x8c8f3f(0x3b3);continue;case'5':document['body'][_0x8c8f3f(0x3c5)](_0xc075ac);continue;}break;}}function _0x3024b5(){var _0x18bca2=_0x2a0923,_0x4351f8=performance['now']();if(_0x4351f8<_0x56e054)return;_0x3f6793=_0x4351f8;if(_0x15d3d3)_0x15d3d3=0x0;if(_0x440f75){_0x440f75=![];if(_0xc075ac){var _0x57f18e=_0xc075ac;_0xc075ac=null,_0x57f18e[_0x18bca2(0x3ef)][_0x18bca2(0x392)]='0',setTimeout(function(){var _0x26a1c7=_0x18bca2;_0x57f18e[_0x26a1c7(0x38d)]();},0x1f4);}_0x2f56dc('\u2728',!![]),_0xa704fc(_0x18bca2(0x320)),_0x2d0781=_0x4351f8+0x384;}}document[_0x2a0923(0x330)](_0x2a0923(0x2f3),_0x3024b5),document[_0x2a0923(0x330)](_0x43a6ad[_0x2a0923(0x3c1)],_0x3024b5,{'passive':!![]}),document[_0x2a0923(0x330)](_0x2a0923(0x3e3),_0x3024b5,{'passive':!![]}),document[_0x2a0923(0x330)](_0x43a6ad[_0x2a0923(0x346)],function(_0x55934f){var _0x5cbc9c=_0x2a0923,_0x5abd4e=_0x5cbc9c(0x1e7)[_0x5cbc9c(0x2a6)]('|'),_0x199a13=0x0;while(!![]){switch(_0x5abd4e[_0x199a13++]){case'0':_0x270f08['x']=_0x55934f[_0x5cbc9c(0x27f)];continue;case'1':if(_0x431b61!==_0x5cbc9c(0x2d3))_0x43a6ad[_0x5cbc9c(0x3bd)](_0x2f56dc,'\u2757');continue;case'2':var _0x54ff3b=performance[_0x5cbc9c(0x353)]();continue;case'3':_0x431b61=_0x43a6ad[_0x5cbc9c(0x2a7)];continue;case'4':if(_0x43a6ad[_0x5cbc9c(0x1d2)](_0x54ff3b,_0x5c3a08)||_0x54ff3b<_0x2d0781)return;continue;case'5':_0x270f08['y']=_0x55934f[_0x5cbc9c(0x2b4)];continue;case'6':_0x43a6ad[_0x5cbc9c(0x440)](_0x3024b5);continue;case'7':if(_0x431b61===_0x5cbc9c(0x306)||_0x431b61===_0x5cbc9c(0x34b))return;continue;}break;}});function _0x1415b9(){var _0x524e83=_0x2a0923,_0x49ae2={'pIQTX':function(_0x1df79f,_0x180c0c){return _0x1df79f(_0x180c0c);},'BaQmB':_0x524e83(0x337)},_0x25f0ab=performance[_0x524e83(0x353)]();if(_0x431b61===_0x524e83(0x34b))_0x43a6ad[_0x524e83(0x397)](_0x48c93b);_0x5c3a08=_0x25f0ab+0x320,_0x431b61='rest',_0x5003a2=_0x25f0ab+0x7d0,_0x5a7cbd=_0x25f0ab+0x1869f,_0x2f56dc(_0x4c430d(['\uD83D\uDC95','\uD83D\uDC96','\uD83D\uDC97']),!![]),setTimeout(function(){_0x2f56dc('\uD83D\uDC95',!![]);},0xf0),_0x43a6ad[_0x524e83(0x255)](_0x15871b),_0x8649c2['pets']++,_0x1bfc47();if(_0x8649c2[_0x524e83(0x280)]===0xa)setTimeout(function(){var _0x4b2bf4=_0x524e83;_0x43a6ad[_0x4b2bf4(0x3bd)](_0xa704fc,_0x43a6ad[_0x4b2bf4(0x30d)]);},0x1a4);else{if(_0x8649c2[_0x524e83(0x280)]===0x19)setTimeout(function(){var _0x264cf7=_0x524e83;_0xa704fc(_0x264cf7(0x43d));},0x1a4);else{if(_0x8649c2[_0x524e83(0x280)]===0x32)_0x43a6ad[_0x524e83(0x3f1)](setTimeout,function(){var _0x31788e=_0x524e83;_0xa704fc(_0x31788e(0x435));},0x1a4);else{if(_0x8649c2[_0x524e83(0x280)]===0x64)_0x43a6ad[_0x524e83(0x3f1)](setTimeout,function(){var _0x306610=_0x524e83;_0x49ae2[_0x306610(0x2dc)](_0xa704fc,_0x49ae2[_0x306610(0x409)]);},0x1a4);}}}}document[_0x2a0923(0x330)](_0x2a0923(0x327),function(_0x10aa8e){var _0x469e14=_0x2a0923;_0x43a6ad['EjWjh'](_0x3024b5);if(_0x10aa8e[_0x469e14(0x2b2)][_0x469e14(0x263)]&&_0x10aa8e[_0x469e14(0x2b2)][_0x469e14(0x263)](_0x43a6ad[_0x469e14(0x1eb)]))return;if(_0x43a6ad[_0x469e14(0x227)](Math[_0x469e14(0x3fc)](_0x43a6ad['QHVYZ'](_0x10aa8e[_0x469e14(0x27f)],_0x2d4ea5['x']),_0x43a6ad[_0x469e14(0x204)](_0x10aa8e[_0x469e14(0x2b4)],_0x2d4ea5['y'])),0x30))return;_0x1415b9();});function _0x2c4cf4(){var _0x4ec7d5=_0x2a0923,_0x274c25=[],_0x3248fa=document[_0x4ec7d5(0x38e)](_0x4ec7d5(0x213));for(var _0x13ad5c=0x0;_0x43a6ad[_0x4ec7d5(0x3da)](_0x13ad5c,_0x3248fa[_0x4ec7d5(0x2f4)]);_0x13ad5c++){var _0x1272be=_0x3248fa[_0x13ad5c][_0x4ec7d5(0x3c4)]();if(_0x43a6ad['bgddQ'](_0x1272be[_0x4ec7d5(0x333)],0x8)||_0x1272be[_0x4ec7d5(0x333)]>0xdc||_0x43a6ad[_0x4ec7d5(0x3a9)](_0x1272be[_0x4ec7d5(0x3af)],0x8)||_0x1272be[_0x4ec7d5(0x3af)]>0x5a)continue;if(_0x43a6ad[_0x4ec7d5(0x3da)](_0x1272be[_0x4ec7d5(0x230)],0x28)||_0x1272be['top']>_0x43a6ad['QHVYZ'](window[_0x4ec7d5(0x283)],0x3c))continue;if(_0x1272be[_0x4ec7d5(0x28e)]<0x28||_0x1272be[_0x4ec7d5(0x29b)]>_0x43a6ad[_0x4ec7d5(0x3db)](window[_0x4ec7d5(0x32e)],0x3c))continue;if(_0x43a6ad['zaTik'](_0x3248fa[_0x13ad5c]['style']['visibility'],_0x43a6ad[_0x4ec7d5(0x311)]))continue;_0x274c25['push'](_0x3248fa[_0x13ad5c]);}return _0x274c25;}function _0x48c93b(){var _0x54fd92=_0x2a0923;_0x114ff9&&_0x114ff9[_0x54fd92(0x329)]&&(_0x114ff9['el'][_0x54fd92(0x3ef)][_0x54fd92(0x285)]='',_0x114ff9[_0x54fd92(0x329)][_0x54fd92(0x38d)]()),_0x114ff9&&(_0x114ff9=null,_0x431b61=_0x54fd92(0x29a),_0x270f08=_0x43a6ad[_0x54fd92(0x367)](_0x455066));}function _0x5aea89(_0x22dcff){var _0xe8498b=_0x2a0923,_0x5d07ab=_0xe8498b(0x2e0)['split']('|'),_0x30a984=0x0;while(!![]){switch(_0x5d07ab[_0x30a984++]){case'0':if(!_0x22dcff&&_0x3cc170-_0x2bdf60<0x249f0)return![];continue;case'1':return!![];case'2':_0x114ff9={'el':_0x29a759,'phase':_0x43a6ad[_0xe8498b(0x31f)],'pt':_0x43a6ad[_0xe8498b(0x433)](_0x348867,_0x366dab[_0xe8498b(0x29b)]+_0x366dab[_0xe8498b(0x333)]/0x2,_0x366dab[_0xe8498b(0x453)]+_0x366dab[_0xe8498b(0x3af)]/0x2),'deadline':_0x3cc170+0x4650,'gift':_0x8649c2[_0xe8498b(0x280)]>=0x19};continue;case'3':var _0x29a759=_0x1a0931[Math[_0xe8498b(0x298)](_0x43a6ad[_0xe8498b(0x2aa)](Math[_0xe8498b(0x418)](),_0x1a0931[_0xe8498b(0x2f4)]))];continue;case'4':if(!_0x22dcff&&Math[_0xe8498b(0x418)]()>0.07)return![];continue;case'5':var _0x366dab=_0x29a759[_0xe8498b(0x3c4)]();continue;case'6':_0x2bdf60=_0x3cc170;continue;case'7':if(!_0x1a0931[_0xe8498b(0x2f4)])return![];continue;case'8':var _0x1a0931=_0x43a6ad['lbkoR'](_0x2c4cf4);continue;case'9':_0x431b61=_0xe8498b(0x34b);continue;case'10':var _0x3cc170=performance[_0xe8498b(0x353)]();continue;case'11':if(_0x114ff9)return![];continue;}break;}}function _0x32593f(_0x306d8e){var _0xffed33=_0x2a0923,_0x1f9dac=_0x114ff9['el']['getBoundingClientRect']();_0x114ff9['clone']=document[_0xffed33(0x2ac)](_0xffed33(0x30e)),_0x114ff9[_0xffed33(0x329)][_0xffed33(0x3ef)][_0xffed33(0x39a)]=_0x43a6ad[_0xffed33(0x323)](_0x43a6ad[_0xffed33(0x20c)](_0x43a6ad[_0xffed33(0x371)](_0x43a6ad[_0xffed33(0x41f)](_0xffed33(0x34a),_0x1f9dac[_0xffed33(0x29b)])+_0xffed33(0x297)+_0x1f9dac[_0xffed33(0x453)],_0x43a6ad[_0xffed33(0x415)]),_0x1f9dac[_0xffed33(0x333)])+_0x43a6ad[_0xffed33(0x249)],_0x1f9dac[_0xffed33(0x3af)])+_0x43a6ad[_0xffed33(0x218)];var _0xc26da=_0x114ff9['el'][_0xffed33(0x344)](!![]);_0xc26da[_0xffed33(0x3ef)][_0xffed33(0x2a1)]='0',_0x114ff9[_0xffed33(0x329)][_0xffed33(0x3c5)](_0xc26da),document[_0xffed33(0x1ea)][_0xffed33(0x3c5)](_0x114ff9[_0xffed33(0x329)]),_0x114ff9['el'][_0xffed33(0x3ef)][_0xffed33(0x285)]=_0xffed33(0x319),_0x114ff9['cw']=_0x43a6ad[_0xffed33(0x44a)](_0x1f9dac[_0xffed33(0x333)],0x2),_0x114ff9['ch']=_0x1f9dac[_0xffed33(0x3af)];if(_0x114ff9[_0xffed33(0x1d1)]){if(_0x43a6ad[_0xffed33(0x401)]!==_0x43a6ad[_0xffed33(0x401)]){if(_0x460ee0<_0x26a386){var _0x2aa335=_0xffed33(0x2a9)[_0xffed33(0x2a6)]('|'),_0x8bea6f=0x0;while(!![]){switch(_0x2aa335[_0x8bea6f++]){case'0':_0x523eb6>=_0x43a6ad['BkHwP'](_0x1c0eab,0.8)&&(_0x24de67=0x0,_0x19cb25());continue;case'1':_0x2aa3cf['x']+=_0x486f7a[_0xffed33(0x3bf)](_0x3c0d6b)*_0x3657d4;continue;case'2':_0x5c6cee+=0x7*_0x3e2110;continue;case'3':var _0x3657d4=_0x43a6ad[_0xffed33(0x2ab)](_0x55ab92*0.7,_0x5aaac2);continue;case'4':_0x16f2a2['y']+=_0x5a6dfd[_0xffed33(0x1f8)](_0x4827f4)*_0x3657d4;continue;case'5':_0x5a8d1b+=_0x3657d4;continue;}break;}}else _0x224166=0x0,_0x3d479b=!![],_0x5a6360['x']=_0x5f2f0b[_0xffed33(0x318)](_0x24bc78[_0xffed33(0x20b)](_0x5e4641['x'],0x2c),_0x5e1520['innerWidth']-0x2c),_0x39fab0['y']=_0x3cbf04[_0xffed33(0x318)](_0x3ee6b8[_0xffed33(0x20b)](_0x1aea09['y'],0x28),_0xf7c872[_0xffed33(0x283)]-0x1e),_0x43a6ad[_0xffed33(0x380)](_0x1e9121),_0xa8f128(_0x43a6ad[_0xffed33(0x2d0)]),_0x4149bc=_0x43a6ad[_0xffed33(0x323)](_0x3e37f3,0x708);_0x43a6ad[_0xffed33(0x455)](_0x392fca,_0x11c3df);return;}else _0x43a6ad[_0xffed33(0x37c)](_0xa704fc,_0x43a6ad[_0xffed33(0x444)]);}else{var _0x5703f0=Math[_0xffed33(0x418)]()*Math['PI']*0x2;_0x114ff9[_0xffed33(0x290)]=_0x43a6ad[_0xffed33(0x433)](_0x348867,_0x2d4ea5['x']+Math[_0xffed33(0x3bf)](_0x5703f0)*0x12c,_0x43a6ad[_0xffed33(0x393)](_0x2d4ea5['y'],Math[_0xffed33(0x1f8)](_0x5703f0)*0x12c)),_0x43a6ad[_0xffed33(0x37c)](_0xa704fc,_0x43a6ad[_0xffed33(0x3bd)](_0x4c430d,[_0xffed33(0x203),_0x43a6ad[_0xffed33(0x405)],_0x43a6ad[_0xffed33(0x33c)]]));}_0x114ff9[_0xffed33(0x226)]=_0x43a6ad[_0xffed33(0x1fd)];}function _0x348867(_0x3e1201,_0x2886c5){var _0x90e4ac=_0x2a0923;return{'x':Math[_0x90e4ac(0x318)](Math[_0x90e4ac(0x20b)](_0x3e1201,0x14),_0x43a6ad[_0x90e4ac(0x437)](window[_0x90e4ac(0x32e)],0x14)),'y':Math[_0x90e4ac(0x318)](Math[_0x90e4ac(0x20b)](_0x2886c5,0x14),_0x43a6ad['xtZbe'](window[_0x90e4ac(0x283)],0x14))};}function _0x4d0a8c(_0x5e6349){var _0x133c31=_0x2a0923,_0x8d9399=_0x5e6349['el'];if(typeof _0x8d9399===_0x133c31(0x3b4))_0x8d9399=document[_0x133c31(0x2f2)](_0x8d9399);if(_0x8d9399&&_0x8d9399[_0x133c31(0x3c4)]){var _0x20e834=_0x8d9399[_0x133c31(0x3c4)]();if(_0x20e834[_0x133c31(0x333)]>0x0)return _0x43a6ad[_0x133c31(0x1ed)](_0x348867,_0x20e834[_0x133c31(0x29b)]+_0x43a6ad[_0x133c31(0x373)](_0x20e834[_0x133c31(0x333)],0.5),_0x20e834[_0x133c31(0x453)]+Math[_0x133c31(0x318)](_0x20e834[_0x133c31(0x3af)]*0.4,0x32));}if(_0x43a6ad[_0x133c31(0x38b)](typeof _0x5e6349['x'],'number')&&_0x43a6ad['zaTik'](typeof _0x5e6349['y'],'number'))return _0x43a6ad[_0x133c31(0x2bd)](_0x348867,_0x5e6349['x'],_0x5e6349['y']);return null;}window[_0x2a0923(0x42f)]=function(_0x376d99,_0x2482a4){var _0x5d0bcc=_0x2a0923,_0x154904={'vwfqG':_0x43a6ad[_0x5d0bcc(0x326)],'PLltO':function(_0x459412,_0x14b1b2,_0x24458c){return _0x459412(_0x14b1b2,_0x24458c);}};_0x2482a4=_0x43a6ad['nnBSC'](_0x2482a4,{});var _0x5984cc=performance[_0x5d0bcc(0x353)]();_0x3f6793=_0x5984cc;if(_0x440f75)_0x43a6ad[_0x5d0bcc(0x1ee)](_0x3024b5);if(_0x431b61===_0x5d0bcc(0x34b)&&_0x43a6ad[_0x5d0bcc(0x39e)](_0x376d99,_0x43a6ad['pHIlO']))_0x43a6ad[_0x5d0bcc(0x231)](_0x48c93b);if(_0x376d99===_0x5d0bcc(0x34b)){_0x43a6ad[_0x5d0bcc(0x2cd)](_0x5aea89,!![]);return;}if(_0x376d99===_0x5d0bcc(0x3ab))_0x5c3a08=_0x43a6ad[_0x5d0bcc(0x1f6)](_0x5984cc,0x44c),_0x431b61=_0x5d0bcc(0x381),_0x5003a2=_0x43a6ad[_0x5d0bcc(0x3d2)](_0x5984cc,0xaf0),_0x5a7cbd=_0x5984cc+0x1869f,_0x43a6ad[_0x5d0bcc(0x3f1)](_0x2f56dc,'\u2728',!![]),_0x43a6ad[_0x5d0bcc(0x3fb)](setTimeout,function(){var _0x841c3c=_0x5d0bcc;'taKxa'===_0x154904[_0x841c3c(0x1f5)]?_0x2cdaef[_0x841c3c(0x38d)]():_0x154904[_0x841c3c(0x412)](_0x2f56dc,'\uD83D\uDC95',!![]);},0x12c),setTimeout(function(){_0x2f56dc('\u2728',!![]);},0x28a),_0x43a6ad[_0x5d0bcc(0x2a8)](setTimeout,function(){var _0x47edb8=_0x5d0bcc;_0xa704fc(_0x2482a4[_0x47edb8(0x336)]||_0x47edb8(0x30f));},0xb4),_0x43a6ad[_0x5d0bcc(0x2a5)](_0x15871b);else{if(_0x43a6ad[_0x5d0bcc(0x29e)](_0x376d99,_0x43a6ad[_0x5d0bcc(0x426)])){var _0x5a5f5f=_0x4d0a8c(_0x2482a4);if(!_0x5a5f5f)return;_0x22c4ce=_0x5a5f5f,_0x35a728=_0x2482a4[_0x5d0bcc(0x336)]||null,_0x48ca17=!!_0x2482a4[_0x5d0bcc(0x232)],_0x34c444=_0x5984cc+0x2328,_0x431b61=_0x5d0bcc(0x306);}else{if(_0x43a6ad['qDBmz'](_0x376d99,_0x5d0bcc(0x1d6))){_0x43a6ad[_0x5d0bcc(0x2ec)](_0x2f56dc,'\u26A0\uFE0F',!![]),_0xa704fc(_0x2482a4[_0x5d0bcc(0x336)]||_0x43a6ad[_0x5d0bcc(0x2d9)]);var _0x2a74a8=_0x43a6ad[_0x5d0bcc(0x2aa)](_0x43a6ad[_0x5d0bcc(0x39d)](Math[_0x5d0bcc(0x418)](),Math['PI']),0x2);_0x22c4ce=_0x348867(_0x2d4ea5['x']+_0x43a6ad[_0x5d0bcc(0x3b5)](Math[_0x5d0bcc(0x3bf)](_0x2a74a8),0x104),_0x2d4ea5['y']+Math[_0x5d0bcc(0x1f8)](_0x2a74a8)*0x104),_0x35a728=null,_0x48ca17=!![],_0x34c444=_0x5984cc+0xfa0,_0x431b61=_0x5d0bcc(0x306);}else{if(_0x376d99===_0x43a6ad[_0x5d0bcc(0x34c)])_0x56e054=_0x43a6ad[_0x5d0bcc(0x371)](_0x5984cc,0x320),_0x15d3d3=_0x43a6ad[_0x5d0bcc(0x371)](_0x5984cc,0x578),_0xa704fc('*yawn*');else{if(_0x376d99===_0x5d0bcc(0x414))_0x43a6ad[_0x5d0bcc(0x2b5)](_0x571570);else{if(_0x2482a4['text']){if(_0x5d0bcc(0x385)!==_0x43a6ad[_0x5d0bcc(0x407)]){if(!_0x1913d2)_0x23ba22=new(_0x1a755e[(_0x5d0bcc(0x253))]||_0x5bd25e[(_0x5d0bcc(0x2d1))])();if(_0x43a6ad['qDBmz'](_0x19ff2e[_0x5d0bcc(0x29f)],'suspended'))_0x4c6ad7[_0x5d0bcc(0x274)]();var _0x48b6a3=_0x4d3c2f[_0x5d0bcc(0x30c)](),_0x1caba2=_0x350d52[_0x5d0bcc(0x217)](),_0x24dca0=_0x68b894[_0x5d0bcc(0x21c)];_0x48b6a3[_0x5d0bcc(0x2bf)]=_0x5d0bcc(0x1f4),_0x48b6a3['frequency'][_0x5d0bcc(0x34e)](_0x43a6ad[_0x5d0bcc(0x393)](0x2bc,_0x7fd348[_0x5d0bcc(0x418)]()*0xc8),_0x24dca0),_0x48b6a3[_0x5d0bcc(0x2e5)][_0x5d0bcc(0x3a3)](0x578+_0x43a6ad[_0x5d0bcc(0x229)](_0x481b59['random'](),0x12c),_0x24dca0+0.07),_0x48b6a3[_0x5d0bcc(0x2e5)][_0x5d0bcc(0x3a3)](0x258,_0x43a6ad[_0x5d0bcc(0x20c)](_0x24dca0,0.14)),_0x1caba2[_0x5d0bcc(0x37d)][_0x5d0bcc(0x34e)](0.12,_0x24dca0),_0x1caba2[_0x5d0bcc(0x37d)][_0x5d0bcc(0x3a3)](0.001,_0x24dca0+0.16),_0x48b6a3[_0x5d0bcc(0x3b8)](_0x1caba2),_0x1caba2[_0x5d0bcc(0x3b8)](_0x5f1354[_0x5d0bcc(0x40f)]),_0x48b6a3[_0x5d0bcc(0x3d7)](_0x24dca0),_0x48b6a3[_0x5d0bcc(0x1ca)](_0x24dca0+0.18);}else _0xa704fc(_0x2482a4[_0x5d0bcc(0x336)]);}}}}}}};function _0x571570(){var _0x2a0795=_0x2a0923,_0x5e1054={'vlReP':function(_0x1aa9df,_0x206eb9){var _0x323de1=a0_0x1a23;return _0x43a6ad[_0x323de1(0x2e6)](_0x1aa9df,_0x206eb9);},'eUzjA':_0x2a0795(0x1c9),'flsBX':function(_0x229e0e,_0x21513a){return _0x229e0e!==_0x21513a;},'WlYBb':_0x43a6ad[_0x2a0795(0x361)]};document[_0x2a0795(0x1ea)][_0x2a0795(0x377)][_0x2a0795(0x44f)](_0x43a6ad[_0x2a0795(0x24d)]),_0x188a29=7.5;var _0x3a8bde=document[_0x2a0795(0x3df)];document[_0x2a0795(0x3df)]=_0x43a6ad[_0x2a0795(0x23d)],_0x43a6ad[_0x2a0795(0x37c)](_0xa704fc,'YIP\x20YIP\x20YIP\x20YIP'),setTimeout(function(){var _0x39f2df=_0x2a0795,_0x46169b={'LLsEW':function(_0x31b904,_0xe0d956){return _0x31b904(_0xe0d956);},'RtYLI':function(_0x15133f,_0x48a6d1){var _0x44ecfc=a0_0x1a23;return _0x5e1054[_0x44ecfc(0x39b)](_0x15133f,_0x48a6d1);},'uSlTh':_0x5e1054[_0x39f2df(0x27a)],'FRdMg':function(_0x50be22,_0x294b5f){return _0x50be22===_0x294b5f;},'xqtoR':_0x39f2df(0x301)};if(_0x5e1054[_0x39f2df(0x2f6)](_0x39f2df(0x2c2),_0x5e1054[_0x39f2df(0x3bc)]))document[_0x39f2df(0x1ea)][_0x39f2df(0x377)]['remove'](_0x39f2df(0x352)),_0x188a29=0x1,document[_0x39f2df(0x3df)]=_0x3a8bde;else{var _0x2c34da=_0x138610[_0x39f2df(0x1fc)]|0x0;if(_0x2c34da>0x0)_0x46169b[_0x39f2df(0x36a)](_0x4a1ec1,_0x46169b[_0x39f2df(0x26e)](_0x46169b[_0x39f2df(0x2c7)]+_0x2c34da,_0x46169b[_0x39f2df(0x43b)](_0x2c34da,0x1)?_0x46169b[_0x39f2df(0x335)]:_0x39f2df(0x449))+'\x20here...\x20i\x20can\x20smell\x20them)');}},0x2710);}var _0x552035=[_0x2a0923(0x23c),_0x43a6ad[_0x2a0923(0x2db)],_0x2a0923(0x3c2),_0x43a6ad[_0x2a0923(0x3fe)],_0x2a0923(0x3fa),_0x43a6ad[_0x2a0923(0x1e0)],_0x2a0923(0x3fa),_0x2a0923(0x374),'b','a'],_0x53fdff=0x0;document['addEventListener'](_0x43a6ad[_0x2a0923(0x26a)],function(_0x248131){var _0x52ca4a=_0x2a0923,_0x381a62=_0x248131[_0x52ca4a(0x1d9)][_0x52ca4a(0x2f4)]===0x1?_0x248131[_0x52ca4a(0x1d9)][_0x52ca4a(0x37a)]():_0x248131['key'];_0x53fdff=_0x381a62===_0x552035[_0x53fdff]?_0x43a6ad[_0x52ca4a(0x3d2)](_0x53fdff,0x1):_0x381a62===_0x552035[0x0]?0x1:0x0;if(_0x43a6ad['RZtpz'](_0x53fdff,_0x552035[_0x52ca4a(0x2f4)]))return;_0x53fdff=0x0,_0x43a6ad[_0x52ca4a(0x255)](_0x571570);});var _0x35712d='';document[_0x2a0923(0x330)](_0x2a0923(0x2f3),function(_0x24b3a9){var _0x39b8e4=_0x2a0923,_0x209b0f={'OhqiP':function(_0x44c5c7,_0x11aee4,_0x532945){var _0x383919=a0_0x1a23;return _0x43a6ad[_0x383919(0x3fb)](_0x44c5c7,_0x11aee4,_0x532945);}},_0x4a90fc=_0x24b3a9[_0x39b8e4(0x2b2)];if(_0x4a90fc&&(_0x43a6ad[_0x39b8e4(0x3f6)](_0x4a90fc[_0x39b8e4(0x2b7)],_0x43a6ad[_0x39b8e4(0x216)])||_0x4a90fc[_0x39b8e4(0x2b7)]===_0x43a6ad[_0x39b8e4(0x3a5)]||_0x4a90fc[_0x39b8e4(0x24e)]))return;if(_0x24b3a9[_0x39b8e4(0x1d9)][_0x39b8e4(0x2f4)]!==0x1)return;_0x35712d=(_0x35712d+_0x24b3a9[_0x39b8e4(0x1d9)][_0x39b8e4(0x37a)]())[_0x39b8e4(0x201)](-0xc);if(_0x35712d[_0x39b8e4(0x201)](-0x3)===_0x43a6ad[_0x39b8e4(0x451)])_0xa704fc('yip!!'),_0x35712d='';else{if(_0x35712d[_0x39b8e4(0x201)](-0x3)===_0x43a6ad[_0x39b8e4(0x3ce)]){if(_0x43a6ad[_0x39b8e4(0x37f)]('rIjBG',_0x43a6ad['eXSJj'])){var _0x548bbc=_0x2d634b;_0x157013=null,_0x548bbc['style'][_0x39b8e4(0x392)]='0',mBuTsb[_0x39b8e4(0x20f)](_0x596759,function(){var _0x20b8c5=_0x39b8e4;_0x548bbc[_0x20b8c5(0x38d)]();},0x1f4);}else _0xa704fc(_0x39b8e4(0x239)),_0x35712d='';}else{if(_0x35712d['slice'](-0x3)===_0x43a6ad[_0x39b8e4(0x422)])_0xa704fc(_0x43a6ad[_0x39b8e4(0x366)]),_0x35712d='';else{if(_0x43a6ad[_0x39b8e4(0x214)](_0x35712d[_0x39b8e4(0x201)](-0x6),_0x39b8e4(0x3d8)))_0x43a6ad[_0x39b8e4(0x20d)](_0x2f56dc,'\uD83D\uDC95',!![]),_0xa704fc('yip!!\x20(that\x20is\x20me)'),_0x35712d='';else{if(_0x35712d[_0x39b8e4(0x201)](-0x6)===_0x43a6ad[_0x39b8e4(0x27c)])_0xa704fc(_0x43a6ad[_0x39b8e4(0x423)]),_0x35712d='';else{if(_0x35712d[_0x39b8e4(0x201)](-0x7)===_0x39b8e4(0x414))_0x43a6ad[_0x39b8e4(0x2fe)](_0x571570),_0x35712d='';else _0x43a6ad[_0x39b8e4(0x3de)](_0x35712d[_0x39b8e4(0x201)](-0x5),_0x39b8e4(0x248))&&(_0x56e054=_0x43a6ad[_0x39b8e4(0x3e8)](performance[_0x39b8e4(0x353)](),0x320),_0x15d3d3=performance[_0x39b8e4(0x353)]()+0x578,_0x43a6ad[_0x39b8e4(0x2cd)](_0xa704fc,_0x43a6ad[_0x39b8e4(0x1d8)]),_0x35712d='');}}}}}});function _0x1299c(_0x1fa419,_0x2c5a3f){var _0x2932c8=_0x2a0923,_0x10c991=_0x43a6ad[_0x2932c8(0x2b9)](_0x2c5a3f-_0x1fa419,_0x43a6ad[_0x2932c8(0x378)](Math['PI'],0x2));if(_0x43a6ad['nGDsT'](_0x10c991,Math['PI']))_0x10c991-=_0x43a6ad[_0x2932c8(0x375)](Math['PI'],0x2);if(_0x43a6ad[_0x2932c8(0x1d2)](_0x10c991,-Math['PI']))_0x10c991+=Math['PI']*0x2;return _0x10c991;}function _0x455066(){var _0x4ad8b6=_0x2a0923,_0x114526={'AcwOi':function(_0x27015d,_0x1592c6){return _0x27015d===_0x1592c6;},'hjJCH':function(_0x541d20,_0x5a9f89){var _0x30d10d=a0_0x1a23;return _0x43a6ad[_0x30d10d(0x37c)](_0x541d20,_0x5a9f89);},'ZpQXt':function(_0x596bcb,_0x20c08d){return _0x596bcb+_0x20c08d;},'iHjhm':function(_0x3e0760){return _0x3e0760();}};_0x1401cf=null;if(Math[_0x4ad8b6(0x418)]()<0.45){if(_0x43a6ad[_0x4ad8b6(0x3cc)](_0x43a6ad[_0x4ad8b6(0x300)],_0x43a6ad[_0x4ad8b6(0x300)])){var _0x5a605b=_0x477b19()[_0x4ad8b6(0x2a4)](function(_0x53d67e){return _0x53d67e['el']!==_0x28cb4e;});if(_0x5a605b[_0x4ad8b6(0x2f4)]){var _0x2d877a=_0x5a605b[Math[_0x4ad8b6(0x298)](Math['random']()*_0x5a605b[_0x4ad8b6(0x2f4)])];_0x28cb4e=_0x2d877a['el'];var _0x66003d=(_0x2d877a['el'][_0x4ad8b6(0x265)](_0x43a6ad[_0x4ad8b6(0x266)])||'')[_0x4ad8b6(0x2a6)]('|')[_0x4ad8b6(0x2a4)](Boolean);if(_0x66003d[_0x4ad8b6(0x2f4)])_0x1401cf=_0x66003d[Math[_0x4ad8b6(0x298)](Math[_0x4ad8b6(0x418)]()*_0x66003d[_0x4ad8b6(0x2f4)])];return{'x':Math[_0x4ad8b6(0x318)](Math[_0x4ad8b6(0x20b)](_0x43a6ad[_0x4ad8b6(0x436)](_0x2d877a['r'][_0x4ad8b6(0x29b)],_0x43a6ad[_0x4ad8b6(0x2c3)](_0x2d877a['r'][_0x4ad8b6(0x333)],0.25+Math[_0x4ad8b6(0x418)]()*0.5)),0x14),_0x43a6ad['BwNbu'](window[_0x4ad8b6(0x32e)],0x14)),'y':Math[_0x4ad8b6(0x318)](Math[_0x4ad8b6(0x20b)](_0x2d877a['r'][_0x4ad8b6(0x453)]+Math[_0x4ad8b6(0x318)](_0x43a6ad[_0x4ad8b6(0x343)](_0x2d877a['r'][_0x4ad8b6(0x3af)],0.4),0x3c)+_0x43a6ad[_0x4ad8b6(0x246)](Math[_0x4ad8b6(0x418)](),0x14),0x14),window[_0x4ad8b6(0x283)]-0x14)};}}else{var _0x27dfb0=_0x4ad8b6(0x419)[_0x4ad8b6(0x2a6)]('|'),_0x19e31d=0x0;while(!![]){switch(_0x27dfb0[_0x19e31d++]){case'0':if(!_0x419871)return;continue;case'1':_0x32b17f(_0x419871);continue;case'2':if(_0x114526[_0x4ad8b6(0x1fa)](_0x198deb[_0x4ad8b6(0x1d9)],_0x4ad8b6(0x35c))){_0x1f6447();return;}continue;case'3':if(_0x3f5a5a[_0x4ad8b6(0x1d9)]!==_0x4ad8b6(0x278))return;continue;case'4':_0x4c0ef7[_0x4ad8b6(0x40e)]='';continue;case'5':_0x114526[_0x4ad8b6(0x450)](_0xcebde9,_0x114526[_0x4ad8b6(0x24a)](_0x114526[_0x4ad8b6(0x1ce)](_0x32292e)+'\x20',_0x419871));continue;case'6':var _0x419871=_0x5510e6[_0x4ad8b6(0x40e)][_0x4ad8b6(0x445)]();continue;}break;}}}var _0x35de74=_0x43a6ad[_0x4ad8b6(0x254)](0x3c,Math[_0x4ad8b6(0x418)]()*0x78),_0x3dc3f3=_0x43a6ad[_0x4ad8b6(0x3c3)](_0x4b3a7b,(Math[_0x4ad8b6(0x418)]()-0.5)*2.6);return{'x':Math[_0x4ad8b6(0x318)](Math[_0x4ad8b6(0x20b)](_0x2d4ea5['x']+_0x43a6ad[_0x4ad8b6(0x21b)](Math[_0x4ad8b6(0x3bf)](_0x3dc3f3),_0x35de74),0x14),window[_0x4ad8b6(0x32e)]-0x14),'y':Math[_0x4ad8b6(0x318)](Math[_0x4ad8b6(0x20b)](_0x43a6ad[_0x4ad8b6(0x3e8)](_0x2d4ea5['y'],_0x43a6ad[_0x4ad8b6(0x26c)](Math[_0x4ad8b6(0x1f8)](_0x3dc3f3),_0x35de74)),0x14),window[_0x4ad8b6(0x283)]-0x14)};}function _0x15edbf(){var _0x1e263a=_0x2a0923,_0x4a65c1={'qWaaK':_0x1e263a(0x2cb)};if(_0x1e263a(0x406)===_0x43a6ad[_0x1e263a(0x384)]){_0x5517d5=-_0x5517d5;var _0x2389e7=document[_0x1e263a(0x2ac)](_0x43a6ad[_0x1e263a(0x270)]);_0x2389e7[_0x1e263a(0x2f0)]=_0x1e263a(0x2e1),_0x2389e7['innerHTML']=_0x385858;var _0x79010c=_0x5bba8e[_0x43a6ad[_0x1e263a(0x325)](_0x5517d5,0x0)?0x0:0x1];_0x2389e7[_0x1e263a(0x2f2)](_0x43a6ad[_0x1e263a(0x421)])[_0x1e263a(0x3ef)][_0x1e263a(0x25f)]=_0x79010c,_0x2389e7[_0x1e263a(0x3ef)][_0x1e263a(0x244)]=_0x79010c;var _0x12b8f6=_0x43a6ad[_0x1e263a(0x228)](_0x43a6ad[_0x1e263a(0x31e)](_0x4b3a7b,0xb4)/Math['PI'],0x5a),_0x3059c0=_0x43a6ad[_0x1e263a(0x432)](_0x43a6ad[_0x1e263a(0x339)](-Math[_0x1e263a(0x1f8)](_0x4b3a7b),0x7),_0x5517d5),_0x875481=_0x43a6ad[_0x1e263a(0x27e)](Math[_0x1e263a(0x3bf)](_0x4b3a7b),0x7)*_0x5517d5;_0x2389e7[_0x1e263a(0x3ef)][_0x1e263a(0x29b)]=_0x43a6ad[_0x1e263a(0x393)](_0x2d4ea5['x'],_0x3059c0)-0x7+'px',_0x2389e7[_0x1e263a(0x3ef)][_0x1e263a(0x453)]=_0x43a6ad[_0x1e263a(0x393)](_0x2d4ea5['y'],_0x875481)-0x7+'px',_0x2389e7[_0x1e263a(0x2f2)](_0x1e263a(0x1c8))[_0x1e263a(0x3ef)][_0x1e263a(0x3be)]=_0x43a6ad[_0x1e263a(0x436)](_0x43a6ad[_0x1e263a(0x1f6)](_0x43a6ad[_0x1e263a(0x3c3)](_0x43a6ad[_0x1e263a(0x21f)],_0x12b8f6),_0x43a6ad[_0x1e263a(0x1f3)]),_0x5517d5)+')',_0x2389e7[_0x1e263a(0x2f2)](_0x43a6ad[_0x1e263a(0x421)])[_0x1e263a(0x3ef)][_0x1e263a(0x3a0)]=_0x1e263a(0x3e7),document[_0x1e263a(0x1ea)][_0x1e263a(0x3c5)](_0x2389e7),setTimeout(function(){var _0x2eda8f=_0x1e263a,_0x201ae7={'jUNez':function(_0x3c4c29,_0x49d57f){return _0x3c4c29|_0x49d57f;}};if(_0x43a6ad[_0x2eda8f(0x32d)](_0x2eda8f(0x3ac),_0x43a6ad[_0x2eda8f(0x2eb)]))_0x2389e7['remove']();else{_0x238a48['v']=EHNtpA[_0x2eda8f(0x3c6)](_0x367054['v'],0x0),_0x146a95[_0x2eda8f(0x280)]=EHNtpA[_0x2eda8f(0x3c6)](_0x521927[_0x2eda8f(0x280)],0x0),_0x3925eb[_0x2eda8f(0x2ce)]=typeof _0x5e7644[_0x2eda8f(0x2ce)]===_0x2eda8f(0x3b4)&&_0x498559[_0x2eda8f(0x2ce)]?_0x30a5c3[_0x2eda8f(0x2ce)][_0x2eda8f(0x201)](0x0,0x10):null,_0x3c8f88[_0x2eda8f(0x1d4)]=_0x264e68[_0x2eda8f(0x1d4)]||0x0;if(typeof _0x3dc102['id']===_0x2eda8f(0x3b4)&&/^[a-f0-9]{16}$/[_0x2eda8f(0x413)](_0x440845['id']))_0x303cba['id']=_0x30b1b1['id'];}},0x514);}else _0x3aaf66(VtjOBU[_0x1e263a(0x224)]),_0x3929b7='';}function _0x3485e1(_0x5c9163){var _0x4ff739=_0x2a0923,_0x4c652c={'qstXM':_0x4ff739(0x431),'pDNNx':function(_0x3634ec,_0x1ed93c){var _0x5a3b4c=_0x4ff739;return _0x43a6ad[_0x5a3b4c(0x3e8)](_0x3634ec,_0x1ed93c);},'GQZFV':function(_0x43aa91,_0x1df2ab,_0xf5dce3){var _0x8fbcdc=_0x4ff739;return _0x43a6ad[_0x8fbcdc(0x2a8)](_0x43aa91,_0x1df2ab,_0xf5dce3);},'cSbvV':function(_0x38a627,_0x19298,_0x3cd5ff){var _0x24f13a=_0x4ff739;return _0x43a6ad[_0x24f13a(0x2bd)](_0x38a627,_0x19298,_0x3cd5ff);},'OLvJI':_0x4ff739(0x320),'mgNtF':function(_0x4760a1,_0x165379){return _0x4760a1*_0x165379;}},_0x533de4=Math[_0x4ff739(0x318)](_0x43a6ad[_0x4ff739(0x44a)](_0x5c9163-_0x23a1b8,0x3e8),0.05);_0x23a1b8=_0x5c9163;var _0x41252e=_0x188a29;if(_0x440f75){if(_0x43a6ad['ImZLo'](_0x4ff739(0x441),_0x4ff739(0x441))){var _0x39759b=_0x510b1d[_0x4ff739(0x2ac)](TBbAQv[_0x4ff739(0x3cb)]);_0x39759b['className']=_0x4ff739(0x342),_0x39759b[_0x4ff739(0x37e)]=_0x549627,_0x39759b[_0x4ff739(0x3ef)][_0x4ff739(0x29b)]=TBbAQv[_0x4ff739(0x27b)](_0x374199['x']-0xa,'px'),_0x39759b[_0x4ff739(0x3ef)][_0x4ff739(0x453)]=TBbAQv[_0x4ff739(0x27b)](_0x3afbaa['y']-0x16,'px'),_0x4ff7a1[_0x4ff739(0x1ea)]['appendChild'](_0x39759b),TBbAQv['GQZFV'](_0x2e5d5b,function(){var _0x238a07=_0x4ff739;_0x39759b[_0x238a07(0x38d)]();},0x4e2);}else{_0x5c9163>_0x3b8962&&(_0x43a6ad[_0x4ff739(0x40a)](_0x4ff739(0x454),_0x43a6ad[_0x4ff739(0x2af)])?(_0x2f56dc('\uD83D\uDCA4',!![]),_0x3b8962=_0x43a6ad['zbAZN'](_0x5c9163,0xa28)):(_0x40ff78=_0x4c7a33[_0x4ff739(0x32e)]-0x46,_0x3f94e8=0x50+_0x43a6ad[_0x4ff739(0x438)](_0x53b1fd[_0x4ff739(0x418)](),_0xf050ad[_0x4ff739(0x20b)](_0x43a6ad[_0x4ff739(0x291)](_0x5f0c7b[_0x4ff739(0x283)],0xa0),0x1))));requestAnimationFrame(_0x3485e1);return;}}if(_0x15d3d3){if(_0x5c9163<_0x15d3d3){_0x4b3a7b+=_0x43a6ad[_0x4ff739(0x364)](0x7,_0x533de4);var _0x121e50=_0x3c1e78*0.7*_0x533de4;_0x2d4ea5['x']+=Math[_0x4ff739(0x3bf)](_0x4b3a7b)*_0x121e50,_0x2d4ea5['y']+=Math[_0x4ff739(0x1f8)](_0x4b3a7b)*_0x121e50,_0x302d07+=_0x121e50,_0x43a6ad[_0x4ff739(0x400)](_0x302d07,_0x43a6ad[_0x4ff739(0x44d)](_0x15ff14,0.8))&&(_0x302d07=0x0,_0x15edbf());}else{var _0x4d3f72='4|3|6|5|2|0|1'[_0x4ff739(0x2a6)]('|'),_0x5ec330=0x0;while(!![]){switch(_0x4d3f72[_0x5ec330++]){case'0':_0xa704fc(_0x4ff739(0x310));continue;case'1':_0x3b8962=_0x5c9163+0x708;continue;case'2':_0x43a6ad[_0x4ff739(0x32f)](_0x48277b);continue;case'3':_0x440f75=!![];continue;case'4':_0x15d3d3=0x0;continue;case'5':_0x2d4ea5['y']=Math['min'](Math[_0x4ff739(0x20b)](_0x2d4ea5['y'],0x28),_0x43a6ad[_0x4ff739(0x219)](window['innerHeight'],0x1e));continue;case'6':_0x2d4ea5['x']=Math[_0x4ff739(0x318)](Math[_0x4ff739(0x20b)](_0x2d4ea5['x'],0x2c),window[_0x4ff739(0x32e)]-0x2c);continue;}break;}}requestAnimationFrame(_0x3485e1);return;}if(_0x43a6ad['lwpbw'](_0x5c9163,_0x3f6793)>_0xbea7de&&_0x5c9163>_0x5c3a08){_0x15d3d3=_0x5c9163+0x578,_0x43a6ad[_0x4ff739(0x455)](_0xa704fc,_0x43a6ad[_0x4ff739(0x1d8)]),requestAnimationFrame(_0x3485e1);return;}if(_0x43a6ad[_0x4ff739(0x3da)](_0x5c9163,_0x2d0781)){requestAnimationFrame(_0x3485e1);return;}if(_0x5c9163<_0x5c3a08){var _0x487f48=_0x43a6ad['GqoWW'][_0x4ff739(0x2a6)]('|'),_0x27dfdb=0x0;while(!![]){switch(_0x487f48[_0x27dfdb++]){case'0':_0x2d4ea5['y']+=_0x43a6ad[_0x4ff739(0x43c)](Math[_0x4ff739(0x1f8)](_0x4b3a7b),_0x28f7d0);continue;case'1':requestAnimationFrame(_0x3485e1);continue;case'2':_0x43a6ad[_0x4ff739(0x400)](_0x302d07,_0x15ff14*0.8)&&(_0x302d07=0x0,_0x15edbf());continue;case'3':_0x302d07+=_0x28f7d0;continue;case'4':var _0x28f7d0=_0x43a6ad[_0x4ff739(0x237)](_0x43a6ad[_0x4ff739(0x225)](_0x3c1e78,0.9),_0x41252e)*_0x533de4;continue;case'5':_0x4b3a7b+=_0x43a6ad[_0x4ff739(0x43c)](0x9,_0x533de4);continue;case'6':return;case'7':_0x2d4ea5['x']+=_0x43a6ad[_0x4ff739(0x3e0)](Math[_0x4ff739(0x3bf)](_0x4b3a7b),_0x28f7d0);continue;}break;}}if(_0x43a6ad[_0x4ff739(0x3de)](_0x431b61,_0x4ff739(0x34b))){if(!_0x114ff9){_0x431b61=_0x4ff739(0x29a),_0x270f08=_0x43a6ad['RIply'](_0x455066),_0x43a6ad['WSeWq'](requestAnimationFrame,_0x3485e1);return;}if(_0x5c9163>_0x114ff9[_0x4ff739(0x347)]){if(_0x114ff9[_0x4ff739(0x226)]===_0x4ff739(0x21a))_0x114ff9[_0x4ff739(0x226)]=_0x4ff739(0x251),_0x114ff9[_0x4ff739(0x307)]=_0x5c9163,_0x114ff9[_0x4ff739(0x347)]=_0x5c9163+0x2ee0,_0x43a6ad[_0x4ff739(0x349)](_0xa704fc,_0x114ff9[_0x4ff739(0x1d1)]?'*wheeze*\x20(u\x20are\x20fast.\x20here)':_0x4ff739(0x1ff));else{_0x43a6ad[_0x4ff739(0x202)](_0x48c93b),_0x43a6ad[_0x4ff739(0x3c0)](requestAnimationFrame,_0x3485e1);return;}}if(_0x114ff9[_0x4ff739(0x226)]===_0x4ff739(0x36c)||_0x114ff9[_0x4ff739(0x226)]===_0x43a6ad['JXgjO']){var _0x50a188=_0x43a6ad[_0x4ff739(0x252)][_0x4ff739(0x2a6)]('|'),_0x1f3c92=0x0;while(!![]){switch(_0x50a188[_0x1f3c92++]){case'0':var _0x6e692b;continue;case'1':var _0x3dfec1=_0x43a6ad[_0x4ff739(0x3b1)](_0x6e692b['x'],_0x2d4ea5['x']),_0x89af85=_0x6e692b['y']-_0x2d4ea5['y'];continue;case'2':if(_0x43a6ad[_0x4ff739(0x1d2)](_0x1caa43,0x10))_0x43a6ad['zaTik'](_0x114ff9[_0x4ff739(0x226)],_0x4ff739(0x36c))?_0x32593f(_0x5c9163):(_0x114ff9[_0x4ff739(0x226)]=_0x43a6ad[_0x4ff739(0x243)],_0x114ff9[_0x4ff739(0x307)]=_0x5c9163,_0x114ff9[_0x4ff739(0x1d1)]?(_0x43a6ad[_0x4ff739(0x455)](_0xa704fc,_0x4c430d([_0x4ff739(0x2e4),_0x43a6ad[_0x4ff739(0x23e)],_0x4ff739(0x372)])),_0x43a6ad[_0x4ff739(0x456)](_0x2f56dc,'\uD83D\uDC95',!![]),setTimeout(function(){var _0x5958eb=_0x4ff739;_0x43a6ad[_0x5958eb(0x2a8)](_0x2f56dc,'\uD83D\uDC96',!![]);},0x12c)):_0xa704fc(_0x4c430d([_0x43a6ad[_0x4ff739(0x215)],_0x43a6ad[_0x4ff739(0x42e)],'yip\x20yip\x20(a\x20good\x20crime)'])));else{var _0x50ab5a=Math['atan2'](_0x89af85,_0x3dfec1),_0x3c8831=_0x43a6ad[_0x4ff739(0x378)](_0x33e680,_0x533de4)*2.2;_0x4b3a7b+=Math[_0x4ff739(0x20b)](-_0x3c8831,Math[_0x4ff739(0x318)](_0x3c8831,_0x1299c(_0x4b3a7b,_0x50ab5a)));var _0x550c0a=_0x43a6ad[_0x4ff739(0x378)](_0x43a6ad[_0x4ff739(0x2ed)](_0x114ff9['phase'],_0x4ff739(0x21a))&&!_0x114ff9[_0x4ff739(0x1d1)]?_0x18add4:_0x9bd704,_0x41252e),_0x58d585=_0x114ff9[_0x4ff739(0x226)]===_0x43a6ad[_0x4ff739(0x1fd)]&&!_0x114ff9[_0x4ff739(0x1d1)]?_0x24d716:_0x15ff14,_0xdbb332=Math[_0x4ff739(0x318)](_0x43a6ad[_0x4ff739(0x273)](_0x550c0a,_0x533de4),_0x1caa43);_0x2d4ea5['x']+=Math[_0x4ff739(0x3bf)](_0x4b3a7b)*_0xdbb332,_0x2d4ea5['y']+=_0x43a6ad[_0x4ff739(0x205)](Math[_0x4ff739(0x1f8)](_0x4b3a7b),_0xdbb332),_0x302d07+=_0xdbb332,_0x302d07>=_0x58d585&&(_0x302d07=0x0,_0x43a6ad[_0x4ff739(0x255)](_0x15edbf));}continue;case'3':var _0x1caa43=Math[_0x4ff739(0x3fc)](_0x3dfec1,_0x89af85);continue;case'4':_0x114ff9&&_0x114ff9[_0x4ff739(0x329)]&&_0x43a6ad[_0x4ff739(0x3cc)](_0x114ff9['phase'],_0x4ff739(0x21a))&&(_0x114ff9[_0x4ff739(0x329)][_0x4ff739(0x3ef)][_0x4ff739(0x29b)]=_0x43a6ad[_0x4ff739(0x3e6)](_0x43a6ad[_0x4ff739(0x1d0)](_0x2d4ea5['x'],_0x114ff9['cw']),'px'),_0x114ff9[_0x4ff739(0x329)]['style'][_0x4ff739(0x453)]=_0x43a6ad[_0x4ff739(0x420)](_0x43a6ad[_0x4ff739(0x204)](_0x2d4ea5['y'],_0x114ff9['ch']),0xe)+'px');continue;case'5':if(_0x114ff9[_0x4ff739(0x226)]===_0x4ff739(0x36c))_0x6e692b=_0x114ff9['pt'];else _0x6e692b=_0x114ff9[_0x4ff739(0x1d1)]?_0x348867(_0x270f08['x'],_0x270f08['y']):_0x114ff9[_0x4ff739(0x290)];continue;}break;}}else{if(_0x43a6ad[_0x4ff739(0x38b)](_0x114ff9['phase'],_0x4ff739(0x251))){if(_0x43a6ad[_0x4ff739(0x3ca)](_0x43a6ad['aWCxq'],_0x4ff739(0x43e))){if(_0x5c9163>_0x43a6ad[_0x4ff739(0x20c)](_0x114ff9[_0x4ff739(0x307)],_0x114ff9['gift']?0x1068:0x1450)){var _0x50bbc3=_0x114ff9['el'][_0x4ff739(0x3c4)]();_0x114ff9[_0x4ff739(0x329)][_0x4ff739(0x3ef)][_0x4ff739(0x2be)]=_0x4ff739(0x223),_0x114ff9[_0x4ff739(0x329)][_0x4ff739(0x3ef)][_0x4ff739(0x29b)]=_0x43a6ad[_0x4ff739(0x41f)](_0x50bbc3[_0x4ff739(0x29b)],'px'),_0x114ff9[_0x4ff739(0x329)][_0x4ff739(0x3ef)][_0x4ff739(0x453)]=_0x43a6ad[_0x4ff739(0x334)](_0x50bbc3[_0x4ff739(0x453)],'px'),_0x114ff9[_0x4ff739(0x226)]=_0x4ff739(0x2f1),_0x114ff9[_0x4ff739(0x33a)]=_0x5c9163;if(!_0x114ff9[_0x4ff739(0x1d1)])_0x43a6ad[_0x4ff739(0x1e9)](_0xa704fc,_0x4ff739(0x3ec));}}else{var _0x18a268=_0x4c0146['now']();if(_0x18a268<_0x3d0fbf)return;_0x452704=_0x18a268;if(_0x447b48)_0x3492d4=0x0;if(_0x592808){var _0x375acf=_0x4ff739(0x262)[_0x4ff739(0x2a6)]('|'),_0x1d6b8a=0x0;while(!![]){switch(_0x375acf[_0x1d6b8a++]){case'0':_0x4dae60('\u2728',!![]);continue;case'1':if(_0x5b0e5c){var _0x54b31=_0x244f80;_0x398186=null,_0x54b31[_0x4ff739(0x3ef)][_0x4ff739(0x392)]='0',TBbAQv[_0x4ff739(0x28c)](_0x335c61,function(){var _0x4ac708=_0x4ff739;_0x54b31[_0x4ac708(0x38d)]();},0x1f4);}continue;case'2':_0x2e6d97=![];continue;case'3':_0x277b24=_0x18a268+0x384;continue;case'4':_0x2c4b60(TBbAQv[_0x4ff739(0x29d)]);continue;}break;}}}}else _0x43a6ad[_0x4ff739(0x38b)](_0x114ff9[_0x4ff739(0x226)],_0x43a6ad[_0x4ff739(0x2ee)])&&(_0x5c9163>_0x114ff9[_0x4ff739(0x33a)]+0x2bc&&(_0x43a6ad[_0x4ff739(0x234)](_0x2f56dc,'\u2728',!![]),_0x48c93b()));}_0x43a6ad[_0x4ff739(0x3ea)](requestAnimationFrame,_0x3485e1);return;}if(_0x431b61===_0x4ff739(0x306)){if(!_0x22c4ce||_0x43a6ad[_0x4ff739(0x3e4)](_0x5c9163,_0x34c444))_0x22c4ce=null,_0x431b61=_0x43a6ad[_0x4ff739(0x317)],_0x270f08=_0x455066();else{var _0x28462e=_0x43a6ad[_0x4ff739(0x2fa)](_0x22c4ce['x'],_0x2d4ea5['x']),_0x4d700c=_0x22c4ce['y']-_0x2d4ea5['y'],_0x19ca19=Math[_0x4ff739(0x3fc)](_0x28462e,_0x4d700c);if(_0x43a6ad[_0x4ff739(0x3da)](_0x19ca19,0x10)){var _0xdac574=_0x43a6ad[_0x4ff739(0x394)]['split']('|'),_0xde73c6=0x0;while(!![]){switch(_0xdac574[_0xde73c6++]){case'0':_0x22c4ce=null;continue;case'1':if(_0x35a728)_0x43a6ad[_0x4ff739(0x289)](_0xa704fc,_0x35a728);else _0x2f56dc(_0x4c430d(['\uD83D\uDC43','\u2753']));continue;case'2':_0x431b61='rest';continue;case'3':_0x5a7cbd=_0x5c9163+0x1869f;continue;case'4':_0x5003a2=_0x43a6ad[_0x4ff739(0x403)](_0x5c9163,0x5dc);continue;case'5':_0x35a728=null;continue;}break;}}else{var _0x49f30e=Math[_0x4ff739(0x22e)](_0x4d700c,_0x28462e),_0x573b3d=_0x43a6ad[_0x4ff739(0x339)](_0x33e680,_0x533de4)*2.2;_0x4b3a7b+=Math[_0x4ff739(0x20b)](-_0x573b3d,Math[_0x4ff739(0x318)](_0x573b3d,_0x43a6ad[_0x4ff739(0x424)](_0x1299c,_0x4b3a7b,_0x49f30e)));var _0x2e048f=(_0x48ca17?_0x18add4:_0x9bd704)*_0x41252e,_0x568815=_0x48ca17?_0x24d716:_0x15ff14,_0x7fc1f0=Math[_0x4ff739(0x318)](_0x43a6ad[_0x4ff739(0x3ba)](_0x2e048f,_0x533de4),_0x19ca19);_0x2d4ea5['x']+=_0x43a6ad[_0x4ff739(0x438)](Math[_0x4ff739(0x3bf)](_0x4b3a7b),_0x7fc1f0),_0x2d4ea5['y']+=Math[_0x4ff739(0x1f8)](_0x4b3a7b)*_0x7fc1f0,_0x302d07+=_0x7fc1f0,_0x302d07>=_0x568815&&(_0x302d07=0x0,_0x43a6ad[_0x4ff739(0x1e4)](_0x15edbf));}}_0x43a6ad[_0x4ff739(0x294)](requestAnimationFrame,_0x3485e1);return;}var _0x4760f5=_0x270f08['x']-_0x2d4ea5['x'],_0x5a5900=_0x270f08['y']-_0x2d4ea5['y'],_0x7b3080=Math[_0x4ff739(0x3fc)](_0x4760f5,_0x5a5900);if(_0x43a6ad[_0x4ff739(0x3de)](_0x431b61,_0x43a6ad[_0x4ff739(0x2a7)])){if(_0x7b3080<0x1a){_0x431b61=_0x4ff739(0x381),_0x5003a2=_0x43a6ad[_0x4ff739(0x36d)](_0x5c9163,_0x43a6ad[_0x4ff739(0x400)](_0x8649c2[_0x4ff739(0x280)],0x19)?0x1068:0x9c4),_0x5a7cbd=_0x5c9163+0x6a4;if(Math[_0x4ff739(0x418)]()<0.5)_0x2f56dc(_0x8649c2[_0x4ff739(0x280)]>=0xa?'\uD83D\uDC95':'\u2728');}}else _0x431b61===_0x4ff739(0x381)?(_0x43a6ad[_0x4ff739(0x227)](_0x5c9163,_0x5a7cbd)&&(_0x2f56dc('\uD83D\uDCA4'),_0x5a7cbd=_0x5c9163+0x640),_0x5c9163>_0x5003a2&&(_0x43a6ad['RZtpz'](_0x4ff739(0x390),_0x43a6ad[_0x4ff739(0x1de)])?!_0x43a6ad[_0x4ff739(0x2dd)](_0x5aea89,![])&&(_0x270f08=_0x43a6ad[_0x4ff739(0x367)](_0x455066),_0x431b61=_0x43a6ad[_0x4ff739(0x317)]):(_0x131260=_0x364357(),_0x33778a=_0x4ff739(0x29a)))):_0x7b3080<0xe&&(_0x431b61='rest',_0x5a7cbd=_0x5c9163+0x1869f,_0x1401cf?(_0x5003a2=_0x43a6ad[_0x4ff739(0x3c9)](_0x5c9163+0x4b0,_0x43a6ad[_0x4ff739(0x2f8)](Math[_0x4ff739(0x418)](),0x640)),_0xa704fc(_0x1401cf),_0x1401cf=null):(_0x5003a2=_0x43a6ad[_0x4ff739(0x1e5)](_0x5c9163,0x258)+_0x43a6ad[_0x4ff739(0x225)](Math['random'](),0x640),_0x43a6ad['sBDTN'](_0x2f56dc,_0x4c430d(['\uD83D\uDC43','\u2753','\uD83C\uDF38','\u2728','\uD83D\uDC3E']))));if(_0x431b61!==_0x4ff739(0x381)&&_0x43a6ad[_0x4ff739(0x308)](_0x7b3080,0x1)){if(_0x43a6ad[_0x4ff739(0x41b)]===_0x4ff739(0x269)){var _0x2bb07b=Math[_0x4ff739(0x22e)](_0x5a5900,_0x4760f5),_0x2a6c5f=_0x43a6ad[_0x4ff739(0x339)](_0x33e680,_0x533de4)*(_0x43a6ad['qDBmz'](_0x431b61,_0x43a6ad[_0x4ff739(0x2a7)])?2.2:0x1);_0x4b3a7b+=Math[_0x4ff739(0x20b)](-_0x2a6c5f,Math[_0x4ff739(0x318)](_0x2a6c5f,_0x1299c(_0x4b3a7b,_0x2bb07b)));var _0x575ce1=_0x43a6ad[_0x4ff739(0x32d)](_0x431b61,_0x43a6ad[_0x4ff739(0x2a7)])&&_0x7b3080>0xa0,_0xbb5c18=(_0x431b61===_0x4ff739(0x2d3)?_0x575ce1?_0x18add4:_0x9bd704:_0x3c1e78)*_0x41252e,_0x425851=_0x575ce1?_0x24d716:_0x15ff14,_0x27958b=Math[_0x4ff739(0x318)](_0x43a6ad[_0x4ff739(0x1dc)](_0xbb5c18,_0x533de4),_0x7b3080);_0x2d4ea5['x']+=Math[_0x4ff739(0x3bf)](_0x4b3a7b)*_0x27958b,_0x2d4ea5['y']+=_0x43a6ad['oTAby'](Math['sin'](_0x4b3a7b),_0x27958b),_0x302d07+=_0x27958b;if(_0x43a6ad[_0x4ff739(0x400)](_0x302d07,_0x425851)){if('RhvvQ'!==_0x4ff739(0x258))return _0x1a0007[_0x52c89f[_0x4ff739(0x298)](TBbAQv[_0x4ff739(0x302)](_0x396613[_0x4ff739(0x418)](),_0x18f670[_0x4ff739(0x2f4)]))];else _0x302d07=0x0,_0x43a6ad[_0x4ff739(0x411)](_0x15edbf);}}else{_0x3e954b(_0x1ad3b5[_0x4ff739(0x2ce)]?_0x43a6ad['OZRpE'](_0x43a6ad[_0x4ff739(0x1df)]+_0x441b4e[_0x4ff739(0x2ce)],'\x22'):_0x43a6ad[_0x4ff739(0x1d5)]);return;}}requestAnimationFrame(_0x3485e1);}var _0x368538=document[_0x2a0923(0x2ac)](_0x2a0923(0x30e));_0x368538[_0x2a0923(0x2f0)]=_0x2a0923(0x279),_0x368538[_0x2a0923(0x37e)]=_0x2a0923(0x2d5);var _0x406278=document[_0x2a0923(0x2ac)]('div');_0x406278[_0x2a0923(0x2f0)]=_0x43a6ad[_0x2a0923(0x2d7)],_0x406278[_0x2a0923(0x3ff)]=_0x43a6ad[_0x2a0923(0x288)]+_0x43a6ad[_0x2a0923(0x1f9)];function _0xefd74(_0x36f2e6){var _0x3026d0=_0x2a0923;_0x316db9['textContent']+=_0x36f2e6+'\x0a',_0x316db9[_0x3026d0(0x1fb)]=_0x316db9[_0x3026d0(0x360)];}function _0x439667(){var _0x38db31=_0x2a0923;_0x406278[_0x38db31(0x377)][_0x38db31(0x44f)](_0x43a6ad[_0x38db31(0x399)]),_0x368538[_0x38db31(0x3ef)][_0x38db31(0x3a0)]=_0x43a6ad[_0x38db31(0x3cf)],_0x1a4b6e[_0x38db31(0x3ed)]();}function _0x3a0cc8(){var _0x4caf51=_0x2a0923;_0x406278[_0x4caf51(0x377)][_0x4caf51(0x38d)](_0x4caf51(0x3b2)),_0x368538[_0x4caf51(0x3ef)][_0x4caf51(0x3a0)]='';}var _0x123c0c=0x0;function _0x107432(_0x18512f){var _0x55fe70=_0x2a0923,_0x241540={'SezOY':function(_0x535fd8,_0x2834a5){return _0x535fd8>_0x2834a5;},'opWcP':_0x55fe70(0x29a)},_0xe8931b=_0x18512f[_0x55fe70(0x37a)]();if(_0xe8931b[_0x55fe70(0x34d)](_0x55fe70(0x1e1))===0x0){var _0x4f78ad=window[_0x55fe70(0x3a7)](_0x18512f[_0x55fe70(0x201)](0x5));_0x43a6ad[_0x55fe70(0x235)](_0xefd74,_0x4f78ad?_0x43a6ad[_0x55fe70(0x3f4)](_0x43a6ad[_0x55fe70(0x264)](_0x43a6ad['YnLhZ'],_0x4f78ad),_0x43a6ad['Zlema']):_0x43a6ad[_0x55fe70(0x277)]);return;}if(_0xe8931b===_0x43a6ad[_0x55fe70(0x275)]){_0x43a6ad[_0x55fe70(0x294)](_0xefd74,_0x8649c2[_0x55fe70(0x2ce)]?_0x43a6ad[_0x55fe70(0x3b0)](_0x55fe70(0x39c),_0x8649c2['name'])+'\x22':_0x43a6ad['IUQMB']);return;}if(_0xe8931b[_0x55fe70(0x34d)](_0x43a6ad[_0x55fe70(0x39f)])===0x0){_0xefd74(_0x43a6ad[_0x55fe70(0x354)]);return;}if(_0xe8931b[_0x55fe70(0x34d)](_0x43a6ad['QwGxV'])===0x0||_0x43a6ad[_0x55fe70(0x2e7)](_0xe8931b,'rm')){_0x43a6ad[_0x55fe70(0x271)](_0xefd74,_0x55fe70(0x220));return;}switch(_0xe8931b){case _0x43a6ad[_0x55fe70(0x3fd)]:_0x43a6ad[_0x55fe70(0x294)](_0xefd74,'commands:\x20pet,\x20come,\x20sit,\x20fetch,\x20sleep,\x20wake,\x20zoomies,\x20where,\x20status,\x20name\x20,\x20ls,\x20whoami,\x20pwd,\x20neofetch,\x20yip,\x20clear,\x20exit');break;case _0x55fe70(0x22a):case _0x55fe70(0x1f7):_0x123c0c++,_0x43a6ad[_0x55fe70(0x250)](_0x1415b9),_0xefd74(_0x123c0c>=0x5?_0x55fe70(0x38f):_0x55fe70(0x404));break;case _0x43a6ad[_0x55fe70(0x2ea)]:{if(_0x43a6ad[_0x55fe70(0x3ea)](_0x5aea89,!![]))_0xefd74(_0x8649c2[_0x55fe70(0x280)]>=0x19?_0x43a6ad[_0x55fe70(0x2d8)]:_0x55fe70(0x3e2));else{if(_0x43a6ad[_0x55fe70(0x33f)](_0x55fe70(0x2ae),_0x43a6ad[_0x55fe70(0x2cc)]))try{_0x4f8cb0[_0x55fe70(0x41d)](_0x55fe70(0x443),_0x37e9bf[_0x55fe70(0x2d6)](_0x54a4ee));}catch(_0x5e2cd5){}else _0xefd74(_0x114ff9?_0x55fe70(0x446):_0x55fe70(0x430));}break;}case _0x43a6ad['HxaTP']:{if('cYYnn'!==_0x43a6ad[_0x55fe70(0x3d9)]){var _0x12e70b=_0x406278[_0x55fe70(0x3c4)]();_0x270f08={'x':Math[_0x55fe70(0x318)](Math[_0x55fe70(0x20b)](_0x43a6ad[_0x55fe70(0x3f0)](_0x12e70b[_0x55fe70(0x29b)],0x28),0x14),window[_0x55fe70(0x32e)]-0x14),'y':Math['min'](Math[_0x55fe70(0x20b)](_0x43a6ad[_0x55fe70(0x43f)](_0x12e70b[_0x55fe70(0x453)],0x28),0x14),window[_0x55fe70(0x283)]-0x14)};if(_0x440f75)_0x43a6ad[_0x55fe70(0x2fd)](_0x3024b5);_0x431b61=_0x43a6ad[_0x55fe70(0x2a7)],_0x43a6ad[_0x55fe70(0x31b)](_0xefd74,_0x43a6ad[_0x55fe70(0x1f0)]);break;}else bstmfM[_0x55fe70(0x341)](_0x48a755,_0x1f34de)&&(_0x4cc1d1('\uD83D\uDCA4'),_0x3d63c8=_0x41af00+0x640),bstmfM[_0x55fe70(0x341)](_0x5db7b8,_0x5ba87f)&&(!_0x2a9049(![])&&(_0x4101c1=_0x3c7882(),_0x518864=bstmfM[_0x55fe70(0x23a)]));}case _0x43a6ad['ezfaX']:_0x431b61=_0x55fe70(0x381),_0x5003a2=performance[_0x55fe70(0x353)]()+0x1770,_0x5a7cbd=_0x43a6ad[_0x55fe70(0x21d)](performance[_0x55fe70(0x353)](),0x1869f),_0x43a6ad[_0x55fe70(0x410)](_0xa704fc,_0x43a6ad[_0x55fe70(0x38c)]),_0x43a6ad[_0x55fe70(0x233)](_0xefd74,_0x43a6ad[_0x55fe70(0x303)]);break;case _0x55fe70(0x248):_0x56e054=performance[_0x55fe70(0x353)]()+0x320,_0x15d3d3=performance[_0x55fe70(0x353)]()+0x578,_0x43a6ad[_0x55fe70(0x2c5)](_0xa704fc,_0x55fe70(0x35d)),_0xefd74(_0x55fe70(0x1f1));break;case _0x55fe70(0x26f):if(_0x440f75)_0x43a6ad[_0x55fe70(0x32c)](_0x3024b5),_0x43a6ad[_0x55fe70(0x2dd)](_0xefd74,_0x55fe70(0x42d));else _0xefd74(_0x55fe70(0x1ec));break;case _0x55fe70(0x414):_0x43a6ad[_0x55fe70(0x2b5)](_0x571570),_0x43a6ad[_0x55fe70(0x349)](_0xefd74,_0x55fe70(0x3e2));break;case _0x55fe70(0x240):_0x43a6ad[_0x55fe70(0x315)](_0xa704fc,_0x43a6ad[_0x55fe70(0x368)]),_0x43a6ad[_0x55fe70(0x2ec)](_0x2f56dc,'\u2728',!![]),_0xefd74(_0x43a6ad[_0x55fe70(0x3d0)]);break;case _0x55fe70(0x429):_0x43a6ad[_0x55fe70(0x37c)](_0xefd74,_0x43a6ad[_0x55fe70(0x338)](_0x55fe70(0x36b)+(_0x440f75?_0x43a6ad[_0x55fe70(0x212)]:_0x431b61)+_0x43a6ad['aypNw']+_0x8649c2[_0x55fe70(0x280)]+_0x55fe70(0x3aa),_0x8649c2[_0x55fe70(0x2ce)]||_0x55fe70(0x236))+_0x55fe70(0x345)+_0x8649c2['v']);break;case'ls':_0xefd74(_0x55fe70(0x2d4));break;case _0x55fe70(0x27d):_0xefd74(_0x43a6ad[_0x55fe70(0x3d5)]);break;case _0x43a6ad[_0x55fe70(0x41e)]:_0xefd74(_0x43a6ad[_0x55fe70(0x2a3)]);break;case _0x55fe70(0x304):_0xa704fc(_0x55fe70(0x3a1)),_0x43a6ad['OrjDN'](_0xefd74,_0x55fe70(0x3a1));break;case _0x55fe70(0x383):_0xefd74(_0x55fe70(0x31c));break;case _0x43a6ad[_0x55fe70(0x21e)]:_0x316db9[_0x55fe70(0x37e)]='';break;case _0x55fe70(0x2ff):_0xefd74(_0x55fe70(0x24b)),_0x43a6ad[_0x55fe70(0x314)](setTimeout,_0x3a0cc8,0x258);break;default:_0x43a6ad[_0x55fe70(0x24f)](_0xefd74,_0x43a6ad[_0x55fe70(0x3f0)](_0x55fe70(0x416),_0x18512f[_0x55fe70(0x2a6)]('\x20')[0x0][_0x55fe70(0x256)](/[^\w.-]/g,''))+'\x27');}}function _0x22daf4(){var _0x1bf6e4=_0x2a0923;document[_0x1bf6e4(0x1ea)][_0x1bf6e4(0x3c5)](_0x368538),document[_0x1bf6e4(0x1ea)][_0x1bf6e4(0x3c5)](_0x406278),_0x316db9=_0x406278[_0x1bf6e4(0x2f2)](_0x43a6ad[_0x1bf6e4(0x3c8)]),_0x1a4b6e=_0x406278[_0x1bf6e4(0x2f2)]('input'),_0x375198=_0x406278[_0x1bf6e4(0x2f2)](_0x1bf6e4(0x3b9)),_0x375198[_0x1bf6e4(0x37e)]=_0x43a6ad['DkCEd'](_0xe83a33),_0x368538[_0x1bf6e4(0x330)](_0x43a6ad[_0x1bf6e4(0x398)],_0x439667),_0x1a4b6e[_0x1bf6e4(0x330)](_0x1bf6e4(0x2f3),function(_0x5a943a){var _0x3ea84e=_0x1bf6e4;if(_0x5a943a[_0x3ea84e(0x1d9)]===_0x43a6ad[_0x3ea84e(0x387)]){_0x3a0cc8();return;}if(_0x5a943a[_0x3ea84e(0x1d9)]!==_0x43a6ad[_0x3ea84e(0x332)])return;var _0x46118f=_0x1a4b6e[_0x3ea84e(0x40e)][_0x3ea84e(0x445)]();_0x1a4b6e[_0x3ea84e(0x40e)]='';if(!_0x46118f)return;_0xefd74(_0x43a6ad['pWYfp'](_0xe83a33()+'\x20',_0x46118f)),_0x107432(_0x46118f);});}var _0x378e85=document[_0x2a0923(0x2ac)](_0x2a0923(0x30e));_0x378e85[_0x2a0923(0x2f0)]=_0x43a6ad[_0x2a0923(0x340)],_0x378e85[_0x2a0923(0x3ff)]=_0x43a6ad['OZRpE'](_0x2a0923(0x425)+_0x2a0923(0x261),_0x2a0923(0x284))+_0x2a0923(0x3e9)+_0x2a0923(0x3b3),_0x378e85['style'][_0x2a0923(0x29b)]=_0x2d4ea5['x']-0x1c+'px',_0x378e85[_0x2a0923(0x3ef)][_0x2a0923(0x453)]=_0x2d4ea5['y']-0x11+'px';function _0x12fabd(){var _0x546db2=_0x2a0923;_0x43a6ad[_0x546db2(0x1dd)](_0x22daf4),_0x43a6ad['ZgWNW'](_0x1bb049),setInterval(_0x1bb049,0xea60),document[_0x546db2(0x1ea)][_0x546db2(0x3c5)](_0x378e85),setTimeout(function(){var _0x51bc10=_0x546db2;_0x2f56dc('\u2728',!![]),_0x43a6ad[_0x51bc10(0x31b)](_0xa704fc,_0x43a6ad[_0x51bc10(0x367)](_0xc3518a));var _0x4c66c3=window[_0x51bc10(0x32e)]/0x2,_0x4ce069=_0x43a6ad[_0x51bc10(0x29c)](window[_0x51bc10(0x283)],0x2),_0x4d8d9f=Math[_0x51bc10(0x22e)](_0x43a6ad['QyDnP'](_0x4ce069,_0x2d4ea5['y']),_0x4c66c3-_0x2d4ea5['x']);_0x4b3a7b=_0x4d8d9f;var _0x3c2360=_0x43a6ad[_0x51bc10(0x211)](0xa0,_0x43a6ad[_0x51bc10(0x2c3)](Math[_0x51bc10(0x418)](),0x78));_0x270f08={'x':Math['min'](Math[_0x51bc10(0x20b)](_0x43a6ad[_0x51bc10(0x38a)](_0x2d4ea5['x'],Math[_0x51bc10(0x3bf)](_0x4d8d9f)*_0x3c2360),0x14),_0x43a6ad[_0x51bc10(0x219)](window[_0x51bc10(0x32e)],0x14)),'y':Math[_0x51bc10(0x318)](Math[_0x51bc10(0x20b)](_0x43a6ad['iQwKj'](_0x2d4ea5['y'],Math[_0x51bc10(0x1f8)](_0x4d8d9f)*_0x3c2360),0x14),window[_0x51bc10(0x283)]-0x14)},_0x1401cf=null,_0x431b61=_0x43a6ad[_0x51bc10(0x317)];},0x2bc),setTimeout(function(){var _0x23b19c=_0x546db2;_0x378e85[_0x23b19c(0x3ef)][_0x23b19c(0x392)]='0',setTimeout(function(){var _0x4399dd=_0x23b19c;_0x378e85[_0x4399dd(0x38d)]();},0x258);},0xa28),setTimeout(function(){var _0x1e2098=_0x546db2,_0x57d740=window[_0x1e2098(0x1fc)]|0x0;if(_0x57d740>0x0)_0xa704fc(_0x43a6ad[_0x1e2098(0x3d2)](_0x43a6ad[_0x1e2098(0x242)](_0x43a6ad[_0x1e2098(0x1e5)](_0x1e2098(0x1c9),_0x57d740),_0x43a6ad[_0x1e2098(0x245)](_0x57d740,0x1)?_0x1e2098(0x301):_0x43a6ad[_0x1e2098(0x44e)]),_0x43a6ad[_0x1e2098(0x206)]));},0x2328);}if(document[_0x2a0923(0x1ea)])_0x12fabd();else document[_0x2a0923(0x330)](_0x43a6ad['cHFcw'],_0x12fabd);requestAnimationFrame(_0x3485e1);}())); \ No newline at end of file diff --git a/example/index.html b/example/index.html new file mode 100644 index 0000000..da63f40 --- /dev/null +++ b/example/index.html @@ -0,0 +1,126 @@ + + + + + +den.js — there is a kobold on this page + + + +
+ +

den.js

+

there is a kobold on this page. you cannot see him. move your mouse.

+ +
+

hello

+

He is invisible. What you can see is his paw prints, his little comments, + and — if you leave him alone long enough — the bed he drags out.

+

Give him a moment to climb out of his burrow.

+
+ +
+

try this

+

Move your cursor — he comes to it. Stop, and he waits, then gets bored and wanders off.

+

Click him — where the prints are, not where your cursor is. He yips and spins. Do it ten times and he decides you're friends.

+

Type yip — anywhere on the page. He answers.

+

Open the >_ den tab in the corner, then try come, fetch, status, or name crumb.

+

Press BA — or just type zoomies.

+

Wait ten minutes without touching anything. He goes to bed.

+
+ +
+

things he can steal

+

These are marked data-den-steal. Nothing is stealable unless + you say so. Hit fetch in the shell to make him take one now — + he always brings it back.

+
+ NOTEPAD.EXE + apache 4 life + Y2K COMPLIANT + free gifs +
+
+ +
+

events

+

Pages tell him what happened; he decides how to feel about it.

+

+ + + + + +

+

↑ "investigate" sends him to this line, specifically.

+
+ +
+

the whole integration

+
<script src="/den.js"></script>
+

Optional markup:

+
<div data-den-poi="yip (sign it)">      <!-- he visits and comments -->
+<span data-den-steal>             <!-- he may take this -->
+<span data-den-others></span>     <!-- how many others are here -->
+
+ +

MIT licensed. if you put him on your site, he's yours now.

+
+ + + + diff --git a/package.json b/package.json new file mode 100644 index 0000000..6b326f7 --- /dev/null +++ b/package.json @@ -0,0 +1,17 @@ +{ + "name": "den.js", + "version": "1.0.0", + "description": "An invisible kobold lives on your website.", + "main": "src/den.js", + "files": ["src/", "build/", "README.md", "LICENSE"], + "scripts": { + "test": "node test/sim.js", + "test:min": "node test/sim.js build/den.min.js", + "test:obf": "node test/sim.js build/den.obf.js" + }, + "keywords": ["cursor", "mascot", "kobold", "indieweb", "neocities", "vanilla-js"], + "license": "MIT", + "devDependencies": { + "jsdom": "^24.0.0" + } +} diff --git a/src/den.js b/src/den.js new file mode 100644 index 0000000..781dd7e --- /dev/null +++ b/src/den.js @@ -0,0 +1,873 @@ +(function(){ + if (window.__denCritter) return; + window.__denCritter = true; + + var st = document.createElement('style'); + st.textContent = + '.paw-trail{position:fixed;pointer-events:none;z-index:9999;animation:pawfade 1s linear forwards;filter:drop-shadow(0 0 3px currentColor);}' + + '@keyframes pawfade{0%{opacity:.9;transform:scale(1);}100%{opacity:0;transform:scale(.5) translateY(10px);}}' + + '.emote{position:fixed;pointer-events:none;z-index:9999;font-size:15px;animation:emoterise 1.2s ease-out forwards;}' + + '.emote.say{font-size:12px;font-weight:bold;color:#c9b8ff;text-shadow:0 0 6px #8f7bff,1px 1px 0 #120a20;white-space:nowrap;font-family:"Comic Sans MS","Comic Sans",cursive;}' + + '@keyframes emoterise{0%{opacity:0;transform:translateY(0) scale(.6);}15%{opacity:1;}100%{opacity:0;transform:translateY(-34px) scale(1.15);}}' + + '.denbed{position:fixed;z-index:9998;pointer-events:none;animation:bedin .6s ease-out;transition:opacity .45s ease;}' + + '@keyframes bedin{from{opacity:0;transform:translateY(10px);}to{opacity:1;transform:translateY(0);}}' + + '.denbed .lump{animation:breathe 2.8s ease-in-out infinite;transform-origin:38px 24px;}' + + '@keyframes breathe{0%,100%{transform:scaleY(1);}50%{transform:scaleY(1.17);}}' + + 'body.denzoom *,body.denzoom *::before,body.denzoom *::after{animation-duration:.22s !important;}' + + '.denhole{position:fixed;z-index:9997;pointer-events:none;transition:opacity .55s ease;animation:holein .5s ease-out;}' + + '@keyframes holein{from{opacity:0;transform:scale(.6);}to{opacity:1;transform:scale(1);}}' + + '.dentab{position:fixed;right:14px;bottom:0;text-align:left;z-index:10000;background:#1b1229;color:#8f7bff;border:2px ridge #6b5a8a;border-bottom:none;border-radius:8px 8px 0 0;font-family:"Courier New",monospace;font-size:11px;padding:3px 10px;cursor:pointer;opacity:.55;transition:opacity .2s;user-select:none;}' + + '.dentab:hover{opacity:1;}' + + '.denterm{position:fixed;right:8px;bottom:0;z-index:10000;width:300px;max-width:86vw;background:#0d0818;border:3px ridge #6b5a8a;border-bottom:none;border-radius:10px 10px 0 0;font-family:"Courier New",monospace;font-size:12px;padding:8px;display:none;text-align:left;}' + + '.denterm.open{display:block;}' + + '.denterm .dout{height:170px;overflow-y:auto;white-space:pre-wrap;word-break:break-word;color:#c9b8ff;}' + + '.denterm .dline{display:flex;gap:6px;margin-top:5px;align-items:center;}' + + '.denterm .dprompt{color:#ff6ec7;white-space:nowrap;}' + + '.denterm input{flex:1;background:transparent;border:none;outline:none;color:#a8ffe0;font-family:inherit;font-size:12px;}'; + document.head.appendChild(st); + + var actx = null; + function yipSound(){ + try { + if (!actx) actx = new (window.AudioContext || window.webkitAudioContext)(); + if (actx.state === 'suspended') actx.resume(); + var o = actx.createOscillator(), g = actx.createGain(); + var t = actx.currentTime; + o.type = 'sine'; + o.frequency.setValueAtTime(700 + Math.random() * 200, t); + o.frequency.exponentialRampToValueAtTime(1400 + Math.random() * 300, t + 0.07); + o.frequency.exponentialRampToValueAtTime(600, t + 0.14); + g.gain.setValueAtTime(0.12, t); + g.gain.exponentialRampToValueAtTime(0.001, t + 0.16); + o.connect(g); g.connect(actx.destination); + o.start(t); o.stop(t + 0.18); + } catch(e){} + } + window.denYip = yipSound; + + if (window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches) { + window.denSay = function(){}; + return; + } + + var PAW = '' + + '' + + '' + + '' + + '' + + '' + + ''; + var colors = ['#8f7bff', '#4fc3ff']; + var spawnEdge = Math.floor(Math.random() * 4); + var sx, sy; + if (spawnEdge === 0) { sx = 70; sy = 80 + Math.random() * Math.max(window.innerHeight - 160, 1); } + else if (spawnEdge === 1) { sx = window.innerWidth - 70; sy = 80 + Math.random() * Math.max(window.innerHeight - 160, 1); } + else if (spawnEdge === 2) { sx = 80 + Math.random() * Math.max(window.innerWidth - 160, 1); sy = 70; } + else { sx = 80 + Math.random() * Math.max(window.innerWidth - 160, 1); sy = window.innerHeight - 70; } + var pos = { x: sx, y: sy }; + var heading = Math.random() * Math.PI * 2; + var target = { x: pos.x, y: pos.y }; + var mode = 'rest'; + var restUntil = performance.now() + 800; + var petUntil = 0; + var nextZzz = performance.now() + 99999; + var lastEmote = 0; + var side = 1, distSince = 0; + var lastT = performance.now(); + var WALK = 70, TROT = 150, RUN = 340; + var STRIDE_WALK = 24, STRIDE_RUN = 38; + var TURN = 4.0; + var SLEEPY_AFTER = 600000; + var lastActivity = performance.now(); + var sleepPrepUntil = 0, wakeUntil = 0, suppressBumpUntil = 0; + var asleep = false, bedEl = null, nextSleepZ = 0; + var speedMult = 1; + var poiSay = null, lastPoi = null; + var errandTarget = null, errandSay = null, errandRun = false, errandDeadline = 0; + var mis = null, lastMischief = 0; + var dout = null, dinp = null, dpr = null; + + var mem = { v: 0, pets: 0, name: null, last: 0, id: null }; + try { + var m0 = JSON.parse(localStorage.getItem('denmem')); + if (m0 && typeof m0 === 'object') { + mem.v = m0.v | 0; + mem.pets = m0.pets | 0; + mem.name = (typeof m0.name === 'string' && m0.name) ? m0.name.slice(0, 16) : null; + mem.last = m0.last || 0; + if (typeof m0.id === 'string' && /^[a-f0-9]{16}$/.test(m0.id)) mem.id = m0.id; + } + } catch(e){} + var prevLast = mem.last; + mem.v++; + mem.last = Date.now(); + if (!mem.id) { + var idb = ''; + try { + var ida = new Uint8Array(8); + crypto.getRandomValues(ida); + for (var ii = 0; ii < 8; ii++) idb += ('0' + ida[ii].toString(16)).slice(-2); + } catch(e) { + for (var ij = 0; ij < 16; ij++) idb += Math.floor(Math.random() * 16).toString(16); + } + mem.id = idb; + } + function saveMem(){ + try { localStorage.setItem('denmem', JSON.stringify(mem)); } catch(e){} + } + saveMem(); + + function greeting(){ + var away = prevLast ? (Date.now() - prevLast) : 0; + if (mem.v <= 1) return '*yip* (hello)'; + if (away > 604800000) return 'YIP!! (where were u)'; + if (mem.name) return '*yip* (' + mem.name + ' missed u)'; + if (mem.v >= 8) return 'yip (welcome home)'; + return 'yip!! (u came back)'; + } + + window.denSetName = function(n){ + n = String(n || '').replace(/[^\w \-]/g, '').trim().slice(0, 16); + if (!n) return null; + mem.name = n; + saveMem(); + sayText('yip!! (i am ' + n + ')'); + emote('\uD83D\uDC96', true); + if (dpr) dpr.textContent = promptTxt(); + return n; + }; + window.denGetName = function(){ return mem.name; }; + + function promptTxt(){ return (mem.name || 'guest') + '@den ~>'; } + + function denPhrase(n){ + if (n <= 0) return 'just u + the kobold rn'; + if (n === 1) return '1 other is here rn'; + return n + ' others are here rn'; + } + function checkPresence(){ + if (!window.fetch) return; + fetch('/den.php?id=' + mem.id, { cache: 'no-store' }).then(function(r){ + if (!r.ok) return null; + return r.json(); + }).then(function(j){ + if (!j) return; + var n = j.others | 0; + window.denOthers = n; + var els = document.querySelectorAll('[data-den-others]'); + for (var i = 0; i < els.length; i++) els[i].textContent = denPhrase(n); + }).catch(function(){}); + } + + function pois(){ + var out = []; + var els = document.querySelectorAll('[data-den-poi]'); + for (var i = 0; i < els.length; i++) { + var r = els[i].getBoundingClientRect(); + if (r.width < 10 || r.height < 10) continue; + if (r.bottom < 40 || r.top > window.innerHeight - 40) continue; + if (r.right < 40 || r.left > window.innerWidth - 40) continue; + out.push({ el: els[i], r: r }); + } + return out; + } + + function emote(ch, force){ + var now = performance.now(); + if (!force && now - lastEmote < 500) return; + lastEmote = now; + var el = document.createElement('span'); + el.className = 'emote'; + el.textContent = ch; + el.style.left = (pos.x + (Math.random() * 16 - 8)) + 'px'; + el.style.top = (pos.y - 18) + 'px'; + document.body.appendChild(el); + setTimeout(function(){ el.remove(); }, 1250); + } + + function pick(arr){ return arr[Math.floor(Math.random() * arr.length)]; } + + function sayText(t){ + var el = document.createElement('span'); + el.className = 'emote say'; + el.textContent = t; + el.style.left = (pos.x - 10) + 'px'; + el.style.top = (pos.y - 22) + 'px'; + document.body.appendChild(el); + setTimeout(function(){ el.remove(); }, 1250); + } + window.denSay = sayText; + + function makeBed(){ + bedEl = document.createElement('div'); + bedEl.className = 'denbed'; + bedEl.innerHTML = '' + + '' + + '' + + '' + + '' + + '' + + ''; + bedEl.style.left = (pos.x - 32) + 'px'; + bedEl.style.top = (pos.y - 26) + 'px'; + document.body.appendChild(bedEl); + } + + function bump(){ + var now = performance.now(); + if (now < suppressBumpUntil) return; + lastActivity = now; + if (sleepPrepUntil) sleepPrepUntil = 0; + if (asleep) { + asleep = false; + if (bedEl) { + var b = bedEl; bedEl = null; + b.style.opacity = '0'; + setTimeout(function(){ b.remove(); }, 500); + } + emote('\u2728', true); + sayText('...yip?'); + wakeUntil = now + 900; + } + } + document.addEventListener('keydown', bump); + document.addEventListener('scroll', bump, { passive: true }); + document.addEventListener('touchstart', bump, { passive: true }); + + document.addEventListener('mousemove', function(e){ + target.x = e.clientX; target.y = e.clientY; + bump(); + if (mode === 'errand' || mode === 'mischief') return; + var now = performance.now(); + if (now < petUntil || now < wakeUntil) return; + if (mode !== 'chase') emote('\u2757'); + mode = 'chase'; + }); + + function petHim(){ + var now = performance.now(); + if (mode === 'mischief') returnItem(); + petUntil = now + 800; + mode = 'rest'; + restUntil = now + 2000; + nextZzz = now + 99999; + emote(pick(['\uD83D\uDC95','\uD83D\uDC96','\uD83D\uDC97']), true); + setTimeout(function(){ emote('\uD83D\uDC95', true); }, 240); + yipSound(); + mem.pets++; + saveMem(); + if (mem.pets === 10) setTimeout(function(){ sayText('yip!! (we are friends now)'); }, 420); + else if (mem.pets === 25) setTimeout(function(){ sayText('yip (best friend)'); }, 420); + else if (mem.pets === 50) setTimeout(function(){ sayText('yip!! (bonded 4 life)'); }, 420); + else if (mem.pets === 100) setTimeout(function(){ sayText('yip (soulmates)'); }, 420); + } + + document.addEventListener('click', function(e){ + bump(); + if (e.target.closest && e.target.closest('a,button,input,textarea,label,select')) return; + if (Math.hypot(e.clientX - pos.x, e.clientY - pos.y) > 48) return; + petHim(); + }); + + function stealables(){ + var out = []; + var els = document.querySelectorAll('[data-den-steal]'); + for (var i = 0; i < els.length; i++) { + var r = els[i].getBoundingClientRect(); + if (r.width < 8 || r.width > 220 || r.height < 8 || r.height > 90) continue; + if (r.bottom < 40 || r.top > window.innerHeight - 60) continue; + if (r.right < 40 || r.left > window.innerWidth - 60) continue; + if (els[i].style.visibility === 'hidden') continue; + out.push(els[i]); + } + return out; + } + + function returnItem(){ + if (mis && mis.clone) { + mis.el.style.visibility = ''; + mis.clone.remove(); + } + if (mis) { + mis = null; + mode = 'wander'; + target = pickWander(); + } + } + + function startMischief(force){ + var now = performance.now(); + if (mis) return false; + if (!force && now - lastMischief < 150000) return false; + var cands = stealables(); + if (!cands.length) return false; + if (!force && Math.random() > 0.07) return false; + var el = cands[Math.floor(Math.random() * cands.length)]; + var r = el.getBoundingClientRect(); + mis = { + el: el, + phase: 'togo', + pt: clampPt(r.left + r.width / 2, r.top + r.height / 2), + deadline: now + 18000, + gift: mem.pets >= 25 + }; + lastMischief = now; + mode = 'mischief'; + return true; + } + + function grabItem(now){ + var r = mis.el.getBoundingClientRect(); + mis.clone = document.createElement('div'); + mis.clone.style.cssText = 'position:fixed;z-index:9998;pointer-events:none;margin:0;left:' + r.left + 'px;top:' + r.top + 'px;width:' + r.width + 'px;height:' + r.height + 'px;'; + var inner = mis.el.cloneNode(true); + inner.style.margin = '0'; + mis.clone.appendChild(inner); + document.body.appendChild(mis.clone); + mis.el.style.visibility = 'hidden'; + mis.cw = r.width / 2; + mis.ch = r.height; + if (mis.gift) { + sayText('yip!'); + } else { + var aa = Math.random() * Math.PI * 2; + mis.dropPt = clampPt(pos.x + Math.cos(aa) * 300, pos.y + Math.sin(aa) * 300); + sayText(pick(['yip yip yip (mine now)', '(catch me)', 'yip!! (tax)'])); + } + mis.phase = 'carry'; + } + + function clampPt(x, y){ + return { + x: Math.min(Math.max(x, 20), window.innerWidth - 20), + y: Math.min(Math.max(y, 20), window.innerHeight - 20) + }; + } + + function resolvePoint(opts){ + var el = opts.el; + if (typeof el === 'string') el = document.querySelector(el); + if (el && el.getBoundingClientRect) { + var r = el.getBoundingClientRect(); + if (r.width > 0) return clampPt(r.left + r.width * 0.5, r.top + Math.min(r.height * 0.4, 50)); + } + if (typeof opts.x === 'number' && typeof opts.y === 'number') return clampPt(opts.x, opts.y); + return null; + } + + window.denEvent = function(type, opts){ + opts = opts || {}; + var now = performance.now(); + lastActivity = now; + if (asleep) bump(); + if (mode === 'mischief' && type !== 'mischief') returnItem(); + if (type === 'mischief') { + startMischief(true); + return; + } + if (type === 'celebrate') { + petUntil = now + 1100; + mode = 'rest'; + restUntil = now + 2800; + nextZzz = now + 99999; + emote('\u2728', true); + setTimeout(function(){ emote('\uD83D\uDC95', true); }, 300); + setTimeout(function(){ emote('\u2728', true); }, 650); + setTimeout(function(){ sayText(opts.text || 'YIP!!'); }, 180); + yipSound(); + } else if (type === 'investigate') { + var pt = resolvePoint(opts); + if (!pt) return; + errandTarget = pt; + errandSay = opts.text || null; + errandRun = !!opts.run; + errandDeadline = now + 9000; + mode = 'errand'; + } else if (type === 'alarm') { + emote('\u26A0\uFE0F', true); + sayText(opts.text || 'YIP?!'); + var aa = Math.random() * Math.PI * 2; + errandTarget = clampPt(pos.x + Math.cos(aa) * 260, pos.y + Math.sin(aa) * 260); + errandSay = null; + errandRun = true; + errandDeadline = now + 4000; + mode = 'errand'; + } else if (type === 'sleepy') { + suppressBumpUntil = now + 800; + sleepPrepUntil = now + 1400; + sayText('*yawn*'); + } else if (type === 'zoomies') { + zoomies(); + } else if (opts.text) { + sayText(opts.text); + } + }; + + function zoomies(){ + document.body.classList.add('denzoom'); + speedMult = 7.5; + var old = document.title; + document.title = 'YIP YIP YIP YIP YIP'; + sayText('YIP YIP YIP YIP'); + setTimeout(function(){ + document.body.classList.remove('denzoom'); + speedMult = 1; + document.title = old; + }, 10000); + } + + var kseq = ['ArrowUp','ArrowUp','ArrowDown','ArrowDown','ArrowLeft','ArrowRight','ArrowLeft','ArrowRight','b','a']; + var kpos = 0; + document.addEventListener('keydown', function(e){ + var k = e.key.length === 1 ? e.key.toLowerCase() : e.key; + kpos = (k === kseq[kpos]) ? kpos + 1 : (k === kseq[0] ? 1 : 0); + if (kpos !== kseq.length) return; + kpos = 0; + zoomies(); + }); + + var buf = ''; + document.addEventListener('keydown', function(e){ + var t = e.target; + if (t && (t.tagName === 'INPUT' || t.tagName === 'TEXTAREA' || t.isContentEditable)) return; + if (e.key.length !== 1) return; + buf = (buf + e.key.toLowerCase()).slice(-12); + if (buf.slice(-3) === 'yip') { sayText('yip!!'); buf = ''; } + else if (buf.slice(-3) === 'owo') { sayText('*notices u*'); buf = ''; } + else if (buf.slice(-3) === 'uwu') { sayText('yip (no)'); buf = ''; } + else if (buf.slice(-6) === 'kobold') { emote('\uD83D\uDC95', true); sayText('yip!! (that is me)'); buf = ''; } + else if (buf.slice(-6) === 'shrine') { sayText('YIP?! (how do u know about that)'); buf = ''; } + else if (buf.slice(-7) === 'zoomies') { zoomies(); buf = ''; } + else if (buf.slice(-5) === 'sleep') { + suppressBumpUntil = performance.now() + 800; + sleepPrepUntil = performance.now() + 1400; + sayText('*yawn*'); + buf = ''; + } + }); + + function angDiff(a, b){ + var d = (b - a) % (Math.PI * 2); + if (d > Math.PI) d -= Math.PI * 2; + if (d < -Math.PI) d += Math.PI * 2; + return d; + } + + function pickWander(){ + poiSay = null; + if (Math.random() < 0.45) { + var ps = pois().filter(function(p){ return p.el !== lastPoi; }); + if (ps.length) { + var p = ps[Math.floor(Math.random() * ps.length)]; + lastPoi = p.el; + var txts = (p.el.getAttribute('data-den-poi') || '').split('|').filter(Boolean); + if (txts.length) poiSay = txts[Math.floor(Math.random() * txts.length)]; + return { + x: Math.min(Math.max(p.r.left + p.r.width * (0.25 + Math.random() * 0.5), 20), window.innerWidth - 20), + y: Math.min(Math.max(p.r.top + Math.min(p.r.height * 0.4, 60) + Math.random() * 20, 20), window.innerHeight - 20) + }; + } + } + var r = 60 + Math.random() * 120; + var a = heading + (Math.random() - 0.5) * 2.6; + return { + x: Math.min(Math.max(pos.x + Math.cos(a) * r, 20), window.innerWidth - 20), + y: Math.min(Math.max(pos.y + Math.sin(a) * r, 20), window.innerHeight - 20) + }; + } + + function drop(){ + side = -side; + var p = document.createElement('span'); + p.className = 'paw-trail'; + p.innerHTML = PAW; + var c = colors[side > 0 ? 0 : 1]; + p.querySelector('svg').style.fill = c; + p.style.color = c; + var deg = heading * 180 / Math.PI + 90; + var ox = -Math.sin(heading) * 7 * side; + var oy = Math.cos(heading) * 7 * side; + p.style.left = (pos.x + ox - 7) + 'px'; + p.style.top = (pos.y + oy - 7) + 'px'; + p.querySelector('svg').style.transform = 'rotate(' + deg + 'deg) scaleX(' + side + ')'; + p.querySelector('svg').style.display = 'block'; + document.body.appendChild(p); + setTimeout(function(){ p.remove(); }, 1300); + } + + function tick(now){ + var dt = Math.min((now - lastT) / 1000, 0.05); + lastT = now; + var zoom = speedMult; + + if (asleep) { + if (now > nextSleepZ) { emote('\uD83D\uDCA4', true); nextSleepZ = now + 2600; } + requestAnimationFrame(tick); + return; + } + if (sleepPrepUntil) { + if (now < sleepPrepUntil) { + heading += 7 * dt; + var bs = WALK * 0.7 * dt; + pos.x += Math.cos(heading) * bs; + pos.y += Math.sin(heading) * bs; + distSince += bs; + if (distSince >= STRIDE_WALK * 0.8) { distSince = 0; drop(); } + } else { + sleepPrepUntil = 0; + asleep = true; + pos.x = Math.min(Math.max(pos.x, 44), window.innerWidth - 44); + pos.y = Math.min(Math.max(pos.y, 40), window.innerHeight - 30); + makeBed(); + sayText('...zzz'); + nextSleepZ = now + 1800; + } + requestAnimationFrame(tick); + return; + } + if (now - lastActivity > SLEEPY_AFTER && now > petUntil) { + sleepPrepUntil = now + 1400; + sayText('*yawn*'); + requestAnimationFrame(tick); + return; + } + if (now < wakeUntil) { + requestAnimationFrame(tick); + return; + } + + if (now < petUntil) { + heading += 9 * dt; + var st2 = WALK * 0.9 * zoom * dt; + pos.x += Math.cos(heading) * st2; + pos.y += Math.sin(heading) * st2; + distSince += st2; + if (distSince >= STRIDE_WALK * 0.8) { distSince = 0; drop(); } + requestAnimationFrame(tick); + return; + } + + if (mode === 'mischief') { + if (!mis) { + mode = 'wander'; + target = pickWander(); + requestAnimationFrame(tick); + return; + } + if (now > mis.deadline) { + if (mis.phase === 'carry') { + mis.phase = 'dropped'; + mis.dropTime = now; + mis.deadline = now + 12000; + sayText(mis.gift ? '*wheeze* (u are fast. here)' : '*wheeze* (fine)'); + } else { + returnItem(); + requestAnimationFrame(tick); + return; + } + } + if (mis.phase === 'togo' || mis.phase === 'carry') { + var mdest; + if (mis.phase === 'togo') mdest = mis.pt; + else mdest = mis.gift ? clampPt(target.x, target.y) : mis.dropPt; + var mx = mdest.x - pos.x, my = mdest.y - pos.y; + var md = Math.hypot(mx, my); + if (md < 16) { + if (mis.phase === 'togo') { + grabItem(now); + } else { + mis.phase = 'dropped'; + mis.dropTime = now; + if (mis.gift) { + sayText(pick(['uwu (for u)', 'yip (i brought u this)', '(i love u)'])); + emote('\uD83D\uDC95', true); + setTimeout(function(){ emote('\uD83D\uDC96', true); }, 300); + } else { + sayText(pick(['yip (u can have it back)', '(hehe)', 'yip yip (a good crime)'])); + } + } + } else { + var mw = Math.atan2(my, mx); + var mmx = TURN * dt * 2.2; + heading += Math.max(-mmx, Math.min(mmx, angDiff(heading, mw))); + var msp = (mis.phase === 'carry' && !mis.gift ? RUN : TROT) * zoom; + var mst = (mis.phase === 'carry' && !mis.gift ? STRIDE_RUN : STRIDE_WALK); + var mstep = Math.min(msp * dt, md); + pos.x += Math.cos(heading) * mstep; + pos.y += Math.sin(heading) * mstep; + distSince += mstep; + if (distSince >= mst) { distSince = 0; drop(); } + } + if (mis && mis.clone && mis.phase === 'carry') { + mis.clone.style.left = (pos.x - mis.cw) + 'px'; + mis.clone.style.top = (pos.y - mis.ch - 14) + 'px'; + } + } else if (mis.phase === 'dropped') { + if (now > mis.dropTime + (mis.gift ? 4200 : 5200)) { + var hr = mis.el.getBoundingClientRect(); + mis.clone.style.transition = 'left .6s ease, top .6s ease, opacity .6s ease'; + mis.clone.style.left = hr.left + 'px'; + mis.clone.style.top = hr.top + 'px'; + mis.phase = 'returning'; + mis.retTime = now; + if (!mis.gift) sayText('yip (fine. take it back)'); + } + } else if (mis.phase === 'returning') { + if (now > mis.retTime + 700) { + emote('\u2728', true); + returnItem(); + } + } + requestAnimationFrame(tick); + return; + } + + if (mode === 'errand') { + if (!errandTarget || now > errandDeadline) { + errandTarget = null; + mode = 'wander'; + target = pickWander(); + } else { + var ex = errandTarget.x - pos.x, ey = errandTarget.y - pos.y; + var ed = Math.hypot(ex, ey); + if (ed < 16) { + if (errandSay) sayText(errandSay); + else emote(pick(['\uD83D\uDC43','\u2753'])); + errandTarget = null; + errandSay = null; + mode = 'rest'; + restUntil = now + 1500; + nextZzz = now + 99999; + } else { + var ew = Math.atan2(ey, ex); + var emx = TURN * dt * 2.2; + heading += Math.max(-emx, Math.min(emx, angDiff(heading, ew))); + var esp = (errandRun ? RUN : TROT) * zoom; + var est = (errandRun ? STRIDE_RUN : STRIDE_WALK); + var estep = Math.min(esp * dt, ed); + pos.x += Math.cos(heading) * estep; + pos.y += Math.sin(heading) * estep; + distSince += estep; + if (distSince >= est) { distSince = 0; drop(); } + } + } + requestAnimationFrame(tick); + return; + } + + var dx = target.x - pos.x, dy = target.y - pos.y; + var dist = Math.hypot(dx, dy); + + if (mode === 'chase') { + if (dist < 26) { + mode = 'rest'; + restUntil = now + (mem.pets >= 25 ? 4200 : 2500); + nextZzz = now + 1700; + if (Math.random() < 0.5) emote(mem.pets >= 10 ? '\uD83D\uDC95' : '\u2728'); + } + } else if (mode === 'rest') { + if (now > nextZzz) { emote('\uD83D\uDCA4'); nextZzz = now + 1600; } + if (now > restUntil) { + if (!startMischief(false)) { target = pickWander(); mode = 'wander'; } + } + } else { + if (dist < 14) { + mode = 'rest'; nextZzz = now + 99999; + if (poiSay) { + restUntil = now + 1200 + Math.random() * 1600; + sayText(poiSay); + poiSay = null; + } else { + restUntil = now + 600 + Math.random() * 1600; + emote(pick(['\uD83D\uDC43','\u2753','\uD83C\uDF38','\u2728','\uD83D\uDC3E'])); + } + } + } + + if (mode !== 'rest' && dist > 1) { + var want = Math.atan2(dy, dx); + var maxTurn = TURN * dt * (mode === 'chase' ? 2.2 : 1); + heading += Math.max(-maxTurn, Math.min(maxTurn, angDiff(heading, want))); + var running = (mode === 'chase' && dist > 160); + var speed = (mode === 'chase' ? (running ? RUN : TROT) : WALK) * zoom; + var stride = running ? STRIDE_RUN : STRIDE_WALK; + var step = Math.min(speed * dt, dist); + pos.x += Math.cos(heading) * step; + pos.y += Math.sin(heading) * step; + distSince += step; + if (distSince >= stride) { distSince = 0; drop(); } + } + requestAnimationFrame(tick); + } + var tab = document.createElement('div'); + tab.className = 'dentab'; + tab.textContent = '>_ den'; + var term = document.createElement('div'); + term.className = 'denterm'; + term.innerHTML = '
den shell v2 (now portable)\ntype "help"\n
' + + '
'; + + function dprint(t){ dout.textContent += t + '\n'; dout.scrollTop = dout.scrollHeight; } + function openTerm(){ term.classList.add('open'); tab.style.display = 'none'; dinp.focus(); } + function closeTerm(){ term.classList.remove('open'); tab.style.display = ''; } + + var petSeen = 0; + function runCmd(raw){ + var lc = raw.toLowerCase(); + if (lc.indexOf('name ') === 0) { + var nn = window.denSetName(raw.slice(5)); + dprint(nn ? 'the kobold accepts the name "' + nn + '". this is legally binding' : 'that name did not survive processing. try letters'); + return; + } + if (lc === 'name') { + dprint(mem.name ? 'the kobold is named "' + mem.name + '"' : 'the kobold has no name yet. try: name '); + return; + } + if (lc.indexOf('sudo') === 0) { dprint('no.'); return; } + if (lc.indexOf('rm ') === 0 || lc === 'rm') { dprint('rm: the hoard is load-bearing. request denied'); return; } + switch (lc) { + case 'help': + dprint('commands: pet, come, sit, fetch, sleep, wake, zoomies, where, status, name , ls, whoami, pwd, neofetch, yip, clear, exit'); + break; + case 'pet': + case 'pet kobold': + petSeen++; + petHim(); + dprint(petSeen >= 5 ? '*yip yip yip* (maximum happiness. further pets stored for later)' : '*pets dispensed remotely* yip!'); + break; + case 'fetch': { + if (startMischief(true)) { + dprint(mem.pets >= 25 ? 'he goes to find u something' : 'oh no'); + } else { + dprint(mis ? 'his paws are full' : 'nothing here worth taking. sad'); + } + break; + } + case 'come': { + var r = term.getBoundingClientRect(); + target = { + x: Math.min(Math.max(r.left + 40, 20), window.innerWidth - 20), + y: Math.min(Math.max(r.top - 40, 20), window.innerHeight - 20) + }; + if (asleep) bump(); + mode = 'chase'; + dprint('he is on his way'); + break; + } + case 'sit': + mode = 'rest'; + restUntil = performance.now() + 6000; + nextZzz = performance.now() + 99999; + sayText('yip (sitting)'); + dprint('he sits. a good boy'); + break; + case 'sleep': + suppressBumpUntil = performance.now() + 800; + sleepPrepUntil = performance.now() + 1400; + sayText('*yawn*'); + dprint('bedtime initiated'); + break; + case 'wake': + if (asleep) { bump(); dprint('he stirs'); } + else dprint('he is already awake and probably watching u'); + break; + case 'zoomies': + zoomies(); + dprint('oh no'); + break; + case 'where': + sayText('yip!! (here)'); + emote('\u2728', true); + dprint('listen for the yip'); + break; + case 'status': + dprint('mode: ' + (asleep ? 'asleep' : mode) + ' | pets: ' + mem.pets + ' | name: ' + (mem.name || '(unnamed)') + ' | visits: ' + mem.v); + break; + case 'ls': + dprint('den/ hoard/ guestbook.txt do_not_open/ retopo_FINAL_v2/'); + break; + case 'whoami': + dprint('a guest in the den'); + break; + case 'pwd': + dprint('/home/den/u'); + break; + case 'yip': + sayText('yip!!'); + dprint('yip!!'); + break; + case 'neofetch': + dprint(' /\\_/\\ guest@den\n ( o.o ) ----------\n > ^ < OS: DenOS (yes it is just apache)\n kobold btw Shell: den shell 2.0\n Uptime: emotionally? unclear'); + break; + case 'clear': + dout.textContent = ''; + break; + case 'exit': + dprint('u can check out any time u like...'); + setTimeout(closeTerm, 600); + break; + default: + dprint("fish: Unknown command: '" + raw.split(' ')[0].replace(/[^\w.-]/g, '') + "'"); + } + } + + function mountShell(){ + document.body.appendChild(tab); + document.body.appendChild(term); + dout = term.querySelector('.dout'); + dinp = term.querySelector('input'); + dpr = term.querySelector('.dprompt'); + dpr.textContent = promptTxt(); + tab.addEventListener('click', openTerm); + dinp.addEventListener('keydown', function(e){ + if (e.key === 'Escape') { closeTerm(); return; } + if (e.key !== 'Enter') return; + var raw = dinp.value.trim(); + dinp.value = ''; + if (!raw) return; + dprint(promptTxt() + ' ' + raw); + runCmd(raw); + }); + } + + var hole = document.createElement('div'); + hole.className = 'denhole'; + hole.innerHTML = '' + + '' + + '' + + '' + + ''; + hole.style.left = (pos.x - 28) + 'px'; + hole.style.top = (pos.y - 17) + 'px'; + function beginLife(){ + mountShell(); + checkPresence(); + setInterval(checkPresence, 60000); + document.body.appendChild(hole); + setTimeout(function(){ + emote('\u2728', true); + sayText(greeting()); + var cx = window.innerWidth / 2, cy = window.innerHeight / 2; + var ang = Math.atan2(cy - pos.y, cx - pos.x); + heading = ang; + var r2 = 160 + Math.random() * 120; + target = { + x: Math.min(Math.max(pos.x + Math.cos(ang) * r2, 20), window.innerWidth - 20), + y: Math.min(Math.max(pos.y + Math.sin(ang) * r2, 20), window.innerHeight - 20) + }; + poiSay = null; + mode = 'wander'; + }, 700); + setTimeout(function(){ + hole.style.opacity = '0'; + setTimeout(function(){ hole.remove(); }, 600); + }, 2600); + setTimeout(function(){ + var n = window.denOthers | 0; + if (n > 0) sayText('yip (' + n + (n === 1 ? ' other is' : ' others are') + ' here... i can smell them)'); + }, 9000); + } + if (document.body) beginLife(); + else document.addEventListener('DOMContentLoaded', beginLife); + requestAnimationFrame(tick); +})(); diff --git a/src/den.php b/src/den.php new file mode 100644 index 0000000..53d12e2 --- /dev/null +++ b/src/den.php @@ -0,0 +1,52 @@ + $roster[$fp][0]) { + $roster[$fp] = [$ts, $rih]; + } + } +} + +$from_my_ip = 0; +foreach ($roster as $fp => $e) { + if ($e[1] === $iph && $fp !== $me) $from_my_ip++; +} +if (isset($roster[$me]) || $from_my_ip < 3) { + $roster[$me] = [$now, $iph]; +} +$others = count($roster) - (isset($roster[$me]) ? 1 : 0); + +$out = ''; +foreach ($roster as $fp => $e) { + $out .= $e[0] . '|' . $fp . '|' . $e[1] . "\n"; +} +@file_put_contents($f, $out, LOCK_EX); + +header('Content-Type: application/json'); +header('Cache-Control: no-store'); +echo json_encode(['others' => $others]); diff --git a/test/sim.js b/test/sim.js new file mode 100644 index 0000000..f3d87a1 --- /dev/null +++ b/test/sim.js @@ -0,0 +1,82 @@ +const { JSDOM } = require('jsdom'); +const fs = require('fs'); + +const dom = new JSDOM(` +LOOT +`, { runScripts: 'outside-only', pretendToBeVisual: false }); +const w = dom.window; +const doc = w.document; + +// viewport +Object.defineProperty(w, 'innerWidth', { value: 1200 }); +Object.defineProperty(w, 'innerHeight', { value: 800 }); + +// clock + rAF pump +let NOW = 0; +let rafQ = []; +w.performance.now = () => NOW; +w.requestAnimationFrame = (cb) => { rafQ.push(cb); return rafQ.length; }; +function pump(ms, step = 16) { + const end = NOW + ms; + while (NOW < end) { + NOW += step; + // run any pending timeouts jsdom scheduled? jsdom timers use real time. + const q = rafQ; rafQ = []; + q.forEach(cb => cb(NOW)); + } +} + +// matchMedia +w.matchMedia = () => ({ matches: false }); + +// loot element rect +const loot = doc.getElementById('loot'); +loot.setAttribute('data-den-steal', ''); +loot.getBoundingClientRect = () => ({ left: 300, top: 300, right: 400, bottom: 330, width: 100, height: 30 }); + +// generic rects so pois()/terminal don't explode +const origGBCR = w.Element.prototype.getBoundingClientRect; +w.Element.prototype.getBoundingClientRect = function(){ + if (this === loot) return loot.getBoundingClientRect(); + return { left: 0, top: 0, right: 0, bottom: 0, width: 0, height: 0 }; +}; + +// run den.js +const src = fs.readFileSync(process.argv[2] || 'src/den.js', 'utf8'); +w.eval(src); + +// jsdom setTimeout is real-time; the spawn sequence uses setTimeout(700/2600). +// We can't fast-forward those, but they don't gate mischief. Wait them out for real. +function log(label){ + const clone = [...doc.querySelectorAll('div')].find(d => (d.getAttribute('style')||'').includes('pointer-events:none') && d.textContent.includes('LOOT')); + const says = [...doc.querySelectorAll('.emote.say')].map(e => e.textContent); + console.log(`[t=${NOW}ms] ${label} | loot.visibility='${loot.style.visibility}' | clone=${clone ? 'YES@'+clone.style.left+','+clone.style.top : 'no'} | says=${JSON.stringify(says)}`); +} + +setTimeout(() => { + pump(4000); // past spawn + log('before mischief'); + w.denEvent('mischief'); + log('event fired'); + pump(100); log('after 100ms'); + pump(1000); log('after ~1.1s (should be walking to loot)'); + pump(2000); log('after ~3.1s (grabbed? carrying?)'); + + // simulate the user moving the mouse mid-carry + const ev = new w.MouseEvent('mousemove', { clientX: 900, clientY: 200 }); + doc.dispatchEvent(ev); + log('mouse moved'); + pump(3000); log('after ~6.1s'); + pump(6000); log('after ~12.1s (dropped by now?)'); + pump(8000); log('after ~20.1s (returned by now?)'); + pump(10000); log('after ~30.1s (MUST be returned)'); + + const restored = loot.style.visibility !== 'hidden'; + const noOrphan = ![...doc.querySelectorAll('div')] + .some(d => (d.getAttribute('style') || '').includes('pointer-events:none') + && d.textContent.includes('LOOT')); + console.log(''); + console.log(restored ? 'PASS: stolen element restored' : 'FAIL: element still hidden'); + console.log(noOrphan ? 'PASS: no orphaned clone left behind' : 'FAIL: clone leaked'); + process.exit(restored && noOrphan ? 0 : 1); +}, 3500);