<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Vanity ETH</title>

    <!--CSS-->
    <link rel="stylesheet"
          href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-beta/css/bootstrap.min.css"/>
    <link href="css/stylesheet.css" rel="stylesheet" type="text/css" media="all"/>

    <!--Fonts-->
    <link href='https://fonts.googleapis.com/css?family=Montserrat:400,700' rel='stylesheet' type='text/css'>
    <link href='https://fonts.googleapis.com/css?family=Lato:100,300,400,700,900,100italic,300italic,400italic,700italic,900italic'
          rel='stylesheet' type='text/css'>
</head>
<body>
<div class="container" id="app">
    <div class="header text-center">
        <h1>VANITY-ETH</h1>
        <p>Vanity ETH address generator</p>
    </div>
    <div class="row">
        <div class="col-md-12">
            <div class="panel description">
                <p>
                    Vanity-ETH is a browser-based tool to generate vanity Ethereum addresses.
                </p>
                <h4>Usage</h4>
                <p>
                    Enter the prefix of your choice below, then click 'generate' to start.<br>
                    Ethereum addresses are hexadecimal, which means your prefix can only contain numbers and letters
                    from A to F.<br>
                    You can increase the number of threads allocated to address generation to be faster, or decrease it
                    if you computer struggles.<br>
                </p>
                <h4>How it works</h4>
                <p>
                    You browser is going to generate a ton of random addresses until one of them starts with your prefix.<br>
                    Everything is computed by your browser, so you should notice a better speed on a powerful
                    computer.<br>
                </p>
                <h4>Security</h4>
                <p>
                    As explained above, everything is computed in your browser. Nothing ever leaves your machine, or
                    even your browser tab.<br>
                    Once the page is loaded, you can turn off your internet connection and everything will work
                    perfectly fine.<br>
                    Vanity-ETH uses a cryptographically secure pseudorandom number generator (CSPRNG) to generate
                    Ethereum addresses.
                </p>
            </div>
        </div>
    </div>
    <div v-if="error" class="row" v-cloak>
        <div class="col-md-12">
            <div class="panel error">
                <p v-if="error === 'local_workers_forbidden'">
                    Your browser disallows multi-thread computation when run from a local file.<br>
                    Please use the online version at <a href="https://git.io/veth">git.io/veth</a>, or use a different browser.
                </p>
                <p v-else-if="error === 'workers_unsupported'">
                    Your browser does not support multi-thread computation.<br>
                    Please use a different browser.
                </p>
                <p v-else v-html="error.replace('\n', '<br>')"></p>
            </div>
        </div>
    </div>
    <div class="row">
        <div class="col-md-6">
            <div class="panel form">
                <form :class="{error: inputError}">
                    <div class="error-text">Numbers and letters from A to F only</div>
                    <input type="text" placeholder="Prefix" v-model="input.prefix" :disabled="running">
                    <div class="check">
                        <label class="checkbox">
                            <input type="checkbox" name="checkbox" checked="" v-model="input.checksum" :disabled="running">
                            <i class="left"> </i>
                            Case-sensitive
                        </label>
                    </div>
                    <div class="threads">
                        <input type="button" class="square-btn" value="-" @click="threads--" :disabled="running || threads <= 1">
                        <input type="button" class="square-btn arrow" value="+" @click="threads++" :disabled="running">
                        <h4 v-text="threads"></h4>
                        <span v-cloak>threads</span>
                        <span v-if="threads === cores" v-cloak>(recommended)</span>
                    </div>
                    <div class="row">
                        <div class="col-lg-6 col-sm-12">
                            <input type="button" value="Generate" @click="startGen" :disabled="running || inputError || error">
                        </div>
                        <div class="col-lg-6 col-sm-12">
                            <input type="button" value="Stop" @click="stopGen" :disabled="!running">
                        </div>
                    </div>
                </form>
            </div>
        </div>
        <div class="col-md-6">
            <div class="panel statistics">
                <div>Difficulty: <span class="output" v-text="difficulty">1</span></div>
                <div>Generated: <span class="output" v-text="count + (count === 1 ? ' address' : ' addresses')">0 addresses</span></div>
                <div>Speed: <span class="output" v-text="speed">0 addr/s</span></div>
                <div>Status: <span class="output" v-text="status">Waiting</span></div>
                <!--Probability:-->
                <div class="probability">
                    <div class="probability-bar" :style="'width:' + probability + '%'"></div>
                </div>
                <div class="percentage">
                    <h5 v-text="probability + '%'">0%</h5>
                    <div>Probability</div>
                </div>
            </div>
        </div>
    </div>
    <div class="row">
        <div class="col-md-12">
            <div class="panel result">
                <div>Address: <span class="output" v-text="result.address"></span></div>
                <div>Private key: <span class="output" v-text="result.privateKey"></span></div>
            </div>
        </div>
    </div>
</div>

<!--JS-->
<script src="https://unpkg.com/vue/dist/vue.min.js"></script>
<script src="js/index.js" type="text/javascript"></script>
</body>
</html>