├── .gitattributes ├── FUNDING.YML ├── assets ├── icons │ ├── icon.png │ ├── icon-16.png │ ├── icon-32.png │ ├── icon-48.png │ └── icon-128.png ├── css │ └── style.css └── js │ ├── functions.js │ ├── utf8.js │ ├── popper.js │ ├── app.js │ └── crypto.js ├── devtools ├── devtools.html └── devtools.js ├── .github ├── workflows │ └── deploy.yaml └── copilot-instructions.md ├── background.js ├── injection ├── test.html ├── dragable.js ├── injection.css └── injection.js ├── manifest.json ├── README.md ├── options ├── options.js └── options.html ├── www └── index.html └── index.html /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /FUNDING.YML: -------------------------------------------------------------------------------- 1 | #repo: 4nkitd/h4ck3r 2 | #filename: FUNDING.YML 3 | 4 | github: 4nkitd -------------------------------------------------------------------------------- /assets/icons/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4nkitd/h4ck3r/HEAD/assets/icons/icon.png -------------------------------------------------------------------------------- /assets/icons/icon-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4nkitd/h4ck3r/HEAD/assets/icons/icon-16.png -------------------------------------------------------------------------------- /assets/icons/icon-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4nkitd/h4ck3r/HEAD/assets/icons/icon-32.png -------------------------------------------------------------------------------- /assets/icons/icon-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4nkitd/h4ck3r/HEAD/assets/icons/icon-48.png -------------------------------------------------------------------------------- /assets/icons/icon-128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4nkitd/h4ck3r/HEAD/assets/icons/icon-128.png -------------------------------------------------------------------------------- /devtools/devtools.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /devtools/devtools.js: -------------------------------------------------------------------------------- 1 | navigator.userAgent.indexOf('Firefox') != -1 && 2 | browser.devtools.panels.create('h4ck3r', '../assets/icons/icon.png', '../index.html'); 3 | 4 | navigator.userAgent.indexOf('Chrome') != -1 && 5 | chrome.devtools.panels.create( 6 | 'h4ck3r', // title for the panel tab 7 | "../assets/icons/icon.png", // path to an icon 8 | '../index.html', // html page which is gonna be injecting into the tab's content 9 | null // callback function here 10 | ); -------------------------------------------------------------------------------- /.github/workflows/deploy.yaml: -------------------------------------------------------------------------------- 1 | name: Deploy to Edgeserver.io 2 | 3 | on: 4 | push: 5 | branches: 6 | - "main" 7 | 8 | jobs: 9 | zip-files: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - uses: actions/checkout@v2 13 | - name: Edgeserver Upload 14 | uses: lvkdotsh/edgeserver-action@master 15 | with: 16 | app_id: "66245733254172672" 17 | server: https://api.edgeserver.io 18 | token: ${{ secrets.SIGNAL_TOKEN }} 19 | directory: ./www -------------------------------------------------------------------------------- /background.js: -------------------------------------------------------------------------------- 1 | // background.js - Service Worker for Manifest V3 2 | 3 | // Listener for runtime messages 4 | chrome.runtime.onMessage.addListener((message, sender, sendResponse) => { 5 | if (message.action === "log") { 6 | console.log("Background Log:", message.data); 7 | sendResponse({ status: "logged" }); 8 | } 9 | }); 10 | 11 | // Example: Listener for scripting actions 12 | chrome.runtime.onInstalled.addListener(() => { 13 | console.log("Extension installed and background service worker initialized."); 14 | }); -------------------------------------------------------------------------------- /assets/css/style.css: -------------------------------------------------------------------------------- 1 | .bg-body { 2 | color: #cfe2ff; 3 | background-color: #9b9b9b; 4 | } 5 | 6 | .bg-tab-content { 7 | background-color: #353434; 8 | } 9 | 10 | .active_tab { 11 | background: #298416; 12 | color: #000; 13 | } 14 | 15 | .active_tab:hover { 16 | background: #154e0a; 17 | color: #fff; 18 | } 19 | 20 | pre {outline: 1px solid #ccc; padding: 5px; margin: 5px; } 21 | .string { color: green; } 22 | .number { color: darkorange; } 23 | .boolean { color: blue; } 24 | .null { color: magenta; } 25 | .key { color: red; } -------------------------------------------------------------------------------- /assets/js/functions.js: -------------------------------------------------------------------------------- 1 | function String2Hex(tmp) { 2 | var str = ''; 3 | for(var i = 0; i < tmp.length; i++) { 4 | str += tmp[i].charCodeAt(0).toString(16); 5 | } 6 | return str; 7 | } 8 | 9 | function hex2a(hex) { 10 | var str = ''; 11 | for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16)); 12 | return str; 13 | } 14 | 15 | function copyToClipboard(element) { 16 | var $temp = $(""); 17 | $("body").append($temp); 18 | $temp.val($(element).text()).select(); 19 | document.execCommand("copy"); 20 | $temp.remove(); 21 | } -------------------------------------------------------------------------------- /injection/test.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Document 8 | 9 | 10 |
11 |
12 |
13 |
14 |
15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "manifest_version": 3, 3 | "name": "h4ck3r", 4 | "version": "0.1.1", 5 | "description": "All in one Red Team Developer Tool Kit", 6 | 7 | "action": { 8 | "default_title": "h4ck3r", 9 | "default_popup": "index.html", 10 | "default_icon": { 11 | "16": "./assets/icons/icon-16.png", 12 | "32": "./assets/icons/icon-32.png", 13 | "48": "./assets/icons/icon-48.png", 14 | "128": "./assets/icons/icon-128.png" 15 | } 16 | }, 17 | 18 | "options_ui": { 19 | "page": "options/options.html", 20 | "open_in_tab": true 21 | }, 22 | 23 | "icons": { 24 | "16": "./assets/icons/icon-16.png", 25 | "32": "./assets/icons/icon-32.png", 26 | "48": "./assets/icons/icon-48.png", 27 | "128": "./assets/icons/icon-128.png" 28 | }, 29 | 30 | "devtools_page": "devtools/devtools.html", 31 | 32 | "permissions": [ 33 | "storage", 34 | "activeTab", 35 | "scripting" 36 | ], 37 | 38 | "host_permissions": [ 39 | "*://*/*" 40 | ], 41 | 42 | "background": { 43 | "service_worker": "background.js" 44 | }, 45 | 46 | "content_scripts": [ 47 | { 48 | "css": ["injection/injection.css"], 49 | "js": [ 50 | "assets/js/jquery.js", 51 | "injection/injection.js", 52 | "injection/dragable.js" 53 | ], 54 | "matches": ["*://*/*"] 55 | } 56 | ] 57 | } 58 | -------------------------------------------------------------------------------- /injection/dragable.js: -------------------------------------------------------------------------------- 1 | // Make the DIV element draggable: 2 | dragElement(document.getElementById("toolbar_id_")); 3 | 4 | function dragElement(elmnt) { 5 | var pos1 = 0, pos2 = 0, pos3 = 0, pos4 = 0; 6 | if (document.getElementById("h4ckr-header")) { 7 | // if present, the h4ckr-header is where you move the DIV from: 8 | document.getElementById("h4ckr-header").onmousedown = dragMouseDown; 9 | } else { 10 | // otherwise, move the DIV from anywhere inside the DIV: 11 | // elmnt.onmousedown = dragMouseDown; 12 | } 13 | 14 | function dragMouseDown(e) { 15 | e = e || window.event; 16 | e.preventDefault(); 17 | // get the mouse cursor position at startup: 18 | pos3 = e.clientX; 19 | pos4 = e.clientY; 20 | document.onmouseup = closeDragElement; 21 | // call a function whenever the cursor moves: 22 | document.onmousemove = elementDrag; 23 | } 24 | 25 | function elementDrag(e) { 26 | e = e || window.event; 27 | e.preventDefault(); 28 | // calculate the new cursor position: 29 | pos1 = pos3 - e.clientX; 30 | pos2 = pos4 - e.clientY; 31 | pos3 = e.clientX; 32 | pos4 = e.clientY; 33 | // set the element's new position: 34 | elmnt.style.top = (elmnt.offsetTop - pos2) + "px"; 35 | elmnt.style.left = (elmnt.offsetLeft - pos1) + "px"; 36 | localStorage.setItem('h4ck3r_position_top', elmnt.style.top) 37 | localStorage.setItem('h4ck3r_position_bottom', elmnt.style.left) 38 | } 39 | 40 | function closeDragElement() { 41 | // stop moving when mouse button is released: 42 | document.onmouseup = null; 43 | document.onmousemove = null; 44 | } 45 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ![Icon](./assets/icons/icon-32.png) h4ck3r 2 | A Browser Extension for chromium/firefox browser. Small tool for Developers & Pentesters. 3 | 4 | # Important URL 5 | [Join Discord](https://discord.gg/gFcewQUA) 6 | 7 | ## Stats 8 | [![Hits](https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https%3A%2F%2Fgithub.com%2F4nkitd%2Fh4ck3r&count_bg=%2379C83D&title_bg=%23555555&icon=&icon_color=%23E7E7E7&title=hits&edge_flat=false)](https://github.com/4nkitd) 9 | 10 | [demo]( https://dagar.in/demo/h4ck3r/ ) thanks to [dagar.in](https://dagar.in/demo/h4ck3r/) 11 | ## Reason Of Existence 12 | 13 | 1. Could find all required features in one extension. 14 | 1. My fav Extension [HackBar](https://chrome.google.com/webstore/detail/hackbar/djmoeoifnlhjolebkehmpaocfnipknbh) moved to a paid model. 15 | 1. Feels like a lot of work look for site because can't remember their domains. 16 | 1. Can't find anything similar to [HackBar](https://chrome.google.com/webstore/detail/hackbar/djmoeoifnlhjolebkehmpaocfnipknbh) that's free & OpenSource 17 | 1. Don't Trust the sites & can't check their code always. 18 | 1. Don't Trust google/fb & other analytics on those sites. 19 | 20 | ## How to use 21 | * Press F12 & click h4ck3r on the menu. 22 | 23 | ## Features 24 | * Encoding/Decoding ( base64, url, hex ). 25 | * Encryption ( md5, sha256, sha512, sha3 ). 26 | * Cypher ( AES encryption/Decryption ). 27 | * Tools ( json beautifier ). 28 | * Wiki ( helpful doc of **sql injection**, **Python**, **linux**, **networking**, ). 29 | * Auto Form Filler ( doesn't support radio buttons. ) 30 | * Auto Reload 31 | * Auto Form Cleaner 32 | * Domain Extraction (extracts all domains used on the current page) 33 | 34 | # Notes 35 | * will auto copy your result to clipboard from after version 0.0.3 36 | * password field will always be filled by ```#Admin123``` 37 | * if you wan to un hide the toolbar ```h4ck3r.hide``` to ```0``` or ```false``` in localStorage of that site 38 | * domain extraction results are automatically copied to clipboard 39 | 40 | ## Store Availability 41 | * Firefox Extension: [here](https://addons.mozilla.org/en-US/firefox/addon/h4ck3r-d/) 42 | * Chrome Extension: [here](https://chrome.google.com/webstore/detail/h4ck3r/kmnlfjgamfnhcmpfnmgpiapacncdipad) 43 | * Edge Extension: [here](https://microsoftedge.microsoft.com/addons/detail/h4ck3r/eglafmgecldkdjfodkjgcpepkodndgdg) 44 | -------------------------------------------------------------------------------- /options/options.js: -------------------------------------------------------------------------------- 1 | // options.js - Handles saving and loading toolbar settings 2 | 3 | $(function() { 4 | // Load saved settings when the options page loads 5 | loadToolbarSettings(); 6 | 7 | // Save settings when the save button is clicked 8 | $('#save_toolbar_settings').on('click', saveToolbarSettings); 9 | 10 | // Reset toolbar position and visibility 11 | $('#reset_toolbar_position').on('click', resetToolbar); 12 | }); 13 | 14 | function loadToolbarSettings() { 15 | // Use chrome.storage.sync for cross-device settings (fallback to localStorage if needed) 16 | // For simplicity, using localStorage as per existing patterns in injection.js 17 | 18 | const settings = { 19 | fill: localStorage.getItem('h4ck3r.toolbar.fill') !== 'false', // Default true 20 | reset: localStorage.getItem('h4ck3r.toolbar.reset') !== 'false', // Default true 21 | hide: localStorage.getItem('h4ck3r.toolbar.hideToggle') !== 'false', // Default true 22 | reload: localStorage.getItem('h4ck3r.toolbar.reload') !== 'false', // Default true 23 | needed: localStorage.getItem('h4ck3r.toolbar.needed') !== 'false' // Default true 24 | }; 25 | 26 | $('#toolbar_fill_toggle').prop('checked', settings.fill); 27 | $('#toolbar_reset_toggle').prop('checked', settings.reset); 28 | $('#toolbar_hide_toggle').prop('checked', settings.hide); 29 | $('#toolbar_reload_toggle').prop('checked', settings.reload); 30 | $('#toolbar_needed_toggle').prop('checked', settings.needed); 31 | } 32 | 33 | function saveToolbarSettings() { 34 | const settings = { 35 | fill: $('#toolbar_fill_toggle').is(':checked'), 36 | reset: $('#toolbar_reset_toggle').is(':checked'), 37 | hide: $('#toolbar_hide_toggle').is(':checked'), 38 | reload: $('#toolbar_reload_toggle').is(':checked'), 39 | domains: $('#toolbar_domains_toggle').is(':checked'), 40 | needed: $('#toolbar_needed_toggle').is(':checked') 41 | }; 42 | 43 | localStorage.setItem('h4ck3r.toolbar.fill', settings.fill); 44 | localStorage.setItem('h4ck3r.toolbar.reset', settings.reset); 45 | localStorage.setItem('h4ck3r.toolbar.hideToggle', settings.hide); // Renamed key slightly to avoid conflict with existing 'h4ck3r.hide' 46 | localStorage.setItem('h4ck3r.toolbar.reload', settings.reload); 47 | localStorage.setItem('h4ck3r.toolbar.domains', settings.domains); 48 | localStorage.setItem('h4ck3r.toolbar.needed', settings.needed); 49 | 50 | // Show saved message 51 | $('#toolbar_settings_saved_message').fadeIn().delay(2000).fadeOut(); 52 | } 53 | 54 | function resetToolbar() { 55 | console.log("Resetting toolbar position and visibility"); 56 | // Set state to visible 57 | localStorage.setItem('h4ck3r.hide', 'true'); 58 | 59 | // Set position to top center 60 | localStorage.setItem('h4ck3r_position_top', '10px'); // Default top position 61 | localStorage.setItem('h4ck3r_position_bottom', '50%'); // Use 50% for left to center 62 | 63 | // Show reset message 64 | $('#toolbar_reset_message').fadeIn().delay(3000).fadeOut(); 65 | } -------------------------------------------------------------------------------- /.github/copilot-instructions.md: -------------------------------------------------------------------------------- 1 | 2 | ## Codebase Overview 3 | 4 | ### Key Features 5 | - **Encoding/Decoding**: Supports Base64, URL, and HEX encoding/decoding. 6 | - **Encryption**: Provides MD5, SHA256, SHA512, SHA3, and AES encryption/decryption. 7 | - **Form Automation**: Auto-fills forms with sample data and resets them. 8 | - **Utilities**: Includes JSON beautifier, SQL injection payloads, and command-line snippets. 9 | - **Toolbar**: A draggable toolbar for quick access to features. 10 | - **Auto Reload**: Automatically reloads the page based on user configuration. 11 | 12 | ### Key Files and Their Purpose 13 | 1. **`injection/injection.js`**: Contains logic for toolbar rendering, form filling, and auto-reload functionality. 14 | 2. **`assets/js/app.js`**: Handles encoding, encryption, and JSON beautification. 15 | 3. **`assets/js/utf8.js`**: Provides UTF-8 encoding/decoding utilities. 16 | 4. **`options/options.html`**: Defines the UI for the extension's options page. 17 | 5. **`README.md`**: Documents the purpose, features, and usage of the extension. 18 | 19 | --- 20 | 21 | ## Copilot Usage Guidelines 22 | 23 | ### General Guidelines 24 | 1. **Follow Existing Patterns**: Adhere to the coding style and patterns used in the codebase, such as jQuery for DOM manipulation and modular functions for specific tasks. 25 | 2. **Use Existing Utilities**: Leverage existing helper functions like `random_string`, `random_number`, and `copyToClipboard` instead of creating new ones. 26 | 3. **Respect File Structure**: Place new features or updates in the appropriate files (e.g., UI changes in `options.html`, logic in `app.js` or `injection.js`). 27 | 28 | ### Specific Instructions 29 | 1. **Toolbar Enhancements**: 30 | - Use the `init` function in `injection.js` to add new toolbar items. 31 | - Follow the SVG-based icon pattern for new toolbar buttons. 32 | 33 | 2. **Form Automation**: 34 | - Extend the `fill_*` functions in `injection.js` for additional input types. 35 | - Ensure compatibility with existing form-filling logic. 36 | 37 | 3. **Encoding/Encryption**: 38 | - Add new encoding or encryption methods in `app.js`. 39 | - Update the corresponding UI in `options.html` and ensure results are auto-copied to the clipboard. 40 | 41 | 4. **JSON Beautification**: 42 | - Use the `syntaxHighlight` function in `app.js` for any JSON-related enhancements. 43 | - Ensure proper error handling for invalid JSON strings. 44 | 45 | 5. **SQL Injection Payloads**: 46 | - Add new payloads to the appropriate sections in `index.html` or `www/index.html`. 47 | 48 | --- 49 | 50 | ## Testing and Debugging 51 | - Use the browser's developer tools to test the extension's functionality. 52 | - Check for errors in the console and ensure all features work as expected. 53 | - Validate UI changes in both Chromium and Firefox browsers. 54 | 55 | --- 56 | 57 | ## Notes for Copilot 58 | - **Avoid Redundancy**: Before suggesting new code, check if similar functionality already exists. 59 | - **Focus on Security**: Ensure that any new features or updates do not introduce security vulnerabilities. 60 | - **Maintain Readability**: Write clean, well-documented code that aligns with the existing style. 61 | 62 | --- 63 | 64 | ## Future Enhancements 65 | - Add support for radio buttons in form automation. 66 | - Implement additional encryption algorithms. 67 | - Enhance the toolbar with more customization options. 68 | 69 | --- -------------------------------------------------------------------------------- /injection/injection.css: -------------------------------------------------------------------------------- 1 | /* Modern and minimal design updates */ 2 | @import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap'); 3 | 4 | body { 5 | font-family: 'Inter', sans-serif; 6 | background-color: #121212; 7 | color: #e0e0e0; 8 | margin: 0; 9 | padding: 0; 10 | } 11 | 12 | .h4ckr-toolbar { 13 | display: flex; 14 | gap: 12px; 15 | align-items: center; 16 | position: fixed; 17 | top: 20px; 18 | left: -10%; 19 | transform: translateX(-50%); 20 | z-index: 1000; 21 | } 22 | 23 | .h4ckr-hot-reload { 24 | color: #fff !important; 25 | } 26 | /* Removed background gradient and updated styles for a cleaner look */ 27 | .h4ckr-toolbar-main { 28 | background-color: #1f1f1f; /* Solid background color */ 29 | background-image: none; /* Removed gradient */ 30 | border: solid 1px #333; 31 | border-radius: 9px; 32 | width: 230px; 33 | padding-top: 5px; 34 | padding-bottom: 5px; 35 | gap: 5px; 36 | box-shadow: 1px 1px 6px rgba(0, 0, 0, 0.13); 37 | cursor: pointer; 38 | display: flex; 39 | align-items: center; 40 | justify-content: center; 41 | position: fixed; 42 | top: 10px; 43 | left: 10px; 44 | z-index: 9999; 45 | transition: transform 0.3s ease-in-out; 46 | transform: translateX(0); 47 | } 48 | 49 | /* Updated button styles for better fit and appearance */ 50 | .h4ckr-toolbar-item { 51 | padding: 6px; /* Reduced padding for better fit */ 52 | font-size: 12px; /* XS small size */ 53 | display: flex; 54 | align-items: center; 55 | justify-content: center; 56 | border-radius: 6px; /* Slightly smaller radius */ 57 | background: #2a2a2a; 58 | border: none; 59 | cursor: pointer; 60 | transition: background 0.3s ease, transform 0.2s ease; 61 | box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); 62 | } 63 | 64 | .h4ckr-toolbar-item:hover { 65 | background: #3a3a3a; 66 | transform: scale(1.05); 67 | } 68 | 69 | .h4ckr-toolbar-item span { 70 | color: #ffffff; 71 | font-size: 16px; 72 | font-weight: 500; 73 | } 74 | 75 | .h4ckr-toolbar-hidden { 76 | opacity: 0; 77 | pointer-events: none; 78 | transition: opacity 0.3s ease; 79 | } 80 | 81 | .svg { 82 | fill: #000; 83 | } 84 | 85 | .h4ckr-fill { 86 | color: red; 87 | } 88 | 89 | .h4ckr-reset { 90 | color: yellow; 91 | } 92 | 93 | .h4ckr-drag { 94 | color: green; 95 | } 96 | 97 | #header { 98 | cursor: move !important; 99 | } 100 | 101 | /* Updated button styles */ 102 | .h4ckr-button { 103 | background: linear-gradient(135deg, #4caf50, #388e3c); 104 | color: #ffffff; 105 | border: none; 106 | border-radius: 8px; 107 | padding: 10px 20px; 108 | font-size: 14px; 109 | font-weight: 500; 110 | cursor: pointer; 111 | transition: background 0.3s ease, transform 0.2s ease; 112 | box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); 113 | } 114 | 115 | .h4ckr-button:hover { 116 | background: linear-gradient(135deg, #388e3c, #2e7d32); 117 | transform: scale(1.05); 118 | } 119 | 120 | /* Input field styles */ 121 | .h4ckr-input, .h4ckr-textarea { 122 | border: 1px solid #444; 123 | border-radius: 8px; 124 | padding: 10px; 125 | font-size: 14px; 126 | width: 100%; 127 | background: #1e1e1e; 128 | color: #e0e0e0; 129 | transition: border-color 0.3s ease; 130 | } 131 | 132 | .h4ckr-input:focus, .h4ckr-textarea:focus { 133 | border-color: #4caf50; 134 | outline: none; 135 | } 136 | 137 | /* Icon styles */ 138 | .h4ckr-toolbar-item svg { 139 | fill: #ffffff; 140 | width: 20px; 141 | height: 20px; 142 | transition: fill 0.3s ease; 143 | } 144 | 145 | .h4ckr-toolbar-item:hover svg { 146 | fill: #b3b3b3; 147 | } 148 | 149 | .h4ckr-toolbar-main--hidden { 150 | opacity: 0; 151 | pointer-events: none; 152 | transition: opacity 0.3s ease; 153 | } 154 | -------------------------------------------------------------------------------- /assets/js/utf8.js: -------------------------------------------------------------------------------- 1 | /*! https://mths.be/utf8js v3.0.0 by @mathias */ 2 | ;(function(root) { 3 | 4 | var stringFromCharCode = String.fromCharCode; 5 | 6 | // Taken from https://mths.be/punycode 7 | function ucs2decode(string) { 8 | var output = []; 9 | var counter = 0; 10 | var length = string.length; 11 | var value; 12 | var extra; 13 | while (counter < length) { 14 | value = string.charCodeAt(counter++); 15 | if (value >= 0xD800 && value <= 0xDBFF && counter < length) { 16 | // high surrogate, and there is a next character 17 | extra = string.charCodeAt(counter++); 18 | if ((extra & 0xFC00) == 0xDC00) { // low surrogate 19 | output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000); 20 | } else { 21 | // unmatched surrogate; only append this code unit, in case the next 22 | // code unit is the high surrogate of a surrogate pair 23 | output.push(value); 24 | counter--; 25 | } 26 | } else { 27 | output.push(value); 28 | } 29 | } 30 | return output; 31 | } 32 | 33 | // Taken from https://mths.be/punycode 34 | function ucs2encode(array) { 35 | var length = array.length; 36 | var index = -1; 37 | var value; 38 | var output = ''; 39 | while (++index < length) { 40 | value = array[index]; 41 | if (value > 0xFFFF) { 42 | value -= 0x10000; 43 | output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800); 44 | value = 0xDC00 | value & 0x3FF; 45 | } 46 | output += stringFromCharCode(value); 47 | } 48 | return output; 49 | } 50 | 51 | function checkScalarValue(codePoint) { 52 | if (codePoint >= 0xD800 && codePoint <= 0xDFFF) { 53 | throw Error( 54 | 'Lone surrogate U+' + codePoint.toString(16).toUpperCase() + 55 | ' is not a scalar value' 56 | ); 57 | } 58 | } 59 | /*--------------------------------------------------------------------------*/ 60 | 61 | function createByte(codePoint, shift) { 62 | return stringFromCharCode(((codePoint >> shift) & 0x3F) | 0x80); 63 | } 64 | 65 | function encodeCodePoint(codePoint) { 66 | if ((codePoint & 0xFFFFFF80) == 0) { // 1-byte sequence 67 | return stringFromCharCode(codePoint); 68 | } 69 | var symbol = ''; 70 | if ((codePoint & 0xFFFFF800) == 0) { // 2-byte sequence 71 | symbol = stringFromCharCode(((codePoint >> 6) & 0x1F) | 0xC0); 72 | } 73 | else if ((codePoint & 0xFFFF0000) == 0) { // 3-byte sequence 74 | checkScalarValue(codePoint); 75 | symbol = stringFromCharCode(((codePoint >> 12) & 0x0F) | 0xE0); 76 | symbol += createByte(codePoint, 6); 77 | } 78 | else if ((codePoint & 0xFFE00000) == 0) { // 4-byte sequence 79 | symbol = stringFromCharCode(((codePoint >> 18) & 0x07) | 0xF0); 80 | symbol += createByte(codePoint, 12); 81 | symbol += createByte(codePoint, 6); 82 | } 83 | symbol += stringFromCharCode((codePoint & 0x3F) | 0x80); 84 | return symbol; 85 | } 86 | 87 | function utf8encode(string) { 88 | var codePoints = ucs2decode(string); 89 | var length = codePoints.length; 90 | var index = -1; 91 | var codePoint; 92 | var byteString = ''; 93 | while (++index < length) { 94 | codePoint = codePoints[index]; 95 | byteString += encodeCodePoint(codePoint); 96 | } 97 | return byteString; 98 | } 99 | 100 | /*--------------------------------------------------------------------------*/ 101 | 102 | function readContinuationByte() { 103 | if (byteIndex >= byteCount) { 104 | throw Error('Invalid byte index'); 105 | } 106 | 107 | var continuationByte = byteArray[byteIndex] & 0xFF; 108 | byteIndex++; 109 | 110 | if ((continuationByte & 0xC0) == 0x80) { 111 | return continuationByte & 0x3F; 112 | } 113 | 114 | // If we end up here, it’s not a continuation byte 115 | throw Error('Invalid continuation byte'); 116 | } 117 | 118 | function decodeSymbol() { 119 | var byte1; 120 | var byte2; 121 | var byte3; 122 | var byte4; 123 | var codePoint; 124 | 125 | if (byteIndex > byteCount) { 126 | throw Error('Invalid byte index'); 127 | } 128 | 129 | if (byteIndex == byteCount) { 130 | return false; 131 | } 132 | 133 | // Read first byte 134 | byte1 = byteArray[byteIndex] & 0xFF; 135 | byteIndex++; 136 | 137 | // 1-byte sequence (no continuation bytes) 138 | if ((byte1 & 0x80) == 0) { 139 | return byte1; 140 | } 141 | 142 | // 2-byte sequence 143 | if ((byte1 & 0xE0) == 0xC0) { 144 | byte2 = readContinuationByte(); 145 | codePoint = ((byte1 & 0x1F) << 6) | byte2; 146 | if (codePoint >= 0x80) { 147 | return codePoint; 148 | } else { 149 | throw Error('Invalid continuation byte'); 150 | } 151 | } 152 | 153 | // 3-byte sequence (may include unpaired surrogates) 154 | if ((byte1 & 0xF0) == 0xE0) { 155 | byte2 = readContinuationByte(); 156 | byte3 = readContinuationByte(); 157 | codePoint = ((byte1 & 0x0F) << 12) | (byte2 << 6) | byte3; 158 | if (codePoint >= 0x0800) { 159 | checkScalarValue(codePoint); 160 | return codePoint; 161 | } else { 162 | throw Error('Invalid continuation byte'); 163 | } 164 | } 165 | 166 | // 4-byte sequence 167 | if ((byte1 & 0xF8) == 0xF0) { 168 | byte2 = readContinuationByte(); 169 | byte3 = readContinuationByte(); 170 | byte4 = readContinuationByte(); 171 | codePoint = ((byte1 & 0x07) << 0x12) | (byte2 << 0x0C) | 172 | (byte3 << 0x06) | byte4; 173 | if (codePoint >= 0x010000 && codePoint <= 0x10FFFF) { 174 | return codePoint; 175 | } 176 | } 177 | 178 | throw Error('Invalid UTF-8 detected'); 179 | } 180 | 181 | var byteArray; 182 | var byteCount; 183 | var byteIndex; 184 | function utf8decode(byteString) { 185 | byteArray = ucs2decode(byteString); 186 | byteCount = byteArray.length; 187 | byteIndex = 0; 188 | var codePoints = []; 189 | var tmp; 190 | while ((tmp = decodeSymbol()) !== false) { 191 | codePoints.push(tmp); 192 | } 193 | return ucs2encode(codePoints); 194 | } 195 | 196 | /*--------------------------------------------------------------------------*/ 197 | 198 | root.version = '3.0.0'; 199 | root.encode = utf8encode; 200 | root.decode = utf8decode; 201 | 202 | }(typeof exports === 'undefined' ? this.utf8 = {} : exports)); -------------------------------------------------------------------------------- /www/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | h4ck3r 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 26 | 27 | 28 | 29 | 30 |
31 | 32 | 74 | 75 |
76 | 77 |
78 | 79 |
80 | 81 |
82 | 83 | 85 | 86 |
87 | 88 |
89 | 90 | 91 |
92 |
93 |

94 | Your results will be auto copied to clipboard. 95 |

96 |
97 | 98 |
99 | 100 |
101 | 102 | 125 | 126 | 127 | 149 | 150 | 151 | 174 | 175 | 218 | 219 | 273 | 274 | 334 | 335 |
336 | 337 | 338 |
339 | 340 | 341 | 342 | 343 | 344 | 345 | 346 | 347 | 348 | -------------------------------------------------------------------------------- /assets/js/popper.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @popperjs/core v2.5.4 - MIT License 3 | */ 4 | 5 | "use strict";!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e=e||self).Popper={})}(this,(function(e){function t(e){return{width:(e=e.getBoundingClientRect()).width,height:e.height,top:e.top,right:e.right,bottom:e.bottom,left:e.left,x:e.left,y:e.top}}function n(e){return"[object Window]"!==e.toString()?(e=e.ownerDocument)&&e.defaultView||window:e}function r(e){return{scrollLeft:(e=n(e)).pageXOffset,scrollTop:e.pageYOffset}}function o(e){return e instanceof n(e).Element||e instanceof Element}function i(e){return e instanceof n(e).HTMLElement||e instanceof HTMLElement}function a(e){return e?(e.nodeName||"").toLowerCase():null}function s(e){return((o(e)?e.ownerDocument:e.document)||window.document).documentElement}function f(e){return t(s(e)).left+r(e).scrollLeft}function c(e){return n(e).getComputedStyle(e)}function p(e){return e=c(e),/auto|scroll|overlay|hidden/.test(e.overflow+e.overflowY+e.overflowX)}function l(e,o,c){void 0===c&&(c=!1);var l=s(o);e=t(e);var u=i(o),d={scrollLeft:0,scrollTop:0},m={x:0,y:0};return(u||!u&&!c)&&(("body"!==a(o)||p(l))&&(d=o!==n(o)&&i(o)?{scrollLeft:o.scrollLeft,scrollTop:o.scrollTop}:r(o)),i(o)?((m=t(o)).x+=o.clientLeft,m.y+=o.clientTop):l&&(m.x=f(l))),{x:e.left+d.scrollLeft-m.x,y:e.top+d.scrollTop-m.y,width:e.width,height:e.height}}function u(e){return{x:e.offsetLeft,y:e.offsetTop,width:e.offsetWidth,height:e.offsetHeight}}function d(e){return"html"===a(e)?e:e.assignedSlot||e.parentNode||e.host||s(e)}function m(e,t){void 0===t&&(t=[]);var r=function e(t){return 0<=["html","body","#document"].indexOf(a(t))?t.ownerDocument.body:i(t)&&p(t)?t:e(d(t))}(e);e="body"===a(r);var o=n(r);return r=e?[o].concat(o.visualViewport||[],p(r)?r:[]):r,t=t.concat(r),e?t:t.concat(m(d(r)))}function h(e){if(!i(e)||"fixed"===c(e).position)return null;if(e=e.offsetParent){var t=s(e);if("body"===a(e)&&"static"===c(e).position&&"static"!==c(t).position)return t}return e}function g(e){for(var t=n(e),r=h(e);r&&0<=["table","td","th"].indexOf(a(r))&&"static"===c(r).position;)r=h(r);if(r&&"body"===a(r)&&"static"===c(r).position)return t;if(!r)e:{for(e=d(e);i(e)&&0>["html","body"].indexOf(a(e));){if("none"!==(r=c(e)).transform||"none"!==r.perspective||r.willChange&&"auto"!==r.willChange){r=e;break e}e=e.parentNode}r=null}return r||t}function v(e){var t=new Map,n=new Set,r=[];return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){n.has(e.name)||function e(o){n.add(o.name),[].concat(o.requires||[],o.requiresIfExists||[]).forEach((function(r){n.has(r)||(r=t.get(r))&&e(r)})),r.push(o)}(e)})),r}function b(e){var t;return function(){return t||(t=new Promise((function(n){Promise.resolve().then((function(){t=void 0,n(e())}))}))),t}}function y(e){return e.split("-")[0]}function O(e,t){var r,o=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if((r=o)&&(r=o instanceof(r=n(o).ShadowRoot)||o instanceof ShadowRoot),r)do{if(t&&e.isSameNode(t))return!0;t=t.parentNode||t.host}while(t);return!1}function w(e){return Object.assign(Object.assign({},e),{},{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function x(e,o){if("viewport"===o){o=n(e);var a=s(e);o=o.visualViewport;var p=a.clientWidth;a=a.clientHeight;var l=0,u=0;o&&(p=o.width,a=o.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(l=o.offsetLeft,u=o.offsetTop)),e=w(e={width:p,height:a,x:l+f(e),y:u})}else i(o)?((e=t(o)).top+=o.clientTop,e.left+=o.clientLeft,e.bottom=e.top+o.clientHeight,e.right=e.left+o.clientWidth,e.width=o.clientWidth,e.height=o.clientHeight,e.x=e.left,e.y=e.top):(u=s(e),e=s(u),l=r(u),o=u.ownerDocument.body,p=Math.max(e.scrollWidth,e.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),a=Math.max(e.scrollHeight,e.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),u=-l.scrollLeft+f(u),l=-l.scrollTop,"rtl"===c(o||e).direction&&(u+=Math.max(e.clientWidth,o?o.clientWidth:0)-p),e=w({width:p,height:a,x:u,y:l}));return e}function j(e,t,n){return t="clippingParents"===t?function(e){var t=m(d(e)),n=0<=["absolute","fixed"].indexOf(c(e).position)&&i(e)?g(e):e;return o(n)?t.filter((function(e){return o(e)&&O(e,n)&&"body"!==a(e)})):[]}(e):[].concat(t),(n=(n=[].concat(t,[n])).reduce((function(t,n){return n=x(e,n),t.top=Math.max(n.top,t.top),t.right=Math.min(n.right,t.right),t.bottom=Math.min(n.bottom,t.bottom),t.left=Math.max(n.left,t.left),t}),x(e,n[0]))).width=n.right-n.left,n.height=n.bottom-n.top,n.x=n.left,n.y=n.top,n}function M(e){return 0<=["top","bottom"].indexOf(e)?"x":"y"}function E(e){var t=e.reference,n=e.element,r=(e=e.placement)?y(e):null;e=e?e.split("-")[1]:null;var o=t.x+t.width/2-n.width/2,i=t.y+t.height/2-n.height/2;switch(r){case"top":o={x:o,y:t.y-n.height};break;case"bottom":o={x:o,y:t.y+t.height};break;case"right":o={x:t.x+t.width,y:i};break;case"left":o={x:t.x-n.width,y:i};break;default:o={x:t.x,y:t.y}}if(null!=(r=r?M(r):null))switch(i="y"===r?"height":"width",e){case"start":o[r]=Math.floor(o[r])-Math.floor(t[i]/2-n[i]/2);break;case"end":o[r]=Math.floor(o[r])+Math.ceil(t[i]/2-n[i]/2)}return o}function D(e){return Object.assign(Object.assign({},{top:0,right:0,bottom:0,left:0}),e)}function P(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})}function L(e,n){void 0===n&&(n={});var r=n;n=void 0===(n=r.placement)?e.placement:n;var i=r.boundary,a=void 0===i?"clippingParents":i,f=void 0===(i=r.rootBoundary)?"viewport":i;i=void 0===(i=r.elementContext)?"popper":i;var c=r.altBoundary,p=void 0!==c&&c;r=D("number"!=typeof(r=void 0===(r=r.padding)?0:r)?r:P(r,T));var l=e.elements.reference;c=e.rects.popper,a=j(o(p=e.elements[p?"popper"===i?"reference":"popper":i])?p:p.contextElement||s(e.elements.popper),a,f),p=E({reference:f=t(l),element:c,strategy:"absolute",placement:n}),c=w(Object.assign(Object.assign({},c),p)),f="popper"===i?c:f;var u={top:a.top-f.top+r.top,bottom:f.bottom-a.bottom+r.bottom,left:a.left-f.left+r.left,right:f.right-a.right+r.right};if(e=e.modifiersData.offset,"popper"===i&&e){var d=e[n];Object.keys(u).forEach((function(e){var t=0<=["right","bottom"].indexOf(e)?1:-1,n=0<=["top","bottom"].indexOf(e)?"y":"x";u[e]+=d[n]*t}))}return u}function k(){for(var e=arguments.length,t=Array(e),n=0;n(v.devicePixelRatio||1)?"translate("+e+"px, "+l+"px)":"translate3d("+e+"px, "+l+"px, 0)",d)):Object.assign(Object.assign({},r),{},((t={})[h]=a?l+"px":"",t[m]=u?e+"px":"",t.transform="",t))}function A(e){return e.replace(/left|right|bottom|top/g,(function(e){return G[e]}))}function H(e){return e.replace(/start|end/g,(function(e){return J[e]}))}function R(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function S(e){return["top","right","bottom","left"].some((function(t){return 0<=e[t]}))}var T=["top","bottom","right","left"],q=T.reduce((function(e,t){return e.concat([t+"-start",t+"-end"])}),[]),C=[].concat(T,["auto"]).reduce((function(e,t){return e.concat([t,t+"-start",t+"-end"])}),[]),N="beforeRead read afterRead beforeMain main afterMain beforeWrite write afterWrite".split(" "),V={placement:"bottom",modifiers:[],strategy:"absolute"},I={passive:!0},_={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(e){var t=e.state,r=e.instance,o=(e=e.options).scroll,i=void 0===o||o,a=void 0===(e=e.resize)||e,s=n(t.elements.popper),f=[].concat(t.scrollParents.reference,t.scrollParents.popper);return i&&f.forEach((function(e){e.addEventListener("scroll",r.update,I)})),a&&s.addEventListener("resize",r.update,I),function(){i&&f.forEach((function(e){e.removeEventListener("scroll",r.update,I)})),a&&s.removeEventListener("resize",r.update,I)}},data:{}},U={name:"popperOffsets",enabled:!0,phase:"read",fn:function(e){var t=e.state;t.modifiersData[e.name]=E({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})},data:{}},z={top:"auto",right:"auto",bottom:"auto",left:"auto"},F={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(e){var t=e.state,n=e.options;e=void 0===(e=n.gpuAcceleration)||e,n=void 0===(n=n.adaptive)||n,e={placement:y(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:e},null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign(Object.assign({},t.styles.popper),W(Object.assign(Object.assign({},e),{},{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:n})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign(Object.assign({},t.styles.arrow),W(Object.assign(Object.assign({},e),{},{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1})))),t.attributes.popper=Object.assign(Object.assign({},t.attributes.popper),{},{"data-popper-placement":t.placement})},data:{}},X={name:"applyStyles",enabled:!0,phase:"write",fn:function(e){var t=e.state;Object.keys(t.elements).forEach((function(e){var n=t.styles[e]||{},r=t.attributes[e]||{},o=t.elements[e];i(o)&&a(o)&&(Object.assign(o.style,n),Object.keys(r).forEach((function(e){var t=r[e];!1===t?o.removeAttribute(e):o.setAttribute(e,!0===t?"":t)})))}))},effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach((function(e){var r=t.elements[e],o=t.attributes[e]||{};e=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:n[e]).reduce((function(e,t){return e[t]="",e}),{}),i(r)&&a(r)&&(Object.assign(r.style,e),Object.keys(o).forEach((function(e){r.removeAttribute(e)})))}))}},requires:["computeStyles"]},Y={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,n=e.name,r=void 0===(e=e.options.offset)?[0,0]:e,o=(e=C.reduce((function(e,n){var o=t.rects,i=y(n),a=0<=["left","top"].indexOf(i)?-1:1,s="function"==typeof r?r(Object.assign(Object.assign({},o),{},{placement:n})):r;return o=(o=s[0])||0,s=((s=s[1])||0)*a,i=0<=["left","right"].indexOf(i)?{x:s,y:o}:{x:o,y:s},e[n]=i,e}),{}))[t.placement],i=o.x;o=o.y,null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=i,t.modifiersData.popperOffsets.y+=o),t.modifiersData[n]=e}},G={left:"right",right:"left",bottom:"top",top:"bottom"},J={start:"end",end:"start"},K={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options;if(e=e.name,!t.modifiersData[e]._skip){var r=n.mainAxis;r=void 0===r||r;var o=n.altAxis;o=void 0===o||o;var i=n.fallbackPlacements,a=n.padding,s=n.boundary,f=n.rootBoundary,c=n.altBoundary,p=n.flipVariations,l=void 0===p||p,u=n.allowedAutoPlacements;p=y(n=t.options.placement),i=i||(p!==n&&l?function(e){if("auto"===y(e))return[];var t=A(e);return[H(e),t,H(t)]}(n):[A(n)]);var d=[n].concat(i).reduce((function(e,n){return e.concat("auto"===y(n)?function(e,t){void 0===t&&(t={});var n=t.boundary,r=t.rootBoundary,o=t.padding,i=t.flipVariations,a=t.allowedAutoPlacements,s=void 0===a?C:a,f=t.placement.split("-")[1];0===(i=(t=f?i?q:q.filter((function(e){return e.split("-")[1]===f})):T).filter((function(e){return 0<=s.indexOf(e)}))).length&&(i=t);var c=i.reduce((function(t,i){return t[i]=L(e,{placement:i,boundary:n,rootBoundary:r,padding:o})[y(i)],t}),{});return Object.keys(c).sort((function(e,t){return c[e]-c[t]}))}(t,{placement:n,boundary:s,rootBoundary:f,padding:a,flipVariations:l,allowedAutoPlacements:u}):n)}),[]);n=t.rects.reference,i=t.rects.popper;var m=new Map;p=!0;for(var h=d[0],g=0;gi[x]&&(O=A(O)),x=A(O),w=[],r&&w.push(0>=j[b]),o&&w.push(0>=j[O],0>=j[x]),w.every((function(e){return e}))){h=v,p=!1;break}m.set(v,w)}if(p)for(r=function(e){var t=d.find((function(t){if(t=m.get(t))return t.slice(0,e).every((function(e){return e}))}));if(t)return h=t,"break"},o=l?3:1;0{ 4 | 5 | 6 | var data_id = $(elem.target).data('id'); 7 | $('.bg-tab-content').hide(); 8 | $('#'+data_id).show(); 9 | 10 | $('.active_tab').removeClass('active_tab') 11 | 12 | $(elem.target).addClass('active_tab'); 13 | 14 | }); 15 | 16 | $('.base64_encode').on('click',(elem)=>{ 17 | var dec_text = $('#base64_data').val(); 18 | $('#base64_data').val(window.btoa(dec_text)); 19 | copy_result_if_asked($('#base64_data')); 20 | }) 21 | 22 | $('.base64_decode').on('click',(elem)=>{ 23 | var enc_text = $('#base64_data').val(); 24 | $('#base64_data').val(window.atob(enc_text)); 25 | copy_result_if_asked($('#base64_data')); 26 | 27 | }) 28 | 29 | $('.url_encode').on('click',(elem)=>{ 30 | var dec_text = $('#url_data').val(); 31 | $('#url_data').val(window.encodeURI(dec_text)); 32 | copy_result_if_asked($('#url_data')); 33 | 34 | }) 35 | 36 | $('.url_decode').on('click',(elem)=>{ 37 | var enc_text = $('#url_data').val(); 38 | $('#url_data').val(window.decodeURI(enc_text)); 39 | copy_result_if_asked($('#url_data')); 40 | }) 41 | 42 | $('.hex_encode').on('click',(elem)=>{ 43 | var dec_text = $('#hex_data').val(); 44 | $('#hex_data').val(String2Hex(utf8.encode(dec_text))); 45 | copy_result_if_asked($('#hex_data')); 46 | 47 | }) 48 | 49 | $('.hex_decode').on('click',(elem)=>{ 50 | var enc_text = $('#hex_data').val(); 51 | $('#hex_data').val(hex2a(enc_text)); 52 | copy_result_if_asked($('#hex_data')); 53 | }) 54 | 55 | $('.hash_encode').on('click', (elem) => { 56 | var dec_text = $('#hash_data').val(); 57 | var enc_type = $('#hash_select_enc').val(); 58 | var hash_salt = $('#hash_salt').val(); 59 | 60 | if (!enc_type) { 61 | alert('Select Encryption Type'); 62 | return false; 63 | } 64 | 65 | let enc_res = ''; 66 | 67 | if (enc_type === 'MD5') { 68 | enc_res += CryptoJS.MD5(dec_text); 69 | } else if (enc_type === 'SHA256') { 70 | enc_res += CryptoJS.SHA256(dec_text); 71 | } else if (enc_type === 'SHA512') { 72 | enc_res += CryptoJS.SHA512(dec_text); 73 | } else if (enc_type === 'SHA3') { 74 | enc_res += CryptoJS.SHA3(dec_text); 75 | } else if (enc_type === 'AES') { 76 | enc_res = CryptoJS.AES.encrypt(dec_text, hash_salt); 77 | } else if (enc_type === 'HMAC') { 78 | enc_res = CryptoJS.HmacSHA256(dec_text, hash_salt); 79 | } else if (enc_type === 'PBKDF2') { 80 | enc_res = CryptoJS.PBKDF2(dec_text, hash_salt, { 81 | keySize: 128 / 32 82 | }); 83 | } 84 | 85 | if (hash_salt) { 86 | enc_res = hash_salt + enc_res; 87 | } 88 | 89 | $('#hash_data').val(enc_res); 90 | copy_result_if_asked($('#hash_data')); 91 | }); 92 | 93 | $('.hash_decode').on('click',(elem)=>{ 94 | var enc_text = $('#hash_data').val(); 95 | var enc_type = $('#hash_select_enc').val(); 96 | var hash_salt = $('#hash_salt').val(); 97 | 98 | let enc_res = ''; 99 | 100 | if (enc_type == 'AES'){ 101 | enc_res = CryptoJS.AES.decrypt(enc_text,hash_salt); 102 | } else { 103 | alert('Works Only For AES'); 104 | return false; 105 | } 106 | 107 | $('.aes-alert').html('If text is not readable try hex decoding'); 108 | $('#hash_data').val(enc_res); 109 | copy_result_if_asked($('#hash_data')); 110 | }) 111 | 112 | $('.json_beautifier').on('click', (elem) => { 113 | $('.json__retry').show(); 114 | var enc_text = $('#json_data').val(); 115 | try { 116 | var j_obj = JSON.parse(enc_text); 117 | } catch (error) { 118 | $('#json_data').val('Invalid Json String.'); 119 | return; 120 | } 121 | var str = JSON.stringify(j_obj, undefined, 4); 122 | $('#json_data').hide(); 123 | $('#json_data_p').show(); 124 | $('#json_data_p').html(syntaxHighlight(str)); 125 | }) 126 | 127 | $('.json__retry').on('click', (elem) => { 128 | $('.json__retry').hide(); 129 | $('#json_data').show(); 130 | $('#json_data_p').hide(); 131 | }) 132 | 133 | $('.jwt_decode').on('click', (elem) => { 134 | const token = $('#jwt_data').val().trim(); 135 | const headerOutput = $('#jwt_header_output'); 136 | const payloadOutput = $('#jwt_payload_output'); 137 | const errorOutput = $('#jwt_error'); 138 | 139 | headerOutput.empty(); // Clear previous output 140 | payloadOutput.empty(); 141 | errorOutput.hide().empty(); 142 | 143 | if (!token) { 144 | errorOutput.text('Please paste a JWT token.').show(); 145 | return; 146 | } 147 | 148 | try { 149 | const parts = token.split('.'); 150 | if (parts.length !== 3) { 151 | throw new Error('Invalid JWT format. Token must have 3 parts separated by dots.'); 152 | } 153 | 154 | const decodedHeader = decodeJwtPart(parts[0]); 155 | const decodedPayload = decodeJwtPart(parts[1]); 156 | 157 | headerOutput.html(syntaxHighlight(JSON.stringify(decodedHeader, null, 4))); 158 | payloadOutput.html(syntaxHighlight(JSON.stringify(decodedPayload, null, 4))); 159 | 160 | } catch (error) { 161 | console.error("JWT Decode Error:", error); 162 | errorOutput.text(`Error decoding JWT: ${error.message}`).show(); 163 | headerOutput.text(''); // Clear output on error 164 | payloadOutput.text(''); 165 | } 166 | }); 167 | 168 | // Add JWT decoding logic 169 | $('.h4ckr-jwt-decoder').on('click', () => { 170 | const token = prompt('Enter JWT Token:'); 171 | if (!token) { 172 | alert('No token provided.'); 173 | return; 174 | } 175 | 176 | try { 177 | const parts = token.split('.'); 178 | if (parts.length !== 3) { 179 | throw new Error('Invalid JWT format. Token must have 3 parts separated by dots.'); 180 | } 181 | 182 | const decodeBase64 = (str) => decodeURIComponent(atob(str).split('').map(c => { 183 | return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2); 184 | }).join('')); 185 | 186 | const header = JSON.parse(decodeBase64(parts[0])); 187 | const payload = JSON.parse(decodeBase64(parts[1])); 188 | 189 | alert(`Header: ${JSON.stringify(header, null, 2)}\n\nPayload: ${JSON.stringify(payload, null, 2)}`); 190 | } catch (error) { 191 | alert(`Error decoding JWT: ${error.message}`); 192 | } 193 | }); 194 | 195 | // Function to format and display domain extraction results 196 | function displayDomainResults(domains) { 197 | let domainList = Array.from(domains).sort(); 198 | let output = domainList.join('\n'); 199 | $('#domains_output').text(output); 200 | 201 | // Copy results to clipboard automatically 202 | const tempTextarea = document.createElement('textarea'); 203 | tempTextarea.value = output; 204 | document.body.appendChild(tempTextarea); 205 | tempTextarea.select(); 206 | document.execCommand('copy'); 207 | document.body.removeChild(tempTextarea); 208 | } 209 | 210 | // Extract domains from active tab when button is clicked 211 | $('.extract_domains').on('click', function() { 212 | // For pages loaded in DevTools panel, we need to communicate with background script 213 | if (chrome && chrome.devtools) { 214 | chrome.devtools.inspectedWindow.eval( 215 | ` 216 | (function() { 217 | const domains = new Set(); 218 | const links = document.querySelectorAll('a[href]'); 219 | const images = document.querySelectorAll('img[src]'); 220 | const scripts = document.querySelectorAll('script[src]'); 221 | const stylesheets = document.querySelectorAll('link[rel="stylesheet"]'); 222 | const iframes = document.querySelectorAll('iframe[src]'); 223 | 224 | // Extract domains from all links 225 | links.forEach(link => { 226 | try { 227 | const url = new URL(link.href); 228 | domains.add(url.hostname); 229 | } catch (e) {} 230 | }); 231 | 232 | // Extract domains from images 233 | images.forEach(img => { 234 | try { 235 | if (img.src.startsWith('http')) { 236 | const url = new URL(img.src); 237 | domains.add(url.hostname); 238 | } 239 | } catch (e) {} 240 | }); 241 | 242 | // Extract domains from scripts 243 | scripts.forEach(script => { 244 | try { 245 | if (script.src) { 246 | const url = new URL(script.src); 247 | domains.add(url.hostname); 248 | } 249 | } catch (e) {} 250 | }); 251 | 252 | // Extract domains from stylesheets 253 | stylesheets.forEach(sheet => { 254 | try { 255 | if (sheet.href) { 256 | const url = new URL(sheet.href); 257 | domains.add(url.hostname); 258 | } 259 | } catch (e) {} 260 | }); 261 | 262 | // Extract domains from iframes 263 | iframes.forEach(iframe => { 264 | try { 265 | if (iframe.src.startsWith('http')) { 266 | const url = new URL(iframe.src); 267 | domains.add(url.hostname); 268 | } 269 | } catch (e) {} 270 | }); 271 | 272 | return Array.from(domains); 273 | })() 274 | `, 275 | function(result, isException) { 276 | if (isException) { 277 | $('#domains_output').text('Error extracting domains: ' + isException); 278 | } else { 279 | const domains = new Set(result); 280 | displayDomainResults(domains); 281 | } 282 | } 283 | ); 284 | } 285 | }); 286 | 287 | // Global function to extract domains from page (used by toolbar button) 288 | window.extractDomainsFromPage = function() { 289 | const domains = new Set(); 290 | 291 | // Only execute if we're in the main window, not in the DevTools panel 292 | if (!chrome || !chrome.devtools) { 293 | try { 294 | // Collect all elements that might have domains 295 | const links = document.querySelectorAll('a[href]'); 296 | const images = document.querySelectorAll('img[src]'); 297 | const scripts = document.querySelectorAll('script[src]'); 298 | const stylesheets = document.querySelectorAll('link[rel="stylesheet"]'); 299 | const iframes = document.querySelectorAll('iframe[src]'); 300 | const sources = document.querySelectorAll('source[src]'); 301 | 302 | // Extract domains from links 303 | links.forEach(link => { 304 | try { 305 | const url = new URL(link.href, window.location.href); 306 | domains.add(url.hostname); 307 | } catch (e) {} 308 | }); 309 | 310 | // Extract domains from images 311 | images.forEach(img => { 312 | try { 313 | const url = new URL(img.src, window.location.href); 314 | domains.add(url.hostname); 315 | } catch (e) {} 316 | }); 317 | 318 | // Extract domains from scripts 319 | scripts.forEach(script => { 320 | try { 321 | if (script.src) { 322 | const url = new URL(script.src, window.location.href); 323 | domains.add(url.hostname); 324 | } 325 | } catch (e) {} 326 | }); 327 | 328 | // Extract domains from stylesheets 329 | stylesheets.forEach(sheet => { 330 | try { 331 | if (sheet.href) { 332 | const url = new URL(sheet.href, window.location.href); 333 | domains.add(url.hostname); 334 | } 335 | } catch (e) {} 336 | }); 337 | 338 | // Extract domains from iframes 339 | iframes.forEach(iframe => { 340 | try { 341 | if (iframe.src) { 342 | const url = new URL(iframe.src, window.location.href); 343 | domains.add(url.hostname); 344 | } 345 | } catch (e) {} 346 | }); 347 | 348 | // Extract domains from source elements (video, audio) 349 | sources.forEach(source => { 350 | try { 351 | if (source.src) { 352 | const url = new URL(source.src, window.location.href); 353 | domains.add(url.hostname); 354 | } 355 | } catch (e) {} 356 | }); 357 | 358 | // Format and display the results 359 | let domainList = Array.from(domains).sort(); 360 | let output = domainList.join('\n'); 361 | 362 | // Display in alert for toolbar button 363 | alert("Domains found on this page:\n\n" + output); 364 | 365 | // Copy to clipboard 366 | const tempTextarea = document.createElement('textarea'); 367 | tempTextarea.value = output; 368 | document.body.appendChild(tempTextarea); 369 | tempTextarea.select(); 370 | document.execCommand('copy'); 371 | document.body.removeChild(tempTextarea); 372 | 373 | console.log("Domains copied to clipboard:", domainList); 374 | } catch (e) { 375 | console.error("Error extracting domains:", e); 376 | alert("Error extracting domains: " + e.message); 377 | } 378 | } 379 | }; 380 | }); 381 | 382 | function decodeJwtPart(base64Url) { 383 | // Replace non-url compatible chars with base64 standard chars 384 | base64Url = base64Url.replace(/-/g, '+').replace(/_/g, '/'); 385 | // Pad out with standard base64 required padding characters 386 | const pad = base64Url.length % 4; 387 | if (pad) { 388 | if (pad === 1) { 389 | throw new Error('InvalidLengthError: Input base64url string is the wrong length to determine padding'); 390 | } 391 | base64Url += new Array(5 - pad).join('='); 392 | } 393 | 394 | const base64 = window.atob(base64Url); 395 | const jsonPayload = decodeURIComponent(base64.split('').map(function(c) { 396 | return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2); 397 | }).join('')); 398 | 399 | return JSON.parse(jsonPayload); 400 | } 401 | 402 | function syntaxHighlight(json) { 403 | json = json.replace(/&/g, '&').replace(//g, '>'); 404 | return json.replace(/("(\\u[a-zA-Z0-9]{4}|\\[^u]|[^\\"])*"(\s*:)?|\b(true|false|null)\b|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?)/g, function (match) { 405 | var cls = 'number'; 406 | if (/^"/.test(match)) { 407 | if (/:$/.test(match)) { 408 | cls = 'key'; 409 | } else { 410 | cls = 'string'; 411 | } 412 | } else if (/true|false/.test(match)) { 413 | cls = 'boolean'; 414 | } else if (/null/.test(match)) { 415 | cls = 'null'; 416 | } 417 | return '' + match + ''; 418 | }); 419 | } 420 | 421 | function copy_result_if_asked(target) { 422 | 423 | var will_copy_val = $('#will_copy:checkbox:checked').length > 0; 424 | 425 | if (true){ 426 | 427 | copyToClipboard(target); 428 | 429 | $(target).find('label').insertAfter($('.extra')); 430 | $('.extra').addClass('text-dark'); 431 | 432 | setTimeout(() => { 433 | $('.extra').removeClass('text-dark'); 434 | $('.extra').remove(); 435 | }, 1000); 436 | 437 | } 438 | 439 | } 440 | 441 | async function copyToClipboard(elem) { 442 | let val = $(elem).val(); 443 | try { 444 | await navigator.clipboard.writeText(val); 445 | console.log('Text copied to clipboard'); 446 | // Optionally, provide user feedback here (e.g., show a temporary message) 447 | } catch (err) { 448 | console.error('Failed to copy text: ', err); 449 | // Fallback or error message for the user 450 | alert('Failed to copy text. Please try again or copy manually.'); 451 | } 452 | } -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | h4ck3r 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 82 | 83 |
84 | 85 |
86 | 87 |
88 | 89 |
90 | 91 | 93 | 94 |
95 | 96 |
97 | 98 | 99 |
100 |
101 |

102 | Your results will be auto copied to clipboard. 103 |

104 |
105 | 106 |
107 | 108 |
109 | 110 | 133 | 134 | 135 | 157 | 158 | 159 | 182 | 183 | 226 | 227 | 250 | 251 | 272 | 273 | 327 | 328 | 388 | 389 |
390 | 391 | 392 |
393 | 394 | 395 | 396 | 397 | 398 | 399 | 400 | 401 | 402 | -------------------------------------------------------------------------------- /options/options.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | h4ck3r 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 77 | 78 |
79 | 80 |
81 | 82 |
83 | 84 |
85 | 86 | 88 | 89 |
90 | 91 |
92 | 93 | 94 |
95 |
96 |

97 | Your results will be auto copied to clipboard. 98 |

99 |
100 | 101 |
102 | 103 |
104 | 105 | 128 | 129 | 130 | 152 | 153 | 154 | 177 | 178 | 223 | 224 | 278 | 279 | 339 | 340 | 384 | 385 |
386 | 387 | 388 |
389 | 390 | 391 | 392 | 393 | 394 | 395 | 396 | 397 | 398 | 399 | -------------------------------------------------------------------------------- /injection/injection.js: -------------------------------------------------------------------------------- 1 | console.log('%c h4cker Injected ', 'color: #fff; font-size: 40px; background-image: linear-gradient(to right, #d13939, #cd5a16, #be7900, #a49500, #80ad08, #5eaa33, #3ba64d, #00a062, #00825d, #006552, #0e4842, #1a2d2c); border: solid 1px #fff; border-radius: 28px; margin: 10px;'); 2 | 3 | var svg_1 = ``; 4 | 5 | var svg_2 = ``; 6 | 7 | var svg_3 = ` `; 8 | 9 | var svg_4 = ``; 10 | 11 | var svg_5 = ``; 12 | 13 | var svg_6 = ` 14 | `; 15 | 16 | const H4ck3rToolbar = { 17 | // ...existing code... (SVGs, getToolbarSettings, buildToolbarHTML) 18 | 19 | // Initialization 20 | init: function() { 21 | console.log("H4ck3rToolbar init called"); 22 | const toolbarSettings = this.getToolbarSettings(); 23 | // Always build the full toolbar HTML 24 | const toolbar_html = this.buildToolbarHTML(toolbarSettings); 25 | 26 | var hide_toolbar_state = localStorage.getItem('h4ck3r.hide'); 27 | if (hide_toolbar_state === null) { 28 | localStorage.setItem('h4ck3r.hide', 'true'); 29 | hide_toolbar_state = 'true'; 30 | console.log("Default toolbar state set to 'true' (shown)"); 31 | } 32 | 33 | // Ensure previous toolbar is removed before adding new one 34 | $('.h4ckr-toolbar').remove(); 35 | $('body').prepend(`
`); 36 | const $toolbarContainer = $('.h4ckr-toolbar'); 37 | 38 | // Always prepend the full toolbar HTML 39 | console.log("Rendering full toolbar"); 40 | $toolbarContainer.prepend(toolbar_html); 41 | 42 | // Apply the hidden class based on the loaded state 43 | if (hide_toolbar_state === 'false') { // State is 'false' means it should be hidden 44 | console.log("Applying hidden class based on state"); 45 | $('#toolbar_id_').addClass('h4ckr-toolbar-main--hidden'); 46 | } 47 | 48 | this.attachEventListeners(); 49 | 50 | // Make the toolbar draggable 51 | try { 52 | const toolbarElement = document.getElementById("toolbar_id_"); 53 | if (toolbarElement && typeof dragElement === 'function') { 54 | console.log("Making toolbar draggable"); 55 | dragElement(toolbarElement); 56 | } else if (!toolbarElement) { 57 | console.warn('Toolbar element #toolbar_id_ not found for dragging.'); 58 | } else if (typeof dragElement !== 'function') { 59 | console.warn('dragElement function not found. Toolbar might not be draggable.'); 60 | } 61 | } catch (err) { 62 | console.error("Error making toolbar draggable:", err); 63 | } 64 | 65 | // Set position 66 | const elmnt = document.getElementById("toolbar_id_"); 67 | if (elmnt) { 68 | const topPos = localStorage.getItem('h4ck3r_position_top') ?? '10px'; 69 | const leftPos = localStorage.getItem('h4ck3r_position_bottom') ?? '0px'; // Key is still 'bottom' 70 | elmnt.style.top = topPos; 71 | elmnt.style.left = leftPos; 72 | // Apply centering transform if left is 50% 73 | if (leftPos === '50%') { 74 | elmnt.style.transform = 'translateX(-50%)'; 75 | } else { 76 | // Ensure no translateX transform if not centered (unless hidden) 77 | if (!elmnt.classList.contains('h4ckr-toolbar-main--hidden')) { 78 | elmnt.style.transform = 'translateX(0)'; 79 | } 80 | } 81 | console.log(`Toolbar position set: top=${topPos}, left=${leftPos}, transform=${elmnt.style.transform}`); 82 | 83 | // Re-apply hidden class if needed (init might run after state change) 84 | if (localStorage.getItem('h4ck3r.hide') === 'false') { 85 | elmnt.classList.add('h4ckr-toolbar-main--hidden'); 86 | // Ensure correct hiding transform is applied 87 | elmnt.style.transform = 'translateX(-85%)'; 88 | console.log("Applied hidden class and transform during init"); 89 | } 90 | } 91 | 92 | // Hot reload logic 93 | if (toolbarSettings.reload) { 94 | this.setupHotReload(); 95 | } else { 96 | $('#h4ckr-hot-reload').parent().hide(); 97 | console.log("Hot reload button hidden due to settings."); 98 | } 99 | console.log("H4ck3rToolbar init finished"); 100 | }, 101 | 102 | // Event Listeners 103 | attachEventListeners: function() { 104 | $(document).off('click.h4ck3r'); 105 | console.log("Attaching event listeners"); 106 | 107 | $(document).on('click.h4ck3r', '.h4ckr-fill', (e) => { console.log("Fill clicked"); this.fillAllForms(e); }); 108 | $(document).on('click.h4ck3r', '.h4ckr-reset', (e) => { console.log("Reset clicked"); this.resetAllForms(e); }); 109 | // Use the same button (.h4c3r_hide) for both hiding and showing 110 | $(document).on('click.h4ck3r', '.h4ckr-hide', (e) => { console.log("Toggle Visibility clicked"); this.toggleVisibility(e); }); 111 | $(document).on('click.h4ck3r', '#h4ckr-hot-reload span.h4ckr-hot-reload', (e) => { console.log("Hot Reload clicked"); this.toggleHotReload(e); }); 112 | 113 | console.log("Event listeners attached"); 114 | }, 115 | 116 | // Combined toggle function 117 | toggleVisibility: function(e) { 118 | const toolbarElement = $('#toolbar_id_'); 119 | const currentState = localStorage.getItem('h4ck3r.hide'); 120 | 121 | if (currentState === 'true') { // Currently shown, so hide it 122 | console.log("Hiding toolbar"); 123 | localStorage.setItem('h4ck3r.hide', 'false'); 124 | toolbarElement.addClass('h4ckr-toolbar-main--hidden'); 125 | // Apply hiding transform explicitly 126 | toolbarElement.css('transform', 'translateX(-85%)'); 127 | } else { // Currently hidden, so show it 128 | console.log("Showing toolbar"); 129 | localStorage.setItem('h4ck3r.hide', 'true'); 130 | toolbarElement.removeClass('h4ckr-toolbar-main--hidden'); 131 | // Re-apply position and centering transform when showing 132 | const topPos = localStorage.getItem('h4ck3r_position_top') ?? '10px'; 133 | const leftPos = localStorage.getItem('h4ck3r_position_bottom') ?? '0px'; 134 | let transform = 'translateX(0)'; // Default transform when shown 135 | if (leftPos === '50%') { 136 | transform = 'translateX(-50%)'; // Centering transform 137 | } 138 | toolbarElement.css({ 139 | top: topPos, 140 | left: leftPos, 141 | transform: transform 142 | }); 143 | } 144 | }, 145 | 146 | getToolbarSettings: function() { 147 | return { 148 | fill: localStorage.getItem('h4ck3r.toolbar.fill') !== 'false', 149 | reset: localStorage.getItem('h4ck3r.toolbar.reset') !== 'false', 150 | hideToggle: localStorage.getItem('h4ck3r.toolbar.hideToggle') !== 'false', 151 | reload: localStorage.getItem('h4ck3r.toolbar.reload') !== 'false', 152 | jwtDecoder: localStorage.getItem('h4ck3r.toolbar.jwtDecoder') !== 'false', 153 | }; 154 | }, 155 | 156 | buildToolbarHTML: function(settings) { 157 | let html = `
`; 158 | 159 | if (settings.fill) { 160 | html += ` 161 |
162 | ${svg_1} 163 |
`; 164 | } 165 | if (settings.reset) { 166 | html += ` 167 |
168 | ${svg_2} 169 |
`; 170 | } 171 | if (settings.hideToggle) { 172 | html += ` 173 |
174 | ${svg_6} 175 |
`; 176 | } 177 | if (settings.reload) { 178 | html += ` 179 |
180 | ${svg_4} 181 |
`; 182 | } 183 | 184 | // Add a new toolbar item for JWT Decoder 185 | if (settings.jwtDecoder) { 186 | html += ` 187 |
188 | 189 | 190 | 191 | 192 | 193 |
`; 194 | } 195 | 196 | html += ` 197 |
198 | ${svg_3} 199 |
200 |
`; 201 | return html; 202 | }, 203 | 204 | setupHotReload: function() { 205 | console.log("Setting up hot reload functionality"); 206 | 207 | const reloadConfig = JSON.parse(localStorage.getItem('h4ck3r.reload')) || { seconds: 5000, do: false }; 208 | 209 | if (reloadConfig.do) { 210 | console.log(`Hot reload enabled. Reloading every ${reloadConfig.seconds} milliseconds.`); 211 | setInterval(() => { 212 | window.location.reload(); 213 | }, reloadConfig.seconds); 214 | } else { 215 | console.log("Hot reload is disabled."); 216 | } 217 | 218 | // Update the reload icon color based on the auto-reload state 219 | $('#h4ckr-hot-reload span.h4ckr-hot-reload').css('fill', reloadConfig.do ? 'yellow' : 'white'); 220 | }, 221 | 222 | // Function to toggle the auto-reload feature 223 | toggleHotReload: function(e) { 224 | const reloadConfig = JSON.parse(localStorage.getItem('h4ck3r.reload')) || { seconds: 5000, do: false }; 225 | 226 | if (reloadConfig.do) { 227 | console.log('%c Hot reload disabled ', 'color: #fff; font-size: 40px; background-color: red;'); 228 | $('.h4ckr-hot-reload').html(svg_4).css('fill', 'white'); // Update icon to white 229 | reloadConfig.do = false; 230 | } else { 231 | console.log('%c Hot reload enabled ', 'color: #fff; font-size: 40px; background-color: green;'); 232 | $('.h4ckr-hot-reload').html(svg_5).css('fill', 'yellow'); // Update icon to yellow 233 | reloadConfig.do = true; 234 | } 235 | 236 | localStorage.setItem('h4ck3r.reload', JSON.stringify(reloadConfig)); 237 | 238 | if (reloadConfig.do) { 239 | window.location.reload(); 240 | } 241 | }, 242 | 243 | // ... rest of the code (setupHotReload, toggleHotReload, form filling methods, utilities) ... 244 | }; 245 | 246 | // Initialize the toolbar if needed 247 | (function () { 248 | var toolbar_needed = localStorage.getItem('h4ck3r.toolbar.needed') !== 'false'; // Default true 249 | if (toolbar_needed) { 250 | console.log("Toolbar injection is enabled, initializing..."); 251 | // Explicitly bind 'this' to H4ck3rToolbar when calling init 252 | H4ck3rToolbar.init.call(H4ck3rToolbar); 253 | } else { 254 | console.log('%c h4ck3r toolbar injection disabled via settings ', 'color: #ffcc00; font-size: 14px;'); 255 | } 256 | })(); 257 | 258 | // dragable.js needs to be loaded before this script or dragElement needs to be defined globally. 259 | // Ensure dragElement function exists and handles potential errors gracefully. 260 | function dragElement(elmnt) { 261 | // Basic implementation if dragable.js is missing (replace with actual content if available) 262 | var pos1 = 0, pos2 = 0, pos3 = 0, pos4 = 0; 263 | const header = elmnt.querySelector("#h4ckr-header") || elmnt; // Use header if exists, else the whole element 264 | 265 | header.onmousedown = dragMouseDown; 266 | 267 | function dragMouseDown(e) { 268 | e = e || window.event; 269 | e.preventDefault(); 270 | // get the mouse cursor position at startup: 271 | pos3 = e.clientX; 272 | pos4 = e.clientY; 273 | document.onmouseup = closeDragElement; 274 | // call a function whenever the cursor moves: 275 | document.onmousemove = elementDrag; 276 | } 277 | 278 | function elementDrag(e) { 279 | e = e || window.event; 280 | e.preventDefault(); 281 | // calculate the new cursor position: 282 | pos1 = pos3 - e.clientX; 283 | pos2 = pos4 - e.clientY; 284 | pos3 = e.clientX; 285 | pos4 = e.clientY; 286 | // set the element's new position: 287 | elmnt.style.top = (elmnt.offsetTop - pos2) + "px"; 288 | elmnt.style.left = (elmnt.offsetLeft - pos1) + "px"; 289 | } 290 | 291 | function closeDragElement() { 292 | // stop moving when mouse button is released: 293 | document.onmouseup = null; 294 | document.onmousemove = null; 295 | // Save position 296 | localStorage.setItem('h4ck3r_position_top', elmnt.style.top); 297 | localStorage.setItem('h4ck3r_position_left', elmnt.style.left); // Corrected key name 298 | console.log(`Toolbar position saved: top=${elmnt.style.top}, left=${elmnt.style.left}`); 299 | } 300 | } 301 | 302 | (function () { 303 | // Check the setting for whether toolbar injection is needed *at all* 304 | var toolbar_needed = localStorage.getItem('h4ck3r.toolbar.needed') !== 'false'; // Default true 305 | 306 | if (toolbar_needed) { 307 | H4ck3rToolbar.init.call(H4ck3rToolbar); 308 | } else { 309 | console.log('%c h4ck3r toolbar injection disabled via settings ', 'color: #ffcc00; font-size: 14px;'); 310 | } 311 | 312 | })() 313 | 314 | 315 | $('.h4ckr-fill').on('click', (e) => { 316 | fill_email(); 317 | fill_text(); 318 | fill_tel(); 319 | fill_text_area(); 320 | fill_select(); 321 | fill_checkbox(); 322 | fill_password(); 323 | fill_radio(); // Added radio button support 324 | }) 325 | 326 | $('.h4ckr-reset').on('click', (e) => { 327 | 328 | $("input").val(''); 329 | $("textarea").val(''); 330 | 331 | }) 332 | 333 | $('.h4ckr-hide').on('click', (e) => { 334 | 335 | console.log(e); 336 | 337 | 338 | localStorage.setItem('h4ck3r.hide', 1); 339 | 340 | $('.h4ckr-toolbar').remove(); 341 | H4ck3rToolbar.init.call(H4ck3rToolbar); 342 | 343 | localStorage.setItem('h4ck3r_position_top', '9px') 344 | localStorage.setItem('h4ck3r_position_bottom', '-65px') 345 | 346 | window.location.reload() 347 | 348 | }) 349 | 350 | $('.h4c3r_show').on('click', (e) => { 351 | 352 | console.log(e); 353 | 354 | localStorage.setItem('h4ck3r.hide', 0); 355 | 356 | $('.h4ckr-toolbar').remove(); 357 | H4ck3rToolbar.init.call(H4ck3rToolbar); 358 | window.location.reload() 359 | 360 | 361 | }) 362 | 363 | // Update the reload icon color dynamically when toggling auto-reload 364 | $('#h4ckr-hot-reload').on('click', (e) => { 365 | var reload_config = localStorage.getItem('h4ck3r.reload'); 366 | reload_config = JSON.parse(reload_config); 367 | 368 | console.log('click', reload_config); 369 | if (reload_config?.do == true) { 370 | console.log('%c hot reload disabled ', 'color: #fff; font-size: 40px; background-color: red;'); 371 | 372 | $('.h4ckr-hot-reload').html(svg_4); 373 | $('.h4ckr-hot-reload').css('fill', 'white'); // Set icon color to white 374 | 375 | config = { seconds: 5000, do: false }; 376 | localStorage.setItem('h4ck3r.reload', JSON.stringify(config)); 377 | 378 | } else { 379 | console.log('%c hot reload enabled ', 'color: #fff; font-size: 40px; background-color: red;'); 380 | 381 | $('.h4ckr-hot-reload').html(svg_5); 382 | $('.h4ckr-hot-reload').css('fill', 'yellow'); // Set icon color to yellow 383 | 384 | config = { seconds: 5000, do: true }; 385 | localStorage.setItem('h4ck3r.reload', JSON.stringify(config)); 386 | 387 | window.location.reload(); 388 | } 389 | }); 390 | 391 | // Set the reload icon color based on the value in localStorage 392 | const reloadConfig = JSON.parse(localStorage.getItem('h4ck3r.reload')) || { do: false }; 393 | $('#h4ckr-hot-reload span.h4ckr-hot-reload').css('fill', reloadConfig.do ? 'yellow' : 'white'); 394 | 395 | const fill_email = function () { 396 | 397 | var sample_email = random_string() + '@yopmail.com'; 398 | 399 | $("input[type='text']").each((i) => { 400 | 401 | var elm = $("input[type='email']")[i]; 402 | 403 | $(elm).val(sample_email); 404 | $(elm).trigger('change'); 405 | 406 | }) 407 | 408 | } 409 | 410 | const fill_text = function () { 411 | 412 | $("input[type='text']").each((i) => { 413 | 414 | var elm = $("input[type='text']")[i]; 415 | var str_len = 10; 416 | 417 | var max_length = $(elm).attr('maxlength'); 418 | 419 | var minlength = $(elm).attr('minlength'); 420 | 421 | if (minlength) { 422 | str_len = minlength + 1; 423 | } 424 | 425 | if (max_length) { 426 | str_len = max_length - 1; 427 | } 428 | 429 | var sample_string = random_string(str_len); 430 | 431 | $(elm).val(sample_string); 432 | $(elm).trigger('change'); 433 | 434 | }) 435 | 436 | } 437 | 438 | const fill_tel = function () { 439 | 440 | $("input[type='tel']").each((i) => { 441 | 442 | var elm = $("input[type='tel']")[i]; 443 | 444 | var sample_string = '9' + random_number(9); 445 | 446 | $(elm).val(sample_string); 447 | $(elm).trigger('change'); 448 | 449 | }) 450 | 451 | } 452 | 453 | const fill_number = function () { 454 | 455 | $("input[type='number']").each((i) => { 456 | 457 | var elm = $("input[type='number']")[i]; 458 | 459 | var str_len = 3; 460 | 461 | var max_length = $(elm).attr('min').length; 462 | 463 | var minlength = $(elm).attr('max').length; 464 | 465 | if (minlength) { 466 | str_len = minlength; 467 | } 468 | 469 | if (max_length) { 470 | str_len = max_length; 471 | } 472 | 473 | var sample_string = random_number(str_len); 474 | 475 | $(elm).val(sample_string); 476 | $(elm).trigger('change'); 477 | 478 | }) 479 | 480 | } 481 | 482 | const fill_text_area = function () { 483 | 484 | $("textarea").each((i) => { 485 | 486 | var elm = $("textarea")[i]; 487 | var str_len = 50; 488 | 489 | var max_length = $(elm).attr('maxlength'); 490 | 491 | var minlength = $(elm).attr('minlength'); 492 | 493 | if (minlength) { 494 | str_len = minlength + 1; 495 | } 496 | 497 | if (max_length) { 498 | str_len = max_length - 1; 499 | } 500 | 501 | var sample_string = random_string(str_len); 502 | 503 | $(elm).html(sample_string); 504 | $(elm).trigger('change'); 505 | 506 | }) 507 | 508 | } 509 | 510 | function fill_select() { 511 | 512 | $("select").each((i) => { 513 | 514 | var elm = $("select")[i]; 515 | var $options = $(elm).find('option'); 516 | var random_val = ~~(Math.random() * $options.length); 517 | var option = $(elm).find('option')[random_val]; 518 | $(elm).val($(option).val()); 519 | $(elm).trigger('change'); 520 | 521 | 522 | }); 523 | 524 | } 525 | 526 | function fill_checkbox() { 527 | 528 | $("input[type='checkbox']").each((i) => { 529 | 530 | var elm = $("input[type='checkbox']")[i]; 531 | $(elm).prop("checked", true); 532 | $(elm).trigger('change'); 533 | 534 | 535 | }); 536 | 537 | } 538 | 539 | function fill_password() { 540 | 541 | $("input[type='password']").each((i) => { 542 | 543 | var elm = $("input[type='password']")[i]; 544 | $(elm).val("#Admin123"); 545 | $(elm).trigger('change'); 546 | 547 | 548 | }); 549 | 550 | } 551 | 552 | function fill_radio() { 553 | $("input[type='radio']").each((i, group) => { 554 | const name = $(group).attr('name'); 555 | if (name) { 556 | const radios = $(`input[name='${name}']`); 557 | const randomIndex = Math.floor(Math.random() * radios.length); 558 | radios.eq(randomIndex).prop('checked', true).trigger('change'); 559 | } 560 | }); 561 | } 562 | 563 | function random_string(length = 8) { 564 | var result = ''; 565 | var characters = 'abcdefghijklmnopqrstuvwxyz'; 566 | var charactersLength = characters.length; 567 | for (var i = 0; i < length; i++) { 568 | result += characters.charAt(Math.floor(Math.random() * charactersLength)); 569 | } 570 | return result; 571 | } 572 | 573 | function random_number(length = 8) { 574 | var result = ''; 575 | var characters = '0123456789'; 576 | var charactersLength = characters.length; 577 | for (var i = 0; i < length; i++) { 578 | result += characters.charAt(Math.floor(Math.random() * charactersLength)); 579 | } 580 | return result; 581 | } 582 | 583 | function take_screenshot() { 584 | 585 | $('.h4ckr-toolbar').hide(); 586 | 587 | html2canvas(document.body).then(function (canvas) { 588 | document.body.appendChild(canvas); 589 | }) 590 | .then(() => { 591 | var canvas = document.querySelector('canvas'); 592 | canvas.style.display = 'none'; 593 | var image = canvas.toDataURL("image/png").replace("image/png", "image/octet-stream"); 594 | var a = document.createElement("a"); 595 | a.setAttribute('download', 'myImage.png'); 596 | a.setAttribute('href', image); 597 | a.click(); 598 | }); 599 | 600 | $('.h4ckr-toolbar').show(); 601 | 602 | } 603 | 604 | // Enhanced JWT Decoder to automatically fetch tokens from localStorage, sessionStorage, and cookies 605 | $('.h4ckr-jwt_decoder').on('click', () => { 606 | let token = null; 607 | 608 | // Check localStorage for JWT tokens 609 | for (let key in localStorage) { 610 | if (localStorage.hasOwnProperty(key) && localStorage[key].includes('.')) { 611 | const parts = localStorage[key].split('.'); 612 | if (parts.length === 3) { 613 | token = localStorage[key]; 614 | console.log(`JWT found in localStorage under key: ${key}`); 615 | break; 616 | } 617 | } 618 | } 619 | 620 | // Check sessionStorage for JWT tokens if not found in localStorage 621 | if (!token) { 622 | for (let key in sessionStorage) { 623 | if (sessionStorage.hasOwnProperty(key) && sessionStorage[key].includes('.')) { 624 | const parts = sessionStorage[key].split('.'); 625 | if (parts.length === 3) { 626 | token = sessionStorage[key]; 627 | console.log(`JWT found in sessionStorage under key: ${key}`); 628 | break; 629 | } 630 | } 631 | } 632 | } 633 | 634 | // Check cookies for JWT tokens if not found in storage 635 | if (!token) { 636 | const cookies = document.cookie.split(';'); 637 | for (let cookie of cookies) { 638 | const value = cookie.split('=')[1]?.trim(); 639 | if (value && value.includes('.')) { 640 | const parts = value.split('.'); 641 | if (parts.length === 3) { 642 | token = value; 643 | console.log(`JWT found in cookies: ${cookie}`); 644 | break; 645 | } 646 | } 647 | } 648 | } 649 | 650 | // If no token is found, notify the user 651 | if (!token) { 652 | alert('No JWT token found in localStorage, sessionStorage, or cookies.'); 653 | return; 654 | } 655 | 656 | try { 657 | const parts = token.split('.'); 658 | if (parts.length !== 3) { 659 | throw new Error('Invalid JWT format. Token must have 3 parts separated by dots.'); 660 | } 661 | 662 | const decodeBase64 = (str) => decodeURIComponent(atob(str).split('').map(c => { 663 | return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2); 664 | }).join('')); 665 | 666 | const header = JSON.parse(decodeBase64(parts[0])); 667 | const payload = JSON.parse(decodeBase64(parts[1])); 668 | 669 | console.log('Decoded JWT Header:', header); 670 | console.log('Decoded JWT Payload:', payload); 671 | 672 | alert(`Header: ${JSON.stringify(header, null, 2)}\n\nPayload: ${JSON.stringify(payload, null, 2)}`); 673 | } catch (error) { 674 | alert(`Error decoding JWT: ${error.message}`); 675 | } 676 | }); 677 | -------------------------------------------------------------------------------- /assets/js/crypto.js: -------------------------------------------------------------------------------- 1 | !function(t,e){"object"==typeof exports?module.exports=exports=e():"function"==typeof define&&define.amd?define([],e):t.CryptoJS=e()}(this,function(){var h,t,e,r,i,n,f,o,s,c,a,l,d,m,x,b,H,z,A,u,p,_,v,y,g,B,w,k,S,C,D,E,R,M,F,P,W,O,I,U,K,X,L,j,N,T,q,Z,V,G,J,$,Q,Y,tt,et,rt,it,nt,ot,st,ct,at,ht,lt,ft,dt,ut,pt,_t,vt,yt,gt,Bt,wt,kt,St,bt=bt||function(l){var t;if("undefined"!=typeof window&&window.crypto&&(t=window.crypto),!t&&"undefined"!=typeof window&&window.msCrypto&&(t=window.msCrypto),!t&&"undefined"!=typeof global&&global.crypto&&(t=global.crypto),!t&&"function"==typeof require)try{t=require("crypto")}catch(t){}function i(){if(t){if("function"==typeof t.getRandomValues)try{return t.getRandomValues(new Uint32Array(1))[0]}catch(t){}if("function"==typeof t.randomBytes)try{return t.randomBytes(4).readInt32LE()}catch(t){}}throw new Error("Native crypto module could not be used to get secure random number.")}var r=Object.create||function(t){var e;return n.prototype=t,e=new n,n.prototype=null,e};function n(){}var e={},o=e.lib={},s=o.Base={extend:function(t){var e=r(this);return t&&e.mixIn(t),e.hasOwnProperty("init")&&this.init!==e.init||(e.init=function(){e.$super.init.apply(this,arguments)}),(e.init.prototype=e).$super=this,e},create:function(){var t=this.extend();return t.init.apply(t,arguments),t},init:function(){},mixIn:function(t){for(var e in t)t.hasOwnProperty(e)&&(this[e]=t[e]);t.hasOwnProperty("toString")&&(this.toString=t.toString)},clone:function(){return this.init.prototype.extend(this)}},f=o.WordArray=s.extend({init:function(t,e){t=this.words=t||[],this.sigBytes=null!=e?e:4*t.length},toString:function(t){return(t||a).stringify(this)},concat:function(t){var e=this.words,r=t.words,i=this.sigBytes,n=t.sigBytes;if(this.clamp(),i%4)for(var o=0;o>>2]>>>24-o%4*8&255;e[i+o>>>2]|=s<<24-(i+o)%4*8}else for(o=0;o>>2]=r[o>>>2];return this.sigBytes+=n,this},clamp:function(){var t=this.words,e=this.sigBytes;t[e>>>2]&=4294967295<<32-e%4*8,t.length=l.ceil(e/4)},clone:function(){var t=s.clone.call(this);return t.words=this.words.slice(0),t},random:function(t){for(var e=[],r=0;r>>2]>>>24-n%4*8&255;i.push((o>>>4).toString(16)),i.push((15&o).toString(16))}return i.join("")},parse:function(t){for(var e=t.length,r=[],i=0;i>>3]|=parseInt(t.substr(i,2),16)<<24-i%8*4;return new f.init(r,e/2)}},h=c.Latin1={stringify:function(t){for(var e=t.words,r=t.sigBytes,i=[],n=0;n>>2]>>>24-n%4*8&255;i.push(String.fromCharCode(o))}return i.join("")},parse:function(t){for(var e=t.length,r=[],i=0;i>>2]|=(255&t.charCodeAt(i))<<24-i%4*8;return new f.init(r,e)}},d=c.Utf8={stringify:function(t){try{return decodeURIComponent(escape(h.stringify(t)))}catch(t){throw new Error("Malformed UTF-8 data")}},parse:function(t){return h.parse(unescape(encodeURIComponent(t)))}},u=o.BufferedBlockAlgorithm=s.extend({reset:function(){this._data=new f.init,this._nDataBytes=0},_append:function(t){"string"==typeof t&&(t=d.parse(t)),this._data.concat(t),this._nDataBytes+=t.sigBytes},_process:function(t){var e,r=this._data,i=r.words,n=r.sigBytes,o=this.blockSize,s=n/(4*o),c=(s=t?l.ceil(s):l.max((0|s)-this._minBufferSize,0))*o,a=l.min(4*c,n);if(c){for(var h=0;h>>32-e}function Dt(t,e,r,i){var n,o=this._iv;o?(n=o.slice(0),this._iv=void 0):n=this._prevBlock,i.encryptBlock(n,0);for(var s=0;s>24&255)){var e=t>>16&255,r=t>>8&255,i=255&t;255===e?(e=0,255===r?(r=0,255===i?i=0:++i):++r):++e,t=0,t+=e<<16,t+=r<<8,t+=i}else t+=1<<24;return t}function Rt(){for(var t=this._X,e=this._C,r=0;r<8;r++)ft[r]=e[r];e[0]=e[0]+1295307597+this._b|0,e[1]=e[1]+3545052371+(e[0]>>>0>>0?1:0)|0,e[2]=e[2]+886263092+(e[1]>>>0>>0?1:0)|0,e[3]=e[3]+1295307597+(e[2]>>>0>>0?1:0)|0,e[4]=e[4]+3545052371+(e[3]>>>0>>0?1:0)|0,e[5]=e[5]+886263092+(e[4]>>>0>>0?1:0)|0,e[6]=e[6]+1295307597+(e[5]>>>0>>0?1:0)|0,e[7]=e[7]+3545052371+(e[6]>>>0>>0?1:0)|0,this._b=e[7]>>>0>>0?1:0;for(r=0;r<8;r++){var i=t[r]+e[r],n=65535&i,o=i>>>16,s=((n*n>>>17)+n*o>>>15)+o*o,c=((4294901760&i)*i|0)+((65535&i)*i|0);dt[r]=s^c}t[0]=dt[0]+(dt[7]<<16|dt[7]>>>16)+(dt[6]<<16|dt[6]>>>16)|0,t[1]=dt[1]+(dt[0]<<8|dt[0]>>>24)+dt[7]|0,t[2]=dt[2]+(dt[1]<<16|dt[1]>>>16)+(dt[0]<<16|dt[0]>>>16)|0,t[3]=dt[3]+(dt[2]<<8|dt[2]>>>24)+dt[1]|0,t[4]=dt[4]+(dt[3]<<16|dt[3]>>>16)+(dt[2]<<16|dt[2]>>>16)|0,t[5]=dt[5]+(dt[4]<<8|dt[4]>>>24)+dt[3]|0,t[6]=dt[6]+(dt[5]<<16|dt[5]>>>16)+(dt[4]<<16|dt[4]>>>16)|0,t[7]=dt[7]+(dt[6]<<8|dt[6]>>>24)+dt[5]|0}function Mt(){for(var t=this._X,e=this._C,r=0;r<8;r++)wt[r]=e[r];e[0]=e[0]+1295307597+this._b|0,e[1]=e[1]+3545052371+(e[0]>>>0>>0?1:0)|0,e[2]=e[2]+886263092+(e[1]>>>0>>0?1:0)|0,e[3]=e[3]+1295307597+(e[2]>>>0>>0?1:0)|0,e[4]=e[4]+3545052371+(e[3]>>>0>>0?1:0)|0,e[5]=e[5]+886263092+(e[4]>>>0>>0?1:0)|0,e[6]=e[6]+1295307597+(e[5]>>>0>>0?1:0)|0,e[7]=e[7]+3545052371+(e[6]>>>0>>0?1:0)|0,this._b=e[7]>>>0>>0?1:0;for(r=0;r<8;r++){var i=t[r]+e[r],n=65535&i,o=i>>>16,s=((n*n>>>17)+n*o>>>15)+o*o,c=((4294901760&i)*i|0)+((65535&i)*i|0);kt[r]=s^c}t[0]=kt[0]+(kt[7]<<16|kt[7]>>>16)+(kt[6]<<16|kt[6]>>>16)|0,t[1]=kt[1]+(kt[0]<<8|kt[0]>>>24)+kt[7]|0,t[2]=kt[2]+(kt[1]<<16|kt[1]>>>16)+(kt[0]<<16|kt[0]>>>16)|0,t[3]=kt[3]+(kt[2]<<8|kt[2]>>>24)+kt[1]|0,t[4]=kt[4]+(kt[3]<<16|kt[3]>>>16)+(kt[2]<<16|kt[2]>>>16)|0,t[5]=kt[5]+(kt[4]<<8|kt[4]>>>24)+kt[3]|0,t[6]=kt[6]+(kt[5]<<16|kt[5]>>>16)+(kt[4]<<16|kt[4]>>>16)|0,t[7]=kt[7]+(kt[6]<<8|kt[6]>>>24)+kt[5]|0}return h=bt.lib.WordArray,bt.enc.Base64={stringify:function(t){var e=t.words,r=t.sigBytes,i=this._map;t.clamp();for(var n=[],o=0;o>>2]>>>24-o%4*8&255)<<16|(e[o+1>>>2]>>>24-(o+1)%4*8&255)<<8|e[o+2>>>2]>>>24-(o+2)%4*8&255,c=0;c<4&&o+.75*c>>6*(3-c)&63));var a=i.charAt(64);if(a)for(;n.length%4;)n.push(a);return n.join("")},parse:function(t){var e=t.length,r=this._map,i=this._reverseMap;if(!i){i=this._reverseMap=[];for(var n=0;n>>6-o%4*2,a=s|c;i[n>>>2]|=a<<24-n%4*8,n++}return h.create(i,n)}(t,e,i)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="},function(l){var t=bt,e=t.lib,r=e.WordArray,i=e.Hasher,n=t.algo,H=[];!function(){for(var t=0;t<64;t++)H[t]=4294967296*l.abs(l.sin(t+1))|0}();var o=n.MD5=i.extend({_doReset:function(){this._hash=new r.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(t,e){for(var r=0;r<16;r++){var i=e+r,n=t[i];t[i]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8)}var o=this._hash.words,s=t[e+0],c=t[e+1],a=t[e+2],h=t[e+3],l=t[e+4],f=t[e+5],d=t[e+6],u=t[e+7],p=t[e+8],_=t[e+9],v=t[e+10],y=t[e+11],g=t[e+12],B=t[e+13],w=t[e+14],k=t[e+15],S=o[0],m=o[1],x=o[2],b=o[3];S=z(S,m,x,b,s,7,H[0]),b=z(b,S,m,x,c,12,H[1]),x=z(x,b,S,m,a,17,H[2]),m=z(m,x,b,S,h,22,H[3]),S=z(S,m,x,b,l,7,H[4]),b=z(b,S,m,x,f,12,H[5]),x=z(x,b,S,m,d,17,H[6]),m=z(m,x,b,S,u,22,H[7]),S=z(S,m,x,b,p,7,H[8]),b=z(b,S,m,x,_,12,H[9]),x=z(x,b,S,m,v,17,H[10]),m=z(m,x,b,S,y,22,H[11]),S=z(S,m,x,b,g,7,H[12]),b=z(b,S,m,x,B,12,H[13]),x=z(x,b,S,m,w,17,H[14]),S=A(S,m=z(m,x,b,S,k,22,H[15]),x,b,c,5,H[16]),b=A(b,S,m,x,d,9,H[17]),x=A(x,b,S,m,y,14,H[18]),m=A(m,x,b,S,s,20,H[19]),S=A(S,m,x,b,f,5,H[20]),b=A(b,S,m,x,v,9,H[21]),x=A(x,b,S,m,k,14,H[22]),m=A(m,x,b,S,l,20,H[23]),S=A(S,m,x,b,_,5,H[24]),b=A(b,S,m,x,w,9,H[25]),x=A(x,b,S,m,h,14,H[26]),m=A(m,x,b,S,p,20,H[27]),S=A(S,m,x,b,B,5,H[28]),b=A(b,S,m,x,a,9,H[29]),x=A(x,b,S,m,u,14,H[30]),S=C(S,m=A(m,x,b,S,g,20,H[31]),x,b,f,4,H[32]),b=C(b,S,m,x,p,11,H[33]),x=C(x,b,S,m,y,16,H[34]),m=C(m,x,b,S,w,23,H[35]),S=C(S,m,x,b,c,4,H[36]),b=C(b,S,m,x,l,11,H[37]),x=C(x,b,S,m,u,16,H[38]),m=C(m,x,b,S,v,23,H[39]),S=C(S,m,x,b,B,4,H[40]),b=C(b,S,m,x,s,11,H[41]),x=C(x,b,S,m,h,16,H[42]),m=C(m,x,b,S,d,23,H[43]),S=C(S,m,x,b,_,4,H[44]),b=C(b,S,m,x,g,11,H[45]),x=C(x,b,S,m,k,16,H[46]),S=D(S,m=C(m,x,b,S,a,23,H[47]),x,b,s,6,H[48]),b=D(b,S,m,x,u,10,H[49]),x=D(x,b,S,m,w,15,H[50]),m=D(m,x,b,S,f,21,H[51]),S=D(S,m,x,b,g,6,H[52]),b=D(b,S,m,x,h,10,H[53]),x=D(x,b,S,m,v,15,H[54]),m=D(m,x,b,S,c,21,H[55]),S=D(S,m,x,b,p,6,H[56]),b=D(b,S,m,x,k,10,H[57]),x=D(x,b,S,m,d,15,H[58]),m=D(m,x,b,S,B,21,H[59]),S=D(S,m,x,b,l,6,H[60]),b=D(b,S,m,x,y,10,H[61]),x=D(x,b,S,m,a,15,H[62]),m=D(m,x,b,S,_,21,H[63]),o[0]=o[0]+S|0,o[1]=o[1]+m|0,o[2]=o[2]+x|0,o[3]=o[3]+b|0},_doFinalize:function(){var t=this._data,e=t.words,r=8*this._nDataBytes,i=8*t.sigBytes;e[i>>>5]|=128<<24-i%32;var n=l.floor(r/4294967296),o=r;e[15+(64+i>>>9<<4)]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8),e[14+(64+i>>>9<<4)]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),t.sigBytes=4*(e.length+1),this._process();for(var s=this._hash,c=s.words,a=0;a<4;a++){var h=c[a];c[a]=16711935&(h<<8|h>>>24)|4278255360&(h<<24|h>>>8)}return s},clone:function(){var t=i.clone.call(this);return t._hash=this._hash.clone(),t}});function z(t,e,r,i,n,o,s){var c=t+(e&r|~e&i)+n+s;return(c<>>32-o)+e}function A(t,e,r,i,n,o,s){var c=t+(e&i|r&~i)+n+s;return(c<>>32-o)+e}function C(t,e,r,i,n,o,s){var c=t+(e^r^i)+n+s;return(c<>>32-o)+e}function D(t,e,r,i,n,o,s){var c=t+(r^(e|~i))+n+s;return(c<>>32-o)+e}t.MD5=i._createHelper(o),t.HmacMD5=i._createHmacHelper(o)}(Math),e=(t=bt).lib,r=e.WordArray,i=e.Hasher,n=t.algo,f=[],o=n.SHA1=i.extend({_doReset:function(){this._hash=new r.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(t,e){for(var r=this._hash.words,i=r[0],n=r[1],o=r[2],s=r[3],c=r[4],a=0;a<80;a++){if(a<16)f[a]=0|t[e+a];else{var h=f[a-3]^f[a-8]^f[a-14]^f[a-16];f[a]=h<<1|h>>>31}var l=(i<<5|i>>>27)+c+f[a];l+=a<20?1518500249+(n&o|~n&s):a<40?1859775393+(n^o^s):a<60?(n&o|n&s|o&s)-1894007588:(n^o^s)-899497514,c=s,s=o,o=n<<30|n>>>2,n=i,i=l}r[0]=r[0]+i|0,r[1]=r[1]+n|0,r[2]=r[2]+o|0,r[3]=r[3]+s|0,r[4]=r[4]+c|0},_doFinalize:function(){var t=this._data,e=t.words,r=8*this._nDataBytes,i=8*t.sigBytes;return e[i>>>5]|=128<<24-i%32,e[14+(64+i>>>9<<4)]=Math.floor(r/4294967296),e[15+(64+i>>>9<<4)]=r,t.sigBytes=4*e.length,this._process(),this._hash},clone:function(){var t=i.clone.call(this);return t._hash=this._hash.clone(),t}}),t.SHA1=i._createHelper(o),t.HmacSHA1=i._createHmacHelper(o),function(n){var t=bt,e=t.lib,r=e.WordArray,i=e.Hasher,o=t.algo,s=[],B=[];!function(){function t(t){for(var e=n.sqrt(t),r=2;r<=e;r++)if(!(t%r))return;return 1}function e(t){return 4294967296*(t-(0|t))|0}for(var r=2,i=0;i<64;)t(r)&&(i<8&&(s[i]=e(n.pow(r,.5))),B[i]=e(n.pow(r,1/3)),i++),r++}();var w=[],c=o.SHA256=i.extend({_doReset:function(){this._hash=new r.init(s.slice(0))},_doProcessBlock:function(t,e){for(var r=this._hash.words,i=r[0],n=r[1],o=r[2],s=r[3],c=r[4],a=r[5],h=r[6],l=r[7],f=0;f<64;f++){if(f<16)w[f]=0|t[e+f];else{var d=w[f-15],u=(d<<25|d>>>7)^(d<<14|d>>>18)^d>>>3,p=w[f-2],_=(p<<15|p>>>17)^(p<<13|p>>>19)^p>>>10;w[f]=u+w[f-7]+_+w[f-16]}var v=i&n^i&o^n&o,y=(i<<30|i>>>2)^(i<<19|i>>>13)^(i<<10|i>>>22),g=l+((c<<26|c>>>6)^(c<<21|c>>>11)^(c<<7|c>>>25))+(c&a^~c&h)+B[f]+w[f];l=h,h=a,a=c,c=s+g|0,s=o,o=n,n=i,i=g+(y+v)|0}r[0]=r[0]+i|0,r[1]=r[1]+n|0,r[2]=r[2]+o|0,r[3]=r[3]+s|0,r[4]=r[4]+c|0,r[5]=r[5]+a|0,r[6]=r[6]+h|0,r[7]=r[7]+l|0},_doFinalize:function(){var t=this._data,e=t.words,r=8*this._nDataBytes,i=8*t.sigBytes;return e[i>>>5]|=128<<24-i%32,e[14+(64+i>>>9<<4)]=n.floor(r/4294967296),e[15+(64+i>>>9<<4)]=r,t.sigBytes=4*e.length,this._process(),this._hash},clone:function(){var t=i.clone.call(this);return t._hash=this._hash.clone(),t}});t.SHA256=i._createHelper(c),t.HmacSHA256=i._createHmacHelper(c)}(Math),function(){var n=bt.lib.WordArray,t=bt.enc;t.Utf16=t.Utf16BE={stringify:function(t){for(var e=t.words,r=t.sigBytes,i=[],n=0;n>>2]>>>16-n%4*8&65535;i.push(String.fromCharCode(o))}return i.join("")},parse:function(t){for(var e=t.length,r=[],i=0;i>>1]|=t.charCodeAt(i)<<16-i%2*16;return n.create(r,2*e)}};function s(t){return t<<8&4278255360|t>>>8&16711935}t.Utf16LE={stringify:function(t){for(var e=t.words,r=t.sigBytes,i=[],n=0;n>>2]>>>16-n%4*8&65535);i.push(String.fromCharCode(o))}return i.join("")},parse:function(t){for(var e=t.length,r=[],i=0;i>>1]|=s(t.charCodeAt(i)<<16-i%2*16);return n.create(r,2*e)}}}(),function(){if("function"==typeof ArrayBuffer){var t=bt.lib.WordArray,n=t.init;(t.init=function(t){if(t instanceof ArrayBuffer&&(t=new Uint8Array(t)),(t instanceof Int8Array||"undefined"!=typeof Uint8ClampedArray&&t instanceof Uint8ClampedArray||t instanceof Int16Array||t instanceof Uint16Array||t instanceof Int32Array||t instanceof Uint32Array||t instanceof Float32Array||t instanceof Float64Array)&&(t=new Uint8Array(t.buffer,t.byteOffset,t.byteLength)),t instanceof Uint8Array){for(var e=t.byteLength,r=[],i=0;i>>2]|=t[i]<<24-i%4*8;n.call(this,r,e)}else n.apply(this,arguments)}).prototype=t}}(),Math,c=(s=bt).lib,a=c.WordArray,l=c.Hasher,d=s.algo,m=a.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),x=a.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),b=a.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),H=a.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),z=a.create([0,1518500249,1859775393,2400959708,2840853838]),A=a.create([1352829926,1548603684,1836072691,2053994217,0]),u=d.RIPEMD160=l.extend({_doReset:function(){this._hash=a.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(t,e){for(var r=0;r<16;r++){var i=e+r,n=t[i];t[i]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8)}var o,s,c,a,h,l,f,d,u,p,_,v=this._hash.words,y=z.words,g=A.words,B=m.words,w=x.words,k=b.words,S=H.words;l=o=v[0],f=s=v[1],d=c=v[2],u=a=v[3],p=h=v[4];for(r=0;r<80;r+=1)_=o+t[e+B[r]]|0,_+=r<16?mt(s,c,a)+y[0]:r<32?xt(s,c,a)+y[1]:r<48?Ht(s,c,a)+y[2]:r<64?zt(s,c,a)+y[3]:At(s,c,a)+y[4],_=(_=Ct(_|=0,k[r]))+h|0,o=h,h=a,a=Ct(c,10),c=s,s=_,_=l+t[e+w[r]]|0,_+=r<16?At(f,d,u)+g[0]:r<32?zt(f,d,u)+g[1]:r<48?Ht(f,d,u)+g[2]:r<64?xt(f,d,u)+g[3]:mt(f,d,u)+g[4],_=(_=Ct(_|=0,S[r]))+p|0,l=p,p=u,u=Ct(d,10),d=f,f=_;_=v[1]+c+u|0,v[1]=v[2]+a+p|0,v[2]=v[3]+h+l|0,v[3]=v[4]+o+f|0,v[4]=v[0]+s+d|0,v[0]=_},_doFinalize:function(){var t=this._data,e=t.words,r=8*this._nDataBytes,i=8*t.sigBytes;e[i>>>5]|=128<<24-i%32,e[14+(64+i>>>9<<4)]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8),t.sigBytes=4*(e.length+1),this._process();for(var n=this._hash,o=n.words,s=0;s<5;s++){var c=o[s];o[s]=16711935&(c<<8|c>>>24)|4278255360&(c<<24|c>>>8)}return n},clone:function(){var t=l.clone.call(this);return t._hash=this._hash.clone(),t}}),s.RIPEMD160=l._createHelper(u),s.HmacRIPEMD160=l._createHmacHelper(u),p=bt.lib.Base,_=bt.enc.Utf8,bt.algo.HMAC=p.extend({init:function(t,e){t=this._hasher=new t.init,"string"==typeof e&&(e=_.parse(e));var r=t.blockSize,i=4*r;e.sigBytes>i&&(e=t.finalize(e)),e.clamp();for(var n=this._oKey=e.clone(),o=this._iKey=e.clone(),s=n.words,c=o.words,a=0;a>>24)|4278255360&(o<<24|o>>>8),s=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),(x=r[n]).high^=s,x.low^=o}for(var c=0;c<24;c++){for(var a=0;a<5;a++){for(var h=0,l=0,f=0;f<5;f++){h^=(x=r[a+5*f]).high,l^=x.low}var d=R[a];d.high=h,d.low=l}for(a=0;a<5;a++){var u=R[(a+4)%5],p=R[(a+1)%5],_=p.high,v=p.low;for(h=u.high^(_<<1|v>>>31),l=u.low^(v<<1|_>>>31),f=0;f<5;f++){(x=r[a+5*f]).high^=h,x.low^=l}}for(var y=1;y<25;y++){var g=(x=r[y]).high,B=x.low,w=C[y];l=w<32?(h=g<>>32-w,B<>>32-w):(h=B<>>64-w,g<>>64-w);var k=R[D[y]];k.high=h,k.low=l}var S=R[0],m=r[0];S.high=m.high,S.low=m.low;for(a=0;a<5;a++)for(f=0;f<5;f++){var x=r[y=a+5*f],b=R[y],H=R[(a+1)%5+5*f],z=R[(a+2)%5+5*f];x.high=b.high^~H.high&z.high,x.low=b.low^~H.low&z.low}x=r[0];var A=E[c];x.high^=A.high,x.low^=A.low}},_doFinalize:function(){var t=this._data,e=t.words,r=(this._nDataBytes,8*t.sigBytes),i=32*this.blockSize;e[r>>>5]|=1<<24-r%32,e[(d.ceil((1+r)/i)*i>>>5)-1]|=128,t.sigBytes=4*e.length,this._process();for(var n=this._state,o=this.cfg.outputLength/8,s=o/8,c=[],a=0;a>>24)|4278255360&(l<<24|l>>>8),f=16711935&(f<<8|f>>>24)|4278255360&(f<<24|f>>>8),c.push(f),c.push(l)}return new u.init(c,o)},clone:function(){for(var t=i.clone.call(this),e=t._state=this._state.slice(0),r=0;r<25;r++)e[r]=e[r].clone();return t}});t.SHA3=i._createHelper(n),t.HmacSHA3=i._createHmacHelper(n)}(Math),function(){var t=bt,e=t.lib.Hasher,r=t.x64,i=r.Word,n=r.WordArray,o=t.algo;function s(){return i.create.apply(i,arguments)}var mt=[s(1116352408,3609767458),s(1899447441,602891725),s(3049323471,3964484399),s(3921009573,2173295548),s(961987163,4081628472),s(1508970993,3053834265),s(2453635748,2937671579),s(2870763221,3664609560),s(3624381080,2734883394),s(310598401,1164996542),s(607225278,1323610764),s(1426881987,3590304994),s(1925078388,4068182383),s(2162078206,991336113),s(2614888103,633803317),s(3248222580,3479774868),s(3835390401,2666613458),s(4022224774,944711139),s(264347078,2341262773),s(604807628,2007800933),s(770255983,1495990901),s(1249150122,1856431235),s(1555081692,3175218132),s(1996064986,2198950837),s(2554220882,3999719339),s(2821834349,766784016),s(2952996808,2566594879),s(3210313671,3203337956),s(3336571891,1034457026),s(3584528711,2466948901),s(113926993,3758326383),s(338241895,168717936),s(666307205,1188179964),s(773529912,1546045734),s(1294757372,1522805485),s(1396182291,2643833823),s(1695183700,2343527390),s(1986661051,1014477480),s(2177026350,1206759142),s(2456956037,344077627),s(2730485921,1290863460),s(2820302411,3158454273),s(3259730800,3505952657),s(3345764771,106217008),s(3516065817,3606008344),s(3600352804,1432725776),s(4094571909,1467031594),s(275423344,851169720),s(430227734,3100823752),s(506948616,1363258195),s(659060556,3750685593),s(883997877,3785050280),s(958139571,3318307427),s(1322822218,3812723403),s(1537002063,2003034995),s(1747873779,3602036899),s(1955562222,1575990012),s(2024104815,1125592928),s(2227730452,2716904306),s(2361852424,442776044),s(2428436474,593698344),s(2756734187,3733110249),s(3204031479,2999351573),s(3329325298,3815920427),s(3391569614,3928383900),s(3515267271,566280711),s(3940187606,3454069534),s(4118630271,4000239992),s(116418474,1914138554),s(174292421,2731055270),s(289380356,3203993006),s(460393269,320620315),s(685471733,587496836),s(852142971,1086792851),s(1017036298,365543100),s(1126000580,2618297676),s(1288033470,3409855158),s(1501505948,4234509866),s(1607167915,987167468),s(1816402316,1246189591)],xt=[];!function(){for(var t=0;t<80;t++)xt[t]=s()}();var c=o.SHA512=e.extend({_doReset:function(){this._hash=new n.init([new i.init(1779033703,4089235720),new i.init(3144134277,2227873595),new i.init(1013904242,4271175723),new i.init(2773480762,1595750129),new i.init(1359893119,2917565137),new i.init(2600822924,725511199),new i.init(528734635,4215389547),new i.init(1541459225,327033209)])},_doProcessBlock:function(t,e){for(var r=this._hash.words,i=r[0],n=r[1],o=r[2],s=r[3],c=r[4],a=r[5],h=r[6],l=r[7],f=i.high,d=i.low,u=n.high,p=n.low,_=o.high,v=o.low,y=s.high,g=s.low,B=c.high,w=c.low,k=a.high,S=a.low,m=h.high,x=h.low,b=l.high,H=l.low,z=f,A=d,C=u,D=p,E=_,R=v,M=y,F=g,P=B,W=w,O=k,I=S,U=m,K=x,X=b,L=H,j=0;j<80;j++){var N,T,q=xt[j];if(j<16)T=q.high=0|t[e+2*j],N=q.low=0|t[e+2*j+1];else{var Z=xt[j-15],V=Z.high,G=Z.low,J=(V>>>1|G<<31)^(V>>>8|G<<24)^V>>>7,$=(G>>>1|V<<31)^(G>>>8|V<<24)^(G>>>7|V<<25),Q=xt[j-2],Y=Q.high,tt=Q.low,et=(Y>>>19|tt<<13)^(Y<<3|tt>>>29)^Y>>>6,rt=(tt>>>19|Y<<13)^(tt<<3|Y>>>29)^(tt>>>6|Y<<26),it=xt[j-7],nt=it.high,ot=it.low,st=xt[j-16],ct=st.high,at=st.low;T=(T=(T=J+nt+((N=$+ot)>>>0<$>>>0?1:0))+et+((N+=rt)>>>0>>0?1:0))+ct+((N+=at)>>>0>>0?1:0),q.high=T,q.low=N}var ht,lt=P&O^~P&U,ft=W&I^~W&K,dt=z&C^z&E^C&E,ut=A&D^A&R^D&R,pt=(z>>>28|A<<4)^(z<<30|A>>>2)^(z<<25|A>>>7),_t=(A>>>28|z<<4)^(A<<30|z>>>2)^(A<<25|z>>>7),vt=(P>>>14|W<<18)^(P>>>18|W<<14)^(P<<23|W>>>9),yt=(W>>>14|P<<18)^(W>>>18|P<<14)^(W<<23|P>>>9),gt=mt[j],Bt=gt.high,wt=gt.low,kt=X+vt+((ht=L+yt)>>>0>>0?1:0),St=_t+ut;X=U,L=K,U=O,K=I,O=P,I=W,P=M+(kt=(kt=(kt=kt+lt+((ht=ht+ft)>>>0>>0?1:0))+Bt+((ht=ht+wt)>>>0>>0?1:0))+T+((ht=ht+N)>>>0>>0?1:0))+((W=F+ht|0)>>>0>>0?1:0)|0,M=E,F=R,E=C,R=D,C=z,D=A,z=kt+(pt+dt+(St>>>0<_t>>>0?1:0))+((A=ht+St|0)>>>0>>0?1:0)|0}d=i.low=d+A,i.high=f+z+(d>>>0>>0?1:0),p=n.low=p+D,n.high=u+C+(p>>>0>>0?1:0),v=o.low=v+R,o.high=_+E+(v>>>0>>0?1:0),g=s.low=g+F,s.high=y+M+(g>>>0>>0?1:0),w=c.low=w+W,c.high=B+P+(w>>>0>>0?1:0),S=a.low=S+I,a.high=k+O+(S>>>0>>0?1:0),x=h.low=x+K,h.high=m+U+(x>>>0>>0?1:0),H=l.low=H+L,l.high=b+X+(H>>>0>>0?1:0)},_doFinalize:function(){var t=this._data,e=t.words,r=8*this._nDataBytes,i=8*t.sigBytes;return e[i>>>5]|=128<<24-i%32,e[30+(128+i>>>10<<5)]=Math.floor(r/4294967296),e[31+(128+i>>>10<<5)]=r,t.sigBytes=4*e.length,this._process(),this._hash.toX32()},clone:function(){var t=e.clone.call(this);return t._hash=this._hash.clone(),t},blockSize:32});t.SHA512=e._createHelper(c),t.HmacSHA512=e._createHmacHelper(c)}(),Z=(q=bt).x64,V=Z.Word,G=Z.WordArray,J=q.algo,$=J.SHA512,Q=J.SHA384=$.extend({_doReset:function(){this._hash=new G.init([new V.init(3418070365,3238371032),new V.init(1654270250,914150663),new V.init(2438529370,812702999),new V.init(355462360,4144912697),new V.init(1731405415,4290775857),new V.init(2394180231,1750603025),new V.init(3675008525,1694076839),new V.init(1203062813,3204075428)])},_doFinalize:function(){var t=$._doFinalize.call(this);return t.sigBytes-=16,t}}),q.SHA384=$._createHelper(Q),q.HmacSHA384=$._createHmacHelper(Q),bt.lib.Cipher||function(){var t=bt,e=t.lib,r=e.Base,a=e.WordArray,i=e.BufferedBlockAlgorithm,n=t.enc,o=(n.Utf8,n.Base64),s=t.algo.EvpKDF,c=e.Cipher=i.extend({cfg:r.extend(),createEncryptor:function(t,e){return this.create(this._ENC_XFORM_MODE,t,e)},createDecryptor:function(t,e){return this.create(this._DEC_XFORM_MODE,t,e)},init:function(t,e,r){this.cfg=this.cfg.extend(r),this._xformMode=t,this._key=e,this.reset()},reset:function(){i.reset.call(this),this._doReset()},process:function(t){return this._append(t),this._process()},finalize:function(t){return t&&this._append(t),this._doFinalize()},keySize:4,ivSize:4,_ENC_XFORM_MODE:1,_DEC_XFORM_MODE:2,_createHelper:function(i){return{encrypt:function(t,e,r){return h(e).encrypt(i,t,e,r)},decrypt:function(t,e,r){return h(e).decrypt(i,t,e,r)}}}});function h(t){return"string"==typeof t?w:g}e.StreamCipher=c.extend({_doFinalize:function(){return this._process(!0)},blockSize:1});var l,f=t.mode={},d=e.BlockCipherMode=r.extend({createEncryptor:function(t,e){return this.Encryptor.create(t,e)},createDecryptor:function(t,e){return this.Decryptor.create(t,e)},init:function(t,e){this._cipher=t,this._iv=e}}),u=f.CBC=((l=d.extend()).Encryptor=l.extend({processBlock:function(t,e){var r=this._cipher,i=r.blockSize;p.call(this,t,e,i),r.encryptBlock(t,e),this._prevBlock=t.slice(e,e+i)}}),l.Decryptor=l.extend({processBlock:function(t,e){var r=this._cipher,i=r.blockSize,n=t.slice(e,e+i);r.decryptBlock(t,e),p.call(this,t,e,i),this._prevBlock=n}}),l);function p(t,e,r){var i,n=this._iv;n?(i=n,this._iv=void 0):i=this._prevBlock;for(var o=0;o>>2];t.sigBytes-=e}},v=(e.BlockCipher=c.extend({cfg:c.cfg.extend({mode:u,padding:_}),reset:function(){var t;c.reset.call(this);var e=this.cfg,r=e.iv,i=e.mode;this._xformMode==this._ENC_XFORM_MODE?t=i.createEncryptor:(t=i.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==t?this._mode.init(this,r&&r.words):(this._mode=t.call(i,this,r&&r.words),this._mode.__creator=t)},_doProcessBlock:function(t,e){this._mode.processBlock(t,e)},_doFinalize:function(){var t,e=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(e.pad(this._data,this.blockSize),t=this._process(!0)):(t=this._process(!0),e.unpad(t)),t},blockSize:4}),e.CipherParams=r.extend({init:function(t){this.mixIn(t)},toString:function(t){return(t||this.formatter).stringify(this)}})),y=(t.format={}).OpenSSL={stringify:function(t){var e=t.ciphertext,r=t.salt;return(r?a.create([1398893684,1701076831]).concat(r).concat(e):e).toString(o)},parse:function(t){var e,r=o.parse(t),i=r.words;return 1398893684==i[0]&&1701076831==i[1]&&(e=a.create(i.slice(2,4)),i.splice(0,4),r.sigBytes-=16),v.create({ciphertext:r,salt:e})}},g=e.SerializableCipher=r.extend({cfg:r.extend({format:y}),encrypt:function(t,e,r,i){i=this.cfg.extend(i);var n=t.createEncryptor(r,i),o=n.finalize(e),s=n.cfg;return v.create({ciphertext:o,key:r,iv:s.iv,algorithm:t,mode:s.mode,padding:s.padding,blockSize:t.blockSize,formatter:i.format})},decrypt:function(t,e,r,i){return i=this.cfg.extend(i),e=this._parse(e,i.format),t.createDecryptor(r,i).finalize(e.ciphertext)},_parse:function(t,e){return"string"==typeof t?e.parse(t,this):t}}),B=(t.kdf={}).OpenSSL={execute:function(t,e,r,i){i=i||a.random(8);var n=s.create({keySize:e+r}).compute(t,i),o=a.create(n.words.slice(e),4*r);return n.sigBytes=4*e,v.create({key:n,iv:o,salt:i})}},w=e.PasswordBasedCipher=g.extend({cfg:g.cfg.extend({kdf:B}),encrypt:function(t,e,r,i){var n=(i=this.cfg.extend(i)).kdf.execute(r,t.keySize,t.ivSize);i.iv=n.iv;var o=g.encrypt.call(this,t,e,n.key,i);return o.mixIn(n),o},decrypt:function(t,e,r,i){i=this.cfg.extend(i),e=this._parse(e,i.format);var n=i.kdf.execute(r,t.keySize,t.ivSize,e.salt);return i.iv=n.iv,g.decrypt.call(this,t,e,n.key,i)}})}(),bt.mode.CFB=((Y=bt.lib.BlockCipherMode.extend()).Encryptor=Y.extend({processBlock:function(t,e){var r=this._cipher,i=r.blockSize;Dt.call(this,t,e,i,r),this._prevBlock=t.slice(e,e+i)}}),Y.Decryptor=Y.extend({processBlock:function(t,e){var r=this._cipher,i=r.blockSize,n=t.slice(e,e+i);Dt.call(this,t,e,i,r),this._prevBlock=n}}),Y),bt.mode.ECB=((tt=bt.lib.BlockCipherMode.extend()).Encryptor=tt.extend({processBlock:function(t,e){this._cipher.encryptBlock(t,e)}}),tt.Decryptor=tt.extend({processBlock:function(t,e){this._cipher.decryptBlock(t,e)}}),tt),bt.pad.AnsiX923={pad:function(t,e){var r=t.sigBytes,i=4*e,n=i-r%i,o=r+n-1;t.clamp(),t.words[o>>>2]|=n<<24-o%4*8,t.sigBytes+=n},unpad:function(t){var e=255&t.words[t.sigBytes-1>>>2];t.sigBytes-=e}},bt.pad.Iso10126={pad:function(t,e){var r=4*e,i=r-t.sigBytes%r;t.concat(bt.lib.WordArray.random(i-1)).concat(bt.lib.WordArray.create([i<<24],1))},unpad:function(t){var e=255&t.words[t.sigBytes-1>>>2];t.sigBytes-=e}},bt.pad.Iso97971={pad:function(t,e){t.concat(bt.lib.WordArray.create([2147483648],1)),bt.pad.ZeroPadding.pad(t,e)},unpad:function(t){bt.pad.ZeroPadding.unpad(t),t.sigBytes--}},bt.mode.OFB=(et=bt.lib.BlockCipherMode.extend(),rt=et.Encryptor=et.extend({processBlock:function(t,e){var r=this._cipher,i=r.blockSize,n=this._iv,o=this._keystream;n&&(o=this._keystream=n.slice(0),this._iv=void 0),r.encryptBlock(o,0);for(var s=0;s>>8^255&n^99,h[r]=n;var o=t[l[n]=r],s=t[o],c=t[s],a=257*t[n]^16843008*n;f[r]=a<<24|a>>>8,d[r]=a<<16|a>>>16,u[r]=a<<8|a>>>24,p[r]=a;a=16843009*c^65537*s^257*o^16843008*r;_[n]=a<<24|a>>>8,v[n]=a<<16|a>>>16,y[n]=a<<8|a>>>24,g[n]=a,r?(r=o^t[t[t[c^o]]],i^=t[t[i]]):r=i=1}}();var B=[0,1,2,4,8,16,32,64,128,27,54],i=r.AES=e.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var t=this._keyPriorReset=this._key,e=t.words,r=t.sigBytes/4,i=4*(1+(this._nRounds=6+r)),n=this._keySchedule=[],o=0;o>>24]<<24|h[a>>>16&255]<<16|h[a>>>8&255]<<8|h[255&a]):(a=h[(a=a<<8|a>>>24)>>>24]<<24|h[a>>>16&255]<<16|h[a>>>8&255]<<8|h[255&a],a^=B[o/r|0]<<24),n[o]=n[o-r]^a);for(var s=this._invKeySchedule=[],c=0;c>>24]]^v[h[a>>>16&255]]^y[h[a>>>8&255]]^g[h[255&a]]}}},encryptBlock:function(t,e){this._doCryptBlock(t,e,this._keySchedule,f,d,u,p,h)},decryptBlock:function(t,e){var r=t[e+1];t[e+1]=t[e+3],t[e+3]=r,this._doCryptBlock(t,e,this._invKeySchedule,_,v,y,g,l);r=t[e+1];t[e+1]=t[e+3],t[e+3]=r},_doCryptBlock:function(t,e,r,i,n,o,s,c){for(var a=this._nRounds,h=t[e]^r[0],l=t[e+1]^r[1],f=t[e+2]^r[2],d=t[e+3]^r[3],u=4,p=1;p>>24]^n[l>>>16&255]^o[f>>>8&255]^s[255&d]^r[u++],v=i[l>>>24]^n[f>>>16&255]^o[d>>>8&255]^s[255&h]^r[u++],y=i[f>>>24]^n[d>>>16&255]^o[h>>>8&255]^s[255&l]^r[u++],g=i[d>>>24]^n[h>>>16&255]^o[l>>>8&255]^s[255&f]^r[u++];h=_,l=v,f=y,d=g}_=(c[h>>>24]<<24|c[l>>>16&255]<<16|c[f>>>8&255]<<8|c[255&d])^r[u++],v=(c[l>>>24]<<24|c[f>>>16&255]<<16|c[d>>>8&255]<<8|c[255&h])^r[u++],y=(c[f>>>24]<<24|c[d>>>16&255]<<16|c[h>>>8&255]<<8|c[255&l])^r[u++],g=(c[d>>>24]<<24|c[h>>>16&255]<<16|c[l>>>8&255]<<8|c[255&f])^r[u++];t[e]=_,t[e+1]=v,t[e+2]=y,t[e+3]=g},keySize:8});t.AES=e._createHelper(i)}(),function(){var t=bt,e=t.lib,n=e.WordArray,r=e.BlockCipher,i=t.algo,h=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],l=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],f=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],d=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],u=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],o=i.DES=r.extend({_doReset:function(){for(var t=this._key.words,e=[],r=0;r<56;r++){var i=h[r]-1;e[r]=t[i>>>5]>>>31-i%32&1}for(var n=this._subKeys=[],o=0;o<16;o++){var s=n[o]=[],c=f[o];for(r=0;r<24;r++)s[r/6|0]|=e[(l[r]-1+c)%28]<<31-r%6,s[4+(r/6|0)]|=e[28+(l[r+24]-1+c)%28]<<31-r%6;s[0]=s[0]<<1|s[0]>>>31;for(r=1;r<7;r++)s[r]=s[r]>>>4*(r-1)+3;s[7]=s[7]<<5|s[7]>>>27}var a=this._invSubKeys=[];for(r=0;r<16;r++)a[r]=n[15-r]},encryptBlock:function(t,e){this._doCryptBlock(t,e,this._subKeys)},decryptBlock:function(t,e){this._doCryptBlock(t,e,this._invSubKeys)},_doCryptBlock:function(t,e,r){this._lBlock=t[e],this._rBlock=t[e+1],p.call(this,4,252645135),p.call(this,16,65535),_.call(this,2,858993459),_.call(this,8,16711935),p.call(this,1,1431655765);for(var i=0;i<16;i++){for(var n=r[i],o=this._lBlock,s=this._rBlock,c=0,a=0;a<8;a++)c|=d[a][((s^n[a])&u[a])>>>0];this._lBlock=s,this._rBlock=o^c}var h=this._lBlock;this._lBlock=this._rBlock,this._rBlock=h,p.call(this,1,1431655765),_.call(this,8,16711935),_.call(this,2,858993459),p.call(this,16,65535),p.call(this,4,252645135),t[e]=this._lBlock,t[e+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});function p(t,e){var r=(this._lBlock>>>t^this._rBlock)&e;this._rBlock^=r,this._lBlock^=r<>>t^this._lBlock)&e;this._lBlock^=r,this._rBlock^=r<192.");var e=t.slice(0,2),r=t.length<4?t.slice(0,2):t.slice(2,4),i=t.length<6?t.slice(0,2):t.slice(4,6);this._des1=o.createEncryptor(n.create(e)),this._des2=o.createEncryptor(n.create(r)),this._des3=o.createEncryptor(n.create(i))},encryptBlock:function(t,e){this._des1.encryptBlock(t,e),this._des2.decryptBlock(t,e),this._des3.encryptBlock(t,e)},decryptBlock:function(t,e){this._des3.decryptBlock(t,e),this._des2.encryptBlock(t,e),this._des1.decryptBlock(t,e)},keySize:6,ivSize:2,blockSize:2});t.TripleDES=r._createHelper(s)}(),function(){var t=bt,e=t.lib.StreamCipher,r=t.algo,i=r.RC4=e.extend({_doReset:function(){for(var t=this._key,e=t.words,r=t.sigBytes,i=this._S=[],n=0;n<256;n++)i[n]=n;n=0;for(var o=0;n<256;n++){var s=n%r,c=e[s>>>2]>>>24-s%4*8&255;o=(o+i[n]+c)%256;var a=i[n];i[n]=i[o],i[o]=a}this._i=this._j=0},_doProcessBlock:function(t,e){t[e]^=n.call(this)},keySize:8,ivSize:0});function n(){for(var t=this._S,e=this._i,r=this._j,i=0,n=0;n<4;n++){r=(r+t[e=(e+1)%256])%256;var o=t[e];t[e]=t[r],t[r]=o,i|=t[(t[e]+t[r])%256]<<24-8*n}return this._i=e,this._j=r,i}t.RC4=e._createHelper(i);var o=r.RC4Drop=i.extend({cfg:i.cfg.extend({drop:192}),_doReset:function(){i._doReset.call(this);for(var t=this.cfg.drop;0>>24)|4278255360&(t[r]<<24|t[r]>>>8);var i=this._X=[t[0],t[3]<<16|t[2]>>>16,t[1],t[0]<<16|t[3]>>>16,t[2],t[1]<<16|t[0]>>>16,t[3],t[2]<<16|t[1]>>>16],n=this._C=[t[2]<<16|t[2]>>>16,4294901760&t[0]|65535&t[1],t[3]<<16|t[3]>>>16,4294901760&t[1]|65535&t[2],t[0]<<16|t[0]>>>16,4294901760&t[2]|65535&t[3],t[1]<<16|t[1]>>>16,4294901760&t[3]|65535&t[0]];for(r=this._b=0;r<4;r++)Rt.call(this);for(r=0;r<8;r++)n[r]^=i[r+4&7];if(e){var o=e.words,s=o[0],c=o[1],a=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),h=16711935&(c<<8|c>>>24)|4278255360&(c<<24|c>>>8),l=a>>>16|4294901760&h,f=h<<16|65535&a;n[0]^=a,n[1]^=l,n[2]^=h,n[3]^=f,n[4]^=a,n[5]^=l,n[6]^=h,n[7]^=f;for(r=0;r<4;r++)Rt.call(this)}},_doProcessBlock:function(t,e){var r=this._X;Rt.call(this),lt[0]=r[0]^r[5]>>>16^r[3]<<16,lt[1]=r[2]^r[7]>>>16^r[5]<<16,lt[2]=r[4]^r[1]>>>16^r[7]<<16,lt[3]=r[6]^r[3]>>>16^r[1]<<16;for(var i=0;i<4;i++)lt[i]=16711935&(lt[i]<<8|lt[i]>>>24)|4278255360&(lt[i]<<24|lt[i]>>>8),t[e+i]^=lt[i]},blockSize:4,ivSize:2}),ct.Rabbit=at._createHelper(ut),bt.mode.CTR=(pt=bt.lib.BlockCipherMode.extend(),_t=pt.Encryptor=pt.extend({processBlock:function(t,e){var r=this._cipher,i=r.blockSize,n=this._iv,o=this._counter;n&&(o=this._counter=n.slice(0),this._iv=void 0);var s=o.slice(0);r.encryptBlock(s,0),o[i-1]=o[i-1]+1|0;for(var c=0;c>>16,t[1],t[0]<<16|t[3]>>>16,t[2],t[1]<<16|t[0]>>>16,t[3],t[2]<<16|t[1]>>>16],i=this._C=[t[2]<<16|t[2]>>>16,4294901760&t[0]|65535&t[1],t[3]<<16|t[3]>>>16,4294901760&t[1]|65535&t[2],t[0]<<16|t[0]>>>16,4294901760&t[2]|65535&t[3],t[1]<<16|t[1]>>>16,4294901760&t[3]|65535&t[0]],n=this._b=0;n<4;n++)Mt.call(this);for(n=0;n<8;n++)i[n]^=r[n+4&7];if(e){var o=e.words,s=o[0],c=o[1],a=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),h=16711935&(c<<8|c>>>24)|4278255360&(c<<24|c>>>8),l=a>>>16|4294901760&h,f=h<<16|65535&a;i[0]^=a,i[1]^=l,i[2]^=h,i[3]^=f,i[4]^=a,i[5]^=l,i[6]^=h,i[7]^=f;for(n=0;n<4;n++)Mt.call(this)}},_doProcessBlock:function(t,e){var r=this._X;Mt.call(this),Bt[0]=r[0]^r[5]>>>16^r[3]<<16,Bt[1]=r[2]^r[7]>>>16^r[5]<<16,Bt[2]=r[4]^r[1]>>>16^r[7]<<16,Bt[3]=r[6]^r[3]>>>16^r[1]<<16;for(var i=0;i<4;i++)Bt[i]=16711935&(Bt[i]<<8|Bt[i]>>>24)|4278255360&(Bt[i]<<24|Bt[i]>>>8),t[e+i]^=Bt[i]},blockSize:4,ivSize:2}),vt.RabbitLegacy=yt._createHelper(St),bt.pad.ZeroPadding={pad:function(t,e){var r=4*e;t.clamp(),t.sigBytes+=r-(t.sigBytes%r||r)},unpad:function(t){var e=t.words,r=t.sigBytes-1;for(r=t.sigBytes-1;0<=r;r--)if(e[r>>>2]>>>24-r%4*8&255){t.sigBytes=r+1;break}}},bt}); --------------------------------------------------------------------------------