Checking mobile users in web pages, with the largest regex up to date
-
A long time ago I submitted this WTF about detecting "valid" URLs with regex. I didn't expect there would be a part 2, but there is:
I was integrating a module written by my colleagues for one of the enterprise products. There are some issues naturally (a perfectly frictionless integration would be ), and as I look into the web page responsible for using this module's functionalities I discovered the largest regex up to date (this is almost double the length of the regex featured in that WTF, which is around 3 times the length of a typical email regex):
... // test if it's mobile user isMobile: function () { var a = navigator.userAgent || navigator.vendor || window.opera; return /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0, 4)); } ...
But that's only half of the WTF. Obviously they couldn't have cooked up this themselves in the first place, so I quickly looked up where they got this piece of regex from. It didn't take long before the remaining half of the WTF emerges:
I'm now most definitely interested in seeing the use of regex to detect ad-blockers. Or something, I dunno.
-
Our production, public-facing website representing a Fortune 500 company uses this very same regex. That got copypasta'd in by a contractor. I'm personally responsible for the longest regex on the site though, which is dynamically generated and clocks in around 700KiB.
-
@error said in Checking mobile users in web pages, with the largest regex up to date:
Our production, public-facing website representing a Fortune 500 company uses this very same regex. That got copypasta'd in by a contractor. I'm personally responsible for the longest regex on the site though, which is dynamically generated and clocks in around 700KiB.
Your regex is bigger than even the bloatiest JS libraries!
-
@_P_ said in Checking mobile users in web pages, with the largest regex up to date:
@error said in Checking mobile users in web pages, with the largest regex up to date:
Our production, public-facing website representing a Fortune 500 company uses this very same regex. That got copypasta'd in by a contractor. I'm personally responsible for the longest regex on the site though, which is dynamically generated and clocks in around 700KiB.
Your regex is bigger than even the bloatiest JS libraries!
Yeah, we moved the logic to the client side because running it server side was taxing the server CPU too hard.
-
@error said in Checking mobile users in web pages, with the largest regex up to date:
@_P_ said in Checking mobile users in web pages, with the largest regex up to date:
@error said in Checking mobile users in web pages, with the largest regex up to date:
Our production, public-facing website representing a Fortune 500 company uses this very same regex. That got copypasta'd in by a contractor. I'm personally responsible for the longest regex on the site though, which is dynamically generated and clocks in around 700KiB.
Your regex is bigger than even the bloatiest JS libraries!
Yeah, we moved the logic to the client side because running it server side was taxing the server CPU too hard.
I wonder if someone mistook the regex as an attempt to mine coins client side.
-
Note it constructs the dynamic regex client-side. It's not downloaded. It adds 10-20ms to page load but then runs fast.
-
@error said in Checking mobile users in web pages, with the largest regex up to date:
Note it constructs the dynamic regex client-side. It's not downloaded. It adds 10-20ms to page load but then runs fast.
Are you sure it's not something like 10-20s? 10-20ms is basically nothing in the course of a full page load.
-
@_P_ said in Checking mobile users in web pages, with the largest regex up to date:
@error said in Checking mobile users in web pages, with the largest regex up to date:
Note it constructs the dynamic regex client-side. It's not downloaded. It adds 10-20ms to page load but then runs fast.
Are you sure it's not something like 10-20s? 10-20ms is basically nothing in the course of a full page load.
Believe me we had 20 people in a room timing it on various devices before it left UAT.
-
In our testing, a capture group with 50K entries is not significantly slower than one with 20 (not K) after compilation. Order does matter, though - sort from longest to shortest. Still faster than lookbehind of any length.
-
@_P_ said in Checking mobile users in web pages, with the largest regex up to date:
around 3 times the length of a typical email regex):
Most of those are utter bullshit, too.
-
@LaoC said in Checking mobile users in web pages, with the largest regex up to date:
@_P_ said in Checking mobile users in web pages, with the largest regex up to date:
around 3 times the length of a typical email regex):
Most of those
who use such crap are utter bullshit, too.FTFY
As a bonus, if you try to tell them "stop using regex for this" on StackOverflow, you'll yelled at with "this is not an answer to the question"
-
@error What does it do if you don't mind me asking?
What does it do if you do mind me asking?
-
@error said in Checking mobile users in web pages, with the largest regex up to date:
Yeah, we moved the logic to the client side because running it server side was taxing the server CPU too hard.
-
@Zecc said in Checking mobile users in web pages, with the largest regex up to date:
What does it do if you don't mind me asking?
What does it do if you do mind me asking?It's sort of hard to explain without doxing myself.
Basically there's a big database of keywords that need to get turned into hyperlinks whenever they occur in a forum thread (on, you guessed it, Community Server).
Any given word on the page might match. We tested this against checking each word on the page individually. The giant regex won.
-
@error Why don't you bake the results in once before serving instead of running it every time the page is served?
-
@topspin said in Checking mobile users in web pages, with the largest regex up to date:
@error Why don't you bake the results in once before serving instead of running it every time the page is served?
It's not really available to us as an option, mostly because CS is ass.
-
@error said in Checking mobile users in web pages, with the largest regex up to date:
@topspin said in Checking mobile users in web pages, with the largest regex up to date:
@error Why don't you bake the results in once before serving instead of running it every time the page is served?
It's not really available to us as an option, mostly because CS is ass.
Customer Service? Computer Science? Counter Strike?
-
@_P_ said in Checking mobile users in web pages, with the largest regex up to date:
@error said in Checking mobile users in web pages, with the largest regex up to date:
@topspin said in Checking mobile users in web pages, with the largest regex up to date:
@error Why don't you bake the results in once before serving instead of running it every time the page is served?
It's not really available to us as an option, mostly because CS is ass.
Customer Service? Computer Science? Counter Strike?
D. All of the above!
Final Answer!
-
@error said in Checking mobile users in web pages, with the largest regex up to date:
Community Server
-
@error said in Checking mobile users in web pages, with the largest regex up to date:
@_P_ said in Checking mobile users in web pages, with the largest regex up to date:
@error said in Checking mobile users in web pages, with the largest regex up to date:
Our production, public-facing website representing a Fortune 500 company uses this very same regex. That got copypasta'd in by a contractor. I'm personally responsible for the longest regex on the site though, which is dynamically generated and clocks in around 700KiB.
Your regex is bigger than even the bloatiest JS libraries!
Yeah, we moved the logic to the client side because running it server side was taxing the server CPU too hard.
Because client-side CPU is free!
Assholes.
-
@Gąska said in Checking mobile users in web pages, with the largest regex up to date:
@error said in Checking mobile users in web pages, with the largest regex up to date:
@_P_ said in Checking mobile users in web pages, with the largest regex up to date:
@error said in Checking mobile users in web pages, with the largest regex up to date:
Our production, public-facing website representing a Fortune 500 company uses this very same regex. That got copypasta'd in by a contractor. I'm personally responsible for the longest regex on the site though, which is dynamically generated and clocks in around 700KiB.
Your regex is bigger than even the bloatiest JS libraries!
Yeah, we moved the logic to the client side because running it server side was taxing the server CPU too hard.
Because client-side CPU is free!
Assholes.
Running it for a single page takes 10-20ms. Running it for thousands of pages per minute...?
-
@_P_ said in Checking mobile users in web pages, with the largest regex up to date:
Customer Service? Computer Science? Counter Strike?
ITYM
-
@_P_ said in Checking mobile users in web pages, with the largest regex up to date:
@LaoC said in Checking mobile users in web pages, with the largest regex up to date:
@_P_ said in Checking mobile users in web pages, with the largest regex up to date:
around 3 times the length of a typical email regex):
Most of those
who use such crap are utter bullshit, too.FTFY
As a bonus, if you try to tell them "stop using regex for this" on StackOverflow, you'll yelled at with "this is not an answer to the question"
A regex is a perfectly fine tool for checking stuff that has to conform to a regular grammar. If only people would stop rolling their own.
As a matter of fact, my absolute worst-looking regex is an auto-generated one, too, and using it got me a speedup of several orders of magnitude against the previous solution that avoided all regexes and did it all in Java.
-
@_P_ said in Checking mobile users in web pages, with the largest regex up to date:
As a bonus, if you try to tell them "stop using regex for this" on StackOverflow, you'll yelled at with "this is not an answer to the question"
Filed under: I saw the publish date and now I feel old.
-
@levicki said in Checking mobile users in web pages, with the largest regex up to date:
if jQuery was running server-side?
TDEMSYR. jQuery is a DOM manipulation library. What purpose would it serve server-side?
-
@error said in Checking mobile users in web pages, with the largest regex up to date:
@levicki said in Checking mobile users in web pages, with the largest regex up to date:
if jQuery was running server-side?
TDEMSYR. jQuery is a DOM manipulation library. What purpose would it serve server-side?
I think you forgot that @levicki is someone who runs jQuery and indexedDB on Node.js
-
@LaoC said in Checking mobile users in web pages, with the largest regex up to date:
@_P_ said in Checking mobile users in web pages, with the largest regex up to date:
@LaoC said in Checking mobile users in web pages, with the largest regex up to date:
@_P_ said in Checking mobile users in web pages, with the largest regex up to date:
around 3 times the length of a typical email regex):
Most of those
who use such crap are utter bullshit, too.FTFY
As a bonus, if you try to tell them "stop using regex for this" on StackOverflow, you'll yelled at with "this is not an answer to the question"
A regex is a perfectly fine tool for checking stuff that has to conform to a regular grammar. If only people would stop rolling their own.
As a matter of fact, my absolute worst-looking regex is an auto-generated one, too, and using it got me a speedup of several orders of magnitude against the previous solution that avoided all regexes and did it all in Java.Of course, and the thing is, for most of these "regex is perfect tool to solve it" problems at most you get an ugly regex. Most of the regex WTFs are using regex to solve completely inappropriate problems, like validate email, url, user agent string, ...
-
@_P_ said in Checking mobile users in web pages, with the largest regex up to date:
@LaoC said in Checking mobile users in web pages, with the largest regex up to date:
@_P_ said in Checking mobile users in web pages, with the largest regex up to date:
@LaoC said in Checking mobile users in web pages, with the largest regex up to date:
@_P_ said in Checking mobile users in web pages, with the largest regex up to date:
around 3 times the length of a typical email regex):
Most of those
who use such crap are utter bullshit, too.FTFY
As a bonus, if you try to tell them "stop using regex for this" on StackOverflow, you'll yelled at with "this is not an answer to the question"
A regex is a perfectly fine tool for checking stuff that has to conform to a regular grammar. If only people would stop rolling their own.
As a matter of fact, my absolute worst-looking regex is an auto-generated one, too, and using it got me a speedup of several orders of magnitude against the previous solution that avoided all regexes and did it all in Java.Of course, and the thing is, for most of these "regex is perfect tool to solve it" problems at most you get an ugly regex. Most of the regex WTFs are using regex to solve completely inappropriate problems, like validate email, url, user agent string, ...
Email addresses and URLs conform to a regular grammar that is unlikely to change any time soon, so they're very appropriate problems. Obviously, if your language's standard library has a built-in validator for these kinds of things, it would be dumb not to use it. If it doesn't, the decision whether to copy/paste shit into your code or use a third-party module that will be extra work to update (if you don't update you might as well copy/paste a bit and not have it load everything and the kitchen sink into your code) and may or may not mine the cryptocurrency of the day on your server in the next release is not a clear-cut one.
User agent checking is a lost cause anyway, whatever the tool.
-
@error said in Checking mobile users in web pages, with the largest regex up to date:
@levicki said in Checking mobile users in web pages, with the largest regex up to date:
if jQuery was running server-side?
TDEMSYR. jQuery is a DOM manipulation library. What purpose would it serve server-side?
Ask the brillant minds at Microsoft who invented server-side Blazor.
-
@LaoC said in Checking mobile users in web pages, with the largest regex up to date:
Email addresses and URLs conform to a regular grammar that is unlikely to change any time soon, so they're very appropriate problems.
Hoo boy. OK, posting this yet again:
-
@Mason_Wheeler said in Checking mobile users in web pages, with the largest regex up to date:
@LaoC said in Checking mobile users in web pages, with the largest regex up to date:
Email addresses and URLs conform to a regular grammar that is unlikely to change any time soon, so they're very appropriate problems.
Hoo boy. OK, posting this yet again:
.+@.+
Easy.
-
@topspin said in Checking mobile users in web pages, with the largest regex up to date:
@Mason_Wheeler said in Checking mobile users in web pages, with the largest regex up to date:
@LaoC said in Checking mobile users in web pages, with the largest regex up to date:
Email addresses and URLs conform to a regular grammar that is unlikely to change any time soon, so they're very appropriate problems.
Hoo boy. OK, posting this yet again:
.+@.+
Easy.
that's the only email validation i do via regex.
then i send an email with a link to complete the registration process.
see, having a valid parsing email address is pretty worth it if there's no mailbox on the other end.
;-P
-
@Vixen said in Checking mobile users in web pages, with the largest regex up to date:
then i send an email with a link to complete the registration process.
Thank goodness for mailinator.
-
@error said in Checking mobile users in web pages, with the largest regex up to date:
@Vixen said in Checking mobile users in web pages, with the largest regex up to date:
then i send an email with a link to complete the registration process.
Thank goodness for mailinator.
last time i wrote an integration that needed that functionality i used mailchimp. but yeah any of those services are good.
except the ones that go evil, but you know... what company doesn't do that from time to time?
-
@Vixen said in Checking mobile users in web pages, with the largest regex up to date:
@error said in Checking mobile users in web pages, with the largest regex up to date:
@Vixen said in Checking mobile users in web pages, with the largest regex up to date:
then i send an email with a link to complete the registration process.
Thank goodness for mailinator.
last time i wrote an integration that needed that functionality i used mailchimp. but yeah any of those services are good.
except the ones that go evil, but you know... what company doesn't do that from time to time?
Anyone can access any mailbox @mailinator.com. Whenever a site forces you to give an email address, you can type in whateveryouwant@mailinator.com, go open that mailbox, click to confirm, and forget all about it.
-
@_P_ said in Checking mobile users in web pages, with the largest regex up to date:
Your regex is bigger than even the bloatiest JS libraries!
Well, Highcharts clocks in at just over 1MB, and Office Fabric clocks in at 5MB. Keep trying. Both of those are in my codebase.
:cries in JS:
-
@PotatoEngineer said in Checking mobile users in web pages, with the largest regex up to date:
@_P_ said in Checking mobile users in web pages, with the largest regex up to date:
Your regex is bigger than even the bloatiest JS libraries!
Well, Highcharts clocks in at just over 1MB, and Office Fabric clocks in at 5MB. Keep trying. Both of those are in my codebase.
:cries in JS:
Angular is also over a megabyte if you don't use AoT compilation (but you should use AoT compilation).
-
@error said in Checking mobile users in web pages, with the largest regex up to date:
@Vixen said in Checking mobile users in web pages, with the largest regex up to date:
@error said in Checking mobile users in web pages, with the largest regex up to date:
@Vixen said in Checking mobile users in web pages, with the largest regex up to date:
then i send an email with a link to complete the registration process.
Thank goodness for mailinator.
last time i wrote an integration that needed that functionality i used mailchimp. but yeah any of those services are good.
except the ones that go evil, but you know... what company doesn't do that from time to time?
Anyone can access any mailbox @mailinator.com. Whenever a site forces you to give an email address, you can type in whateveryouwant@mailinator.com, go open that mailbox, click to confirm, and forget all about it.
oooh you meant on the reciving side.
yeah that's good. i used 10 minute mail more, but eyah aynthing that gets the effect is good.
-
Off-topic, but sometimes when I see these monster regexes, I get a picture of what the answer would be for the physics guys who think there must be some "simple" wavefunction that describes the quantum-mechanical history of the entire universe.
-
@mott555 said in Checking mobile users in web pages, with the largest regex up to date:
Off-topic, but sometimes when I see these monster regexes, I get a picture of what the answer would be for the physics guys who think there must be some "simple" wavefunction that describes the quantum-mechanical history of the entire universe.
That's called string theory
-
@Vixen said in Checking mobile users in web pages, with the largest regex up to date:
@error said in Checking mobile users in web pages, with the largest regex up to date:
@Vixen said in Checking mobile users in web pages, with the largest regex up to date:
@error said in Checking mobile users in web pages, with the largest regex up to date:
@Vixen said in Checking mobile users in web pages, with the largest regex up to date:
then i send an email with a link to complete the registration process.
Thank goodness for mailinator.
last time i wrote an integration that needed that functionality i used mailchimp. but yeah any of those services are good.
except the ones that go evil, but you know... what company doesn't do that from time to time?
Anyone can access any mailbox @mailinator.com. Whenever a site forces you to give an email address, you can type in whateveryouwant@mailinator.com, go open that mailbox, click to confirm, and forget all about it.
oooh you meant on the reciving side.
yeah that's good. i used 10 minute mail more, but eyah aynthing that gets the effect is good.
Guerrilla mail was always my go to, but some places seem to have it in their list of blocked domains these days
-
@Mason_Wheeler said in Checking mobile users in web pages, with the largest regex up to date:
@LaoC said in Checking mobile users in web pages, with the largest regex up to date:
Email addresses and URLs conform to a regular grammar that is unlikely to change any time soon, so they're very appropriate problems.
Hoo boy. OK, posting this yet again:
If your point is "don't roll your own"—yes, I already said that. Just use one written by people who've read the RFC. Perl's
Email::Valid
module uses a regex and passes all his test cases.
-
@error said in Checking mobile users in web pages, with the largest regex up to date:
@_P_ said in Checking mobile users in web pages, with the largest regex up to date:
As a bonus, if you try to tell them "stop using regex for this" on StackOverflow, you'll yelled at with "this is not an answer to the question"
It used to be better. It used to be that stuff already written down somewhere else was met with a RTFM snap and stupid ideas met some mocking. SO seems to me to be the main source and propagator of the approach of answering the question as stated even if it means helping the poster move faster along the highway to hell (often without realizing it too).
It would really need some kind of idiot seal badge—something like “certified 100% insanity, using this in production is a firing offence” slapped over the post in big letters—that could be applied by some number of people even if it is otherwise highly upvoted.
-
@LaoC said in Checking mobile users in web pages, with the largest regex up to date:
Email addresses and URLs conform to a regular grammar that is unlikely to change any time soon, so they're very appropriate problems.
While they do seem to be regular grammars, writing them as regular expressions is utterly insane, because they are rather complex (the URL one a bit less so, but still not simple). But since the engine can certainly run it, is there something to compile the (E)BNF to a regex?
@LaoC said in Checking mobile users in web pages, with the largest regex up to date:
User agent checking is a lost cause anyway, whatever the tool.
This is the main point though.
The user agent string should really be redefined to always say just “Open Eyes”¹².
¹ ³
² Unless assistive technology is in use, in which case it should say either “Open Ears” or “Feeling Fingers” depending whether a screen reader or a Braille terminal is used.
³ I wonder when that site was last updated.
-
@topspin said in Checking mobile users in web pages, with the largest regex up to date:
.+@.+
Easy.
I still remember my
machine!username
address...
-
@levicki said in Checking mobile users in web pages, with the largest regex up to date:
What I meant was "if what they did on the client with jQuery was being done on the server instead",
What you said was
How much more power would Google servers need if jQuery was running server-side? How much of their power bill are we paying for by having that shit run on our clients?
Which doesn't make any fucking sense (you retard).
Your corrected version still doesn't make sense, because (I'll say it slower) jQuery is a DOM manipulation library. That means its purpose is to interact with a loaded document, and alter it, typically by adding interactivity or animations. What the fuck are you talking about, adding it to the server side?
-
@mott555 said in Checking mobile users in web pages, with the largest regex up to date:
Off-topic, but sometimes when I see these monster regexes, I get a picture of what the answer would be for the physics guys who think there must be some "simple" wavefunction that describes the quantum-mechanical history of the entire universe.
There is, but if you learn it you start hearing strange music in your head and also can create small pockets of gravity.
-
@Mason_Wheeler Responding to that once again: what the RFC says is entirely irrelevant if nobody follows it. It's a non-standard.
And comments inside an address? What were they thinking?!
-
@Jaloopa Yeah people block temporary email sites nowadays.
Which is a slap to the face. They know they're being pointlessly annoying to users, and they're doubling down on it.
-
@error said in Checking mobile users in web pages, with the largest regex up to date:
@levicki said in Checking mobile users in web pages, with the largest regex up to date:
What I meant was "if what they did on the client with jQuery was being done on the server instead",
What you said was
How much more power would Google servers need if jQuery was running server-side? How much of their power bill are we paying for by having that shit run on our clients?
Which doesn't make any fucking sense (you retard).
Your corrected version still doesn't make sense, because (I'll say it slower) jQuery is a DOM manipulation library. That means its purpose is to interact with a loaded document, and alter it, typically by adding interactivity or animations. What the fuck are you talking about, adding it to the server side?
jQuery is mostly a massive prototype chimera and then lots of wrapper methods to make DOM operations with early JS much simpler and intuitive. If you want to load HTML as DOM and manipulate it server side (like
beautifulsoup
), use the right libraries: jsdom and cheerio (but don't use the former because it's really outdated).But in any case, yes, @levicki is a retard.