Converting "0xUsernames" 0xUsernames

There's so many people using a messaging service that they're running out of space to store all the usernames! To fix this, they are going to start storing usernames as hexadecimal, where possible. 

If a username consists of only the characters 0123456789ABCDEF (case  insensitive), it can be converted to a hexadecimal and stored as an integer. For example, the username ba5eba11 can be interpreted as 0xBA5EBA11, a hexadecimal integer. 

But what about 05AB1E? That's got a leading zero, which would be lost. So, whenever we convert a username, we make sure to prepend a 1 before reading it as an integer.



The Challenge

Your task is to write a program or function which, given a non-empty username as a string, 'hexa-compresses' the username:


If it can be interpreted as a hexadecimal integer, prepend a 1, interpret as hexadecimal, and then print the result as base 10.
Otherwise, just return the string unmodified.


This is code-golf, so the shortest solution (in bytes) wins! Built-in base conversion functions are permitted.



Test Cases

You can assume that any resulting integers with be within your language's standard integer range.

As with usernames on most messaging systems, the input strings will only contain alphanumerics and underscores.

Remember, you always need to add a leading 1 before conversion!

"ba5eba11" -&gt; 7421737489
"05AB1E"   -&gt; 17148702
"dec0de"   -&gt; 31375582
"Beef"     -&gt; 114415    
"da7aba5e" -&gt; 7960443486
"500"      -&gt; 5376

"DENNIS" -&gt; "DENNIS"
"Garth"  -&gt; "Garth"
"A_B_C"  -&gt; "A_B_C"
"0x000"  -&gt; "0x000"


For reference, here is a Python 3 implementation I used for the test cases (ungolfed):

import re

def convert_name(name):
    if re.fullmatch('^[0-9A-Fa-f]+$', name):
        return int('1' + name.upper(), base = 16)
    else:
        return name
05AB1E, 4 bytes

D1ìH


Explanation

D    Duplicate input
 1ì  Prepend 1
   H Interpret as hexadecimal and implicitly display the value in base 10


If the input has invalid hex characters, H won't push anything so the last value on the stack will be the duplicated input, that's why the program prints its input in case of invalid input.

Try it online!