diff --git a/ios/Flutter/AppFrameworkInfo.plist b/ios/Flutter/AppFrameworkInfo.plist index 9367d483e..8d4492f97 100644 --- a/ios/Flutter/AppFrameworkInfo.plist +++ b/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 8.0 + 9.0 diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 7e14f0968..953dad47b 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -166,7 +166,7 @@ 97C146E61CF9000F007C117D /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 1020; + LastUpgradeCheck = 1300; ORGANIZATIONNAME = ""; TargetAttributes = { 97C146ED1CF9000F007C117D = { diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index a28140cfd..3db53b6e1 100644 --- a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@ { final _idController = TextEditingController(); var _updateUrl = ''; + var _menuPos; @override void initState() { super.initState(); nowCtx = context; - if (Platform.isAndroid) { + if (isAndroid) { Timer(Duration(seconds: 5), () { _updateUrl = FFI.getByName('software_update_url'); if (_updateUrl.isNotEmpty) setState(() {}); @@ -45,37 +43,45 @@ class _HomePageState extends State { appBar: AppBar( centerTitle: true, actions: [ - IconButton( - icon: Icon(Icons.more_vert), - onPressed: () { - () async { - var value = await showMenu( - context: context, - position: RelativeRect.fromLTRB(3000, 70, 3000, 70), - items: [ - PopupMenuItem( - child: Text(translate('ID Server')), - value: 'id_server'), - Platform.isAndroid - ? PopupMenuItem( - child: Text(translate('Share My Screen')), - value: 'server') - : null, - PopupMenuItem( - child: Text(translate('About') + ' RustDesk'), - value: 'about'), - ], - elevation: 8, - ); - if (value == 'id_server') { - showServer(context); - } else if (value == 'server') { - Navigator.pushNamed(context, "server_page"); - } else if (value == 'about') { - showAbout(context); - } - }(); - }) + Ink( + child: InkWell( + child: Padding( + padding: const EdgeInsets.all(12), + child: Icon(Icons.more_vert)), + onTapDown: (e) { + var x = e.globalPosition.dx; + var y = e.globalPosition.dy; + this._menuPos = RelativeRect.fromLTRB(x, y, x, y); + }, + onTap: () { + () async { + var value = await showMenu( + context: context, + position: this._menuPos, + items: [ + PopupMenuItem( + child: Text(translate('ID Server')), + value: 'server'), + isAndroid + ? PopupMenuItem( + child: Text(translate('Share My Screen')), + value: 'server') + : null, + PopupMenuItem( + child: Text(translate('About') + ' RustDesk'), + value: 'about'), + ], + elevation: 8, + ); + if (value == 'server') { + showServer(context); + } else if (value == 'server') { + Navigator.pushNamed(context, "server_page"); + } else if (value == 'about') { + showAbout(context); + } + }(); + })) ], title: Text(widget.title), ), @@ -104,6 +110,7 @@ class _HomePageState extends State { color: Colors.white, fontWeight: FontWeight.bold)))), getSearchBarUI(), + Container(height: 12), getPeers(), ]), )); @@ -136,13 +143,13 @@ class _HomePageState extends State { if (!FFI.ffiModel.initialized) { return Container(); } - return Padding( + var w = Padding( padding: const EdgeInsets.fromLTRB(16.0, 8.0, 16.0, 0.0), child: Container( height: 84, child: Padding( padding: const EdgeInsets.only(top: 8, bottom: 8), - child: Container( + child: Ink( decoration: BoxDecoration( color: MyTheme.white, borderRadius: const BorderRadius.only( @@ -166,7 +173,7 @@ class _HomePageState extends State { fontFamily: 'WorkSans', fontWeight: FontWeight.bold, fontSize: 30, - color: Color(0xFF00B6F0), + color: MyTheme.idColor, ), decoration: InputDecoration( labelText: translate('Remote ID'), @@ -175,13 +182,13 @@ class _HomePageState extends State { helperStyle: TextStyle( fontWeight: FontWeight.bold, fontSize: 16, - color: Color(0xFFB9BABC), + color: MyTheme.darkGray, ), labelStyle: TextStyle( fontWeight: FontWeight.w600, fontSize: 16, letterSpacing: 0.2, - color: Color(0xFFB9BABC), + color: MyTheme.darkGray, ), ), autofocus: _idController.text.isEmpty, @@ -194,7 +201,7 @@ class _HomePageState extends State { height: 60, child: IconButton( icon: Icon(Icons.arrow_forward, - color: Color(0xFFB9BABC), size: 45), + color: MyTheme.darkGray, size: 45), onPressed: onConnect, autofocus: _idController.text.isNotEmpty, ), @@ -205,6 +212,8 @@ class _HomePageState extends State { ), ), ); + return Center( + child: Container(constraints: BoxConstraints(maxWidth: 600), child: w)); } @override @@ -225,46 +234,75 @@ class _HomePageState extends State { if (!FFI.ffiModel.initialized) { return Container(); } + final size = MediaQuery.of(context).size; + final space = 8.0; + var width = size.width - 2 * space; + final minWidth = 320.0; + if (size.width > minWidth + 2 * space) { + final n = (size.width / (minWidth + 2 * space)).floor(); + width = size.width / n - 2 * space; + } final cards = []; var peers = FFI.peers(); peers.forEach((p) { - cards.add(Padding( - padding: EdgeInsets.symmetric(horizontal: 12), + cards.add(Container( + width: width, child: Card( child: GestureDetector( - onTap: () => connect('${p.id}'), + onTap: () => { + if (!isDesktop) {connect('${p.id}')} + }, + onDoubleTap: () => { + if (isDesktop) {connect('${p.id}')} + }, onLongPressStart: (details) { var x = details.globalPosition.dx; var y = details.globalPosition.dy; - () async { - var value = await showMenu( - context: context, - position: RelativeRect.fromLTRB(x, y, x, y), - items: [ - PopupMenuItem( - child: Text(translate('Remove')), - value: 'remove'), - ], - elevation: 8, - ); - if (value == 'remove') { - setState(() => FFI.setByName('remove', '${p.id}')); - () async { - removePreference(p.id); - }(); - } - }(); + this._menuPos = RelativeRect.fromLTRB(x, y, x, y); + this.showPeerMenu(context, p.id); }, child: ListTile( + contentPadding: const EdgeInsets.only(left: 12), subtitle: Text('${p.username}@${p.hostname}'), title: Text('${p.id}'), leading: Container( padding: const EdgeInsets.all(6), child: getPlatformImage('${p.platform}'), color: str2color('${p.id}${p.platform}', 0x7f)), + trailing: InkWell( + child: Padding( + padding: const EdgeInsets.all(12), + child: Icon(Icons.more_vert)), + onTapDown: (e) { + var x = e.globalPosition.dx; + var y = e.globalPosition.dy; + this._menuPos = RelativeRect.fromLTRB(x, y, x, y); + }, + onDoubleTap: () {}, + onTap: () { + showPeerMenu(context, p.id); + }), ))))); }); - return Wrap(children: cards); + return Wrap(children: cards, spacing: space, runSpacing: space); + } + + void showPeerMenu(BuildContext context, String id) async { + var value = await showMenu( + context: context, + position: this._menuPos, + items: [ + PopupMenuItem( + child: Text(translate('Remove')), value: 'remove'), + ], + elevation: 8, + ); + if (value == 'remove') { + setState(() => FFI.setByName('remove', '$id')); + () async { + removePreference(id); + }(); + } } } @@ -332,13 +370,13 @@ void showServer(BuildContext context) { formKey.currentState.save(); if (id != id0) FFI.setByName('option', - '{"name": "custom-rendezvous-server", "value": "${id}"}'); + '{"name": "custom-rendezvous-server", "value": "$id"}'); if (relay != relay0) FFI.setByName('option', - '{"name": "relay-server", "value": "${relay}"}'); + '{"name": "relay-server", "value": "$relay"}'); if (key != key0) FFI.setByName( - 'option', '{"name": "key", "value": "${key}"}'); + 'option', '{"name": "key", "value": "$key"}'); Navigator.pop(context); } }, @@ -349,13 +387,13 @@ void showServer(BuildContext context) { } Future showAbout(BuildContext context) async { - PackageInfo packageInfo = await PackageInfo.fromPlatform(); + var version = await FFI.getVersion(); showAlertDialog( context, (setState) => Tuple3( null, Wrap(direction: Axis.vertical, spacing: 12, children: [ - Text('Version: ${packageInfo.version}'), + Text('Version: $version'), InkWell( onTap: () async { const url = 'https://rustdesk.com/'; diff --git a/lib/main.dart b/lib/main.dart index ba8ffcb27..00b297b13 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,16 +1,11 @@ import 'package:flutter/material.dart'; -import 'package:flutter/services.dart'; -import 'package:flutter_hbb/server_page.dart'; import 'package:provider/provider.dart'; import 'package:firebase_analytics/firebase_analytics.dart'; import 'package:firebase_analytics/observer.dart'; import 'package:firebase_core/firebase_core.dart'; -import 'common.dart'; import 'model.dart'; import 'home_page.dart'; - -const toAndroidChannel = MethodChannel("mChannel"); -BuildContext nowCtx; +import 'server_page.dart'; Future main() async { WidgetsFlutterBinding.ensureInitialized(); @@ -20,7 +15,6 @@ Future main() async { } class App extends StatelessWidget { - @override Widget build(BuildContext context) { final analytics = FirebaseAnalytics(); @@ -40,7 +34,7 @@ class App extends StatelessWidget { ), home: HomePage(title: 'RustDesk'), routes: { - "server_page":(context) => ServerPage(), + "server_page": (context) => ServerPage(), }, navigatorObservers: [ FirebaseAnalyticsObserver(analytics: analytics), diff --git a/lib/model.dart b/lib/model.dart index 78041ea1d..52d4506e6 100644 --- a/lib/model.dart +++ b/lib/model.dart @@ -1,13 +1,6 @@ -import 'package:ffi/ffi.dart'; import 'package:flutter/services.dart'; -import 'package:flutter/gestures.dart'; -import 'package:path_provider/path_provider.dart'; import 'package:shared_preferences/shared_preferences.dart'; -import 'package:device_info/device_info.dart'; -import 'package:external_path/external_path.dart'; -import 'dart:io'; import 'dart:math'; -import 'dart:ffi'; import 'dart:convert'; import 'dart:typed_data'; import 'dart:ui' as ui; @@ -15,17 +8,7 @@ import 'package:flutter/material.dart'; import 'package:tuple/tuple.dart'; import 'dart:async'; import 'common.dart'; - -class RgbaFrame extends Struct { - @Uint32() - int len; - Pointer data; -} - -typedef F2 = Pointer Function(Pointer, Pointer); -typedef F3 = void Function(Pointer, Pointer); -typedef F4 = void Function(Pointer); -typedef F5 = Pointer Function(); +import 'native_model.dart' if (dart.library.html) 'web_model.dart'; class FfiModel with ChangeNotifier { PeerInfo _pi; @@ -33,6 +16,7 @@ class FfiModel with ChangeNotifier { var _decoding = false; bool _waitForImage; bool _initialized = false; + var _inputBlocked = false; final _permissions = Map(); bool _secure; bool _direct; @@ -48,12 +32,17 @@ class FfiModel with ChangeNotifier { get direct => _direct; get pi => _pi; + get inputBlocked => _inputBlocked; + + set inputBlocked(v) { + _inputBlocked = v; + } FfiModel() { Translator.call = translate; clear(); () async { - await FFI.init(); + await PlatformFFI.init(); _initialized = true; print("FFI initialized"); notifyListeners(); @@ -66,6 +55,7 @@ class FfiModel with ChangeNotifier { _permissions[k] = v == 'true'; }); print('$_permissions'); + notifyListeners(); } bool keyboard() => _permissions['keyboard'] != false; @@ -76,6 +66,7 @@ class FfiModel with ChangeNotifier { _waitForImage = false; _secure = null; _direct = null; + _inputBlocked = false; clearPermissions(); } @@ -101,6 +92,7 @@ class FfiModel with ChangeNotifier { } void clearPermissions() { + _inputBlocked = false; _permissions.clear(); } @@ -140,7 +132,7 @@ class FfiModel with ChangeNotifier { } if (pos != null) FFI.cursorModel.updateCursorPosition(pos); if (!_decoding) { - var rgba = FFI.getRgba(); + var rgba = PlatformFFI.getRgba(); if (rgba != null) { if (_waitForImage) { _waitForImage = false; @@ -151,7 +143,7 @@ class FfiModel with ChangeNotifier { ui.decodeImageFromPixels( rgba, _display.width, _display.height, ui.PixelFormat.bgra8888, (image) { - FFI.clearRgbaFrame(); + PlatformFFI.clearRgbaFrame(); _decoding = false; if (FFI.id != pid) return; try { @@ -198,7 +190,6 @@ class FfiModel with ChangeNotifier { } if (_pi.currentDisplay < _pi.displays.length) { _display = _pi.displays[_pi.currentDisplay]; - initializeCursorAndCanvas(); } if (displays.length > 0) { showLoading(translate('Connected, waiting for image...'), context); @@ -215,10 +206,15 @@ class ImageModel with ChangeNotifier { void update(ui.Image image) { if (_image == null && image != null) { - final size = MediaQueryData.fromWindow(ui.window).size; - final xscale = size.width / image.width; - final yscale = size.height / image.height; - FFI.canvasModel.scale = max(xscale, yscale); + if (isDesktop) { + FFI.canvasModel.updateViewStyle(); + } else { + final size = MediaQueryData.fromWindow(ui.window).size; + final xscale = size.width / image.width; + final yscale = size.height / image.height; + FFI.canvasModel.scale = max(xscale, yscale); + } + initializeCursorAndCanvas(); } _image = image; if (image != null) notifyListeners(); @@ -256,6 +252,29 @@ class CanvasModel with ChangeNotifier { double get scale => _scale; + void updateViewStyle() { + final s = FFI.getByName('peer_option', 'view-style'); + final size = MediaQueryData.fromWindow(ui.window).size; + final s1 = size.width / FFI.ffiModel.display.width; + final s2 = size.height / FFI.ffiModel.display.height; + if (s == 'shrink') { + final s = s1 < s2 ? s1 : s2; + if (s < 1) { + _scale = s; + } + } else if (s == 'stretch') { + final s = s1 > s2 ? s1 : s2; + if (s > 1) { + _scale = s; + } + } else { + _scale = 1; + } + _x = (size.width - FFI.ffiModel.display.width * _scale) / 2; + _y = (size.height - FFI.ffiModel.display.height * _scale) / 2; + notifyListeners(); + } + void update(double x, double y, double scale) { _x = x; _y = y; @@ -263,6 +282,26 @@ class CanvasModel with ChangeNotifier { notifyListeners(); } + void moveDesktopMouse(double x, double y) { + final size = MediaQueryData.fromWindow(ui.window).size; + final dw = FFI.ffiModel.display.width * _scale; + final dh = FFI.ffiModel.display.height * _scale; + var dxOffset = 0; + var dyOffset = 0; + if (dw > size.width) { + dxOffset = (x - dw * (x / size.width) - _x).toInt(); + } + if (dh > size.height) { + dyOffset = (y - dh * (y / size.height) - _y).toInt(); + } + _x += dxOffset; + _y += dyOffset; + if (dxOffset != 0 || dyOffset != 0) { + notifyListeners(); + } + FFI.cursorModel.move(x, y); + } + set scale(v) { _scale = v; notifyListeners(); @@ -274,8 +313,12 @@ class CanvasModel with ChangeNotifier { } void resetOffset() { - _x = 0; - _y = 0; + if (isDesktop) { + updateViewStyle(); + } else { + _x = 0; + _y = 0; + } notifyListeners(); } @@ -356,13 +399,17 @@ class CursorModel with ChangeNotifier { } void touch(double x, double y, bool right) { + move(x, y); + FFI.moveMouse(_x, _y); + FFI.tap(right); + } + + void move(double x, double y) { final scale = FFI.canvasModel.scale; final xoffset = FFI.canvasModel.x; final yoffset = FFI.canvasModel.y; _x = (x - xoffset) / scale + _displayOriginX; _y = (y - yoffset) / scale + _displayOriginY; - FFI.moveMouse(_x, _y); - FFI.tap(right); notifyListeners(); } @@ -558,7 +605,7 @@ class ServerModel with ChangeNotifier { bool get inputOk => _inputOk; // bool get needServerOpen => _needServerOpen; - + bool get isPeerStart => _isPeerStart; bool get isFileTransfer => _isFileTransfer; @@ -625,13 +672,6 @@ class ServerModel with ChangeNotifier { class FFI { static String id = ""; - static String _dir = ""; - static String _homeDir = ""; - static F2 _getByName; - static F3 _setByName; - static F4 _freeRgba; - static F5 _getRgba; - static Pointer _lastRgbaFrame; static var shift = false; static var ctrl = false; static var alt = false; @@ -640,6 +680,7 @@ class FFI { static final ffiModel = FfiModel(); static final cursorModel = CursorModel(); static final canvasModel = CanvasModel(); + static final serverModel = ServerModel(); static String getId() { return getByName('remote_id'); @@ -682,7 +723,8 @@ class FFI { static void inputKey(String name) { if (!ffiModel.keyboard()) return; - setByName('input_key', json.encode(modify({'name': name}))); + setByName( + 'input_key', json.encode(modify({'name': name, 'press': 'true'}))); } static void moveMouse(double x, double y) { @@ -711,19 +753,6 @@ class FFI { FFI.id = id; } - static void clearRgbaFrame() { - if (_lastRgbaFrame != null && _lastRgbaFrame != nullptr) - _freeRgba(_lastRgbaFrame); - } - - static Uint8List getRgba() { - if (_getRgba == null) return null; - _lastRgbaFrame = _getRgba(); - if (_lastRgbaFrame == null || _lastRgbaFrame == nullptr) return null; - final ref = _lastRgbaFrame.ref; - return Uint8List.sublistView(ref.data.asTypedList(ref.len)); - } - static Map popEvent() { var s = getByName('event'); if (s == '') return null; @@ -746,8 +775,10 @@ class FFI { } static void close() { - savePreference(id, cursorModel.x, cursorModel.y, canvasModel.x, - canvasModel.y, canvasModel.scale, ffiModel.pi.currentDisplay); + if (FFI.imageModel.image != null && !isDesktop) { + savePreference(id, cursorModel.x, cursorModel.y, canvasModel.x, + canvasModel.y, canvasModel.scale, ffiModel.pi.currentDisplay); + } id = ""; setByName('close', ''); imageModel.update(null); @@ -757,63 +788,86 @@ class FFI { resetModifiers(); } - static void setByName(String name, [String value = '']) { - if (_setByName == null) return; - var a = name.toNativeUtf8(); - var b = value.toNativeUtf8(); - _setByName(a, b); - calloc.free(a); - calloc.free(b); - } - static String getByName(String name, [String arg = '']) { - if (_getByName == null) return ''; - var a = name.toNativeUtf8(); - var b = arg.toNativeUtf8(); - var p = _getByName(a, b); - assert(p != nullptr && p != null); - var res = p.toDartString(); - calloc.free(p); - calloc.free(a); - calloc.free(b); - return res; + return PlatformFFI.getByName(name, arg); } - static Future init() async { - final dylib = Platform.isAndroid - ? DynamicLibrary.open('librustdesk.so') - : DynamicLibrary.process(); - print('initializing FFI'); - try { - _getByName = dylib.lookupFunction('get_by_name'); - _setByName = - dylib.lookupFunction, Pointer), F3>( - 'set_by_name'); - _freeRgba = dylib - .lookupFunction), F4>('free_rgba'); - _getRgba = dylib.lookupFunction('get_rgba'); - _dir = (await getApplicationDocumentsDirectory()).path; - _homeDir = (await ExternalPath.getExternalStorageDirectories())[0]; - String id = 'NA'; - String name = 'Flutter'; - DeviceInfoPlugin deviceInfo = DeviceInfoPlugin(); - if (Platform.isAndroid) { - AndroidDeviceInfo androidInfo = await deviceInfo.androidInfo; - name = '${androidInfo.brand}-${androidInfo.model}'; - id = androidInfo.id.hashCode.toString(); - } else { - IosDeviceInfo iosInfo = await deviceInfo.iosInfo; - name = iosInfo.utsname.machine; - id = iosInfo.identifierForVendor.hashCode.toString(); - } - debugPrint("info1-id:$id,info2-name:$name,dir:$_dir,homeDir:$_homeDir"); - setByName('info1', id); - setByName('info2', name); - setByName('home_dir',_homeDir); - setByName('init', _dir); - } catch (e) { - print(e); + static void setByName(String name, [String value = '']) { + PlatformFFI.setByName(name, value); + } + + static Future getVersion() async { + return await PlatformFFI.getVersion(); + } + + static handleMouse(Map evt) { + var type = ''; + var isMove = false; + switch (evt['type']) { + case 'mousedown': + type = 'down'; + break; + case 'mouseup': + type = 'up'; + break; + case 'mousemove': + isMove = true; + break; + default: + return; } + evt['type'] = type; + var x = evt['x']; + var y = evt['y']; + if (isMove) { + FFI.canvasModel.moveDesktopMouse(x, y); + } + final d = FFI.ffiModel.display; + x -= FFI.canvasModel.x; + y -= FFI.canvasModel.y; + if (!isMove && (x < 0 || x > d.width || y < 0 || y > d.height)) { + return; + } + x /= FFI.canvasModel.scale; + y /= FFI.canvasModel.scale; + x += d.x; + y += d.y; + if (type != '') { + x = 0; + y = 0; + } + evt['x'] = '$x'; + evt['y'] = '$y'; + var buttons = ''; + switch (evt['buttons']) { + case 1: + buttons = 'left'; + break; + case 2: + buttons = 'right'; + break; + case 4: + buttons = 'wheel'; + break; + } + evt['buttons'] = buttons; + setByName('send_mouse', json.encode(evt)); + } + + static listenToMouse(bool yesOrNo) { + if (yesOrNo) { + PlatformFFI.startDesktopWebListener(handleMouse); + } else { + PlatformFFI.stopDesktopWebListener(); + } + } + + static void setMethodCallHandler(FMethod callback) { + PlatformFFI.setMethodCallHandler(callback); + } + + static Future invokeMethod(String method) async { + return await PlatformFFI.invokeMethod(method); } } @@ -861,6 +915,7 @@ void savePreference(String id, double xCursor, double yCursor, double xCanvas, } Future> getPreference(String id) async { + if (!isDesktop) return null; SharedPreferences prefs = await SharedPreferences.getInstance(); var p = prefs.getString('peer' + id); if (p == null) return null; @@ -894,33 +949,11 @@ void initializeCursorAndCanvas() async { FFI.canvasModel.update(xCanvas, yCanvas, scale); } -final locale = Platform.localeName; -final bool isCn = - locale.startsWith('zh') && (locale.endsWith('CN') || locale.endsWith('SG')); - -final langs = >{ - 'cn': { - 'Remote ID': '远程ID', - 'Paste': '粘贴', - 'Are you sure to close the connection?': '是否确认关闭连接?', - 'Download new version': '下载新版本', - 'Touch mode': '触屏模式', - 'Reset canvas': '重置画布', - }, - 'en': {} -}; - String translate(String name) { - if (name.startsWith('Failed') && name.contains(':')) { + if (name.startsWith('Failed to') && name.contains(': ')) { return name.split(': ').map((x) => translate(x)).join(': '); } - final tmp = isCn ? langs['cn'] : langs['en']; - final v = tmp[name]; - if (v == null) { - var a = 'translate'; - var b = '{"locale": "${Platform.localeName}", "text": "${name}"}'; - return FFI.getByName(a, b); - } else { - return v; - } + var a = 'translate'; + var b = '{"locale": "$localeName", "text": "$name"}'; + return FFI.getByName(a, b); } diff --git a/lib/native_model.dart b/lib/native_model.dart new file mode 100644 index 000000000..b26df8470 --- /dev/null +++ b/lib/native_model.dart @@ -0,0 +1,128 @@ +import 'dart:io'; +import 'dart:typed_data'; +import 'dart:ffi'; +import 'package:ffi/ffi.dart'; +import 'package:path_provider/path_provider.dart'; +import 'package:device_info/device_info.dart'; +import 'package:package_info/package_info.dart'; +import 'package:external_path/external_path.dart'; +import 'package:flutter/services.dart'; +import 'common.dart'; + +class RgbaFrame extends Struct { + @Uint32() + int len; + Pointer data; +} + +typedef F2 = Pointer Function(Pointer, Pointer); +typedef F3 = void Function(Pointer, Pointer); +typedef F4 = void Function(Pointer); +typedef F5 = Pointer Function(); + +class PlatformFFI { + static Pointer _lastRgbaFrame; + static String _dir = ''; + static String _homeDir = ''; + static F2 _getByName; + static F3 _setByName; + static F4 _freeRgba; + static F5 _getRgba; + + static void clearRgbaFrame() { + if (_lastRgbaFrame != null && _lastRgbaFrame != nullptr) + _freeRgba(_lastRgbaFrame); + } + + static Uint8List getRgba() { + if (_getRgba == null) return null; + _lastRgbaFrame = _getRgba(); + if (_lastRgbaFrame == null || _lastRgbaFrame == nullptr) return null; + final ref = _lastRgbaFrame.ref; + return Uint8List.sublistView(ref.data.asTypedList(ref.len)); + } + + static Future getVersion() async { + PackageInfo packageInfo = await PackageInfo.fromPlatform(); + return packageInfo.version; + } + + static String getByName(String name, [String arg = '']) { + if (_getByName == null) return ''; + var a = name.toNativeUtf8(); + var b = arg.toNativeUtf8(); + var p = _getByName(a, b); + assert(p != nullptr && p != null); + var res = p.toDartString(); + calloc.free(p); + calloc.free(a); + calloc.free(b); + return res; + } + + static void setByName(String name, [String value = '']) { + if (_setByName == null) return; + var a = name.toNativeUtf8(); + var b = value.toNativeUtf8(); + _setByName(a, b); + calloc.free(a); + calloc.free(b); + } + + static Future init() async { + isIOS = Platform.isIOS; + isAndroid = Platform.isAndroid; + final dylib = Platform.isAndroid + ? DynamicLibrary.open('librustdesk.so') + : DynamicLibrary.process(); + print('initializing FFI'); + try { + _getByName = dylib.lookupFunction('get_by_name'); + _setByName = + dylib.lookupFunction, Pointer), F3>( + 'set_by_name'); + _freeRgba = dylib + .lookupFunction), F4>('free_rgba'); + _getRgba = dylib.lookupFunction('get_rgba'); + _dir = (await getApplicationDocumentsDirectory()).path; + _homeDir = (await ExternalPath.getExternalStorageDirectories())[0]; + String id = 'NA'; + String name = 'Flutter'; + DeviceInfoPlugin deviceInfo = DeviceInfoPlugin(); + if (Platform.isAndroid) { + AndroidDeviceInfo androidInfo = await deviceInfo.androidInfo; + name = '${androidInfo.brand}-${androidInfo.model}'; + id = androidInfo.id.hashCode.toString(); + } else { + IosDeviceInfo iosInfo = await deviceInfo.iosInfo; + name = iosInfo.utsname.machine; + id = iosInfo.identifierForVendor.hashCode.toString(); + } + print("info1-id:$id,info2-name:$name,dir:$_dir,homeDir:$_homeDir"); + setByName('info1', id); + setByName('info2', name); + setByName('home_dir', _homeDir); + setByName('init', _dir); + } catch (e) { + print(e); + } + } + + static void startDesktopWebListener( + Function(Map) handleMouse) {} + static void stopDesktopWebListener() {} + + static void setMethodCallHandler(FMethod callback) { + toAndroidChannel.setMethodCallHandler((call) async { + callback(call.method, call.arguments); + return null; + }); + } + + static invokeMethod(String method) async { + return await toAndroidChannel.invokeMethod(method); + } +} + +final localeName = Platform.localeName; +final toAndroidChannel = MethodChannel("mChannel"); diff --git a/lib/remote_page.dart b/lib/remote_page.dart index 5fdaac60e..ede3a8105 100644 --- a/lib/remote_page.dart +++ b/lib/remote_page.dart @@ -8,7 +8,6 @@ import 'package:tuple/tuple.dart'; import 'package:wakelock/wakelock.dart'; import 'common.dart'; import 'model.dart'; -import 'dart:io'; final initText = '\1' * 1024; @@ -24,7 +23,7 @@ class RemotePage extends StatefulWidget { class _RemotePageState extends State { Timer _interval; Timer _timer; - bool _showBar = true; + bool _showBar = !isDesktop; double _bottom = 0; String _value = ''; double _xOffset = 0; @@ -79,7 +78,8 @@ class _RemotePageState extends State { return _bottom >= 100; } - void interval() { + // crash on web before widgit initiated. + void intervalUnsafe() { var v = MediaQuery.of(context).viewInsets.bottom; if (v != _bottom) { resetTool(); @@ -93,6 +93,12 @@ class _RemotePageState extends State { FFI.ffiModel.update(widget.id, context, handleMsgbox); } + void interval() { + try { + intervalUnsafe(); + } catch (e) {} + } + void handleMsgbox(Map evt, String id) { var type = evt['type']; var title = evt['title']; @@ -103,6 +109,7 @@ class _RemotePageState extends State { enterPasswordDialog(id, context); } else { var hasRetry = evt['hasRetry'] == 'true'; + print(evt); showMsgBox(type, title, text, hasRetry); } } @@ -124,7 +131,7 @@ class _RemotePageState extends State { void handleInput(String newValue) { var oldValue = _value; _value = newValue; - if (Platform.isIOS) { + if (isIOS) { var i = newValue.length - 1; for (; i >= 0 && newValue[i] != '\1'; --i) {} var j = oldValue.length - 1; @@ -236,6 +243,7 @@ class _RemotePageState extends State { return false; }, child: Scaffold( + // resizeToAvoidBottomInset: true, floatingActionButton: !showActionButton ? null : FloatingActionButton( @@ -252,175 +260,218 @@ class _RemotePageState extends State { } }); }), - bottomNavigationBar: _showBar && pi.displays != null - ? BottomAppBar( - elevation: 10, - color: MyTheme.accent, - child: Row( - mainAxisSize: MainAxisSize.max, - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Row(children: [ - IconButton( - color: Colors.white, - icon: Icon(Icons.clear), - onPressed: () { - close(); - }, - ), - IconButton( - color: Colors.white, - icon: Icon(Icons.keyboard), - onPressed: openKeyboard), - IconButton( - color: Colors.white, - icon: Icon(Icons.tv), - onPressed: () { - setState(() => _showEdit = false); - showOptions(context); - }, - ), - Container( - color: _mouseTools ? Colors.blue[500] : null, - child: IconButton( - color: Colors.white, - icon: Icon(Icons.mouse), - onPressed: () { - setState(() { - _mouseTools = !_mouseTools; - resetTool(); - if (_mouseTools) _drag = true; - }); - }, - )), - IconButton( - color: Colors.white, - icon: Icon(Icons.more_vert), - onPressed: () { - setState(() => _showEdit = false); - showActions(context); - }, - ), - ]), - IconButton( - color: Colors.white, - icon: Icon(Icons.expand_more), - onPressed: () { - setState(() => _showBar = !_showBar); - }), - ], - ), - ) - : null, + bottomNavigationBar: + _showBar && pi.displays != null ? getBottomAppBar() : null, body: FlutterEasyLoading( child: Container( color: Colors.black, - child: SafeArea( - child: GestureDetector( - onLongPress: () { - if (_drag || _scroll) return; - // make right click and real left long click both work - // should add "long press = right click" option? - FFI.sendMouse('down', 'left'); - FFI.tap(true); - }, - onLongPressUp: () { - FFI.sendMouse('up', 'left'); - }, - onTapUp: (details) { - if (_drag || _scroll) return; - if (_touchMode) { - FFI.cursorModel.touch(details.localPosition.dx, - details.localPosition.dy, _right); - } else { - FFI.tap(_right); - } - }, - onScaleStart: (details) { - _scale = 1; - _xOffset = details.focalPoint.dx; - _yOffset = _yOffset0 = details.focalPoint.dy; - if (_drag) { - FFI.sendMouse('down', 'left'); - } - }, - onScaleUpdate: (details) { - var scale = details.scale; - if (scale == 1) { - if (!_scroll) { - var x = details.focalPoint.dx; - var y = details.focalPoint.dy; - var dx = x - _xOffset; - var dy = y - _yOffset; - FFI.cursorModel - .updatePan(dx, dy, _touchMode, _drag); - _xOffset = x; - _yOffset = y; - } else { - _xOffset = details.focalPoint.dx; - _yOffset = details.focalPoint.dy; - } - } else if (!_drag && !_scroll) { - FFI.canvasModel.updateScale(scale / _scale); - _scale = scale; - } - }, - onScaleEnd: (details) { - if (_drag) { - FFI.sendMouse('up', 'left'); - setState(resetMouse); - } else if (_scroll) { - var dy = (_yOffset - _yOffset0) / 10; - if (dy.abs() > 0.1) { - if (dy > 0 && dy < 1) dy = 1; - if (dy < 0 && dy > -1) dy = -1; - FFI.scroll(dy); - } - } - }, - child: Container( - color: MyTheme.canvasColor, - child: Stack(children: [ - ImagePaint(), - CursorPaint(), - getHelpTools(), - SizedBox( - width: 0, - height: 0, - child: !_showEdit - ? Container() - : TextFormField( - textInputAction: - TextInputAction.newline, - autocorrect: false, - enableSuggestions: false, - focusNode: _focusNode, - maxLines: null, - initialValue: - _value, // trick way to make backspace work always - keyboardType: TextInputType.multiline, - onChanged: handleInput, - ), - ), - ]))))), + child: isDesktop + ? getBodyForDesktopWithListener() + : SafeArea(child: getBodyForMobileWithGuesture())), )), ); } + Widget getBottomAppBar() { + return BottomAppBar( + elevation: 10, + color: MyTheme.accent, + child: Row( + mainAxisSize: MainAxisSize.max, + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row( + children: [ + IconButton( + color: Colors.white, + icon: Icon(Icons.clear), + onPressed: () { + close(); + }, + ) + ] + + (isDesktop + ? [] + : [ + IconButton( + color: Colors.white, + icon: Icon(Icons.keyboard), + onPressed: openKeyboard) + ]) + + [ + IconButton( + color: Colors.white, + icon: Icon(Icons.tv), + onPressed: () { + setState(() => _showEdit = false); + showOptions(context); + }, + ) + ] + + (isDesktop + ? [] + : [ + Container( + color: _mouseTools ? Colors.blue[500] : null, + child: IconButton( + color: Colors.white, + icon: Icon(Icons.mouse), + onPressed: () { + setState(() { + _mouseTools = !_mouseTools; + resetTool(); + if (_mouseTools) _drag = true; + }); + }, + )) + ]) + + [ + IconButton( + color: Colors.white, + icon: Icon(Icons.more_vert), + onPressed: () { + setState(() => _showEdit = false); + showActions(context); + }, + ), + ]), + IconButton( + color: Colors.white, + icon: Icon(Icons.expand_more), + onPressed: () { + setState(() => _showBar = !_showBar); + }), + ], + ), + ); + } + + Widget getBodyForMobileWithGuesture() { + return GestureDetector( + onLongPress: () { + if (_drag || _scroll) return; + // make right click and real left long click both work + // should add "long press = right click" option? + FFI.sendMouse('down', 'left'); + FFI.tap(true); + }, + onLongPressUp: () { + FFI.sendMouse('up', 'left'); + }, + onTapUp: (details) { + if (_drag || _scroll) return; + if (_touchMode) { + FFI.cursorModel.touch( + details.localPosition.dx, details.localPosition.dy, _right); + } else { + FFI.tap(_right); + } + }, + onScaleStart: (details) { + _scale = 1; + _xOffset = details.focalPoint.dx; + _yOffset = _yOffset0 = details.focalPoint.dy; + if (_drag) { + FFI.sendMouse('down', 'left'); + } + }, + onScaleUpdate: (details) { + var scale = details.scale; + if (scale == 1) { + if (!_scroll) { + var x = details.focalPoint.dx; + var y = details.focalPoint.dy; + var dx = x - _xOffset; + var dy = y - _yOffset; + FFI.cursorModel.updatePan(dx, dy, _touchMode, _drag); + _xOffset = x; + _yOffset = y; + } else { + _xOffset = details.focalPoint.dx; + _yOffset = details.focalPoint.dy; + } + } else if (!_drag && !_scroll) { + FFI.canvasModel.updateScale(scale / _scale); + _scale = scale; + } + }, + onScaleEnd: (details) { + if (_drag) { + FFI.sendMouse('up', 'left'); + setState(resetMouse); + } else if (_scroll) { + var dy = (_yOffset - _yOffset0) / 10; + if (dy.abs() > 0.1) { + if (dy > 0 && dy < 1) dy = 1; + if (dy < 0 && dy > -1) dy = -1; + FFI.scroll(dy); + } + } + }, + child: getBodyForMobile()); + } + + Widget getBodyForMobile() { + return Container( + color: MyTheme.canvasColor, + child: Stack(children: [ + ImagePaint(), + CursorPaint(), + getHelpTools(), + SizedBox( + width: 0, + height: 0, + child: !_showEdit + ? Container() + : TextFormField( + textInputAction: TextInputAction.newline, + autocorrect: false, + enableSuggestions: false, + focusNode: _focusNode, + maxLines: null, + initialValue: + _value, // trick way to make backspace work always + keyboardType: TextInputType.multiline, + onChanged: handleInput, + ), + ), + ])); + } + + Widget getBodyForDesktopWithListener() { + final keyboard = FFI.ffiModel.permissions['keyboard'] != false; + var paints = [ImagePaint()]; + if (keyboard || + FFI.getByName('toggle-option', 'show-remote-cursor') == 'true') { + paints.add(CursorPaint()); + } + return MouseRegion( + cursor: keyboard + ? SystemMouseCursors.none + : null, // still laggy, set cursor directly for web is better + onEnter: (event) { + print('enter'); + FFI.listenToMouse(true); + }, + onExit: (event) { + print('exit'); + FFI.listenToMouse(false); + }, + child: Container( + color: MyTheme.canvasColor, child: Stack(children: paints))); + } + void showActions(BuildContext context) { final size = MediaQuery.of(context).size; final x = 120.0; final y = size.height; final more = >[]; - if (FFI.ffiModel.pi.version.isNotEmpty) { + final pi = FFI.ffiModel.pi; + final perms = FFI.ffiModel.permissions; + if (pi.version.isNotEmpty) { more.add(PopupMenuItem( child: Text(translate('Refresh')), value: 'refresh')); } - if (FFI.ffiModel.permissions['keyboard'] != false && - FFI.ffiModel.permissions['clipboard'] != false) { - more.add(PopupMenuItem( - child: Text(translate('Paste')), value: 'paste')); - } more.add(PopupMenuItem( child: Row( children: ([ @@ -435,38 +486,57 @@ class _RemotePageState extends State { ) ])), value: 'enter_os_password')); - more.add(PopupMenuItem( - child: Row( - children: ([ - Container(width: 100.0, child: Text(translate('Touch mode'))), - Padding(padding: EdgeInsets.symmetric(horizontal: 16.0)), - Icon( - _touchMode - ? Icons.check_box_outlined - : Icons.check_box_outline_blank, - color: MyTheme.accent) - ])), - value: 'touch_mode')); - more.add(PopupMenuItem( - child: Text(translate('Reset canvas')), value: 'reset_canvas')); + if (!isDesktop) { + if (perms['keyboard'] != false && perms['clipboard'] != false) { + more.add(PopupMenuItem( + child: Text(translate('Paste')), value: 'paste')); + } + more.add(PopupMenuItem( + child: Row( + children: ([ + Container(width: 100.0, child: Text(translate('Touch mode'))), + Padding(padding: EdgeInsets.symmetric(horizontal: 16.0)), + Icon( + _touchMode + ? Icons.check_box_outlined + : Icons.check_box_outline_blank, + color: MyTheme.accent) + ])), + value: 'touch_mode')); + more.add(PopupMenuItem( + child: Text(translate('Reset canvas')), value: 'reset_canvas')); + } + if (perms['keyboard'] != false) { + if (pi.platform == 'Linux' || pi.sasEnabled) { + more.add(PopupMenuItem( + child: Text(translate('Insert') + ' Ctrl + Alt + Del'), + value: 'cad')); + } + more.add(PopupMenuItem( + child: Text(translate('Insert Lock')), value: 'lock')); + if (pi.platform == 'Windows' && + FFI.getByName('toggle_option', 'privacy-mode') != 'true') { + more.add(PopupMenuItem( + child: Text(translate( + (FFI.ffiModel.inputBlocked ? 'Unb' : 'B') + 'lock user input')), + value: 'block-input')); + } + } () async { var value = await showMenu( context: context, position: RelativeRect.fromLTRB(x, y, x, y), - items: [ - PopupMenuItem( - child: Text(translate('Insert') + ' Ctrl + Alt + Del'), - value: 'cad'), - PopupMenuItem( - child: Text(translate('Insert Lock')), value: 'lock'), - ] + - more, + items: more, elevation: 8, ); if (value == 'cad') { FFI.setByName('ctrl_alt_del'); } else if (value == 'lock') { FFI.setByName('lock_screen'); + } else if (value == 'block-input') { + FFI.setByName('toggle_option', + (FFI.ffiModel.inputBlocked ? 'un' : '') + 'block-inpu'); + FFI.ffiModel.inputBlocked = !FFI.ffiModel.inputBlocked; } else if (value == 'refresh') { FFI.setByName('refresh'); } else if (value == 'paste') { @@ -486,7 +556,7 @@ class _RemotePageState extends State { } else if (value == 'touch_mode') { _touchMode = !_touchMode; final v = _touchMode ? 'Y' : ''; - FFI.setByName('peer_option', '{"name": "touch-mode", "value": "${v}"}'); + FFI.setByName('peer_option', '{"name": "touch-mode", "value": "$v"}'); } else if (value == 'reset_canvas') { FFI.cursorModel.reset(); } @@ -790,9 +860,36 @@ void wrongPasswordDialog(String id, BuildContext context) { ])); } +CheckboxListTile getToggle( + void Function(void Function()) setState, option, name) { + return CheckboxListTile( + value: FFI.getByName('toggle_option', option) == 'true', + onChanged: (v) { + setState(() { + FFI.setByName('toggle_option', option); + }); + }, + dense: true, + title: Text(translate(name))); +} + +RadioListTile getRadio(String name, String toValue, String curValue, + void Function(String) onChange) { + return RadioListTile( + controlAffinity: ListTileControlAffinity.trailing, + title: Text(translate(name)), + value: toValue, + groupValue: curValue, + onChanged: onChange, + dense: true, + ); +} + void showOptions(BuildContext context) { String quality = FFI.getByName('image_quality'); if (quality == '') quality = 'balanced'; + String viewStyle = FFI.getByName('peer_option', 'view-style'); + if (viewStyle == '') viewStyle = 'original'; var displays = []; final pi = FFI.ffiModel.pi; final image = FFI.ffiModel.getConnectionImage(); @@ -829,82 +926,57 @@ void showOptions(BuildContext context) { if (displays.isNotEmpty) { displays.add(Divider(color: MyTheme.border)); } + final perms = FFI.ffiModel.permissions; showAlertDialog(context, (setState) { final more = []; - if (FFI.ffiModel.permissions['audio'] != false) { - more.add(CheckboxListTile( - value: FFI.getByName('toggle_option', 'disable-audio') == 'true', - onChanged: (v) { - setState(() { - FFI.setByName('toggle_option', 'disable-audio'); - }); - }, - title: Text(translate('Mute')))); + if (perms['audio'] != false) { + more.add(getToggle(setState, 'disable-audio', 'Mute')); } - if (FFI.ffiModel.permissions['keyboard'] != false) { - more.add(CheckboxListTile( - value: FFI.getByName('toggle_option', 'lock-after-session-end') == - 'true', - onChanged: (v) { - setState(() { - FFI.setByName('toggle_option', 'lock-after-session-end'); - }); - }, - title: Text(translate('Lock after session end')))); + if (perms['keyboard'] != false) { + if (perms['clipboard'] != false) + more.add(getToggle(setState, 'disable-clipboard', 'Disable clipboard')); + more.add(getToggle( + setState, 'lock-after-session-end', 'Lock after session end')); + if (pi.platform == 'Windows') { + more.add(getToggle(setState, 'privacy-mode', 'Privacy mode')); + } } + var setQuality = (String value) { + setState(() { + quality = value; + FFI.setByName('image_quality', value); + }); + }; + var setViewStyle = (String value) { + setState(() { + viewStyle = value; + FFI.setByName( + 'peer_option', '{"name": "view-style", "value": "$value"}'); + FFI.canvasModel.updateViewStyle(); + }); + }; return Tuple3( null, Column( mainAxisSize: MainAxisSize.min, children: displays + + (isDesktop + ? [ + getRadio( + 'Original', 'original', viewStyle, setViewStyle), + getRadio('Shrink', 'shrink', viewStyle, setViewStyle), + getRadio('Stretch', 'stretch', viewStyle, setViewStyle), + Divider(color: MyTheme.border), + ] + : {}) + [ - RadioListTile( - controlAffinity: ListTileControlAffinity.trailing, - title: Text(translate('Good image quality')), - value: 'best', - groupValue: quality, - onChanged: (String value) { - setState(() { - quality = value; - FFI.setByName('image_quality', value); - }); - }, - ), - RadioListTile( - controlAffinity: ListTileControlAffinity.trailing, - title: Text(translate('Balanced')), - value: 'balanced', - groupValue: quality, - onChanged: (String value) { - setState(() { - quality = value; - FFI.setByName('image_quality', value); - }); - }, - ), - RadioListTile( - controlAffinity: ListTileControlAffinity.trailing, - title: Text(translate('Optimize reaction time')), - value: 'low', - groupValue: quality, - onChanged: (String value) { - setState(() { - quality = value; - FFI.setByName('image_quality', value); - }); - }, - ), + getRadio('Good image quality', 'best', quality, setQuality), + getRadio('Balanced', 'balanced', quality, setQuality), + getRadio( + 'Optimize reaction time', 'low', quality, setQuality), Divider(color: MyTheme.border), - CheckboxListTile( - value: FFI.getByName( - 'toggle_option', 'show-remote-cursor') == - 'true', - onChanged: (v) { - setState(() { - FFI.setByName('toggle_option', 'show-remote-cursor'); - }); - }, - title: Text(translate('Show remote cursor'))), + getToggle( + setState, 'show-remote-cursor', 'Show remote cursor'), ] + more), null); @@ -948,7 +1020,7 @@ void showSetOSPassword(BuildContext context, bool login) { onPressed: () { var text = controller.text.trim(); FFI.setByName('peer_option', - '{"name": "os-password", "value": "${text}"}'); + '{"name": "os-password", "value": "$text"}'); FFI.setByName('peer_option', '{"name": "auto-login", "value": "${autoLogin ? 'Y' : ''}"}'); if (text != "" && login) { diff --git a/lib/server_page.dart b/lib/server_page.dart index 63e4f2c65..39ffbfc25 100644 --- a/lib/server_page.dart +++ b/lib/server_page.dart @@ -4,16 +4,14 @@ import 'package:flutter_hbb/model.dart'; import 'package:provider/provider.dart'; import 'common.dart'; -import 'main.dart'; +import 'model.dart'; class ServerPage extends StatelessWidget { - static final serverModel = ServerModel(); - @override Widget build(BuildContext context) { checkService(); return ChangeNotifierProvider.value( - value: serverModel, + value: FFI.serverModel, child: Scaffold( backgroundColor: MyTheme.grayBg, appBar: AppBar( @@ -57,8 +55,8 @@ class ServerPage extends StatelessWidget { void checkService() { // 检测当前服务状态,若已存在服务则异步更新数据回来 - toAndroidChannel.invokeMethod("check_service"); // jvm - ServerPage.serverModel.updateClientState(); + FFI.invokeMethod("check_service"); // jvm + FFI.serverModel.updateClientState(); } class ServerInfo extends StatefulWidget { @@ -74,14 +72,13 @@ class _ServerInfoState extends State { var _serverPasswd = TextEditingController(text: ""); static const _emptyIdShow = "正在获取ID..."; - @override void initState() { super.initState(); var id = FFI.getByName("server_id"); - _serverId.text = id==""?_emptyIdShow:id; + _serverId.text = id == "" ? _emptyIdShow : id; _serverPasswd.text = FFI.getByName("server_password"); - if(_serverId.text == _emptyIdShow || _serverPasswd.text == ""){ + if (_serverId.text == _emptyIdShow || _serverPasswd.text == "") { fetchConfigAgain(); } } @@ -132,19 +129,21 @@ class _ServerInfoState extends State { ], )); } - fetchConfigAgain()async{ + + fetchConfigAgain() async { FFI.setByName("start_service"); var count = 0; const maxCount = 10; - while(count { BuildContext loginReqAlertCtx; -void showLoginReqAlert(BuildContext context, String peerID, String name)async { +void showLoginReqAlert(BuildContext context, String peerID, String name) async { debugPrint("got try_start_without_auth"); await showDialog( context: context, @@ -205,10 +204,10 @@ void showLoginReqAlert(BuildContext context, String peerID, String name)async { child: Text("接受"), onPressed: () { FFI.setByName("login_res", "true"); - if (!ServerPage.serverModel.isFileTransfer) { + if (!FFI.serverModel.isFileTransfer) { _toAndroidStartCapture(); } - ServerPage.serverModel.setPeer(true); + FFI.serverModel.setPeer(true); Navigator.of(alertContext).pop(); }), TextButton( @@ -224,10 +223,10 @@ void showLoginReqAlert(BuildContext context, String peerID, String name)async { loginReqAlertCtx = null; } -clearLoginReqAlert(){ - if (loginReqAlertCtx!=null){ +clearLoginReqAlert() { + if (loginReqAlertCtx != null) { Navigator.of(loginReqAlertCtx).pop(); - ServerPage.serverModel.updateClientState(); + FFI.serverModel.updateClientState(); } } @@ -321,31 +320,73 @@ Widget myCard(Widget child) { } Future _toAndroidInitService() async { - bool res = await toAndroidChannel.invokeMethod("init_service"); + bool res = await FFI.invokeMethod("init_service"); FFI.setByName("start_service"); debugPrint("_toAndroidInitService:$res"); } Future _toAndroidStartCapture() async { - bool res = await toAndroidChannel.invokeMethod("start_capture"); + bool res = await FFI.invokeMethod("start_capture"); debugPrint("_toAndroidStartCapture:$res"); } // Future _toAndroidStopCapture() async { -// bool res = await toAndroidChannel.invokeMethod("stop_capture"); +// bool res = await FFI.invokeMethod("stop_capture"); // debugPrint("_toAndroidStopCapture:$res"); // } Future _toAndroidStopService() async { FFI.setByName("close_conn"); - ServerPage.serverModel.setPeer(false); + FFI.serverModel.setPeer(false); - bool res = await toAndroidChannel.invokeMethod("stop_service"); + bool res = await FFI.invokeMethod("stop_service"); FFI.setByName("stop_service"); debugPrint("_toAndroidStopSer:$res"); } Future _toAndroidInitInput() async { - bool res = await toAndroidChannel.invokeMethod("init_input"); + bool res = await FFI.invokeMethod("init_input"); debugPrint("_toAndroidInitInput:$res"); } + +void toAndroidChannelInit() { + FFI.setMethodCallHandler((method, arguments) { + debugPrint("flutter got android msg"); + try { + switch (method) { + case "try_start_without_auth": + { + FFI.serverModel.updateClientState(); + debugPrint( + "pre show loginAlert:${FFI.serverModel.isFileTransfer.toString()}"); + showLoginReqAlert( + nowCtx, FFI.serverModel.peerID, FFI.serverModel.peerName); + debugPrint("from jvm:try_start_without_auth done"); + break; + } + case "start_capture": + { + clearLoginReqAlert(); + FFI.serverModel.updateClientState(); + break; + } + case "stop_capture": + { + FFI.serverModel.setPeer(false); + break; + } + case "on_permission_changed": + { + var name = arguments["name"] as String; + var value = arguments["value"] as String == "true"; + debugPrint("from jvm:on_permission_changed,$name:$value"); + FFI.serverModel.changeStatue(name, value); + break; + } + } + } catch (e) { + debugPrint("MethodCallHandler err:$e"); + } + return ""; + }); +} diff --git a/lib/web_model.dart b/lib/web_model.dart new file mode 100644 index 000000000..9deff35f5 --- /dev/null +++ b/lib/web_model.dart @@ -0,0 +1,175 @@ +import 'dart:typed_data'; +import 'dart:js' as js; +import 'package:flutter/cupertino.dart'; +import 'dart:convert'; + +import 'common.dart'; +import 'dart:html'; +import 'dart:async'; + +final List> mouseListeners = []; +final List> keyListeners = []; +int lastMouseDownButtons = 0; +bool mouseIn = false; + +class PlatformFFI { + static void clearRgbaFrame() {} + + static Uint8List getRgba() { + return js.context.callMethod('getRgba'); + } + + static Future getVersion() async { + return getByName('version'); + } + + static String getByName(String name, [String arg = '']) { + return js.context.callMethod('getByName', [name, arg]); + } + + static void setByName(String name, [String value = '']) { + js.context.callMethod('setByName', [name, value]); + } + + static Future init() async { + isWeb = true; + isDesktop = !js.context.callMethod('isMobile'); + js.context.callMethod('init'); + } + + // MouseRegion onHover not work for mouse move when right button down + static void startDesktopWebListener( + Function(Map) handleMouse) { + mouseIn = true; + lastMouseDownButtons = 0; + // document.body.getElementsByTagName('flt-glass-pane')[0].style.cursor = 'none'; + mouseListeners + .add(window.document.onMouseEnter.listen((evt) => mouseIn = true)); + mouseListeners + .add(window.document.onMouseLeave.listen((evt) => mouseIn = false)); + mouseListeners.add(window.document.onMouseMove + .listen((evt) => handleMouse(getEvent(evt)))); + mouseListeners.add(window.document.onMouseDown + .listen((evt) => handleMouse(getEvent(evt)))); + mouseListeners.add( + window.document.onMouseUp.listen((evt) => handleMouse(getEvent(evt)))); + mouseListeners.add(window.document.onMouseWheel.listen((evt) { + var dx = evt.deltaX; + var dy = evt.deltaY; + if (dx > 0) + dx = -1; + else if (dx < 0) dx = 1; + if (dy > 0) + dy = -1; + else if (dy < 0) dy = 1; + setByName('send_mouse', '{"type": "wheel", "x": "$dx", "y": "$dy"}'); + })); + mouseListeners.add( + window.document.onContextMenu.listen((evt) => evt.preventDefault())); + keyListeners + .add(window.document.onKeyDown.listen((evt) => handleKey(evt, true))); + keyListeners + .add(window.document.onKeyUp.listen((evt) => handleKey(evt, false))); + } + + static void stopDesktopWebListener() { + mouseIn = true; + mouseListeners.forEach((l) { + l.cancel(); + }); + mouseListeners.clear(); + keyListeners.forEach((l) { + l.cancel(); + }); + keyListeners.clear(); + } + + static void setMethodCallHandler(FMethod callback) {} + + static Future invokeMethod(String method) async { + return true; + } +} + +Map getEvent(MouseEvent evt) { + // https://github.com/novnc/noVNC/blob/679b45fa3b453c7cf32f4b4455f4814818ecf161/core/rfb.js + // https://developer.mozilla.org/zh-CN/docs/Web/API/Element/mousedown_event + final Map out = {}; + out['type'] = evt.type; + out['x'] = evt.client.x; + out['y'] = evt.client.y; + if (evt.altKey) out['alt'] = 'true'; + if (evt.shiftKey) out['shift'] = 'true'; + if (evt.ctrlKey) out['ctrl'] = 'true'; + if (evt.metaKey) out['command'] = 'true'; + out['buttons'] = evt + .buttons; // left button: 1, right button: 2, middle button: 4, 1 | 2 = 3 (left + right) + if (evt.buttons != 0) { + lastMouseDownButtons = evt.buttons; + } else { + out['buttons'] = lastMouseDownButtons; + } + return out; +} + +void handleKey(KeyboardEvent evt, bool down) { + if (!mouseIn) return; + evt.stopPropagation(); + evt.preventDefault(); + evt.stopImmediatePropagation(); + print('${evt.code} ${evt.key} ${evt.location}'); + final out = {}; + var name = ctrlKeyMap[evt.code]; + if (name == null) { + if (evt.code == evt.key) { + name = evt.code; + } else { + name = evt.key; + if (name.toLowerCase() != name.toUpperCase() && + name == name.toUpperCase()) { + if (!evt.shiftKey) out['shift'] = 'true'; + } + } + } + out['name'] = name; + if (evt.altKey) out['alt'] = 'true'; + if (evt.shiftKey) out['shift'] = 'true'; + if (evt.ctrlKey) out['ctrl'] = 'true'; + if (evt.metaKey) out['command'] = 'true'; + if (down) out['down'] = 'true'; + PlatformFFI.setByName('input_key', json.encode(out)); +} + +final localeName = window.navigator.language; + +final ctrlKeyMap = { + 'AltLeft': 'Alt', + 'AltRight': 'RAlt', + 'ShiftLeft': 'Shift', + 'ShiftRight': 'RShift', + 'ControlLeft': 'Control', + 'ControlRight': 'RControl', + 'MetaLeft': 'Meta', + 'MetaRight': 'RWin', + 'ContextMenu': 'Apps', + 'ArrowUp': 'UpArrow', + 'ArrowDown': 'DownArrow', + 'ArrowLeft': 'LeftArrow', + 'ArrowRight': 'RightArrow', + 'NumpadDecimal': 'Decimal', + 'NumpadDivide': 'Divide', + 'NumpadMultiply': 'Multiply', + 'NumpadSubtract': 'Subtract', + 'NumpadAdd': 'Add', + 'NumpadEnter': 'NumpadEnter', + 'Enter': 'Return', + 'Space': 'Space', + 'NumpadClear': 'Clear', + 'NumpadBackspace': 'Backspace', + 'PrintScreen': 'Snapshot', + 'HangulMode': 'Hangul', + 'HanjaMode': 'Hanja', + 'KanaMode': 'Kana', + 'JunjaMode': 'Junja', + 'KanjiMode': 'Hanja', +}; diff --git a/pubspec.lock b/pubspec.lock index 6ec8f7ba5..7452fac78 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -7,14 +7,14 @@ packages: name: archive url: "https://pub.dartlang.org" source: hosted - version: "3.1.2" + version: "3.1.11" args: dependency: transitive description: name: args url: "https://pub.dartlang.org" source: hosted - version: "2.2.0" + version: "2.3.0" async: dependency: transitive description: @@ -70,14 +70,14 @@ packages: name: cupertino_icons url: "https://pub.dartlang.org" source: hosted - version: "1.0.3" + version: "1.0.4" device_info: dependency: "direct main" description: name: device_info url: "https://pub.dartlang.org" source: hosted - version: "2.0.2" + version: "2.0.3" device_info_platform_interface: dependency: transitive description: @@ -119,14 +119,14 @@ packages: name: firebase url: "https://pub.dartlang.org" source: hosted - version: "9.0.1" + version: "9.0.2" firebase_analytics: dependency: "direct main" description: name: firebase_analytics url: "https://pub.dartlang.org" source: hosted - version: "8.2.0" + version: "8.3.4" firebase_analytics_platform_interface: dependency: transitive description: @@ -147,21 +147,21 @@ packages: name: firebase_core url: "https://pub.dartlang.org" source: hosted - version: "1.4.0" + version: "1.12.0" firebase_core_platform_interface: dependency: transitive description: name: firebase_core_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "4.0.1" + version: "4.2.4" firebase_core_web: dependency: transitive description: name: firebase_core_web url: "https://pub.dartlang.org" source: hosted - version: "1.1.0" + version: "1.5.4" flutter: dependency: "direct main" description: flutter @@ -182,7 +182,7 @@ packages: name: flutter_launcher_icons url: "https://pub.dartlang.org" source: hosted - version: "0.9.1" + version: "0.9.2" flutter_spinkit: dependency: transitive description: @@ -206,7 +206,7 @@ packages: name: http url: "https://pub.dartlang.org" source: hosted - version: "0.13.3" + version: "0.13.4" http_parser: dependency: transitive description: @@ -220,7 +220,7 @@ packages: name: image url: "https://pub.dartlang.org" source: hosted - version: "3.0.2" + version: "3.1.1" js: dependency: transitive description: @@ -235,6 +235,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.12.11" + material_color_utilities: + dependency: transitive + description: + name: material_color_utilities + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.3" meta: dependency: transitive description: @@ -269,70 +276,77 @@ packages: name: path_provider url: "https://pub.dartlang.org" source: hosted - version: "2.0.2" + version: "2.0.8" + path_provider_android: + dependency: transitive + description: + name: path_provider_android + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.11" + path_provider_ios: + dependency: transitive + description: + name: path_provider_ios + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.7" path_provider_linux: dependency: transitive description: name: path_provider_linux url: "https://pub.dartlang.org" source: hosted - version: "2.0.2" + version: "2.1.5" path_provider_macos: dependency: transitive description: name: path_provider_macos url: "https://pub.dartlang.org" source: hosted - version: "2.0.2" + version: "2.0.5" path_provider_platform_interface: dependency: transitive description: name: path_provider_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "2.0.1" + version: "2.0.3" path_provider_windows: dependency: transitive description: name: path_provider_windows url: "https://pub.dartlang.org" source: hosted - version: "2.0.3" - pedantic: - dependency: transitive - description: - name: pedantic - url: "https://pub.dartlang.org" - source: hosted - version: "1.11.1" + version: "2.0.5" petitparser: dependency: transitive description: name: petitparser url: "https://pub.dartlang.org" source: hosted - version: "4.1.0" + version: "4.4.0" platform: dependency: transitive description: name: platform url: "https://pub.dartlang.org" source: hosted - version: "3.0.0" + version: "3.1.0" plugin_platform_interface: dependency: transitive description: name: plugin_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "2.0.1" + version: "2.1.2" process: dependency: transitive description: name: process url: "https://pub.dartlang.org" source: hosted - version: "4.2.3" + version: "4.2.4" provider: dependency: "direct main" description: @@ -346,21 +360,35 @@ packages: name: quiver url: "https://pub.dartlang.org" source: hosted - version: "3.0.1" + version: "3.0.1+1" shared_preferences: dependency: "direct main" description: name: shared_preferences url: "https://pub.dartlang.org" source: hosted - version: "2.0.6" + version: "2.0.13" + shared_preferences_android: + dependency: transitive + description: + name: shared_preferences_android + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.10" + shared_preferences_ios: + dependency: transitive + description: + name: shared_preferences_ios + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.9" shared_preferences_linux: dependency: transitive description: name: shared_preferences_linux url: "https://pub.dartlang.org" source: hosted - version: "2.0.2" + version: "2.0.4" shared_preferences_macos: dependency: transitive description: @@ -381,14 +409,14 @@ packages: name: shared_preferences_web url: "https://pub.dartlang.org" source: hosted - version: "2.0.1" + version: "2.0.3" shared_preferences_windows: dependency: transitive description: name: shared_preferences_windows url: "https://pub.dartlang.org" source: hosted - version: "2.0.2" + version: "2.0.4" sky_engine: dependency: transitive description: flutter @@ -435,7 +463,7 @@ packages: name: test_api url: "https://pub.dartlang.org" source: hosted - version: "0.4.3" + version: "0.4.8" tuple: dependency: "direct main" description: @@ -456,42 +484,56 @@ packages: name: url_launcher url: "https://pub.dartlang.org" source: hosted - version: "6.0.9" + version: "6.0.18" + url_launcher_android: + dependency: transitive + description: + name: url_launcher_android + url: "https://pub.dartlang.org" + source: hosted + version: "6.0.15" + url_launcher_ios: + dependency: transitive + description: + name: url_launcher_ios + url: "https://pub.dartlang.org" + source: hosted + version: "6.0.15" url_launcher_linux: dependency: transitive description: name: url_launcher_linux url: "https://pub.dartlang.org" source: hosted - version: "2.0.1" + version: "2.0.3" url_launcher_macos: dependency: transitive description: name: url_launcher_macos url: "https://pub.dartlang.org" source: hosted - version: "2.0.1" + version: "2.0.3" url_launcher_platform_interface: dependency: transitive description: name: url_launcher_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "2.0.4" + version: "2.0.5" url_launcher_web: dependency: transitive description: name: url_launcher_web url: "https://pub.dartlang.org" source: hosted - version: "2.0.2" + version: "2.0.8" url_launcher_windows: dependency: transitive description: name: url_launcher_windows url: "https://pub.dartlang.org" source: hosted - version: "2.0.1" + version: "2.0.2" vector_math: dependency: transitive description: @@ -505,56 +547,56 @@ packages: name: wakelock url: "https://pub.dartlang.org" source: hosted - version: "0.5.2" + version: "0.5.6" wakelock_macos: dependency: transitive description: name: wakelock_macos url: "https://pub.dartlang.org" source: hosted - version: "0.1.0+1" + version: "0.4.0" wakelock_platform_interface: dependency: transitive description: name: wakelock_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "0.2.1+1" + version: "0.3.0" wakelock_web: dependency: transitive description: name: wakelock_web url: "https://pub.dartlang.org" source: hosted - version: "0.2.0+1" + version: "0.4.0" wakelock_windows: dependency: transitive description: name: wakelock_windows url: "https://pub.dartlang.org" source: hosted - version: "0.1.0" + version: "0.2.0" win32: dependency: transitive description: name: win32 url: "https://pub.dartlang.org" source: hosted - version: "2.2.5" + version: "2.3.11" xdg_directories: dependency: transitive description: name: xdg_directories url: "https://pub.dartlang.org" source: hosted - version: "0.2.0" + version: "0.2.0+1" xml: dependency: transitive description: name: xml url: "https://pub.dartlang.org" source: hosted - version: "5.1.2" + version: "5.3.1" yaml: dependency: transitive description: @@ -563,5 +605,5 @@ packages: source: hosted version: "3.1.0" sdks: - dart: ">=2.14.0 <3.0.0" - flutter: ">=2.0.0" + dart: ">=2.15.0 <3.0.0" + flutter: ">=2.10.0" diff --git a/web/assets/favicon.71be6127.svg b/web/assets/favicon.71be6127.svg new file mode 100644 index 000000000..0234ca69e --- /dev/null +++ b/web/assets/favicon.71be6127.svg @@ -0,0 +1 @@ + diff --git a/web/assets/index.06d14ce2.css b/web/assets/index.06d14ce2.css new file mode 100644 index 000000000..cd286ab04 --- /dev/null +++ b/web/assets/index.06d14ce2.css @@ -0,0 +1 @@ +#app{font-family:Avenir,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-align:center;color:#2c3e50;margin-top:60px} diff --git a/web/assets/index.b043e392.js b/web/assets/index.b043e392.js new file mode 100644 index 000000000..a33164206 --- /dev/null +++ b/web/assets/index.b043e392.js @@ -0,0 +1,21 @@ +var Hi=Object.defineProperty;var Gi=(e,r,i)=>r in e?Hi(e,r,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[r]=i;var _=(e,r,i)=>(Gi(e,typeof r!="symbol"?r+"":r,i),i);import{m as a,l as Me,s as Zi,Q as Yi,a as Ki,b as fr,P as Qi}from"./vendor.b7bb6fa2.js";const Xi=function(){const r=document.createElement("link").relList;if(r&&r.supports&&r.supports("modulepreload"))return;for(const n of document.querySelectorAll('link[rel="modulepreload"]'))t(n);new MutationObserver(n=>{for(const o of n)if(o.type==="childList")for(const u of o.addedNodes)u.tagName==="LINK"&&u.rel==="modulepreload"&&t(u)}).observe(document,{childList:!0,subtree:!0});function i(n){const o={};return n.integrity&&(o.integrity=n.integrity),n.referrerpolicy&&(o.referrerPolicy=n.referrerpolicy),n.crossorigin==="use-credentials"?o.credentials="include":n.crossorigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function t(n){if(n.ep)return;n.ep=!0;const o=i(n);fetch(n.href,o)}};Xi();var k;(function(e){e[e.Unknown=0]="Unknown",e[e.Alt=1]="Alt",e[e.Backspace=2]="Backspace",e[e.CapsLock=3]="CapsLock",e[e.Control=4]="Control",e[e.Delete=5]="Delete",e[e.DownArrow=6]="DownArrow",e[e.End=7]="End",e[e.Escape=8]="Escape",e[e.F1=9]="F1",e[e.F10=10]="F10",e[e.F11=11]="F11",e[e.F12=12]="F12",e[e.F2=13]="F2",e[e.F3=14]="F3",e[e.F4=15]="F4",e[e.F5=16]="F5",e[e.F6=17]="F6",e[e.F7=18]="F7",e[e.F8=19]="F8",e[e.F9=20]="F9",e[e.Home=21]="Home",e[e.LeftArrow=22]="LeftArrow",e[e.Meta=23]="Meta",e[e.Option=24]="Option",e[e.PageDown=25]="PageDown",e[e.PageUp=26]="PageUp",e[e.Return=27]="Return",e[e.RightArrow=28]="RightArrow",e[e.Shift=29]="Shift",e[e.Space=30]="Space",e[e.Tab=31]="Tab",e[e.UpArrow=32]="UpArrow",e[e.Numpad0=33]="Numpad0",e[e.Numpad1=34]="Numpad1",e[e.Numpad2=35]="Numpad2",e[e.Numpad3=36]="Numpad3",e[e.Numpad4=37]="Numpad4",e[e.Numpad5=38]="Numpad5",e[e.Numpad6=39]="Numpad6",e[e.Numpad7=40]="Numpad7",e[e.Numpad8=41]="Numpad8",e[e.Numpad9=42]="Numpad9",e[e.Cancel=43]="Cancel",e[e.Clear=44]="Clear",e[e.Menu=45]="Menu",e[e.Pause=46]="Pause",e[e.Kana=47]="Kana",e[e.Hangul=48]="Hangul",e[e.Junja=49]="Junja",e[e.Final=50]="Final",e[e.Hanja=51]="Hanja",e[e.Kanji=52]="Kanji",e[e.Convert=53]="Convert",e[e.Select=54]="Select",e[e.Print=55]="Print",e[e.Execute=56]="Execute",e[e.Snapshot=57]="Snapshot",e[e.Insert=58]="Insert",e[e.Help=59]="Help",e[e.Sleep=60]="Sleep",e[e.Separator=61]="Separator",e[e.Scroll=62]="Scroll",e[e.NumLock=63]="NumLock",e[e.RWin=64]="RWin",e[e.Apps=65]="Apps",e[e.Multiply=66]="Multiply",e[e.Add=67]="Add",e[e.Subtract=68]="Subtract",e[e.Decimal=69]="Decimal",e[e.Divide=70]="Divide",e[e.Equals=71]="Equals",e[e.NumpadEnter=72]="NumpadEnter",e[e.RShift=73]="RShift",e[e.RControl=74]="RControl",e[e.RAlt=75]="RAlt",e[e.CtrlAltDel=100]="CtrlAltDel",e[e.LockScreen=101]="LockScreen",e[e.UNRECOGNIZED=-1]="UNRECOGNIZED"})(k||(k={}));function ge(e){switch(e){case 0:case"Unknown":return 0;case 1:case"Alt":return 1;case 2:case"Backspace":return 2;case 3:case"CapsLock":return 3;case 4:case"Control":return 4;case 5:case"Delete":return 5;case 6:case"DownArrow":return 6;case 7:case"End":return 7;case 8:case"Escape":return 8;case 9:case"F1":return 9;case 10:case"F10":return 10;case 11:case"F11":return 11;case 12:case"F12":return 12;case 13:case"F2":return 13;case 14:case"F3":return 14;case 15:case"F4":return 15;case 16:case"F5":return 16;case 17:case"F6":return 17;case 18:case"F7":return 18;case 19:case"F8":return 19;case 20:case"F9":return 20;case 21:case"Home":return 21;case 22:case"LeftArrow":return 22;case 23:case"Meta":return 23;case 24:case"Option":return 24;case 25:case"PageDown":return 25;case 26:case"PageUp":return 26;case 27:case"Return":return 27;case 28:case"RightArrow":return 28;case 29:case"Shift":return 29;case 30:case"Space":return 30;case 31:case"Tab":return 31;case 32:case"UpArrow":return 32;case 33:case"Numpad0":return 33;case 34:case"Numpad1":return 34;case 35:case"Numpad2":return 35;case 36:case"Numpad3":return 36;case 37:case"Numpad4":return 37;case 38:case"Numpad5":return 38;case 39:case"Numpad6":return 39;case 40:case"Numpad7":return 40;case 41:case"Numpad8":return 41;case 42:case"Numpad9":return 42;case 43:case"Cancel":return 43;case 44:case"Clear":return 44;case 45:case"Menu":return 45;case 46:case"Pause":return 46;case 47:case"Kana":return 47;case 48:case"Hangul":return 48;case 49:case"Junja":return 49;case 50:case"Final":return 50;case 51:case"Hanja":return 51;case 52:case"Kanji":return 52;case 53:case"Convert":return 53;case 54:case"Select":return 54;case 55:case"Print":return 55;case 56:case"Execute":return 56;case 57:case"Snapshot":return 57;case 58:case"Insert":return 58;case 59:case"Help":return 59;case 60:case"Sleep":return 60;case 61:case"Separator":return 61;case 62:case"Scroll":return 62;case 63:case"NumLock":return 63;case 64:case"RWin":return 64;case 65:case"Apps":return 65;case 66:case"Multiply":return 66;case 67:case"Add":return 67;case 68:case"Subtract":return 68;case 69:case"Decimal":return 69;case 70:case"Divide":return 70;case 71:case"Equals":return 71;case 72:case"NumpadEnter":return 72;case 73:case"RShift":return 73;case 74:case"RControl":return 74;case 75:case"RAlt":return 75;case 100:case"CtrlAltDel":return 100;case 101:case"LockScreen":return 101;case-1:case"UNRECOGNIZED":default:return-1}}function Ye(e){switch(e){case 0:return"Unknown";case 1:return"Alt";case 2:return"Backspace";case 3:return"CapsLock";case 4:return"Control";case 5:return"Delete";case 6:return"DownArrow";case 7:return"End";case 8:return"Escape";case 9:return"F1";case 10:return"F10";case 11:return"F11";case 12:return"F12";case 13:return"F2";case 14:return"F3";case 15:return"F4";case 16:return"F5";case 17:return"F6";case 18:return"F7";case 19:return"F8";case 20:return"F9";case 21:return"Home";case 22:return"LeftArrow";case 23:return"Meta";case 24:return"Option";case 25:return"PageDown";case 26:return"PageUp";case 27:return"Return";case 28:return"RightArrow";case 29:return"Shift";case 30:return"Space";case 31:return"Tab";case 32:return"UpArrow";case 33:return"Numpad0";case 34:return"Numpad1";case 35:return"Numpad2";case 36:return"Numpad3";case 37:return"Numpad4";case 38:return"Numpad5";case 39:return"Numpad6";case 40:return"Numpad7";case 41:return"Numpad8";case 42:return"Numpad9";case 43:return"Cancel";case 44:return"Clear";case 45:return"Menu";case 46:return"Pause";case 47:return"Kana";case 48:return"Hangul";case 49:return"Junja";case 50:return"Final";case 51:return"Hanja";case 52:return"Kanji";case 53:return"Convert";case 54:return"Select";case 55:return"Print";case 56:return"Execute";case 57:return"Snapshot";case 58:return"Insert";case 59:return"Help";case 60:return"Sleep";case 61:return"Separator";case 62:return"Scroll";case 63:return"NumLock";case 64:return"RWin";case 65:return"Apps";case 66:return"Multiply";case 67:return"Add";case 68:return"Subtract";case 69:return"Decimal";case 70:return"Divide";case 71:return"Equals";case 72:return"NumpadEnter";case 73:return"RShift";case 74:return"RControl";case 75:return"RAlt";case 100:return"CtrlAltDel";case 101:return"LockScreen";default:return"UNKNOWN"}}var vr;(function(e){e[e.Dir=0]="Dir",e[e.DirLink=2]="DirLink",e[e.DirDrive=3]="DirDrive",e[e.File=4]="File",e[e.FileLink=5]="FileLink",e[e.UNRECOGNIZED=-1]="UNRECOGNIZED"})(vr||(vr={}));function $i(e){switch(e){case 0:case"Dir":return 0;case 2:case"DirLink":return 2;case 3:case"DirDrive":return 3;case 4:case"File":return 4;case 5:case"FileLink":return 5;case-1:case"UNRECOGNIZED":default:return-1}}function ji(e){switch(e){case 0:return"Dir";case 2:return"DirLink";case 3:return"DirDrive";case 4:return"File";case 5:return"FileLink";default:return"UNKNOWN"}}var L;(function(e){e[e.NotSet=0]="NotSet",e[e.Low=2]="Low",e[e.Balanced=3]="Balanced",e[e.Best=4]="Best",e[e.UNRECOGNIZED=-1]="UNRECOGNIZED"})(L||(L={}));function en(e){switch(e){case 0:case"NotSet":return 0;case 2:case"Low":return 2;case 3:case"Balanced":return 3;case 4:case"Best":return 4;case-1:case"UNRECOGNIZED":default:return-1}}function rn(e){switch(e){case 0:return"NotSet";case 2:return"Low";case 3:return"Balanced";case 4:return"Best";default:return"UNKNOWN"}}var V;(function(e){e[e.Keyboard=0]="Keyboard",e[e.Clipboard=2]="Clipboard",e[e.Audio=3]="Audio",e[e.UNRECOGNIZED=-1]="UNRECOGNIZED"})(V||(V={}));function nn(e){switch(e){case 0:case"Keyboard":return 0;case 2:case"Clipboard":return 2;case 3:case"Audio":return 3;case-1:case"UNRECOGNIZED":default:return-1}}function tn(e){switch(e){case 0:return"Keyboard";case 2:return"Clipboard";case 3:return"Audio";default:return"UNKNOWN"}}var R;(function(e){e[e.NotSet=0]="NotSet",e[e.No=1]="No",e[e.Yes=2]="Yes",e[e.UNRECOGNIZED=-1]="UNRECOGNIZED"})(R||(R={}));function P(e){switch(e){case 0:case"NotSet":return 0;case 1:case"No":return 1;case 2:case"Yes":return 2;case-1:case"UNRECOGNIZED":default:return-1}}function x(e){switch(e){case 0:return"NotSet";case 1:return"No";case 2:return"Yes";default:return"UNKNOWN"}}function hr(){return{data:new Uint8Array,key:!1,pts:0}}const z={encode(e,r=a.Writer.create()){return e.data.length!==0&&r.uint32(10).bytes(e.data),e.key===!0&&r.uint32(16).bool(e.key),e.pts!==0&&r.uint32(24).int64(e.pts),r},decode(e,r){const i=e instanceof a.Reader?e:new a.Reader(e);let t=r===void 0?i.len:i.pos+r;const n=hr();for(;i.pos>>3){case 1:n.data=i.bytes();break;case 2:n.key=i.bool();break;case 3:n.pts=T(i.int64());break;default:i.skipType(o&7);break}}return n},fromJSON(e){return{data:s(e.data)?A(e.data):new Uint8Array,key:s(e.key)?Boolean(e.key):!1,pts:s(e.pts)?Number(e.pts):0}},toJSON(e){const r={};return e.data!==void 0&&(r.data=F(e.data!==void 0?e.data:new Uint8Array)),e.key!==void 0&&(r.key=e.key),e.pts!==void 0&&(r.pts=Math.round(e.pts)),r},fromPartial(e){var i,t,n;const r=hr();return r.data=(i=e.data)!=null?i:new Uint8Array,r.key=(t=e.key)!=null?t:!1,r.pts=(n=e.pts)!=null?n:0,r}};function yr(){return{frames:[]}}const W={encode(e,r=a.Writer.create()){for(const i of e.frames)z.encode(i,r.uint32(10).fork()).ldelim();return r},decode(e,r){const i=e instanceof a.Reader?e:new a.Reader(e);let t=r===void 0?i.len:i.pos+r;const n=yr();for(;i.pos>>3){case 1:n.frames.push(z.decode(i,i.uint32()));break;default:i.skipType(o&7);break}}return n},fromJSON(e){return{frames:Array.isArray(e==null?void 0:e.frames)?e.frames.map(r=>z.fromJSON(r)):[]}},toJSON(e){const r={};return e.frames?r.frames=e.frames.map(i=>i?z.toJSON(i):void 0):r.frames=[],r},fromPartial(e){var i;const r=yr();return r.frames=((i=e.frames)==null?void 0:i.map(t=>z.fromPartial(t)))||[],r}};function kr(){return{compress:!1}}const H={encode(e,r=a.Writer.create()){return e.compress===!0&&r.uint32(8).bool(e.compress),r},decode(e,r){const i=e instanceof a.Reader?e:new a.Reader(e);let t=r===void 0?i.len:i.pos+r;const n=kr();for(;i.pos>>3){case 1:n.compress=i.bool();break;default:i.skipType(o&7);break}}return n},fromJSON(e){return{compress:s(e.compress)?Boolean(e.compress):!1}},toJSON(e){const r={};return e.compress!==void 0&&(r.compress=e.compress),r},fromPartial(e){var i;const r=kr();return r.compress=(i=e.compress)!=null?i:!1,r}};function mr(){return{compress:!1,stride:0}}const G={encode(e,r=a.Writer.create()){return e.compress===!0&&r.uint32(8).bool(e.compress),e.stride!==0&&r.uint32(16).int32(e.stride),r},decode(e,r){const i=e instanceof a.Reader?e:new a.Reader(e);let t=r===void 0?i.len:i.pos+r;const n=mr();for(;i.pos>>3){case 1:n.compress=i.bool();break;case 2:n.stride=i.int32();break;default:i.skipType(o&7);break}}return n},fromJSON(e){return{compress:s(e.compress)?Boolean(e.compress):!1,stride:s(e.stride)?Number(e.stride):0}},toJSON(e){const r={};return e.compress!==void 0&&(r.compress=e.compress),e.stride!==void 0&&(r.stride=Math.round(e.stride)),r},fromPartial(e){var i,t;const r=mr();return r.compress=(i=e.compress)!=null?i:!1,r.stride=(t=e.stride)!=null?t:0,r}};function Er(){return{vp9s:void 0,rgb:void 0,yuv:void 0}}const Z={encode(e,r=a.Writer.create()){return e.vp9s!==void 0&&W.encode(e.vp9s,r.uint32(50).fork()).ldelim(),e.rgb!==void 0&&H.encode(e.rgb,r.uint32(58).fork()).ldelim(),e.yuv!==void 0&&G.encode(e.yuv,r.uint32(66).fork()).ldelim(),r},decode(e,r){const i=e instanceof a.Reader?e:new a.Reader(e);let t=r===void 0?i.len:i.pos+r;const n=Er();for(;i.pos>>3){case 6:n.vp9s=W.decode(i,i.uint32());break;case 7:n.rgb=H.decode(i,i.uint32());break;case 8:n.yuv=G.decode(i,i.uint32());break;default:i.skipType(o&7);break}}return n},fromJSON(e){return{vp9s:s(e.vp9s)?W.fromJSON(e.vp9s):void 0,rgb:s(e.rgb)?H.fromJSON(e.rgb):void 0,yuv:s(e.yuv)?G.fromJSON(e.yuv):void 0}},toJSON(e){const r={};return e.vp9s!==void 0&&(r.vp9s=e.vp9s?W.toJSON(e.vp9s):void 0),e.rgb!==void 0&&(r.rgb=e.rgb?H.toJSON(e.rgb):void 0),e.yuv!==void 0&&(r.yuv=e.yuv?G.toJSON(e.yuv):void 0),r},fromPartial(e){const r=Er();return r.vp9s=e.vp9s!==void 0&&e.vp9s!==null?W.fromPartial(e.vp9s):void 0,r.rgb=e.rgb!==void 0&&e.rgb!==null?H.fromPartial(e.rgb):void 0,r.yuv=e.yuv!==void 0&&e.yuv!==null?G.fromPartial(e.yuv):void 0,r}};function Sr(){return{x:0,y:0,width:0,height:0,name:"",online:!1}}const Y={encode(e,r=a.Writer.create()){return e.x!==0&&r.uint32(8).sint32(e.x),e.y!==0&&r.uint32(16).sint32(e.y),e.width!==0&&r.uint32(24).int32(e.width),e.height!==0&&r.uint32(32).int32(e.height),e.name!==""&&r.uint32(42).string(e.name),e.online===!0&&r.uint32(48).bool(e.online),r},decode(e,r){const i=e instanceof a.Reader?e:new a.Reader(e);let t=r===void 0?i.len:i.pos+r;const n=Sr();for(;i.pos>>3){case 1:n.x=i.sint32();break;case 2:n.y=i.sint32();break;case 3:n.width=i.int32();break;case 4:n.height=i.int32();break;case 5:n.name=i.string();break;case 6:n.online=i.bool();break;default:i.skipType(o&7);break}}return n},fromJSON(e){return{x:s(e.x)?Number(e.x):0,y:s(e.y)?Number(e.y):0,width:s(e.width)?Number(e.width):0,height:s(e.height)?Number(e.height):0,name:s(e.name)?String(e.name):"",online:s(e.online)?Boolean(e.online):!1}},toJSON(e){const r={};return e.x!==void 0&&(r.x=Math.round(e.x)),e.y!==void 0&&(r.y=Math.round(e.y)),e.width!==void 0&&(r.width=Math.round(e.width)),e.height!==void 0&&(r.height=Math.round(e.height)),e.name!==void 0&&(r.name=e.name),e.online!==void 0&&(r.online=e.online),r},fromPartial(e){var i,t,n,o,u,c;const r=Sr();return r.x=(i=e.x)!=null?i:0,r.y=(t=e.y)!=null?t:0,r.width=(n=e.width)!=null?n:0,r.height=(o=e.height)!=null?o:0,r.name=(u=e.name)!=null?u:"",r.online=(c=e.online)!=null?c:!1,r}};function wr(){return{host:"",port:0}}const K={encode(e,r=a.Writer.create()){return e.host!==""&&r.uint32(10).string(e.host),e.port!==0&&r.uint32(16).int32(e.port),r},decode(e,r){const i=e instanceof a.Reader?e:new a.Reader(e);let t=r===void 0?i.len:i.pos+r;const n=wr();for(;i.pos>>3){case 1:n.host=i.string();break;case 2:n.port=i.int32();break;default:i.skipType(o&7);break}}return n},fromJSON(e){return{host:s(e.host)?String(e.host):"",port:s(e.port)?Number(e.port):0}},toJSON(e){const r={};return e.host!==void 0&&(r.host=e.host),e.port!==void 0&&(r.port=Math.round(e.port)),r},fromPartial(e){var i,t;const r=wr();return r.host=(i=e.host)!=null?i:"",r.port=(t=e.port)!=null?t:0,r}};function Nr(){return{dir:"",show_hidden:!1}}const Q={encode(e,r=a.Writer.create()){return e.dir!==""&&r.uint32(10).string(e.dir),e.show_hidden===!0&&r.uint32(16).bool(e.show_hidden),r},decode(e,r){const i=e instanceof a.Reader?e:new a.Reader(e);let t=r===void 0?i.len:i.pos+r;const n=Nr();for(;i.pos>>3){case 1:n.dir=i.string();break;case 2:n.show_hidden=i.bool();break;default:i.skipType(o&7);break}}return n},fromJSON(e){return{dir:s(e.dir)?String(e.dir):"",show_hidden:s(e.show_hidden)?Boolean(e.show_hidden):!1}},toJSON(e){const r={};return e.dir!==void 0&&(r.dir=e.dir),e.show_hidden!==void 0&&(r.show_hidden=e.show_hidden),r},fromPartial(e){var i,t;const r=Nr();return r.dir=(i=e.dir)!=null?i:"",r.show_hidden=(t=e.show_hidden)!=null?t:!1,r}};function Ar(){return{username:"",password:new Uint8Array,my_id:"",my_name:"",option:void 0,file_transfer:void 0,port_forward:void 0,video_ack_required:!1}}const I={encode(e,r=a.Writer.create()){return e.username!==""&&r.uint32(10).string(e.username),e.password.length!==0&&r.uint32(18).bytes(e.password),e.my_id!==""&&r.uint32(34).string(e.my_id),e.my_name!==""&&r.uint32(42).string(e.my_name),e.option!==void 0&&f.encode(e.option,r.uint32(50).fork()).ldelim(),e.file_transfer!==void 0&&Q.encode(e.file_transfer,r.uint32(58).fork()).ldelim(),e.port_forward!==void 0&&K.encode(e.port_forward,r.uint32(66).fork()).ldelim(),e.video_ack_required===!0&&r.uint32(72).bool(e.video_ack_required),r},decode(e,r){const i=e instanceof a.Reader?e:new a.Reader(e);let t=r===void 0?i.len:i.pos+r;const n=Ar();for(;i.pos>>3){case 1:n.username=i.string();break;case 2:n.password=i.bytes();break;case 4:n.my_id=i.string();break;case 5:n.my_name=i.string();break;case 6:n.option=f.decode(i,i.uint32());break;case 7:n.file_transfer=Q.decode(i,i.uint32());break;case 8:n.port_forward=K.decode(i,i.uint32());break;case 9:n.video_ack_required=i.bool();break;default:i.skipType(o&7);break}}return n},fromJSON(e){return{username:s(e.username)?String(e.username):"",password:s(e.password)?A(e.password):new Uint8Array,my_id:s(e.my_id)?String(e.my_id):"",my_name:s(e.my_name)?String(e.my_name):"",option:s(e.option)?f.fromJSON(e.option):void 0,file_transfer:s(e.file_transfer)?Q.fromJSON(e.file_transfer):void 0,port_forward:s(e.port_forward)?K.fromJSON(e.port_forward):void 0,video_ack_required:s(e.video_ack_required)?Boolean(e.video_ack_required):!1}},toJSON(e){const r={};return e.username!==void 0&&(r.username=e.username),e.password!==void 0&&(r.password=F(e.password!==void 0?e.password:new Uint8Array)),e.my_id!==void 0&&(r.my_id=e.my_id),e.my_name!==void 0&&(r.my_name=e.my_name),e.option!==void 0&&(r.option=e.option?f.toJSON(e.option):void 0),e.file_transfer!==void 0&&(r.file_transfer=e.file_transfer?Q.toJSON(e.file_transfer):void 0),e.port_forward!==void 0&&(r.port_forward=e.port_forward?K.toJSON(e.port_forward):void 0),e.video_ack_required!==void 0&&(r.video_ack_required=e.video_ack_required),r},fromPartial(e){var i,t,n,o,u;const r=Ar();return r.username=(i=e.username)!=null?i:"",r.password=(t=e.password)!=null?t:new Uint8Array,r.my_id=(n=e.my_id)!=null?n:"",r.my_name=(o=e.my_name)!=null?o:"",r.option=e.option!==void 0&&e.option!==null?f.fromPartial(e.option):void 0,r.file_transfer=e.file_transfer!==void 0&&e.file_transfer!==null?Q.fromPartial(e.file_transfer):void 0,r.port_forward=e.port_forward!==void 0&&e.port_forward!==null?K.fromPartial(e.port_forward):void 0,r.video_ack_required=(u=e.video_ack_required)!=null?u:!1,r}};function Fr(){return{text:""}}const X={encode(e,r=a.Writer.create()){return e.text!==""&&r.uint32(10).string(e.text),r},decode(e,r){const i=e instanceof a.Reader?e:new a.Reader(e);let t=r===void 0?i.len:i.pos+r;const n=Fr();for(;i.pos>>3){case 1:n.text=i.string();break;default:i.skipType(o&7);break}}return n},fromJSON(e){return{text:s(e.text)?String(e.text):""}},toJSON(e){const r={};return e.text!==void 0&&(r.text=e.text),r},fromPartial(e){var i;const r=Fr();return r.text=(i=e.text)!=null?i:"",r}};function Dr(){return{username:"",hostname:"",platform:"",displays:[],current_display:0,sas_enabled:!1,version:""}}const $={encode(e,r=a.Writer.create()){e.username!==""&&r.uint32(10).string(e.username),e.hostname!==""&&r.uint32(18).string(e.hostname),e.platform!==""&&r.uint32(26).string(e.platform);for(const i of e.displays)Y.encode(i,r.uint32(34).fork()).ldelim();return e.current_display!==0&&r.uint32(40).int32(e.current_display),e.sas_enabled===!0&&r.uint32(48).bool(e.sas_enabled),e.version!==""&&r.uint32(58).string(e.version),r},decode(e,r){const i=e instanceof a.Reader?e:new a.Reader(e);let t=r===void 0?i.len:i.pos+r;const n=Dr();for(;i.pos>>3){case 1:n.username=i.string();break;case 2:n.hostname=i.string();break;case 3:n.platform=i.string();break;case 4:n.displays.push(Y.decode(i,i.uint32()));break;case 5:n.current_display=i.int32();break;case 6:n.sas_enabled=i.bool();break;case 7:n.version=i.string();break;default:i.skipType(o&7);break}}return n},fromJSON(e){return{username:s(e.username)?String(e.username):"",hostname:s(e.hostname)?String(e.hostname):"",platform:s(e.platform)?String(e.platform):"",displays:Array.isArray(e==null?void 0:e.displays)?e.displays.map(r=>Y.fromJSON(r)):[],current_display:s(e.current_display)?Number(e.current_display):0,sas_enabled:s(e.sas_enabled)?Boolean(e.sas_enabled):!1,version:s(e.version)?String(e.version):""}},toJSON(e){const r={};return e.username!==void 0&&(r.username=e.username),e.hostname!==void 0&&(r.hostname=e.hostname),e.platform!==void 0&&(r.platform=e.platform),e.displays?r.displays=e.displays.map(i=>i?Y.toJSON(i):void 0):r.displays=[],e.current_display!==void 0&&(r.current_display=Math.round(e.current_display)),e.sas_enabled!==void 0&&(r.sas_enabled=e.sas_enabled),e.version!==void 0&&(r.version=e.version),r},fromPartial(e){var i,t,n,o,u,c,l;const r=Dr();return r.username=(i=e.username)!=null?i:"",r.hostname=(t=e.hostname)!=null?t:"",r.platform=(n=e.platform)!=null?n:"",r.displays=((o=e.displays)==null?void 0:o.map(p=>Y.fromPartial(p)))||[],r.current_display=(u=e.current_display)!=null?u:0,r.sas_enabled=(c=e.sas_enabled)!=null?c:!1,r.version=(l=e.version)!=null?l:"",r}};function Or(){return{error:void 0,peer_info:void 0}}const j={encode(e,r=a.Writer.create()){return e.error!==void 0&&r.uint32(10).string(e.error),e.peer_info!==void 0&&$.encode(e.peer_info,r.uint32(18).fork()).ldelim(),r},decode(e,r){const i=e instanceof a.Reader?e:new a.Reader(e);let t=r===void 0?i.len:i.pos+r;const n=Or();for(;i.pos>>3){case 1:n.error=i.string();break;case 2:n.peer_info=$.decode(i,i.uint32());break;default:i.skipType(o&7);break}}return n},fromJSON(e){return{error:s(e.error)?String(e.error):void 0,peer_info:s(e.peer_info)?$.fromJSON(e.peer_info):void 0}},toJSON(e){const r={};return e.error!==void 0&&(r.error=e.error),e.peer_info!==void 0&&(r.peer_info=e.peer_info?$.toJSON(e.peer_info):void 0),r},fromPartial(e){var i;const r=Or();return r.error=(i=e.error)!=null?i:void 0,r.peer_info=e.peer_info!==void 0&&e.peer_info!==null?$.fromPartial(e.peer_info):void 0,r}};function Rr(){return{mask:0,x:0,y:0,modifiers:[]}}const b={encode(e,r=a.Writer.create()){e.mask!==0&&r.uint32(8).int32(e.mask),e.x!==0&&r.uint32(16).sint32(e.x),e.y!==0&&r.uint32(24).sint32(e.y),r.uint32(34).fork();for(const i of e.modifiers)r.int32(i);return r.ldelim(),r},decode(e,r){const i=e instanceof a.Reader?e:new a.Reader(e);let t=r===void 0?i.len:i.pos+r;const n=Rr();for(;i.pos>>3){case 1:n.mask=i.int32();break;case 2:n.x=i.sint32();break;case 3:n.y=i.sint32();break;case 4:if((o&7)==2){const u=i.uint32()+i.pos;for(;i.posge(r)):[]}},toJSON(e){const r={};return e.mask!==void 0&&(r.mask=Math.round(e.mask)),e.x!==void 0&&(r.x=Math.round(e.x)),e.y!==void 0&&(r.y=Math.round(e.y)),e.modifiers?r.modifiers=e.modifiers.map(i=>Ye(i)):r.modifiers=[],r},fromPartial(e){var i,t,n,o;const r=Rr();return r.mask=(i=e.mask)!=null?i:0,r.x=(t=e.x)!=null?t:0,r.y=(n=e.y)!=null?n:0,r.modifiers=((o=e.modifiers)==null?void 0:o.map(u=>u))||[],r}};function Cr(){return{down:!1,press:!1,control_key:void 0,chr:void 0,unicode:void 0,seq:void 0,modifiers:[]}}const v={encode(e,r=a.Writer.create()){e.down===!0&&r.uint32(8).bool(e.down),e.press===!0&&r.uint32(16).bool(e.press),e.control_key!==void 0&&r.uint32(24).int32(e.control_key),e.chr!==void 0&&r.uint32(32).uint32(e.chr),e.unicode!==void 0&&r.uint32(40).uint32(e.unicode),e.seq!==void 0&&r.uint32(50).string(e.seq),r.uint32(66).fork();for(const i of e.modifiers)r.int32(i);return r.ldelim(),r},decode(e,r){const i=e instanceof a.Reader?e:new a.Reader(e);let t=r===void 0?i.len:i.pos+r;const n=Cr();for(;i.pos>>3){case 1:n.down=i.bool();break;case 2:n.press=i.bool();break;case 3:n.control_key=i.int32();break;case 4:n.chr=i.uint32();break;case 5:n.unicode=i.uint32();break;case 6:n.seq=i.string();break;case 8:if((o&7)==2){const u=i.uint32()+i.pos;for(;i.posge(r)):[]}},toJSON(e){const r={};return e.down!==void 0&&(r.down=e.down),e.press!==void 0&&(r.press=e.press),e.control_key!==void 0&&(r.control_key=e.control_key!==void 0?Ye(e.control_key):void 0),e.chr!==void 0&&(r.chr=Math.round(e.chr)),e.unicode!==void 0&&(r.unicode=Math.round(e.unicode)),e.seq!==void 0&&(r.seq=e.seq),e.modifiers?r.modifiers=e.modifiers.map(i=>Ye(i)):r.modifiers=[],r},fromPartial(e){var i,t,n,o,u,c,l;const r=Cr();return r.down=(i=e.down)!=null?i:!1,r.press=(t=e.press)!=null?t:!1,r.control_key=(n=e.control_key)!=null?n:void 0,r.chr=(o=e.chr)!=null?o:void 0,r.unicode=(u=e.unicode)!=null?u:void 0,r.seq=(c=e.seq)!=null?c:void 0,r.modifiers=((l=e.modifiers)==null?void 0:l.map(p=>p))||[],r}};function Br(){return{id:0,hotx:0,hoty:0,width:0,height:0,colors:new Uint8Array}}const ee={encode(e,r=a.Writer.create()){return e.id!==0&&r.uint32(8).uint64(e.id),e.hotx!==0&&r.uint32(16).sint32(e.hotx),e.hoty!==0&&r.uint32(24).sint32(e.hoty),e.width!==0&&r.uint32(32).int32(e.width),e.height!==0&&r.uint32(40).int32(e.height),e.colors.length!==0&&r.uint32(50).bytes(e.colors),r},decode(e,r){const i=e instanceof a.Reader?e:new a.Reader(e);let t=r===void 0?i.len:i.pos+r;const n=Br();for(;i.pos>>3){case 1:n.id=T(i.uint64());break;case 2:n.hotx=i.sint32();break;case 3:n.hoty=i.sint32();break;case 4:n.width=i.int32();break;case 5:n.height=i.int32();break;case 6:n.colors=i.bytes();break;default:i.skipType(o&7);break}}return n},fromJSON(e){return{id:s(e.id)?Number(e.id):0,hotx:s(e.hotx)?Number(e.hotx):0,hoty:s(e.hoty)?Number(e.hoty):0,width:s(e.width)?Number(e.width):0,height:s(e.height)?Number(e.height):0,colors:s(e.colors)?A(e.colors):new Uint8Array}},toJSON(e){const r={};return e.id!==void 0&&(r.id=Math.round(e.id)),e.hotx!==void 0&&(r.hotx=Math.round(e.hotx)),e.hoty!==void 0&&(r.hoty=Math.round(e.hoty)),e.width!==void 0&&(r.width=Math.round(e.width)),e.height!==void 0&&(r.height=Math.round(e.height)),e.colors!==void 0&&(r.colors=F(e.colors!==void 0?e.colors:new Uint8Array)),r},fromPartial(e){var i,t,n,o,u,c;const r=Br();return r.id=(i=e.id)!=null?i:0,r.hotx=(t=e.hotx)!=null?t:0,r.hoty=(n=e.hoty)!=null?n:0,r.width=(o=e.width)!=null?o:0,r.height=(u=e.height)!=null?u:0,r.colors=(c=e.colors)!=null?c:new Uint8Array,r}};function Pr(){return{x:0,y:0}}const re={encode(e,r=a.Writer.create()){return e.x!==0&&r.uint32(8).sint32(e.x),e.y!==0&&r.uint32(16).sint32(e.y),r},decode(e,r){const i=e instanceof a.Reader?e:new a.Reader(e);let t=r===void 0?i.len:i.pos+r;const n=Pr();for(;i.pos>>3){case 1:n.x=i.sint32();break;case 2:n.y=i.sint32();break;default:i.skipType(o&7);break}}return n},fromJSON(e){return{x:s(e.x)?Number(e.x):0,y:s(e.y)?Number(e.y):0}},toJSON(e){const r={};return e.x!==void 0&&(r.x=Math.round(e.x)),e.y!==void 0&&(r.y=Math.round(e.y)),r},fromPartial(e){var i,t;const r=Pr();return r.x=(i=e.x)!=null?i:0,r.y=(t=e.y)!=null?t:0,r}};function xr(){return{salt:"",challenge:""}}const ie={encode(e,r=a.Writer.create()){return e.salt!==""&&r.uint32(10).string(e.salt),e.challenge!==""&&r.uint32(18).string(e.challenge),r},decode(e,r){const i=e instanceof a.Reader?e:new a.Reader(e);let t=r===void 0?i.len:i.pos+r;const n=xr();for(;i.pos>>3){case 1:n.salt=i.string();break;case 2:n.challenge=i.string();break;default:i.skipType(o&7);break}}return n},fromJSON(e){return{salt:s(e.salt)?String(e.salt):"",challenge:s(e.challenge)?String(e.challenge):""}},toJSON(e){const r={};return e.salt!==void 0&&(r.salt=e.salt),e.challenge!==void 0&&(r.challenge=e.challenge),r},fromPartial(e){var i,t;const r=xr();return r.salt=(i=e.salt)!=null?i:"",r.challenge=(t=e.challenge)!=null?t:"",r}};function Ir(){return{compress:!1,content:new Uint8Array}}const ne={encode(e,r=a.Writer.create()){return e.compress===!0&&r.uint32(8).bool(e.compress),e.content.length!==0&&r.uint32(18).bytes(e.content),r},decode(e,r){const i=e instanceof a.Reader?e:new a.Reader(e);let t=r===void 0?i.len:i.pos+r;const n=Ir();for(;i.pos>>3){case 1:n.compress=i.bool();break;case 2:n.content=i.bytes();break;default:i.skipType(o&7);break}}return n},fromJSON(e){return{compress:s(e.compress)?Boolean(e.compress):!1,content:s(e.content)?A(e.content):new Uint8Array}},toJSON(e){const r={};return e.compress!==void 0&&(r.compress=e.compress),e.content!==void 0&&(r.content=F(e.content!==void 0?e.content:new Uint8Array)),r},fromPartial(e){var i,t;const r=Ir();return r.compress=(i=e.compress)!=null?i:!1,r.content=(t=e.content)!=null?t:new Uint8Array,r}};function br(){return{entry_type:0,name:"",is_hidden:!1,size:0,modified_time:0}}const m={encode(e,r=a.Writer.create()){return e.entry_type!==0&&r.uint32(8).int32(e.entry_type),e.name!==""&&r.uint32(18).string(e.name),e.is_hidden===!0&&r.uint32(24).bool(e.is_hidden),e.size!==0&&r.uint32(32).uint64(e.size),e.modified_time!==0&&r.uint32(40).uint64(e.modified_time),r},decode(e,r){const i=e instanceof a.Reader?e:new a.Reader(e);let t=r===void 0?i.len:i.pos+r;const n=br();for(;i.pos>>3){case 1:n.entry_type=i.int32();break;case 2:n.name=i.string();break;case 3:n.is_hidden=i.bool();break;case 4:n.size=T(i.uint64());break;case 5:n.modified_time=T(i.uint64());break;default:i.skipType(o&7);break}}return n},fromJSON(e){return{entry_type:s(e.entry_type)?$i(e.entry_type):0,name:s(e.name)?String(e.name):"",is_hidden:s(e.is_hidden)?Boolean(e.is_hidden):!1,size:s(e.size)?Number(e.size):0,modified_time:s(e.modified_time)?Number(e.modified_time):0}},toJSON(e){const r={};return e.entry_type!==void 0&&(r.entry_type=ji(e.entry_type)),e.name!==void 0&&(r.name=e.name),e.is_hidden!==void 0&&(r.is_hidden=e.is_hidden),e.size!==void 0&&(r.size=Math.round(e.size)),e.modified_time!==void 0&&(r.modified_time=Math.round(e.modified_time)),r},fromPartial(e){var i,t,n,o,u;const r=br();return r.entry_type=(i=e.entry_type)!=null?i:0,r.name=(t=e.name)!=null?t:"",r.is_hidden=(n=e.is_hidden)!=null?n:!1,r.size=(o=e.size)!=null?o:0,r.modified_time=(u=e.modified_time)!=null?u:0,r}};function Jr(){return{id:0,path:"",entries:[]}}const te={encode(e,r=a.Writer.create()){e.id!==0&&r.uint32(8).int32(e.id),e.path!==""&&r.uint32(18).string(e.path);for(const i of e.entries)m.encode(i,r.uint32(26).fork()).ldelim();return r},decode(e,r){const i=e instanceof a.Reader?e:new a.Reader(e);let t=r===void 0?i.len:i.pos+r;const n=Jr();for(;i.pos>>3){case 1:n.id=i.int32();break;case 2:n.path=i.string();break;case 3:n.entries.push(m.decode(i,i.uint32()));break;default:i.skipType(o&7);break}}return n},fromJSON(e){return{id:s(e.id)?Number(e.id):0,path:s(e.path)?String(e.path):"",entries:Array.isArray(e==null?void 0:e.entries)?e.entries.map(r=>m.fromJSON(r)):[]}},toJSON(e){const r={};return e.id!==void 0&&(r.id=Math.round(e.id)),e.path!==void 0&&(r.path=e.path),e.entries?r.entries=e.entries.map(i=>i?m.toJSON(i):void 0):r.entries=[],r},fromPartial(e){var i,t,n;const r=Jr();return r.id=(i=e.id)!=null?i:0,r.path=(t=e.path)!=null?t:"",r.entries=((n=e.entries)==null?void 0:n.map(o=>m.fromPartial(o)))||[],r}};function Tr(){return{path:"",include_hidden:!1}}const oe={encode(e,r=a.Writer.create()){return e.path!==""&&r.uint32(10).string(e.path),e.include_hidden===!0&&r.uint32(16).bool(e.include_hidden),r},decode(e,r){const i=e instanceof a.Reader?e:new a.Reader(e);let t=r===void 0?i.len:i.pos+r;const n=Tr();for(;i.pos>>3){case 1:n.path=i.string();break;case 2:n.include_hidden=i.bool();break;default:i.skipType(o&7);break}}return n},fromJSON(e){return{path:s(e.path)?String(e.path):"",include_hidden:s(e.include_hidden)?Boolean(e.include_hidden):!1}},toJSON(e){const r={};return e.path!==void 0&&(r.path=e.path),e.include_hidden!==void 0&&(r.include_hidden=e.include_hidden),r},fromPartial(e){var i,t;const r=Tr();return r.path=(i=e.path)!=null?i:"",r.include_hidden=(t=e.include_hidden)!=null?t:!1,r}};function Ur(){return{id:0,path:"",include_hidden:!1}}const ae={encode(e,r=a.Writer.create()){return e.id!==0&&r.uint32(8).int32(e.id),e.path!==""&&r.uint32(18).string(e.path),e.include_hidden===!0&&r.uint32(24).bool(e.include_hidden),r},decode(e,r){const i=e instanceof a.Reader?e:new a.Reader(e);let t=r===void 0?i.len:i.pos+r;const n=Ur();for(;i.pos>>3){case 1:n.id=i.int32();break;case 2:n.path=i.string();break;case 3:n.include_hidden=i.bool();break;default:i.skipType(o&7);break}}return n},fromJSON(e){return{id:s(e.id)?Number(e.id):0,path:s(e.path)?String(e.path):"",include_hidden:s(e.include_hidden)?Boolean(e.include_hidden):!1}},toJSON(e){const r={};return e.id!==void 0&&(r.id=Math.round(e.id)),e.path!==void 0&&(r.path=e.path),e.include_hidden!==void 0&&(r.include_hidden=e.include_hidden),r},fromPartial(e){var i,t,n;const r=Ur();return r.id=(i=e.id)!=null?i:0,r.path=(t=e.path)!=null?t:"",r.include_hidden=(n=e.include_hidden)!=null?n:!1,r}};function qr(){return{read_dir:void 0,send:void 0,receive:void 0,create:void 0,remove_dir:void 0,remove_file:void 0,all_files:void 0,cancel:void 0}}const se={encode(e,r=a.Writer.create()){return e.read_dir!==void 0&&oe.encode(e.read_dir,r.uint32(10).fork()).ldelim(),e.send!==void 0&&_e.encode(e.send,r.uint32(18).fork()).ldelim(),e.receive!==void 0&&fe.encode(e.receive,r.uint32(26).fork()).ldelim(),e.create!==void 0&&ye.encode(e.create,r.uint32(34).fork()).ldelim(),e.remove_dir!==void 0&&ve.encode(e.remove_dir,r.uint32(42).fork()).ldelim(),e.remove_file!==void 0&&he.encode(e.remove_file,r.uint32(50).fork()).ldelim(),e.all_files!==void 0&&ae.encode(e.all_files,r.uint32(58).fork()).ldelim(),e.cancel!==void 0&&ue.encode(e.cancel,r.uint32(66).fork()).ldelim(),r},decode(e,r){const i=e instanceof a.Reader?e:new a.Reader(e);let t=r===void 0?i.len:i.pos+r;const n=qr();for(;i.pos>>3){case 1:n.read_dir=oe.decode(i,i.uint32());break;case 2:n.send=_e.decode(i,i.uint32());break;case 3:n.receive=fe.decode(i,i.uint32());break;case 4:n.create=ye.decode(i,i.uint32());break;case 5:n.remove_dir=ve.decode(i,i.uint32());break;case 6:n.remove_file=he.decode(i,i.uint32());break;case 7:n.all_files=ae.decode(i,i.uint32());break;case 8:n.cancel=ue.decode(i,i.uint32());break;default:i.skipType(o&7);break}}return n},fromJSON(e){return{read_dir:s(e.read_dir)?oe.fromJSON(e.read_dir):void 0,send:s(e.send)?_e.fromJSON(e.send):void 0,receive:s(e.receive)?fe.fromJSON(e.receive):void 0,create:s(e.create)?ye.fromJSON(e.create):void 0,remove_dir:s(e.remove_dir)?ve.fromJSON(e.remove_dir):void 0,remove_file:s(e.remove_file)?he.fromJSON(e.remove_file):void 0,all_files:s(e.all_files)?ae.fromJSON(e.all_files):void 0,cancel:s(e.cancel)?ue.fromJSON(e.cancel):void 0}},toJSON(e){const r={};return e.read_dir!==void 0&&(r.read_dir=e.read_dir?oe.toJSON(e.read_dir):void 0),e.send!==void 0&&(r.send=e.send?_e.toJSON(e.send):void 0),e.receive!==void 0&&(r.receive=e.receive?fe.toJSON(e.receive):void 0),e.create!==void 0&&(r.create=e.create?ye.toJSON(e.create):void 0),e.remove_dir!==void 0&&(r.remove_dir=e.remove_dir?ve.toJSON(e.remove_dir):void 0),e.remove_file!==void 0&&(r.remove_file=e.remove_file?he.toJSON(e.remove_file):void 0),e.all_files!==void 0&&(r.all_files=e.all_files?ae.toJSON(e.all_files):void 0),e.cancel!==void 0&&(r.cancel=e.cancel?ue.toJSON(e.cancel):void 0),r},fromPartial(e){const r=qr();return r.read_dir=e.read_dir!==void 0&&e.read_dir!==null?oe.fromPartial(e.read_dir):void 0,r.send=e.send!==void 0&&e.send!==null?_e.fromPartial(e.send):void 0,r.receive=e.receive!==void 0&&e.receive!==null?fe.fromPartial(e.receive):void 0,r.create=e.create!==void 0&&e.create!==null?ye.fromPartial(e.create):void 0,r.remove_dir=e.remove_dir!==void 0&&e.remove_dir!==null?ve.fromPartial(e.remove_dir):void 0,r.remove_file=e.remove_file!==void 0&&e.remove_file!==null?he.fromPartial(e.remove_file):void 0,r.all_files=e.all_files!==void 0&&e.all_files!==null?ae.fromPartial(e.all_files):void 0,r.cancel=e.cancel!==void 0&&e.cancel!==null?ue.fromPartial(e.cancel):void 0,r}};function Mr(){return{id:0}}const ue={encode(e,r=a.Writer.create()){return e.id!==0&&r.uint32(8).int32(e.id),r},decode(e,r){const i=e instanceof a.Reader?e:new a.Reader(e);let t=r===void 0?i.len:i.pos+r;const n=Mr();for(;i.pos>>3){case 1:n.id=i.int32();break;default:i.skipType(o&7);break}}return n},fromJSON(e){return{id:s(e.id)?Number(e.id):0}},toJSON(e){const r={};return e.id!==void 0&&(r.id=Math.round(e.id)),r},fromPartial(e){var i;const r=Mr();return r.id=(i=e.id)!=null?i:0,r}};function gr(){return{dir:void 0,block:void 0,error:void 0,done:void 0}}const de={encode(e,r=a.Writer.create()){return e.dir!==void 0&&te.encode(e.dir,r.uint32(10).fork()).ldelim(),e.block!==void 0&&ce.encode(e.block,r.uint32(18).fork()).ldelim(),e.error!==void 0&&le.encode(e.error,r.uint32(26).fork()).ldelim(),e.done!==void 0&&pe.encode(e.done,r.uint32(34).fork()).ldelim(),r},decode(e,r){const i=e instanceof a.Reader?e:new a.Reader(e);let t=r===void 0?i.len:i.pos+r;const n=gr();for(;i.pos>>3){case 1:n.dir=te.decode(i,i.uint32());break;case 2:n.block=ce.decode(i,i.uint32());break;case 3:n.error=le.decode(i,i.uint32());break;case 4:n.done=pe.decode(i,i.uint32());break;default:i.skipType(o&7);break}}return n},fromJSON(e){return{dir:s(e.dir)?te.fromJSON(e.dir):void 0,block:s(e.block)?ce.fromJSON(e.block):void 0,error:s(e.error)?le.fromJSON(e.error):void 0,done:s(e.done)?pe.fromJSON(e.done):void 0}},toJSON(e){const r={};return e.dir!==void 0&&(r.dir=e.dir?te.toJSON(e.dir):void 0),e.block!==void 0&&(r.block=e.block?ce.toJSON(e.block):void 0),e.error!==void 0&&(r.error=e.error?le.toJSON(e.error):void 0),e.done!==void 0&&(r.done=e.done?pe.toJSON(e.done):void 0),r},fromPartial(e){const r=gr();return r.dir=e.dir!==void 0&&e.dir!==null?te.fromPartial(e.dir):void 0,r.block=e.block!==void 0&&e.block!==null?ce.fromPartial(e.block):void 0,r.error=e.error!==void 0&&e.error!==null?le.fromPartial(e.error):void 0,r.done=e.done!==void 0&&e.done!==null?pe.fromPartial(e.done):void 0,r}};function Lr(){return{id:0,file_num:0,data:new Uint8Array,compressed:!1}}const ce={encode(e,r=a.Writer.create()){return e.id!==0&&r.uint32(8).int32(e.id),e.file_num!==0&&r.uint32(16).sint32(e.file_num),e.data.length!==0&&r.uint32(26).bytes(e.data),e.compressed===!0&&r.uint32(32).bool(e.compressed),r},decode(e,r){const i=e instanceof a.Reader?e:new a.Reader(e);let t=r===void 0?i.len:i.pos+r;const n=Lr();for(;i.pos>>3){case 1:n.id=i.int32();break;case 2:n.file_num=i.sint32();break;case 3:n.data=i.bytes();break;case 4:n.compressed=i.bool();break;default:i.skipType(o&7);break}}return n},fromJSON(e){return{id:s(e.id)?Number(e.id):0,file_num:s(e.file_num)?Number(e.file_num):0,data:s(e.data)?A(e.data):new Uint8Array,compressed:s(e.compressed)?Boolean(e.compressed):!1}},toJSON(e){const r={};return e.id!==void 0&&(r.id=Math.round(e.id)),e.file_num!==void 0&&(r.file_num=Math.round(e.file_num)),e.data!==void 0&&(r.data=F(e.data!==void 0?e.data:new Uint8Array)),e.compressed!==void 0&&(r.compressed=e.compressed),r},fromPartial(e){var i,t,n,o;const r=Lr();return r.id=(i=e.id)!=null?i:0,r.file_num=(t=e.file_num)!=null?t:0,r.data=(n=e.data)!=null?n:new Uint8Array,r.compressed=(o=e.compressed)!=null?o:!1,r}};function Vr(){return{id:0,error:"",file_num:0}}const le={encode(e,r=a.Writer.create()){return e.id!==0&&r.uint32(8).int32(e.id),e.error!==""&&r.uint32(18).string(e.error),e.file_num!==0&&r.uint32(24).sint32(e.file_num),r},decode(e,r){const i=e instanceof a.Reader?e:new a.Reader(e);let t=r===void 0?i.len:i.pos+r;const n=Vr();for(;i.pos>>3){case 1:n.id=i.int32();break;case 2:n.error=i.string();break;case 3:n.file_num=i.sint32();break;default:i.skipType(o&7);break}}return n},fromJSON(e){return{id:s(e.id)?Number(e.id):0,error:s(e.error)?String(e.error):"",file_num:s(e.file_num)?Number(e.file_num):0}},toJSON(e){const r={};return e.id!==void 0&&(r.id=Math.round(e.id)),e.error!==void 0&&(r.error=e.error),e.file_num!==void 0&&(r.file_num=Math.round(e.file_num)),r},fromPartial(e){var i,t,n;const r=Vr();return r.id=(i=e.id)!=null?i:0,r.error=(t=e.error)!=null?t:"",r.file_num=(n=e.file_num)!=null?n:0,r}};function zr(){return{id:0,path:"",include_hidden:!1}}const _e={encode(e,r=a.Writer.create()){return e.id!==0&&r.uint32(8).int32(e.id),e.path!==""&&r.uint32(18).string(e.path),e.include_hidden===!0&&r.uint32(24).bool(e.include_hidden),r},decode(e,r){const i=e instanceof a.Reader?e:new a.Reader(e);let t=r===void 0?i.len:i.pos+r;const n=zr();for(;i.pos>>3){case 1:n.id=i.int32();break;case 2:n.path=i.string();break;case 3:n.include_hidden=i.bool();break;default:i.skipType(o&7);break}}return n},fromJSON(e){return{id:s(e.id)?Number(e.id):0,path:s(e.path)?String(e.path):"",include_hidden:s(e.include_hidden)?Boolean(e.include_hidden):!1}},toJSON(e){const r={};return e.id!==void 0&&(r.id=Math.round(e.id)),e.path!==void 0&&(r.path=e.path),e.include_hidden!==void 0&&(r.include_hidden=e.include_hidden),r},fromPartial(e){var i,t,n;const r=zr();return r.id=(i=e.id)!=null?i:0,r.path=(t=e.path)!=null?t:"",r.include_hidden=(n=e.include_hidden)!=null?n:!1,r}};function Wr(){return{id:0,file_num:0}}const pe={encode(e,r=a.Writer.create()){return e.id!==0&&r.uint32(8).int32(e.id),e.file_num!==0&&r.uint32(16).sint32(e.file_num),r},decode(e,r){const i=e instanceof a.Reader?e:new a.Reader(e);let t=r===void 0?i.len:i.pos+r;const n=Wr();for(;i.pos>>3){case 1:n.id=i.int32();break;case 2:n.file_num=i.sint32();break;default:i.skipType(o&7);break}}return n},fromJSON(e){return{id:s(e.id)?Number(e.id):0,file_num:s(e.file_num)?Number(e.file_num):0}},toJSON(e){const r={};return e.id!==void 0&&(r.id=Math.round(e.id)),e.file_num!==void 0&&(r.file_num=Math.round(e.file_num)),r},fromPartial(e){var i,t;const r=Wr();return r.id=(i=e.id)!=null?i:0,r.file_num=(t=e.file_num)!=null?t:0,r}};function Hr(){return{id:0,path:"",files:[]}}const fe={encode(e,r=a.Writer.create()){e.id!==0&&r.uint32(8).int32(e.id),e.path!==""&&r.uint32(18).string(e.path);for(const i of e.files)m.encode(i,r.uint32(26).fork()).ldelim();return r},decode(e,r){const i=e instanceof a.Reader?e:new a.Reader(e);let t=r===void 0?i.len:i.pos+r;const n=Hr();for(;i.pos>>3){case 1:n.id=i.int32();break;case 2:n.path=i.string();break;case 3:n.files.push(m.decode(i,i.uint32()));break;default:i.skipType(o&7);break}}return n},fromJSON(e){return{id:s(e.id)?Number(e.id):0,path:s(e.path)?String(e.path):"",files:Array.isArray(e==null?void 0:e.files)?e.files.map(r=>m.fromJSON(r)):[]}},toJSON(e){const r={};return e.id!==void 0&&(r.id=Math.round(e.id)),e.path!==void 0&&(r.path=e.path),e.files?r.files=e.files.map(i=>i?m.toJSON(i):void 0):r.files=[],r},fromPartial(e){var i,t,n;const r=Hr();return r.id=(i=e.id)!=null?i:0,r.path=(t=e.path)!=null?t:"",r.files=((n=e.files)==null?void 0:n.map(o=>m.fromPartial(o)))||[],r}};function Gr(){return{id:0,path:"",recursive:!1}}const ve={encode(e,r=a.Writer.create()){return e.id!==0&&r.uint32(8).int32(e.id),e.path!==""&&r.uint32(18).string(e.path),e.recursive===!0&&r.uint32(24).bool(e.recursive),r},decode(e,r){const i=e instanceof a.Reader?e:new a.Reader(e);let t=r===void 0?i.len:i.pos+r;const n=Gr();for(;i.pos>>3){case 1:n.id=i.int32();break;case 2:n.path=i.string();break;case 3:n.recursive=i.bool();break;default:i.skipType(o&7);break}}return n},fromJSON(e){return{id:s(e.id)?Number(e.id):0,path:s(e.path)?String(e.path):"",recursive:s(e.recursive)?Boolean(e.recursive):!1}},toJSON(e){const r={};return e.id!==void 0&&(r.id=Math.round(e.id)),e.path!==void 0&&(r.path=e.path),e.recursive!==void 0&&(r.recursive=e.recursive),r},fromPartial(e){var i,t,n;const r=Gr();return r.id=(i=e.id)!=null?i:0,r.path=(t=e.path)!=null?t:"",r.recursive=(n=e.recursive)!=null?n:!1,r}};function Zr(){return{id:0,path:"",file_num:0}}const he={encode(e,r=a.Writer.create()){return e.id!==0&&r.uint32(8).int32(e.id),e.path!==""&&r.uint32(18).string(e.path),e.file_num!==0&&r.uint32(24).sint32(e.file_num),r},decode(e,r){const i=e instanceof a.Reader?e:new a.Reader(e);let t=r===void 0?i.len:i.pos+r;const n=Zr();for(;i.pos>>3){case 1:n.id=i.int32();break;case 2:n.path=i.string();break;case 3:n.file_num=i.sint32();break;default:i.skipType(o&7);break}}return n},fromJSON(e){return{id:s(e.id)?Number(e.id):0,path:s(e.path)?String(e.path):"",file_num:s(e.file_num)?Number(e.file_num):0}},toJSON(e){const r={};return e.id!==void 0&&(r.id=Math.round(e.id)),e.path!==void 0&&(r.path=e.path),e.file_num!==void 0&&(r.file_num=Math.round(e.file_num)),r},fromPartial(e){var i,t,n;const r=Zr();return r.id=(i=e.id)!=null?i:0,r.path=(t=e.path)!=null?t:"",r.file_num=(n=e.file_num)!=null?n:0,r}};function Yr(){return{id:0,path:""}}const ye={encode(e,r=a.Writer.create()){return e.id!==0&&r.uint32(8).int32(e.id),e.path!==""&&r.uint32(18).string(e.path),r},decode(e,r){const i=e instanceof a.Reader?e:new a.Reader(e);let t=r===void 0?i.len:i.pos+r;const n=Yr();for(;i.pos>>3){case 1:n.id=i.int32();break;case 2:n.path=i.string();break;default:i.skipType(o&7);break}}return n},fromJSON(e){return{id:s(e.id)?Number(e.id):0,path:s(e.path)?String(e.path):""}},toJSON(e){const r={};return e.id!==void 0&&(r.id=Math.round(e.id)),e.path!==void 0&&(r.path=e.path),r},fromPartial(e){var i,t;const r=Yr();return r.id=(i=e.id)!=null?i:0,r.path=(t=e.path)!=null?t:"",r}};function Kr(){return{display:0,x:0,y:0,width:0,height:0}}const J={encode(e,r=a.Writer.create()){return e.display!==0&&r.uint32(8).int32(e.display),e.x!==0&&r.uint32(16).sint32(e.x),e.y!==0&&r.uint32(24).sint32(e.y),e.width!==0&&r.uint32(32).int32(e.width),e.height!==0&&r.uint32(40).int32(e.height),r},decode(e,r){const i=e instanceof a.Reader?e:new a.Reader(e);let t=r===void 0?i.len:i.pos+r;const n=Kr();for(;i.pos>>3){case 1:n.display=i.int32();break;case 2:n.x=i.sint32();break;case 3:n.y=i.sint32();break;case 4:n.width=i.int32();break;case 5:n.height=i.int32();break;default:i.skipType(o&7);break}}return n},fromJSON(e){return{display:s(e.display)?Number(e.display):0,x:s(e.x)?Number(e.x):0,y:s(e.y)?Number(e.y):0,width:s(e.width)?Number(e.width):0,height:s(e.height)?Number(e.height):0}},toJSON(e){const r={};return e.display!==void 0&&(r.display=Math.round(e.display)),e.x!==void 0&&(r.x=Math.round(e.x)),e.y!==void 0&&(r.y=Math.round(e.y)),e.width!==void 0&&(r.width=Math.round(e.width)),e.height!==void 0&&(r.height=Math.round(e.height)),r},fromPartial(e){var i,t,n,o,u;const r=Kr();return r.display=(i=e.display)!=null?i:0,r.x=(t=e.x)!=null?t:0,r.y=(n=e.y)!=null?n:0,r.width=(o=e.width)!=null?o:0,r.height=(u=e.height)!=null?u:0,r}};function Qr(){return{permission:0,enabled:!1}}const ke={encode(e,r=a.Writer.create()){return e.permission!==0&&r.uint32(8).int32(e.permission),e.enabled===!0&&r.uint32(16).bool(e.enabled),r},decode(e,r){const i=e instanceof a.Reader?e:new a.Reader(e);let t=r===void 0?i.len:i.pos+r;const n=Qr();for(;i.pos>>3){case 1:n.permission=i.int32();break;case 2:n.enabled=i.bool();break;default:i.skipType(o&7);break}}return n},fromJSON(e){return{permission:s(e.permission)?nn(e.permission):0,enabled:s(e.enabled)?Boolean(e.enabled):!1}},toJSON(e){const r={};return e.permission!==void 0&&(r.permission=tn(e.permission)),e.enabled!==void 0&&(r.enabled=e.enabled),r},fromPartial(e){var i,t;const r=Qr();return r.permission=(i=e.permission)!=null?i:0,r.enabled=(t=e.enabled)!=null?t:!1,r}};function Xr(){return{image_quality:0,lock_after_session_end:0,show_remote_cursor:0,privacy_mode:0,block_input:0,custom_image_quality:0,disable_audio:0,disable_clipboard:0}}const f={encode(e,r=a.Writer.create()){return e.image_quality!==0&&r.uint32(8).int32(e.image_quality),e.lock_after_session_end!==0&&r.uint32(16).int32(e.lock_after_session_end),e.show_remote_cursor!==0&&r.uint32(24).int32(e.show_remote_cursor),e.privacy_mode!==0&&r.uint32(32).int32(e.privacy_mode),e.block_input!==0&&r.uint32(40).int32(e.block_input),e.custom_image_quality!==0&&r.uint32(48).int32(e.custom_image_quality),e.disable_audio!==0&&r.uint32(56).int32(e.disable_audio),e.disable_clipboard!==0&&r.uint32(64).int32(e.disable_clipboard),r},decode(e,r){const i=e instanceof a.Reader?e:new a.Reader(e);let t=r===void 0?i.len:i.pos+r;const n=Xr();for(;i.pos>>3){case 1:n.image_quality=i.int32();break;case 2:n.lock_after_session_end=i.int32();break;case 3:n.show_remote_cursor=i.int32();break;case 4:n.privacy_mode=i.int32();break;case 5:n.block_input=i.int32();break;case 6:n.custom_image_quality=i.int32();break;case 7:n.disable_audio=i.int32();break;case 8:n.disable_clipboard=i.int32();break;default:i.skipType(o&7);break}}return n},fromJSON(e){return{image_quality:s(e.image_quality)?en(e.image_quality):0,lock_after_session_end:s(e.lock_after_session_end)?P(e.lock_after_session_end):0,show_remote_cursor:s(e.show_remote_cursor)?P(e.show_remote_cursor):0,privacy_mode:s(e.privacy_mode)?P(e.privacy_mode):0,block_input:s(e.block_input)?P(e.block_input):0,custom_image_quality:s(e.custom_image_quality)?Number(e.custom_image_quality):0,disable_audio:s(e.disable_audio)?P(e.disable_audio):0,disable_clipboard:s(e.disable_clipboard)?P(e.disable_clipboard):0}},toJSON(e){const r={};return e.image_quality!==void 0&&(r.image_quality=rn(e.image_quality)),e.lock_after_session_end!==void 0&&(r.lock_after_session_end=x(e.lock_after_session_end)),e.show_remote_cursor!==void 0&&(r.show_remote_cursor=x(e.show_remote_cursor)),e.privacy_mode!==void 0&&(r.privacy_mode=x(e.privacy_mode)),e.block_input!==void 0&&(r.block_input=x(e.block_input)),e.custom_image_quality!==void 0&&(r.custom_image_quality=Math.round(e.custom_image_quality)),e.disable_audio!==void 0&&(r.disable_audio=x(e.disable_audio)),e.disable_clipboard!==void 0&&(r.disable_clipboard=x(e.disable_clipboard)),r},fromPartial(e){var i,t,n,o,u,c,l,p;const r=Xr();return r.image_quality=(i=e.image_quality)!=null?i:0,r.lock_after_session_end=(t=e.lock_after_session_end)!=null?t:0,r.show_remote_cursor=(n=e.show_remote_cursor)!=null?n:0,r.privacy_mode=(o=e.privacy_mode)!=null?o:0,r.block_input=(u=e.block_input)!=null?u:0,r.custom_image_quality=(c=e.custom_image_quality)!=null?c:0,r.disable_audio=(l=e.disable_audio)!=null?l:0,r.disable_clipboard=(p=e.disable_clipboard)!=null?p:0,r}};function $r(){return{opt:void 0,error:""}}const me={encode(e,r=a.Writer.create()){return e.opt!==void 0&&f.encode(e.opt,r.uint32(10).fork()).ldelim(),e.error!==""&&r.uint32(18).string(e.error),r},decode(e,r){const i=e instanceof a.Reader?e:new a.Reader(e);let t=r===void 0?i.len:i.pos+r;const n=$r();for(;i.pos>>3){case 1:n.opt=f.decode(i,i.uint32());break;case 2:n.error=i.string();break;default:i.skipType(o&7);break}}return n},fromJSON(e){return{opt:s(e.opt)?f.fromJSON(e.opt):void 0,error:s(e.error)?String(e.error):""}},toJSON(e){const r={};return e.opt!==void 0&&(r.opt=e.opt?f.toJSON(e.opt):void 0),e.error!==void 0&&(r.error=e.error),r},fromPartial(e){var i;const r=$r();return r.opt=e.opt!==void 0&&e.opt!==null?f.fromPartial(e.opt):void 0,r.error=(i=e.error)!=null?i:"",r}};function jr(){return{time:0,from_client:!1}}const Ee={encode(e,r=a.Writer.create()){return e.time!==0&&r.uint32(8).int64(e.time),e.from_client===!0&&r.uint32(16).bool(e.from_client),r},decode(e,r){const i=e instanceof a.Reader?e:new a.Reader(e);let t=r===void 0?i.len:i.pos+r;const n=jr();for(;i.pos>>3){case 1:n.time=T(i.int64());break;case 2:n.from_client=i.bool();break;default:i.skipType(o&7);break}}return n},fromJSON(e){return{time:s(e.time)?Number(e.time):0,from_client:s(e.from_client)?Boolean(e.from_client):!1}},toJSON(e){const r={};return e.time!==void 0&&(r.time=Math.round(e.time)),e.from_client!==void 0&&(r.from_client=e.from_client),r},fromPartial(e){var i,t;const r=jr();return r.time=(i=e.time)!=null?i:0,r.from_client=(t=e.from_client)!=null?t:!1,r}};function ei(){return{asymmetric_value:new Uint8Array,symmetric_value:new Uint8Array}}const C={encode(e,r=a.Writer.create()){return e.asymmetric_value.length!==0&&r.uint32(10).bytes(e.asymmetric_value),e.symmetric_value.length!==0&&r.uint32(18).bytes(e.symmetric_value),r},decode(e,r){const i=e instanceof a.Reader?e:new a.Reader(e);let t=r===void 0?i.len:i.pos+r;const n=ei();for(;i.pos>>3){case 1:n.asymmetric_value=i.bytes();break;case 2:n.symmetric_value=i.bytes();break;default:i.skipType(o&7);break}}return n},fromJSON(e){return{asymmetric_value:s(e.asymmetric_value)?A(e.asymmetric_value):new Uint8Array,symmetric_value:s(e.symmetric_value)?A(e.symmetric_value):new Uint8Array}},toJSON(e){const r={};return e.asymmetric_value!==void 0&&(r.asymmetric_value=F(e.asymmetric_value!==void 0?e.asymmetric_value:new Uint8Array)),e.symmetric_value!==void 0&&(r.symmetric_value=F(e.symmetric_value!==void 0?e.symmetric_value:new Uint8Array)),r},fromPartial(e){var i,t;const r=ei();return r.asymmetric_value=(i=e.asymmetric_value)!=null?i:new Uint8Array,r.symmetric_value=(t=e.symmetric_value)!=null?t:new Uint8Array,r}};function ri(){return{id:new Uint8Array}}const Se={encode(e,r=a.Writer.create()){return e.id.length!==0&&r.uint32(10).bytes(e.id),r},decode(e,r){const i=e instanceof a.Reader?e:new a.Reader(e);let t=r===void 0?i.len:i.pos+r;const n=ri();for(;i.pos>>3){case 1:n.id=i.bytes();break;default:i.skipType(o&7);break}}return n},fromJSON(e){return{id:s(e.id)?A(e.id):new Uint8Array}},toJSON(e){const r={};return e.id!==void 0&&(r.id=F(e.id!==void 0?e.id:new Uint8Array)),r},fromPartial(e){var i;const r=ri();return r.id=(i=e.id)!=null?i:new Uint8Array,r}};function ii(){return{sample_rate:0,channels:0}}const we={encode(e,r=a.Writer.create()){return e.sample_rate!==0&&r.uint32(8).uint32(e.sample_rate),e.channels!==0&&r.uint32(16).uint32(e.channels),r},decode(e,r){const i=e instanceof a.Reader?e:new a.Reader(e);let t=r===void 0?i.len:i.pos+r;const n=ii();for(;i.pos>>3){case 1:n.sample_rate=i.uint32();break;case 2:n.channels=i.uint32();break;default:i.skipType(o&7);break}}return n},fromJSON(e){return{sample_rate:s(e.sample_rate)?Number(e.sample_rate):0,channels:s(e.channels)?Number(e.channels):0}},toJSON(e){const r={};return e.sample_rate!==void 0&&(r.sample_rate=Math.round(e.sample_rate)),e.channels!==void 0&&(r.channels=Math.round(e.channels)),r},fromPartial(e){var i,t;const r=ii();return r.sample_rate=(i=e.sample_rate)!=null?i:0,r.channels=(t=e.channels)!=null?t:0,r}};function ni(){return{data:new Uint8Array}}const Ne={encode(e,r=a.Writer.create()){return e.data.length!==0&&r.uint32(10).bytes(e.data),r},decode(e,r){const i=e instanceof a.Reader?e:new a.Reader(e);let t=r===void 0?i.len:i.pos+r;const n=ni();for(;i.pos>>3){case 1:n.data=i.bytes();break;default:i.skipType(o&7);break}}return n},fromJSON(e){return{data:s(e.data)?A(e.data):new Uint8Array}},toJSON(e){const r={};return e.data!==void 0&&(r.data=F(e.data!==void 0?e.data:new Uint8Array)),r},fromPartial(e){var i;const r=ni();return r.data=(i=e.data)!=null?i:new Uint8Array,r}};function ti(){return{chat_message:void 0,switch_display:void 0,permission_info:void 0,option:void 0,audio_format:void 0,close_reason:void 0,refresh_video:void 0,option_response:void 0,video_received:void 0}}const E={encode(e,r=a.Writer.create()){return e.chat_message!==void 0&&X.encode(e.chat_message,r.uint32(34).fork()).ldelim(),e.switch_display!==void 0&&J.encode(e.switch_display,r.uint32(42).fork()).ldelim(),e.permission_info!==void 0&&ke.encode(e.permission_info,r.uint32(50).fork()).ldelim(),e.option!==void 0&&f.encode(e.option,r.uint32(58).fork()).ldelim(),e.audio_format!==void 0&&we.encode(e.audio_format,r.uint32(66).fork()).ldelim(),e.close_reason!==void 0&&r.uint32(74).string(e.close_reason),e.refresh_video!==void 0&&r.uint32(80).bool(e.refresh_video),e.option_response!==void 0&&me.encode(e.option_response,r.uint32(90).fork()).ldelim(),e.video_received!==void 0&&r.uint32(96).bool(e.video_received),r},decode(e,r){const i=e instanceof a.Reader?e:new a.Reader(e);let t=r===void 0?i.len:i.pos+r;const n=ti();for(;i.pos>>3){case 4:n.chat_message=X.decode(i,i.uint32());break;case 5:n.switch_display=J.decode(i,i.uint32());break;case 6:n.permission_info=ke.decode(i,i.uint32());break;case 7:n.option=f.decode(i,i.uint32());break;case 8:n.audio_format=we.decode(i,i.uint32());break;case 9:n.close_reason=i.string();break;case 10:n.refresh_video=i.bool();break;case 11:n.option_response=me.decode(i,i.uint32());break;case 12:n.video_received=i.bool();break;default:i.skipType(o&7);break}}return n},fromJSON(e){return{chat_message:s(e.chat_message)?X.fromJSON(e.chat_message):void 0,switch_display:s(e.switch_display)?J.fromJSON(e.switch_display):void 0,permission_info:s(e.permission_info)?ke.fromJSON(e.permission_info):void 0,option:s(e.option)?f.fromJSON(e.option):void 0,audio_format:s(e.audio_format)?we.fromJSON(e.audio_format):void 0,close_reason:s(e.close_reason)?String(e.close_reason):void 0,refresh_video:s(e.refresh_video)?Boolean(e.refresh_video):void 0,option_response:s(e.option_response)?me.fromJSON(e.option_response):void 0,video_received:s(e.video_received)?Boolean(e.video_received):void 0}},toJSON(e){const r={};return e.chat_message!==void 0&&(r.chat_message=e.chat_message?X.toJSON(e.chat_message):void 0),e.switch_display!==void 0&&(r.switch_display=e.switch_display?J.toJSON(e.switch_display):void 0),e.permission_info!==void 0&&(r.permission_info=e.permission_info?ke.toJSON(e.permission_info):void 0),e.option!==void 0&&(r.option=e.option?f.toJSON(e.option):void 0),e.audio_format!==void 0&&(r.audio_format=e.audio_format?we.toJSON(e.audio_format):void 0),e.close_reason!==void 0&&(r.close_reason=e.close_reason),e.refresh_video!==void 0&&(r.refresh_video=e.refresh_video),e.option_response!==void 0&&(r.option_response=e.option_response?me.toJSON(e.option_response):void 0),e.video_received!==void 0&&(r.video_received=e.video_received),r},fromPartial(e){var i,t,n;const r=ti();return r.chat_message=e.chat_message!==void 0&&e.chat_message!==null?X.fromPartial(e.chat_message):void 0,r.switch_display=e.switch_display!==void 0&&e.switch_display!==null?J.fromPartial(e.switch_display):void 0,r.permission_info=e.permission_info!==void 0&&e.permission_info!==null?ke.fromPartial(e.permission_info):void 0,r.option=e.option!==void 0&&e.option!==null?f.fromPartial(e.option):void 0,r.audio_format=e.audio_format!==void 0&&e.audio_format!==null?we.fromPartial(e.audio_format):void 0,r.close_reason=(i=e.close_reason)!=null?i:void 0,r.refresh_video=(t=e.refresh_video)!=null?t:void 0,r.option_response=e.option_response!==void 0&&e.option_response!==null?me.fromPartial(e.option_response):void 0,r.video_received=(n=e.video_received)!=null?n:void 0,r}};function oi(){return{signed_id:void 0,public_key:void 0,test_delay:void 0,video_frame:void 0,login_request:void 0,login_response:void 0,hash:void 0,mouse_event:void 0,audio_frame:void 0,cursor_data:void 0,cursor_position:void 0,cursor_id:void 0,key_event:void 0,clipboard:void 0,file_action:void 0,file_response:void 0,misc:void 0}}const Ke={encode(e,r=a.Writer.create()){return e.signed_id!==void 0&&Se.encode(e.signed_id,r.uint32(26).fork()).ldelim(),e.public_key!==void 0&&C.encode(e.public_key,r.uint32(34).fork()).ldelim(),e.test_delay!==void 0&&Ee.encode(e.test_delay,r.uint32(42).fork()).ldelim(),e.video_frame!==void 0&&Z.encode(e.video_frame,r.uint32(50).fork()).ldelim(),e.login_request!==void 0&&I.encode(e.login_request,r.uint32(58).fork()).ldelim(),e.login_response!==void 0&&j.encode(e.login_response,r.uint32(66).fork()).ldelim(),e.hash!==void 0&&ie.encode(e.hash,r.uint32(74).fork()).ldelim(),e.mouse_event!==void 0&&b.encode(e.mouse_event,r.uint32(82).fork()).ldelim(),e.audio_frame!==void 0&&Ne.encode(e.audio_frame,r.uint32(90).fork()).ldelim(),e.cursor_data!==void 0&&ee.encode(e.cursor_data,r.uint32(98).fork()).ldelim(),e.cursor_position!==void 0&&re.encode(e.cursor_position,r.uint32(106).fork()).ldelim(),e.cursor_id!==void 0&&r.uint32(112).uint64(e.cursor_id),e.key_event!==void 0&&v.encode(e.key_event,r.uint32(122).fork()).ldelim(),e.clipboard!==void 0&&ne.encode(e.clipboard,r.uint32(130).fork()).ldelim(),e.file_action!==void 0&&se.encode(e.file_action,r.uint32(138).fork()).ldelim(),e.file_response!==void 0&&de.encode(e.file_response,r.uint32(146).fork()).ldelim(),e.misc!==void 0&&E.encode(e.misc,r.uint32(154).fork()).ldelim(),r},decode(e,r){const i=e instanceof a.Reader?e:new a.Reader(e);let t=r===void 0?i.len:i.pos+r;const n=oi();for(;i.pos>>3){case 3:n.signed_id=Se.decode(i,i.uint32());break;case 4:n.public_key=C.decode(i,i.uint32());break;case 5:n.test_delay=Ee.decode(i,i.uint32());break;case 6:n.video_frame=Z.decode(i,i.uint32());break;case 7:n.login_request=I.decode(i,i.uint32());break;case 8:n.login_response=j.decode(i,i.uint32());break;case 9:n.hash=ie.decode(i,i.uint32());break;case 10:n.mouse_event=b.decode(i,i.uint32());break;case 11:n.audio_frame=Ne.decode(i,i.uint32());break;case 12:n.cursor_data=ee.decode(i,i.uint32());break;case 13:n.cursor_position=re.decode(i,i.uint32());break;case 14:n.cursor_id=T(i.uint64());break;case 15:n.key_event=v.decode(i,i.uint32());break;case 16:n.clipboard=ne.decode(i,i.uint32());break;case 17:n.file_action=se.decode(i,i.uint32());break;case 18:n.file_response=de.decode(i,i.uint32());break;case 19:n.misc=E.decode(i,i.uint32());break;default:i.skipType(o&7);break}}return n},fromJSON(e){return{signed_id:s(e.signed_id)?Se.fromJSON(e.signed_id):void 0,public_key:s(e.public_key)?C.fromJSON(e.public_key):void 0,test_delay:s(e.test_delay)?Ee.fromJSON(e.test_delay):void 0,video_frame:s(e.video_frame)?Z.fromJSON(e.video_frame):void 0,login_request:s(e.login_request)?I.fromJSON(e.login_request):void 0,login_response:s(e.login_response)?j.fromJSON(e.login_response):void 0,hash:s(e.hash)?ie.fromJSON(e.hash):void 0,mouse_event:s(e.mouse_event)?b.fromJSON(e.mouse_event):void 0,audio_frame:s(e.audio_frame)?Ne.fromJSON(e.audio_frame):void 0,cursor_data:s(e.cursor_data)?ee.fromJSON(e.cursor_data):void 0,cursor_position:s(e.cursor_position)?re.fromJSON(e.cursor_position):void 0,cursor_id:s(e.cursor_id)?Number(e.cursor_id):void 0,key_event:s(e.key_event)?v.fromJSON(e.key_event):void 0,clipboard:s(e.clipboard)?ne.fromJSON(e.clipboard):void 0,file_action:s(e.file_action)?se.fromJSON(e.file_action):void 0,file_response:s(e.file_response)?de.fromJSON(e.file_response):void 0,misc:s(e.misc)?E.fromJSON(e.misc):void 0}},toJSON(e){const r={};return e.signed_id!==void 0&&(r.signed_id=e.signed_id?Se.toJSON(e.signed_id):void 0),e.public_key!==void 0&&(r.public_key=e.public_key?C.toJSON(e.public_key):void 0),e.test_delay!==void 0&&(r.test_delay=e.test_delay?Ee.toJSON(e.test_delay):void 0),e.video_frame!==void 0&&(r.video_frame=e.video_frame?Z.toJSON(e.video_frame):void 0),e.login_request!==void 0&&(r.login_request=e.login_request?I.toJSON(e.login_request):void 0),e.login_response!==void 0&&(r.login_response=e.login_response?j.toJSON(e.login_response):void 0),e.hash!==void 0&&(r.hash=e.hash?ie.toJSON(e.hash):void 0),e.mouse_event!==void 0&&(r.mouse_event=e.mouse_event?b.toJSON(e.mouse_event):void 0),e.audio_frame!==void 0&&(r.audio_frame=e.audio_frame?Ne.toJSON(e.audio_frame):void 0),e.cursor_data!==void 0&&(r.cursor_data=e.cursor_data?ee.toJSON(e.cursor_data):void 0),e.cursor_position!==void 0&&(r.cursor_position=e.cursor_position?re.toJSON(e.cursor_position):void 0),e.cursor_id!==void 0&&(r.cursor_id=Math.round(e.cursor_id)),e.key_event!==void 0&&(r.key_event=e.key_event?v.toJSON(e.key_event):void 0),e.clipboard!==void 0&&(r.clipboard=e.clipboard?ne.toJSON(e.clipboard):void 0),e.file_action!==void 0&&(r.file_action=e.file_action?se.toJSON(e.file_action):void 0),e.file_response!==void 0&&(r.file_response=e.file_response?de.toJSON(e.file_response):void 0),e.misc!==void 0&&(r.misc=e.misc?E.toJSON(e.misc):void 0),r},fromPartial(e){var i;const r=oi();return r.signed_id=e.signed_id!==void 0&&e.signed_id!==null?Se.fromPartial(e.signed_id):void 0,r.public_key=e.public_key!==void 0&&e.public_key!==null?C.fromPartial(e.public_key):void 0,r.test_delay=e.test_delay!==void 0&&e.test_delay!==null?Ee.fromPartial(e.test_delay):void 0,r.video_frame=e.video_frame!==void 0&&e.video_frame!==null?Z.fromPartial(e.video_frame):void 0,r.login_request=e.login_request!==void 0&&e.login_request!==null?I.fromPartial(e.login_request):void 0,r.login_response=e.login_response!==void 0&&e.login_response!==null?j.fromPartial(e.login_response):void 0,r.hash=e.hash!==void 0&&e.hash!==null?ie.fromPartial(e.hash):void 0,r.mouse_event=e.mouse_event!==void 0&&e.mouse_event!==null?b.fromPartial(e.mouse_event):void 0,r.audio_frame=e.audio_frame!==void 0&&e.audio_frame!==null?Ne.fromPartial(e.audio_frame):void 0,r.cursor_data=e.cursor_data!==void 0&&e.cursor_data!==null?ee.fromPartial(e.cursor_data):void 0,r.cursor_position=e.cursor_position!==void 0&&e.cursor_position!==null?re.fromPartial(e.cursor_position):void 0,r.cursor_id=(i=e.cursor_id)!=null?i:void 0,r.key_event=e.key_event!==void 0&&e.key_event!==null?v.fromPartial(e.key_event):void 0,r.clipboard=e.clipboard!==void 0&&e.clipboard!==null?ne.fromPartial(e.clipboard):void 0,r.file_action=e.file_action!==void 0&&e.file_action!==null?se.fromPartial(e.file_action):void 0,r.file_response=e.file_response!==void 0&&e.file_response!==null?de.fromPartial(e.file_response):void 0,r.misc=e.misc!==void 0&&e.misc!==null?E.fromPartial(e.misc):void 0,r}};var B=(()=>{if(typeof B!="undefined")return B;if(typeof self!="undefined")return self;if(typeof window!="undefined")return window;if(typeof global!="undefined")return global;throw"Unable to locate global object"})();const on=B.atob||(e=>B.Buffer.from(e,"base64").toString("binary"));function A(e){const r=on(e),i=new Uint8Array(r.length);for(let t=0;tB.Buffer.from(e,"binary").toString("base64"));function F(e){const r=[];for(const i of e)r.push(String.fromCharCode(i));return an(r.join(""))}function T(e){if(e.gt(Number.MAX_SAFE_INTEGER))throw new B.Error("Value is larger than Number.MAX_SAFE_INTEGER");return e.toNumber()}a.util.Long!==Me&&(a.util.Long=Me,a.configure());function s(e){return e!=null}var Qe;(function(e){e[e.DEFAULT_CONN=0]="DEFAULT_CONN",e[e.FILE_TRANSFER=1]="FILE_TRANSFER",e[e.PORT_FORWARD=2]="PORT_FORWARD",e[e.RDP=3]="RDP",e[e.UNRECOGNIZED=-1]="UNRECOGNIZED"})(Qe||(Qe={}));function ai(e){switch(e){case 0:case"DEFAULT_CONN":return 0;case 1:case"FILE_TRANSFER":return 1;case 2:case"PORT_FORWARD":return 2;case 3:case"RDP":return 3;case-1:case"UNRECOGNIZED":default:return-1}}function si(e){switch(e){case 0:return"DEFAULT_CONN";case 1:return"FILE_TRANSFER";case 2:return"PORT_FORWARD";case 3:return"RDP";default:return"UNKNOWN"}}var Xe;(function(e){e[e.UNKNOWN_NAT=0]="UNKNOWN_NAT",e[e.ASYMMETRIC=1]="ASYMMETRIC",e[e.SYMMETRIC=2]="SYMMETRIC",e[e.UNRECOGNIZED=-1]="UNRECOGNIZED"})(Xe||(Xe={}));function Le(e){switch(e){case 0:case"UNKNOWN_NAT":return 0;case 1:case"ASYMMETRIC":return 1;case 2:case"SYMMETRIC":return 2;case-1:case"UNRECOGNIZED":default:return-1}}function Ve(e){switch(e){case 0:return"UNKNOWN_NAT";case 1:return"ASYMMETRIC";case 2:return"SYMMETRIC";default:return"UNKNOWN"}}var ui;(function(e){e[e.OK=0]="OK",e[e.UUID_MISMATCH=2]="UUID_MISMATCH",e[e.ID_EXISTS=3]="ID_EXISTS",e[e.TOO_FREQUENT=4]="TOO_FREQUENT",e[e.INVALID_ID_FORMAT=5]="INVALID_ID_FORMAT",e[e.NOT_SUPPORT=6]="NOT_SUPPORT",e[e.SERVER_ERROR=7]="SERVER_ERROR",e[e.UNRECOGNIZED=-1]="UNRECOGNIZED"})(ui||(ui={}));function sn(e){switch(e){case 0:case"OK":return 0;case 2:case"UUID_MISMATCH":return 2;case 3:case"ID_EXISTS":return 3;case 4:case"TOO_FREQUENT":return 4;case 5:case"INVALID_ID_FORMAT":return 5;case 6:case"NOT_SUPPORT":return 6;case 7:case"SERVER_ERROR":return 7;case-1:case"UNRECOGNIZED":default:return-1}}function un(e){switch(e){case 0:return"OK";case 2:return"UUID_MISMATCH";case 3:return"ID_EXISTS";case 4:return"TOO_FREQUENT";case 5:return"INVALID_ID_FORMAT";case 6:return"NOT_SUPPORT";case 7:return"SERVER_ERROR";default:return"UNKNOWN"}}var U;(function(e){e[e.ID_NOT_EXIST=0]="ID_NOT_EXIST",e[e.OFFLINE=2]="OFFLINE",e[e.LICENSE_MISMATCH=3]="LICENSE_MISMATCH",e[e.LICENSE_OVERUSE=4]="LICENSE_OVERUSE",e[e.UNRECOGNIZED=-1]="UNRECOGNIZED"})(U||(U={}));function dn(e){switch(e){case 0:case"ID_NOT_EXIST":return 0;case 2:case"OFFLINE":return 2;case 3:case"LICENSE_MISMATCH":return 3;case 4:case"LICENSE_OVERUSE":return 4;case-1:case"UNRECOGNIZED":default:return-1}}function cn(e){switch(e){case 0:return"ID_NOT_EXIST";case 2:return"OFFLINE";case 3:return"LICENSE_MISMATCH";case 4:return"LICENSE_OVERUSE";default:return"UNKNOWN"}}function di(){return{id:"",serial:0}}const Ae={encode(e,r=a.Writer.create()){return e.id!==""&&r.uint32(10).string(e.id),e.serial!==0&&r.uint32(16).int32(e.serial),r},decode(e,r){const i=e instanceof a.Reader?e:new a.Reader(e);let t=r===void 0?i.len:i.pos+r;const n=di();for(;i.pos>>3){case 1:n.id=i.string();break;case 2:n.serial=i.int32();break;default:i.skipType(o&7);break}}return n},fromJSON(e){return{id:d(e.id)?String(e.id):"",serial:d(e.serial)?Number(e.serial):0}},toJSON(e){const r={};return e.id!==void 0&&(r.id=e.id),e.serial!==void 0&&(r.serial=Math.round(e.serial)),r},fromPartial(e){var i,t;const r=di();return r.id=(i=e.id)!=null?i:"",r.serial=(t=e.serial)!=null?t:0,r}};function ci(){return{request_pk:!1}}const Fe={encode(e,r=a.Writer.create()){return e.request_pk===!0&&r.uint32(16).bool(e.request_pk),r},decode(e,r){const i=e instanceof a.Reader?e:new a.Reader(e);let t=r===void 0?i.len:i.pos+r;const n=ci();for(;i.pos>>3){case 2:n.request_pk=i.bool();break;default:i.skipType(o&7);break}}return n},fromJSON(e){return{request_pk:d(e.request_pk)?Boolean(e.request_pk):!1}},toJSON(e){const r={};return e.request_pk!==void 0&&(r.request_pk=e.request_pk),r},fromPartial(e){var i;const r=ci();return r.request_pk=(i=e.request_pk)!=null?i:!1,r}};function li(){return{id:"",nat_type:0,licence_key:"",conn_type:0}}const q={encode(e,r=a.Writer.create()){return e.id!==""&&r.uint32(10).string(e.id),e.nat_type!==0&&r.uint32(16).int32(e.nat_type),e.licence_key!==""&&r.uint32(26).string(e.licence_key),e.conn_type!==0&&r.uint32(32).int32(e.conn_type),r},decode(e,r){const i=e instanceof a.Reader?e:new a.Reader(e);let t=r===void 0?i.len:i.pos+r;const n=li();for(;i.pos>>3){case 1:n.id=i.string();break;case 2:n.nat_type=i.int32();break;case 3:n.licence_key=i.string();break;case 4:n.conn_type=i.int32();break;default:i.skipType(o&7);break}}return n},fromJSON(e){return{id:d(e.id)?String(e.id):"",nat_type:d(e.nat_type)?Le(e.nat_type):0,licence_key:d(e.licence_key)?String(e.licence_key):"",conn_type:d(e.conn_type)?ai(e.conn_type):0}},toJSON(e){const r={};return e.id!==void 0&&(r.id=e.id),e.nat_type!==void 0&&(r.nat_type=Ve(e.nat_type)),e.licence_key!==void 0&&(r.licence_key=e.licence_key),e.conn_type!==void 0&&(r.conn_type=si(e.conn_type)),r},fromPartial(e){var i,t,n,o;const r=li();return r.id=(i=e.id)!=null?i:"",r.nat_type=(t=e.nat_type)!=null?t:0,r.licence_key=(n=e.licence_key)!=null?n:"",r.conn_type=(o=e.conn_type)!=null?o:0,r}};function _i(){return{socket_addr:new Uint8Array,relay_server:"",nat_type:0}}const De={encode(e,r=a.Writer.create()){return e.socket_addr.length!==0&&r.uint32(10).bytes(e.socket_addr),e.relay_server!==""&&r.uint32(18).string(e.relay_server),e.nat_type!==0&&r.uint32(24).int32(e.nat_type),r},decode(e,r){const i=e instanceof a.Reader?e:new a.Reader(e);let t=r===void 0?i.len:i.pos+r;const n=_i();for(;i.pos>>3){case 1:n.socket_addr=i.bytes();break;case 2:n.relay_server=i.string();break;case 3:n.nat_type=i.int32();break;default:i.skipType(o&7);break}}return n},fromJSON(e){return{socket_addr:d(e.socket_addr)?h(e.socket_addr):new Uint8Array,relay_server:d(e.relay_server)?String(e.relay_server):"",nat_type:d(e.nat_type)?Le(e.nat_type):0}},toJSON(e){const r={};return e.socket_addr!==void 0&&(r.socket_addr=y(e.socket_addr!==void 0?e.socket_addr:new Uint8Array)),e.relay_server!==void 0&&(r.relay_server=e.relay_server),e.nat_type!==void 0&&(r.nat_type=Ve(e.nat_type)),r},fromPartial(e){var i,t,n;const r=_i();return r.socket_addr=(i=e.socket_addr)!=null?i:new Uint8Array,r.relay_server=(t=e.relay_server)!=null?t:"",r.nat_type=(n=e.nat_type)!=null?n:0,r}};function pi(){return{serial:0}}const Oe={encode(e,r=a.Writer.create()){return e.serial!==0&&r.uint32(8).int32(e.serial),r},decode(e,r){const i=e instanceof a.Reader?e:new a.Reader(e);let t=r===void 0?i.len:i.pos+r;const n=pi();for(;i.pos>>3){case 1:n.serial=i.int32();break;default:i.skipType(o&7);break}}return n},fromJSON(e){return{serial:d(e.serial)?Number(e.serial):0}},toJSON(e){const r={};return e.serial!==void 0&&(r.serial=Math.round(e.serial)),r},fromPartial(e){var i;const r=pi();return r.serial=(i=e.serial)!=null?i:0,r}};function fi(){return{port:0,cu:void 0}}const Re={encode(e,r=a.Writer.create()){return e.port!==0&&r.uint32(8).int32(e.port),e.cu!==void 0&&S.encode(e.cu,r.uint32(18).fork()).ldelim(),r},decode(e,r){const i=e instanceof a.Reader?e:new a.Reader(e);let t=r===void 0?i.len:i.pos+r;const n=fi();for(;i.pos>>3){case 1:n.port=i.int32();break;case 2:n.cu=S.decode(i,i.uint32());break;default:i.skipType(o&7);break}}return n},fromJSON(e){return{port:d(e.port)?Number(e.port):0,cu:d(e.cu)?S.fromJSON(e.cu):void 0}},toJSON(e){const r={};return e.port!==void 0&&(r.port=Math.round(e.port)),e.cu!==void 0&&(r.cu=e.cu?S.toJSON(e.cu):void 0),r},fromPartial(e){var i;const r=fi();return r.port=(i=e.port)!=null?i:0,r.cu=e.cu!==void 0&&e.cu!==null?S.fromPartial(e.cu):void 0,r}};function vi(){return{socket_addr:new Uint8Array,id:"",relay_server:"",nat_type:0,version:""}}const Ce={encode(e,r=a.Writer.create()){return e.socket_addr.length!==0&&r.uint32(10).bytes(e.socket_addr),e.id!==""&&r.uint32(18).string(e.id),e.relay_server!==""&&r.uint32(26).string(e.relay_server),e.nat_type!==0&&r.uint32(32).int32(e.nat_type),e.version!==""&&r.uint32(42).string(e.version),r},decode(e,r){const i=e instanceof a.Reader?e:new a.Reader(e);let t=r===void 0?i.len:i.pos+r;const n=vi();for(;i.pos>>3){case 1:n.socket_addr=i.bytes();break;case 2:n.id=i.string();break;case 3:n.relay_server=i.string();break;case 4:n.nat_type=i.int32();break;case 5:n.version=i.string();break;default:i.skipType(o&7);break}}return n},fromJSON(e){return{socket_addr:d(e.socket_addr)?h(e.socket_addr):new Uint8Array,id:d(e.id)?String(e.id):"",relay_server:d(e.relay_server)?String(e.relay_server):"",nat_type:d(e.nat_type)?Le(e.nat_type):0,version:d(e.version)?String(e.version):""}},toJSON(e){const r={};return e.socket_addr!==void 0&&(r.socket_addr=y(e.socket_addr!==void 0?e.socket_addr:new Uint8Array)),e.id!==void 0&&(r.id=e.id),e.relay_server!==void 0&&(r.relay_server=e.relay_server),e.nat_type!==void 0&&(r.nat_type=Ve(e.nat_type)),e.version!==void 0&&(r.version=e.version),r},fromPartial(e){var i,t,n,o,u;const r=vi();return r.socket_addr=(i=e.socket_addr)!=null?i:new Uint8Array,r.id=(t=e.id)!=null?t:"",r.relay_server=(n=e.relay_server)!=null?n:"",r.nat_type=(o=e.nat_type)!=null?o:0,r.version=(u=e.version)!=null?u:"",r}};function hi(){return{id:"",uuid:new Uint8Array,pk:new Uint8Array,old_id:""}}const Be={encode(e,r=a.Writer.create()){return e.id!==""&&r.uint32(10).string(e.id),e.uuid.length!==0&&r.uint32(18).bytes(e.uuid),e.pk.length!==0&&r.uint32(26).bytes(e.pk),e.old_id!==""&&r.uint32(34).string(e.old_id),r},decode(e,r){const i=e instanceof a.Reader?e:new a.Reader(e);let t=r===void 0?i.len:i.pos+r;const n=hi();for(;i.pos>>3){case 1:n.id=i.string();break;case 2:n.uuid=i.bytes();break;case 3:n.pk=i.bytes();break;case 4:n.old_id=i.string();break;default:i.skipType(o&7);break}}return n},fromJSON(e){return{id:d(e.id)?String(e.id):"",uuid:d(e.uuid)?h(e.uuid):new Uint8Array,pk:d(e.pk)?h(e.pk):new Uint8Array,old_id:d(e.old_id)?String(e.old_id):""}},toJSON(e){const r={};return e.id!==void 0&&(r.id=e.id),e.uuid!==void 0&&(r.uuid=y(e.uuid!==void 0?e.uuid:new Uint8Array)),e.pk!==void 0&&(r.pk=y(e.pk!==void 0?e.pk:new Uint8Array)),e.old_id!==void 0&&(r.old_id=e.old_id),r},fromPartial(e){var i,t,n,o;const r=hi();return r.id=(i=e.id)!=null?i:"",r.uuid=(t=e.uuid)!=null?t:new Uint8Array,r.pk=(n=e.pk)!=null?n:new Uint8Array,r.old_id=(o=e.old_id)!=null?o:"",r}};function yi(){return{result:0}}const Pe={encode(e,r=a.Writer.create()){return e.result!==0&&r.uint32(8).int32(e.result),r},decode(e,r){const i=e instanceof a.Reader?e:new a.Reader(e);let t=r===void 0?i.len:i.pos+r;const n=yi();for(;i.pos>>3){case 1:n.result=i.int32();break;default:i.skipType(o&7);break}}return n},fromJSON(e){return{result:d(e.result)?sn(e.result):0}},toJSON(e){const r={};return e.result!==void 0&&(r.result=un(e.result)),r},fromPartial(e){var i;const r=yi();return r.result=(i=e.result)!=null?i:0,r}};function ki(){return{socket_addr:new Uint8Array,pk:new Uint8Array,failure:0,relay_server:"",nat_type:void 0,is_local:void 0,other_failure:""}}const xe={encode(e,r=a.Writer.create()){return e.socket_addr.length!==0&&r.uint32(10).bytes(e.socket_addr),e.pk.length!==0&&r.uint32(18).bytes(e.pk),e.failure!==0&&r.uint32(24).int32(e.failure),e.relay_server!==""&&r.uint32(34).string(e.relay_server),e.nat_type!==void 0&&r.uint32(40).int32(e.nat_type),e.is_local!==void 0&&r.uint32(48).bool(e.is_local),e.other_failure!==""&&r.uint32(58).string(e.other_failure),r},decode(e,r){const i=e instanceof a.Reader?e:new a.Reader(e);let t=r===void 0?i.len:i.pos+r;const n=ki();for(;i.pos>>3){case 1:n.socket_addr=i.bytes();break;case 2:n.pk=i.bytes();break;case 3:n.failure=i.int32();break;case 4:n.relay_server=i.string();break;case 5:n.nat_type=i.int32();break;case 6:n.is_local=i.bool();break;case 7:n.other_failure=i.string();break;default:i.skipType(o&7);break}}return n},fromJSON(e){return{socket_addr:d(e.socket_addr)?h(e.socket_addr):new Uint8Array,pk:d(e.pk)?h(e.pk):new Uint8Array,failure:d(e.failure)?dn(e.failure):0,relay_server:d(e.relay_server)?String(e.relay_server):"",nat_type:d(e.nat_type)?Le(e.nat_type):void 0,is_local:d(e.is_local)?Boolean(e.is_local):void 0,other_failure:d(e.other_failure)?String(e.other_failure):""}},toJSON(e){const r={};return e.socket_addr!==void 0&&(r.socket_addr=y(e.socket_addr!==void 0?e.socket_addr:new Uint8Array)),e.pk!==void 0&&(r.pk=y(e.pk!==void 0?e.pk:new Uint8Array)),e.failure!==void 0&&(r.failure=cn(e.failure)),e.relay_server!==void 0&&(r.relay_server=e.relay_server),e.nat_type!==void 0&&(r.nat_type=e.nat_type!==void 0?Ve(e.nat_type):void 0),e.is_local!==void 0&&(r.is_local=e.is_local),e.other_failure!==void 0&&(r.other_failure=e.other_failure),r},fromPartial(e){var i,t,n,o,u,c,l;const r=ki();return r.socket_addr=(i=e.socket_addr)!=null?i:new Uint8Array,r.pk=(t=e.pk)!=null?t:new Uint8Array,r.failure=(n=e.failure)!=null?n:0,r.relay_server=(o=e.relay_server)!=null?o:"",r.nat_type=(u=e.nat_type)!=null?u:void 0,r.is_local=(c=e.is_local)!=null?c:void 0,r.other_failure=(l=e.other_failure)!=null?l:"",r}};function mi(){return{serial:0,rendezvous_servers:[]}}const S={encode(e,r=a.Writer.create()){e.serial!==0&&r.uint32(8).int32(e.serial);for(const i of e.rendezvous_servers)r.uint32(18).string(i);return r},decode(e,r){const i=e instanceof a.Reader?e:new a.Reader(e);let t=r===void 0?i.len:i.pos+r;const n=mi();for(;i.pos>>3){case 1:n.serial=i.int32();break;case 2:n.rendezvous_servers.push(i.string());break;default:i.skipType(o&7);break}}return n},fromJSON(e){return{serial:d(e.serial)?Number(e.serial):0,rendezvous_servers:Array.isArray(e==null?void 0:e.rendezvous_servers)?e.rendezvous_servers.map(r=>String(r)):[]}},toJSON(e){const r={};return e.serial!==void 0&&(r.serial=Math.round(e.serial)),e.rendezvous_servers?r.rendezvous_servers=e.rendezvous_servers.map(i=>i):r.rendezvous_servers=[],r},fromPartial(e){var i,t;const r=mi();return r.serial=(i=e.serial)!=null?i:0,r.rendezvous_servers=((t=e.rendezvous_servers)==null?void 0:t.map(n=>n))||[],r}};function Ei(){return{id:"",uuid:"",socket_addr:new Uint8Array,relay_server:"",secure:!1,licence_key:"",conn_type:0}}const M={encode(e,r=a.Writer.create()){return e.id!==""&&r.uint32(10).string(e.id),e.uuid!==""&&r.uint32(18).string(e.uuid),e.socket_addr.length!==0&&r.uint32(26).bytes(e.socket_addr),e.relay_server!==""&&r.uint32(34).string(e.relay_server),e.secure===!0&&r.uint32(40).bool(e.secure),e.licence_key!==""&&r.uint32(50).string(e.licence_key),e.conn_type!==0&&r.uint32(56).int32(e.conn_type),r},decode(e,r){const i=e instanceof a.Reader?e:new a.Reader(e);let t=r===void 0?i.len:i.pos+r;const n=Ei();for(;i.pos>>3){case 1:n.id=i.string();break;case 2:n.uuid=i.string();break;case 3:n.socket_addr=i.bytes();break;case 4:n.relay_server=i.string();break;case 5:n.secure=i.bool();break;case 6:n.licence_key=i.string();break;case 7:n.conn_type=i.int32();break;default:i.skipType(o&7);break}}return n},fromJSON(e){return{id:d(e.id)?String(e.id):"",uuid:d(e.uuid)?String(e.uuid):"",socket_addr:d(e.socket_addr)?h(e.socket_addr):new Uint8Array,relay_server:d(e.relay_server)?String(e.relay_server):"",secure:d(e.secure)?Boolean(e.secure):!1,licence_key:d(e.licence_key)?String(e.licence_key):"",conn_type:d(e.conn_type)?ai(e.conn_type):0}},toJSON(e){const r={};return e.id!==void 0&&(r.id=e.id),e.uuid!==void 0&&(r.uuid=e.uuid),e.socket_addr!==void 0&&(r.socket_addr=y(e.socket_addr!==void 0?e.socket_addr:new Uint8Array)),e.relay_server!==void 0&&(r.relay_server=e.relay_server),e.secure!==void 0&&(r.secure=e.secure),e.licence_key!==void 0&&(r.licence_key=e.licence_key),e.conn_type!==void 0&&(r.conn_type=si(e.conn_type)),r},fromPartial(e){var i,t,n,o,u,c,l;const r=Ei();return r.id=(i=e.id)!=null?i:"",r.uuid=(t=e.uuid)!=null?t:"",r.socket_addr=(n=e.socket_addr)!=null?n:new Uint8Array,r.relay_server=(o=e.relay_server)!=null?o:"",r.secure=(u=e.secure)!=null?u:!1,r.licence_key=(c=e.licence_key)!=null?c:"",r.conn_type=(l=e.conn_type)!=null?l:0,r}};function Si(){return{socket_addr:new Uint8Array,uuid:"",relay_server:"",id:void 0,pk:void 0,refuse_reason:"",version:""}}const Ie={encode(e,r=a.Writer.create()){return e.socket_addr.length!==0&&r.uint32(10).bytes(e.socket_addr),e.uuid!==""&&r.uint32(18).string(e.uuid),e.relay_server!==""&&r.uint32(26).string(e.relay_server),e.id!==void 0&&r.uint32(34).string(e.id),e.pk!==void 0&&r.uint32(42).bytes(e.pk),e.refuse_reason!==""&&r.uint32(50).string(e.refuse_reason),e.version!==""&&r.uint32(58).string(e.version),r},decode(e,r){const i=e instanceof a.Reader?e:new a.Reader(e);let t=r===void 0?i.len:i.pos+r;const n=Si();for(;i.pos>>3){case 1:n.socket_addr=i.bytes();break;case 2:n.uuid=i.string();break;case 3:n.relay_server=i.string();break;case 4:n.id=i.string();break;case 5:n.pk=i.bytes();break;case 6:n.refuse_reason=i.string();break;case 7:n.version=i.string();break;default:i.skipType(o&7);break}}return n},fromJSON(e){return{socket_addr:d(e.socket_addr)?h(e.socket_addr):new Uint8Array,uuid:d(e.uuid)?String(e.uuid):"",relay_server:d(e.relay_server)?String(e.relay_server):"",id:d(e.id)?String(e.id):void 0,pk:d(e.pk)?h(e.pk):void 0,refuse_reason:d(e.refuse_reason)?String(e.refuse_reason):"",version:d(e.version)?String(e.version):""}},toJSON(e){const r={};return e.socket_addr!==void 0&&(r.socket_addr=y(e.socket_addr!==void 0?e.socket_addr:new Uint8Array)),e.uuid!==void 0&&(r.uuid=e.uuid),e.relay_server!==void 0&&(r.relay_server=e.relay_server),e.id!==void 0&&(r.id=e.id),e.pk!==void 0&&(r.pk=e.pk!==void 0?y(e.pk):void 0),e.refuse_reason!==void 0&&(r.refuse_reason=e.refuse_reason),e.version!==void 0&&(r.version=e.version),r},fromPartial(e){var i,t,n,o,u,c,l;const r=Si();return r.socket_addr=(i=e.socket_addr)!=null?i:new Uint8Array,r.uuid=(t=e.uuid)!=null?t:"",r.relay_server=(n=e.relay_server)!=null?n:"",r.id=(o=e.id)!=null?o:void 0,r.pk=(u=e.pk)!=null?u:void 0,r.refuse_reason=(c=e.refuse_reason)!=null?c:"",r.version=(l=e.version)!=null?l:"",r}};function wi(){return{url:""}}const be={encode(e,r=a.Writer.create()){return e.url!==""&&r.uint32(10).string(e.url),r},decode(e,r){const i=e instanceof a.Reader?e:new a.Reader(e);let t=r===void 0?i.len:i.pos+r;const n=wi();for(;i.pos>>3){case 1:n.url=i.string();break;default:i.skipType(o&7);break}}return n},fromJSON(e){return{url:d(e.url)?String(e.url):""}},toJSON(e){const r={};return e.url!==void 0&&(r.url=e.url),r},fromPartial(e){var i;const r=wi();return r.url=(i=e.url)!=null?i:"",r}};function Ni(){return{socket_addr:new Uint8Array,relay_server:""}}const Je={encode(e,r=a.Writer.create()){return e.socket_addr.length!==0&&r.uint32(10).bytes(e.socket_addr),e.relay_server!==""&&r.uint32(18).string(e.relay_server),r},decode(e,r){const i=e instanceof a.Reader?e:new a.Reader(e);let t=r===void 0?i.len:i.pos+r;const n=Ni();for(;i.pos>>3){case 1:n.socket_addr=i.bytes();break;case 2:n.relay_server=i.string();break;default:i.skipType(o&7);break}}return n},fromJSON(e){return{socket_addr:d(e.socket_addr)?h(e.socket_addr):new Uint8Array,relay_server:d(e.relay_server)?String(e.relay_server):""}},toJSON(e){const r={};return e.socket_addr!==void 0&&(r.socket_addr=y(e.socket_addr!==void 0?e.socket_addr:new Uint8Array)),e.relay_server!==void 0&&(r.relay_server=e.relay_server),r},fromPartial(e){var i,t;const r=Ni();return r.socket_addr=(i=e.socket_addr)!=null?i:new Uint8Array,r.relay_server=(t=e.relay_server)!=null?t:"",r}};function Ai(){return{socket_addr:new Uint8Array,local_addr:new Uint8Array,relay_server:"",id:"",version:""}}const Te={encode(e,r=a.Writer.create()){return e.socket_addr.length!==0&&r.uint32(10).bytes(e.socket_addr),e.local_addr.length!==0&&r.uint32(18).bytes(e.local_addr),e.relay_server!==""&&r.uint32(26).string(e.relay_server),e.id!==""&&r.uint32(34).string(e.id),e.version!==""&&r.uint32(42).string(e.version),r},decode(e,r){const i=e instanceof a.Reader?e:new a.Reader(e);let t=r===void 0?i.len:i.pos+r;const n=Ai();for(;i.pos>>3){case 1:n.socket_addr=i.bytes();break;case 2:n.local_addr=i.bytes();break;case 3:n.relay_server=i.string();break;case 4:n.id=i.string();break;case 5:n.version=i.string();break;default:i.skipType(o&7);break}}return n},fromJSON(e){return{socket_addr:d(e.socket_addr)?h(e.socket_addr):new Uint8Array,local_addr:d(e.local_addr)?h(e.local_addr):new Uint8Array,relay_server:d(e.relay_server)?String(e.relay_server):"",id:d(e.id)?String(e.id):"",version:d(e.version)?String(e.version):""}},toJSON(e){const r={};return e.socket_addr!==void 0&&(r.socket_addr=y(e.socket_addr!==void 0?e.socket_addr:new Uint8Array)),e.local_addr!==void 0&&(r.local_addr=y(e.local_addr!==void 0?e.local_addr:new Uint8Array)),e.relay_server!==void 0&&(r.relay_server=e.relay_server),e.id!==void 0&&(r.id=e.id),e.version!==void 0&&(r.version=e.version),r},fromPartial(e){var i,t,n,o,u;const r=Ai();return r.socket_addr=(i=e.socket_addr)!=null?i:new Uint8Array,r.local_addr=(t=e.local_addr)!=null?t:new Uint8Array,r.relay_server=(n=e.relay_server)!=null?n:"",r.id=(o=e.id)!=null?o:"",r.version=(u=e.version)!=null?u:"",r}};function Fi(){return{cmd:"",mac:"",id:"",username:"",hostname:"",platform:"",misc:""}}const Ue={encode(e,r=a.Writer.create()){return e.cmd!==""&&r.uint32(10).string(e.cmd),e.mac!==""&&r.uint32(18).string(e.mac),e.id!==""&&r.uint32(26).string(e.id),e.username!==""&&r.uint32(34).string(e.username),e.hostname!==""&&r.uint32(42).string(e.hostname),e.platform!==""&&r.uint32(50).string(e.platform),e.misc!==""&&r.uint32(58).string(e.misc),r},decode(e,r){const i=e instanceof a.Reader?e:new a.Reader(e);let t=r===void 0?i.len:i.pos+r;const n=Fi();for(;i.pos>>3){case 1:n.cmd=i.string();break;case 2:n.mac=i.string();break;case 3:n.id=i.string();break;case 4:n.username=i.string();break;case 5:n.hostname=i.string();break;case 6:n.platform=i.string();break;case 7:n.misc=i.string();break;default:i.skipType(o&7);break}}return n},fromJSON(e){return{cmd:d(e.cmd)?String(e.cmd):"",mac:d(e.mac)?String(e.mac):"",id:d(e.id)?String(e.id):"",username:d(e.username)?String(e.username):"",hostname:d(e.hostname)?String(e.hostname):"",platform:d(e.platform)?String(e.platform):"",misc:d(e.misc)?String(e.misc):""}},toJSON(e){const r={};return e.cmd!==void 0&&(r.cmd=e.cmd),e.mac!==void 0&&(r.mac=e.mac),e.id!==void 0&&(r.id=e.id),e.username!==void 0&&(r.username=e.username),e.hostname!==void 0&&(r.hostname=e.hostname),e.platform!==void 0&&(r.platform=e.platform),e.misc!==void 0&&(r.misc=e.misc),r},fromPartial(e){var i,t,n,o,u,c,l;const r=Fi();return r.cmd=(i=e.cmd)!=null?i:"",r.mac=(t=e.mac)!=null?t:"",r.id=(n=e.id)!=null?n:"",r.username=(o=e.username)!=null?o:"",r.hostname=(u=e.hostname)!=null?u:"",r.platform=(c=e.platform)!=null?c:"",r.misc=(l=e.misc)!=null?l:"",r}};function Di(){return{register_peer:void 0,register_peer_response:void 0,punch_hole_request:void 0,punch_hole:void 0,punch_hole_sent:void 0,punch_hole_response:void 0,fetch_local_addr:void 0,local_addr:void 0,configure_update:void 0,register_pk:void 0,register_pk_response:void 0,software_update:void 0,request_relay:void 0,relay_response:void 0,test_nat_request:void 0,test_nat_response:void 0,peer_discovery:void 0}}const $e={encode(e,r=a.Writer.create()){return e.register_peer!==void 0&&Ae.encode(e.register_peer,r.uint32(50).fork()).ldelim(),e.register_peer_response!==void 0&&Fe.encode(e.register_peer_response,r.uint32(58).fork()).ldelim(),e.punch_hole_request!==void 0&&q.encode(e.punch_hole_request,r.uint32(66).fork()).ldelim(),e.punch_hole!==void 0&&De.encode(e.punch_hole,r.uint32(74).fork()).ldelim(),e.punch_hole_sent!==void 0&&Ce.encode(e.punch_hole_sent,r.uint32(82).fork()).ldelim(),e.punch_hole_response!==void 0&&xe.encode(e.punch_hole_response,r.uint32(90).fork()).ldelim(),e.fetch_local_addr!==void 0&&Je.encode(e.fetch_local_addr,r.uint32(98).fork()).ldelim(),e.local_addr!==void 0&&Te.encode(e.local_addr,r.uint32(106).fork()).ldelim(),e.configure_update!==void 0&&S.encode(e.configure_update,r.uint32(114).fork()).ldelim(),e.register_pk!==void 0&&Be.encode(e.register_pk,r.uint32(122).fork()).ldelim(),e.register_pk_response!==void 0&&Pe.encode(e.register_pk_response,r.uint32(130).fork()).ldelim(),e.software_update!==void 0&&be.encode(e.software_update,r.uint32(138).fork()).ldelim(),e.request_relay!==void 0&&M.encode(e.request_relay,r.uint32(146).fork()).ldelim(),e.relay_response!==void 0&&Ie.encode(e.relay_response,r.uint32(154).fork()).ldelim(),e.test_nat_request!==void 0&&Oe.encode(e.test_nat_request,r.uint32(162).fork()).ldelim(),e.test_nat_response!==void 0&&Re.encode(e.test_nat_response,r.uint32(170).fork()).ldelim(),e.peer_discovery!==void 0&&Ue.encode(e.peer_discovery,r.uint32(178).fork()).ldelim(),r},decode(e,r){const i=e instanceof a.Reader?e:new a.Reader(e);let t=r===void 0?i.len:i.pos+r;const n=Di();for(;i.pos>>3){case 6:n.register_peer=Ae.decode(i,i.uint32());break;case 7:n.register_peer_response=Fe.decode(i,i.uint32());break;case 8:n.punch_hole_request=q.decode(i,i.uint32());break;case 9:n.punch_hole=De.decode(i,i.uint32());break;case 10:n.punch_hole_sent=Ce.decode(i,i.uint32());break;case 11:n.punch_hole_response=xe.decode(i,i.uint32());break;case 12:n.fetch_local_addr=Je.decode(i,i.uint32());break;case 13:n.local_addr=Te.decode(i,i.uint32());break;case 14:n.configure_update=S.decode(i,i.uint32());break;case 15:n.register_pk=Be.decode(i,i.uint32());break;case 16:n.register_pk_response=Pe.decode(i,i.uint32());break;case 17:n.software_update=be.decode(i,i.uint32());break;case 18:n.request_relay=M.decode(i,i.uint32());break;case 19:n.relay_response=Ie.decode(i,i.uint32());break;case 20:n.test_nat_request=Oe.decode(i,i.uint32());break;case 21:n.test_nat_response=Re.decode(i,i.uint32());break;case 22:n.peer_discovery=Ue.decode(i,i.uint32());break;default:i.skipType(o&7);break}}return n},fromJSON(e){return{register_peer:d(e.register_peer)?Ae.fromJSON(e.register_peer):void 0,register_peer_response:d(e.register_peer_response)?Fe.fromJSON(e.register_peer_response):void 0,punch_hole_request:d(e.punch_hole_request)?q.fromJSON(e.punch_hole_request):void 0,punch_hole:d(e.punch_hole)?De.fromJSON(e.punch_hole):void 0,punch_hole_sent:d(e.punch_hole_sent)?Ce.fromJSON(e.punch_hole_sent):void 0,punch_hole_response:d(e.punch_hole_response)?xe.fromJSON(e.punch_hole_response):void 0,fetch_local_addr:d(e.fetch_local_addr)?Je.fromJSON(e.fetch_local_addr):void 0,local_addr:d(e.local_addr)?Te.fromJSON(e.local_addr):void 0,configure_update:d(e.configure_update)?S.fromJSON(e.configure_update):void 0,register_pk:d(e.register_pk)?Be.fromJSON(e.register_pk):void 0,register_pk_response:d(e.register_pk_response)?Pe.fromJSON(e.register_pk_response):void 0,software_update:d(e.software_update)?be.fromJSON(e.software_update):void 0,request_relay:d(e.request_relay)?M.fromJSON(e.request_relay):void 0,relay_response:d(e.relay_response)?Ie.fromJSON(e.relay_response):void 0,test_nat_request:d(e.test_nat_request)?Oe.fromJSON(e.test_nat_request):void 0,test_nat_response:d(e.test_nat_response)?Re.fromJSON(e.test_nat_response):void 0,peer_discovery:d(e.peer_discovery)?Ue.fromJSON(e.peer_discovery):void 0}},toJSON(e){const r={};return e.register_peer!==void 0&&(r.register_peer=e.register_peer?Ae.toJSON(e.register_peer):void 0),e.register_peer_response!==void 0&&(r.register_peer_response=e.register_peer_response?Fe.toJSON(e.register_peer_response):void 0),e.punch_hole_request!==void 0&&(r.punch_hole_request=e.punch_hole_request?q.toJSON(e.punch_hole_request):void 0),e.punch_hole!==void 0&&(r.punch_hole=e.punch_hole?De.toJSON(e.punch_hole):void 0),e.punch_hole_sent!==void 0&&(r.punch_hole_sent=e.punch_hole_sent?Ce.toJSON(e.punch_hole_sent):void 0),e.punch_hole_response!==void 0&&(r.punch_hole_response=e.punch_hole_response?xe.toJSON(e.punch_hole_response):void 0),e.fetch_local_addr!==void 0&&(r.fetch_local_addr=e.fetch_local_addr?Je.toJSON(e.fetch_local_addr):void 0),e.local_addr!==void 0&&(r.local_addr=e.local_addr?Te.toJSON(e.local_addr):void 0),e.configure_update!==void 0&&(r.configure_update=e.configure_update?S.toJSON(e.configure_update):void 0),e.register_pk!==void 0&&(r.register_pk=e.register_pk?Be.toJSON(e.register_pk):void 0),e.register_pk_response!==void 0&&(r.register_pk_response=e.register_pk_response?Pe.toJSON(e.register_pk_response):void 0),e.software_update!==void 0&&(r.software_update=e.software_update?be.toJSON(e.software_update):void 0),e.request_relay!==void 0&&(r.request_relay=e.request_relay?M.toJSON(e.request_relay):void 0),e.relay_response!==void 0&&(r.relay_response=e.relay_response?Ie.toJSON(e.relay_response):void 0),e.test_nat_request!==void 0&&(r.test_nat_request=e.test_nat_request?Oe.toJSON(e.test_nat_request):void 0),e.test_nat_response!==void 0&&(r.test_nat_response=e.test_nat_response?Re.toJSON(e.test_nat_response):void 0),e.peer_discovery!==void 0&&(r.peer_discovery=e.peer_discovery?Ue.toJSON(e.peer_discovery):void 0),r},fromPartial(e){const r=Di();return r.register_peer=e.register_peer!==void 0&&e.register_peer!==null?Ae.fromPartial(e.register_peer):void 0,r.register_peer_response=e.register_peer_response!==void 0&&e.register_peer_response!==null?Fe.fromPartial(e.register_peer_response):void 0,r.punch_hole_request=e.punch_hole_request!==void 0&&e.punch_hole_request!==null?q.fromPartial(e.punch_hole_request):void 0,r.punch_hole=e.punch_hole!==void 0&&e.punch_hole!==null?De.fromPartial(e.punch_hole):void 0,r.punch_hole_sent=e.punch_hole_sent!==void 0&&e.punch_hole_sent!==null?Ce.fromPartial(e.punch_hole_sent):void 0,r.punch_hole_response=e.punch_hole_response!==void 0&&e.punch_hole_response!==null?xe.fromPartial(e.punch_hole_response):void 0,r.fetch_local_addr=e.fetch_local_addr!==void 0&&e.fetch_local_addr!==null?Je.fromPartial(e.fetch_local_addr):void 0,r.local_addr=e.local_addr!==void 0&&e.local_addr!==null?Te.fromPartial(e.local_addr):void 0,r.configure_update=e.configure_update!==void 0&&e.configure_update!==null?S.fromPartial(e.configure_update):void 0,r.register_pk=e.register_pk!==void 0&&e.register_pk!==null?Be.fromPartial(e.register_pk):void 0,r.register_pk_response=e.register_pk_response!==void 0&&e.register_pk_response!==null?Pe.fromPartial(e.register_pk_response):void 0,r.software_update=e.software_update!==void 0&&e.software_update!==null?be.fromPartial(e.software_update):void 0,r.request_relay=e.request_relay!==void 0&&e.request_relay!==null?M.fromPartial(e.request_relay):void 0,r.relay_response=e.relay_response!==void 0&&e.relay_response!==null?Ie.fromPartial(e.relay_response):void 0,r.test_nat_request=e.test_nat_request!==void 0&&e.test_nat_request!==null?Oe.fromPartial(e.test_nat_request):void 0,r.test_nat_response=e.test_nat_response!==void 0&&e.test_nat_response!==null?Re.fromPartial(e.test_nat_response):void 0,r.peer_discovery=e.peer_discovery!==void 0&&e.peer_discovery!==null?Ue.fromPartial(e.peer_discovery):void 0,r}};var g=(()=>{if(typeof g!="undefined")return g;if(typeof self!="undefined")return self;if(typeof window!="undefined")return window;if(typeof global!="undefined")return global;throw"Unable to locate global object"})();const ln=g.atob||(e=>g.Buffer.from(e,"base64").toString("binary"));function h(e){const r=ln(e),i=new Uint8Array(r.length);for(let t=0;tg.Buffer.from(e,"binary").toString("base64"));function y(e){const r=[];for(const i of e)r.push(String.fromCharCode(i));return _n(r.join(""))}a.util.Long!==Me&&(a.util.Long=Me,a.configure());function d(e){return e!=null}class je{constructor(r,i=!0){_(this,"_websocket");_(this,"_eventHandlers");_(this,"_buf");_(this,"_status");_(this,"_latency");_(this,"_secretKey");_(this,"_uri");_(this,"_isRendezvous");this._eventHandlers={message:t=>{},open:()=>{},close:()=>{},error:()=>{}},this._uri=r,this._status="",this._buf=[],this._websocket=new WebSocket(r),this._websocket.onmessage=this._recv_message.bind(this),this._websocket.binaryType="arraybuffer",this._latency=new Date().getTime(),this._isRendezvous=i}latency(){return this._latency}setSecretKey(r){this._secretKey=[r,0,0]}sendMessage(r){let i=Ke.encode(Ke.fromPartial(r)).finish(),t=this._secretKey;t&&(t[1]+=1,i=Cn(i,t[1],t[0])),this._websocket.send(i)}sendRendezvous(r){this._websocket.send($e.encode($e.fromPartial(r)).finish())}parseMessage(r){return Ke.decode(r)}parseRendezvous(r){return $e.decode(r)}off(r){this._eventHandlers[r]=()=>{}}on(r,i){this._eventHandlers[r]=i}async open(r=12e3){return new Promise((i,t)=>{setTimeout(()=>{this._status!="open"&&t(this._status||"Timeout")},r),this._websocket.onopen=()=>{var n;this._latency=new Date().getTime()-this._latency,this._status="open",console.debug(">> WebSock.onopen"),((n=this._websocket)==null?void 0:n.protocol)&&console.info("Server choose sub-protocol: "+this._websocket.protocol),this._eventHandlers.open(),console.info("WebSock.onopen"),i(this)},this._websocket.onclose=n=>{this._status=="open",this._status=n,console.error("WebSock.onclose: "),console.error(n),this._eventHandlers.close(n),t("Reset by the peer")},this._websocket.onerror=n=>{if(!this._status){t("Failed to connect to "+this._uri);return}this._status=n,console.error("WebSock.onerror: "),console.error(n),this._eventHandlers.error(n)}})}async next(r=12e3){const i=(t,n,o)=>{if(this._buf.length)t(this._buf[0]),this._buf.splice(0,1);else{if(this._status!="open"){n(this._status);return}new Date().getTime()>o+r?n("Timeout"):setTimeout(()=>i(t,n,o),1)}};return new Promise((t,n)=>{i(t,n,new Date().getTime())})}close(){this._status="",this._websocket&&((this._websocket.readyState===WebSocket.OPEN||this._websocket.readyState===WebSocket.CONNECTING)&&(console.info("Closing WebSocket connection"),this._websocket.close()),this._websocket.onmessage=()=>{})}_recv_message(r){if(r.data instanceof window.ArrayBuffer){let i=new Uint8Array(r.data);const t=this._secretKey;t&&(t[2]+=1,i=Bn(i,t[2],t[0])),this._buf.push(this._isRendezvous?this.parseRendezvous(i):this.parseMessage(i))}this._eventHandlers.message(r.data)}}async function Oi(e){const r=await Zi();console.log("isSIMD: "+r),window.OGVLoader.loadClass(r?"OGVDecoderVideoVP9SIMDW":"OGVDecoderVideoVP9W",i=>{window.videoCodecClass=i,i({videoFormat:{}}).then(t=>{t.init(()=>{e(t)})})},{worker:!0,threading:!0})}const Ri={cn:{Status:"\u72B6\u6001","Your Desktop":"\u4F60\u7684\u684C\u9762",desk_tip:"\u4F60\u7684\u684C\u9762\u53EF\u4EE5\u901A\u8FC7\u4E0B\u9762\u7684ID\u548C\u5BC6\u7801\u8BBF\u95EE\u3002",Password:"\u5BC6\u7801",Ready:"\u5C31\u7EEA",connecting_status:"\u6B63\u5728\u63A5\u5165RustDesk\u7F51\u7EDC...","Enable Service":"\u5141\u8BB8\u670D\u52A1","Start Service":"\u542F\u52A8\u670D\u52A1","Service is not running":"\u670D\u52A1\u6CA1\u6709\u542F\u52A8",not_ready_status:"\u672A\u5C31\u7EEA\uFF0C\u8BF7\u68C0\u67E5\u7F51\u7EDC\u8FDE\u63A5","Control Remote Desktop":"\u63A7\u5236\u8FDC\u7A0B\u684C\u9762","Transfer File":"\u4F20\u8F93\u6587\u4EF6",Connect:"\u8FDE\u63A5","Recent Sessions":"\u6700\u8FD1\u8BBF\u95EE\u8FC7","Address Book":"\u5730\u5740\u7C3F",Confirmation:"\u786E\u8BA4","TCP Tunneling":"TCP\u96A7\u9053",Remove:"\u5220\u9664","Refresh random password":"\u5237\u65B0\u968F\u673A\u5BC6\u7801","Set your own password":"\u8BBE\u7F6E\u5BC6\u7801","Enable Keyboard/Mouse":"\u5141\u8BB8\u63A7\u5236\u952E\u76D8/\u9F20\u6807","Enable Clipboard":"\u5141\u8BB8\u540C\u6B65\u526A\u8D34\u677F","Enable File Transfer":"\u5141\u8BB8\u4F20\u8F93\u6587\u4EF6","Enable TCP Tunneling":"\u5141\u8BB8\u5EFA\u7ACBTCP\u96A7\u9053","IP Whitelisting":"IP\u767D\u540D\u5355","ID/Relay Server":"ID/\u4E2D\u7EE7\u670D\u52A1\u5668","Stop service":"\u505C\u6B62\u670D\u52A1","Change ID":"\u6539\u53D8ID",Website:"\u7F51\u7AD9",About:"\u5173\u4E8E",Mute:"\u9759\u97F3","Audio Input":"\u97F3\u9891\u8F93\u5165","ID Server":"ID\u670D\u52A1\u5668","Relay Server":"\u4E2D\u7EE7\u670D\u52A1\u5668","API Server":"API\u670D\u52A1\u5668",invalid_http:"\u5FC5\u987B\u4EE5http://\u6216\u8005https://\u5F00\u5934","Invalid IP":"\u65E0\u6548IP",id_change_tip:"\u53EA\u53EF\u4EE5\u4F7F\u7528\u5B57\u6BCDa-z, A-Z, 0-9, _ (\u4E0B\u5212\u7EBF)\u3002\u9996\u5B57\u6BCD\u5FC5\u987B\u662Fa-z, A-Z\u3002\u957F\u5EA6\u57286\u4E0E16\u4E4B\u95F4\u3002","Invalid format":"\u65E0\u6548\u683C\u5F0F","This function is turned off by the server":"\u670D\u52A1\u5668\u5173\u95ED\u4E86\u6B64\u529F\u80FD","Not available":"\u5DF2\u88AB\u5360\u7528","Too frequent":"\u4FEE\u6539\u592A\u9891\u7E41\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5",Cancel:"\u53D6\u6D88",Skip:"\u8DF3\u8FC7",Close:"\u5173\u95ED",Retry:"\u518D\u8BD5",OK:"\u786E\u8BA4","Password Required":"\u9700\u8981\u5BC6\u7801","Please enter your password":"\u8BF7\u8F93\u5165\u5BC6\u7801","Remember password":"\u8BB0\u4F4F\u5BC6\u7801","Wrong Password":"\u5BC6\u7801\u9519\u8BEF","Do you want to enter again?":"\u8FD8\u60F3\u8F93\u5165\u4E00\u6B21\u5417?","Connection Error":"\u8FDE\u63A5\u9519\u8BEF",Error:"\u9519\u8BEF","Reset by the peer":"\u8FDE\u63A5\u88AB\u5BF9\u65B9\u5173\u95ED","Connecting...":"\u6B63\u5728\u8FDE\u63A5...","Connection in progress. Please wait.":"\u8FDE\u63A5\u8FDB\u884C\u4E2D\uFF0C\u8BF7\u7A0D\u7B49\u3002","Please try 1 minute later":"\u4E00\u5206\u949F\u540E\u518D\u8BD5","Login Error":"\u767B\u5F55\u9519\u8BEF",Successful:"\u6210\u529F","Connected, waiting for image...":"\u5DF2\u8FDE\u63A5\uFF0C\u7B49\u5F85\u753B\u9762\u4F20\u8F93...",Name:"\u6587\u4EF6\u540D",Modified:"\u4FEE\u6539\u65F6\u95F4",Size:"\u5927\u5C0F","Show Hidden Files":"\u663E\u793A\u9690\u85CF\u6587\u4EF6",Receive:"\u63A5\u53D7",Send:"\u53D1\u9001","Remote Computer":"\u8FDC\u7A0B\u7535\u8111","Local Computer":"\u672C\u5730\u7535\u8111","Confirm Delete":"\u786E\u8BA4\u5220\u9664","Are you sure you want to delete this file?":"\u662F\u5426\u5220\u9664\u6B64\u6587\u4EF6?","Do this for all conflicts":"\u5E94\u7528\u4E8E\u5176\u5B83\u51B2\u7A81",Deleting:"\u6B63\u5728\u5220\u9664",files:"\u6587\u4EF6",Waiting:"\u7B49\u5F85...",Finished:"\u5B8C\u6210","Custom Image Quality":"\u8BBE\u7F6E\u753B\u9762\u8D28\u91CF","Privacy mode":"\u9690\u79C1\u6A21\u5F0F","Block user input":"\u963B\u6B62\u7528\u6237\u8F93\u5165","Unblock user input":"\u53D6\u6D88\u963B\u6B62\u7528\u6237\u8F93\u5165","Adjust Window":"\u8C03\u8282\u7A97\u53E3",Original:"\u539F\u59CB\u6BD4\u4F8B",Shrink:"\u6536\u7F29",Stretch:"\u4F38\u5C55","Good image quality":"\u597D\u753B\u8D28",Balanced:"\u4E00\u822C\u753B\u8D28","Optimize reaction time":"\u4F18\u5316\u53CD\u5E94\u65F6\u95F4",Custom:"\u81EA\u5B9A\u4E49\u753B\u8D28","Show remote cursor":"\u663E\u793A\u8FDC\u7A0B\u5149\u6807","Disable clipboard":"\u7981\u6B62\u526A\u8D34\u677F","Lock after session end":"\u65AD\u5F00\u540E\u9501\u5B9A\u8FDC\u7A0B\u7535\u8111",Insert:"\u63D2\u5165","Insert Lock":"\u9501\u5B9A\u8FDC\u7A0B\u7535\u8111",Refresh:"\u5237\u65B0\u753B\u9762","ID does not exist":"ID\u4E0D\u5B58\u5728","Failed to connect to rendezvous server":"\u8FDE\u63A5\u6CE8\u518C\u670D\u52A1\u5668\u5931\u8D25","Please try later":"\u8BF7\u7A0D\u540E\u518D\u8BD5","Remote desktop is offline":"\u8FDC\u7A0B\u7535\u8111\u4E0D\u5728\u7EBF","Key mismatch":"Key\u4E0D\u5339\u914D",Timeout:"\u8FDE\u63A5\u8D85\u65F6","Failed to connect to relay server":"\u65E0\u6CD5\u8FDE\u63A5\u5230\u4E2D\u7EE7\u670D\u52A1\u5668","Failed to connect via rendezvous server":"\u65E0\u6CD5\u901A\u8FC7\u6CE8\u518C\u670D\u52A1\u5668\u5EFA\u7ACB\u8FDE\u63A5","Failed to connect via relay server":"\u65E0\u6CD5\u901A\u8FC7\u4E2D\u7EE7\u670D\u52A1\u5668\u5EFA\u7ACB\u8FDE\u63A5","Failed to make direct connection to remote desktop":"\u65E0\u6CD5\u5EFA\u7ACB\u76F4\u63A5\u8FDE\u63A5","Set Password":"\u8BBE\u7F6E\u5BC6\u7801","OS Password":"\u64CD\u4F5C\u7CFB\u7EDF\u5BC6\u7801",install_tip:"\u4F60\u6B63\u5728\u8FD0\u884C\u672A\u5B89\u88C5\u7248\u672C\uFF0C\u7531\u4E8EUAC\u9650\u5236\uFF0C\u4F5C\u4E3A\u88AB\u63A7\u7AEF\uFF0C\u4F1A\u5728\u67D0\u4E9B\u60C5\u51B5\u4E0B\u65E0\u6CD5\u63A7\u5236\u9F20\u6807\u952E\u76D8\uFF0C\u6216\u8005\u5F55\u5236\u5C4F\u5E55\uFF0C\u8BF7\u70B9\u51FB\u4E0B\u9762\u7684\u6309\u94AE\u5C06RustDesk\u5B89\u88C5\u5230\u7CFB\u7EDF\uFF0C\u4ECE\u800C\u89C4\u907F\u4E0A\u8FF0\u95EE\u9898\u3002","Click to upgrade":"\u70B9\u51FB\u8FD9\u91CC\u5347\u7EA7","Click to download":"\u70B9\u51FB\u8FD9\u91CC\u4E0B\u8F7D","Click to update":"\u70B9\u51FB\u8FD9\u91CC\u66F4\u65B0","Configuration Permissions":"\u914D\u7F6E\u6743\u9650",Configure:"\u914D\u7F6E",config_acc:'\u4E3A\u4E86\u80FD\u591F\u8FDC\u7A0B\u63A7\u5236\u4F60\u7684\u684C\u9762, \u8BF7\u7ED9\u4E88RustDesk"\u8F85\u52A9\u529F\u80FD" \u6743\u9650\u3002',config_screen:'\u4E3A\u4E86\u80FD\u591F\u8FDC\u7A0B\u8BBF\u95EE\u4F60\u7684\u684C\u9762, \u8BF7\u7ED9\u4E88RustDesk"\u5C4F\u5E55\u5F55\u5236" \u6743\u9650\u3002',"Installing ...":"\u5B89\u88C5 ...",Install:"\u5B89\u88C5",Installation:"\u5B89\u88C5","Installation Path":"\u5B89\u88C5\u8DEF\u5F84","Create start menu shortcuts":"\u521B\u5EFA\u542F\u52A8\u83DC\u5355\u5FEB\u6377\u65B9\u5F0F","Create desktop icon":"\u521B\u5EFA\u684C\u9762\u56FE\u6807",agreement_tip:"\u5F00\u59CB\u5B89\u88C5\u5373\u8868\u793A\u63A5\u53D7\u8BB8\u53EF\u534F\u8BAE\u3002","Accept and Install":"\u540C\u610F\u5E76\u5B89\u88C5","End-user license agreement":"\u7528\u6237\u534F\u8BAE","Generating ...":"\u6B63\u5728\u4EA7\u751F ...","Your installation is lower version.":"\u4F60\u5B89\u88C5\u7684\u7248\u672C\u6BD4\u5F53\u524D\u8FD0\u884C\u7684\u4F4E\u3002",not_close_tcp_tip:"\u8BF7\u5728\u4F7F\u7528\u96A7\u9053\u7684\u65F6\u5019\uFF0C\u4E0D\u8981\u5173\u95ED\u672C\u7A97\u53E3","Listening ...":"\u6B63\u5728\u7B49\u5F85\u96A7\u9053\u8FDE\u63A5 ...","Remote Host":"\u8FDC\u7A0B\u4E3B\u673A","Remote Port":"\u8FDC\u7A0B\u7AEF\u53E3",Action:"\u52A8\u4F5C",Add:"\u6DFB\u52A0","Local Port":"\u672C\u5730\u7AEF\u53E3",setup_server_tip:"\u5982\u679C\u9700\u8981\u66F4\u5FEB\u8FDE\u63A5\u901F\u5EA6\uFF0C\u4F60\u53EF\u4EE5\u9009\u62E9\u81EA\u5EFA\u670D\u52A1\u5668","Too short, at least 6 characters.":"\u592A\u77ED\u4E86\uFF0C\u81F3\u5C116\u4E2A\u5B57\u7B26","The confirmation is not identical.":"\u4E24\u6B21\u8F93\u5165\u4E0D\u5339\u914D",Permissions:"\u6743\u9650",Accept:"\u63A5\u53D7",Dismiss:"\u62D2\u7EDD",Disconnect:"\u65AD\u5F00\u8FDE\u63A5","Allow using keyboard and mouse":"\u5141\u8BB8\u4F7F\u7528\u952E\u76D8\u9F20\u6807","Allow using clipboard":"\u5141\u8BB8\u4F7F\u7528\u526A\u8D34\u677F","Allow hearing sound":"\u5141\u8BB8\u542C\u5230\u58F0\u97F3",Connected:"\u5DF2\u7ECF\u8FDE\u63A5","Direct and encrypted connection":"\u52A0\u5BC6\u76F4\u8FDE","Relayed and encrypted connection":"\u52A0\u5BC6\u4E2D\u7EE7\u8FDE\u63A5","Direct and unencrypted connection":"\u975E\u52A0\u5BC6\u76F4\u8FDE","Relayed and unencrypted connection":"\u975E\u52A0\u5BC6\u4E2D\u7EE7\u8FDE\u63A5","Enter Remote ID":"\u8F93\u5165\u5BF9\u65B9ID","Enter your password":"\u8F93\u5165\u5BC6\u7801","Logging in...":"\u6B63\u5728\u767B\u5F55...","Enable RDP session sharing":"\u5141\u8BB8RDP\u4F1A\u8BDD\u5171\u4EAB","Auto Login":"\u81EA\u52A8\u767B\u5F55\uFF08\u8BBE\u7F6E\u65AD\u5F00\u540E\u9501\u5B9A\u624D\u6709\u6548\uFF09","Enable Direct IP Access":"\u5141\u8BB8IP\u76F4\u63A5\u8BBF\u95EE",Rename:"\u6539\u540D",Space:"\u7A7A\u683C","Create Desktop Shortcut":"\u521B\u5EFA\u684C\u9762\u5FEB\u6377\u65B9\u5F0F","Change Path":"\u6539\u53D8\u8DEF\u5F84","Create Folder":"\u521B\u5EFA\u6587\u4EF6\u5939","Please enter the folder name":"\u8BF7\u8F93\u5165\u6587\u4EF6\u5939\u540D\u79F0","Fix it":"\u4FEE\u590D",Warning:"\u8B66\u544A","Login screen using Wayland is not supported":"\u4E0D\u652F\u6301\u4F7F\u7528 Wayland \u767B\u5F55\u754C\u9762","Reboot required":"\u91CD\u542F\u540E\u624D\u80FD\u751F\u6548","Unsupported display server ":"\u4E0D\u652F\u6301\u5F53\u524D\u663E\u793A\u670D\u52A1\u5668","x11 expected":"\u8BF7\u5207\u6362\u5230 x11",Port:"\u7AEF\u53E3",Settings:"\u8BBE\u7F6E",Username:" \u7528\u6237\u540D","Invalid port":"\u65E0\u6548\u7AEF\u53E3","Closed manually by the peer":"\u88AB\u5BF9\u65B9\u624B\u52A8\u5173\u95ED","Enable remote configuration modification":"\u5141\u8BB8\u8FDC\u7A0B\u4FEE\u6539\u914D\u7F6E","Run without install":"\u65E0\u5B89\u88C5\u8FD0\u884C","Always connected via relay":"\u5F3A\u5236\u8D70\u4E2D\u7EE7\u8FDE\u63A5","Always connect via relay":"\u5F3A\u5236\u8D70\u4E2D\u7EE7\u8FDE\u63A5",whitelist_tip:"\u53EA\u6709\u767D\u540D\u5355\u91CC\u7684ip\u624D\u80FD\u8BBF\u95EE\u6211",Login:"\u767B\u5F55",Logout:"\u767B\u51FA",Tags:"\u6807\u7B7E","Search ID":"\u67E5\u627EID","Current Wayland display server is not supported":"\u4E0D\u652F\u6301 Wayland \u663E\u793A\u670D\u52A1\u5668",whitelist_sep:"\u53EF\u4EE5\u4F7F\u7528\u9017\u53F7\uFF0C\u5206\u53F7\uFF0C\u7A7A\u683C\u6216\u8005\u6362\u884C\u7B26\u4F5C\u4E3A\u5206\u9694\u7B26","Add ID":"\u589E\u52A0ID","Add Tag":"\u589E\u52A0\u6807\u7B7E","Unselect all tags":"\u53D6\u6D88\u9009\u62E9\u6240\u6709\u6807\u7B7E","Network error":"\u7F51\u7EDC\u9519\u8BEF","Username missed":"\u7528\u6237\u540D\u6CA1\u6709\u586B\u5199","Password missed":"\u5BC6\u7801\u6CA1\u6709\u586B\u5199","Wrong credentials":"\u7528\u6237\u540D\u6216\u8005\u5BC6\u7801\u9519\u8BEF","Edit Tag":"\u4FEE\u6539\u6807\u7B7E","Unremember Password":"\u5FD8\u6389\u5BC6\u7801",Favorites:"\u6536\u85CF","Add to Favorites":"\u52A0\u5165\u5230\u6536\u85CF","Remove from Favorites":"\u4ECE\u6536\u85CF\u4E2D\u5220\u9664",Empty:"\u7A7A\u7A7A\u5982\u4E5F","Invalid folder name":"\u65E0\u6548\u6587\u4EF6\u5939\u540D\u79F0","Socks5 Proxy":"Socks5 \u4EE3\u7406",Hostname:"\u4E3B\u673A\u540D",Discovered:"\u5DF2\u53D1\u73B0",install_daemon_tip:"\u4E3A\u4E86\u5F00\u673A\u542F\u52A8\uFF0C\u8BF7\u5B89\u88C5\u7CFB\u7EDF\u670D\u52A1\u3002","Remote ID":"\u8FDC\u7A0BID",Paste:"\u7C98\u8D34","Are you sure to close the connection?":"\u662F\u5426\u786E\u8BA4\u5173\u95ED\u8FDE\u63A5\uFF1F","Download new version":"\u4E0B\u8F7D\u65B0\u7248\u672C","Touch mode":"\u89E6\u5C4F\u6A21\u5F0F","Reset canvas":"\u91CD\u7F6E\u753B\u5E03"},it:{Status:"Stato","Your Desktop":"Il tuo desktop",desk_tip:"Puoi accedere al tuo desktop usando l'ID e la password riportati qui.",Password:"Password",Ready:"Pronto",connecting_status:"Connessione alla rete RustDesk in corso...","Enable Service":"Abilita servizio","Start Service":"Avvia servizio","Service is not running":"Il servizio non \xE8 in esecuzione",not_ready_status:"Non pronto. Verifica la tua connessione","Control Remote Desktop":"Controlla una scrivania remota","Transfer File":"Trasferisci file",Connect:"Connetti","Recent Sessions":"Sessioni recenti","Address Book":"Rubrica",Confirmation:"Conferma","TCP Tunneling":"Tunnel TCP",Remove:"Rimuovi","Refresh random password":"Nuova password casuale","Set your own password":"Imposta la tua password","Enable Keyboard/Mouse":"Abilita tastiera/mouse","Enable Clipboard":"Abilita appunti","Enable File Transfer":"Abilita trasferimento file","Enable TCP Tunneling":"Abilita tunnel TCP","IP Whitelisting":"IP autorizzati","ID/Relay Server":"Server ID/Relay","Stop service":"Arresta servizio","Change ID":"Cambia ID",Website:"Sito web",About:"Informazioni",Mute:"Silenzia","Audio Input":"Input audio","ID Server":"ID server","Relay Server":"Server relay","API Server":"Server API",invalid_http:"deve iniziare con http:// o https://","Invalid IP":"Indirizzo IP non valido",id_change_tip:"Puoi usare solo i caratteri a-z, A-Z, 0-9 e _ (underscore). Il primo carattere deve essere a-z o A-Z. La lunghezza deve essere fra 6 e 16 caratteri.","Invalid format":"Formato non valido","This function is turned off by the server":"Questa funzione \xE8 disabilitata sul server","Not available":"Non disponibile","Too frequent":"Troppo frequente",Cancel:"Annulla",Skip:"Ignora",Close:"Chiudi",Retry:"Riprova",OK:"OK","Password Required":"Password richiesta","Please enter your password":"Inserisci la tua password","Remember password":"Ricorda password","Wrong Password":"Password errata","Do you want to enter again?":"Vuoi riprovare?","Connection Error":"Errore di connessione",Error:"Errore","Reset by the peer":"Reimpostata dal peer","Connecting...":"Connessione...","Connection in progress. Please wait.":"Connessione in corso. Attendi.","Please try 1 minute later":"Per favore riprova fra 1 minuto","Login Error":"Errore di login",Successful:"Successo","Connected, waiting for image...":"Connesso, in attesa dell'immagine...",Name:"Nome",Modified:"Modificato",Size:"Dimensione","Show Hidden Files":"Mostra file nascosti",Receive:"Ricevi",Send:"Invia","Remote Computer":"Computer remoto","Local Computer":"Computer locale","Confirm Delete":"Conferma cancellazione","Are you sure you want to delete this file?":"Vuoi davvero eliminare questo file?","Do this for all conflicts":"Ricorca questa scelta per tutti i conflitti",Deleting:"Cancellazione di",files:"file",Waiting:"In attesa",Finished:"Terminato","Custom Image Quality":"Qualit\xE0 immagine personalizzata","Privacy mode":"Modalit\xE0 privacy","Block user input":"Blocca l'input dell'utente","Unblock user input":"Sbloccare l'input dell'utente","Adjust Window":"Adatta la finestra",Original:"Originale",Shrink:"Restringi",Stretch:"Allarga","Good image quality":"Buona qualit\xE0 immagine",Balanced:"Bilanciato","Optimize reaction time":"Ottimizza il tempo di reazione",Custom:"Personalizzato","Show remote cursor":"Mostra il cursore remoto","Disable clipboard":"Disabilita appunti","Lock after session end":"Blocca al termine della sessione",Insert:"Inserisci","Insert Lock":"Blocco inserimento",Refresh:"Aggiorna","ID does not exist":"L'ID non esiste","Failed to connect to rendezvous server":"Errore di connessione al server rendezvous","Please try later":"Riprova pi\xF9 tardi","Remote desktop is offline":"Il desktop remoto \xE8 offline","Key mismatch":"La chiave non corrisponde",Timeout:"Timeout","Failed to connect to relay server":"Errore di connessione al server relay","Failed to connect via rendezvous server":"Errore di connessione tramite il server rendezvous","Failed to connect via relay server":"Errore di connessione tramite il server relay","Failed to make direct connection to remote desktop":"Impossibile connettersi direttamente al desktop remoto","Set Password":"Imposta password","OS Password":"Password del sistema operativo",install_tip:"A causa del Controllo Account Utente, RustDesk potrebbe non funzionare correttamente come desktop remoto. Per evitare questo problema, fai click sul tasto qui sotto per installare RustDesk a livello di sistema.","Click to upgrade":"Fai click per aggiornare","Click to download":"Cliquez per scaricare","Click to update":"Fare clic per aggiornare","Configuration Permissions":"Permessi di configurazione",Configure:"Configura",config_acc:`Per controllare il tuo desktop dall'esterno, devi fornire a RustDesk il permesso "Accessibilit\xE0".`,config_screen:`Per controllare il tuo desktop dall'esterno, devi fornire a RustDesk il permesso "Registrazione schermo".`,"Installing ...":"Installazione ...",Install:"Installa",Installation:"Installazione","Installation Path":"Percorso di installazione","Create start menu shortcuts":"Crea i collegamenti nel menu di avvio","Create desktop icon":"Crea un'icona sul desktop",agreement_tip:"Avviando l'installazione, accetti i termini del contratto di licenza.","Accept and Install":"Accetta e installa","End-user license agreement":"Contratto di licenza con l'utente finale","Generating ...":"Generazione ...","Your installation is lower version.":"La tua installazione non \xE8 aggiornata.",not_close_tcp_tip:"Non chiudere questa finestra mentre stai usando il tunnel","Listening ...":"In ascolto ...","Remote Host":"Host remoto","Remote Port":"Porta remota",Action:"Azione",Add:"Aggiungi","Local Port":"Porta locale",setup_server_tip:"Per una connessione pi\xF9 veloce, configura un tuo server","Too short, at least 6 characters.":"Troppo breve, almeno 6 caratteri","The confirmation is not identical.":"La conferma non corrisponde",Permissions:"Permessi",Accept:"Accetta",Dismiss:"Rifiuta",Disconnect:"Disconnetti","Allow using keyboard and mouse":"Consenti l'uso di tastiera e mouse","Allow using clipboard":"Consenti l'uso degli appunti","Allow hearing sound":"Consenti la riproduzione dell'audio",Connected:"Connesso","Direct and encrypted connection":"Connessione diretta e cifrata","Relayed and encrypted connection":"Connessione tramite relay e cifrata","Direct and unencrypted connection":"Connessione diretta e non cifrata","Relayed and unencrypted connection":"Connessione tramite relay e non cifrata","Enter Remote ID":"Inserisci l'ID remoto","Enter your password":"Inserisci la tua password","Logging in...":"Autenticazione...","Enable RDP session sharing":"Abilita la condivisione della sessione RDP","Auto Login":"Login automatico","Enable Direct IP Access":"Abilita l'accesso diretto tramite IP",Rename:"Rinomina",Space:"Spazio","Create Desktop Shortcut":"Crea collegamento sul desktop","Change Path":"Cambia percorso","Create Folder":"Crea cartella","Please enter the folder name":"Inserisci il nome della cartella","Fix it":"Risolvi",Warning:"Avviso","Login screen using Wayland is not supported":"La schermata di login non \xE8 supportata utilizzando Wayland","Reboot required":"Riavvio necessario","Unsupported display server ":"Display server non supportato","x11 expected":"x11 necessario",Port:"Porta",Settings:"Impostazioni",Username:" Nome utente","Invalid port":"Porta non valida","Closed manually by the peer":"Chiuso manualmente dal peer","Enable remote configuration modification":"Abilita la modifica remota della configurazione","Run without install":"Avvia senza installare","Always connected via relay":"Connesso sempre tramite relay","Always connect via relay":"Connetti sempre tramite relay",whitelist_tip:"Solo gli indirizzi IP autorizzati possono connettersi a questo desktop",Login:"Accedi",Logout:"Esci",Tags:"Tag","Search ID":"Cerca ID","Current Wayland display server is not supported":"Questo display server Wayland non \xE8 supportato",whitelist_sep:"Separati da virgola, punto e virgola, spazio o a capo","Add ID":"Aggiungi ID","Add Tag":"Aggiungi tag","Unselect all tags":"Deseleziona tutti i tag","Network error":"Errore di rete","Username missed":"Nome utente dimenticato","Password missed":"Password dimenticata","Wrong credentials":"Credenziali errate","Edit Tag":"Modifica tag","Invalid folder name":"Nome della cartella non valido",Hostname:"Nome host",Discovered:"Scoperto","Remote ID":"ID remoto",Paste:"Impasto","Are you sure to close the connection?":"Sei sicuro di chiudere la connessione?","Download new version":"Scarica nuova versione","Touch mode":"Modalit\xE0 tocco","Reset canvas":"Ripristina tela"},en:{desk_tip:"Your desktop can be accessed with this ID and password.",connecting_status:"Connecting to the RustDesk network...",not_ready_status:"Not ready. Please check your connection",id_change_tip:"Only a-z, A-Z, 0-9 and _ (underscore) characters allowed. The first letter must be a-z, A-Z. Length between 6 and 16.",install_tip:"Due to UAC, RustDesk can not work properly as the remote side in some cases. To avoid UAC, please click the button below to install RustDesk to the system.",config_acc:'In order to control your Desktop remotely, you need to grant RustDesk "Accessibility" permissions.',config_screen:'In order to access your Desktop remotely, you need to grant RustDesk "Screen Recording" permissions.',agreement_tip:"By starting the installation, you accept the license agreement.",not_close_tcp_tip:"Don't close this window while you are using the tunnel",setup_server_tip:"For faster connection, please set up your own server","Auto Login":'Auto Login (Only valid if you set "Lock after session end")',whitelist_tip:"Only whitelisted IP can access me",whitelist_sep:"Seperated by comma, semicolon, spaces or new line","Wrong credentials":"Wrong username or password",invalid_http:"must start with http:// or https://",install_daemon_tip:"For starting on boot, you need to install system service."},fr:{Status:"Statut","Your Desktop":"Votre bureau",desk_tip:"Votre bureau est accessible via l'identifiant et le mot de passe ci-dessous.",Password:"Mot de passe",Ready:"Pr\xEAt",connecting_status:"Connexion au r\xE9seau RustDesk...","Enable Service":"Autoriser le service","Start Service":"D\xE9marrer le service","Service is not running":"Le service ne fonctionne pas",not_ready_status:"Pas pr\xEAt, veuillez v\xE9rifier la connexion r\xE9seau","Control Remote Desktop":"Contr\xF4ler le bureau \xE0 distance","Transfer File":"Transf\xE9rer le fichier",Connect:"Connecter","Recent Sessions":"Sessions r\xE9centes","Address Book":"Carnet d'adresses",Confirmation:"Confirmation","TCP Tunneling":"Tunneling TCP",Remove:"Supprimer","Refresh random password":"Actualiser le mot de passe al\xE9atoire","Set your own password":"D\xE9finir votre propre mot de passe","Enable Keyboard/Mouse":"Activer le contr\xF4le clavier/souris","Enable Clipboard":"Activer la synchronisation du presse-papiers","Enable File Transfer":"Activer le transfert de fichiers","Enable TCP Tunneling":"Activer le tunneling TCP","IP Whitelisting":"Liste blanche IP","ID/Relay Server":"ID/Serveur Relais","Stop service":"Arr\xEAter service","Change ID":"Changer d'ID",Website:"Site Web",About:"Sur",Mute:"Muet","Audio Input":"Entr\xE9e audio","ID Server":"Serveur ID","Relay Server":"Serveur Relais","API Server":"Serveur API",invalid_http:"Doit commencer par http:// ou https://","Invalid IP":"IP invalide",id_change_tip:"Seules les lettres a-z, A-Z, 0-9, _ (trait de soulignement) peuvent \xEAtre utilis\xE9es. La premi\xE8re lettre doit \xEAtre a-z, A-Z. La longueur est comprise entre 6 et 16.","Invalid format":"Format invalide","This function is turned off by the server":"Cette fonction est d\xE9sactiv\xE9e par le serveur","Not available":"Indisponible","Too frequent":"Modifier trop fr\xE9quemment, veuillez r\xE9essayer plus tard",Cancel:"Annuler",Skip:"Ignorer",Close:"Fermer",Retry:"R\xE9essayer",OK:"Confirmer","Password Required":"Mot de passe requis","Please enter your password":"Veuillez saisir votre mot de passe","Remember password":"M\xE9moriser le mot de passe","Wrong Password":"Mauvais mot de passe","Do you want to enter again?":"Voulez-vous participer \xE0 nouveau?","Connection Error":"Erreur de connexion",Error:"Erreur","Reset by the peer":"La connexion a \xE9t\xE9 ferm\xE9e par le pair","Connecting...":"Connexion...","Connection in progress. Please wait.":"Connexion en cours. Veuillez patienter.","Please try 1 minute later":"R\xE9essayez dans une minute","Login Error":"Erreur de connexion",Successful:"Succ\xE8s","Connected, waiting for image...":"Connect\xE9, en attente de transmission d'image...",Name:"Nom du fichier",Modified:"Modifi\xE9",Size:"Taille","Show Hidden Files":"Afficher les fichiers cach\xE9s",Receive:"Accepter",Send:"Envoyer","Remote Computer":"Ordinateur distant","Local Computer":"Ordinateur local","Confirm Delete":"Confirmer la suppression","Are you sure you want to delete this file?":"Voulez-vous vraiment supprimer ce fichier?","Do this for all conflicts":"Appliquer \xE0 d'autres conflits",Deleting:"Suppression",files:"fichier",Waiting:"En attente en attente...",Finished:"Termin\xE9","Custom Image Quality":"D\xE9finir la qualit\xE9 d'image","Privacy mode":"Mode priv\xE9","Block user input":"Bloquer la saisie de l'utilisateur","Unblock user input":"D\xE9bloquer l'entr\xE9e de l'utilisateur","Adjust Window":"Ajuster la fen\xEAtre",Original:"Ratio d'origine",Shrink:"R\xE9tr\xE9ci",Stretch:"\xC9tirer","Good image quality":"Bonne qualit\xE9 d'image",Balanced:"Qualit\xE9 d'image normale","Optimize reaction time":"Optimiser le temps de r\xE9action",Custom:"Qualit\xE9 d'image personnalis\xE9e","Show remote cursor":"Afficher le curseur distant","Disable clipboard":"D\xE9sactiver le presse-papiers","Lock after session end":"Verrouiller l'ordinateur distant apr\xE8s la d\xE9connexion",Insert:"Ins\xE9rer","Insert Lock":"Verrouiller l'ordinateur distant",Refresh:"Rafra\xEEchir l'\xE9cran","ID does not exist":"L'ID n'existe pas","Failed to connect to rendezvous server":"\xC9chec de la connexion au serveur de rendez-vous","Please try later":"Veuillez essayer plus tard","Remote desktop is offline":"Le bureau \xE0 distance est hors ligne","Key mismatch":"Discordance de cl\xE9",Timeout:"Connexion expir\xE9e","Failed to connect to relay server":"\xC9chec de la connexion au serveur relais","Failed to connect via rendezvous server":"\xC9chec de l'\xE9tablissement d'une connexion via le serveur de rendez-vous","Failed to connect via relay server":"Impossible d'\xE9tablir une connexion via le serveur relais","Failed to make direct connection to remote desktop":"Impossible d'\xE9tablir une connexion directe","Set Password":"D\xE9finir le mot de passe","OS Password":"Mot de passe du syst\xE8me d'exploitation",install_tip:"Vous utilisez une version d\xE9sinstall\xE9e. En raison des restrictions UAC, en tant que terminal contr\xF4l\xE9, dans certains cas, il ne sera pas en mesure de contr\xF4ler la souris et le clavier ou d'enregistrer l'\xE9cran. Veuillez cliquer sur le bouton ci-dessous pour installer RustDesk au syst\xE8me pour \xE9viter la question ci-dessus.","Click to upgrade":"Cliquez pour mettre \xE0 niveau","Click to download":"Cliquez pour t\xE9l\xE9charger","Click to update":"Cliquez pour mettre \xE0 jour","Configuration Permissions":"Autorisations de configuration",Configure:"Configurer",config_acc:`Afin de pouvoir contr\xF4ler votre bureau \xE0 distance, veuillez donner l'autorisation"accessibilit\xE9" \xE0 RustDesk.`,config_screen:`Afin de pouvoir acc\xE9der \xE0 votre bureau \xE0 distance, veuillez donner l'autorisation \xE0 RustDesk"enregistrement d'\xE9cran".`,"Installing ...":"Installation ...",Install:"Installer",Installation:"Installation","Installation Path":"Chemin d'installation","Create start menu shortcuts":"Cr\xE9er des raccourcis dans le menu d\xE9marrer","Create desktop icon":"Cr\xE9er une ic\xF4ne sur le bureau",agreement_tip:"D\xE9marrer l'installation signifie accepter le contrat de licence.","Accept and Install":"Accepter et installer","End-user license agreement":"Contrat d'utilisateur","Generating ...":"G\xE9n\xE9ration ...","Your installation is lower version.":"La version que vous avez install\xE9e est inf\xE9rieure \xE0 la version en cours d'ex\xE9cution.",not_close_tcp_tip:"Veuillez ne pas fermer cette fen\xEAtre lors de l'utilisation du tunnel","Listening ...":"En attente de connexion tunnel...","Remote Host":"H\xF4te distant","Remote Port":"Port distant",Action:"Action",Add:"Ajouter","Local Port":"Port local",setup_server_tip:"Si vous avez besoin d'une vitesse de connexion plus rapide, vous pouvez choisir de cr\xE9er votre propre serveur","Too short, at least 6 characters.":"Trop court, au moins 6 caract\xE8res.","The confirmation is not identical.":"Les deux entr\xE9es ne correspondent pas",Permissions:"Autorisations",Accept:"Accepter",Dismiss:"Rejeter",Disconnect:"D\xE9connecter","Allow using keyboard and mouse":"Autoriser l'utilisation du clavier et de la souris","Allow using clipboard":"Autoriser l'utilisation du presse-papiers","Allow hearing sound":"Autoriser l'audition du son",Connected:"Connect\xE9","Direct and encrypted connection":"Connexion directe crypt\xE9e","Relayed and encrypted connection":"Connexion relais crypt\xE9e","Direct and unencrypted connection":"Connexion directe non crypt\xE9e","Relayed and unencrypted connection":"Connexion relais non crypt\xE9e","Enter Remote ID":"Entrez l'ID \xE0 distance","Enter your password":"Entrez votre mot de passe","Logging in...":"Se connecter...","Enable RDP session sharing":"Activer le partage de session RDP","Auto Login":"Connexion automatique (le verrouillage ne sera effectif qu'apr\xE8s la d\xE9connexion du param\xE8tre)","Enable Direct IP Access":"Autoriser l'acc\xE8s direct IP",Rename:"Renommer",Space:"Espace","Create Desktop Shortcut":"Cr\xE9er un raccourci sur le bureau","Change Path":"Changer de chemin","Create Folder":"Cr\xE9er un dossier","Please enter the folder name":"Veuillez saisir le nom du dossier","Fix it":"R\xE9parez-le",Warning:"Avertissement","Login screen using Wayland is not supported":"L'\xE9cran de connexion utilisant Wayland n'est pas pris en charge","Reboot required":"Red\xE9marrage pour prendre effet","Unsupported display server ":"Le serveur d'affichage actuel n'est pas pris en charge","x11 expected":"Veuillez passer \xE0 x11",Port:"Port",Settings:"Param\xE8tres",Username:" Nom d'utilisateur","Invalid port":"Port invalide","Closed manually by the peer":"Ferm\xE9 manuellement par le pair","Enable remote configuration modification":"Autoriser la modification de la configuration \xE0 distance","Run without install":"Ex\xE9cuter sans installer","Always connected via relay":"Forcer la connexion relais","Always connect via relay":"Forcer la connexion relais",whitelist_tip:"Seul l'ip dans la liste blanche peut m'acc\xE9der",Login:"Connexion",Logout:"D\xE9connexion",Tags:"\xC9tiqueter","Search ID":"Identifiant de recherche","Current Wayland display server is not supported":"Le serveur d'affichage Wayland n'est pas pris en charge",whitelist_sep:"Vous pouvez utiliser une virgule, un point-virgule, un espace ou une nouvelle ligne comme s\xE9parateur","Add ID":"Ajouter ID","Add Tag":"Ajouter une balise","Unselect all tags":"D\xE9s\xE9lectionner toutes les balises","Network error":"Erreur r\xE9seau","Username missed":"Nom d'utilisateur manqu\xE9","Password missed":"Mot de passe manqu\xE9","Wrong credentials":"Identifiant ou mot de passe erron\xE9","Edit Tag":"Modifier la balise","Invalid folder name":"Nom de dossier invalide",Hostname:"nom d'h\xF4te",Discovered:"D\xE9couvert","Remote ID":"ID \xE0 distance",Paste:"P\xE2te","Are you sure to close the connection?":"\xCAtes-vous s\xFBr de fermer la connexion?","Download new version":"T\xE9l\xE9charger la nouvelle version","Touch mode":"Mode tactile","Reset canvas":"R\xE9initialiser le canevas"}};function pn(e,r,i){return e=="error"&&r=="Connection Error"&&i.toLowerCase().indexOf("offline")<0&&i.toLowerCase().indexOf("exist")<0&&i.toLowerCase().indexOf("handshake")<0&&i.toLowerCase().indexOf("failed")<0&&i.toLowerCase().indexOf("resolve")<0&&i.toLowerCase().indexOf("mismatch")<0&&i.toLowerCase().indexOf("manually")<0}const fn={VK_A:"a",VK_B:"b",VK_C:"c",VK_D:"d",VK_E:"e",VK_F:"f",VK_G:"g",VK_H:"h",VK_I:"i",VK_J:"j",VK_K:"k",VK_L:"l",VK_M:"m",VK_N:"n",VK_O:"o",VK_P:"p",VK_Q:"q",VK_R:"r",VK_S:"s",VK_T:"t",VK_U:"u",VK_V:"v",VK_W:"w",VK_X:"x",VK_Y:"y",VK_Z:"z",VK_0:"0",VK_1:"1",VK_2:"2",VK_3:"3",VK_4:"4",VK_5:"5",VK_6:"6",VK_7:"7",VK_8:"8",VK_9:"9",VK_COMMA:",",VK_SLASH:"/",VK_SEMICOLON:";",VK_QUOTE:"'",VK_LBRACKET:"[",VK_RBRACKET:"]",VK_BACKSLASH:"\\",VK_MINUS:"-",VK_PLUS:"=",VK_DIVIDE:"Divide",VK_MULTIPLY:"Multiply",VK_SUBTRACT:"Subtract",VK_ADD:"Add",VK_DECIMAL:"Decimal",VK_F1:"F1",VK_F2:"F2",VK_F3:"F3",VK_F4:"F4",VK_F5:"F5",VK_F6:"F6",VK_F7:"F7",VK_F8:"F8",VK_F9:"F9",VK_F10:"F10",VK_F11:"F11",VK_F12:"F12",VK_ENTER:"Return",VK_CANCEL:"Cancel",VK_BACK:"Backspace",VK_TAB:"Tab",VK_CLEAR:"Clear",VK_RETURN:"Return",VK_SHIFT:"Shift",VK_CONTROL:"Control",VK_MENU:"Alt",VK_PAUSE:"Pause",VK_CAPITAL:"CapsLock",VK_KANA:"Kana",VK_HANGUL:"Hangul",VK_JUNJA:"Junja",VK_FINAL:"Final",VK_HANJA:"Hanja",VK_KANJI:"Kanji",VK_ESCAPE:"Escape",VK_CONVERT:"Convert",VK_SPACE:"Space",VK_PRIOR:"PageUp",VK_NEXT:"PageDown",VK_END:"End",VK_HOME:"Home",VK_LEFT:"LeftArrow",VK_UP:"UpArrow",VK_RIGHT:"RightArrow",VK_DOWN:"DownArrow",VK_SELECT:"Select",VK_PRINT:"Print",VK_EXECUTE:"Execute",VK_SNAPSHOT:"Snapshot",VK_INSERT:"Insert",VK_DELETE:"Delete",VK_HELP:"Help",VK_SLEEP:"Sleep",VK_SEPARATOR:"Separator",VK_NUMPAD0:"Numpad0",VK_NUMPAD1:"Numpad1",VK_NUMPAD2:"Numpad2",VK_NUMPAD3:"Numpad3",VK_NUMPAD4:"Numpad4",VK_NUMPAD5:"Numpad5",VK_NUMPAD6:"Numpad6",VK_NUMPAD7:"Numpad7",VK_NUMPAD8:"Numpad8",VK_NUMPAD9:"Numpad9",Apps:"Apps",Meta:"Meta",RAlt:"RAlt",RWin:"RWin",RControl:"RControl",RShift:"RShift",CTRL_ALT_DEL:"CtrlAltDel",LOCK_SCREEN:"LockScreen"},vn="1.1.9";let er;async function Ci(){const e=new Yi;await e.init(),console.log("zstd ready"),er=e}async function Bi(e){const r=1024*1024*64,i=1024*1024;let t=30*e.length;t>r&&(t=r),tyn||nsetTimeout(r,e))}const Pi=21116,xi=["rs-sg.rustdesk.com","rs-cn.rustdesk.com","rs-us.rustdesk.com"];let Ii=localStorage.getItem("rendezvous-server")||xi[0];const bi="ws://";class En{constructor(){_(this,"_msgs");_(this,"_ws");_(this,"_interval");_(this,"_id");_(this,"_hash");_(this,"_msgbox");_(this,"_draw");_(this,"_peerInfo");_(this,"_firstFrame");_(this,"_videoDecoder");_(this,"_password");_(this,"_options");_(this,"_videoTestSpeed");this._msgbox=Nn,this._draw=nr,this._msgs=[],this._id="",this._videoTestSpeed=[0,0]}async start(r){try{await this._start(r)}catch(i){this.msgbox("error","Connection Error",i.type=="close"?"Reset by the peer":String(i))}}async _start(r){if(this._options||(this._options=We()[r]||{}),!this._password){const O=this.getOption("password");if(O)try{this._password=Uint8Array.from(JSON.parse("["+O+"]"))}catch(He){console.error(He)}}this._interval=setInterval(()=>{var O;for(;this._msgs.length;)(O=this._ws)==null||O.sendMessage(this._msgs[0]),this._msgs.splice(0,1)},1),this.loadVideoDecoder();const i=Ji(),t=new je(i,!0);this._ws=t,this._id=r,console.log(new Date+": Conntecting to rendezvoous server: "+i+", for "+r),await t.open(),console.log(new Date+": Connected to rendezvoous server");const n=Qe.DEFAULT_CONN,o=Xe.SYMMETRIC,u=q.fromPartial({id:r,licence_key:localStorage.getItem("key")||void 0,conn_type:n,nat_type:o});t.sendRendezvous({punch_hole_request:u});const c=await t.next();t.close(),console.log(new Date+": Got relay response");const l=c.punch_hole_response,p=c.relay_response;if(l){if(l.failure!=U.UNRECOGNIZED)switch(l==null?void 0:l.failure){case U.ID_NOT_EXIST:this.msgbox("error","Error","ID does not exist");break;case U.OFFLINE:this.msgbox("error","Error","Remote desktop is offline");break;case U.LICENSE_MISMATCH:this.msgbox("error","Error","Key mismatch");break;default:(l==null?void 0:l.other_failure)&&this.msgbox("error","Error",l==null?void 0:l.other_failure)}}else p&&await this.connectRelay(p)}async connectRelay(r){const i=r.pk;let t=r.relay_server;t?t=Ti(t,!0):t=Ji(!0);const n=r.uuid;console.log(new Date+": Connecting to relay server: "+t);const o=new je(t,!1);await o.open(),console.log(new Date+": Connected to relay server"),this._ws=o;const u=M.fromPartial({licence_key:localStorage.getItem("key")||void 0,uuid:n});o.sendRendezvous({request_relay:u});const c=await this.secure(i)||!1;D("connection_ready",{secure:c,direct:!1}),await this.msgLoop()}async secure(r){var ar,sr,ur,dr,cr,lr,_r,pr;if(r){const Ge="OeVuKk5nlHiXp+APNn0Y3pC1Iwpwn44JGqrQCsWqmBw=";try{r=await gi(r,Ge).catch(),(r==null?void 0:r.length)!=32&&(r=void 0)}catch(Ze){console.error(Ze),r=void 0}r||console.error("Handshake failed: invalid public key from rendezvous server")}if(!r){(ar=this._ws)==null||ar.sendMessage({});return}const i=await((sr=this._ws)==null?void 0:sr.next());let t=i==null?void 0:i.signed_id;if(!t){console.error("Handshake failed: invalid message type"),(ur=this._ws)==null||ur.sendMessage({});return}try{t=await gi(t.id,Uint8Array.from(r))}catch(Ge){console.error(Ge),console.error("pk mismatch, fall back to non-secure");const Ze=C.fromPartial({});(dr=this._ws)==null||dr.sendMessage({public_key:Ze});return}t=new TextDecoder().decode(t);const n=t.split("\0"),o=n[0];let u=n[1];if(o!=this._id){console.error("Handshake failed: sign failure"),(cr=this._ws)==null||cr.sendMessage({});return}if(u=Li(u),u.length!=32){console.error("Handshake failed: invalid public box key length from peer"),(lr=this._ws)==null||lr.sendMessage({});return}const[c,l]=Dn(),p=On(),O=Rn(p,u,c),He=C.fromPartial({asymmetric_value:l,symmetric_value:O});return(_r=this._ws)==null||_r.sendMessage({public_key:He}),(pr=this._ws)==null||pr.setSecretKey(p),console.log("secured"),!0}async msgLoop(){var r,i;for(;;){const t=await((r=this._ws)==null?void 0:r.next());if(t==null?void 0:t.hash)this._hash=t==null?void 0:t.hash,this._password||this.msgbox("input-password","Password Required",""),this.login();else if(t==null?void 0:t.test_delay){const n=t==null?void 0:t.test_delay;console.log(n),n.from_client||(i=this._ws)==null||i.sendMessage({test_delay:n})}else if(t==null?void 0:t.login_response){const n=t==null?void 0:t.login_response;n.error?n.error=="Wrong Password"?(this._password=void 0,this.msgbox("re-input-password",n.error,"Do you want to enter again?")):this.msgbox("error","Login Error",n.error):n.peer_info&&this.handlePeerInfo(n.peer_info)}else if(t==null?void 0:t.video_frame)this.handleVideoFrame(t==null?void 0:t.video_frame);else if(t==null?void 0:t.clipboard){const n=t==null?void 0:t.clipboard;if(n.compress){const o=await Bi(n.content);if(!o)continue;n.content=o}D("clipboard",n)}else if(t==null?void 0:t.cursor_data){const n=t==null?void 0:t.cursor_data,o=await Bi(n.colors);if(!o)continue;n.colors=o,D("cursor_data",n)}else if(t==null?void 0:t.cursor_id)D("cursor_id",{id:t==null?void 0:t.cursor_id});else if(t==null?void 0:t.cursor_position)D("cursor_position",t==null?void 0:t.cursor_position);else if(t==null?void 0:t.misc){if(!this.handleMisc(t==null?void 0:t.misc))break}else(t==null?void 0:t.audio_frame)&&bn(t==null?void 0:t.audio_frame.data)}}msgbox(r,i,t){var n;(n=this._msgbox)==null||n.call(this,r,i,t)}draw(r){var i;(i=this._draw)==null||i.call(this,r),nr(r)}close(){var r,i;this._msgs=[],clearInterval(this._interval),(r=this._ws)==null||r.close(),(i=this._videoDecoder)==null||i.close()}refresh(){var i;const r=E.fromPartial({refresh_video:!0});(i=this._ws)==null||i.sendMessage({misc:r})}setMsgbox(r){this._msgbox=r}setDraw(r){this._draw=r}login(r=void 0){var i,t,n;if(r){const o=(i=this._hash)==null?void 0:i.salt;let u=ir([r,o]);this._password=u;const c=(t=this._hash)==null?void 0:t.challenge;u=ir([u,c]),this.msgbox("connecting","Connecting...","Logging in..."),this._sendLoginMessage(u)}else{let o=this._password;if(o){const u=(n=this._hash)==null?void 0:n.challenge;o=ir([o,u])}this._sendLoginMessage(o)}}async reconnect(){this.close(),await this.start(this._id)}_sendLoginMessage(r=void 0){var t;const i=I.fromPartial({username:this._id,my_id:"web",my_name:"web",password:r,option:this.getOptionMessage(),video_ack_required:!0});(t=this._ws)==null||t.sendMessage({login_request:i})}getOptionMessage(){let r=0;const i=f.fromPartial({}),t=this.getImageQualityEnum(this.getImageQuality(),!0),n=R.Yes;return t!=null&&(i.image_quality=t,r+=1),this._options["show-remote-cursor"]&&(i.show_remote_cursor=n,r+=1),this._options["lock-after-session-end"]&&(i.lock_after_session_end=n,r+=1),this._options["privacy-mode"]&&(i.privacy_mode=n,r+=1),this._options["disable-audio"]&&(i.disable_audio=n,r+=1),this._options["disable-clipboard"]&&(i.disable_clipboard=n,r+=1),r>0?i:void 0}sendVideoReceived(){var i;const r=E.fromPartial({video_received:!0});(i=this._ws)==null||i.sendMessage({misc:r})}handleVideoFrame(r){var n;if(this._firstFrame||(this.msgbox("","",""),this._firstFrame=!0),r.vp9s){const o=this._videoDecoder;var i=new Date().getTime(),t=0;const u=(n=r.vp9s)==null?void 0:n.frames.length;r.vp9s.frames.forEach(c=>{o.processFrame(c.data.slice(0).buffer,l=>{if(t++,t==u&&this.sendVideoReceived(),l&&o.frameBuffer&&u==t){this.draw(o.frameBuffer);var p=new Date().getTime()-i;this._videoTestSpeed[1]+=p,this._videoTestSpeed[0]+=1,this._videoTestSpeed[0]>=30&&(console.log("video decoder: "+parseInt(""+this._videoTestSpeed[1]/this._videoTestSpeed[0])),this._videoTestSpeed=[0,0])}})})}}handlePeerInfo(r){var n,o;if(this._peerInfo=r,r.displays.length==0){this.msgbox("error","Remote Error","No Display");return}this.msgbox("success","Successful","Connected, waiting for image..."),D("peer_info",r);const i=this.shouldAutoLogin();i&&this.inputOsPassword(i);const t=(n=this.getOption("info"))==null?void 0:n.username;if(t&&!r.username&&(r.username=t),this.setOption("info",r),this.getRemember()){if((o=this._password)==null?void 0:o.length){const u=this._password.toString();u!=this.getOption("password")&&(this.setOption("password",u),console.log("remember password of "+this._id))}}else this.setOption("password",void 0)}shouldAutoLogin(){const r=this.getOption("lock-after-session-end"),i=!!this.getOption("auto-login"),t=this.getOption("os-password");return t&&r&&i?t:""}handleMisc(r){if(r.audio_format)In(r.audio_format.channels,r.audio_format.sample_rate);else if(r.chat_message)D("chat",r.chat_message.text);else if(r.permission_info){const i=r.permission_info;console.info("Change permission "+i.permission+" -> "+i.enabled);let t;switch(i.permission){case V.Keyboard:t="keyboard";break;case V.Clipboard:t="clipboard";break;case V.Audio:t="audio";break;default:return}D("permission",{[t]:i.enabled})}else if(r.switch_display)this.loadVideoDecoder(),D("switch_display",r.switch_display);else if(r.close_reason)return this.msgbox("error","Connection Error",r.close_reason),this.close(),!1;return!0}getRemember(){return this._options.remember||!1}setRemember(r){this.setOption("remember",r)}getOption(r){return this._options[r]}setOption(r,i){i==null?delete this._options[r]:this._options[r]=i,this._options.tm=new Date().getTime();const t=We();t[this._id]=this._options,localStorage.setItem("peers",JSON.stringify(t))}inputKey(r,i,t,n,o,u,c){var p;const l=mn(r,wn());!l||(n&&(r=="Alt"||r=="RAlt")&&(n=!1),o&&(r=="Control"||r=="RControl")&&(o=!1),u&&(r=="Shift"||r=="RShift")&&(u=!1),c&&(r=="Meta"||r=="RWin")&&(c=!1),l.down=i,l.press=t,l.modifiers=this.getMod(n,o,u,c),(p=this._ws)==null||p.sendMessage({key_event:l}))}ctrlAltDel(){var i,t;const r=v.fromPartial({down:!0});((i=this._peerInfo)==null?void 0:i.platform)=="Windows"?r.control_key=k.CtrlAltDel:(r.control_key=k.Delete,r.modifiers=this.getMod(!0,!0,!1,!1)),(t=this._ws)==null||t.sendMessage({key_event:r})}inputString(r){var t;const i=v.fromPartial({seq:r});(t=this._ws)==null||t.sendMessage({key_event:i})}switchDisplay(r){var n;const i=J.fromPartial({display:r}),t=E.fromPartial({switch_display:i});(n=this._ws)==null||n.sendMessage({misc:t})}async inputOsPassword(r){var t;this.inputMouse(),await rr(50),this.inputMouse(0,3,3),await rr(50),this.inputMouse(1|1<<3),this.inputMouse(2|1<<3),await rr(1200);const i=v.fromPartial({press:!0,seq:r});(t=this._ws)==null||t.sendMessage({key_event:i})}lockScreen(){var i;const r=v.fromPartial({down:!0,control_key:k.LockScreen});(i=this._ws)==null||i.sendMessage({key_event:r})}getMod(r,i,t,n){const o=[];return r&&o.push(k.Alt),i&&o.push(k.Control),t&&o.push(k.Shift),n&&o.push(k.Meta),o}inputMouse(r=0,i=0,t=0,n=!1,o=!1,u=!1,c=!1){var p;const l=b.fromPartial({mask:r,x:i,y:t,modifiers:this.getMod(n,o,u,c)});(p=this._ws)==null||p.sendMessage({mouse_event:l})}toggleOption(r){var u;const i=!this._options[r],t=f.fromPartial({}),n=i?R.Yes:R.No;switch(r){case"show-remote-cursor":t.show_remote_cursor=n;break;case"disable-audio":t.disable_audio=n;break;case"disable-clipboard":t.disable_clipboard=n;break;case"lock-after-session-end":t.lock_after_session_end=n;break;case"privacy-mode":t.privacy_mode=n;break;case"block-input":t.block_input=R.Yes;break;case"unblock-input":t.block_input=R.No;break;default:return}r.indexOf("block-input")<0&&this.setOption(r,i);const o=E.fromPartial({option:t});(u=this._ws)==null||u.sendMessage({misc:o})}getImageQuality(){return this.getOption("image-quality")}getImageQualityEnum(r,i){switch(r){case"low":return L.Low;case"best":return L.Best;case"balanced":return i?void 0:L.Balanced;default:return}}setImageQuality(r){var o;this.setOption("image-quality",r);const i=this.getImageQualityEnum(r,!1);if(i==null)return;const t=f.fromPartial({image_quality:i}),n=E.fromPartial({option:t});(o=this._ws)==null||o.sendMessage({misc:n})}loadVideoDecoder(){var r;(r=this._videoDecoder)==null||r.close(),Oi(i=>{this._videoDecoder=i,console.log("vp9 loaded"),console.log(i)})}}function Sn(){xi.forEach(e=>{const r=new Date().getTime();new je(Ti(e),!0).open().then(()=>{console.log("latency of "+e+": "+(new Date().getTime()-r)),Ii=e,localStorage.setItem("rendezvous-server",e)})})}Sn();function Ji(e=!1){const r=localStorage.getItem("custom-rendezvous-server");return bi+(r||Ii)+":"+(Pi+(e?3:2))}function Ti(e,r=!1){if(e.indexOf(":")>0){const i=e.split(":"),t=parseInt(i[1]);e=i[0]+":"+(t+(r?3:2))}else e+=":"+(Pi+(r?3:2));return bi+e}function ir(e){const r=new Ki.exports.Hash;return e.forEach(i=>(typeof i=="string"&&(i=new TextEncoder().encode(i)),r.update(i))),r.digest()}var qe=void 0,w=[];window.curConn=void 0;window.getRgba=()=>{const e=qe;return qe=void 0,e||null};window.isMobile=()=>/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(navigator.userAgent)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(navigator.userAgent.substr(0,4));function wn(){return!isMobile()}function Nn(e,r,i){if(!!w&&!(!e||e=="error"&&!i)){i.toLowerCase();var t=pn(e,r,i)?"true":"";w.push({name:"msgbox",type:e,title:r,text:i,hasRetry:t})}}function An(e){var r={};for(const[i,t]of Object.entries(e))!i||(r[i]=t instanceof Uint8Array?"["+t.toString()+"]":JSON.stringify(t));return r}function D(e,r){!w||(r=An(r),r.name=e,w.push(r))}let ze=new Worker("./yuv.js");function nr(e){if(ze)ze.postMessage(e);else{var r=new Date().getTime();yuvCanvas.drawFrame(e),console.log(new Date().getTime()-r),r=new Date().getTime(),pixels||(pixels=new Uint8Array(canvas.width*canvas.height*4)),gl.readPixels(0,0,canvas.width,canvas.height,gl.RGBA,gl.UNSIGNED_BYTE,pixels),console.log(new Date().getTime()-r)}}function Ui(e){window.curConn=e}function tr(){return window.curConn}async function Fn(e){qe=void 0,w=[],setByName("remote_id",e),await curConn.start(e)}function qi(){var e;(e=tr())==null||e.close(),Ui(void 0),qe=void 0,w=void 0}function Mi(){var r;(r=window.curConn)==null||r.close();const e=new En;return Ui(e),e}let N;async function gi(e,r){return N||(await fr.ready,N=fr),typeof r=="string"&&(r=Li(r)),N.crypto_sign_open(e,r)}function Li(e){return N.from_base64(e,N.base64_variants.ORIGINAL)}function Dn(){const e=N.crypto_box_keypair(),r=e.privateKey,i=e.publicKey;return[r,i]}function On(){return N.crypto_secretbox_keygen()}function Rn(e,r,i){const t=Uint8Array.from(Array(24).fill(0));return N.crypto_box_easy(e,t,r,i)}function Vi(e){for(var r=Array(24).fill(0),i=0;i0;i++){var t=e&255;r[i]=t,e=(e-t)/256}return Uint8Array.from(r)}function Cn(e,r,i){return N.crypto_secretbox_easy(e,Vi(r),i)}function Bn(e,r,i){return N.crypto_secretbox_open_easy(e,Vi(r),i)}window.setByName=(e,r)=>{switch(e){case"remote_id":localStorage.setItem("remote-id",r);break;case"connect":Mi(),Fn(r);break;case"login":r=JSON.parse(r),curConn.setRemember(r.remember=="true"),curConn.login(r.password);break;case"close":qi();break;case"refresh":curConn.refresh();break;case"reconnect":curConn.reconnect();break;case"toggle_option":curConn.toggleOption(r);break;case"image_quality":curConn.setImageQuality(r);break;case"lock_screen":curConn.lockScreen();break;case"ctrl_alt_del":curConn.ctrlAltDel();break;case"switch_display":curConn.switchDisplay(r);break;case"remove":const i=We();delete i[r],localStorage.setItem("peers",JSON.stringify(i));break;case"input_key":r=JSON.parse(r),curConn.inputKey(r.name,r.down=="true",r.press=="true",r.alt=="true",r.ctrl=="true",r.shift=="true",r.command=="true");break;case"input_string":curConn.inputString(r);break;case"send_mouse":let t=0;switch(r=JSON.parse(r),r.type){case"down":t=1;break;case"up":t=2;break;case"wheel":t=3;break}switch(r.buttons){case"left":t|=1<<3;break;case"right":t|=2<<3;break;case"wheel":t|=4<<3}curConn.inputMouse(t,parseInt(r.x||"0"),parseInt(r.y||"0"),r.alt=="true",r.ctrl=="true",r.shift=="true",r.command=="true");break;case"option":r=JSON.parse(r),localStorage.setItem(r.name,r.value);break;case"peer_option":r=JSON.parse(r),curConn.setOption(r.name,r.value);break;case"input_os_password":curConn.inputOsPassword(r);break}};window.getByName=(e,r)=>{let i=xn(e,r);return typeof i=="string"||i instanceof String?i:i==null||i==null?"":JSON.stringify(i)};function Pn(){const e=[];for(const[r,i]of Object.entries(We())){if(!r)continue;const t=i.tm,n=i.info;!t||!n||e.push([t,r,n])}return e.sort().reverse().map(r=>r.slice(1))}function xn(e,r){switch(e){case"peers":return Pn();case"remote_id":return localStorage.getItem("remote-id");case"remember":return curConn.getRemember();case"event":if(w&&w.length){const i=w[0];return w.splice(0,1),JSON.stringify(i)}break;case"toggle_option":return curConn.getOption(r)||!1;case"option":return localStorage.getItem(r);case"image_quality":return curConn.getImageQuality();case"translate":return r=JSON.parse(r),hn(r.locale,r.text);case"peer_option":return curConn.getOption(r);case"test_if_valid_server":break;case"version":return vn}return""}let or=new Worker("./libopus.js"),zi;function In(e,r){zi=Jn(e,r),or.postMessage({channels:e,sampleRate:r})}function bn(e){or.postMessage(e,[e.buffer])}window.init=async()=>{ze&&(ze.onmessage=e=>{qe=e.data}),or.onmessage=e=>{zi.feed(e.data)},Oi(()=>{}),await Ci(),console.log("init done")};function We(){try{return JSON.parse(localStorage.getItem("peers"))||{}}catch{return{}}}function Jn(e,r){return new Qi({channels:e,sampleRate:r,flushingTime:2e3})}const Wi=document.querySelector("#app");if(Wi){let r=function(i,t,n){!tr()||(i=="input-password"?(document.querySelector("div#status").style.display="none",document.querySelector("div#password").style.display="block"):i?i=="error"?(document.querySelector("div#status").style.display="block",document.querySelector("div#canvas").style.display="none",document.querySelector("div#text").innerHTML='
'+n+"
"):(document.querySelector("div#password").style.display="none",document.querySelector("div#status").style.display="block",document.querySelector("div#text").innerHTML='
'+n+"
"):(document.querySelector("div#canvas").style.display="block",document.querySelector("div#password").style.display="none",document.querySelector("div#status").style.display="none"))};Wi.innerHTML=` +
+ + + + +
Host:
Key:
Id:
+ + + +`;let e;window.init(),document.body.onload=()=>{const i=document.querySelector("#host");i.value=localStorage.getItem("custom-rendezvous-server");const t=document.querySelector("#id");t.value=localStorage.getItem("id");const n=document.querySelector("#key");n.value=localStorage.getItem("key"),e=YUVCanvas.attach(document.getElementById("player"))},window.connect=()=>{const i=document.querySelector("#host");localStorage.setItem("custom-rendezvous-server",i.value);const t=document.querySelector("#id");localStorage.setItem("id",t.value);const n=document.querySelector("#key");localStorage.setItem("key",n.value),(async()=>{const u=Mi();u.setMsgbox(r),u.setDraw(c=>{nr(c),e.drawFrame(c)}),document.querySelector("div#status").style.display="block",document.querySelector("div#connect").style.display="none",document.querySelector("div#text").innerHTML="Connecting ...",await u.start(t.value)})()},window.cancel=()=>{qi(),document.querySelector("div#connect").style.display="block",document.querySelector("div#password").style.display="none",document.querySelector("div#status").style.display="none",document.querySelector("div#canvas").style.display="none"},window.confirm=()=>{const i=document.querySelector("input#password").value;i&&(document.querySelector("div#password").style.display="none",tr().login(i))}} diff --git a/web/assets/vendor.b7bb6fa2.js b/web/assets/vendor.b7bb6fa2.js new file mode 100644 index 000000000..a4e577a6b --- /dev/null +++ b/web/assets/vendor.b7bb6fa2.js @@ -0,0 +1 @@ +var commonjsGlobal=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:{};function getAugmentedNamespace(oA){if(oA.__esModule)return oA;var J=Object.defineProperty({},"__esModule",{value:!0});return Object.keys(oA).forEach(function(sA){var GA=Object.getOwnPropertyDescriptor(oA,sA);Object.defineProperty(J,sA,GA.get?GA:{enumerable:!0,get:function(){return oA[sA]}})}),J}var long=Long,wasm=null;try{wasm=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch{}function Long(oA,J,sA){this.low=oA|0,this.high=J|0,this.unsigned=!!sA}Long.prototype.__isLong__;Object.defineProperty(Long.prototype,"__isLong__",{value:!0});function isLong(oA){return(oA&&oA.__isLong__)===!0}Long.isLong=isLong;var INT_CACHE={},UINT_CACHE={};function fromInt(oA,J){var sA,GA,uA;return J?(oA>>>=0,(uA=0<=oA&&oA<256)&&(GA=UINT_CACHE[oA],GA)?GA:(sA=fromBits(oA,(oA|0)<0?-1:0,!0),uA&&(UINT_CACHE[oA]=sA),sA)):(oA|=0,(uA=-128<=oA&&oA<128)&&(GA=INT_CACHE[oA],GA)?GA:(sA=fromBits(oA,oA<0?-1:0,!1),uA&&(INT_CACHE[oA]=sA),sA))}Long.fromInt=fromInt;function fromNumber(oA,J){if(isNaN(oA))return J?UZERO:ZERO;if(J){if(oA<0)return UZERO;if(oA>=TWO_PWR_64_DBL)return MAX_UNSIGNED_VALUE}else{if(oA<=-TWO_PWR_63_DBL)return MIN_VALUE;if(oA+1>=TWO_PWR_63_DBL)return MAX_VALUE}return oA<0?fromNumber(-oA,J).neg():fromBits(oA%TWO_PWR_32_DBL|0,oA/TWO_PWR_32_DBL|0,J)}Long.fromNumber=fromNumber;function fromBits(oA,J,sA){return new Long(oA,J,sA)}Long.fromBits=fromBits;var pow_dbl=Math.pow;function fromString(oA,J,sA){if(oA.length===0)throw Error("empty string");if(oA==="NaN"||oA==="Infinity"||oA==="+Infinity"||oA==="-Infinity")return ZERO;if(typeof J=="number"?(sA=J,J=!1):J=!!J,sA=sA||10,sA<2||360)throw Error("interior hyphen");if(GA===0)return fromString(oA.substring(1),J,sA).neg();for(var uA=fromNumber(pow_dbl(sA,8)),vA=ZERO,P=0;P>>0:this.low};LongPrototype.toNumber=function(){return this.unsigned?(this.high>>>0)*TWO_PWR_32_DBL+(this.low>>>0):this.high*TWO_PWR_32_DBL+(this.low>>>0)};LongPrototype.toString=function(J){if(J=J||10,J<2||36>>0,e0=LA.toString(J);if(P=JA,P.isZero())return e0+PA;for(;e0.length<6;)e0="0"+e0;PA=""+e0+PA}};LongPrototype.getHighBits=function(){return this.high};LongPrototype.getHighBitsUnsigned=function(){return this.high>>>0};LongPrototype.getLowBits=function(){return this.low};LongPrototype.getLowBitsUnsigned=function(){return this.low>>>0};LongPrototype.getNumBitsAbs=function(){if(this.isNegative())return this.eq(MIN_VALUE)?64:this.neg().getNumBitsAbs();for(var J=this.high!=0?this.high:this.low,sA=31;sA>0&&(J&1<=0};LongPrototype.isOdd=function(){return(this.low&1)==1};LongPrototype.isEven=function(){return(this.low&1)==0};LongPrototype.equals=function(J){return isLong(J)||(J=fromValue(J)),this.unsigned!==J.unsigned&&this.high>>>31==1&&J.high>>>31==1?!1:this.high===J.high&&this.low===J.low};LongPrototype.eq=LongPrototype.equals;LongPrototype.notEquals=function(J){return!this.eq(J)};LongPrototype.neq=LongPrototype.notEquals;LongPrototype.ne=LongPrototype.notEquals;LongPrototype.lessThan=function(J){return this.comp(J)<0};LongPrototype.lt=LongPrototype.lessThan;LongPrototype.lessThanOrEqual=function(J){return this.comp(J)<=0};LongPrototype.lte=LongPrototype.lessThanOrEqual;LongPrototype.le=LongPrototype.lessThanOrEqual;LongPrototype.greaterThan=function(J){return this.comp(J)>0};LongPrototype.gt=LongPrototype.greaterThan;LongPrototype.greaterThanOrEqual=function(J){return this.comp(J)>=0};LongPrototype.gte=LongPrototype.greaterThanOrEqual;LongPrototype.ge=LongPrototype.greaterThanOrEqual;LongPrototype.compare=function(J){if(isLong(J)||(J=fromValue(J)),this.eq(J))return 0;var sA=this.isNegative(),GA=J.isNegative();return sA&&!GA?-1:!sA&&GA?1:this.unsigned?J.high>>>0>this.high>>>0||J.high===this.high&&J.low>>>0>this.low>>>0?-1:1:this.sub(J).isNegative()?-1:1};LongPrototype.comp=LongPrototype.compare;LongPrototype.negate=function(){return!this.unsigned&&this.eq(MIN_VALUE)?MIN_VALUE:this.not().add(ONE)};LongPrototype.neg=LongPrototype.negate;LongPrototype.add=function(J){isLong(J)||(J=fromValue(J));var sA=this.high>>>16,GA=this.high&65535,uA=this.low>>>16,vA=this.low&65535,P=J.high>>>16,PA=J.high&65535,JA=J.low>>>16,LA=J.low&65535,e0=0,R=0,i0=0,$A=0;return $A+=vA+LA,i0+=$A>>>16,$A&=65535,i0+=uA+JA,R+=i0>>>16,i0&=65535,R+=GA+PA,e0+=R>>>16,R&=65535,e0+=sA+P,e0&=65535,fromBits(i0<<16|$A,e0<<16|R,this.unsigned)};LongPrototype.subtract=function(J){return isLong(J)||(J=fromValue(J)),this.add(J.neg())};LongPrototype.sub=LongPrototype.subtract;LongPrototype.multiply=function(J){if(this.isZero())return ZERO;if(isLong(J)||(J=fromValue(J)),wasm){var sA=wasm.mul(this.low,this.high,J.low,J.high);return fromBits(sA,wasm.get_high(),this.unsigned)}if(J.isZero())return ZERO;if(this.eq(MIN_VALUE))return J.isOdd()?MIN_VALUE:ZERO;if(J.eq(MIN_VALUE))return this.isOdd()?MIN_VALUE:ZERO;if(this.isNegative())return J.isNegative()?this.neg().mul(J.neg()):this.neg().mul(J).neg();if(J.isNegative())return this.mul(J.neg()).neg();if(this.lt(TWO_PWR_24)&&J.lt(TWO_PWR_24))return fromNumber(this.toNumber()*J.toNumber(),this.unsigned);var GA=this.high>>>16,uA=this.high&65535,vA=this.low>>>16,P=this.low&65535,PA=J.high>>>16,JA=J.high&65535,LA=J.low>>>16,e0=J.low&65535,R=0,i0=0,$A=0,pA=0;return pA+=P*e0,$A+=pA>>>16,pA&=65535,$A+=vA*e0,i0+=$A>>>16,$A&=65535,$A+=P*LA,i0+=$A>>>16,$A&=65535,i0+=uA*e0,R+=i0>>>16,i0&=65535,i0+=vA*LA,R+=i0>>>16,i0&=65535,i0+=P*JA,R+=i0>>>16,i0&=65535,R+=GA*e0+uA*LA+vA*JA+P*PA,R&=65535,fromBits($A<<16|pA,R<<16|i0,this.unsigned)};LongPrototype.mul=LongPrototype.multiply;LongPrototype.divide=function(J){if(isLong(J)||(J=fromValue(J)),J.isZero())throw Error("division by zero");if(wasm){if(!this.unsigned&&this.high===-2147483648&&J.low===-1&&J.high===-1)return this;var sA=(this.unsigned?wasm.div_u:wasm.div_s)(this.low,this.high,J.low,J.high);return fromBits(sA,wasm.get_high(),this.unsigned)}if(this.isZero())return this.unsigned?UZERO:ZERO;var GA,uA,vA;if(this.unsigned){if(J.unsigned||(J=J.toUnsigned()),J.gt(this))return UZERO;if(J.gt(this.shru(1)))return UONE;vA=UZERO}else{if(this.eq(MIN_VALUE)){if(J.eq(ONE)||J.eq(NEG_ONE))return MIN_VALUE;if(J.eq(MIN_VALUE))return ONE;var P=this.shr(1);return GA=P.div(J).shl(1),GA.eq(ZERO)?J.isNegative()?ONE:NEG_ONE:(uA=this.sub(J.mul(GA)),vA=GA.add(uA.div(J)),vA)}else if(J.eq(MIN_VALUE))return this.unsigned?UZERO:ZERO;if(this.isNegative())return J.isNegative()?this.neg().div(J.neg()):this.neg().div(J).neg();if(J.isNegative())return this.div(J.neg()).neg();vA=ZERO}for(uA=this;uA.gte(J);){GA=Math.max(1,Math.floor(uA.toNumber()/J.toNumber()));for(var PA=Math.ceil(Math.log(GA)/Math.LN2),JA=PA<=48?1:pow_dbl(2,PA-48),LA=fromNumber(GA),e0=LA.mul(J);e0.isNegative()||e0.gt(uA);)GA-=JA,LA=fromNumber(GA,this.unsigned),e0=LA.mul(J);LA.isZero()&&(LA=ONE),vA=vA.add(LA),uA=uA.sub(e0)}return vA};LongPrototype.div=LongPrototype.divide;LongPrototype.modulo=function(J){if(isLong(J)||(J=fromValue(J)),wasm){var sA=(this.unsigned?wasm.rem_u:wasm.rem_s)(this.low,this.high,J.low,J.high);return fromBits(sA,wasm.get_high(),this.unsigned)}return this.sub(this.div(J).mul(J))};LongPrototype.mod=LongPrototype.modulo;LongPrototype.rem=LongPrototype.modulo;LongPrototype.not=function(){return fromBits(~this.low,~this.high,this.unsigned)};LongPrototype.and=function(J){return isLong(J)||(J=fromValue(J)),fromBits(this.low&J.low,this.high&J.high,this.unsigned)};LongPrototype.or=function(J){return isLong(J)||(J=fromValue(J)),fromBits(this.low|J.low,this.high|J.high,this.unsigned)};LongPrototype.xor=function(J){return isLong(J)||(J=fromValue(J)),fromBits(this.low^J.low,this.high^J.high,this.unsigned)};LongPrototype.shiftLeft=function(J){return isLong(J)&&(J=J.toInt()),(J&=63)==0?this:J<32?fromBits(this.low<>>32-J,this.unsigned):fromBits(0,this.low<>>J|this.high<<32-J,this.high>>J,this.unsigned):fromBits(this.high>>J-32,this.high>=0?0:-1,this.unsigned)};LongPrototype.shr=LongPrototype.shiftRight;LongPrototype.shiftRightUnsigned=function(J){if(isLong(J)&&(J=J.toInt()),J&=63,J===0)return this;var sA=this.high;if(J<32){var GA=this.low;return fromBits(GA>>>J|sA<<32-J,sA>>>J,this.unsigned)}else return J===32?fromBits(sA,0,this.unsigned):fromBits(sA>>>J-32,0,this.unsigned)};LongPrototype.shru=LongPrototype.shiftRightUnsigned;LongPrototype.shr_u=LongPrototype.shiftRightUnsigned;LongPrototype.toSigned=function(){return this.unsigned?fromBits(this.low,this.high,!1):this};LongPrototype.toUnsigned=function(){return this.unsigned?this:fromBits(this.low,this.high,!0)};LongPrototype.toBytes=function(J){return J?this.toBytesLE():this.toBytesBE()};LongPrototype.toBytesLE=function(){var J=this.high,sA=this.low;return[sA&255,sA>>>8&255,sA>>>16&255,sA>>>24,J&255,J>>>8&255,J>>>16&255,J>>>24]};LongPrototype.toBytesBE=function(){var J=this.high,sA=this.low;return[J>>>24,J>>>16&255,J>>>8&255,J&255,sA>>>24,sA>>>16&255,sA>>>8&255,sA&255]};Long.fromBytes=function(J,sA,GA){return GA?Long.fromBytesLE(J,sA):Long.fromBytesBE(J,sA)};Long.fromBytesLE=function(J,sA){return new Long(J[0]|J[1]<<8|J[2]<<16|J[3]<<24,J[4]|J[5]<<8|J[6]<<16|J[7]<<24,sA)};Long.fromBytesBE=function(J,sA){return new Long(J[4]<<24|J[5]<<16|J[6]<<8|J[7],J[0]<<24|J[1]<<16|J[2]<<8|J[3],sA)};var indexMinimal={},minimal$1={},aspromise=asPromise;function asPromise(oA,J){for(var sA=new Array(arguments.length-1),GA=0,uA=2,vA=!0;uA1&&PA.charAt(JA)==="=";)++LA;return Math.ceil(PA.length*3)/4-LA};for(var sA=new Array(64),GA=new Array(123),uA=0;uA<64;)GA[sA[uA]=uA<26?uA+65:uA<52?uA+71:uA<62?uA-4:uA-59|43]=uA++;J.encode=function(PA,JA,LA){for(var e0=null,R=[],i0=0,$A=0,pA;JA>2],pA=(u0&3)<<4,$A=1;break;case 1:R[i0++]=sA[pA|u0>>4],pA=(u0&15)<<2,$A=2;break;case 2:R[i0++]=sA[pA|u0>>6],R[i0++]=sA[u0&63],$A=0;break}i0>8191&&((e0||(e0=[])).push(String.fromCharCode.apply(String,R)),i0=0)}return $A&&(R[i0++]=sA[pA],R[i0++]=61,$A===1&&(R[i0++]=61)),e0?(i0&&e0.push(String.fromCharCode.apply(String,R.slice(0,i0))),e0.join("")):String.fromCharCode.apply(String,R.slice(0,i0))};var vA="invalid encoding";J.decode=function(PA,JA,LA){for(var e0=LA,R=0,i0,$A=0;$A1)break;if((pA=GA[pA])===void 0)throw Error(vA);switch(R){case 0:i0=pA,R=1;break;case 1:JA[LA++]=i0<<2|(pA&48)>>4,i0=pA,R=2;break;case 2:JA[LA++]=(i0&15)<<4|(pA&60)>>2,i0=pA,R=3;break;case 3:JA[LA++]=(i0&3)<<6|pA,R=0;break}}if(R===1)throw Error(vA);return LA-e0},J.test=function(PA){return/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(PA)}})(base64$1);var eventemitter=EventEmitter;function EventEmitter(){this._listeners={}}EventEmitter.prototype.on=function(J,sA,GA){return(this._listeners[J]||(this._listeners[J]=[])).push({fn:sA,ctx:GA||this}),this};EventEmitter.prototype.off=function(J,sA){if(J===void 0)this._listeners={};else if(sA===void 0)this._listeners[J]=[];else for(var GA=this._listeners[J],uA=0;uA0?0:2147483648,vA,P);else if(isNaN(uA))GA(2143289344,vA,P);else if(uA>34028234663852886e22)GA((PA<<31|2139095040)>>>0,vA,P);else if(uA<11754943508222875e-54)GA((PA<<31|Math.round(uA/1401298464324817e-60))>>>0,vA,P);else{var JA=Math.floor(Math.log(uA)/Math.LN2),LA=Math.round(uA*Math.pow(2,-JA)*8388608)&8388607;GA((PA<<31|JA+127<<23|LA)>>>0,vA,P)}}oA.writeFloatLE=J.bind(null,writeUintLE),oA.writeFloatBE=J.bind(null,writeUintBE);function sA(GA,uA,vA){var P=GA(uA,vA),PA=(P>>31)*2+1,JA=P>>>23&255,LA=P&8388607;return JA===255?LA?NaN:PA*(1/0):JA===0?PA*1401298464324817e-60*LA:PA*Math.pow(2,JA-150)*(LA+8388608)}oA.readFloatLE=sA.bind(null,readUintLE),oA.readFloatBE=sA.bind(null,readUintBE)}(),typeof Float64Array!="undefined"?function(){var J=new Float64Array([-0]),sA=new Uint8Array(J.buffer),GA=sA[7]===128;function uA(JA,LA,e0){J[0]=JA,LA[e0]=sA[0],LA[e0+1]=sA[1],LA[e0+2]=sA[2],LA[e0+3]=sA[3],LA[e0+4]=sA[4],LA[e0+5]=sA[5],LA[e0+6]=sA[6],LA[e0+7]=sA[7]}function vA(JA,LA,e0){J[0]=JA,LA[e0]=sA[7],LA[e0+1]=sA[6],LA[e0+2]=sA[5],LA[e0+3]=sA[4],LA[e0+4]=sA[3],LA[e0+5]=sA[2],LA[e0+6]=sA[1],LA[e0+7]=sA[0]}oA.writeDoubleLE=GA?uA:vA,oA.writeDoubleBE=GA?vA:uA;function P(JA,LA){return sA[0]=JA[LA],sA[1]=JA[LA+1],sA[2]=JA[LA+2],sA[3]=JA[LA+3],sA[4]=JA[LA+4],sA[5]=JA[LA+5],sA[6]=JA[LA+6],sA[7]=JA[LA+7],J[0]}function PA(JA,LA){return sA[7]=JA[LA],sA[6]=JA[LA+1],sA[5]=JA[LA+2],sA[4]=JA[LA+3],sA[3]=JA[LA+4],sA[2]=JA[LA+5],sA[1]=JA[LA+6],sA[0]=JA[LA+7],J[0]}oA.readDoubleLE=GA?P:PA,oA.readDoubleBE=GA?PA:P}():function(){function J(GA,uA,vA,P,PA,JA){var LA=P<0?1:0;if(LA&&(P=-P),P===0)GA(0,PA,JA+uA),GA(1/P>0?0:2147483648,PA,JA+vA);else if(isNaN(P))GA(0,PA,JA+uA),GA(2146959360,PA,JA+vA);else if(P>17976931348623157e292)GA(0,PA,JA+uA),GA((LA<<31|2146435072)>>>0,PA,JA+vA);else{var e0;if(P<22250738585072014e-324)e0=P/5e-324,GA(e0>>>0,PA,JA+uA),GA((LA<<31|e0/4294967296)>>>0,PA,JA+vA);else{var R=Math.floor(Math.log(P)/Math.LN2);R===1024&&(R=1023),e0=P*Math.pow(2,-R),GA(e0*4503599627370496>>>0,PA,JA+uA),GA((LA<<31|R+1023<<20|e0*1048576&1048575)>>>0,PA,JA+vA)}}}oA.writeDoubleLE=J.bind(null,writeUintLE,0,4),oA.writeDoubleBE=J.bind(null,writeUintBE,4,0);function sA(GA,uA,vA,P,PA){var JA=GA(P,PA+uA),LA=GA(P,PA+vA),e0=(LA>>31)*2+1,R=LA>>>20&2047,i0=4294967296*(LA&1048575)+JA;return R===2047?i0?NaN:e0*(1/0):R===0?e0*5e-324*i0:e0*Math.pow(2,R-1075)*(i0+4503599627370496)}oA.readDoubleLE=sA.bind(null,readUintLE,0,4),oA.readDoubleBE=sA.bind(null,readUintBE,4,0)}(),oA}function writeUintLE(oA,J,sA){J[sA]=oA&255,J[sA+1]=oA>>>8&255,J[sA+2]=oA>>>16&255,J[sA+3]=oA>>>24}function writeUintBE(oA,J,sA){J[sA]=oA>>>24,J[sA+1]=oA>>>16&255,J[sA+2]=oA>>>8&255,J[sA+3]=oA&255}function readUintLE(oA,J){return(oA[J]|oA[J+1]<<8|oA[J+2]<<16|oA[J+3]<<24)>>>0}function readUintBE(oA,J){return(oA[J]<<24|oA[J+1]<<16|oA[J+2]<<8|oA[J+3])>>>0}var inquire_1=inquire;function inquire(moduleName){try{var mod=eval("quire".replace(/^/,"re"))(moduleName);if(mod&&(mod.length||Object.keys(mod).length))return mod}catch(oA){}return null}var utf8$2={};(function(oA){var J=oA;J.length=function(GA){for(var uA=0,vA=0,P=0;P191&&e0<224?JA[LA++]=(e0&31)<<6|GA[uA++]&63:e0>239&&e0<365?(e0=((e0&7)<<18|(GA[uA++]&63)<<12|(GA[uA++]&63)<<6|GA[uA++]&63)-65536,JA[LA++]=55296+(e0>>10),JA[LA++]=56320+(e0&1023)):JA[LA++]=(e0&15)<<12|(GA[uA++]&63)<<6|GA[uA++]&63,LA>8191&&((PA||(PA=[])).push(String.fromCharCode.apply(String,JA)),LA=0);return PA?(LA&&PA.push(String.fromCharCode.apply(String,JA.slice(0,LA))),PA.join("")):String.fromCharCode.apply(String,JA.slice(0,LA))},J.write=function(GA,uA,vA){for(var P=vA,PA,JA,LA=0;LA>6|192,uA[vA++]=PA&63|128):(PA&64512)==55296&&((JA=GA.charCodeAt(LA+1))&64512)==56320?(PA=65536+((PA&1023)<<10)+(JA&1023),++LA,uA[vA++]=PA>>18|240,uA[vA++]=PA>>12&63|128,uA[vA++]=PA>>6&63|128,uA[vA++]=PA&63|128):(uA[vA++]=PA>>12|224,uA[vA++]=PA>>6&63|128,uA[vA++]=PA&63|128);return vA-P}})(utf8$2);var pool_1=pool;function pool(oA,J,sA){var GA=sA||8192,uA=GA>>>1,vA=null,P=GA;return function(JA){if(JA<1||JA>uA)return oA(JA);P+JA>GA&&(vA=oA(GA),P=0);var LA=J.call(vA,P,P+=JA);return P&7&&(P=(P|7)+1),LA}}var longbits=LongBits$2,util$5=minimal$1;function LongBits$2(oA,J){this.lo=oA>>>0,this.hi=J>>>0}var zero=LongBits$2.zero=new LongBits$2(0,0);zero.toNumber=function(){return 0};zero.zzEncode=zero.zzDecode=function(){return this};zero.length=function(){return 1};var zeroHash=LongBits$2.zeroHash="\0\0\0\0\0\0\0\0";LongBits$2.fromNumber=function oA(J){if(J===0)return zero;var sA=J<0;sA&&(J=-J);var GA=J>>>0,uA=(J-GA)/4294967296>>>0;return sA&&(uA=~uA>>>0,GA=~GA>>>0,++GA>4294967295&&(GA=0,++uA>4294967295&&(uA=0))),new LongBits$2(GA,uA)};LongBits$2.from=function oA(J){if(typeof J=="number")return LongBits$2.fromNumber(J);if(util$5.isString(J))if(util$5.Long)J=util$5.Long.fromString(J);else return LongBits$2.fromNumber(parseInt(J,10));return J.low||J.high?new LongBits$2(J.low>>>0,J.high>>>0):zero};LongBits$2.prototype.toNumber=function oA(J){if(!J&&this.hi>>>31){var sA=~this.lo+1>>>0,GA=~this.hi>>>0;return sA||(GA=GA+1>>>0),-(sA+GA*4294967296)}return this.lo+this.hi*4294967296};LongBits$2.prototype.toLong=function oA(J){return util$5.Long?new util$5.Long(this.lo|0,this.hi|0,Boolean(J)):{low:this.lo|0,high:this.hi|0,unsigned:Boolean(J)}};var charCodeAt=String.prototype.charCodeAt;LongBits$2.fromHash=function oA(J){return J===zeroHash?zero:new LongBits$2((charCodeAt.call(J,0)|charCodeAt.call(J,1)<<8|charCodeAt.call(J,2)<<16|charCodeAt.call(J,3)<<24)>>>0,(charCodeAt.call(J,4)|charCodeAt.call(J,5)<<8|charCodeAt.call(J,6)<<16|charCodeAt.call(J,7)<<24)>>>0)};LongBits$2.prototype.toHash=function oA(){return String.fromCharCode(this.lo&255,this.lo>>>8&255,this.lo>>>16&255,this.lo>>>24,this.hi&255,this.hi>>>8&255,this.hi>>>16&255,this.hi>>>24)};LongBits$2.prototype.zzEncode=function oA(){var J=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^J)>>>0,this.lo=(this.lo<<1^J)>>>0,this};LongBits$2.prototype.zzDecode=function oA(){var J=-(this.lo&1);return this.lo=((this.lo>>>1|this.hi<<31)^J)>>>0,this.hi=(this.hi>>>1^J)>>>0,this};LongBits$2.prototype.length=function oA(){var J=this.lo,sA=(this.lo>>>28|this.hi<<4)>>>0,GA=this.hi>>>24;return GA===0?sA===0?J<16384?J<128?1:2:J<2097152?3:4:sA<16384?sA<128?5:6:sA<2097152?7:8:GA<128?9:10};(function(oA){var J=oA;J.asPromise=aspromise,J.base64=base64$1,J.EventEmitter=eventemitter,J.float=float,J.inquire=inquire_1,J.utf8=utf8$2,J.pool=pool_1,J.LongBits=longbits,J.isNode=Boolean(typeof commonjsGlobal!="undefined"&&commonjsGlobal&&commonjsGlobal.process&&commonjsGlobal.process.versions&&commonjsGlobal.process.versions.node),J.global=J.isNode&&commonjsGlobal||typeof window!="undefined"&&window||typeof self!="undefined"&&self||commonjsGlobal,J.emptyArray=Object.freeze?Object.freeze([]):[],J.emptyObject=Object.freeze?Object.freeze({}):{},J.isInteger=Number.isInteger||function(vA){return typeof vA=="number"&&isFinite(vA)&&Math.floor(vA)===vA},J.isString=function(vA){return typeof vA=="string"||vA instanceof String},J.isObject=function(vA){return vA&&typeof vA=="object"},J.isset=J.isSet=function(vA,P){var PA=vA[P];return PA!=null&&vA.hasOwnProperty(P)?typeof PA!="object"||(Array.isArray(PA)?PA.length:Object.keys(PA).length)>0:!1},J.Buffer=function(){try{var uA=J.inquire("buffer").Buffer;return uA.prototype.utf8Write?uA:null}catch{return null}}(),J._Buffer_from=null,J._Buffer_allocUnsafe=null,J.newBuffer=function(vA){return typeof vA=="number"?J.Buffer?J._Buffer_allocUnsafe(vA):new J.Array(vA):J.Buffer?J._Buffer_from(vA):typeof Uint8Array=="undefined"?vA:new Uint8Array(vA)},J.Array=typeof Uint8Array!="undefined"?Uint8Array:Array,J.Long=J.global.dcodeIO&&J.global.dcodeIO.Long||J.global.Long||J.inquire("long"),J.key2Re=/^true|false|0|1$/,J.key32Re=/^-?(?:0|[1-9][0-9]*)$/,J.key64Re=/^(?:[\\x00-\\xff]{8}|-?(?:0|[1-9][0-9]*))$/,J.longToHash=function(vA){return vA?J.LongBits.from(vA).toHash():J.LongBits.zeroHash},J.longFromHash=function(vA,P){var PA=J.LongBits.fromHash(vA);return J.Long?J.Long.fromBits(PA.lo,PA.hi,P):PA.toNumber(Boolean(P))};function sA(uA,vA,P){for(var PA=Object.keys(vA),JA=0;JA-1;--LA)if(P[JA[LA]]===1&&this[JA[LA]]!==void 0&&this[JA[LA]]!==null)return JA[LA]}},J.oneOfSetter=function(vA){return function(P){for(var PA=0;PA127;)J[sA++]=oA&127|128,oA>>>=7;J[sA]=oA}function VarintOp(oA,J){this.len=oA,this.next=void 0,this.val=J}VarintOp.prototype=Object.create(Op.prototype);VarintOp.prototype.fn=writeVarint32;Writer$1.prototype.uint32=function oA(J){return this.len+=(this.tail=this.tail.next=new VarintOp((J=J>>>0)<128?1:J<16384?2:J<2097152?3:J<268435456?4:5,J)).len,this};Writer$1.prototype.int32=function oA(J){return J<0?this._push(writeVarint64,10,LongBits$1.fromNumber(J)):this.uint32(J)};Writer$1.prototype.sint32=function oA(J){return this.uint32((J<<1^J>>31)>>>0)};function writeVarint64(oA,J,sA){for(;oA.hi;)J[sA++]=oA.lo&127|128,oA.lo=(oA.lo>>>7|oA.hi<<25)>>>0,oA.hi>>>=7;for(;oA.lo>127;)J[sA++]=oA.lo&127|128,oA.lo=oA.lo>>>7;J[sA++]=oA.lo}Writer$1.prototype.uint64=function oA(J){var sA=LongBits$1.from(J);return this._push(writeVarint64,sA.length(),sA)};Writer$1.prototype.int64=Writer$1.prototype.uint64;Writer$1.prototype.sint64=function oA(J){var sA=LongBits$1.from(J).zzEncode();return this._push(writeVarint64,sA.length(),sA)};Writer$1.prototype.bool=function oA(J){return this._push(writeByte,1,J?1:0)};function writeFixed32(oA,J,sA){J[sA]=oA&255,J[sA+1]=oA>>>8&255,J[sA+2]=oA>>>16&255,J[sA+3]=oA>>>24}Writer$1.prototype.fixed32=function oA(J){return this._push(writeFixed32,4,J>>>0)};Writer$1.prototype.sfixed32=Writer$1.prototype.fixed32;Writer$1.prototype.fixed64=function oA(J){var sA=LongBits$1.from(J);return this._push(writeFixed32,4,sA.lo)._push(writeFixed32,4,sA.hi)};Writer$1.prototype.sfixed64=Writer$1.prototype.fixed64;Writer$1.prototype.float=function oA(J){return this._push(util$4.float.writeFloatLE,4,J)};Writer$1.prototype.double=function oA(J){return this._push(util$4.float.writeDoubleLE,8,J)};var writeBytes=util$4.Array.prototype.set?function oA(J,sA,GA){sA.set(J,GA)}:function oA(J,sA,GA){for(var uA=0;uA>>0;if(!sA)return this._push(writeByte,1,0);if(util$4.isString(J)){var GA=Writer$1.alloc(sA=base64.length(J));base64.decode(J,GA,0),J=GA}return this.uint32(sA)._push(writeBytes,sA,J)};Writer$1.prototype.string=function oA(J){var sA=utf8$1.length(J);return sA?this.uint32(sA)._push(utf8$1.write,sA,J):this._push(writeByte,1,0)};Writer$1.prototype.fork=function oA(){return this.states=new State(this),this.head=this.tail=new Op(noop,0,0),this.len=0,this};Writer$1.prototype.reset=function oA(){return this.states?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new Op(noop,0,0),this.len=0),this};Writer$1.prototype.ldelim=function oA(){var J=this.head,sA=this.tail,GA=this.len;return this.reset().uint32(GA),GA&&(this.tail.next=J.next,this.tail=sA,this.len+=GA),this};Writer$1.prototype.finish=function oA(){for(var J=this.head.next,sA=this.constructor.alloc(this.len),GA=0;J;)J.fn(J.val,sA,GA),GA+=J.len,J=J.next;return sA};Writer$1._configure=function(oA){BufferWriter$1=oA,Writer$1.create=create$1(),BufferWriter$1._configure()};var writer_buffer=BufferWriter,Writer=writer;(BufferWriter.prototype=Object.create(Writer.prototype)).constructor=BufferWriter;var util$3=minimal$1;function BufferWriter(){Writer.call(this)}BufferWriter._configure=function(){BufferWriter.alloc=util$3._Buffer_allocUnsafe,BufferWriter.writeBytesBuffer=util$3.Buffer&&util$3.Buffer.prototype instanceof Uint8Array&&util$3.Buffer.prototype.set.name==="set"?function(J,sA,GA){sA.set(J,GA)}:function(J,sA,GA){if(J.copy)J.copy(sA,GA,0,J.length);else for(var uA=0;uA>>0;return this.uint32(sA),sA&&this._push(BufferWriter.writeBytesBuffer,sA,J),this};function writeStringBuffer(oA,J,sA){oA.length<40?util$3.utf8.write(oA,J,sA):J.utf8Write?J.utf8Write(oA,sA):J.write(oA,sA)}BufferWriter.prototype.string=function oA(J){var sA=util$3.Buffer.byteLength(J);return this.uint32(sA),sA&&this._push(writeStringBuffer,sA,J),this};BufferWriter._configure();var reader=Reader$1,util$2=minimal$1,BufferReader$1,LongBits=util$2.LongBits,utf8=util$2.utf8;function indexOutOfRange(oA,J){return RangeError("index out of range: "+oA.pos+" + "+(J||1)+" > "+oA.len)}function Reader$1(oA){this.buf=oA,this.pos=0,this.len=oA.length}var create_array=typeof Uint8Array!="undefined"?function oA(J){if(J instanceof Uint8Array||Array.isArray(J))return new Reader$1(J);throw Error("illegal buffer")}:function oA(J){if(Array.isArray(J))return new Reader$1(J);throw Error("illegal buffer")},create=function oA(){return util$2.Buffer?function(sA){return(Reader$1.create=function(uA){return util$2.Buffer.isBuffer(uA)?new BufferReader$1(uA):create_array(uA)})(sA)}:create_array};Reader$1.create=create();Reader$1.prototype._slice=util$2.Array.prototype.subarray||util$2.Array.prototype.slice;Reader$1.prototype.uint32=function oA(){var J=4294967295;return function(){if(J=(this.buf[this.pos]&127)>>>0,this.buf[this.pos++]<128||(J=(J|(this.buf[this.pos]&127)<<7)>>>0,this.buf[this.pos++]<128)||(J=(J|(this.buf[this.pos]&127)<<14)>>>0,this.buf[this.pos++]<128)||(J=(J|(this.buf[this.pos]&127)<<21)>>>0,this.buf[this.pos++]<128)||(J=(J|(this.buf[this.pos]&15)<<28)>>>0,this.buf[this.pos++]<128))return J;if((this.pos+=5)>this.len)throw this.pos=this.len,indexOutOfRange(this,10);return J}}();Reader$1.prototype.int32=function oA(){return this.uint32()|0};Reader$1.prototype.sint32=function oA(){var J=this.uint32();return J>>>1^-(J&1)|0};function readLongVarint(){var oA=new LongBits(0,0),J=0;if(this.len-this.pos>4){for(;J<4;++J)if(oA.lo=(oA.lo|(this.buf[this.pos]&127)<>>0,this.buf[this.pos++]<128)return oA;if(oA.lo=(oA.lo|(this.buf[this.pos]&127)<<28)>>>0,oA.hi=(oA.hi|(this.buf[this.pos]&127)>>4)>>>0,this.buf[this.pos++]<128)return oA;J=0}else{for(;J<3;++J){if(this.pos>=this.len)throw indexOutOfRange(this);if(oA.lo=(oA.lo|(this.buf[this.pos]&127)<>>0,this.buf[this.pos++]<128)return oA}return oA.lo=(oA.lo|(this.buf[this.pos++]&127)<>>0,oA}if(this.len-this.pos>4){for(;J<5;++J)if(oA.hi=(oA.hi|(this.buf[this.pos]&127)<>>0,this.buf[this.pos++]<128)return oA}else for(;J<5;++J){if(this.pos>=this.len)throw indexOutOfRange(this);if(oA.hi=(oA.hi|(this.buf[this.pos]&127)<>>0,this.buf[this.pos++]<128)return oA}throw Error("invalid varint encoding")}Reader$1.prototype.bool=function oA(){return this.uint32()!==0};function readFixed32_end(oA,J){return(oA[J-4]|oA[J-3]<<8|oA[J-2]<<16|oA[J-1]<<24)>>>0}Reader$1.prototype.fixed32=function oA(){if(this.pos+4>this.len)throw indexOutOfRange(this,4);return readFixed32_end(this.buf,this.pos+=4)};Reader$1.prototype.sfixed32=function oA(){if(this.pos+4>this.len)throw indexOutOfRange(this,4);return readFixed32_end(this.buf,this.pos+=4)|0};function readFixed64(){if(this.pos+8>this.len)throw indexOutOfRange(this,8);return new LongBits(readFixed32_end(this.buf,this.pos+=4),readFixed32_end(this.buf,this.pos+=4))}Reader$1.prototype.float=function oA(){if(this.pos+4>this.len)throw indexOutOfRange(this,4);var J=util$2.float.readFloatLE(this.buf,this.pos);return this.pos+=4,J};Reader$1.prototype.double=function oA(){if(this.pos+8>this.len)throw indexOutOfRange(this,4);var J=util$2.float.readDoubleLE(this.buf,this.pos);return this.pos+=8,J};Reader$1.prototype.bytes=function oA(){var J=this.uint32(),sA=this.pos,GA=this.pos+J;if(GA>this.len)throw indexOutOfRange(this,J);return this.pos+=J,Array.isArray(this.buf)?this.buf.slice(sA,GA):sA===GA?new this.buf.constructor(0):this._slice.call(this.buf,sA,GA)};Reader$1.prototype.string=function oA(){var J=this.bytes();return utf8.read(J,0,J.length)};Reader$1.prototype.skip=function oA(J){if(typeof J=="number"){if(this.pos+J>this.len)throw indexOutOfRange(this,J);this.pos+=J}else do if(this.pos>=this.len)throw indexOutOfRange(this);while(this.buf[this.pos++]&128);return this};Reader$1.prototype.skipType=function(oA){switch(oA){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;(oA=this.uint32()&7)!=4;)this.skipType(oA);break;case 5:this.skip(4);break;default:throw Error("invalid wire type "+oA+" at offset "+this.pos)}return this};Reader$1._configure=function(oA){BufferReader$1=oA,Reader$1.create=create(),BufferReader$1._configure();var J=util$2.Long?"toLong":"toNumber";util$2.merge(Reader$1.prototype,{int64:function(){return readLongVarint.call(this)[J](!1)},uint64:function(){return readLongVarint.call(this)[J](!0)},sint64:function(){return readLongVarint.call(this).zzDecode()[J](!1)},fixed64:function(){return readFixed64.call(this)[J](!0)},sfixed64:function(){return readFixed64.call(this)[J](!1)}})};var reader_buffer=BufferReader,Reader=reader;(BufferReader.prototype=Object.create(Reader.prototype)).constructor=BufferReader;var util$1=minimal$1;function BufferReader(oA){Reader.call(this,oA)}BufferReader._configure=function(){util$1.Buffer&&(BufferReader.prototype._slice=util$1.Buffer.prototype.slice)};BufferReader.prototype.string=function oA(){var J=this.uint32();return this.buf.utf8Slice?this.buf.utf8Slice(this.pos,this.pos=Math.min(this.pos+J,this.len)):this.buf.toString("utf-8",this.pos,this.pos=Math.min(this.pos+J,this.len))};BufferReader._configure();var rpc={},service=Service,util=minimal$1;(Service.prototype=Object.create(util.EventEmitter.prototype)).constructor=Service;function Service(oA,J,sA){if(typeof oA!="function")throw TypeError("rpcImpl must be a function");util.EventEmitter.call(this),this.rpcImpl=oA,this.requestDelimited=Boolean(J),this.responseDelimited=Boolean(sA)}Service.prototype.rpcCall=function oA(J,sA,GA,uA,vA){if(!uA)throw TypeError("request must be specified");var P=this;if(!vA)return util.asPromise(oA,P,J,sA,GA,uA);if(!P.rpcImpl){setTimeout(function(){vA(Error("already ended"))},0);return}try{return P.rpcImpl(J,sA[P.requestDelimited?"encodeDelimited":"encode"](uA).finish(),function(JA,LA){if(JA)return P.emit("error",JA,J),vA(JA);if(LA===null){P.end(!0);return}if(!(LA instanceof GA))try{LA=GA[P.responseDelimited?"decodeDelimited":"decode"](LA)}catch(e0){return P.emit("error",e0,J),vA(e0)}return P.emit("data",LA,J),vA(null,LA)})}catch(PA){P.emit("error",PA,J),setTimeout(function(){vA(PA)},0);return}};Service.prototype.end=function oA(J){return this.rpcImpl&&(J||this.rpcImpl(null,null,null),this.rpcImpl=null,this.emit("end").off()),this};(function(oA){var J=oA;J.Service=service})(rpc);var roots={};(function(oA){var J=oA;J.build="minimal",J.Writer=writer,J.BufferWriter=writer_buffer,J.Reader=reader,J.BufferReader=reader_buffer,J.util=minimal$1,J.rpc=rpc,J.roots=roots,J.configure=sA;function sA(){J.util._configure(),J.Writer._configure(J.BufferWriter),J.Reader._configure(J.BufferReader)}sA()})(indexMinimal);var minimal=indexMinimal;const simd=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11]));var sha256={exports:{}};(function(oA){(function(J,sA){var GA={};sA(GA);var uA=GA.default;for(var vA in GA)uA[vA]=GA[vA];oA.exports=uA})(commonjsGlobal,function(J){J.__esModule=!0,J.digestLength=32,J.blockSize=64;var sA=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]);function GA(i0,$A,pA,u0,kA){for(var dA,QA,F0,FA,KA,IA,l0,EA,At,j0,Pt,Kt,qt;kA>=64;){for(dA=$A[0],QA=$A[1],F0=$A[2],FA=$A[3],KA=$A[4],IA=$A[5],l0=$A[6],EA=$A[7],j0=0;j0<16;j0++)Pt=u0+j0*4,i0[j0]=(pA[Pt]&255)<<24|(pA[Pt+1]&255)<<16|(pA[Pt+2]&255)<<8|pA[Pt+3]&255;for(j0=16;j0<64;j0++)At=i0[j0-2],Kt=(At>>>17|At<<32-17)^(At>>>19|At<<32-19)^At>>>10,At=i0[j0-15],qt=(At>>>7|At<<32-7)^(At>>>18|At<<32-18)^At>>>3,i0[j0]=(Kt+i0[j0-7]|0)+(qt+i0[j0-16]|0);for(j0=0;j0<64;j0++)Kt=(((KA>>>6|KA<<32-6)^(KA>>>11|KA<<32-11)^(KA>>>25|KA<<32-25))+(KA&IA^~KA&l0)|0)+(EA+(sA[j0]+i0[j0]|0)|0)|0,qt=((dA>>>2|dA<<32-2)^(dA>>>13|dA<<32-13)^(dA>>>22|dA<<32-22))+(dA&QA^dA&F0^QA&F0)|0,EA=l0,l0=IA,IA=KA,KA=FA+Kt|0,FA=F0,F0=QA,QA=dA,dA=Kt+qt|0;$A[0]+=dA,$A[1]+=QA,$A[2]+=F0,$A[3]+=FA,$A[4]+=KA,$A[5]+=IA,$A[6]+=l0,$A[7]+=EA,u0+=64,kA-=64}return u0}var uA=function(){function i0(){this.digestLength=J.digestLength,this.blockSize=J.blockSize,this.state=new Int32Array(8),this.temp=new Int32Array(64),this.buffer=new Uint8Array(128),this.bufferLength=0,this.bytesHashed=0,this.finished=!1,this.reset()}return i0.prototype.reset=function(){return this.state[0]=1779033703,this.state[1]=3144134277,this.state[2]=1013904242,this.state[3]=2773480762,this.state[4]=1359893119,this.state[5]=2600822924,this.state[6]=528734635,this.state[7]=1541459225,this.bufferLength=0,this.bytesHashed=0,this.finished=!1,this},i0.prototype.clean=function(){for(var $A=0;$A0){for(;this.bufferLength<64&&pA>0;)this.buffer[this.bufferLength++]=$A[u0++],pA--;this.bufferLength===64&&(GA(this.temp,this.state,this.buffer,0,64),this.bufferLength=0)}for(pA>=64&&(u0=GA(this.temp,this.state,$A,u0,pA),pA%=64);pA>0;)this.buffer[this.bufferLength++]=$A[u0++],pA--;return this},i0.prototype.finish=function($A){if(!this.finished){var pA=this.bytesHashed,u0=this.bufferLength,kA=pA/536870912|0,dA=pA<<3,QA=pA%64<56?64:128;this.buffer[u0]=128;for(var F0=u0+1;F0>>24&255,this.buffer[QA-7]=kA>>>16&255,this.buffer[QA-6]=kA>>>8&255,this.buffer[QA-5]=kA>>>0&255,this.buffer[QA-4]=dA>>>24&255,this.buffer[QA-3]=dA>>>16&255,this.buffer[QA-2]=dA>>>8&255,this.buffer[QA-1]=dA>>>0&255,GA(this.temp,this.state,this.buffer,0,QA),this.finished=!0}for(var F0=0;F0<8;F0++)$A[F0*4+0]=this.state[F0]>>>24&255,$A[F0*4+1]=this.state[F0]>>>16&255,$A[F0*4+2]=this.state[F0]>>>8&255,$A[F0*4+3]=this.state[F0]>>>0&255;return this},i0.prototype.digest=function(){var $A=new Uint8Array(this.digestLength);return this.finish($A),$A},i0.prototype._saveState=function($A){for(var pA=0;pAthis.blockSize)new uA().update($A).finish(pA).clean();else for(var u0=0;u0<$A.length;u0++)pA[u0]=$A[u0];for(var u0=0;u01&&$A.update(i0),pA&&$A.update(pA),$A.update(u0),$A.finish(i0),u0[0]++}var LA=new Uint8Array(J.digestLength);function e0(i0,$A,pA,u0){$A===void 0&&($A=LA),u0===void 0&&(u0=32);for(var kA=new Uint8Array([1]),dA=PA($A,i0),QA=new vA(dA),F0=new Uint8Array(QA.digestLength),FA=F0.length,KA=new Uint8Array(u0),IA=0;IA>>24&255,QA[1]=l0>>>16&255,QA[2]=l0>>>8&255,QA[3]=l0>>>0&255,kA.reset(),kA.update($A),kA.update(QA),kA.finish(FA);for(var EA=0;EAJ.arrayBuffer()).then(J=>WebAssembly.instantiate(J,g)).then(this._init):WebAssembly.instantiate(Buffer.from(C,"base64"),g).then(this._init),A)}_init(J){I=J.instance,g.env.emscripten_notify_memory_growth(0)}decode(J,sA=0){if(!I)throw new Error("ZSTDDecoder: Await .init() before decoding.");const GA=J.byteLength,uA=I.exports.malloc(GA);B.set(J,uA),sA=sA||Number(I.exports.ZSTD_findDecompressedSize(uA,GA));const vA=I.exports.malloc(sA),P=I.exports.ZSTD_decompress(vA,sA,uA,GA),PA=B.slice(vA,vA+P);return I.exports.free(uA),I.exports.free(vA),PA}}const C="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IAMNACAEQQNxBEADQCACRQ0FIAAgAkF/aiICaiIDIAEgAmotAAA6AAAgA0EDcQ0ACwsgAkEDTQ0AA0AgACACQXxqIgJqIAEgAmooAgA2AgAgAkEDSw0ACwsgAkUNAgNAIAAgAkF/aiICaiABIAJqLQAAOgAAIAINAAsMAgsgAkEDTQ0AIAIhBANAIAMgASgCADYCACABQQRqIQEgA0EEaiEDIARBfGoiBEEDSw0ACyACQQNxIQILIAJFDQADQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQX9qIgINAAsLIAAL8wICAn8BfgJAIAJFDQAgACACaiIDQX9qIAE6AAAgACABOgAAIAJBA0kNACADQX5qIAE6AAAgACABOgABIANBfWogAToAACAAIAE6AAIgAkEHSQ0AIANBfGogAToAACAAIAE6AAMgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa0iBUIghiAFhCEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkFgaiICQR9LDQALCyAACy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAIajYCACADCy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAFajYCACADCx8AIAAgASACKAIEEAg2AgAgARAEGiAAIAJBCGo2AgQLCAAgAGdBH3MLugUBDX8jAEEQayIKJAACfyAEQQNNBEAgCkEANgIMIApBDGogAyAEEAsaIAAgASACIApBDGpBBBAVIgBBbCAAEAMbIAAgACAESxsMAQsgAEEAIAEoAgBBAXRBAmoQECENQVQgAygAACIGQQ9xIgBBCksNABogAiAAQQVqNgIAIAMgBGoiAkF8aiEMIAJBeWohDiACQXtqIRAgAEEGaiELQQQh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ASIDNgLE4AEgACgCvOABIQQgACABNgK84AEgACABIAJqNgK44AEgACABIAQgA2tqNgLA4AELpgEBAX8gACAAKALs4QEQFjYCyOABIABCADcD+OABIABCADcDuOABIABBwOABakIANwMAIABBqNAAaiIBQYyAgOAANgIAIABBADYCmOIBIABCADcDiOEBIABCAzcDgOEBIABBrNABakHgEikCADcCACAAQbTQAWpB6BIoAgA2AgAgACABNgIMIAAgAEGYIGo2AgggACAAQaAwajYCBCAAIABBEGo2AgALYQEBf0G4fyEDAkAgAUEDSQ0AIAIgABAhIgFBA3YiADYCCCACIAFBAXE2AgQgAiABQQF2QQNxIgM2AgACQCADQX9qIgFBAksNAAJAIAFBAWsOAgEAAgtBbA8LIAAhAwsgAwsMACAAIAEgAkEAEC4LiAQCA38CfiADEBYhBCAAQQBBKBAQIQAgBCACSwRAIAQPCyABRQRAQX8PCwJAAkAgA0EBRg0AIAEoAAAiBkGo6r5pRg0AQXYhAyAGQXBxQdDUtMIBRw0BQQghAyACQQhJDQEgAEEAQSgQECEAIAEoAAQhASAAQQE2AhQgACABrTcDAEEADwsgASACIAMQLyIDIAJLDQAgACADNgIYQXIhAyABIARqIgVBf2otAAAiAkEIcQ0AIAJBIHEiBkUEQEFwIQMgBS0AACIFQacBSw0BIAVBB3GtQgEgBUEDdkEKaq2GIgdCA4h+IAd8IQggBEEBaiEECyACQQZ2IQMgAkECdiEFAkAgAkEDcUF/aiICQQJLBEBBACECDAELAkACQAJAIAJBAWsOAgECAAsgASAEai0AACECIARBAWohBAwCCyABIARqLwAAIQIgBEECaiEEDAELIAEgBGooAAAhAiAEQQRqIQQLIAVBAXEhBQJ+AkACQAJAIANBf2oiA0ECTQRAIANBAWsOAgIDAQtCfyAGRQ0DGiABIARqMQAADAMLIAEgBGovAACtQoACfAwCCyABIARqKAAArQwBCyABIARqKQAACyEHIAAgBTYCICAAIAI2AhwgACAHNwMAQQAhAyAAQQA2AhQgACAHIAggBhsiBzcDCCAAIAdCgIAIIAdCgIAIVBs+AhALIAMLWwEBf0G4fyEDIAIQFiICIAFNBH8gACACakF/ai0AACIAQQNxQQJ0QaAeaigC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C0Egak8NAQsgByAHKQNoNwMQIAcgBykDYDcDCCAEIA0gB0EIaiAHQdwAaiAPIA4gESAQEB4hCwwBCyACIARqIQggBCAKEAcgAkERTwRAIARBEGohAgNAIAIgCkEQaiIKEAcgAkEQaiICIAhJDQALCyAIIAlrIQIgByATNgJcIAkgCCAOa0sEQCAJIAggEWtLBEBBbCELDAILIBAgAiAOayICaiIKIANqIBBNBEAgCCAKIAMQDxoMAgsgCCAKQQAgAmsQDyEIIAcgAiADaiIDNgJkIAggAmshCCAOIQILIAlBEE8EQCADIAhqIQMDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALDAELAkAgCUEHTQRAIAggAi0AADoAACAIIAItAAE6AAEgCCACLQACOgACIAggAi0AAzoAAyAIQQRqIAIgCUECdCIDQcAeaigCAGoiAhAXIAIgA0HgHmooAgBrIQIgBygCZCEDDAELIAggAhAMCyADQQlJDQAgAyAIaiEDIAhBCGoiCCACQQhqIgJrQQ9MBEADQCAIIAIQDCACQQhqIQIgCEEIaiIIIANJDQAMAgALAAsDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALCyAHQRhqEAQaIAsgDCALEAMiAhshDCAEIAQgC2ogAhshBCAFQX9qIgUNAAsgDBADDQFBbCEMIAdBGGoQBEECSQ0BQQAhCANAIAhBA0cEQCAAIAhBAnQiAmpBrNABaiACIAdqKAJENgIAIAhBAWohCAwBCwsgBygCXCEIC0G6fyEMIA8gCGsiACANIARrSw0AIAQEfyAEIAggABALIABqBUEACyABayEMCyAHQfAAaiQAIAwLkRcCFn8FfiMAQdABayIHJAAgByAAKALw4QEiCDYCvAEgASACaiESIAggACgCgOIBaiETAkACQCAFRQRAIAEhAwwBCyAAKALE4AEhESAAKALA4AEhFSAAKAK84AEhDyAAQQE2AozhAUEAIQgDQCAIQQNHBEAgByAIQQJ0IgJqIAAgAmpBrNABaigCADYCVCAIQQFqIQgMAQsLIAcgETYCZCAHIA82AmAgByABIA9rNgJoQWwhECAHQShqIAMgBBAGEAMNASAFQQQgBUEESBshFyAHQTxqIAdBKGogACgCABATIAdBxABqIAdBKGogACgCCBATIAdBzABqIAdB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IAdB0AFqJAAgEAslACAAQgA3AgAgAEEAOwEIIABBADoACyAAIAE2AgwgACACOgAKC7QFAQN/IwBBMGsiBCQAIABB/wFqIgVBfWohBgJAIAMvAQIEQCAEQRhqIAEgAhAGIgIQAw0BIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahASOgAAIAMgBEEIaiAEQRhqEBI6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0FIAEgBEEQaiAEQRhqEBI6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBSABIARBCGogBEEYahASOgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEjoAACABIAJqIABrIQIMAwsgAyAEQRBqIARBGGoQEjoAAiADIARBCGogBEEYahASOgADIANBBGohAwwAAAsACyAEQRhqIAEgAhAGIgIQAw0AIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahAROgAAIAMgBEEIaiAEQRhqEBE6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0EIAEgBEEQaiAEQRhqEBE6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBCABIARBCGogBEEYahAROgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEToAACABIAJqIABrIQIMAgsgAyAEQRBqIARBGGoQEToAAiADIARBCGogBEEYahAROgADIANBBGohAwwAAAsACyAEQTBqJAAgAgtpAQF/An8CQAJAIAJBB00NACABKAAAQbfIwuF+Rw0AIAAgASgABDYCmOIBQWIgAEEQaiABIAIQPiIDEAMNAhogAEKBgICAEDcDiOEBIAAgASADaiACIANrECoMAQsgACABIAIQKgtBAAsLrQMBBn8jAEGAAWsiAyQAQWIhCAJAIAJBCUkNACAAQZjQAGogAUEIaiIEIAJBeGogAEGY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wOABCwutAgIEfwF+IwBBQGoiBCQAAkACQCACQQhJDQAgASgAAEFwcUHQ1LTCAUcNACABIAIQIiEBIABCADcDCCAAQQA2AgQgACABNgIADAELIARBGGogASACEC0iAxADBEAgACADEBoMAQsgAwRAIABBuH8QGgwBCyACIAQoAjAiA2shAiABIANqIQMDQAJAIAAgAyACIARBCGoQLCIFEAMEfyAFBSACIAVBA2oiBU8NAUG4fwsQGgwCCyAGQQFqIQYgAiAFayECIAMgBWohAyAEKAIMRQ0ACyAEKAI4BEAgAkEDTQRAIABBuH8QGgwCCyADQQRqIQMLIAQoAighAiAEKQMYIQcgAEEANgIEIAAgAyABazYCACAAIAIgBmytIAcgB0J/URs3AwgLIARBQGskAAslAQF/IwBBEGsiAiQAIAIgACABEFEgAigCACEAIAJBEGokACAAC30BBH8jAEGQBGsiBCQAIARB/wE2AggCQCAEQRBqIARBCGogBEEMaiABIAIQFSIGEAMEQCAGIQUMAQtBVCEFIAQoAgwiB0EGSw0AIAMgBEEQaiAEKAIIIAcQQSIFEAMNACAAIAEgBmogAiAGayADEDwhBQsgBEGQBGokACAFC4cBAgJ/An5BABAWIQMCQANAIAEgA08EQAJAIAAoAABBcHFB0NS0wgFGBEAgACABECIiAhADRQ0BQn4PCyAAIAEQVSIEQn1WDQMgBCAFfCIFIARUIQJCfiEEIAINAyAAIAEQUiICEAMNAwsgASACayEBIAAgAmohAAwBCwtCfiAFIAEbIQQLIAQLPwIBfwF+IwBBMGsiAiQAAn5CfiACQQhqIAAgARAtDQAaQgAgAigCHEEBRg0AGiACKQMICyEDIAJBMGokACADC40BAQJ/IwBBMGsiASQAAkAgAEUNACAAKAKI4gENACABIABB/OEBaigCADYCKCABIAApAvThATcDICAAEDAgACgCqOIBIQIgASABKAIoNgIYIAEgASkDIDcDECACIAFBEGoQGyAAQQA2AqjiASABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALKgECfyMAQRBrIgAkACAAQQA2AgggAEIANwMAIAAQWCEBIABBEGokACABC4cBAQN/IwBBEGsiAiQAAkAgACgCAEUgACgCBEVzDQAgAiAAKAIINgIIIAIgACkCADcDAAJ/IAIoAgAiAQRAIAIoAghBqOMJIAERBQAMAQtBqOMJECgLIgFFDQAgASAAKQIANwL04QEgAUH84QFqIAAoAgg2AgAgARBZIAEhAwsgAkEQaiQAIAMLywEBAn8jAEEgayIBJAAgAEGBgIDAADYCtOIBIABBADYCiOIBIABBADYC7OEBIABCADcDkOIBIABBADYCpOMJIABBADYC3OIBIABCADcCzOIBIABBADYCvOIBIABBADYCxOABIABCADcCnOIBIABBpOIBakIANwIAIABBrOIBakEANgIAIAFCADcCECABQgA3AhggASABKQMYNwMIIAEgASkDEDcDACABKAIIQQh2QQFxIQIgAEEANgLg4gEgACACNgKM4gEgAUEgaiQAC3YBA38jAEEwayIBJAAgAARAIAEgAEHE0AFqIgIoAgA2AiggASAAKQK80AE3AyAgACgCACEDIAEgAigCADYCGCABIAApArzQATcDECADIAFBEGoQGyABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALzAEBAX8gACABKAK00AE2ApjiASAAIAEoAgQiAjYCwOABIAAgAjYCvOABIAAgAiABKAIIaiICNgK44AEgACACNgLE4AEgASgCuNABBEAgAEKBgICAEDcDiOEBIAAgAUGk0ABqNgIMIAAgAUGUIGo2AgggACABQZwwajYCBCAAIAFBDGo2AgAgAEGs0AFqIAFBqNABaigCADYCACAAQbDQAWogAUGs0AFqKAIANgIAIABBtNABaiABQbDQAWooAgA2AgAPCyAAQgA3A4jhAQs7ACACRQRAQbp/DwsgBEUEQEFsDwsgAiAEEGAEQCAAIAEgAiADIAQgBRBhDwsgACABIAIgAyAEIAUQZQtGAQF/IwBBEGsiBSQAIAVBCGogBBAOAn8gBS0ACQRAIAAgASACIAMgBBAyDAELIAAgASACIAMgBBA0CyEAIAVBEGokACAACzQAIAAgAyAEIAUQNiIFEAMEQCAFDwsgBSAESQR/IAEgAiADIAVqIAQgBWsgABA1BUG4fwsLRgEBfyMAQRBrIgUkACAFQQhqIAQQDgJ/IAUtAAkEQCAAIAEgAiADIAQQYgwBCyAAIAEgAiADIAQQNQshACAFQRBqJAAgAAtZAQF/QQ8hAiABIABJBEAgAUEE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";var libsodiumWrappers={},libsodium={exports:{}},__viteBrowserExternal={},__viteBrowserExternal$1=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",default:__viteBrowserExternal}),require$$0=getAugmentedNamespace(__viteBrowserExternal$1);(function(oA,J){(function(sA){function GA(uA){var vA;(vA=uA)===void 0&&(vA={});var P=vA;typeof P.sodium!="object"&&(typeof commonjsGlobal=="object"?P=commonjsGlobal:typeof window=="object"&&(P=window)),typeof P.sodium=="object"&&typeof P.sodium.totalMemory=="number"&&(vA.TOTAL_MEMORY=P.sodium.totalMemory);var PA=vA;return vA.ready=new Promise(function(JA,LA){(R=PA).onAbort=LA,R.print=function(MA){},R.printErr=function(MA){},R.onRuntimeInitialized=function(){try{R._crypto_secretbox_keybytes(),JA()}catch(MA){LA(MA)}},R.useBackupModule=function(){return new Promise(function(MA,WA){(L={}).onAbort=WA,L.onRuntimeInitialized=function(){Object.keys(PA).forEach(function(UA){UA!=="getRandomValue"&&delete PA[UA]}),Object.keys(L).forEach(function(UA){PA[UA]=L[UA]}),MA()};var c0,L=L!==void 0?L:{},b0={};for(c0 in L)L.hasOwnProperty(c0)&&(b0[c0]=L[c0]);var K0=!1,J0=!1,st=!1,Ft=!1;K0=typeof window=="object",J0=typeof importScripts=="function",st=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",Ft=!K0&&!st&&!J0;var ut,te,Ig,ge,ee,mt="";function gB(UA){return L.locateFile?L.locateFile(UA,mt):mt+UA}st?(mt=J0?require$$0.dirname(mt)+"/":__dirname+"/",ut=function(UA,d){var S=jt(UA);return S?d?S:S.toString():(ge||(ge=require$$0),ee||(ee=require$$0),UA=ee.normalize(UA),ge.readFileSync(UA,d?null:"utf8"))},Ig=function(UA){var d=ut(UA,!0);return d.buffer||(d=new Uint8Array(d)),Le(d.buffer),d},process.argv.length>1&&process.argv[1].replace(/\\/g,"/"),process.argv.slice(2),oA.exports=L,L.inspect=function(){return"[Emscripten Module object]"}):Ft?(typeof read!="undefined"&&(ut=function(UA){var d=jt(UA);return d?je(d):read(UA)}),Ig=function(UA){var d;return(d=jt(UA))?d:typeof readbuffer=="function"?new Uint8Array(readbuffer(UA)):(Le(typeof(d=read(UA,"binary"))=="object"),d)},typeof scriptArgs!="undefined"&&scriptArgs,typeof print!="undefined"&&(typeof console=="undefined"&&(console={}),console.log=print,console.warn=console.error=typeof printErr!="undefined"?printErr:print)):(K0||J0)&&(J0?mt=self.location.href:typeof document!="undefined"&&document.currentScript&&(mt=document.currentScript.src),mt=mt.indexOf("blob:")!==0?mt.substr(0,mt.lastIndexOf("/")+1):"",ut=function(UA){try{var d=new XMLHttpRequest;return d.open("GET",UA,!1),d.send(null),d.responseText}catch(G){var S=jt(UA);if(S)return je(S);throw G}},J0&&(Ig=function(UA){try{var d=new XMLHttpRequest;return d.open("GET",UA,!1),d.responseType="arraybuffer",d.send(null),new Uint8Array(d.response)}catch(G){var S=jt(UA);if(S)return S;throw G}}),te=function(UA,d,S){var G=new XMLHttpRequest;G.open("GET",UA,!0),G.responseType="arraybuffer",G.onload=function(){if(G.status==200||G.status==0&&G.response)d(G.response);else{var m=jt(UA);m?d(m.buffer):S()}},G.onerror=S,G.send(null)}),L.print;var rg,ug=L.printErr||void 0;for(c0 in b0)b0.hasOwnProperty(c0)&&(L[c0]=b0[c0]);b0=null,L.arguments&&L.arguments,L.thisProgram&&L.thisProgram,L.quit&&L.quit,L.wasmBinary&&(rg=L.wasmBinary),L.noExitRuntime&&L.noExitRuntime;var _g,Yt={Memory:function(UA){this.buffer=new ArrayBuffer(65536*UA.initial)},Module:function(UA){},Instance:function(UA,d){this.exports=function(S){for(var G,m=new Uint8Array(123),M=25;M>=0;--M)m[48+M]=52+M,m[65+M]=M,m[97+M]=26+M;function T(q,Z,nA){for(var p,lA,r=0,u=Z,OA=nA.length,xA=Z+(3*OA>>2)-(nA[OA-2]=="=")-(nA[OA-1]=="=");r>4,u>2),u>2]=u[0|RA]|u[RA+1|0]<<8|u[RA+2|0]<<16|u[RA+3|0]<<24,r[rA+4>>2]=r0,(0|(VA=VA+1|0))!=16;);for(n=V0(YA,e,64),RA=r[(t=n)>>2],VA=r[t+4>>2],E=RA,RA=(r0=r[t+32>>2])+(YA=r[t+128>>2])|0,t=($=r[t+36>>2])+r[t+132>>2]|0,t=RA>>>0>>0?t+1|0:t,YA=RA,t=t+VA|0,YA=t=(RA=E+RA|0)>>>0>>0?t+1|0:t,mA=x((VA=RA)^(u[0|(RA=e- -64|0)]|u[RA+1|0]<<8|u[RA+2|0]<<16|u[RA+3|0]<<24)^-1377402159,t^(u[RA+4|0]|u[RA+5|0]<<8|u[RA+6|0]<<16|u[RA+7|0]<<24)^1359893119,32),RA=t=h,t=t+1779033703|0,E=r0^(rA=mA-205731576|0),r0=t=rA>>>0<4089235720?t+1|0:t,z=x(E,$^t,24),tA=t=h,NA=RA,E=mA,t=t+YA|0,t=(t=(mA=z+VA|0)>>>0>>0?t+1|0:t)+(w=o=r[n+140>>2])|0,E=x(E^(y=VA=(RA=r[n+136>>2])+mA|0),(F=mA>>>0>y>>>0?t+1|0:t)^NA,16),t=r0+(yA=h)|0,w=x((N=VA=rA+E|0)^z,(YA=rA>>>0>N>>>0?t+1|0:t)^tA,63),D=h,rA=r[n+12>>2],VA=(z=r[n+144>>2])+($=r0=r[n+40>>2])|0,t=(SA=r[n+148>>2])+(NA=r[n+44>>2])|0,t=VA>>>0<$>>>0?t+1|0:t,$=VA,t=t+rA|0,t=(VA=VA+r[n+8>>2]|0)>>>0<$>>>0?t+1|0:t,mA=x(VA^(u[e+72|0]|u[e+73|0]<<8|u[e+74|0]<<16|u[e+75|0]<<24)^725511199,(u[e+76|0]|u[e+77|0]<<8|u[e+78|0]<<16|u[e+79|0]<<24)^t^-1694144372,32),NA=x(s=(rA=mA-2067093701|0)^r0,NA^(tA=(r0=h)-((mA>>>0<2067093701)+1150833018|0)|0),24),v=r[n+156>>2],s=NA,t=t+($=h)|0,t=(t=(NA=NA+VA|0)>>>0>>0?t+1|0:t)+v|0,h0=x((c=VA=NA+r[n+152>>2]|0)^mA,(b=NA>>>0>c>>>0?t+1|0:t)^r0,16),t=tA+(W=h)|0,d0=VA=rA+h0|0,mA=x(s^VA,(rA=rA>>>0>VA>>>0?t+1|0:t)^$,63),tA=h,r0=r[n+20>>2],VA=(gA=r[n+160>>2])+(NA=r[n+48>>2])|0,t=(B0=r[n+164>>2])+(Y=r[n+52>>2])|0,$=VA,t=(t=VA>>>0>>0?t+1|0:t)+r0|0,eA=VA=VA+r[n+16>>2]|0,VA=VA>>>0<$>>>0?t+1|0:t,U=x(eA^(u[e+80|0]|u[e+81|0]<<8|u[e+82|0]<<16|u[e+83|0]<<24)^-79577749,VA^(u[e+84|0]|u[e+85|0]<<8|u[e+86|0]<<16|u[e+87|0]<<24)^528734635,32),r0=t=h,t=t+1013904242|0,s=NA^($=U-23791573|0),NA=t=$>>>0<4271175723?t+1|0:t,t=x(s,Y^t,24),v=r0,a=r[n+172>>2],s=t,_=U,U=t,eA=t+eA|0,t=(Y=h)+VA|0,t=(t=U>>>0>eA>>>0?t+1|0:t)+(wA=a)|0,cA=x(_^(l=VA=(r0=r[n+168>>2])+(U=eA)|0),(wA=U>>>0>l>>>0?t+1|0:t)^v,16),t=NA+(hA=h)|0,Y=x(s^(V=VA=$+cA|0),(NA=V>>>0<$>>>0?t+1|0:t)^Y,63),v=h,U=r[n+28>>2],$=(VA=r[n+176>>2])+(i=eA=r[n+56>>2])|0,t=(S0=r[n+180>>2])+(H=r[n+60>>2])|0,t=(t=i>>>0>$>>>0?t+1|0:t)+U|0,t=(i=$)>>>0>(AA=$=i+r[n+24>>2]|0)>>>0?t+1|0:t,aA=x(AA^(u[e+88|0]|u[e+89|0]<<8|u[e+90|0]<<16|u[e+91|0]<<24)^327033209,t^(u[e+92|0]|u[e+93|0]<<8|u[e+94|0]<<16|u[e+95|0]<<24)^1541459225,32),U=x(_=(s=(U=aA)+1595750129|0)^eA,H^(eA=($=h)-((U>>>0<2699217167)+1521486533|0)|0),24),H=eA,O=$,eA=r[n+188>>2],_=U,fA=s,t=(i=h)+t|0,t=(t=(AA=U+AA|0)>>>0>>0?t+1|0:t)+(iA=eA)|0,XA=U=($=r[n+184>>2])+AA|0,s=x(U^aA,(s=O)^(O=U>>>0>>0?t+1|0:t),16),t=(t=H)+(H=h)|0,AA=U=fA+s|0,aA=i,i=t=U>>>0>>0?t+1|0:t,_=x(_^U,aA^t,63),U=h,aA=tA,fA=mA,bA=V,t=tA+F|0,tA=y=y+mA|0,t=(t=y>>>0>>0?t+1|0:t)+(iA=j=r[n+196>>2])|0,V=x((y=mA=(zA=r[n+192>>2])+y|0)^s,(mA=tA>>>0>y>>>0?t+1|0:t)^H,32),t=(t=NA)+(NA=h)|0,F=t=(tA=bA+(F=V)|0)>>>0>>0?t+1|0:t,t=x(fA^tA,t^aA,24),w0=r[n+204>>2],fA=t,s=V,H=y,y=t,V=H+t|0,t=(H=h)+mA|0,t=(t=y>>>0>V>>>0?t+1|0:t)+(iA=w0)|0,o0=mA=(aA=r[n+200>>2])+(y=V)|0,I0=x(s^mA,(y=y>>>0>mA>>>0?t+1|0:t)^NA,16),t=F+(V=h)|0,iA=x(fA^(s=NA=tA+I0|0),(F=H)^(H=tA>>>0>s>>>0?t+1|0:t),63),F=h,NA=v,bA=Y,t=v+b|0,t=(t=(tA=Y+c|0)>>>0>>0?t+1|0:t)+(fA=CA=r[n+212>>2])|0,c=x((_A=E)^(E=tA=(mA=r[n+208>>2])+(Y=tA)|0),(Y=Y>>>0>E>>>0?t+1|0:t)^yA,32),t=i+(tA=h)|0,NA=x(bA^(v=AA+c|0),(t=v>>>0>>0?t+1|0:t)^NA,24),yA=t,b=tA,g0=r[n+220>>2],bA=NA,_A=v,t=(v=h)+Y|0,t=(t=(i=E+NA|0)>>>0>>0?t+1|0:t)+(fA=g0)|0,b=x((i=NA=(tA=r[n+216>>2])+(Y=i)|0)^c,(AA=Y>>>0>i>>>0?t+1|0:t)^b,16),t=(E=h)+yA|0,X=NA=_A+(Y=b)|0,fA=x(bA^NA,(Y=Y>>>0>NA>>>0?t+1|0:t)^v,63),v=h,yA=U,bA=_,t=U+wA|0,t=(t=(_=_+l|0)>>>0>>0?t+1|0:t)+(c=f=r[n+228>>2])|0,_=x((wA=U=(NA=r[n+224>>2])+_|0)^h0,(U=U>>>0<_>>>0?t+1|0:t)^W,32),t=(W=h)+YA|0,N=l=N+_|0,YA=x(bA^l,(t=l>>>0<_>>>0?t+1|0:t)^yA,24),l=t,bA=r[n+236>>2],c=YA,t=(yA=h)+U|0,t=(t=(wA=wA+YA|0)>>>0>>0?t+1|0:t)+bA|0,n0=x((wA=YA=(t0=r[n+232>>2])+(U=wA)|0)^_,(YA=W)^(W=U>>>0>wA>>>0?t+1|0:t),16),t=(t=l)+(l=h)|0,U=x(c^(_=YA=(U=n0)+N|0),(N=U>>>0>_>>>0?t+1|0:t)^yA,63),yA=h,c=D,ZA=w,E0=d0,t=D+O|0,t=(t=(d0=w+XA|0)>>>0>>0?t+1|0:t)+(_A=h0=r[n+244>>2])|0,D=t=(w=(YA=r[n+240>>2])+(D=d0)|0)>>>0>>0?t+1|0:t,cA=x(w^cA,t^hA,32),t=(t=rA)+(rA=h)|0,XA=hA=E0+(O=cA)|0,c=x(ZA^hA,(t=O>>>0>hA>>>0?t+1|0:t)^c,24),ZA=E0=h,hA=t,O=rA,Y0=c,t=D+E0|0,t=(t=(c=w+c|0)>>>0>>0?t+1|0:t)+(d0=r[n+252>>2])|0,c=w=(rA=r[n+248>>2])+(D=c)|0,_A=x(w^cA,(_A=O)^(O=w>>>0>>0?t+1|0:t),16),t=(t=hA)+(hA=h)|0,cA=x(Y0^(E0=w=(D=_A)+XA|0),(w=w>>>0>>0?t+1|0:t)^ZA,63),ZA=t=h,D=t,Y0=b,t=y+h0|0,t=(t=(b=YA)>>>0>(XA=b+o0|0)>>>0?t+1|0:t)+D|0,XA=x(Y0^(D=b=(y=XA)+cA|0),(b=y>>>0>D>>>0?t+1|0:t)^E,32),t=N+(y=h)|0,_=t=(E=_+XA|0)>>>0<_>>>0?t+1|0:t,o0=cA=x(cA^E,ZA^t,24),ZA=t=h,N=t,T0=cA,t=b+CA|0,t=(t=(cA=D+mA|0)>>>0>>0?t+1|0:t)+N|0,o0=D=o0+(b=cA)|0,Y0=x(D^XA,(N=y)^(y=D>>>0>>0?t+1|0:t),16),t=_+(N=h)|0,_=t=(D=E+Y0|0)>>>0>>0?t+1|0:t,cA=x(T0^(E=D),t^ZA,63),b=h,XA=iA,t=B0+(D=F)|0,t=(t=(iA=gA+iA|0)>>>0>>0?t+1|0:t)+AA|0,gA=t=(F=i+iA|0)>>>0>>0?t+1|0:t,AA=x(F^n0,t^l,32),t=(t=w)+(w=h)|0,t=(l=(i=AA)+E0|0)>>>0>>0?t+1|0:t,i=D,D=t,iA=x(XA^l,i^t,24),B0=t=h,i=t,XA=AA,t=gA+j|0,t=(t=(AA=F+zA|0)>>>0>>0?t+1|0:t)+i|0,t=(F=(gA=AA)+iA|0)>>>0>>0?t+1|0:t,gA=F,i=t,n0=x(XA^F,t^w,16),t=D+(AA=h)|0,E0=w=l+n0|0,iA=x(w^iA,(D=w>>>0>>0?t+1|0:t)^B0,63),w=h,F=v,t=v+w0|0,t=(t=(l=aA+fA|0)>>>0>>0?t+1|0:t)+W|0,hA=x((aA=v=l+wA|0)^_A,(v=v>>>0>>0?t+1|0:t)^hA,32),t=H+(W=h)|0,t=s>>>0>(l=s+hA|0)>>>0?t+1|0:t,s=F,F=t,s=H=x(l^fA,s^t,24),fA=t=h,wA=t,XA=hA,t=v+d0|0,t=(t=(H=(hA=rA)+aA|0)>>>0>>0?t+1|0:t)+wA|0,_A=v=s+H|0,ZA=x(XA^v,(hA=W)^(W=v>>>0>>0?t+1|0:t),16),t=F+(wA=h)|0,fA=x((aA=v=l+ZA|0)^s,(v=v>>>0>>0?t+1|0:t)^fA,63),F=h,s=U,t=(l=yA)+bA|0,t=(t=(hA=U+t0|0)>>>0>>0?t+1|0:t)+O|0,H=x((hA=U=c+hA|0)^I0,(U=U>>>0>>0?t+1|0:t)^V,32),t=(t=Y)+(Y=h)|0,V=x(s^(O=yA=H+X|0),(t=yA>>>0>>0?t+1|0:t)^l,24),c=yA=h,l=t,XA=O,O=H,H=(t=hA)+(hA=VA)|0,t=U+S0|0,t=(t=H>>>0>>0?t+1|0:t)+yA|0,hA=U=H+(s=V)|0,H=t=U>>>0>>0?t+1|0:t,O=x(O^U,t^Y,16),t=(yA=h)+l|0,XA=x(V^(s=Y=XA+(U=O)|0),(U=s>>>0>>0?t+1|0:t)^c,63),Y=h,l=w,V=aA,c=O,t=y+o|0,t=(t=(O=RA)>>>0>(aA=O+o0|0)>>>0?t+1|0:t)+w|0,aA=x(c^(w=O=aA+iA|0),(y=yA)^(yA=w>>>0>>0?t+1|0:t),32),t=(t=v)+(v=h)|0,t=(y=aA)>>>0>(O=V+y|0)>>>0?t+1|0:t,c=V=x((y=O)^iA,t^l,24),iA=l=h,O=t,o0=aA,t=yA+f|0,t=(t=(aA=w+NA|0)>>>0>>0?t+1|0:t)+l|0,l=w=(yA=aA)+V|0,I0=x(o0^w,(aA=w>>>0>>0?t+1|0:t)^v,16),t=(t=O)+(O=h)|0,y=w=(v=I0)+y|0,B0=x(w^c,(V=w>>>0>>0?t+1|0:t)^iA,63),v=h,iA=s,t=i+(w=F)|0,t=(t=(yA=gA+fA|0)>>>0>>0?t+1|0:t)+(c=X=r[n+132>>2])|0,yA=t=(F=(s=r[n+128>>2])+yA|0)>>>0>>0?t+1|0:t,i=x(F^Y0,t^N,32),t=(t=U)+(U=h)|0,N=gA=iA+i|0,iA=c=x(gA^fA,(t=gA>>>0>>0?t+1|0:t)^w,24),fA=w=h,gA=t,o0=i,t=yA+SA|0,yA=i=z+F|0,t=(t=i>>>0>>0?t+1|0:t)+w|0,w=x(o0^(i=F=i+c|0),(w=U)^(U=i>>>0>>0?t+1|0:t),16),t=(t=gA)+(gA=h)|0,N=F=w+N|0,w0=x(F^iA,(c=F>>>0>>0?t+1|0:t)^fA,63),F=h,yA=Y,t=W+g0|0,t=(t=(fA=tA+_A|0)>>>0>>0?t+1|0:t)+Y|0,t=(W=(iA=fA)+XA|0)>>>0>>0?t+1|0:t,iA=W,Y=t,fA=x(W^n0,t^AA,32),t=_+(W=h)|0,t=E>>>0>(AA=E+fA|0)>>>0?t+1|0:t,XA=_=x((E=AA)^XA,t^yA,24),o0=yA=h,AA=t,_A=E,t=Y+eA|0,t=(E=$)>>>0>(_=E+iA|0)>>>0?t+1|0:t,E=_,t=t+yA|0,_=W,W=t=E>>>0>(Y=XA+E|0)>>>0?t+1|0:t,n0=x((E=Y)^fA,_^t,16),t=(Y=h)+AA|0,XA=x((AA=yA=_A+(_=n0)|0)^XA,(t=_>>>0>AA>>>0?t+1|0:t)^o0,63),yA=h,iA=t,fA=w,_A=cA,t=a+(_=b)|0,t=(t=(w=r0)>>>0>(cA=w+cA|0)>>>0?t+1|0:t)+H|0,b=w=hA+cA|0,H=x(w^ZA,(H=wA)^(wA=w>>>0>>0?t+1|0:t),32),t=(w=h)+D|0,o0=hA=H+E0|0,_=x(_A^hA,(t=hA>>>0>>0?t+1|0:t)^_,24),ZA=E0=h,D=t,hA=w,E0=_,_A=H,t=wA+ZA|0,t=(t=(H=_+b|0)>>>0>>0?t+1|0:t)+(cA=r[n+156>>2])|0,wA=b=(w=r[n+152>>2])+H|0,_=hA,hA=t=b>>>0>>0?t+1|0:t,_A=x(_A^b,_^t,16),t=(t=D)+(D=h)|0,_=t=(H=_A)>>>0>(b=H+o0|0)>>>0?t+1|0:t,o0=x(E0^(H=b),t^ZA,63),E0=t=h,b=t,ZA=AA,t=aA+g0|0,t=(t=(AA=l+tA|0)>>>0>>0?t+1|0:t)+b|0,b=l=AA+o0|0,fA=x(l^fA,(aA=gA)^(gA=l>>>0>>0?t+1|0:t),32),t=(l=h)+iA|0,aA=t=(AA=ZA+(aA=fA)|0)>>>0>>0?t+1|0:t,E0=o0=x(o0^AA,E0^t,24),ZA=t=h,iA=t,Y0=fA,t=gA+j|0,t=(t=(fA=b+zA|0)>>>0>>0?t+1|0:t)+iA|0,t=(b=(gA=fA)+o0|0)>>>0>>0?t+1|0:t,gA=b,iA=l,l=t,o0=x(Y0^b,iA^t,16),t=aA+(iA=h)|0,t=(b=AA+o0|0)>>>0>>0?t+1|0:t,AA=b,aA=t,zA=x(b^E0,t^ZA,63),b=h,fA=v,ZA=B0,t=v+f|0,t=U+(NA>>>0>(B0=NA+B0|0)>>>0?t+1|0:t)|0,j=v=i+B0|0,B0=x(v^n0,(U=Y)^(Y=v>>>0>>0?t+1|0:t),32),t=_+(v=h)|0,i=t=(U=H+B0|0)>>>0>>0?t+1|0:t,fA=_=x(ZA^U,t^fA,24),n0=t=h,H=t,t=Y+X|0,t=(t=(_=s+j|0)>>>0>>0?t+1|0:t)+H|0,j=Y=fA+(s=_)|0,B0=x(Y^B0,(H=Y>>>0>>0?t+1|0:t)^v,16),t=i+(s=h)|0,X=Y=U+B0|0,_=x(Y^fA,(U=Y>>>0>>0?t+1|0:t)^n0,63),Y=h,t=a+(v=F)|0,t=W+((i=r0)>>>0>(fA=i+w0|0)>>>0?t+1|0:t)|0,i=D,D=t=E>>>0>(F=E+fA|0)>>>0?t+1|0:t,fA=x((E=F)^_A,i^t,32),t=V+(F=h)|0,t=y>>>0>(W=y+fA|0)>>>0?t+1|0:t,y=v,v=t,y=x(W^w0,y^t,24),w0=t=h,i=t,ZA=y,t=D+SA|0,t=(t=(y=z)>>>0>(V=y+E|0)>>>0?t+1|0:t)+i|0,n0=D=ZA+(y=V)|0,_A=x(D^fA,(i=D>>>0>>0?t+1|0:t)^F,16),t=v+(y=h)|0,fA=D=W+_A|0,V=x(ZA^D,(F=D>>>0>>0?t+1|0:t)^w0,63),D=h,t=d0+(v=yA)|0,t=hA+((E=(W=rA)+XA|0)>>>0>>0?t+1|0:t)|0,W=t=(yA=wA+E|0)>>>0>>0?t+1|0:t,E=x(yA^I0,t^O,32),t=c+(wA=h)|0,O=v,v=t=N>>>0>(hA=N+E|0)>>>0?t+1|0:t,N=x(hA^XA,O^t,24),XA=t=h,O=t,ZA=E,t=W+bA|0,t=(t=(E=yA+t0|0)>>>0>>0?t+1|0:t)+O|0,E=x(ZA^(O=yA=E+(c=N)|0),(c=wA)^(wA=E>>>0>O>>>0?t+1|0:t),16),t=v+(W=h)|0,N=x(N^(c=yA=hA+E|0),(yA=c>>>0>>0?t+1|0:t)^XA,63),v=h,hA=Y,XA=_,ZA=E,t=l+CA|0,l=E=gA+mA|0,t=(t=E>>>0>>0?t+1|0:t)+Y|0,_=x(ZA^(E=gA=E+_|0),(Y=l>>>0>E>>>0?t+1|0:t)^W,32),t=(t=F)+(F=h)|0,gA=t=(W=_+fA|0)>>>0<_>>>0?t+1|0:t,fA=hA=x(XA^W,t^hA,24),XA=t=h,l=t,t=Y+h0|0,t=(t=(E=(hA=YA)+E|0)>>>0>>0?t+1|0:t)+l|0,w0=Y=fA+E|0,I0=x(Y^_,(l=Y>>>0>>0?t+1|0:t)^F,16),t=gA+(hA=h)|0,fA=x((E0=Y=W+I0|0)^fA,(Y=Y>>>0>>0?t+1|0:t)^XA,63),F=h,W=D,_=V,t=H+cA|0,t=(t=(V=w+j|0)>>>0>>0?t+1|0:t)+D|0,D=t=(H=V)>>>0>(gA=_+H|0)>>>0?t+1|0:t,V=x((H=gA)^o0,t^iA,32),t=(t=yA)+(yA=h)|0,t=(E=V)>>>0>(gA=E+c|0)>>>0?t+1|0:t,c=_=x(_^(E=gA),t^W,24),gA=t,iA=E,E=V,V=(t=H)+(H=VA)|0,t=D+S0|0,t=(t=H>>>0>V>>>0?t+1|0:t)+(W=h)|0,t=(D=(H=V)+_|0)>>>0>>0?t+1|0:t,H=D,V=t,E=x(E^D,t^yA,16),t=(_=h)+gA|0,yA=x((o0=D=iA+E|0)^c,(D=D>>>0>>0?t+1|0:t)^W,63),W=h,gA=v,iA=N,t=i+eA|0,t=(t=(c=(N=$)+n0|0)>>>0>>0?t+1|0:t)+v|0,N=i=iA+c|0,v=t=i>>>0>>0?t+1|0:t,c=x(i^B0,t^s,32),t=aA+(i=h)|0,aA=s=AA+c|0,iA=s=x(iA^s,(t=s>>>0>>0?t+1|0:t)^gA,24),j=gA=h,AA=t,XA=aA,t=v+o|0,t=(t=(s=(aA=RA)+N|0)>>>0>>0?t+1|0:t)+gA|0,t=(v=iA+s|0)>>>0>>0?t+1|0:t,aA=v,s=i,i=t,n0=x(v^c,s^t,16),t=(t=AA)+(AA=h)|0,iA=x((v=XA+(gA=n0)|0)^iA,(t=v>>>0>>0?t+1|0:t)^j,63),gA=h,N=v,c=t,t=wA+(s=b)|0,b=v=O+zA|0,t=(t=v>>>0>>0?t+1|0:t)+(j=r[n+204>>2])|0,b=t=(v=(XA=r[n+200>>2])+v|0)>>>0>>0?t+1|0:t,O=x(v^_A,t^y,32),t=(t=U)+(U=h)|0,t=(y=O)>>>0>(wA=y+X|0)>>>0?t+1|0:t,s=x((y=wA)^zA,t^s,24),_A=X=h,wA=t,ZA=y,X=O,t=b+_A|0,t=(t=(O=v+s|0)>>>0>>0?t+1|0:t)+(zA=r[n+164>>2])|0,O=v=(B0=r[n+160>>2])+(b=O)|0,X=x(X^v,(y=v>>>0>>0?t+1|0:t)^U,16),t=(t=wA)+(wA=h)|0,s=x(s^(ZA=v=ZA+(U=X)|0),(v=v>>>0>>0?t+1|0:t)^_A,63),_A=t=h,U=t,Y0=E,t=l+eA|0,t=(t=(E=(b=$)+w0|0)>>>0>>0?t+1|0:t)+U|0,_=x(Y0^(U=b=E+s|0),(b=E>>>0>U>>>0?t+1|0:t)^_,32),t=(l=h)+c|0,N=E=N+_|0,c=x(s^E,(t=E>>>0<_>>>0?t+1|0:t)^_A,24),_A=s=h,E=t,w0=N,Y0=_,t=b+j|0,t=(t=(_=U+XA|0)>>>0>>0?t+1|0:t)+s|0,N=U=_+c|0,Y0=x(Y0^U,(s=l)^(l=U>>>0<_>>>0?t+1|0:t),16),t=(s=h)+E|0,w0=x((T0=U=w0+(b=Y0)|0)^c,(U=U>>>0>>0?t+1|0:t)^_A,63),b=h,t=cA+(E=F)|0,t=(t=(_=w+fA|0)>>>0>>0?t+1|0:t)+V|0,_=x((V=w=_+H|0)^n0,(w=w>>>0>>0?t+1|0:t)^AA,32),t=(t=v)+(v=h)|0,H=t=_>>>0>(F=_+ZA|0)>>>0?t+1|0:t,c=E=x(F^fA,t^E,24),fA=t=h,AA=t,E=(t=V)+(V=RA)|0,t=w+o|0,t=(t=E>>>0>>0?t+1|0:t)+AA|0,cA=w=c+E|0,n0=x(w^_,(AA=w>>>0>>0?t+1|0:t)^v,16),t=H+(V=h)|0,_A=w=F+n0|0,E=x(w^c,(v=w>>>0>>0?t+1|0:t)^fA,63),w=h,_=yA,t=(F=W)+bA|0,t=(t=(H=yA+t0|0)>>>0>>0?t+1|0:t)+i|0,W=t=(yA=H+aA|0)>>>0>>0?t+1|0:t,i=x(yA^X,t^wA,32),t=(t=Y)+(Y=h)|0,t=(H=i)>>>0>(wA=H+E0|0)>>>0?t+1|0:t,aA=x(_^(H=wA),t^F,24),c=F=h,wA=t,fA=H,bA=i,t=W+f|0,W=i=yA+NA|0,t=(t=i>>>0>>0?t+1|0:t)+F|0,X=x(bA^(i=yA=i+(_=aA)|0),(H=W>>>0>i>>>0?t+1|0:t)^Y,16),t=(t=wA)+(wA=h)|0,c=x(aA^(_=Y=fA+(F=X)|0),(F=_>>>0>>0?t+1|0:t)^c,63),Y=h,yA=gA,t=gA+g0|0,t=(t=(aA=tA+iA|0)>>>0>>0?t+1|0:t)+y|0,t=(W=O+aA|0)>>>0>>0?t+1|0:t,O=W,W=t,aA=x(O^I0,t^hA,32),t=(t=D)+(D=h)|0,y=yA,yA=t=(gA=(hA=aA)+o0|0)>>>0>>0?t+1|0:t,iA=y=x(gA^iA,y^t,24),fA=t=h,hA=t,bA=aA,aA=(t=O)+(O=YA)|0,t=W+h0|0,t=(t=O>>>0>aA>>>0?t+1|0:t)+hA|0,hA=W=(O=aA)+y|0,y=x(bA^W,(O=W>>>0>>0?t+1|0:t)^D,16),t=yA+(W=h)|0,t=(D=gA+y|0)>>>0>>0?t+1|0:t,gA=D,aA=t,iA=x(D^iA,t^fA,63),D=h,yA=w,fA=E,bA=y,t=l+SA|0,t=(t=(E=(y=z)+N|0)>>>0>>0?t+1|0:t)+w|0,w=t=E>>>0>(l=fA+E|0)>>>0?t+1|0:t,y=x(bA^l,t^W,32),t=(t=F)+(F=h)|0,t=(E=y)>>>0>(W=E+_|0)>>>0?t+1|0:t,N=_=x(fA^(E=W),t^yA,24),W=t,fA=y,y=(t=l)+(l=VA)|0,t=w+S0|0,t=(t=y>>>0>>0?t+1|0:t)+(yA=h)|0,l=w=y+_|0,y=t=w>>>0>>0?t+1|0:t,w=(F=I0=x(fA^w,t^F,16))+E|0,t=(E=h)+W|0,_=w,bA=x(W=w^N,(N=w>>>0>>0?t+1|0:t)^yA,63),yA=h,t=AA+a|0,t=(t=(F=r0)>>>0>(W=F+cA|0)>>>0?t+1|0:t)+(w=Y)|0,AA=F=W+c|0,s=x(F^Y0,(Y=F>>>0>>0?t+1|0:t)^s,32),t=aA+(F=h)|0,t=(W=gA+s|0)>>>0>>0?t+1|0:t,gA=W,aA=x(W^c,t^w,24),fA=w=h,W=t,cA=gA,t=Y+CA|0,t=(gA=mA)>>>0>(AA=gA+AA|0)>>>0?t+1|0:t,gA=AA,t=t+w|0,AA=Y=AA+(c=aA)|0,Y=x(Y^s,(aA=Y>>>0>>0?t+1|0:t)^F,16),t=(gA=h)+W|0,E0=w=cA+Y|0,t0=x(w^c,(F=w>>>0>>0?t+1|0:t)^fA,63),W=h,fA=iA,t=H+zA|0,t=(t=(s=i+B0|0)>>>0>>0?t+1|0:t)+(w=D)|0,c=x((D=i=s+iA|0)^n0,(i=s>>>0>D>>>0?t+1|0:t)^V,32),t=(t=U)+(U=h)|0,iA=H=(V=c)+T0|0,s=x(fA^H,(t=H>>>0>>0?t+1|0:t)^w,24),H=w=h,V=t,fA=s,t=i+w|0,t=(t=(s=D+s|0)>>>0>>0?t+1|0:t)+(cA=r[n+132>>2])|0,i=D=(w=r[n+128>>2])+s|0,s=t=D>>>0>>0?t+1|0:t,n0=x(D^c,t^U,16),t=(t=V)+(V=h)|0,o0=x(fA^(D=(U=n0)+iA|0),(t=D>>>0>>0?t+1|0:t)^H,63),U=h,c=D,iA=t,fA=Y,t=d0+(H=b)|0,t=(t=(D=(Y=rA)+w0|0)>>>0>>0?t+1|0:t)+O|0,hA=x((D=Y=D+hA|0)^X,(b=D>>>0>>0?t+1|0:t)^wA,32),t=(Y=h)+v|0,t=(O=hA)>>>0>(wA=O+_A|0)>>>0?t+1|0:t,H=x((O=wA)^w0,t^H,24),ZA=_A=h,v=t,wA=Y,X=hA,t=b+_A|0,t=(t=(hA=D+H|0)>>>0>>0?t+1|0:t)+(w0=r[n+196>>2])|0,hA=D=(Y=r[n+192>>2])+(b=hA)|0,X=x(X^D,(_A=wA)^(wA=D>>>0>>0?t+1|0:t),16),t=(t=v)+(v=h)|0,H=x(H^(_A=D=(b=X)+O|0),(D=D>>>0>>0?t+1|0:t)^ZA,63),ZA=t=h,b=t,t=y+j|0,t=(t=(O=l+XA|0)>>>0>>0?t+1|0:t)+b|0,t=(l=O+H|0)>>>0>>0?t+1|0:t,O=l,b=t,y=x(l^fA,t^gA,32),t=(gA=h)+iA|0,c=l=c+y|0,iA=x(H^l,(t=l>>>0>>0?t+1|0:t)^ZA,24),j=l=h,H=t,fA=y,t=b+cA|0,t=(t=(y=w+O|0)>>>0>>0?t+1|0:t)+l|0,XA=b=y+iA|0,ZA=x(fA^b,(l=b>>>0>>0?t+1|0:t)^gA,16),t=(t=H)+(H=h)|0,O=b=(gA=ZA)+c|0,j=x(b^iA,(y=b>>>0>>0?t+1|0:t)^j,63),gA=h,t=a+(b=yA)|0,t=aA+((c=r0)>>>0>(iA=c+bA|0)>>>0?t+1|0:t)|0,AA=t=(yA=AA+iA|0)>>>0>>0?t+1|0:t,c=x(yA^n0,t^V,32),t=(t=D)+(D=h)|0,t=(V=c)>>>0>(aA=V+_A|0)>>>0?t+1|0:t,V=b,b=t,iA=x(aA^bA,V^t,24),bA=t=h,V=t,fA=c,t=AA+eA|0,t=(t=(c=yA+$|0)>>>0>>0?t+1|0:t)+V|0,V=t=(yA=(AA=c)+iA|0)>>>0>>0?t+1|0:t,n0=x(fA^(AA=yA),t^D,16),t=b+(c=h)|0,_A=D=aA+n0|0,iA=x(D^iA,(yA=D>>>0>>0?t+1|0:t)^bA,63),D=h,b=W,t=W+SA|0,t=s+(z>>>0>(fA=z+t0|0)>>>0?t+1|0:t)|0,s=v,v=t=i>>>0>(W=i+fA|0)>>>0?t+1|0:t,fA=x(W^X,s^t,32),t=N+(i=h)|0,s=b,b=t=_>>>0>(aA=_+fA|0)>>>0?t+1|0:t,N=_=x(aA^t0,s^t,24),s=t=h,t=v+zA|0,t=(t=(_=W+B0|0)>>>0>>0?t+1|0:t)+s|0,zA=v=N+_|0,B0=x(v^fA,(W=v>>>0<_>>>0?t+1|0:t)^i,16),t=b+(i=h)|0,t0=v=aA+B0|0,_=x(v^N,(b=v>>>0>>0?t+1|0:t)^s,63),v=h,aA=U,t=U+CA|0,t=wA+((s=mA)>>>0>(N=s+o0|0)>>>0?t+1|0:t)|0,E=x((s=U=hA+N|0)^I0,(U=s>>>0>>0?t+1|0:t)^E,32),t=(t=F)+(F=h)|0,fA=aA=x((N=wA=E+E0|0)^o0,(t=E>>>0>N>>>0?t+1|0:t)^aA,24),bA=wA=h,hA=t,t=U+d0|0,t=(t=(s=(aA=rA)+s|0)>>>0>>0?t+1|0:t)+wA|0,wA=U=fA+s|0,E=x(U^E,(aA=U>>>0>>0?t+1|0:t)^F,16),t=(t=hA)+(hA=h)|0,o0=U=E+N|0,fA=x(U^fA,(F=U>>>0>>0?t+1|0:t)^bA,63),U=h,bA=iA,X=E,t=l+h0|0,t=(t=(E=YA)>>>0>(N=E+XA|0)>>>0?t+1|0:t)+(s=D)|0,D=t=(E=N)>>>0>(l=E+iA|0)>>>0?t+1|0:t,N=x(X^(E=l),t^hA,32),t=(t=b)+(b=h)|0,iA=l=(hA=N)+t0|0,bA=s=x(bA^l,(t=l>>>0>>0?t+1|0:t)^s,24),t0=l=h,hA=t,t=D+o|0,t=(t=(E=(s=RA)+E|0)>>>0>>0?t+1|0:t)+l|0,I0=D=bA+E|0,X=x(D^N,(s=b)^(b=D>>>0>>0?t+1|0:t),16),t=(l=h)+hA|0,hA=D=(s=X)+iA|0,bA=x(D^bA,(s=D>>>0>>0?t+1|0:t)^t0,63),D=h,iA=_,t=V+g0|0,V=_=tA+AA|0,t=(t=_>>>0>>0?t+1|0:t)+(E=v)|0,N=x((_=AA=iA+_|0)^ZA,(v=_>>>0>>0?t+1|0:t)^H,32),t=(t=F)+(F=h)|0,AA=t=(H=(AA=N)+o0|0)>>>0>>0?t+1|0:t,iA=E=x(iA^H,t^E,24),t0=t=h,V=t,t=v+f|0,t=(t=(E=NA)>>>0>(_=E+_|0)>>>0?t+1|0:t)+V|0,V=v=iA+(E=_)|0,F=x(v^N,(E=v>>>0>>0?t+1|0:t)^F,16),t=AA+(_=h)|0,t=(v=H+F|0)>>>0>>0?t+1|0:t,H=v,AA=t,t0=x(v^iA,t^t0,63),v=h,N=U,XA=fA,t=W+S0|0,t=(t=(iA=VA)>>>0>(fA=iA+zA|0)>>>0?t+1|0:t)+U|0,t=(W=XA+(iA=fA)|0)>>>0>>0?t+1|0:t,iA=W,U=t,fA=x(W^n0,t^c,32),t=y+(W=h)|0,y=t=(c=O+fA|0)>>>0>>0?t+1|0:t,c=x(XA^(O=c),t^N,24),XA=t=h,N=t,t=U+w0|0,t=(t=(iA=Y+iA|0)>>>0>>0?t+1|0:t)+N|0,N=U=(zA=c)+(c=iA)|0,o0=x(U^fA,(iA=W)^(W=U>>>0>>0?t+1|0:t),16),t=y+(c=h)|0,t=(U=O+o0|0)>>>0>>0?t+1|0:t,O=U,zA=x(U^zA,t^XA,63),U=h,iA=t,ZA=j,t=aA+(y=gA)|0,t=(t=(j=wA+j|0)>>>0>>0?t+1|0:t)+(XA=n0=r[n+156>>2])|0,wA=t=(gA=(fA=r[n+152>>2])+(wA=j)|0)>>>0>>0?t+1|0:t,aA=x(gA^B0,t^i,32),t=(t=yA)+(yA=h)|0,j=i=aA+_A|0,XA=y=x(ZA^i,(t=i>>>0>>0?t+1|0:t)^y,24),_A=B0=h,i=t,ZA=E0=r[n+236>>2],E0=j,j=aA,t=wA+_A|0,t=(t=(y=y+gA|0)>>>0>>0?t+1|0:t)+ZA|0,t=(gA=(aA=r[n+232>>2])+y|0)>>>0>>0?t+1|0:t,y=yA,yA=t,B0=x(j^gA,y^t,16),t=(wA=h)+i|0,XA=x((i=y=E0+(j=B0)|0)^XA,(y=y>>>0>>0?t+1|0:t)^_A,63),_A=t=h,j=t,E0=F,t=b+SA|0,t=(t=(F=z+I0|0)>>>0>>0?t+1|0:t)+j|0,_=x(E0^(j=z=F+XA|0),(z=z>>>0>>0?t+1|0:t)^_,32),t=(F=h)+iA|0,iA=b=O+_|0,SA=x(XA^b,_A^(t=b>>>0<_>>>0?t+1|0:t),24),I0=b=h,O=t,XA=iA,_A=_,t=z+f|0,t=(t=(_=NA)>>>0>(iA=_+j|0)>>>0?t+1|0:t)+b|0,_A=x(_A^(b=z=(_=iA)+SA|0),(_=_>>>0>b>>>0?t+1|0:t)^F,16),t=(t=O)+(O=h)|0,iA=z=XA+(F=_A)|0,XA=x(z^SA,(j=z>>>0>>0?t+1|0:t)^I0,63),F=h,z=D,E0=bA,t=D+S0|0,t=E+(VA>>>0>(bA=VA+bA|0)>>>0?t+1|0:t)|0,c=x((SA=D=V+bA|0)^o0,(D=D>>>0>>0?t+1|0:t)^c,32),t=y+(V=h)|0,t=(E=i+c|0)>>>0>>0?t+1|0:t,i=E,y=z,z=t,bA=E=x(E0^E,y^t,24),o0=t=h,y=t,E0=E,I0=c,t=D+CA|0,t=(t=(E=mA)>>>0>(c=E+SA|0)>>>0?t+1|0:t)+y|0,bA=D=bA+(E=c)|0,I0=x(I0^D,(y=D>>>0>>0?t+1|0:t)^V,16),t=z+(V=h)|0,t=(D=i+I0|0)>>>0>>0?t+1|0:t,i=D,E=t,c=x(E0^D,t^o0,63),D=h,z=v,t=v+cA|0,t=(t=(SA=w+t0|0)>>>0>>0?t+1|0:t)+W|0,t=(w=N+SA|0)>>>0>>0?t+1|0:t,N=w,w=t,SA=x(N^B0,t^wA,32),t=s+(v=h)|0,s=z,z=t=(W=hA+SA|0)>>>0>>0?t+1|0:t,s=hA=x(W^t0,s^t,24),t0=t=h,wA=t,t=w+g0|0,t=(t=(hA=tA+N|0)>>>0>>0?t+1|0:t)+wA|0,N=tA=s+(w=hA)|0,SA=x(tA^SA,(hA=v)^(v=w>>>0>tA>>>0?t+1|0:t),16),t=z+(wA=h)|0,g0=tA=W+SA|0,hA=x(tA^s,(w=tA>>>0>>0?t+1|0:t)^t0,63),z=h,tA=U,t=U+w0|0,t=(t=(W=Y+zA|0)>>>0>>0?t+1|0:t)+yA|0,t=(Y=W+gA|0)>>>0>>0?t+1|0:t,gA=Y,Y=t,l=x(gA^X,t^l,32),t=AA+(U=h)|0,s=tA,tA=t=H>>>0>(yA=H+l|0)>>>0?t+1|0:t,AA=H=x(yA^zA,s^t,24),s=t=h,t=Y+n0|0,t=(t=(gA=gA+fA|0)>>>0>>0?t+1|0:t)+s|0,W=Y=gA+H|0,l=x(Y^l,(H=U)^(U=Y>>>0>>0?t+1|0:t),16),t=tA+(gA=h)|0,s=x((H=Y=yA+l|0)^AA,(Y=Y>>>0>>0?t+1|0:t)^s,63),tA=h,yA=D,fA=l,t=D+_|0,t=(l=b+c|0)>>>0>>0?t+1|0:t,b=l,t=t+(AA=r[n+164>>2])|0,AA=x(fA^(l=D=l+r[n+160>>2]|0),(D=D>>>0>>0?t+1|0:t)^gA,32),t=(t=w)+(w=h)|0,_=yA,yA=t=(b=(gA=AA)+g0|0)>>>0>>0?t+1|0:t,_=x(b^c,_^t,24),fA=t=h,gA=t,t=D+ZA|0,t=(t=(l=l+aA|0)>>>0>>0?t+1|0:t)+gA|0,t0=x((g0=D=l+_|0)^AA,(D=D>>>0>>0?t+1|0:t)^w,16),t=yA+(gA=h)|0,yA=w=b+t0|0,c=x(w^_,(b=w>>>0>>0?t+1|0:t)^fA,63),w=h,_=hA,aA=H,t=y+eA|0,t=(t=(H=(hA=$)+bA|0)>>>0>>0?t+1|0:t)+(l=z)|0,O=x((AA=hA=_+H|0)^_A,(z=H>>>0>AA>>>0?t+1|0:t)^O,32),t=(t=Y)+(Y=h)|0,y=l,l=t=(H=O)>>>0>(hA=aA+H|0)>>>0?t+1|0:t,y=aA=x(_^hA,y^t,24),_=t=h,aA=O,t=z+a|0,t=(t=(O=r0)>>>0>(AA=O+AA|0)>>>0?t+1|0:t)+_|0,AA=x(aA^(H=z=AA+y|0),(O=H>>>0>>0?t+1|0:t)^Y,16),t=l+(aA=h)|0,fA=x((l=z=hA+AA|0)^y,(hA=l>>>0>>0?t+1|0:t)^_,63),z=h,bA=s,t=v+d0|0,t=(y=rA)>>>0>(s=y+N|0)>>>0?t+1|0:t,y=s,t=t+(Y=tA)|0,_=x((s=v=bA+s|0)^I0,(tA=s>>>0>>0?t+1|0:t)^V,32),t=j+(v=h)|0,V=Y,Y=t=(y=iA+_|0)>>>0>>0?t+1|0:t,N=x(bA^y,V^t,24),j=t=h,V=t,iA=_,_=(t=s)+(s=YA)|0,t=tA+h0|0,t=(t=s>>>0>_>>>0?t+1|0:t)+V|0,V=t=(s=_)>>>0>(tA=s+N|0)>>>0?t+1|0:t,bA=x(iA^tA,t^v,16),t=Y+(s=h)|0,iA=x((v=y+bA|0)^N,(t=v>>>0>>0?t+1|0:t)^j,63),Y=h,_=t,t=o+(y=F)|0,t=U+((N=RA)>>>0>(j=N+XA|0)>>>0?t+1|0:t)|0,N=F=W+j|0,j=x(F^SA,(U=F>>>0>>0?t+1|0:t)^wA,32),t=E+(F=h)|0,wA=t=i>>>0>(W=i+j|0)>>>0?t+1|0:t,SA=t=x(W^XA,t^y,24),i=t,y=t+N|0,t=(E=h)+U|0,t=(t=y>>>0>>0?t+1|0:t)+(zA=r[n+204>>2])|0,t=(U=y+r[n+200>>2]|0)>>>0>>0?t+1|0:t,y=F,F=t,zA=x(U^j,y^t,16),t=wA+(i=h)|0,t=(y=W+zA|0)>>>0>>0?t+1|0:t,W=y,wA=t,E=x(SA^y,t^E,63),y=t=h,N=v,SA=AA,t=D+f|0,t=(t=(v=NA)>>>0>(AA=v+g0|0)>>>0?t+1|0:t)+y|0,SA=x(SA^(j=D=(v=AA)+E|0),(D=D>>>0>>0?t+1|0:t)^aA,32),t=(v=h)+_|0,aA=t=(AA=N+(aA=SA)|0)>>>0>>0?t+1|0:t,E=x(E^AA,y^t,24),N=t=h,y=t,_A=E,t=D+a|0,t=(t=(E=r0)>>>0>(_=E+j|0)>>>0?t+1|0:t)+y|0,SA=x((y=D=_A+(E=_)|0)^SA,(E=y>>>0>>0?t+1|0:t)^v,16),t=aA+(_=h)|0,t=(D=AA+SA|0)>>>0>>0?t+1|0:t,AA=D,aA=t,D=x(_A^D,t^N,63),v=h,N=w,_A=c,t=w+o|0,t=O+((c=RA)>>>0>(j=_A+c|0)>>>0?t+1|0:t)|0,s=x((c=w=H+j|0)^bA,(w=w>>>0>>0?t+1|0:t)^s,32),t=wA+(H=h)|0,wA=t=W>>>0>(O=W+s|0)>>>0?t+1|0:t,j=N=x(_A^(W=O),t^N,24),g0=t=h,O=t,_A=N,bA=s,t=w+d0|0,t=(t=(s=rA)>>>0>(N=s+c|0)>>>0?t+1|0:t)+O|0,j=w=j+(s=N)|0,bA=x(bA^w,(O=H)^(H=w>>>0>>0?t+1|0:t),16),t=wA+(O=h)|0,t=(w=W+bA|0)>>>0>>0?t+1|0:t,W=w,wA=t,c=x(_A^w,t^g0,63),w=h,_A=fA,t=h0+(s=z)|0,t=V+((N=YA)>>>0>(fA=N+fA|0)>>>0?t+1|0:t)|0,N=x((V=z=tA+fA|0)^zA,(z=tA>>>0>V>>>0?t+1|0:t)^i,32),t=b+(tA=h)|0,t=(i=yA+N|0)>>>0>>0?t+1|0:t,yA=i,b=t,t=x(_A^i,t^s,24),g0=r[n+236>>2],_A=t,s=V,V=t,s=s+t|0,t=(i=h)+z|0,t=(t=s>>>0>>0?t+1|0:t)+g0|0,s=t=(z=s+r[n+232>>2]|0)>>>0>>0?t+1|0:t,g0=x((V=z)^N,t^tA,16),t=b+(N=h)|0,fA=z=yA+g0|0,i=x(_A^z,(tA=z>>>0>>0?t+1|0:t)^i,63),z=h,yA=Y,_A=iA,t=Y+F|0,t=(t=(b=U+iA|0)>>>0>>0?t+1|0:t)+(zA=r[n+164>>2])|0,gA=x((iA=Y=(U=b)+r[n+160>>2]|0)^t0,(Y=Y>>>0>>0?t+1|0:t)^gA,32),t=hA+(U=h)|0,hA=yA,yA=t=l>>>0>(F=l+gA|0)>>>0?t+1|0:t,hA=l=x(_A^F,hA^t,24),t0=t=h,b=t,_A=gA,t=Y+CA|0,t=(t=(l=(gA=mA)+iA|0)>>>0>>0?t+1|0:t)+b|0,zA=Y=hA+l|0,l=x(_A^Y,(b=U)^(U=Y>>>0>>0?t+1|0:t),16),t=yA+(b=h)|0,t=(Y=F+l|0)>>>0>>0?t+1|0:t,F=Y,yA=t,iA=x(Y^hA,t^t0,63),Y=h,gA=w,_A=l,t=w+E|0,t=(t=(l=y+c|0)>>>0>>0?t+1|0:t)+(hA=r[n+132>>2])|0,y=x(_A^(hA=w=l+r[n+128>>2]|0),(w=w>>>0>>0?t+1|0:t)^b,32),t=(t=tA)+(tA=h)|0,E=gA,gA=t=y>>>0>(b=y+fA|0)>>>0?t+1|0:t,E=x(b^c,E^t,24),fA=t=h,l=t,c=y,y=(t=hA)+(hA=$)|0,t=w+eA|0,t=(t=y>>>0>>0?t+1|0:t)+l|0,t0=w=y+E|0,cA=x(c^w,(l=w>>>0>>0?t+1|0:t)^tA,16),t=gA+(hA=h)|0,gA=t=(tA=b+cA|0)>>>0>>0?t+1|0:t,c=x((b=tA)^E,t^fA,63),tA=h,fA=i,t=H+S0|0,H=y=(i=VA)+j|0,t=(t=y>>>0>>0?t+1|0:t)+(w=z)|0,E=x((y=i=fA+y|0)^SA,(z=H>>>0>y>>>0?t+1|0:t)^_,32),t=yA+(i=h)|0,t=(H=F+E|0)>>>0>>0?t+1|0:t,F=H,_=w,w=t,t=x(fA^H,_^t,24),fA=r[n+156>>2],_=t,H=t,y=t+y|0,t=(yA=h)+z|0,t=(t=y>>>0>>0?t+1|0:t)+fA|0,t=y>>>0>(z=y+r[n+152>>2]|0)>>>0?t+1|0:t,y=i,i=t,j=x((H=z)^E,y^t,16),t=w+(y=h)|0,E=yA,yA=t=(z=F+j|0)>>>0>>0?t+1|0:t,fA=x(_^(F=z),E^t,63),w=h,z=Y,t=Y+s|0,t=(t=(E=V+iA|0)>>>0>>0?t+1|0:t)+(_=r[n+204>>2])|0,t=(Y=E+r[n+200>>2]|0)>>>0>>0?t+1|0:t,E=O,O=t,E=x(Y^bA,E^t,32),t=aA+(V=h)|0,t=(s=AA+E|0)>>>0>>0?t+1|0:t,AA=s,_=z,z=t,s=x(s^iA,_^t,24),_=t=h,bA=s,t=t+O|0,t=(t=(s=Y+s|0)>>>0>>0?t+1|0:t)+(iA=r[n+148>>2])|0,t=(Y=s+r[n+144>>2]|0)>>>0>>0?t+1|0:t,O=Y,s=V,V=t,SA=x(Y^E,s^t,16),t=z+(s=h)|0,t=(Y=AA+SA|0)>>>0>>0?t+1|0:t,AA=Y,aA=t,iA=x(bA^Y,_^t,63),Y=h,z=v,bA=D,t=v+U|0,v=E=D+zA|0,t=(t=E>>>0>>0?t+1|0:t)+(_=r[n+196>>2])|0,_=x((E=D=E+r[n+192>>2]|0)^g0,(D=E>>>0>>0?t+1|0:t)^N,32),t=wA+(v=h)|0,z=x(bA^(U=W+_|0),(t=U>>>0>>0?t+1|0:t)^z,24),W=t,g0=r[n+220>>2],N=z,_A=U,t=(U=h)+D|0,D=E=E+z|0,t=(t=E>>>0>>0?t+1|0:t)+(bA=g0)|0,bA=x(z=(E=z=(wA=r[n+216>>2])+E|0)^_,(_=D>>>0>E>>>0?t+1|0:t)^v,16),t=(t=W)+(W=h)|0,t=(D=bA)>>>0>(z=_A+D|0)>>>0?t+1|0:t,D=U,U=t,t=x(N^z,D^t,63),XA=r[n+236>>2],_A=t,v=t,N=t+t0|0,t=(D=h)+l|0,t=(t=v>>>0>N>>>0?t+1|0:t)+XA|0,j=x((N=v=(l=N)+r[n+232>>2]|0)^j,(v=v>>>0>>0?t+1|0:t)^y,32),t=aA+(l=h)|0,t=(y=AA+j|0)>>>0>>0?t+1|0:t,AA=y,aA=D,D=t,t=x(_A^y,aA^t,24),_A=j,y=t,N=t+N|0,t=(aA=h)+v|0,t=g0+(y>>>0>N>>>0?t+1|0:t)|0,j=v=N+wA|0,g0=x(_A^v,(N=l)^(l=v>>>0>>0?t+1|0:t),16),t=D+(wA=h)|0,t=(v=AA+g0|0)>>>0>>0?t+1|0:t,AA=v,D=aA,aA=t,D=x(y^v,D^t,63),v=h,_A=c,t=eA+(y=tA)|0,t=i+((c=(N=$)+c|0)>>>0>>0?t+1|0:t)|0,s=x((N=tA=H+c|0)^SA,(tA=H>>>0>tA>>>0?t+1|0:t)^s,32),t=U+(i=h)|0,t=(H=z+s|0)>>>0>>0?t+1|0:t,z=H,U=t,c=y=x(_A^H,t^y,24),SA=t=h,H=t,_A=s,t=tA+h0|0,t=(t=(y=YA)>>>0>(s=y+N|0)>>>0?t+1|0:t)+H|0,t0=tA=c+(y=s)|0,zA=x(_A^tA,(s=i)^(i=y>>>0>tA>>>0?t+1|0:t),16),t=U+(H=h)|0,N=x((U=tA=z+zA|0)^c,(y=U>>>0>>0?t+1|0:t)^SA,63),z=h,tA=w,t=w+f|0,t=V+((s=NA)>>>0>(c=s+fA|0)>>>0?t+1|0:t)|0,s=x((V=w=O+c|0)^bA,(w=w>>>0>>0?t+1|0:t)^W,32),t=gA+(W=h)|0,t=b>>>0>(O=b+s|0)>>>0?t+1|0:t,b=O,O=tA,tA=t,c=O=x(b^fA,O^t,24),fA=t=h,gA=t,t=w+o|0,t=(t=(O=RA)>>>0>(V=O+V|0)>>>0?t+1|0:t)+gA|0,gA=w=c+V|0,SA=x(w^s,(O=W)^(W=w>>>0>>0?t+1|0:t),16),t=tA+(O=h)|0,t=(w=b+SA|0)>>>0>>0?t+1|0:t,b=w,V=t,c=x(w^c,t^fA,63),tA=h,t=_+(w=Y)|0,t=(t=(s=E+iA|0)>>>0>>0?t+1|0:t)+(fA=r[n+156>>2])|0,E=hA,hA=t=(Y=s+r[n+152>>2]|0)>>>0>>0?t+1|0:t,_=x(Y^cA,E^t,32),t=yA+(s=h)|0,t=(E=F+_|0)>>>0>>0?t+1|0:t,F=E,yA=w,w=t,E=x(E^iA,yA^t,24),iA=t=h,_A=E,t=hA+t|0,t=(t=(E=E+Y|0)>>>0>>0?t+1|0:t)+(fA=r[n+204>>2])|0,bA=Y=E+r[n+200>>2]|0,E=x(Y^_,(hA=Y>>>0>>0?t+1|0:t)^s,16),t=w+(Y=h)|0,t=(s=F+E|0)>>>0>>0?t+1|0:t,F=s,yA=t,iA=x(_A^s,iA^t,63),w=h,fA=E,t=l+a|0,t=(t=(E=r0)>>>0>(_=E+j|0)>>>0?t+1|0:t)+(s=z)|0,z=l=(E=_)+N|0,_=x(fA^l,(_=Y)^(Y=E>>>0>l>>>0?t+1|0:t),32),t=V+(l=h)|0,t=(E=b+_|0)>>>0>>0?t+1|0:t,b=E,V=t,E=x(E^N,t^s,24),s=t=h,N=E,t=Y+t|0,t=(t=(E=E+z|0)>>>0>>0?t+1|0:t)+(fA=r[n+132>>2])|0,j=z=E+r[n+128>>2]|0,cA=x(z^_,(Y=l)^(l=E>>>0>z>>>0?t+1|0:t),16),t=V+(E=h)|0,V=t=(z=b+cA|0)>>>0>>0?t+1|0:t,fA=x(N^(b=z),t^s,63),z=h,t=i+d0|0,t=(t=(s=rA)>>>0>(_=s+t0|0)>>>0?t+1|0:t)+(Y=tA)|0,tA=t=(s=_)>>>0>(i=s+c|0)>>>0?t+1|0:t,_=x((s=i)^g0,t^wA,32),t=yA+(wA=h)|0,t=F>>>0>(i=F+_|0)>>>0?t+1|0:t,F=i,N=Y,Y=t,t=x(i^c,N^t,24),c=r[n+164>>2],N=t,i=t,s=t+s|0,t=(yA=h)+tA|0,t=(t=s>>>0>>0?t+1|0:t)+c|0,t=(tA=s+r[n+160>>2]|0)>>>0>>0?t+1|0:t,s=wA,wA=t,s=x((i=tA)^_,s^t,16),t=Y+(_=h)|0,Y=yA,yA=t=(tA=F+s|0)>>>0>>0?t+1|0:t,tA=x(N^(F=tA),Y^t,63),Y=h,N=w,_A=iA,t=w+W|0,t=(t=(c=gA+iA|0)>>>0>>0?t+1|0:t)+(g0=r[n+196>>2])|0,iA=x((c=w=(W=c)+r[n+192>>2]|0)^zA,(w=w>>>0>>0?t+1|0:t)^H,32),t=aA+(W=h)|0,H=t=(gA=AA+iA|0)>>>0>>0?t+1|0:t,aA=x(_A^gA,t^N,24),g0=t=h,AA=t,_A=aA,t=w+S0|0,t=(t=(N=(aA=VA)+c|0)>>>0>>0?t+1|0:t)+AA|0,t0=w=_A+(aA=N)|0,zA=x(w^iA,(N=W)^(W=w>>>0>>0?t+1|0:t),16),t=H+(AA=h)|0,t=(w=gA+zA|0)>>>0>>0?t+1|0:t,gA=w,N=x(_A^w,t^g0,63),w=h,H=v,aA=t,_A=D,t=v+hA|0,t=(t=(c=D+bA|0)>>>0>>0?t+1|0:t)+(iA=r[n+148>>2])|0,O=x((c=D=(v=c)+r[n+144>>2]|0)^SA,(D=D>>>0>>0?t+1|0:t)^O,32),t=y+(v=h)|0,t=U>>>0>(hA=U+O|0)>>>0?t+1|0:t,U=hA,hA=t,iA=y=x(_A^U,t^H,24),SA=t=h,H=t,bA=O,t=D+CA|0,t=(t=(y=(O=mA)+c|0)>>>0>>0?t+1|0:t)+H|0,H=D=iA+y|0,g0=x(bA^D,(O=D>>>0>>0?t+1|0:t)^v,16),t=hA+(v=h)|0,t=(D=U+g0|0)>>>0>>0?t+1|0:t,U=D,hA=t,y=x(D^iA,t^SA,63),c=t=h,D=t,iA=gA,SA=s,t=l+S0|0,l=s=(gA=VA)+j|0,t=(t=s>>>0>>0?t+1|0:t)+D|0,_=x(SA^(s=gA=s+y|0),(D=l>>>0>s>>>0?t+1|0:t)^_,32),t=(gA=h)+aA|0,aA=t=(l=iA+_|0)>>>0<_>>>0?t+1|0:t,c=x(y^l,c^t,24),j=t=h,y=t,iA=_,_=(t=s)+(s=rA)|0,t=D+d0|0,t=(t=s>>>0>_>>>0?t+1|0:t)+y|0,SA=D=(s=_)+c|0,bA=x(iA^D,(y=gA)^(gA=D>>>0>>0?t+1|0:t),16),t=aA+(y=h)|0,t=(D=l+bA|0)>>>0>>0?t+1|0:t,l=D,aA=t,iA=x(D^c,t^j,63),D=h,t=h0+(s=z)|0,t=wA+((_=YA)>>>0>(c=_+fA|0)>>>0?t+1|0:t)|0,AA=x((_=z=i+c|0)^zA,(z=_>>>0>>0?t+1|0:t)^AA,32),t=hA+(wA=h)|0,hA=t=U>>>0>(i=U+AA|0)>>>0?t+1|0:t,t=x((U=i)^fA,t^s,24),fA=r[n+204>>2],c=t,j=AA,AA=t,s=t+_|0,t=(i=h)+z|0,t=(t=s>>>0>>0?t+1|0:t)+fA|0,fA=z=s+r[n+200>>2]|0,j=x(j^z,(_=wA)^(wA=z>>>0>>0?t+1|0:t),16),t=hA+(AA=h)|0,hA=z=U+j|0,_=x(c^z,(s=i)^(i=U>>>0>z>>>0?t+1|0:t),63),z=h,U=Y,_A=tA,t=Y+W|0,t=(t=(s=tA+t0|0)>>>0>>0?t+1|0:t)+(c=r[n+220>>2])|0,s=x((W=tA=s+r[n+216>>2]|0)^g0,(tA=s>>>0>W>>>0?t+1|0:t)^v,32),t=V+(Y=h)|0,V=U,U=t=(v=b+s|0)>>>0>>0?t+1|0:t,t=x(_A^v,V^t,24),g0=r[n+156>>2],c=t,V=W,W=t,V=V+t|0,t=(b=h)+tA|0,t=(t=W>>>0>V>>>0?t+1|0:t)+g0|0,g0=tA=(W=V)+r[n+152>>2]|0,t0=x(tA^s,(W=tA>>>0>>0?t+1|0:t)^Y,16),t=U+(V=h)|0,Y=x(c^(U=tA=v+t0|0),(s=b)^(b=v>>>0>U>>>0?t+1|0:t),63),v=h,tA=w,t=w+O|0,t=(t=(s=H+N|0)>>>0>>0?t+1|0:t)+(c=r[n+132>>2])|0,H=t=(w=s+r[n+128>>2]|0)>>>0>>0?t+1|0:t,E=x(w^cA,t^E,32),t=yA+(O=h)|0,t=(s=F+E|0)>>>0>>0?t+1|0:t,F=s,c=tA,tA=t,s=x(s^N,c^t,24),N=t=h,_A=s,t=H+t|0,t=(t=(s=w+s|0)>>>0>>0?t+1|0:t)+(c=r[n+196>>2])|0,t=(w=s+r[n+192>>2]|0)>>>0>>0?t+1|0:t,H=w,s=O,O=t,E=x(w^E,s^t,16),t=tA+(w=h)|0,t=(s=F+E|0)>>>0>>0?t+1|0:t,F=s,yA=t,c=x(_A^s,N^t,63),tA=h,_A=_,N=E,t=gA+f|0,t=(t=(E=NA)>>>0>(_=E+SA|0)>>>0?t+1|0:t)+(s=z)|0,z=gA=_A+(E=_)|0,_=x(N^gA,(_=w)^(w=E>>>0>gA>>>0?t+1|0:t),32),t=b+(gA=h)|0,N=E=U+_|0,E=x(_A^E,(t=E>>>0>>0?t+1|0:t)^s,24),b=t,zA=r[n+148>>2],SA=E,t=w+(U=h)|0,t=(t=(E=E+z|0)>>>0>>0?t+1|0:t)+(cA=zA)|0,XA=x((cA=z=(s=r[n+144>>2])+E|0)^_,(z=E>>>0>z>>>0?t+1|0:t)^gA,16),t=(t=b)+(b=h)|0,t=(w=(gA=XA)+N|0)>>>0>>0?t+1|0:t,gA=w,E=t,w=x(SA^w,t^U,63),U=h,_A=Y,t=(_=v)+wA|0,t=(t=(N=Y+fA|0)>>>0>>0?t+1|0:t)+(SA=r[n+236>>2])|0,y=x((N=Y=(v=N)+r[n+232>>2]|0)^bA,(Y=v>>>0>Y>>>0?t+1|0:t)^y,32),t=yA+(v=h)|0,yA=t=F>>>0>(wA=F+y|0)>>>0?t+1|0:t,fA=_=x(_A^(F=wA),t^_,24),SA=t=h,wA=t,_A=y,t=Y+eA|0,t=(t=(y=$)>>>0>(_=y+N|0)>>>0?t+1|0:t)+wA|0,bA=Y=fA+(y=_)|0,y=x(_A^Y,(wA=Y>>>0>>0?t+1|0:t)^v,16),t=yA+(_=h)|0,yA=Y=F+y|0,fA=x(Y^fA,(N=Y>>>0>>0?t+1|0:t)^SA,63),Y=h,SA=c,t=W+o|0,t=(t=(F=RA)>>>0>(c=F+g0|0)>>>0?t+1|0:t)+(v=tA)|0,c=x((tA=F=SA+(W=c)|0)^j,(F=F>>>0>>0?t+1|0:t)^AA,32),t=aA+(W=h)|0,aA=x(SA^(AA=l+c|0),(t=l>>>0>AA>>>0?t+1|0:t)^v,24),l=t,g0=r[n+164>>2],j=aA,_A=AA,t=F+(v=h)|0,F=aA=tA+aA|0,t=(t=aA>>>0>>0?t+1|0:t)+(SA=g0)|0,aA=W,W=t=(tA=(AA=r[n+160>>2])+F|0)>>>0>>0?t+1|0:t,B0=x(tA^c,aA^t,16),t=(t=l)+(l=h)|0,aA=t=(F=_A+(aA=B0)|0)>>>0>>0?t+1|0:t,j=x(j^F,t^v,63),v=h,c=D,_A=iA,t=D+CA|0,t=O+((iA=mA)>>>0>(SA=_A+iA|0)>>>0?t+1|0:t)|0,V=x((iA=D=H+SA|0)^t0,(D=D>>>0>>0?t+1|0:t)^V,32),t=i+(H=h)|0,i=t=(O=hA+V|0)>>>0>>0?t+1|0:t,SA=c=x(_A^(hA=O),t^c,24),t0=t=h,O=t,_A=V,t=D+a|0,t=(t=(c=(V=r0)+iA|0)>>>0>>0?t+1|0:t)+O|0,O=D=SA+c|0,iA=x(_A^D,(V=H)^(H=D>>>0>>0?t+1|0:t),16),t=i+(V=h)|0,t=(D=hA+iA|0)>>>0>>0?t+1|0:t,hA=D,i=t,c=x(D^SA,t^t0,63),SA=t=h,D=t,_A=y,t=z+CA|0,z=y=mA+cA|0,t=(t=y>>>0>>0?t+1|0:t)+D|0,_=x(_A^(y=mA=y+c|0),(z=z>>>0>y>>>0?t+1|0:t)^_,32),t=aA+(D=h)|0,CA=mA=F+_|0,aA=t=F>>>0>mA>>>0?t+1|0:t,_A=mA=x(c^mA,SA^t,24),t=(F=h)+z|0,t=(t=(y=y+mA|0)>>>0>>0?t+1|0:t)+zA|0,SA=x((c=mA=y+s|0)^_,(y=s>>>0>c>>>0?t+1|0:t)^D,16),t=(t=aA)+(aA=h)|0,CA=mA=(z=SA)+CA|0,D=x(_A^mA,(z=z>>>0>mA>>>0?t+1|0:t)^F,63),F=h,mA=U,_A=w,t=U+wA|0,U=s=w+bA|0,t=(t=s>>>0>>0?t+1|0:t)+(_=r[n+196>>2])|0,_=x((s=w=s+r[n+192>>2]|0)^B0,(w=s>>>0>>0?t+1|0:t)^l,32),t=i+(U=h)|0,i=mA,mA=t=(l=hA+_|0)>>>0>>0?t+1|0:t,_A=t=x(_A^l,i^t,24),hA=t,i=t+s|0,t=(wA=h)+w|0,t=g0+(i>>>0>>0?t+1|0:t)|0,g0=w=i+AA|0,bA=x(w^_,(s=U)^(U=w>>>0>>0?t+1|0:t),16),t=mA+(hA=h)|0,t=(w=l+bA|0)>>>0>>0?t+1|0:t,l=w,s=wA,wA=t,s=x(_A^w,s^t,63),mA=h,t=eA+(w=Y)|0,t=W+((i=$)>>>0>(AA=i+fA|0)>>>0?t+1|0:t)|0,i=Y=tA+AA|0,AA=x(Y^iA,(tA=Y>>>0>>0?t+1|0:t)^V,32),t=E+(Y=h)|0,E=w,w=t=(W=gA+AA|0)>>>0>>0?t+1|0:t,E=V=x(W^fA,E^t,24),_=t=h,V=AA,AA=(t=i)+(i=VA)|0,t=tA+S0|0,t=(t=i>>>0>AA>>>0?t+1|0:t)+_|0,gA=tA=(i=AA)+E|0,iA=x(V^tA,(i=tA>>>0>>0?t+1|0:t)^Y,16),t=w+(AA=h)|0,w=x((fA=tA=W+iA|0)^E,(tA=tA>>>0>>0?t+1|0:t)^_,63),Y=h,W=v,t=v+o|0,t=H+((E=(V=RA)+j|0)>>>0>>0?t+1|0:t)|0,t=(v=O+E|0)>>>0>>0?t+1|0:t,O=v,v=t,V=x(O^XA,t^b,32),t=N+(b=h)|0,t=(H=yA+V|0)>>>0>>0?t+1|0:t,yA=H,E=W,W=t,E=x(H^j,E^t,24),N=t=h,H=t,_=V,V=(t=O)+(O=r0)|0,t=v+a|0,t=(t=O>>>0>V>>>0?t+1|0:t)+H|0,j=v=V+E|0,V=x(_^v,(O=b)^(b=v>>>0>>0?t+1|0:t),16),t=W+(H=h)|0,t=(v=yA+V|0)>>>0>>0?t+1|0:t,yA=v,W=t,_=x(v^E,t^N,63),v=h,E=s,N=V,t=y+d0|0,t=(t=(s=(V=rA)+c|0)>>>0>>0?t+1|0:t)+(O=mA)|0,V=y=E+s|0,mA=t=y>>>0>>0?t+1|0:t,s=x(N^y,t^H,32),t=(t=tA)+(tA=h)|0,y=O,O=t=s>>>0>(H=s+fA|0)>>>0?t+1|0:t,t=x(E^H,y^t,24),N=r[n+220>>2],E=t,fA=s,y=V,V=t,s=y+t|0,t=(y=h)+mA|0,t=(t=s>>>0>>0?t+1|0:t)+N|0,fA=x(fA^(c=mA=s+r[n+216>>2]|0),(V=s>>>0>c>>>0?t+1|0:t)^tA,16),t=O+(s=h)|0,O=t=H>>>0>(mA=H+fA|0)>>>0?t+1|0:t,mA=x(E^(H=mA),t^y,63),tA=h,_A=w,t=(y=Y)+U|0,Y=E=w+g0|0,t=(t=E>>>0>>0?t+1|0:t)+(N=r[n+204>>2])|0,aA=x((E=w=E+r[n+200>>2]|0)^SA,(w=E>>>0>>0?t+1|0:t)^aA,32),t=W+(Y=h)|0,yA=t=(U=yA+aA|0)>>>0>>0?t+1|0:t,N=y=x(_A^U,t^y,24),SA=t=h,W=t,_A=aA,t=w+h0|0,t=(t=(y=(aA=YA)+E|0)>>>0>>0?t+1|0:t)+W|0,g0=w=N+y|0,t0=x(_A^w,(W=w>>>0>>0?t+1|0:t)^Y,16),t=yA+(aA=h)|0,t=(w=U+t0|0)>>>0>>0?t+1|0:t,U=w,yA=t,w=x(w^N,t^SA,63),Y=h,_A=_,t=(y=v)+i|0,t=(_=_+gA|0)>>>0>>0?t+1|0:t,gA=_,t=t+(N=SA=r[n+156>>2])|0,N=x((_=v=(E=r[n+152>>2])+_|0)^bA,(v=_>>>0>>0?t+1|0:t)^hA,32),t=(t=z)+(z=h)|0,hA=t=(gA=N+CA|0)>>>0>>0?t+1|0:t,CA=y=x(_A^gA,t^y,24),bA=t=h,i=t,_A=y,t=v+f|0,t=(t=(y=NA)>>>0>(_=y+_|0)>>>0?t+1|0:t)+i|0,CA=v=CA+(y=_)|0,zA=x(v^N,(i=v>>>0>>0?t+1|0:t)^z,16),t=hA+(v=h)|0,t=(z=gA+zA|0)>>>0>>0?t+1|0:t,gA=z,hA=t,N=x(_A^z,t^bA,63),z=h,_A=D,t=(y=F)+b|0,F=_=D+j|0,t=(t=_>>>0>>0?t+1|0:t)+(bA=r[n+236>>2])|0,AA=x((_=D=_+r[n+232>>2]|0)^iA,(F=_>>>0>>0?t+1|0:t)^AA,32),t=wA+(b=h)|0,iA=D=l+AA|0,D=x(_A^D,(t=D>>>0>>0?t+1|0:t)^y,24),wA=t,bA=r[n+132>>2],j=D,_A=iA,iA=AA,t=(l=h)+F|0,t=(t=(y=D+_|0)>>>0>>0?t+1|0:t)+bA|0,t=(D=(AA=r[n+128>>2])+y|0)>>>0>>0?t+1|0:t,F=D,y=b,b=t,iA=x(iA^D,y^t,16),t=(t=wA)+(wA=h)|0,t=(D=_A+(y=iA)|0)>>>0>>0?t+1|0:t,y=D,D=l,l=t,j=t=x(j^y,D^t,63),_=t,c=t+c|0,t=(D=h)+V|0,t=bA+(_>>>0>c>>>0?t+1|0:t)|0,c=x((_=V=c+AA|0)^t0,(AA=AA>>>0>_>>>0?t+1|0:t)^aA,32),t=hA+(aA=h)|0,t=gA>>>0>(V=gA+c|0)>>>0?t+1|0:t,gA=V,V=D,D=t,j=V=x(j^gA,V^t,24),bA=t=h,hA=t,_A=V,t=AA+o|0,t=(t=(_=(V=RA)+_|0)>>>0>>0?t+1|0:t)+hA|0,j=AA=j+_|0,t0=x(AA^c,(hA=AA>>>0<_>>>0?t+1|0:t)^aA,16),t=D+(AA=h)|0,t=gA>>>0>(aA=gA+t0|0)>>>0?t+1|0:t,gA=aA,aA=t,c=x(_A^gA,t^bA,63),D=h,V=tA,_A=mA,t=tA+W|0,tA=_=mA+g0|0,t=(t=_>>>0>>0?t+1|0:t)+(bA=r[n+148>>2])|0,g0=x((_=mA=_+r[n+144>>2]|0)^zA,(mA=tA>>>0>_>>>0?t+1|0:t)^v,32),t=l+(tA=h)|0,W=t=(v=y+g0|0)>>>0>>0?t+1|0:t,bA=t=x(_A^v,t^V,24),y=t,V=t+_|0,t=(l=h)+mA|0,t=SA+(y>>>0>V>>>0?t+1|0:t)|0,SA=mA=E+V|0,g0=x(mA^g0,(y=E>>>0>mA>>>0?t+1|0:t)^tA,16),t=W+(V=h)|0,tA=x(bA^(W=mA=v+g0|0),(E=l)^(l=v>>>0>W>>>0?t+1|0:t),63),v=h,mA=Y,bA=w,t=Y+i|0,Y=E=w+CA|0,t=(t=E>>>0>>0?t+1|0:t)+(_=r[n+164>>2])|0,_=x((E=w=E+r[n+160>>2]|0)^iA,(w=E>>>0>>0?t+1|0:t)^wA,32),t=O+(Y=h)|0,O=mA,mA=t=H>>>0>(wA=H+_|0)>>>0?t+1|0:t,H=x(bA^wA,O^t,24),iA=t=h,i=t,_A=H,t=w+a|0,t=(t=(H=r0)>>>0>(O=H+E|0)>>>0?t+1|0:t)+i|0,CA=w=_A+(H=O)|0,bA=x(w^_,(i=w>>>0>>0?t+1|0:t)^Y,16),t=mA+(H=h)|0,t=(w=wA+bA|0)>>>0>>0?t+1|0:t,wA=w,O=t,w=x(_A^w,t^iA,63),Y=h,mA=z,t=z+S0|0,t=b+((E=VA)>>>0>(_=E+N|0)>>>0?t+1|0:t)|0,s=x((E=z=F+_|0)^fA,(z=E>>>0>>0?t+1|0:t)^s,32),t=yA+(F=h)|0,_=mA,mA=t=U>>>0>(b=U+s|0)>>>0?t+1|0:t,_=b=x((U=b)^N,_^t,24),N=t=h,iA=s,t=z+eA|0,t=(t=(s=(b=$)+E|0)>>>0>>0?t+1|0:t)+N|0,yA=z=_+s|0,s=x(iA^z,(E=F)^(F=z>>>0>>0?t+1|0:t),16),t=mA+(b=h)|0,N=x((E=z=U+s|0)^_,(z=U>>>0>E>>>0?t+1|0:t)^N,63),mA=h,U=v,iA=tA,fA=s,t=v+hA|0,t=(t=(s=tA+j|0)>>>0>>0?t+1|0:t)+(_=r[n+196>>2])|0,s=x(fA^(hA=tA=s+r[n+192>>2]|0),(tA=s>>>0>tA>>>0?t+1|0:t)^b,32),t=O+(v=h)|0,_=U,U=t=(b=wA+s|0)>>>0>>0?t+1|0:t,t=x(iA^b,_^t,24),iA=r[n+204>>2],_=t,O=hA,hA=t,O=O+t|0,t=(wA=h)+tA|0,t=(t=O>>>0>>0?t+1|0:t)+iA|0,fA=tA=O+r[n+200>>2]|0,j=x(tA^s,(hA=tA>>>0>>0?t+1|0:t)^v,16),t=U+(O=h)|0,tA=x(_^(U=tA=b+j|0),(b=U>>>0>>0?t+1|0:t)^wA,63),v=h,wA=Y,iA=w,_A=E,t=Y+y|0,t=(t=(E=w+SA|0)>>>0>>0?t+1|0:t)+(_=zA=r[n+212>>2])|0,E=x((y=w=(s=r[n+208>>2])+E|0)^t0,(w=w>>>0>>0?t+1|0:t)^AA,32),t=(t=z)+(z=h)|0,_=wA,wA=t=(Y=_A+E|0)>>>0>>0?t+1|0:t,t=x(iA^Y,_^t,24),iA=r[n+220>>2],_A=t,_=E,E=y,y=t,E=E+t|0,t=(AA=h)+w|0,t=(t=E>>>0>>0?t+1|0:t)+iA|0,SA=w=E+r[n+216>>2]|0,E=x(_^w,(y=w>>>0>>0?t+1|0:t)^z,16),t=wA+(_=h)|0,wA=z=Y+E|0,z=x(_A^z,(w=AA)^(AA=Y>>>0>z>>>0?t+1|0:t),63),w=h,_A=N,t=i+f|0,t=(t=(N=NA)>>>0>(iA=N+CA|0)>>>0?t+1|0:t)+(Y=mA)|0,iA=x((mA=i=_A+(N=iA)|0)^g0,(i=i>>>0>>0?t+1|0:t)^V,32),t=aA+(V=h)|0,t=gA>>>0>(N=gA+iA|0)>>>0?t+1|0:t,gA=N,N=Y,Y=t,N=x(_A^gA,N^t,24),aA=t=h,_A=N,t=i+t|0,t=(t=(N=N+mA|0)>>>0>>0?t+1|0:t)+(g0=r[n+236>>2])|0,CA=mA=(i=N)+r[n+232>>2]|0,g0=x(mA^iA,(i=i>>>0>mA>>>0?t+1|0:t)^V,16),t=Y+(V=h)|0,iA=x(_A^(Y=mA=gA+g0|0),(gA=gA>>>0>Y>>>0?t+1|0:t)^aA,63),mA=h,aA=D,_A=c,t=D+h0|0,t=F+((c=(N=YA)+c|0)>>>0>>0?t+1|0:t)|0,H=x((N=D=yA+c|0)^bA,(D=D>>>0>>0?t+1|0:t)^H,32),t=l+(F=h)|0,W=t=W>>>0>(yA=W+H|0)>>>0?t+1|0:t,c=aA=x(_A^yA,t^aA,24),bA=t=h,l=t,_A=H,t=D+d0|0,t=(t=(H=rA)>>>0>(aA=H+N|0)>>>0?t+1|0:t)+l|0,l=D=c+(H=aA)|0,N=x(_A^D,(N=F)^(F=D>>>0>>0?t+1|0:t),16),t=W+(H=h)|0,t=(D=yA+N|0)>>>0>>0?t+1|0:t,yA=D,W=t,aA=x(D^c,t^bA,63),c=t=h,D=t,bA=E,t=hA+h0|0,hA=E=fA+YA|0,t=(t=E>>>0>>0?t+1|0:t)+D|0,_=x(bA^(E=YA=E+aA|0),(YA=hA>>>0>E>>>0?t+1|0:t)^_,32),t=gA+(D=h)|0,gA=t=Y>>>0>(hA=Y+_|0)>>>0?t+1|0:t,fA=t=x(aA^(Y=hA),c^t,24),aA=t,E=t+E|0,t=(hA=h)+YA|0,t=zA+(E>>>0>>0?t+1|0:t)|0,c=x((c=_)^(_=YA=E+s|0),(aA=s>>>0>_>>>0?t+1|0:t)^D,16),t=gA+(s=h)|0,Y=x(fA^(gA=YA=Y+c|0),(E=hA)^(hA=Y>>>0>gA>>>0?t+1|0:t),63),D=h,YA=v,bA=tA,t=v+y|0,v=E=tA+SA|0,t=(t=E>>>0>>0?t+1|0:t)+(fA=r[n+164>>2])|0,V=x((E=tA=E+r[n+160>>2]|0)^g0,(tA=v>>>0>E>>>0?t+1|0:t)^V,32),t=W+(v=h)|0,t=(y=yA+V|0)>>>0>>0?t+1|0:t,yA=y,W=YA,YA=t,t=x(bA^y,W^t,24),SA=r[n+196>>2],bA=t,fA=V,y=t,V=t+E|0,t=(W=h)+tA|0,t=(t=y>>>0>V>>>0?t+1|0:t)+SA|0,fA=x(fA^(E=tA=(y=V)+r[n+192>>2]|0),(V=v)^(v=y>>>0>E>>>0?t+1|0:t),16),t=YA+(SA=h)|0,t=(tA=yA+fA|0)>>>0>>0?t+1|0:t,yA=tA,y=W,W=t,y=x(bA^tA,y^t,63),YA=h,tA=w,bA=z,t=w+i|0,t=(t=(V=z+CA|0)>>>0>>0?t+1|0:t)+(h0=r[n+204>>2])|0,H=x((V=z=(w=V)+r[n+200>>2]|0)^N,(z=w>>>0>z>>>0?t+1|0:t)^H,32),t=b+(w=h)|0,t=U>>>0>(i=U+H|0)>>>0?t+1|0:t,U=i,i=tA,tA=t,N=i=x(bA^U,i^t,24),h0=t=h,b=t,bA=i,t=z+d0|0,t=(t=(i=V+rA|0)>>>0>>0?t+1|0:t)+b|0,N=x((V=rA=N+i|0)^H,(N=w)^(w=i>>>0>V>>>0?t+1|0:t),16),t=tA+(b=h)|0,i=t=U>>>0>(rA=U+N|0)>>>0?t+1|0:t,rA=x(bA^(U=rA),t^h0,63),z=h,t=F+(tA=mA)|0,F=H=l+iA|0,t=(t=H>>>0>>0?t+1|0:t)+(h0=r[n+236>>2])|0,O=x((H=mA=H+r[n+232>>2]|0)^j,(mA=F>>>0>H>>>0?t+1|0:t)^O,32),t=AA+(F=h)|0,AA=tA,tA=t=(l=wA+O|0)>>>0>>0?t+1|0:t,AA=x(l^iA,AA^t,24),j=t=h,wA=t,t=mA+S0|0,t=(t=(H=H+VA|0)>>>0>>0?t+1|0:t)+wA|0,iA=x((wA=VA=H+AA|0)^O,(iA=F)^(F=H>>>0>wA>>>0?t+1|0:t),16),t=tA+(S0=h)|0,H=t=l>>>0>(VA=l+iA|0)>>>0?t+1|0:t,mA=x(AA^(l=VA),t^j,63),tA=h,t=aA+o|0,t=(t=(AA=_+RA|0)>>>0>>0?t+1|0:t)+(O=YA)|0,t=AA>>>0>(RA=AA+y|0)>>>0?t+1|0:t,AA=RA,RA=t,t=f+t|0,NA=t=(O=NA+AA|0)>>>0>>0?t+1|0:t,_=O,O=x(AA^iA,RA^S0,32),t=i+(AA=h)|0,aA=x((i=RA=U+O|0)^y,(RA=U>>>0>i>>>0?t+1|0:t)^YA,24),t=(y=h)+NA|0,t=(U=aA)>>>0>(YA=_+U|0)>>>0?t+1|0:t,U=YA,r[n>>2]=U,r[n+4>>2]=t,VA=t,t=x(U^O,t^AA,16),O=YA=h,r[n+120>>2]=t,r[n+124>>2]=O,NA=t,i=t+i|0,t=O+RA|0,r[n+80>>2]=i,t=i>>>0>>0?t+1|0:t,r[n+84>>2]=t,k=n,DA=x(aA^i,t^y,63),r[k+40>>2]=DA,r[n+44>>2]=h,RA=z,y=rA,t=v+z|0,t=(t=(NA=E+rA|0)>>>0>>0?t+1|0:t)+(i=r[n+132>>2])|0,NA=t=(rA=NA+r[n+128>>2]|0)>>>0>>0?t+1|0:t,v=x(rA^c,t^s,32),t=H+(i=h)|0,E=RA,RA=t=l>>>0>(z=l+v|0)>>>0?t+1|0:t,H=x(y^(l=z),E^t,24),t=NA+(O=h)|0,t=(z=H+rA|0)>>>0>>0?t+1|0:t,rA=(NA=r[n+144>>2])+z|0,t=r[n+148>>2]+t|0,t=rA>>>0>>0?t+1|0:t,r[n+8>>2]=rA,r[n+12>>2]=t,t=x(v^rA,t^i,16),z=YA=h,r[n+96>>2]=t,r[n+100>>2]=z,rA=t,NA=t+l|0,t=z+RA|0,RA=NA,r[n+88>>2]=RA,t=rA>>>0>RA>>>0?t+1|0:t,r[n+92>>2]=t,k=n,DA=x(H^RA,t^O,63),r[k+48>>2]=DA,r[n+52>>2]=h,E=$,t=w+tA|0,t=(t=(rA=V+mA|0)>>>0>>0?t+1|0:t)+(NA=r[n+220>>2])|0,t=(YA=rA+r[n+216>>2]|0)>>>0>>0?t+1|0:t,$=YA,NA=YA,rA=E+YA|0,YA=t,t=t+eA|0,t=rA>>>0>>0?t+1|0:t,NA=rA,rA=t,E=NA,y=mA,NA=x(fA^$,YA^SA,32),t=hA+(mA=h)|0,tA=x(y^(z=YA=gA+NA|0),(YA=gA>>>0>z>>>0?t+1|0:t)^tA,24),t=(v=h)+rA|0,rA=$=E+(w=tA)|0,r[n+16>>2]=rA,t=w>>>0>rA>>>0?t+1|0:t,r[n+20>>2]=t,t=x(rA^NA,t^mA,16),RA=h,r[n+104>>2]=t,r[n+108>>2]=RA,rA=t,$=t+z|0,t=YA+RA|0,YA=$,r[n+64>>2]=YA,t=rA>>>0>YA>>>0?t+1|0:t,r[n+68>>2]=t,k=n,DA=x(w^YA,t^v,63),r[k+56>>2]=DA,r[n+60>>2]=h,t=D+a|0,t=(t=(rA=Y+r0|0)>>>0>>0?t+1|0:t)+F|0,r0=t=wA>>>0>(rA=wA+rA|0)>>>0?t+1|0:t,mA=x(rA^N,t^b,32),t=W+(z=h)|0,RA=t=yA>>>0>($=yA+mA|0)>>>0?t+1|0:t,tA=x($^Y,D^t,24),t=r0+(w=h)|0,t=rA>>>0>(NA=tA+rA|0)>>>0?t+1|0:t,rA=(r0=r[n+152>>2])+NA|0,t=r[n+156>>2]+t|0,t=rA>>>0>>0?t+1|0:t,r[n+24>>2]=rA,r[n+28>>2]=t,t=x(mA^rA,t^z,16),r[n+112>>2]=t,r0=h,r[n+116>>2]=r0,rA=t+$|0,t=RA+r0|0,RA=rA,r[n+72>>2]=RA,t=RA>>>0<$>>>0?t+1|0:t,r[n+76>>2]=t,k=n,DA=x(tA^RA,t^w,63),r[k+32>>2]=DA,r[n+36>>2]=h,t=r[n+68>>2]^(u[e+4|0]|u[e+5|0]<<8|u[e+6|0]<<16|u[e+7|0]<<24)^VA,RA=r[n+64>>2]^(u[0|e]|u[e+1|0]<<8|u[e+2|0]<<16|u[e+3|0]<<24)^U,p[0|e]=RA,p[e+1|0]=RA>>>8,p[e+2|0]=RA>>>16,p[e+3|0]=RA>>>24,p[e+4|0]=t,p[e+5|0]=t>>>8,p[e+6|0]=t>>>16,p[e+7|0]=t>>>24,VA=1;t=(RA=VA<<3)+e|0,YA=RA=n+RA|0,rA=r[RA>>2]^(u[0|t]|u[t+1|0]<<8|u[t+2|0]<<16|u[t+3|0]<<24),r0=r[(RA=RA- -64|0)>>2],RA=r[RA+4>>2]^r[YA+4>>2]^(u[t+4|0]|u[t+5|0]<<8|u[t+6|0]<<16|u[t+7|0]<<24),YA=rA^r0,p[0|t]=YA,p[t+1|0]=YA>>>8,p[t+2|0]=YA>>>16,p[t+3|0]=YA>>>24,p[t+4|0]=RA,p[t+5|0]=RA>>>8,p[t+6|0]=RA>>>16,p[t+7|0]=RA>>>24,(0|(VA=VA+1|0))!=8;);BA=n+256|0}function Ar(e,t,n,o){var a=0,f=0,E=0,s=0,y=0,_=0,w=0,D=0,v=0,Y=0,U=0,H=0,i=0,c=0,N=0,l=0,F=0,b=0,V=0,W=0,O=0,z=0,tA=0,AA=0,gA=0,aA=0,iA=0,hA=0,yA=0,fA=0,_A=0,wA=0,mA=0,bA=0,RA=0,j=0,rA=0;for(function(YA,SA){for(var NA=0,VA=0,XA=0,g0=0,$=0;g0=XA=(VA=NA<<3)+YA|0,$=vn(SA+VA|0),r[g0>>2]=$,r[XA+4>>2]=h,(0|(NA=NA+1|0))!=16;);}(n,t),t=V0(o,e,64),w=r[n>>2],Y=r[n+4>>2],o=0;;){if(a=x(b=r[(E=t)+32>>2],v=r[E+36>>2],14),i=h,a=x(b,v,18)^a,l=h^i,f=w,w=x(b,v,41)^a,a=(h^l)+Y|0,a=w>>>0>(i=f+w|0)>>>0?a+1|0:a,w=i,H=r[E+48>>2],w=(l=r[(Y=34784+(rA=o<<3)|0)>>2])+w|0,a=r[Y+4>>2]+a|0,a=w>>>0>>0?a+1|0:a,w=(Y=H^((O=r[E+40>>2])^H)&b)+w|0,a=(((f=r[E+52>>2])^(F=r[E+44>>2]))&v^f)+a|0,a=w>>>0>>0?a+1|0:a,i=(y=w)+(w=r[E+56>>2])|0,a=r[E+60>>2]+a|0,a=w>>>0>i>>>0?a+1|0:a,Y=i+(l=r[E+24>>2])|0,w=a,a=a+r[E+28>>2]|0,a=Y>>>0>>0?a+1|0:a,l=Y,U=a,r[E+24>>2]=Y,r[E+28>>2]=a,a=x(V=r[E>>2],Y=r[E+4>>2],28),N=h,a=x(V,Y,34)^a,s=h^N,N=i+(x(V,Y,39)^a)|0,a=w+(h^s)|0,a=i>>>0>N>>>0?a+1|0:a,i=(y=V&((s=r[E+16>>2])|(_=r[E+8>>2]))|s&_)+N|0,a=(Y&((N=r[E+20>>2])|(w=r[E+12>>2]))|w&N)+a|0,i=a=y>>>0>(D=i)>>>0?a+1|0:a,r[E+56>>2]=D,r[E+60>>2]=a,a=x(l,U,14),y=h,wA=x(l,U,18)^a,y^=h,c=s,a=((v^F)&U^F)+f|0,a=(s=(b^O)&l^O)>>>0>(H=s+H|0)>>>0?a+1|0:a,f=x(l,U,41)^wA,a=(h^y)+a|0,a=f>>>0>(H=f+H|0)>>>0?a+1|0:a,H=(y=r[(s=wA=(f=(1|o)<<3)+n|0)>>2])+H|0,a=r[s+4>>2]+a|0,a=y>>>0>H>>>0?a+1|0:a,H=(s=r[(f=f+34784|0)>>2])+H|0,a=r[f+4>>2]+a|0,s=a=s>>>0>H>>>0?a+1|0:a,a=a+N|0,N=H=c+(f=y=H)|0,f=a=f>>>0>H>>>0?a+1|0:a,r[E+16>>2]=H,r[E+20>>2]=a,H=E,a=x(D,i,28),E=h,W=x(D,i,34)^a,tA=h^E,E=(a=y)+(y=(_|V)&D|_&V)|0,a=((w|Y)&i|w&Y)+s|0,a=E>>>0>>0?a+1|0:a,s=x(D,i,39)^W,a=(h^tA)+a|0,W=E=s+E|0,E=a=E>>>0>>0?a+1|0:a,r[H+48>>2]=W,r[H+52>>2]=a,y=H,a=x(N,f,14),H=h,s=x(N,f,18)^a,tA=h^H,c=_,a=((v^U)&f^v)+F|0,a=(_=(l^b)&N^b)>>>0>(H=_+O|0)>>>0?a+1|0:a,s=x(N,f,41)^s,a=(h^tA)+a|0,a=s>>>0>(H=s+H|0)>>>0?a+1|0:a,H=(O=r[(_=hA=(s=(2|o)<<3)+n|0)>>2])+H|0,a=r[_+4>>2]+a|0,a=H>>>0>>0?a+1|0:a,H=(_=r[(s=s+34784|0)>>2])+H|0,a=r[s+4>>2]+a|0,a=_>>>0>H>>>0?a+1|0:a,H=c+(s=_=H)|0,c=w,w=a,a=c+a|0,s=a=s>>>0>H>>>0?a+1|0:a,r[y+8>>2]=H,r[y+12>>2]=a,a=x(W,E,28),O=h,F=x(W,E,34)^a,O^=h,a=((Y|i)&E|Y&i)+w|0,a=(_=(tA=(D|V)&W|D&V)+_|0)>>>0>>0?a+1|0:a,w=_,_=x(W,E,39)^F,a=(h^O)+a|0,O=w=w+_|0,w=a=w>>>0<_>>>0?a+1|0:a,r[y+40>>2]=O,r[y+44>>2]=a,_=y,a=x(H,s,14),y=h,F=x(H,s,18)^a,tA=h^y,c=V,a=(U^(f^U)&s)+v|0,a=(y=(V=l^(N^l)&H)+b|0)>>>0>>0?a+1|0:a,v=y,y=x(H,s,41)^F,a=(h^tA)+a|0,a=y>>>0>(v=v+y|0)>>>0?a+1|0:a,v=(F=r[(b=V=(y=(3|o)<<3)+n|0)>>2])+v|0,a=r[b+4>>2]+a|0,a=v>>>0>>0?a+1|0:a,v=(b=r[(y=y+34784|0)>>2])+v|0,a=r[y+4>>2]+a|0,a=v>>>0>>0?a+1|0:a,b=v,v=c+(y=v)|0,c=Y,Y=a,a=c+a|0,y=a=y>>>0>v>>>0?a+1|0:a,r[_>>2]=v,r[_+4>>2]=a,a=x(O,w,28),F=h,tA=x(O,w,34)^a,F^=h,a=((E|i)&w|E&i)+Y|0,a=(b=(iA=(D|W)&O|D&W)+b|0)>>>0>>0?a+1|0:a,Y=b,b=x(O,w,39)^tA,a=(h^F)+a|0,a=(Y=Y+b|0)>>>0>>0?a+1|0:a,b=Y,Y=a,r[_+32>>2]=b,r[_+36>>2]=a,a=x(v,y,14),F=h,tA=x(v,y,18)^a,F^=h,c=D,a=U+(f^(f^s)&y)|0,a=(D=l+(N^(H^N)&v)|0)>>>0>>0?a+1|0:a,U=x(v,y,41)^tA,a=(h^F)+a|0,a=U>>>0>(l=U+D|0)>>>0?a+1|0:a,l=(F=r[(D=yA=(U=(4|o)<<3)+n|0)>>2])+l|0,a=r[D+4>>2]+a|0,a=l>>>0>>0?a+1|0:a,l=(D=r[(U=U+34784|0)>>2])+l|0,a=r[U+4>>2]+a|0,U=i,i=a=D>>>0>l>>>0?a+1|0:a,a=U+a|0,U=a=(D=l)>>>0>(l=c+D|0)>>>0?a+1|0:a,r[_+56>>2]=l,r[_+60>>2]=a,a=x(b,Y,28),F=h,tA=x(b,Y,34)^a,F^=h,a=((E|w)&Y|E&w)+i|0,a=(D=(iA=(O|W)&b|O&W)+D|0)>>>0>>0?a+1|0:a,i=D,D=x(b,Y,39)^tA,a=(h^F)+a|0,F=i=i+D|0,i=a=D>>>0>i>>>0?a+1|0:a,r[_+24>>2]=F,r[_+28>>2]=a,a=x(l,U,14),D=h,tA=x(l,U,18)^a,iA=h^D,c=W,a=f+(s^(s^y)&U)|0,a=(D=N+(H^(v^H)&l)|0)>>>0>>0?a+1|0:a,f=x(l,U,41)^tA,a=(h^iA)+a|0,a=f>>>0>(N=f+D|0)>>>0?a+1|0:a,N=(tA=r[(D=W=(f=(5|o)<<3)+n|0)>>2])+N|0,a=r[D+4>>2]+a|0,a=N>>>0>>0?a+1|0:a,N=(D=r[(f=f+34784|0)>>2])+N|0,a=r[f+4>>2]+a|0,a=D>>>0>N>>>0?a+1|0:a,N=c+(f=D=N)|0,c=E,E=a,a=c+a|0,f=a=f>>>0>N>>>0?a+1|0:a,r[_+48>>2]=N,r[_+52>>2]=a,a=x(F,i,28),tA=h,iA=x(F,i,34)^a,tA^=h,a=((w|Y)&i|w&Y)+E|0,a=(D=(z=(b|O)&F|b&O)+D|0)>>>0>>0?a+1|0:a,E=D,D=x(F,i,39)^iA,a=(h^tA)+a|0,iA=E=E+D|0,E=a=E>>>0>>0?a+1|0:a,r[_+16>>2]=iA,r[_+20>>2]=a,a=x(N,f,14),D=h,tA=x(N,f,18)^a,z=h^D,c=O,a=s+(y^(y^U)&f)|0,a=(D=H+(v^(v^l)&N)|0)>>>0>>0?a+1|0:a,s=x(N,f,41)^tA,a=(h^z)+a|0,a=s>>>0>(H=s+D|0)>>>0?a+1|0:a,H=(O=r[(D=bA=(s=(6|o)<<3)+n|0)>>2])+H|0,a=r[D+4>>2]+a|0,a=H>>>0>>0?a+1|0:a,H=(D=r[(s=s+34784|0)>>2])+H|0,a=r[s+4>>2]+a|0,a=D>>>0>H>>>0?a+1|0:a,H=c+(s=D=H)|0,c=w,w=a,a=c+a|0,s=a=s>>>0>H>>>0?a+1|0:a,r[_+40>>2]=H,r[_+44>>2]=a,a=x(iA,E,28),O=h,tA=x(iA,E,34)^a,O^=h,a=((Y|i)&E|Y&i)+w|0,a=(D=(z=(F|b)&iA|F&b)+D|0)>>>0>>0?a+1|0:a,w=D,D=x(iA,E,39)^tA,a=(h^O)+a|0,z=w=w+D|0,w=a=w>>>0>>0?a+1|0:a,r[_+8>>2]=z,r[_+12>>2]=a,a=x(H,s,14),D=h,O=x(H,s,18)^a,tA=h^D,c=b,a=y+(U^(f^U)&s)|0,a=(D=v+(l^(N^l)&H)|0)>>>0>>0?a+1|0:a,y=x(H,s,41)^O,a=(h^tA)+a|0,a=y>>>0>(v=y+D|0)>>>0?a+1|0:a,v=(b=r[(D=O=(y=(7|o)<<3)+n|0)>>2])+v|0,a=r[D+4>>2]+a|0,a=v>>>0>>0?a+1|0:a,v=(D=r[(y=y+34784|0)>>2])+v|0,a=r[y+4>>2]+a|0,a=v>>>0>>0?a+1|0:a,v=c+(y=D=v)|0,c=Y,Y=a,a=c+a|0,y=a=y>>>0>v>>>0?a+1|0:a,r[_+32>>2]=v,r[_+36>>2]=a,a=x(z,w,28),b=h,tA=x(z,w,34)^a,b^=h,a=((E|i)&w|E&i)+Y|0,a=(D=(c=(F|iA)&z|F&iA)+D|0)>>>0>>0?a+1|0:a,Y=D,D=x(z,w,39)^tA,a=(h^b)+a|0,c=Y=Y+D|0,Y=a=D>>>0>Y>>>0?a+1|0:a,r[_>>2]=c,r[_+4>>2]=a,D=_,a=x(v,y,14),_=h,b=x(v,y,18)^a,tA=h^_,a=U+(f^(f^s)&y)|0,a=(_=l+(N^(H^N)&v)|0)>>>0>>0?a+1|0:a,U=x(v,y,41)^b,a=(h^tA)+a|0,a=U>>>0>(l=U+_|0)>>>0?a+1|0:a,l=(b=r[(_=tA=(U=(8|o)<<3)+n|0)>>2])+l|0,a=r[_+4>>2]+a|0,a=l>>>0>>0?a+1|0:a,l=(_=r[(U=U+34784|0)>>2])+l|0,a=r[U+4>>2]+a|0,a=_>>>0>l>>>0?a+1|0:a,b=l,_=i,i=a,a=_+a|0,_=a=(U=l)>>>0>(l=U+F|0)>>>0?a+1|0:a,r[D+24>>2]=l,r[D+28>>2]=a,U=D,a=x(c,Y,28),D=h,F=x(c,Y,34)^a,AA=h^D,D=(a=b)+(b=(z|iA)&c|z&iA)|0,a=((E|w)&Y|E&w)+i|0,a=D>>>0>>0?a+1|0:a,i=D,D=x(c,Y,39)^F,a=(h^AA)+a|0,AA=i=i+D|0,i=a=D>>>0>i>>>0?a+1|0:a,r[U+56>>2]=AA,r[U+60>>2]=a,a=x(l,_,14),D=h,b=x(l,_,18)^a,F=h^D,a=f+(s^(s^y)&_)|0,a=(D=N+(H^(v^H)&l)|0)>>>0>>0?a+1|0:a,f=x(l,_,41)^b,a=(h^F)+a|0,a=f>>>0>(N=f+D|0)>>>0?a+1|0:a,N=(F=r[(D=b=(f=(9|o)<<3)+n|0)>>2])+N|0,a=r[D+4>>2]+a|0,a=N>>>0>>0?a+1|0:a,N=(D=r[(f=f+34784|0)>>2])+N|0,a=r[f+4>>2]+a|0,a=D>>>0>N>>>0?a+1|0:a,D=E,E=a,a=D+a|0,D=a=(f=N)>>>0>(N=f+iA|0)>>>0?a+1|0:a,r[U+16>>2]=N,r[U+20>>2]=a,a=x(AA,i,28),F=h,iA=x(AA,i,34)^a,F^=h,a=((w|Y)&i|w&Y)+E|0,a=(f=(gA=(c|z)&AA|c&z)+f|0)>>>0>>0?a+1|0:a,E=f,f=x(AA,i,39)^iA,a=(h^F)+a|0,gA=E=E+f|0,E=a=E>>>0>>0?a+1|0:a,r[U+48>>2]=gA,r[U+52>>2]=a,a=x(N,D,14),f=h,F=x(N,D,18)^a,iA=h^f,a=s+(y^(_^y)&D)|0,a=(f=H+(v^(v^l)&N)|0)>>>0>>0?a+1|0:a,s=f,f=x(N,D,41)^F,a=(h^iA)+a|0,a=f>>>0>(H=s+f|0)>>>0?a+1|0:a,H=(F=r[(s=iA=(f=(10|o)<<3)+n|0)>>2])+H|0,a=r[s+4>>2]+a|0,a=H>>>0>>0?a+1|0:a,H=(s=r[(f=f+34784|0)>>2])+H|0,a=r[f+4>>2]+a|0,a=s>>>0>H>>>0?a+1|0:a,F=H,s=w,w=a,a=s+a|0,s=a=(f=H)>>>0>(H=f+z|0)>>>0?a+1|0:a,r[U+8>>2]=H,r[U+12>>2]=a,f=U,a=x(gA,E,28),U=h,z=x(gA,E,34)^a,fA=h^U,U=(a=F)+(F=(c|AA)&gA|c&AA)|0,a=((Y|i)&E|Y&i)+w|0,a=U>>>0>>0?a+1|0:a,w=U,U=x(gA,E,39)^z,a=(h^fA)+a|0,U=a=(w=w+U|0)>>>0>>0?a+1|0:a,r[f+40>>2]=w,r[f+44>>2]=a,a=x(H,s,14),F=h,z=x(H,s,18)^a,fA=h^F,aA=c,a=y+(_^(_^D)&s)|0,a=(F=v+(l^(N^l)&H)|0)>>>0>>0?a+1|0:a,y=x(H,s,41)^z,a=(h^fA)+a|0,a=y>>>0>(v=y+F|0)>>>0?a+1|0:a,v=(c=r[(F=(y=(11|o)<<3)+n|0)>>2])+v|0,a=r[F+4>>2]+a|0,a=v>>>0>>0?a+1|0:a,v=(z=r[(y=y+34784|0)>>2])+v|0,a=r[y+4>>2]+a|0,a=v>>>0>>0?a+1|0:a,c=v,z=Y,Y=a,a=z+a|0,y=a=(y=v)>>>0>(v=aA+y|0)>>>0?a+1|0:a,r[f>>2]=v,r[f+4>>2]=a,z=f,a=x(w,U,28),f=h,fA=x(w,U,34)^a,_A=h^f,f=(a=c)+(c=(AA|gA)&w|AA&gA)|0,a=((E|i)&U|E&i)+Y|0,a=f>>>0>>0?a+1|0:a,Y=f,f=x(w,U,39)^fA,a=(h^_A)+a|0,f=a=f>>>0>(Y=Y+f|0)>>>0?a+1|0:a,r[z+32>>2]=Y,r[z+36>>2]=a,c=z,a=x(v,y,14),z=h,fA=x(v,y,18)^a,_A=h^z,aA=AA,a=_+(D^(s^D)&y)|0,a=(z=l+(N^(H^N)&v)|0)>>>0>>0?a+1|0:a,_=x(v,y,41)^fA,a=(h^_A)+a|0,a=_>>>0>(l=_+z|0)>>>0?a+1|0:a,l=(fA=r[(AA=z=(_=(12|o)<<3)+n|0)>>2])+l|0,a=r[AA+4>>2]+a|0,a=l>>>0>>0?a+1|0:a,l=(AA=r[(_=_+34784|0)>>2])+l|0,a=r[_+4>>2]+a|0,a=l>>>0>>0?a+1|0:a,AA=l,l=aA+(_=l)|0,aA=i,i=a,a=aA+a|0,fA=l,l=a=_>>>0>l>>>0?a+1|0:a,r[c+56>>2]=fA,r[c+60>>2]=a,_=c,a=x(Y,f,28),c=h,_A=x(Y,f,34)^a,aA=h^c,c=(a=AA)+(AA=(w|gA)&Y|w&gA)|0,a=((E|U)&f|E&U)+i|0,a=c>>>0>>0?a+1|0:a,i=c,c=x(Y,f,39)^_A,a=(h^aA)+a|0,AA=i=i+c|0,i=a=i>>>0>>0?a+1|0:a,r[_+24>>2]=AA,r[_+28>>2]=a,c=_,a=x(fA,l,14),_=h,_A=x(fA,l,18)^a,aA=h^_,mA=gA,a=D+(s^(s^y)&l)|0,a=(_=N+(H^(v^H)&fA)|0)>>>0>>0?a+1|0:a,D=_,_=x(fA,l,41)^_A,a=(h^aA)+a|0,a=_>>>0>(N=D+_|0)>>>0?a+1|0:a,_=(_=N)+(_A=r[(N=(D=(13|o)<<3)+n|0)>>2])|0,a=r[N+4>>2]+a|0,a=_>>>0<_A>>>0?a+1|0:a,_=(gA=r[(D=D+34784|0)>>2])+_|0,a=r[D+4>>2]+a|0,a=_>>>0>>0?a+1|0:a,gA=_,D=_,aA=E,E=a,a=aA+a|0,_A=_=mA+_|0,_=a=_>>>0>>0?a+1|0:a,r[c+48>>2]=_A,r[c+52>>2]=a,D=c,a=x(AA,i,28),c=h,aA=x(AA,i,34)^a,mA=h^c,c=(a=gA)+(gA=(w|Y)&AA|w&Y)|0,a=((f|U)&i|f&U)+E|0,a=c>>>0>>0?a+1|0:a,E=c,c=x(AA,i,39)^aA,a=(h^mA)+a|0,gA=E=E+c|0,E=a=E>>>0>>0?a+1|0:a,r[D+16>>2]=gA,r[D+20>>2]=a,a=x(_A,_,14),c=h,aA=x(_A,_,18)^a,mA=h^c,a=s+(y^(y^l)&_)|0,a=(c=H+(v^(v^fA)&_A)|0)>>>0>>0?a+1|0:a,s=x(_A,_,41)^aA,a=(h^mA)+a|0,a=s>>>0>(H=s+c|0)>>>0?a+1|0:a,s=(s=H)+(mA=r[(H=(c=(14|o)<<3)+n|0)>>2])|0,a=r[H+4>>2]+a|0,a=s>>>0>>0?a+1|0:a,s=(aA=r[(c=c+34784|0)>>2])+s|0,a=r[c+4>>2]+a|0,mA=s,c=a=s>>>0>>0?a+1|0:a,a=U+a|0,aA=s=w+s|0,w=a=s>>>0>>0?a+1|0:a,r[D+40>>2]=s,r[D+44>>2]=a,s=D,a=x(gA,E,28),U=h,D=x(gA,E,34)^a,RA=h^U,U=(a=mA)+(mA=(Y|AA)&gA|Y&AA)|0,a=((f|i)&E|f&i)+c|0,a=U>>>0>>0?a+1|0:a,D=x(gA,E,39)^D,a=(h^RA)+a|0,a=D>>>0>(U=D+U|0)>>>0?a+1|0:a,D=U,U=a,r[s+8>>2]=D,r[s+12>>2]=a,a=x(aA,w,14),s=h,mA=x(aA,w,18)^a,RA=h^s,a=y+(l^(_^l)&w)|0,a=(c=v+(fA^(fA^_A)&aA)|0)>>>0>>0?a+1|0:a,l=x(aA,w,41)^mA,a=(h^RA)+a|0,a=(w=l+c|0)>>>0>>0?a+1|0:a,w=(_=r[(y=l=(v=(15|o)<<3)+n|0)>>2])+w|0,a=r[y+4>>2]+a|0,a=w>>>0<_>>>0?a+1|0:a,w=(y=r[(v=v+34784|0)>>2])+w|0,a=r[v+4>>2]+a|0,a=w>>>0>>0?a+1|0:a,v=Y+(y=w)|0,w=a,a=f+a|0,r[(s=t)+32>>2]=v,r[s+36>>2]=v>>>0>>0?a+1|0:a,a=x(D,U,28),Y=h,f=x(D,U,34)^a,s=h^Y,a=((E|i)&U|E&i)+w|0,i=(v=(E=y)+(y=(AA|gA)&D|AA&gA)|0)+(E=x(D,U,39)^f)|0,a=(h^s)+(y>>>0>v>>>0?a+1|0:a)|0,r[(Y=t)>>2]=i,r[Y+4>>2]=E>>>0>i>>>0?a+1|0:a,(0|o)==64){for(;i=n=(o=j<<3)+e|0,o=(E=r[(a=t+o|0)>>2])+r[i>>2]|0,a=r[i+4>>2]+r[a+4>>2]|0,r[i>>2]=o,r[i+4>>2]=o>>>0>>0?a+1|0:a,(0|(j=j+1|0))!=8;);break}U=((o=o+16|0)<<3)+n|0,AA=i=r[H+4>>2],a=i>>>6|0,i=((63&i)<<26|(gA=r[H>>2])>>>6)^x(gA,i,19),a^=h,i=(f=x(gA,AA,61)^i)+(E=c=r[b>>2])|0,a=(Y=r[b+4>>2])+(h^a)|0,a=E>>>0>i>>>0?a+1|0:a,i=(w=r[(E=n+rA|0)>>2])+i|0,a=r[E+4>>2]+a|0,i=w>>>0>(f=i)>>>0?a+1|0:a,w=E=r[wA+4>>2],a=E>>>7|0,E=((127&E)<<25|(v=r[wA>>2])>>>7)^x(v,E,1),a^=h,y=f,f=x(v,w,8)^E,a=(h^a)+i|0,s=E=y+f|0,E=a=E>>>0>>0?a+1|0:a,r[U>>2]=s,r[U+4>>2]=a,a=r[(U=wA)+76>>2]+w|0,f=v,w=(v=r[U+72>>2])>>>0>(f=i=f+v|0)>>>0?a+1|0:a,i=v=r[l+4>>2],a=v>>>6|0,v=((63&v)<<26|(D=r[l>>2])>>>6)^x(D,v,19),a^=h,y=f,f=x(D,i,61)^v,a=(h^a)+w|0,w=f>>>0>(y=v=y+f|0)>>>0?a+1|0:a,v=f=r[U+12>>2],a=f>>>7|0,f=((127&f)<<25|(_=r[U+8>>2])>>>7)^x(_,f,1),a^=h,wA=y,y=x(_,v,8)^f,a=(h^a)+w|0,a=(f=wA+y|0)>>>0>>0?a+1|0:a,y=f,w=a,r[U+128>>2]=f,r[U+132>>2]=a,U=hA,f=v,a=x(s,E,19),hA=h,v=a,a=E>>>6|0,E=(E=x(s,E,61)^v^((63&E)<<26|s>>>6))+(s=wA=r[F>>2])|0,a=(v=r[F+4>>2])+(h^a^hA)|0,a=E>>>0>>0?a+1|0:a,s=E,a=a+f|0,_=E=E+_|0,E=E>>>0>>0?a+1|0:a,s=f=r[V+4>>2],a=f>>>7|0,f=((127&f)<<25|(hA=r[V>>2])>>>7)^x(hA,f,1),a^=h,aA=_,_=x(hA,s,8)^f,a=(h^a)+E|0,a=(f=aA+_|0)>>>0<_>>>0?a+1|0:a,_=f,E=a,r[U+128>>2]=f,r[U+132>>2]=a,U=(a=hA)+(hA=r[(f=V)+72>>2])|0,a=r[f+76>>2]+s|0,s=a=U>>>0>>0?a+1|0:a,a=x(y,w,19),hA=h,V=U,U=a,a=w>>>6|0,U=x(y,w,61)^U^((63&w)<<26|y>>>6),a=(h^a^hA)+s|0,hA=w=V+U|0,w=w>>>0>>0?a+1|0:a,U=s=r[f+12>>2],a=s>>>7|0,s=((127&s)<<25|(y=r[f+8>>2])>>>7)^x(y,s,1),a^=h,V=x(y,U,8)^s,a=(h^a)+w|0,a=(s=V+hA|0)>>>0>>0?a+1|0:a,V=s,w=a,r[f+128>>2]=s,r[f+132>>2]=a,f=yA,s=U,a=x(_,E,19),yA=h,aA=y,y=a,a=E>>>6|0,E=(E=x(_,E,61)^y^((63&E)<<26|_>>>6))+(y=hA=r[N>>2])|0,a=(U=r[N+4>>2])+(h^a^yA)|0,a=E>>>0>>0?a+1|0:a,y=E,a=a+s|0,yA=E=aA+E|0,E=E>>>0>>0?a+1|0:a,y=s=r[W+4>>2],a=s>>>7|0,s=((127&s)<<25|(_=r[W>>2])>>>7)^x(_,s,1),a^=h,aA=yA,yA=x(_,y,8)^s,a=(h^a)+E|0,a=(s=aA+yA|0)>>>0>>0?a+1|0:a,yA=s,E=a,r[f+128>>2]=s,r[f+132>>2]=a,f=(a=_)+(_=r[(s=W)+72>>2])|0,a=r[s+76>>2]+y|0,y=a=f>>>0<_>>>0?a+1|0:a,a=x(V,w,19),_=h,W=f,aA=a,a=(f=w)>>>6|0,f=aA^((63&f)<<26|V>>>6)^x(V,f,61),a=(h^a^_)+y|0,w=f>>>0>(_=w=W+f|0)>>>0?a+1|0:a,a=(f=y=r[s+12>>2])>>>7|0,y=((127&f)<<25|(W=r[s+8>>2])>>>7)^x(W,f,1),a^=h,V=_,_=x(W,f,8)^y,a=(h^a)+w|0,V=y=V+_|0,w=a=_>>>0>y>>>0?a+1|0:a,r[s+128>>2]=y,r[s+132>>2]=a,s=bA,y=f,a=x(yA,E,19),bA=h,f=a,a=E>>>6|0,f=x(yA,E,61)^f^((63&E)<<26|yA>>>6),a=(h^a^bA)+i|0,a=(E=f+D|0)>>>0>>0?a+1|0:a,f=E,a=a+y|0,W=E=E+W|0,E=E>>>0>>0?a+1|0:a,a=(f=_=r[O+4>>2])>>>7|0,_=((127&f)<<25|(y=r[O>>2])>>>7)^x(y,f,1),a^=h,yA=W,W=x(y,f,8)^_,a=(h^a)+E|0,E=a=(_=yA+W|0)>>>0>>0?a+1|0:a,r[s+128>>2]=_,r[s+132>>2]=a,a=r[(s=O)+76>>2]+f|0,y=(f=y=(W=r[s+72>>2])+y|0)>>>0>>0?a+1|0:a,a=x(V,w,19),W=h,yA=f,O=a,a=(f=w)>>>6|0,f=O^((63&f)<<26|V>>>6)^x(V,f,61),a=(h^a^W)+y|0,V=w=yA+f|0,w=f>>>0>w>>>0?a+1|0:a,a=(f=y=r[s+12>>2])>>>7|0,y=((127&f)<<25|(W=r[s+8>>2])>>>7)^x(W,f,1),a^=h,yA=V,V=x(W,f,8)^y,a=(h^a)+w|0,a=(y=yA+V|0)>>>0>>0?a+1|0:a,V=y,w=a,r[s+128>>2]=y,r[s+132>>2]=a,y=f,a=x(_,E,19),O=h,f=a,a=E>>>6|0,E=(E=x(_,E,61)^f^((63&E)<<26|_>>>6))+(f=r[(s=tA)+72>>2])|0,a=r[s+76>>2]+(h^a^O)|0,a=E>>>0>>0?a+1|0:a,f=E,a=a+y|0,f=a=(E=E+W|0)>>>0>>0?a+1|0:a,a=x(c,Y,1),y=h,W=E,_=a,a=(E=Y)>>>7|0,_=_^((127&E)<<25|c>>>7)^x(c,E,8),a=(h^a^y)+f|0,y=E=W+_|0,E=a=E>>>0<_>>>0?a+1|0:a,r[s+128>>2]=y,r[s+132>>2]=a,a=r[(f=b)+76>>2]+Y|0,Y=s=(_=r[f+72>>2])+c|0,s=s>>>0<_>>>0?a+1|0:a,a=x(V,w,19),_=h,c=Y,Y=a,a=w>>>6|0,Y=x(V,w,61)^Y^((63&w)<<26|V>>>6),a=(h^a^_)+s|0,w=(_=w=c+Y|0)>>>0>>0?a+1|0:a,Y=s=r[f+12>>2],a=s>>>7|0,s=((127&s)<<25|(V=r[f+8>>2])>>>7)^x(V,s,1),a^=h,c=_,_=x(V,Y,8)^s,a=(h^a)+w|0,a=(s=c+_|0)>>>0<_>>>0?a+1|0:a,_=s,w=a,r[f+128>>2]=s,r[f+132>>2]=a,s=Y,a=x(y,E,19),W=h,f=a,a=E>>>6|0,E=(E=x(y,E,61)^f^((63&E)<<26|y>>>6))+(Y=r[(f=iA)+72>>2])|0,a=r[f+76>>2]+(h^a^W)|0,a=E>>>0>>0?a+1|0:a,Y=E,a=a+s|0,Y=a=(E=E+V|0)>>>0>>0?a+1|0:a,a=x(wA,v,1),s=h,c=E,y=a,a=(E=v)>>>7|0,y=y^((127&E)<<25|wA>>>7)^x(wA,E,8),a=(h^a^s)+Y|0,s=E=c+y|0,E=a=E>>>0>>0?a+1|0:a,r[f+128>>2]=s,r[f+132>>2]=a,Y=(y=r[(f=F)+72>>2])+wA|0,a=r[f+76>>2]+v|0,v=a=y>>>0>Y>>>0?a+1|0:a,a=x(_,w,19),y=h,c=Y,Y=a,a=w>>>6|0,Y=x(_,w,61)^Y^((63&w)<<26|_>>>6),a=(h^a^y)+v|0,w=(y=w=c+Y|0)>>>0>>0?a+1|0:a,Y=v=r[f+12>>2],a=v>>>7|0,v=((127&v)<<25|(_=r[f+8>>2])>>>7)^x(_,v,1),a^=h,c=y,y=x(_,Y,8)^v,a=(h^a)+w|0,a=y>>>0>(v=c+y|0)>>>0?a+1|0:a,y=v,w=a,r[f+128>>2]=y,r[f+132>>2]=a,f=Y,a=x(s,E,19),wA=h,Y=a,a=E>>>6|0,E=(E=x(s,E,61)^Y^((63&E)<<26|s>>>6))+(Y=r[(v=z)+72>>2])|0,a=r[v+76>>2]+(h^a^wA)|0,a=E>>>0>>0?a+1|0:a,Y=E,a=a+f|0,Y=a=(E=E+_|0)>>>0>>0?a+1|0:a,a=x(hA,U,1),f=h,_=E,s=a,a=(E=U)>>>7|0,s=s^((127&E)<<25|hA>>>7)^x(hA,E,8),a=(h^a^f)+Y|0,f=E=_+s|0,E=a=E>>>0>>0?a+1|0:a,r[v+128>>2]=f,r[v+132>>2]=a,v=(s=r[(Y=N)+72>>2])+hA|0,a=r[Y+76>>2]+U|0,U=a=s>>>0>v>>>0?a+1|0:a,a=x(y,w,19),s=h,_=v,v=a,a=w>>>6|0,v=x(y,w,61)^v^((63&w)<<26|y>>>6),a=(h^a^s)+U|0,w=(s=w=_+v|0)>>>0>>0?a+1|0:a,U=v=r[Y+12>>2],a=v>>>7|0,v=((127&v)<<25|(N=r[Y+8>>2])>>>7)^x(N,v,1),a^=h,v=x(N,U,8)^v,a=(h^a)+w|0,a=v>>>0>(N=v+s|0)>>>0?a+1|0:a,v=N,w=a,r[Y+128>>2]=v,r[Y+132>>2]=a,N=(U=r[(Y=H)+72>>2])+gA|0,a=r[Y+76>>2]+AA|0,H=a=U>>>0>N>>>0?a+1|0:a,a=x(f,E,19),U=h,y=N,s=a,a=E>>>6|0,N=x(f,E,61)^s^((63&E)<<26|f>>>6),a=(h^a^U)+H|0,N=a=(E=y+N|0)>>>0>>0?a+1|0:a,a=x(D,i,1),H=h,f=E,y=a,a=(E=i)>>>7|0,E=f+(U=y^((127&E)<<25|D>>>7)^x(D,E,8))|0,a=(h^a^H)+N|0,r[Y+128>>2]=E,r[Y+132>>2]=E>>>0>>0?a+1|0:a,a=r[(E=l)+76>>2]+i|0,i=Y=(N=r[E+72>>2])+D|0,Y=Y>>>0>>0?a+1|0:a,a=x(v,w,19),N=h,f=a,a=w>>>6|0,w=x(v,w,61)^f^((63&w)<<26|v>>>6),a=(h^a^N)+Y|0,i=w>>>0>(H=i=w+i|0)>>>0?a+1|0:a,l=((127&(Y=N=r[E+12>>2]))<<25|(w=r[E+8>>2])>>>7)^x(w,Y,1),a=h^Y>>>7,l=(N=x(w,Y,8)^l)+H|0,a=(h^a)+i|0,r[E+128>>2]=l,r[E+132>>2]=N>>>0>l>>>0?a+1|0:a}}function YB(e){var t,n,o,a,f,E,s,y,_,w,D,v,Y,U,H,i,c,N,l=0,F=0,b=0,V=0,W=0,O=0,z=0,tA=0,AA=0,gA=0,aA=0,iA=0,hA=0,yA=0,fA=0,_A=0,wA=0,mA=0,bA=0,RA=0,j=0,rA=0,YA=0,SA=0,NA=0,VA=0,XA=0,g0=0,$=0,cA=0,zA=0,ZA=0,t0=0,r0=0,o0=0,E0=0,B0=0,n0=0,X=0;U=U0(e),H=u[e+2|0]|u[e+3|0]<<8|u[e+4|0]<<16|u[e+5|0]<<24,i=U0(e+5|0),c=h,r0=u[e+7|0]|u[e+8|0]<<8|u[e+9|0]<<16|u[e+10|0]<<24,o0=u[e+10|0]|u[e+11|0]<<8|u[e+12|0]<<16|u[e+13|0]<<24,N=U0(e+13|0),E0=h,fA=u[e+15|0]|u[e+16|0]<<8|u[e+17|0]<<16|u[e+18|0]<<24,$=U0(e+18|0),_A=h,gA=U0(e+21|0),O=u[e+23|0]|u[e+24|0]<<8|u[e+25|0]<<16|u[e+26|0]<<24,W=U0(e+26|0),F=h,t0=u[e+28|0]|u[e+29|0]<<8|u[e+30|0]<<16|u[e+31|0]<<24,YA=u[e+31|0]|u[e+32|0]<<8|u[e+33|0]<<16|u[e+34|0]<<24,XA=U0(e+34|0),VA=h,wA=u[e+36|0]|u[e+37|0]<<8|u[e+38|0]<<16|u[e+39|0]<<24,cA=U0(e+39|0),bA=h,tA=U0(e+42|0),V=u[e+44|0]|u[e+45|0]<<8|u[e+46|0]<<16|u[e+47|0]<<24,b=U0(e+47|0),l=2097151&((3&F)<<30|W>>>2),W=K(t=2097151&((3&(z=h))<<30|b>>>2),0,136657,0)+l|0,F=h,F=l>>>0>W>>>0?F+1|0:F,b=K(n=(u[e+49|0]|u[e+50|0]<<8|u[e+51|0]<<16|u[e+52|0]<<24)>>>7&2097151,0,-997805,-1),l=h+F|0,l=b>>>0>(W=b+W|0)>>>0?l+1|0:l,F=K(o=(u[e+52|0]|u[e+53|0]<<8|u[e+54|0]<<16|u[e+55|0]<<24)>>>4&2097151,0,654183,0),b=h+l|0,b=F>>>0>(W=F+W|0)>>>0?b+1|0:b,l=W,F=U0(e+55|0),W=l+(F=K(a=2097151&((1&(W=h))<<31|F>>>1),0,470296,0))|0,l=h+b|0,l=F>>>0>W>>>0?l+1|0:l,b=K(f=(u[e+57|0]|u[e+58|0]<<8|u[e+59|0]<<16|u[e+60|0]<<24)>>>6&2097151,0,666643,0),F=h+l|0,iA=F=b>>>0>(W=b+W|0)>>>0?F+1|0:F,b=F,AA=V>>>5&2097151,F=2097151&tA,V=K(E=(u[e+60|0]|u[e+61|0]<<8|u[e+62|0]<<16|u[e+63|0]<<24)>>>3|0,0,-683901,-1)+F|0,l=h,tA=V,hA=l=F>>>0>V>>>0?l+1|0:l,yA=(l=V)- -1048576|0,j=V=hA-((l>>>0<4293918720)-1|0)|0,l=V>>21,y=AA=(V=(2097151&V)<<11|yA>>>21)+AA|0,NA=F=V>>>0>AA>>>0?l+1|0:l,l=K(AA,F,-683901,-1),F=h+b|0,g0=z=l+W|0,aA=l>>>0>z>>>0?F+1|0:F,b=O>>>5&2097151,z=K(t,0,-997805,-1)+b|0,l=h,l=b>>>0>z>>>0?l+1|0:l,F=K(n,0,654183,0),b=h+l|0,b=F>>>0>(z=F+z|0)>>>0?b+1|0:b,l=K(o,0,470296,0),F=h+b|0,F=l>>>0>(z=l+z|0)>>>0?F+1|0:F,b=K(a,0,666643,0),l=h+F|0,b=b>>>0>(O=z=b+z|0)>>>0?l+1|0:l,l=2097151&gA,z=K(t,0,654183,0)+l|0,F=h,F=l>>>0>z>>>0?F+1|0:F,V=(l=z)+(z=K(n,0,470296,0))|0,l=h+F|0,l=V>>>0>>0?l+1|0:l,z=K(o,0,666643,0),F=h+l|0,AA=V=z+V|0,V=F=V>>>0>>0?F+1|0:F,zA=(l=AA)- -1048576|0,mA=z=F-((l>>>0<4293918720)-1|0)|0,b=(l=z>>>21|0)+b|0,gA=b=(F=(2097151&z)<<11|zA>>>21)>>>0>(O=z=F+O|0)>>>0?b+1|0:b,rA=(l=O)- -1048576|0,v=W- -1048576|0,iA=iA-((W>>>0<4293918720)-1|0)|0,F=(l=(b=RA=b-((l>>>0<4293918720)-1|0)|0)>>21)+aA|0,iA=(F=(W=(2097151&b)<<11|rA>>>21)>>>0>(RA=W+g0|0)>>>0?F+1|0:F)-(((l=-2097152&v)>>>0>(W=RA)>>>0)+(z=iA)|0)|0,B0=(l=W-l|0)-(F=-2097152&(Y=l- -1048576|0))|0,n0=iA-((l>>>0>>0)+(W=iA-((l>>>0<4293918720)-1|0)|0)|0)|0,F=K(y,NA,136657,0)+O|0,l=gA+h|0,l=F>>>0>>0?l+1|0:l,ZA=(O=F)-(F=-2097152&rA)|0,g0=l-((F>>>0>O>>>0)+b|0)|0,iA=tA-(l=-2097152&yA)|0,aA=hA-((l>>>0>tA>>>0)+j|0)|0,l=2097151&((7&bA)<<29|cA>>>3),b=K(E,0,136657,0)+l|0,F=h,F=l>>>0>b>>>0?F+1|0:F,O=(l=b)+(b=K(f,0,-683901,-1))|0,l=h+F|0,tA=O,O=b>>>0>O>>>0?l+1|0:l,l=K(a,0,-683901,-1),F=h,b=l,F=(l=wA>>>6&2097151)>>>0>(b=b+l|0)>>>0?F+1|0:F,gA=(l=K(E,0,-997805,-1))+b|0,b=h+F|0,b=l>>>0>gA>>>0?b+1|0:b,F=K(f,0,136657,0),l=h+b|0,rA=F=(yA=l=F>>>0>(gA=F+gA|0)>>>0?l+1|0:l)-(((l=gA)>>>0<4293918720)-1|0)|0,l=(2097151&F)<<11|(cA=l- -1048576|0)>>>21,F=(F>>21)+O|0,hA=F=l>>>0>(tA=l+tA|0)>>>0?F+1|0:F,RA=(l=tA)- -1048576|0,j=F=F-((l>>>0<4293918720)-1|0)|0,l=(b=F>>21)+aA|0,_=O=(F=(2097151&F)<<11|RA>>>21)+iA|0,SA=l=F>>>0>O>>>0?l+1|0:l,F=K(O,l,-683901,-1),l=h+g0|0,X=b=F+ZA|0,wA=F>>>0>b>>>0?l+1|0:l,aA=AA,l=2097151&((7&_A)<<29|$>>>3),b=K(t,0,470296,0)+l|0,F=h,F=l>>>0>b>>>0?F+1|0:F,l=K(n,0,666643,0),F=h+F|0,iA=b=l+b|0,b=l>>>0>b>>>0?F+1|0:F,O=fA>>>6&2097151,AA=K(t,0,666643,0)+O|0,l=h,_A=O=(fA=l=O>>>0>AA>>>0?l+1|0:l)-(((l=AA)>>>0<4293918720)-1|0)|0,F=(F=O>>>21|0)+b|0,bA=F=(l=(2097151&O)<<11|(ZA=l- -1048576|0)>>>21)>>>0>(O=l+iA|0)>>>0?F+1|0:F,$=F-(((l=O)>>>0<4293918720)-1|0)|0,g0=l- -1048576|0,s=tA-(l=-2097152&RA)|0,w=b=hA-((l>>>0>tA>>>0)+j|0)|0,l=((iA=$)>>>21|0)+V|0,l=(tA=(2097151&iA)<<11|g0>>>21)>>>0>(aA=tA+aA|0)>>>0?l+1|0:l,aA=(V=K(y,NA,-997805,-1))+((tA=aA)-(F=-2097152&zA)|0)|0,F=h+(l-((8191&mA)+(F>>>0>tA>>>0)|0)|0)|0,F=V>>>0>aA>>>0?F+1|0:F,l=K(_,SA,136657,0),F=h+F|0,F=l>>>0>(V=l+aA|0)>>>0?F+1|0:F,b=K(s,b,-683901,-1),l=h+F|0,hA=l=b>>>0>(V=b+V|0)>>>0?l+1|0:l,RA=(l=V)- -1048576|0,j=b=hA-((l>>>0<4293918720)-1|0)|0,F=(l=b>>21)+wA|0,aA=F=(b=(2097151&b)<<11|RA>>>21)>>>0>(tA=b+X|0)>>>0?F+1|0:F,mA=(l=b=tA)- -1048576|0,l=(l=(tA=wA=F-((l>>>0<4293918720)-1|0)|0)>>21)+n0|0,B0=wA=(F=(2097151&tA)<<11|mA>>>21)+B0|0,wA=F>>>0>wA>>>0?l+1|0:l,n0=b-(l=-2097152&mA)|0,X=aA-((l>>>0>b>>>0)+tA|0)|0,$=V-(l=-2097152&RA)|0,zA=hA-((l>>>0>V>>>0)+j|0)|0,l=K(y,NA,654183,0),b=h+(bA-((8191&iA)+((F=-2097152&g0)>>>0>O>>>0)|0)|0)|0,b=l>>>0>(V=l+(O-F|0)|0)>>>0?b+1|0:b,F=K(_,SA,-997805,-1),l=h+b|0,l=F>>>0>(V=F+V|0)>>>0?l+1|0:l,b=K(s,w,136657,0),F=h+l|0,RA=V=b+V|0,tA=b>>>0>V>>>0?F+1|0:F,mA=gA-(l=-2097152&cA)|0,bA=yA-((l>>>0>gA>>>0)+rA|0)|0,F=2097151&((1&VA)<<31|XA>>>1),V=K(o,0,-683901,-1)+F|0,l=h,l=F>>>0>V>>>0?l+1|0:l,F=K(a,0,136657,0),l=h+l|0,l=F>>>0>(b=F+V|0)>>>0?l+1|0:l,V=(F=b)+(b=K(E,0,654183,0))|0,F=h+l|0,F=b>>>0>V>>>0?F+1|0:F,l=K(f,0,-997805,-1),F=h+F|0,gA=b=l+V|0,V=l>>>0>b>>>0?F+1|0:F,l=K(n,0,-683901,-1),b=h,F=l,b=(l=YA>>>4&2097151)>>>0>(F=F+l|0)>>>0?b+1|0:b,O=(l=F)+(F=K(o,0,136657,0))|0,l=h+b|0,l=F>>>0>O>>>0?l+1|0:l,b=K(a,0,-997805,-1),F=h+l|0,F=b>>>0>(O=b+O|0)>>>0?F+1|0:F,b=K(E,0,470296,0),l=h+F|0,l=b>>>0>(O=b+O|0)>>>0?l+1|0:l,b=K(f,0,654183,0),F=h+l|0,hA=F=b>>>0>(O=b+O|0)>>>0?F+1|0:F,rA=(l=O)- -1048576|0,j=b=F-((l>>>0<4293918720)-1|0)|0,l=(l=b>>21)+V|0,V=b=(F=(2097151&b)<<11|rA>>>21)+gA|0,aA=l=F>>>0>b>>>0?l+1|0:l,iA=(l=b)- -1048576|0,gA=b=aA-((l>>>0<4293918720)-1|0)|0,F=(l=b>>21)+bA|0,D=yA=(b=(2097151&b)<<11|iA>>>21)+mA|0,YA=F=b>>>0>yA>>>0?F+1|0:F,l=K(yA,F,-683901,-1),b=h+tA|0,bA=F=l+RA|0,tA=l>>>0>F>>>0?b+1|0:b,XA=V-(l=-2097152&iA)|0,VA=gA=aA-((l>>>0>V>>>0)+gA|0)|0,b=(l=K(y,NA,470296,0))+(AA-(F=-2097152&ZA)|0)|0,F=h+(fA-((2047&_A)+(F>>>0>AA>>>0)|0)|0)|0,F=l>>>0>b>>>0?F+1|0:F,l=K(_,SA,654183,0),F=h+F|0,F=l>>>0>(b=l+b|0)>>>0?F+1|0:F,V=(l=K(s,w,-997805,-1))+b|0,b=h+F|0,b=l>>>0>V>>>0?b+1|0:b,F=K(yA,YA,136657,0),l=h+b|0,l=F>>>0>(V=F+V|0)>>>0?l+1|0:l,b=K(XA,gA,-683901,-1),F=h+l|0,aA=F=b>>>0>(V=b+V|0)>>>0?F+1|0:F,_A=(l=V)- -1048576|0,gA=b=F-((l>>>0<4293918720)-1|0)|0,l=(l=b>>21)+tA|0,tA=l=(F=(2097151&b)<<11|_A>>>21)>>>0>(b=F+bA|0)>>>0?l+1|0:l,iA=(l=b)- -1048576|0,F=(l=(AA=bA=tA-((l>>>0<4293918720)-1|0)|0)>>21)+zA|0,$=fA=(bA=(2097151&AA)<<11|iA>>>21)+$|0,bA=fA>>>0>>0?F+1|0:F,zA=b-(l=-2097152&iA)|0,cA=tA-((l>>>0>b>>>0)+AA|0)|0,RA=V-(l=-2097152&_A)|0,yA=aA-((l>>>0>V>>>0)+gA|0)|0,F=2097151&((1&E0)<<31|N>>>1),V=K(y,NA,666643,0)+F|0,l=h,l=F>>>0>V>>>0?l+1|0:l,b=K(_,SA,470296,0),F=h+l|0,F=b>>>0>(V=b+V|0)>>>0?F+1|0:F,b=K(s,w,654183,0),l=h+F|0,l=b>>>0>(V=b+V|0)>>>0?l+1|0:l,F=K(D,YA,-997805,-1),b=h+l|0,b=F>>>0>(V=F+V|0)>>>0?b+1|0:b,l=K(XA,VA,136657,0),F=h+b|0,gA=V=l+V|0,AA=l>>>0>V>>>0?F+1|0:F,tA=O-(l=-2097152&rA)|0,O=hA-((l>>>0>O>>>0)+j|0)|0,l=K(t,0,-683901,-1),F=h,b=l,F=(l=t0>>>7&2097151)>>>0>(b=b+l|0)>>>0?F+1|0:F,V=(l=K(n,0,136657,0))+b|0,b=h+F|0,b=l>>>0>V>>>0?b+1|0:b,F=K(o,0,-997805,-1),l=h+b|0,l=F>>>0>(V=F+V|0)>>>0?l+1|0:l,b=K(a,0,654183,0),F=h+l|0,F=b>>>0>(V=b+V|0)>>>0?F+1|0:F,b=K(E,0,666643,0),l=h+F|0,l=b>>>0>(V=b+V|0)>>>0?l+1|0:l,b=K(f,0,470296,0),F=h+l|0,l=F=b>>>0>(V=b+V|0)>>>0?F+1|0:F,F=z>>21,V=(z=(2097151&z)<<11|v>>>21)+(b=V)|0,b=l+F|0,j=b=V>>>0>>0?b+1|0:b,hA=(l=V)- -1048576|0,aA=b=b-((l>>>0<4293918720)-1|0)|0,l=(F=b>>21)+O|0,NA=z=(b=(2097151&b)<<11|hA>>>21)+tA|0,mA=l=b>>>0>z>>>0?l+1|0:l,l=K(z,l,-683901,-1),F=h+AA|0,AA=b=l+gA|0,z=l>>>0>b>>>0?F+1|0:F,l=K(_,SA,666643,0),b=h,F=l,b=(l=o0>>>4&2097151)>>>0>(F=F+l|0)>>>0?b+1|0:b,O=(l=F)+(F=K(s,w,470296,0))|0,l=h+b|0,l=F>>>0>O>>>0?l+1|0:l,b=K(D,YA,654183,0),F=h+l|0,F=b>>>0>(O=b+O|0)>>>0?F+1|0:F,l=K(XA,VA,-997805,-1),F=h+F|0,F=l>>>0>(b=l+O|0)>>>0?F+1|0:F,O=(l=b)+(b=K(NA,mA,136657,0))|0,l=h+F|0,gA=l=b>>>0>O>>>0?l+1|0:l,fA=(l=O)- -1048576|0,tA=b=gA-((l>>>0<4293918720)-1|0)|0,l=(F=b>>21)+z|0,b=l=(b=(2097151&b)<<11|fA>>>21)>>>0>(z=AA=b+AA|0)>>>0?l+1|0:l,_A=(l=z)- -1048576|0,l=(F=(AA=iA=b-((l>>>0<4293918720)-1|0)|0)>>21)+yA|0,ZA=rA=(iA=(2097151&AA)<<11|_A>>>21)+RA|0,iA=iA>>>0>rA>>>0?l+1|0:l,l=V-(F=-2097152&hA)|0,V=j-((F>>>0>V>>>0)+aA|0)|0,aA=l,l=(l=W>>21)+V|0,hA=l=(F=(2097151&W)<<11|Y>>>21)>>>0>(V=W=aA+F|0)>>>0?l+1|0:l,rA=(l=V)- -1048576|0,j=W=hA-((l>>>0<4293918720)-1|0)|0,yA=l=W>>21,l=K(SA=(2097151&W)<<11|rA>>>21,l,-683901,-1),F=h+b|0,F=l>>>0>(W=l+z|0)>>>0?F+1|0:F,g0=(b=W)-(l=-2097152&_A)|0,RA=F-((l>>>0>b>>>0)+AA|0)|0,F=K(SA,yA,136657,0)+O|0,l=gA+h|0,l=F>>>0>>0?l+1|0:l,t0=(b=F)-(F=-2097152&fA)|0,fA=l-((F>>>0>b>>>0)+tA|0)|0,l=K(s,w,666643,0),F=h,b=l,F=(l=r0>>>7&2097151)>>>0>(b=b+l|0)>>>0?F+1|0:F,W=(l=K(D,YA,470296,0))+b|0,b=h+F|0,b=l>>>0>W>>>0?b+1|0:b,F=K(XA,VA,654183,0),l=h+b|0,l=F>>>0>(W=F+W|0)>>>0?l+1|0:l,F=K(NA,mA,-997805,-1),l=h+l|0,tA=b=F+W|0,b=F>>>0>b>>>0?l+1|0:l,l=2097151&((3&c)<<30|i>>>2),W=K(D,YA,666643,0)+l|0,F=h,F=l>>>0>W>>>0?F+1|0:F,l=K(XA,VA,470296,0),F=h+F|0,F=l>>>0>(W=l+W|0)>>>0?F+1|0:F,z=(l=W)+(W=K(NA,mA,654183,0))|0,l=h+F|0,AA=l=W>>>0>z>>>0?l+1|0:l,_A=(l=W=z)- -1048576|0,l=(F=(O=z=AA-((l>>>0<4293918720)-1|0)|0)>>21)+b|0,gA=tA=(z=(2097151&O)<<11|_A>>>21)+tA|0,b=l=z>>>0>tA>>>0?l+1|0:l,tA=(l=tA)- -1048576|0,l=(F=(z=aA=b-((l>>>0<4293918720)-1|0)|0)>>21)+fA|0,r0=YA=(aA=(2097151&z)<<11|tA>>>21)+t0|0,aA=aA>>>0>YA>>>0?l+1|0:l,l=K(SA,yA,-997805,-1),b=h+b|0,b=l>>>0>(F=l+gA|0)>>>0?b+1|0:b,o0=F-(l=-2097152&tA)|0,E0=b-((l>>>0>F>>>0)+z|0)|0,l=K(SA,yA,654183,0)+W|0,F=AA+h|0,F=l>>>0>>0?F+1|0:F,t0=(b=l)-(l=-2097152&_A)|0,YA=F-((l>>>0>b>>>0)+O|0)|0,l=K(XA,VA,666643,0),b=h,F=l,b=(l=H>>>5&2097151)>>>0>(F=F+l|0)>>>0?b+1|0:b,W=(l=F)+(F=K(NA,mA,470296,0))|0,l=h+b|0,O=W,b=F>>>0>W>>>0?l+1|0:l,F=2097151&U,W=K(NA,mA,666643,0)+F|0,l=h,z=W,tA=W=(gA=l=F>>>0>W>>>0?l+1|0:l)-(((l=W)>>>0<4293918720)-1|0)|0,b=(F=W>>21)+b|0,AA=b=(l=(2097151&W)<<11|(fA=l- -1048576|0)>>>21)>>>0>(W=l+O|0)>>>0?b+1|0:b,_A=(l=W)- -1048576|0,O=b=b-((l>>>0<4293918720)-1|0)|0,l=(F=b>>21)+YA|0,b=l=(b=(2097151&b)<<11|_A>>>21)>>>0>(mA=b+t0|0)>>>0?l+1|0:l,l=K(SA,yA,470296,0)+W|0,F=AA+h|0,O=(F=l>>>0>>0?F+1|0:F)-(((W=-2097152&_A)>>>0>(AA=l)>>>0)+O|0)|0,AA=l=l-W|0,W=(F=K(SA,yA,666643,0))+(z-(l=-2097152&fA)|0)|0,l=h+(gA-((l>>>0>z>>>0)+tA|0)|0)|0,z=W,F=(F=(l=F>>>0>W>>>0?l+1|0:l)>>21)+O|0,VA=W=AA+(l=(2097151&l)<<11|W>>>21)|0,b=(l=(F=l>>>0>W>>>0?F+1|0:F)>>21)+b|0,O=W=(F=(2097151&F)<<11|W>>>21)+mA|0,F=(b=F>>>0>(l=W)>>>0?b+1|0:b)>>21,b=(2097151&b)<<11|l>>>21,l=F+E0|0,tA=W=b+o0|0,b=(l=b>>>0>(F=W)>>>0?l+1|0:l)>>21,l=(2097151&l)<<11|F>>>21,F=b+aA|0,aA=W=l+r0|0,l=(l=(F=l>>>0>(b=W)>>>0?F+1|0:F)>>21)+RA|0,mA=b=(F=(2097151&F)<<11|b>>>21)+g0|0,F=(F=(l=F>>>0>b>>>0?l+1|0:l)>>21)+iA|0,yA=b=(l=(2097151&l)<<11|b>>>21)+ZA|0,l=(F=l>>>0>b>>>0?F+1|0:F)>>21,F=(2097151&F)<<11|b>>>21,b=l+cA|0,fA=W=F+zA|0,F=(b=F>>>0>(l=W)>>>0?b+1|0:b)>>21,b=(2097151&b)<<11|l>>>21,l=F+bA|0,_A=W=b+$|0,b=(l=b>>>0>(F=W)>>>0?l+1|0:l)>>21,l=(2097151&l)<<11|F>>>21,F=b+X|0,bA=W=l+n0|0,l=(l=(F=l>>>0>(b=W)>>>0?F+1|0:F)>>21)+wA|0,iA=b=(F=(2097151&F)<<11|b>>>21)+B0|0,F=(l=F>>>0>b>>>0?l+1|0:l)>>21,W=(2097151&l)<<11|b>>>21,l=V-(b=-2097152&rA)|0,b=(hA-((b>>>0>V>>>0)+j|0)|0)+F|0,j=W=W+l|0,wA=(2097151&(b=l>>>0>(F=W)>>>0?b+1|0:b))<<11|F>>>21,gA=l=b>>21,F=2097151&z,b=K(wA,l,666643,0)+F|0,l=h,AA=b,W=l=F>>>0>b>>>0?l+1|0:l,p[0|e]=b,p[e+1|0]=(255&l)<<24|b>>>8,l=2097151&VA,b=K(wA,gA,470296,0)+l|0,F=h,F=l>>>0>b>>>0?F+1|0:F,z=b,V=(2097151&(b=W))<<11|AA>>>21,b=(l=b>>21)+F|0,b=V>>>0>(hA=z+V|0)>>>0?b+1|0:b,V=hA,p[e+4|0]=(2047&b)<<21|V>>>11,l=F=b,b=V,p[e+3|0]=(7&l)<<29|b>>>3,b=2097151&O,O=K(wA,gA,654183,0)+b|0,l=h,l=b>>>0>O>>>0?l+1|0:l,b=O,O=(2097151&F)<<11|V>>>21,F=(F>>21)+l|0,F=O>>>0>(hA=b+O|0)>>>0?F+1|0:F,O=hA,l=F,p[e+6|0]=(63&l)<<26|O>>>6,z=0,b=31&((65535&W)<<16|AA>>>16),F=AA=2097151&V,p[e+2|0]=b|F<<5,b=2097151&tA,V=K(wA,gA,-997805,-1)+b|0,F=h,b=F=b>>>0>V>>>0?F+1|0:F,b=(F=l>>21)+b|0,tA=V=(l=(2097151&l)<<11|O>>>21)+V|0,b=l>>>0>V>>>0?b+1|0:b,p[e+9|0]=(511&b)<<23|V>>>9,l=F=b,b=V,p[e+8|0]=(1&l)<<31|b>>>1,V=0,b=O&=2097151,p[e+5|0]=(524287&z)<<13|AA>>>19|b<<2,b=2097151&aA,z=K(wA,gA,136657,0)+b|0,l=h,l=(l=b>>>0>z>>>0?l+1|0:l)+(b=F>>21)|0,AA=z=(F=(2097151&F)<<11|tA>>>21)+z|0,l=F>>>0>z>>>0?l+1|0:l,F=z,p[e+12|0]=(4095&l)<<20|F>>>12,b=l,p[e+11|0]=(15&l)<<28|F>>>4,z=0,F=aA=2097151&tA,p[e+7|0]=(16383&V)<<18|O>>>14|F<<7,l=2097151&mA,V=K(wA,gA,-683901,-1)+l|0,F=h,F=l>>>0>V>>>0?F+1|0:F,F=(l=b>>21)+F|0,O=V=(b=(2097151&b)<<11|AA>>>21)+V|0,l=F=b>>>0>V>>>0?F+1|0:F,p[e+14|0]=(127&l)<<25|V>>>7,V=0,b=tA=2097151&AA,p[e+10|0]=(131071&z)<<15|aA>>>17|b<<4,F=l>>21,b=(l=(2097151&l)<<11|O>>>21)>>>0>(AA=l+(2097151&yA)|0)>>>0?F+1|0:F,p[e+17|0]=(1023&b)<<22|AA>>>10,l=b,b=AA,p[e+16|0]=(3&l)<<30|b>>>2,b=gA=2097151&O,p[e+13|0]=(1048575&V)<<12|tA>>>20|b<<1,b=(2097151&l)<<11|AA>>>21,l>>=21,l=b>>>0>(O=b+(2097151&fA)|0)>>>0?l+1|0:l,F=O,p[e+20|0]=(8191&l)<<19|F>>>13,p[e+19|0]=(31&l)<<27|F>>>5,F=tA=2097151&AA,p[e+15|0]=(32767&z)<<17|gA>>>15|F<<6,W=(2097151&l)<<11|O>>>21,l=F=l>>21,W=l=W>>>0>(gA=W+(2097151&_A)|0)>>>0?l+1|0:l,p[e+21|0]=gA,l=O,p[e+18|0]=(262143&V)<<14|tA>>>18|l<<3,l=W,p[e+22|0]=(255&l)<<24|gA>>>8,b=l,l>>=21,b=(O=(z=(2097151&b)<<11|gA>>>21)+(2097151&bA)|0)>>>0>>0?l+1|0:l,p[(F=e)+25|0]=(2047&b)<<21|O>>>11,l=b,b=O,p[F+24|0]=(7&l)<<29|b>>>3,b=F,z=(2097151&l)<<11|O>>>21,l>>=21,F=l=z>>>0>(V=AA=z+(2097151&iA)|0)>>>0?l+1|0:l,p[b+27|0]=(63&l)<<26|V>>>6,z=0,l=AA=2097151&O,p[b+23|0]=31&((65535&W)<<16|gA>>>16)|l<<5,F=(l=F)>>21,F=(l=(2097151&l)<<11|V>>>21)>>>0>(W=l+(2097151&j)|0)>>>0?F+1|0:F,b=W,p[e+31|0]=(131071&F)<<15|b>>>17,l=F,p[e+30|0]=(511&l)<<23|b>>>9,p[e+29|0]=(1&l)<<31|b>>>1,F=0,V&=2097151,p[e+26|0]=(524287&z)<<13|AA>>>19|V<<2,p[e+28|0]=(16383&F)<<18|V>>>14|b<<7}function Nt(e){var t,n=0,o=0,a=0,f=0,E=0,s=0,y=0,_=0,w=0,D=0,v=0,Y=0,U=0;BA=t=BA-16|0;A:{t:{g:{r:{e:{a:{B:{C:{Q:{n:{i:{o:{if((e|=0)>>>0<=244){if(3&(n=(E=r[8961])>>>(o=(_=e>>>0<11?16:e+11&-8)>>>3|0)|0)){e=(f=r[35892+(n=(a=o+(1&(-1^n))|0)<<3)>>2])+8|0,(0|(o=r[f+8>>2]))!=(0|(n=n+35884|0))?(r[o+12>>2]=n,r[n+8>>2]=o):(Y=35844,U=pt(-2,a)&E,r[Y>>2]=U),n=a<<3,r[f+4>>2]=3|n,r[4+(n=n+f|0)>>2]=1|r[n+4>>2];break A}if((D=r[8963])>>>0>=_>>>0)break o;if(n){o=e=(n=(0-(e=(0-(e=2<>>12&16,o|=e=(n=n>>>e|0)>>>5&8,o|=e=(n=n>>>e|0)>>>2&4,s=r[35892+(e=(o=((o|=e=(n=n>>>e|0)>>>1&2)|(e=(n=n>>>e|0)>>>1&1))+(n>>>e|0)|0)<<3)>>2],(0|(n=r[s+8>>2]))!=(0|(e=e+35884|0))?(r[n+12>>2]=e,r[e+8>>2]=n):(E=pt(-2,o)&E,r[8961]=E),e=s+8|0,r[s+4>>2]=3|_,f=(n=o<<3)-_|0,r[4+(a=s+_|0)>>2]=1|f,r[n+s>>2]=f,D&&(o=35884+((n=D>>>3|0)<<3)|0,s=r[8966],(n=1<>2]:(r[8961]=n|E,n=o),r[o+8>>2]=s,r[n+12>>2]=s,r[s+12>>2]=o,r[s+8>>2]=n),r[8966]=a,r[8963]=f;break A}if(!(y=r[8962]))break o;for(o=e=(n=(y&0-y)-1|0)>>>12&16,o|=e=(n=n>>>e|0)>>>5&8,o|=e=(n=n>>>e|0)>>>2&4,n=r[36148+(((o|=e=(n=n>>>e|0)>>>1&2)|(e=(n=n>>>e|0)>>>1&1))+(n>>>e|0)<<2)>>2],f=(-8&r[n+4>>2])-_|0,o=n;(e=r[o+16>>2])||(e=r[o+20>>2]);)f=(a=(o=(-8&r[e+4>>2])-_|0)>>>0>>0)?o:f,n=a?e:n,o=e;if((w=n+_|0)>>>0<=n>>>0)break i;if(v=r[n+24>>2],(0|(a=r[n+12>>2]))!=(0|n)){e=r[n+8>>2],r[e+12>>2]=a,r[a+8>>2]=e;break t}if(!(e=r[(o=n+20|0)>>2])){if(!(e=r[n+16>>2]))break n;o=n+16|0}for(;s=o,a=e,(e=r[(o=e+20|0)>>2])||(o=a+16|0,e=r[a+16>>2]););r[s>>2]=0;break t}if(_=-1,!(e>>>0>4294967231)&&(_=-8&(e=e+11|0),w=r[8962])){E=31,f=0-_|0,_>>>0<=16777215&&(e=e>>>8|0,e<<=s=e+1048320>>>16&8,E=28+((e=((e<<=o=e+520192>>>16&4)<<(n=e+245760>>>16&2)>>>15|0)-(n|o|s)|0)<<1|_>>>e+21&1)|0);E:{s:{if(o=r[36148+(E<<2)>>2])for(e=0,n=_<<((0|E)==31?0:25-(E>>>1|0)|0);;){if(!((s=(-8&r[o+4>>2])-_|0)>>>0>=f>>>0||(a=o,f=s))){f=0,e=o;break s}if(s=r[o+20>>2],o=r[16+((n>>>29&4)+o|0)>>2],e=s?(0|s)==(0|o)?e:s:e,n<<=1,!o)break}else e=0;if(!(e|a)){if(!(e=(0-(e=2<>>12&16,o|=e=(n=n>>>e|0)>>>5&8,o|=e=(n=n>>>e|0)>>>2&4,e=r[36148+(((o|=e=(n=n>>>e|0)>>>1&2)|(e=(n=n>>>e|0)>>>1&1))+(n>>>e|0)<<2)>>2]}if(!e)break E}for(;f=(o=(n=(-8&r[e+4>>2])-_|0)>>>0>>0)?n:f,a=o?e:a,e=(n=r[e+16>>2])||r[e+20>>2];);}if(!(!a|r[8963]-_>>>0<=f>>>0)){if((y=a+_|0)>>>0<=a>>>0)break i;if(E=r[a+24>>2],(0|a)!=(0|(n=r[a+12>>2]))){e=r[a+8>>2],r[e+12>>2]=n,r[n+8>>2]=e;break g}if(!(e=r[(o=a+20|0)>>2])){if(!(e=r[a+16>>2]))break Q;o=a+16|0}for(;s=o,n=e,(e=r[(o=e+20|0)>>2])||(o=n+16|0,e=r[n+16>>2]););r[s>>2]=0;break g}}}if((o=r[8963])>>>0>=_>>>0){a=r[8966],(n=o-_|0)>>>0>=16?(r[8963]=n,e=a+_|0,r[8966]=e,r[e+4>>2]=1|n,r[o+a>>2]=n,r[a+4>>2]=3|_):(r[8966]=0,r[8963]=0,r[a+4>>2]=3|o,r[4+(e=o+a|0)>>2]=1|r[e+4>>2]),e=a+8|0;break A}if((y=r[8964])>>>0>_>>>0){n=y-_|0,r[8964]=n,e=(o=r[8967])+_|0,r[8967]=e,r[e+4>>2]=1|n,r[o+4>>2]=3|_,e=o+8|0;break A}if(e=0,n=w=_+47|0,r[9079]?o=r[9081]:(r[9082]=-1,r[9083]=-1,r[9080]=4096,r[9081]=4096,r[9079]=t+12&-16^1431655768,r[9084]=0,r[9072]=0,o=4096),(o=(s=n+o|0)&(f=0-o|0))>>>0<=_>>>0||(a=r[9071])&&a>>>0<(E=(n=r[9069])+o|0)>>>0|n>>>0>=E>>>0)break A;if(4&u[36288])break a;o:{E:{if(a=r[8967])for(e=36292;;){if(a>>>0<(n=r[e>>2])+r[e+4>>2]>>>0&&n>>>0<=a>>>0)break E;if(!(e=r[e+8>>2]))break}if((0|(n=Fg(0)))==-1||(E=o,(e=(a=r[9080])-1|0)&n&&(E=(o-n|0)+(e+n&0-a)|0),E>>>0<=_>>>0|E>>>0>2147483646)||(a=r[9071])&&a>>>0<(f=(e=r[9069])+E|0)>>>0|e>>>0>=f>>>0)break B;if((0|n)!=(0|(e=Fg(E))))break o;break e}if((E=f&s-y)>>>0>2147483646)break B;if((0|(n=Fg(E)))==(r[e>>2]+r[e+4>>2]|0))break C;e=n}if(!((0|e)==-1|_+48>>>0<=E>>>0)){if((n=(n=r[9081])+(w-E|0)&0-n)>>>0>2147483646){n=e;break e}if((0|Fg(n))!=-1){E=n+E|0,n=e;break e}Fg(0-E|0);break B}if(n=e,(0|e)!=-1)break e;break B}s0()}a=0;break t}n=0;break g}if((0|n)!=-1)break e}r[9072]=4|r[9072]}if(o>>>0>2147483646||(n=Fg(o))>>>0>=(e=Fg(0))>>>0|(0|n)==-1|(0|e)==-1||(E=e-n|0)>>>0<=_+40>>>0)break r}e=r[9069]+E|0,r[9069]=e,e>>>0>OA[9070]&&(r[9070]=e);e:{a:{B:{if(s=r[8967]){for(e=36292;;){if(((a=r[e>>2])+(o=r[e+4>>2])|0)==(0|n))break B;if(!(e=r[e+8>>2]))break}break a}for((e=r[8965])>>>0<=n>>>0&&e||(r[8965]=n),e=0,r[9074]=E,r[9073]=n,r[8969]=-1,r[8970]=r[9079],r[9076]=0;o=35884+(a=e<<3)|0,r[a+35892>>2]=o,r[a+35896>>2]=o,(0|(e=e+1|0))!=32;);o=(a=E-40|0)-(e=n+8&7?-8-n&7:0)|0,r[8964]=o,e=e+n|0,r[8967]=e,r[e+4>>2]=1|o,r[4+(n+a|0)>>2]=40,r[8968]=r[9083];break e}if(!(8&u[e+12|0]|n>>>0<=s>>>0|a>>>0>s>>>0)){r[e+4>>2]=o+E,o=(e=s+8&7?-8-s&7:0)+s|0,r[8967]=o,e=(n=r[8964]+E|0)-e|0,r[8964]=e,r[o+4>>2]=1|e,r[4+(n+s|0)>>2]=40,r[8968]=r[9083];break e}}(a=r[8965])>>>0>n>>>0&&(r[8965]=n,a=0),o=n+E|0,e=36292;a:{B:{C:{Q:{n:{i:{for(;;){if((0|o)!=r[e>>2]){if(e=r[e+8>>2])continue;break i}break}if(!(8&u[e+12|0]))break n}for(e=36292;;){if((o=r[e>>2])>>>0<=s>>>0&&(f=o+r[e+4>>2]|0)>>>0>s>>>0)break Q;e=r[e+8>>2]}}if(r[e>>2]=n,r[e+4>>2]=r[e+4>>2]+E,r[4+(w=(n+8&7?-8-n&7:0)+n|0)>>2]=3|_,o=((E=o+(o+8&7?-8-o&7:0)|0)-w|0)-_|0,y=_+w|0,(0|E)==(0|s)){r[8967]=y,e=r[8964]+o|0,r[8964]=e,r[y+4>>2]=1|e;break B}if(r[8966]==(0|E)){r[8966]=y,e=r[8963]+o|0,r[8963]=e,r[y+4>>2]=1|e,r[e+y>>2]=e;break B}if((3&(e=r[E+4>>2]))==1){s=-8&e;n:if(e>>>0<=255){if(a=r[E+8>>2],e=e>>>3|0,(0|(n=r[E+12>>2]))==(0|a)){Y=35844,U=r[8961]&pt(-2,e),r[Y>>2]=U;break n}r[a+12>>2]=n,r[n+8>>2]=a}else{if(_=r[E+24>>2],(0|E)==(0|(n=r[E+12>>2])))if((f=r[(e=E+20|0)>>2])||(f=r[(e=E+16|0)>>2])){for(;a=e,(f=r[(e=(n=f)+20|0)>>2])||(e=n+16|0,f=r[n+16>>2]););r[a>>2]=0}else n=0;else e=r[E+8>>2],r[e+12>>2]=n,r[n+8>>2]=e;if(_){a=r[E+28>>2];i:{if(r[(e=36148+(a<<2)|0)>>2]==(0|E)){if(r[e>>2]=n,n)break i;Y=35848,U=r[8962]&pt(-2,a),r[Y>>2]=U;break n}if(r[_+(r[_+16>>2]==(0|E)?16:20)>>2]=n,!n)break n}r[n+24>>2]=_,(e=r[E+16>>2])&&(r[n+16>>2]=e,r[e+24>>2]=n),(e=r[E+20>>2])&&(r[n+20>>2]=e,r[e+24>>2]=n)}}E=E+s|0,o=o+s|0}if(r[E+4>>2]=-2&r[E+4>>2],r[y+4>>2]=1|o,r[o+y>>2]=o,o>>>0<=255){n=35884+((e=o>>>3|0)<<3)|0,(o=r[8961])&(e=1<>2]:(r[8961]=e|o,e=n),r[n+8>>2]=y,r[e+12>>2]=y,r[y+12>>2]=n,r[y+8>>2]=e;break B}if(e=31,o>>>0<=16777215&&(e=o>>>8|0,e<<=f=e+1048320>>>16&8,e=28+((e=((e<<=a=e+520192>>>16&4)<<(n=e+245760>>>16&2)>>>15|0)-(n|a|f)|0)<<1|o>>>e+21&1)|0),r[y+28>>2]=e,r[y+16>>2]=0,r[y+20>>2]=0,f=36148+(e<<2)|0,(a=r[8962])&(n=1<>>1|0)|0),n=r[f>>2];;){if(a=n,(-8&r[n+4>>2])==(0|o))break C;if(n=e>>>29|0,e<<=1,!(n=r[16+(f=a+(4&n)|0)>>2]))break}r[f+16>>2]=y,r[y+24>>2]=a}else r[8962]=n|a,r[f>>2]=y,r[y+24>>2]=f;r[y+12>>2]=y,r[y+8>>2]=y;break B}for(o=(a=E-40|0)-(e=n+8&7?-8-n&7:0)|0,r[8964]=o,e=e+n|0,r[8967]=e,r[e+4>>2]=1|o,r[4+(n+a|0)>>2]=40,r[8968]=r[9083],r[(o=(e=(f+(f-39&7?39-f&7:0)|0)-47|0)>>>0>>0?s:e)+4>>2]=27,e=r[9076],r[o+16>>2]=r[9075],r[o+20>>2]=e,e=r[9074],r[o+8>>2]=r[9073],r[o+12>>2]=e,r[9075]=o+8,r[9074]=E,r[9073]=n,r[9076]=0,e=o+24|0;r[e+4>>2]=7,n=e+8|0,e=e+4|0,n>>>0>>0;);if((0|o)==(0|s))break e;if(r[o+4>>2]=-2&r[o+4>>2],f=o-s|0,r[s+4>>2]=1|f,r[o>>2]=f,f>>>0<=255){n=35884+((e=f>>>3|0)<<3)|0,(o=r[8961])&(e=1<>2]:(r[8961]=e|o,e=n),r[n+8>>2]=s,r[e+12>>2]=s,r[s+12>>2]=n,r[s+8>>2]=e;break e}if(e=31,r[s+16>>2]=0,r[s+20>>2]=0,f>>>0<=16777215&&(e=f>>>8|0,e<<=a=e+1048320>>>16&8,e=28+((e=((e<<=o=e+520192>>>16&4)<<(n=e+245760>>>16&2)>>>15|0)-(n|o|a)|0)<<1|f>>>e+21&1)|0),r[s+28>>2]=e,a=36148+(e<<2)|0,(o=r[8962])&(n=1<>>1|0)|0),n=r[a>>2];;){if(o=n,(0|f)==(-8&r[n+4>>2]))break a;if(n=e>>>29|0,e<<=1,!(n=r[16+(a=o+(4&n)|0)>>2]))break}r[a+16>>2]=s,r[s+24>>2]=o}else r[8962]=n|o,r[a>>2]=s,r[s+24>>2]=a;r[s+12>>2]=s,r[s+8>>2]=s;break e}e=r[a+8>>2],r[e+12>>2]=y,r[a+8>>2]=y,r[y+24>>2]=0,r[y+12>>2]=a,r[y+8>>2]=e}e=w+8|0;break A}e=r[o+8>>2],r[e+12>>2]=s,r[o+8>>2]=s,r[s+24>>2]=0,r[s+12>>2]=o,r[s+8>>2]=e}if(!((e=r[8964])>>>0<=_>>>0)){n=e-_|0,r[8964]=n,e=(o=r[8967])+_|0,r[8967]=e,r[e+4>>2]=1|n,r[o+4>>2]=3|_,e=o+8|0;break A}}r[8960]=48,e=0;break A}g:if(E){o=r[a+28>>2];r:{if(r[(e=36148+(o<<2)|0)>>2]==(0|a)){if(r[e>>2]=n,n)break r;w=pt(-2,o)&w,r[8962]=w;break g}if(r[E+(r[E+16>>2]==(0|a)?16:20)>>2]=n,!n)break g}r[n+24>>2]=E,(e=r[a+16>>2])&&(r[n+16>>2]=e,r[e+24>>2]=n),(e=r[a+20>>2])&&(r[n+20>>2]=e,r[e+24>>2]=n)}g:if(f>>>0<=15)e=f+_|0,r[a+4>>2]=3|e,r[4+(e=e+a|0)>>2]=1|r[e+4>>2];else if(r[a+4>>2]=3|_,r[y+4>>2]=1|f,r[f+y>>2]=f,f>>>0<=255)n=35884+((e=f>>>3|0)<<3)|0,(o=r[8961])&(e=1<>2]:(r[8961]=e|o,e=n),r[n+8>>2]=y,r[e+12>>2]=y,r[y+12>>2]=n,r[y+8>>2]=e;else{e=31,f>>>0<=16777215&&(e=f>>>8|0,e<<=s=e+1048320>>>16&8,e=28+((e=((e<<=o=e+520192>>>16&4)<<(n=e+245760>>>16&2)>>>15|0)-(n|o|s)|0)<<1|f>>>e+21&1)|0),r[y+28>>2]=e,r[y+16>>2]=0,r[y+20>>2]=0,o=36148+(e<<2)|0;r:{if((n=1<>>1|0)|0),_=r[o>>2];;){if((-8&r[(n=_)+4>>2])==(0|f))break r;if(o=e>>>29|0,e<<=1,!(_=r[16+(o=n+(4&o)|0)>>2]))break}r[o+16>>2]=y,r[y+24>>2]=n}else r[8962]=n|w,r[o>>2]=y,r[y+24>>2]=o;r[y+12>>2]=y,r[y+8>>2]=y;break g}e=r[n+8>>2],r[e+12>>2]=y,r[n+8>>2]=y,r[y+24>>2]=0,r[y+12>>2]=n,r[y+8>>2]=e}e=a+8|0;break A}t:if(v){o=r[n+28>>2];g:{if(r[(e=36148+(o<<2)|0)>>2]==(0|n)){if(r[e>>2]=a,a)break g;Y=35848,U=pt(-2,o)&y,r[Y>>2]=U;break t}if(r[(r[v+16>>2]==(0|n)?16:20)+v>>2]=a,!a)break t}r[a+24>>2]=v,(e=r[n+16>>2])&&(r[a+16>>2]=e,r[e+24>>2]=a),(e=r[n+20>>2])&&(r[a+20>>2]=e,r[e+24>>2]=a)}f>>>0<=15?(e=f+_|0,r[n+4>>2]=3|e,r[4+(e=e+n|0)>>2]=1|r[e+4>>2]):(r[n+4>>2]=3|_,r[w+4>>2]=1|f,r[f+w>>2]=f,D&&(o=35884+((e=D>>>3|0)<<3)|0,a=r[8966],(e=1<>2]:(r[8961]=e|E,e=o),r[o+8>>2]=a,r[e+12>>2]=a,r[a+12>>2]=o,r[a+8>>2]=e),r[8966]=w,r[8963]=f),e=n+8|0}return BA=t+16|0,0|e}function _0(e,t,n){var o,a,f,E,s,y,_,w,D,v,Y,U,H,i,c,N,l,F,b,V,W,O,z,tA,AA,gA,aA,iA,hA,yA,fA,_A,wA,mA,bA,RA,j,rA,YA,SA,NA,VA,XA,g0,$,cA,zA,ZA,t0,r0,o0,E0,B0,n0,X=0,eA=0,CA=0,h0=0,I0=0,w0=0,d0=0,S0=0,Y0=0,T0=0,k=0,DA=0,HA=0,jA=0,A0=0,a0=0,C0=0,f0=0,G0=0,H0=0,R0=0,M0=0,x0=0,P0=0,X0=0;d0=e,o=X=x0=r[n+4>>2],D=X>>31,RA=X=(A0=r[t+20>>2])<<1,X=K(o,D,X,z=X>>31),CA=h,eA=X,a=X=r[n>>2],f=X>>31,v=X=r[t+24>>2],I0=K(a,f,X,E=X>>31),X=h+CA|0,X=(eA=eA+I0|0)>>>0>>0?X+1|0:X,CA=eA,j=eA=w0=r[n+8>>2],l=eA>>31,Y=eA=r[t+16>>2],eA=CA+(I0=K(w0,l,eA,s=eA>>31))|0,CA=h+X|0,CA=eA>>>0>>0?CA+1|0:CA,rA=X=C0=r[n+12>>2],F=X>>31,YA=X=(DA=r[t+12>>2])<<1,X=(I0=K(C0,F,X,tA=X>>31))+eA|0,eA=h+CA|0,eA=X>>>0>>0?eA+1|0:eA,CA=X,cA=X=a0=r[n+16>>2],W=X>>31,U=X=r[t+8>>2],I0=K(a0,W,X,y=X>>31),X=h+eA|0,X=(CA=CA+I0|0)>>>0>>0?X+1|0:X,h0=CA,zA=eA=T0=r[n+20>>2],AA=eA>>31,SA=eA=(Y0=r[t+4>>2])<<1,CA=K(T0,AA,eA,gA=eA>>31),X=h+X|0,X=(eA=h0+CA|0)>>>0>>0?X+1|0:X,CA=eA,ZA=eA=k=r[n+24>>2],NA=eA>>31,H=eA=r[t>>2],I0=K(k,NA,eA,_=eA>>31),eA=h+X|0,eA=(CA=CA+I0|0)>>>0>>0?eA+1|0:eA,f0=r[n+28>>2],b=X=xA(f0,19),V=X>>31,VA=X=(HA=r[t+36>>2])<<1,X=(I0=K(b,V,X,aA=X>>31))+CA|0,CA=h+eA|0,CA=X>>>0>>0?CA+1|0:CA,eA=X,jA=r[n+32>>2],G0=X=xA(jA,19),H0=X>>31,i=X=r[t+32>>2],I0=K(G0,H0,X,w=X>>31),X=h+CA|0,X=(eA=eA+I0|0)>>>0>>0?X+1|0:X,CA=eA,t0=r[n+36>>2],c=n=xA(t0,19),N=n>>31,XA=n=(t=r[t+28>>2])<<1,eA=K(c,N,n,iA=n>>31),X=h+X|0,S0=n=CA+eA|0,n=n>>>0>>0?X+1|0:X,X=K(Y,s,o,D),eA=h,A0=K(a,f,I0=A0,hA=I0>>31),CA=h+eA|0,CA=(X=A0+X|0)>>>0>>0?CA+1|0:CA,A0=DA,DA=K(w0,l,DA,yA=DA>>31),eA=h+CA|0,eA=(X=DA+X|0)>>>0>>0?eA+1|0:eA,CA=(DA=K(U,y,C0,F))+X|0,X=h+eA|0,X=CA>>>0>>0?X+1|0:X,eA=CA,DA=Y0,CA=K(a0,W,Y0,fA=Y0>>31),X=h+X|0,X=(eA=eA+CA|0)>>>0>>0?X+1|0:X,CA=K(H,_,T0,AA),X=h+X|0,X=(eA=CA+eA|0)>>>0>>0?X+1|0:X,CA=eA,_A=eA=xA(k,19),eA=CA+(HA=K(eA,O=eA>>31,Y0=HA,wA=Y0>>31))|0,CA=h+X|0,CA=eA>>>0>>0?CA+1|0:CA,X=(HA=K(i,w,b,V))+eA|0,eA=h+CA|0,eA=X>>>0>>0?eA+1|0:eA,HA=t,t=(CA=K(G0,H0,t,mA=t>>31))+X|0,X=h+eA|0,X=t>>>0>>0?X+1|0:X,eA=K(c,N,v,E),X=h+X|0,M0=t=eA+t|0,t=t>>>0>>0?X+1|0:X,X=K(o,D,YA,tA),CA=h,eA=(k=K(a,f,Y,s))+X|0,X=h+CA|0,X=eA>>>0>>0?X+1|0:X,k=K(U,y,w0,l),CA=h+X|0,CA=(eA=k+eA|0)>>>0>>0?CA+1|0:CA,X=(k=K(C0,F,SA,gA))+eA|0,eA=h+CA|0,eA=X>>>0>>0?eA+1|0:eA,CA=(k=K(H,_,a0,W))+X|0,X=h+eA|0,X=CA>>>0>>0?X+1|0:X,h0=CA,g0=eA=xA(T0,19),CA=K(eA,bA=eA>>31,VA,aA),X=h+X|0,X=(eA=h0+CA|0)>>>0>>0?X+1|0:X,CA=K(i,w,_A,O),X=h+X|0,X=(eA=CA+eA|0)>>>0>>0?X+1|0:X,T0=K(b,V,XA,iA),CA=h+X|0,CA=(eA=T0+eA|0)>>>0>>0?CA+1|0:CA,X=(T0=K(G0,H0,v,E))+eA|0,eA=h+CA|0,eA=X>>>0>>0?eA+1|0:eA,CA=(T0=K(c,N,RA,z))+X|0,X=h+eA|0,X=CA>>>0>>0?X+1|0:X,T0=CA,o0=X,k=eA=CA+33554432|0,E0=X=eA>>>0<33554432?X+1|0:X,CA=M0,M0=(67108863&X)<<6|eA>>>26,X=(X>>26)+t|0,X=(CA=CA+M0|0)>>>0>>0?X+1|0:X,B0=t=(M0=CA)+16777216|0,X=n+(eA=(CA=t>>>0<16777216?X+1|0:X)>>25)|0,X=(t=(CA=(33554431&CA)<<7|t>>>25)+S0|0)>>>0>>0?X+1|0:X,P0=t=(n=t)+33554432|0,t=X=t>>>0<33554432?X+1|0:X,X=-67108864&P0,r[d0+24>>2]=n-X,S0=d0,n=K(o,D,SA,gA),X=h,eA=K(a,f,U,y),CA=h+X|0,CA=(n=eA+n|0)>>>0>>0?CA+1|0:CA,eA=K(H,_,w0,l),X=h+CA|0,X=(n=eA+n|0)>>>0>>0?X+1|0:X,CA=n,d0=n=xA(C0,19),eA=K(n,C0=n>>31,VA,aA),X=h+X|0,X=(n=CA+eA|0)>>>0>>0?X+1|0:X,eA=n,r0=n=xA(a0,19),n=eA+(CA=K(i,w,n,$=n>>31))|0,eA=h+X|0,eA=n>>>0>>0?eA+1|0:eA,CA=K(XA,iA,g0,bA),X=h+eA|0,X=(n=CA+n|0)>>>0>>0?X+1|0:X,eA=K(v,E,_A,O),CA=h+X|0,CA=(n=eA+n|0)>>>0>>0?CA+1|0:CA,eA=K(b,V,RA,z),X=h+CA|0,X=(n=eA+n|0)>>>0>>0?X+1|0:X,eA=K(G0,H0,Y,s),X=h+X|0,X=(n=eA+n|0)>>>0>>0?X+1|0:X,CA=K(c,N,YA,tA),eA=h+X|0,h0=n=CA+n|0,n=n>>>0>>0?eA+1|0:eA,X=K(H,_,o,D),CA=h,eA=(a0=K(a,f,DA,fA))+X|0,X=h+CA|0,X=eA>>>0>>0?X+1|0:X,CA=eA,a0=eA=xA(w0,19),eA=CA+(w0=K(eA,R0=eA>>31,Y0,wA))|0,CA=h+X|0,CA=eA>>>0>>0?CA+1|0:CA,w0=K(i,w,d0,C0),X=h+CA|0,X=(eA=w0+eA|0)>>>0>>0?X+1|0:X,CA=K(r0,$,HA,mA),X=h+X|0,X=(eA=CA+eA|0)>>>0>>0?X+1|0:X,CA=(w0=K(v,E,g0,bA))+eA|0,eA=h+X|0,eA=CA>>>0>>0?eA+1|0:eA,w0=K(_A,O,I0,hA),X=h+eA|0,X=(CA=w0+CA|0)>>>0>>0?X+1|0:X,eA=(w0=K(Y,s,b,V))+CA|0,CA=h+X|0,CA=eA>>>0>>0?CA+1|0:CA,w0=K(G0,H0,A0,yA),X=h+CA|0,X=(eA=w0+eA|0)>>>0>>0?X+1|0:X,CA=K(c,N,U,y),X=h+X|0,X0=eA=CA+eA|0,w0=eA>>>0>>0?X+1|0:X,X=K(X=xA(o,19),X>>31,VA,aA),eA=h,CA=K(a,f,H,_),eA=h+eA|0,eA=(X=CA+X|0)>>>0>>0?eA+1|0:eA,CA=(x0=K(i,w,a0,R0))+X|0,X=h+eA|0,eA=(d0=K(d0,C0,XA,iA))+CA|0,CA=h+(CA>>>0>>0?X+1|0:X)|0,CA=eA>>>0>>0?CA+1|0:CA,d0=K(v,E,r0,$),X=h+CA|0,X=(eA=d0+eA|0)>>>0>>0?X+1|0:X,CA=K(RA,z,g0,bA),X=h+X|0,X=(eA=CA+eA|0)>>>0>>0?X+1|0:X,CA=(d0=K(Y,s,_A,O))+eA|0,eA=h+X|0,eA=CA>>>0>>0?eA+1|0:eA,d0=K(b,V,YA,tA),X=h+eA|0,X=(CA=d0+CA|0)>>>0>>0?X+1|0:X,eA=(d0=K(G0,H0,U,y))+CA|0,CA=h+X|0,CA=eA>>>0>>0?CA+1|0:CA,d0=K(c,N,SA,gA),X=h+CA|0,X=(eA=d0+eA|0)>>>0>>0?X+1|0:X,d0=eA,x0=X,C0=eA=eA+33554432|0,a0=X=eA>>>0<33554432?X+1|0:X,R0=(67108863&X)<<6|eA>>>26,eA=(CA=X>>26)+w0|0,w0=X=R0+X0|0,CA=h0,X=X>>>0>>0?eA+1|0:eA,n0=eA=w0+16777216|0,h0=(33554431&(X=eA>>>0<16777216?X+1|0:X))<<7|eA>>>25,X=(X>>25)+n|0,X=(eA=CA+h0|0)>>>0>>0?X+1|0:X,R0=n=eA+33554432|0,n=X=n>>>0<33554432?X+1|0:X,X=-67108864&R0,r[S0+8>>2]=eA-X,h0=S0,X=K(v,E,o,D),CA=h,eA=(S0=K(a,f,HA,mA))+X|0,X=h+CA|0,X=eA>>>0>>0?X+1|0:X,CA=K(j,l,I0,hA),X=h+X|0,X=(eA=CA+eA|0)>>>0>>0?X+1|0:X,CA=K(Y,s,rA,F),X=h+X|0,X=(eA=CA+eA|0)>>>0>>0?X+1|0:X,S0=K(cA,W,A0,yA),CA=h+X|0,CA=(eA=S0+eA|0)>>>0>>0?CA+1|0:CA,X=(S0=K(U,y,zA,AA))+eA|0,eA=h+CA|0,eA=X>>>0>>0?eA+1|0:eA,CA=(S0=K(DA,fA,ZA,NA))+X|0,X=h+eA|0,X=CA>>>0>>0?X+1|0:X,eA=CA,CA=K(H,_,S0=f0,X0=S0>>31),X=h+X|0,X=(eA=eA+CA|0)>>>0>>0?X+1|0:X,CA=K(G0,H0,Y0,wA),X=h+X|0,X=(eA=CA+eA|0)>>>0>>0?X+1|0:X,f0=K(c,N,i,w),CA=h+X|0,CA=(eA=f0+eA|0)>>>0>>0?CA+1|0:CA,X=t>>26,t=(f0=(67108863&t)<<6|P0>>>26)+eA|0,eA=X+CA|0,X=eA=t>>>0>>0?eA+1|0:eA,P0=t=(CA=t)+16777216|0,t=X=t>>>0<16777216?X+1|0:X,X=-33554432&P0,r[h0+28>>2]=CA-X,f0=h0,X=K(U,y,o,D),eA=h,h0=K(a,f,A0,yA),CA=h+eA|0,CA=(X=h0+X|0)>>>0>>0?CA+1|0:CA,h0=K(j,l,DA,fA),eA=h+CA|0,eA=(X=h0+X|0)>>>0>>0?eA+1|0:eA,CA=(h0=K(H,_,rA,F))+X|0,X=h+eA|0,X=CA>>>0>>0?X+1|0:X,eA=CA,CA=K(r0,$,Y0,wA),X=h+X|0,X=(eA=eA+CA|0)>>>0>>0?X+1|0:X,CA=K(i,w,g0,bA),X=h+X|0,X=(eA=CA+eA|0)>>>0>>0?X+1|0:X,h0=K(_A,O,HA,mA),CA=h+X|0,CA=(eA=h0+eA|0)>>>0>>0?CA+1|0:CA,X=(h0=K(v,E,b,V))+eA|0,eA=h+CA|0,eA=X>>>0>>0?eA+1|0:eA,CA=(h0=K(G0,H0,I0,hA))+X|0,X=h+eA|0,X=CA>>>0>>0?X+1|0:X,eA=CA,CA=K(c,N,Y,s),X=h+X|0,h0=eA=eA+CA|0,X=(X=eA>>>0>>0?X+1|0:X)+(eA=n>>26)|0,X=(n=h0+(CA=(67108863&n)<<6|R0>>>26)|0)>>>0>>0?X+1|0:X,G0=n=(eA=n)+16777216|0,n=CA=n>>>0<16777216?X+1|0:X,X=-33554432&G0,r[f0+12>>2]=eA-X,X=K(o,D,XA,iA),CA=h,eA=(h0=K(a,f,i,w))+X|0,X=h+CA|0,X=eA>>>0>>0?X+1|0:X,CA=K(v,E,j,l),X=h+X|0,X=(eA=CA+eA|0)>>>0>>0?X+1|0:X,h0=K(rA,F,RA,z),CA=h+X|0,CA=(eA=h0+eA|0)>>>0>>0?CA+1|0:CA,X=(h0=K(Y,s,cA,W))+eA|0,eA=h+CA|0,eA=X>>>0>>0?eA+1|0:eA,CA=(h0=K(YA,tA,zA,AA))+X|0,X=h+eA|0,X=CA>>>0>>0?X+1|0:X,eA=CA,CA=K(U,y,ZA,NA),X=h+X|0,X=(eA=eA+CA|0)>>>0>>0?X+1|0:X,CA=K(S0,X0,SA,gA),X=h+X|0,X=(eA=CA+eA|0)>>>0>>0?X+1|0:X,jA=K(H,_,h0=jA,H0=h0>>31),CA=h+X|0,CA=(eA=jA+eA|0)>>>0>>0?CA+1|0:CA,X=(jA=K(c,N,VA,aA))+eA|0,eA=h+CA|0,eA=X>>>0>>0?eA+1|0:eA,jA=X,X=(X=t>>25)+eA|0,X=(t=jA+(CA=(33554431&t)<<7|P0>>>25)|0)>>>0>>0?X+1|0:X,jA=t=(eA=t)+33554432|0,t=X=t>>>0<33554432?X+1|0:X,X=-67108864&jA,r[f0+32>>2]=eA-X,CA=eA=T0-(X=-67108864&k)|0,X=(X=o0-((X>>>0>T0>>>0)+E0|0)|0)+(eA=n>>25)|0,X=(n=CA+(T0=(33554431&n)<<7|G0>>>25)|0)>>>0>>0?X+1|0:X,(eA=n+33554432|0)>>>0<33554432&&(X=X+1|0),X=(M0-(-33554432&B0)|0)+((67108863&X)<<6|eA>>>26)|0,r[e+20>>2]=X,X=-67108864&eA,r[e+16>>2]=n-X,X=K(i,w,o,D),CA=h,eA=(Y0=K(a,f,Y0,wA))+X|0,X=h+CA|0,X=eA>>>0>>0?X+1|0:X,CA=(Y0=K(j,l,HA,mA))+eA|0,eA=h+X|0,eA=CA>>>0>>0?eA+1|0:eA,X=(Y0=K(v,E,rA,F))+CA|0,CA=h+eA|0,eA=(I0=K(cA,W,I0,hA))+X|0,X=h+(X>>>0>>0?CA+1|0:CA)|0,X=eA>>>0>>0?X+1|0:X,CA=K(Y,s,zA,AA),X=h+X|0,X=(eA=CA+eA|0)>>>0>>0?X+1|0:X,CA=K(A0,yA,ZA,NA),X=h+X|0,X=(eA=CA+eA|0)>>>0>>0?X+1|0:X,CA=(I0=K(U,y,S0,X0))+eA|0,eA=h+X|0,eA=CA>>>0>>0?eA+1|0:eA,X=(I0=K(h0,H0,DA,fA))+CA|0,CA=h+eA|0,CA=X>>>0>>0?CA+1|0:CA,eA=(I0=K(H,_,t0,t0>>31))+X|0,X=h+CA|0,n=eA,X=(X=eA>>>0>>0?X+1|0:X)+(eA=t>>26)|0,X=(t=n+(CA=(67108863&t)<<6|jA>>>26)|0)>>>0>>0?X+1|0:X,X=(t=(n=t)+16777216|0)>>>0<16777216?X+1|0:X,t=-33554432&(eA=t),r[e+36>>2]=n-t,CA=w0-(-33554432&n0)|0,I0=d0-(t=-67108864&C0)|0,A0=x0-((t>>>0>d0>>>0)+a0|0)|0,X=K((33554431&(t=X))<<7|eA>>>25,X>>=25,19,0),eA=h+A0|0,X=eA=(t=X+I0|0)>>>0>>0?eA+1|0:eA,n=((67108863&(X=(n=t+33554432|0)>>>0<33554432?X+1|0:X))<<6|(eA=n)>>>26)+CA|0,r[e+4>>2]=n,n=e,e=-67108864&eA,r[n>>2]=t-e}function k0(e,t){var n,o,a,f,E,s,y,_,w,D,v,Y,U,H,i,c,N,l,F,b,V,W,O,z,tA,AA,gA,aA,iA,hA,yA,fA,_A,wA,mA,bA,RA,j=0,rA=0,YA=0,SA=0,NA=0,VA=0,XA=0,g0=0,$=0,cA=0,zA=0,ZA=0,t0=0,r0=0,o0=0,E0=0,B0=0;VA=e,D=rA=(j=r[t+12>>2])<<1,g0=j,j=K(rA,E=rA>>31,j,z=j>>31),SA=h,rA=j,n=j=r[t+16>>2],s=j>>31,N=j=(cA=r[t+8>>2])<<1,NA=K(n,s,j,U=j>>31),j=h+SA|0,j=(rA=rA+NA|0)>>>0>>0?j+1|0:j,SA=rA,H=rA=(NA=r[t+20>>2])<<1,i=rA>>31,y=rA=(zA=r[t+4>>2])<<1,YA=K(H,i,rA,o=rA>>31),rA=h+j|0,rA=(SA=SA+YA|0)>>>0>>0?rA+1|0:rA,b=j=XA=r[t+24>>2],v=j>>31,_=j=(E0=r[t>>2])<<1,YA=K(XA,v,j,a=j>>31),j=h+rA|0,j=(SA=YA+SA|0)>>>0>>0?j+1|0:j,$=SA,rA=r[t+32>>2],c=SA=xA(rA,19),tA=rA,SA=K(SA,Y=SA>>31,rA,V=rA>>31),j=h+j|0,j=(rA=$+SA|0)>>>0>>0?j+1|0:j,$=rA,t0=r[t+36>>2],w=rA=xA(t0,38),f=rA>>31,hA=t=(SA=r[t+28>>2])<<1,YA=K(rA,f,t,AA=t>>31),t=h+j|0,r0=rA=$+YA|0,ZA=rA>>>0>>0?t+1|0:t,t=K(y,o,n,s),j=h,rA=K(N,U,g0,z),j=h+j|0,j=(t=rA+t|0)>>>0>>0?j+1|0:j,yA=NA,YA=K(NA,W=NA>>31,_,a),rA=h+j|0,rA=(t=YA+t|0)>>>0>>0?rA+1|0:rA,YA=K(c,Y,hA,AA),j=h+rA|0,j=(t=YA+t|0)>>>0>>0?j+1|0:j,rA=K(w,f,XA,v),j=h+j|0,$=t=rA+t|0,B0=t>>>0>>0?j+1|0:j,t=K(y,o,D,E),rA=h,j=(cA=K(YA=cA,l=YA>>31,YA,l))+t|0,t=h+rA|0,t=j>>>0>>0?t+1|0:t,rA=(cA=K(_,a,n,s))+j|0,j=h+t|0,j=rA>>>0>>0?j+1|0:j,O=t=xA(SA,38),cA=SA,t=(SA=K(t,F=t>>31,SA,gA=SA>>31))+rA|0,rA=h+j|0,rA=t>>>0>>0?rA+1|0:rA,t=(j=t)+(SA=K(c,Y,t=XA<<1,t>>31))|0,j=h+rA|0,j=t>>>0>>0?j+1|0:j,rA=K(w,f,H,i),j=h+j|0,aA=t=rA+t|0,wA=j=t>>>0>>0?j+1|0:j,t=j,fA=j=aA+33554432|0,mA=t=j>>>0<33554432?t+1|0:t,j=(j=t>>26)+B0|0,B0=t=(rA=(67108863&t)<<6|fA>>>26)+$|0,rA=t>>>0>>0?j+1|0:j,bA=t=t+16777216|0,j=(j=(rA=t>>>0<16777216?rA+1|0:rA)>>25)+ZA|0,j=(t=(rA=(33554431&rA)<<7|t>>>25)+r0|0)>>>0>>0?j+1|0:j,rA=t,t=j,$=j=rA+33554432|0,SA=t=j>>>0<33554432?t+1|0:t,t=-67108864&j,r[VA+24>>2]=rA-t,t=K(_,a,YA,l),j=h,zA=K(y,o,VA=zA,o0=VA>>31),rA=h+j|0,rA=(t=zA+t|0)>>>0>>0?rA+1|0:rA,j=t,zA=t=xA(XA,19),t=j+(XA=K(t,r0=t>>31,XA,v))|0,j=h+rA|0,j=t>>>0>>0?j+1|0:j,rA=(XA=K(H,i,O,F))+t|0,t=h+j|0,t=rA>>>0>>0?t+1|0:t,_A=j=n<<1,XA=K(c,Y,j,iA=j>>31),j=h+t|0,j=(rA=XA+rA|0)>>>0>>0?j+1|0:j,t=rA,rA=K(w,f,D,E),j=h+j|0,ZA=t=t+rA|0,XA=t>>>0>>0?j+1|0:j,t=K(H,i,zA,r0),j=h,VA=K(_,a,VA,o0),rA=h+j|0,rA=(t=VA+t|0)>>>0>>0?rA+1|0:rA,VA=K(n,s,O,F),j=h+rA|0,j=(t=VA+t|0)>>>0>>0?j+1|0:j,rA=(VA=K(c,Y,D,E))+t|0,t=h+j|0,t=rA>>>0>>0?t+1|0:t,VA=K(w,f,YA,l),j=h+t|0,o0=rA=VA+rA|0,VA=rA>>>0>>0?j+1|0:j,t=K(t=xA(NA,38),t>>31,NA,W),j=h,NA=t,rA=K(t=E0,rA=t>>31,t,rA),j=h+j|0,j=(t=NA+rA|0)>>>0>>0?j+1|0:j,NA=K(zA,r0,_A,iA),rA=h+j|0,rA=(t=NA+t|0)>>>0>>0?rA+1|0:rA,NA=K(D,E,O,F),j=h+rA|0,j=(t=NA+t|0)>>>0>>0?j+1|0:j,rA=(NA=K(c,Y,N,U))+t|0,t=h+j|0,t=rA>>>0>>0?t+1|0:t,NA=K(y,o,w,f),j=h+t|0,zA=rA=NA+rA|0,r0=j=rA>>>0>>0?j+1|0:j,E0=t=rA+33554432|0,RA=j=t>>>0<33554432?j+1|0:j,rA=(t=j>>26)+VA|0,VA=j=(NA=(67108863&j)<<6|E0>>>26)+o0|0,j=j>>>0>>0?rA+1|0:rA,o0=t=VA+16777216|0,NA=(33554431&(j=t>>>0<16777216?j+1|0:j))<<7|t>>>25,j=(j>>25)+XA|0,j=(rA=NA+ZA|0)>>>0>>0?j+1|0:j,XA=rA=(t=rA)+33554432|0,NA=j=rA>>>0<33554432?j+1|0:j,j=-67108864&rA,r[e+8>>2]=t-j,t=K(N,U,yA,W),j=h,rA=K(n,s,D,E),j=h+j|0,j=(t=rA+t|0)>>>0>>0?j+1|0:j,rA=K(y,o,b,v),j=h+j|0,j=(t=rA+t|0)>>>0>>0?j+1|0:j,rA=K(_,a,cA,gA),j=h+j|0,j=(t=rA+t|0)>>>0>>0?j+1|0:j,rA=(ZA=K(w,f,tA,V))+t|0,t=h+j|0,j=SA>>26,SA=($=(67108863&SA)<<6|$>>>26)+rA|0,rA=(t=rA>>>0>>0?t+1|0:t)+j|0,j=rA=SA>>>0<$>>>0?rA+1|0:rA,$=rA=(t=SA)+16777216|0,SA=j=rA>>>0<16777216?j+1|0:j,j=-33554432&rA,r[e+28>>2]=t-j,t=K(_,a,g0,z),rA=h,j=(YA=K(y,o,YA,l))+t|0,t=h+rA|0,t=j>>>0>>0?t+1|0:t,YA=K(b,v,O,F),rA=h+t|0,rA=(j=YA+j|0)>>>0>>0?rA+1|0:rA,t=(YA=K(c,Y,H,i))+j|0,j=h+rA|0,j=t>>>0>>0?j+1|0:j,rA=K(w,f,n,s),j=h+j|0,j=(j=(t=rA+t|0)>>>0>>0?j+1|0:j)+(rA=NA>>26)|0,rA=t=(NA=(67108863&NA)<<6|XA>>>26)+t|0,t=j=t>>>0>>0?j+1|0:j,XA=j=rA+16777216|0,NA=t=j>>>0<16777216?t+1|0:t,t=-33554432&j,r[e+12>>2]=rA-t,YA=e,t=K(b,v,N,U),j=h,rA=K(n,s,n,s),j=h+j|0,j=(t=rA+t|0)>>>0>>0?j+1|0:j,rA=K(D,E,H,i),j=h+j|0,j=(t=rA+t|0)>>>0>>0?j+1|0:j,rA=(g0=K(y,o,hA,AA))+t|0,t=h+j|0,t=rA>>>0>>0?t+1|0:t,j=(g0=K(_,a,tA,V))+rA|0,rA=h+t|0,rA=j>>>0>>0?rA+1|0:rA,t=(t0=K(w,f,g0=t0,ZA=g0>>31))+j|0,j=h+rA|0,j=t>>>0>>0?j+1|0:j,e=t,j=(t=SA>>25)+j|0,j=(rA=e+(SA=(33554431&SA)<<7|$>>>25)|0)>>>0>>0?j+1|0:j,t0=rA=(t=rA)+33554432|0,SA=j=rA>>>0<33554432?j+1|0:j,j=-67108864&rA,r[YA+32>>2]=t-j,j=NA>>25,rA=(NA=(33554431&NA)<<7|XA>>>25)+(aA-(t=-67108864&fA)|0)|0,t=j+(wA-((t>>>0>aA>>>0)+mA|0)|0)|0,j=t=rA>>>0>>0?t+1|0:t,NA=t=rA+33554432|0,t=((67108863&(j=t>>>0<33554432?j+1|0:j))<<6|t>>>26)+(B0=B0-(-33554432&bA)|0)|0,r[YA+20>>2]=t,t=-67108864&NA,r[YA+16>>2]=rA-t,NA=YA,t=K(D,E,b,v),rA=h,j=(YA=K(yA,W,_A,iA))+t|0,t=h+rA|0,t=j>>>0>>0?t+1|0:t,rA=(YA=K(N,U,cA,gA))+j|0,j=h+t|0,j=rA>>>0>>0?j+1|0:j,t=(YA=K(y,o,tA,V))+rA|0,rA=h+j|0,rA=t>>>0>>0?rA+1|0:rA,YA=K(_,a,g0,ZA),j=h+rA|0,rA=t=YA+t|0,j=(t=t>>>0>>0?j+1|0:j)+(j=SA>>26)|0,j=(rA=(SA=(67108863&SA)<<6|t0>>>26)+rA|0)>>>0>>0?j+1|0:j,SA=rA,t=j,t=(j=rA+16777216|0)>>>0<16777216?t+1|0:t,rA=-33554432&j,r[NA+36>>2]=SA-rA,YA=K((33554431&t)<<7|j>>>25,t>>25,19,0),j=h+(r0-(((rA=-67108864&E0)>>>0>zA>>>0)+RA|0)|0)|0,rA=t=YA+(zA-rA|0)|0,t=t>>>0>>0?j+1|0:j,t=(VA-(-33554432&o0)|0)+((67108863&(t=(j=rA+33554432|0)>>>0<33554432?t+1|0:t))<<6|j>>>26)|0,r[NA+4>>2]=t,e=-67108864&j,r[NA>>2]=rA-e}function HB(e,t,n){var o,a=0,f=0,E=0,s=0,y=0,_=0,w=0,D=0,v=0,Y=0,U=0,H=0,i=0,c=0,N=0,l=0,F=0,b=0,V=0,W=0,O=0,z=0,tA=0,AA=0,gA=0,aA=0,iA=0,hA=0,yA=0,fA=0,_A=0,wA=0,mA=0,bA=0,RA=0,j=0,rA=0,YA=0,SA=0,NA=0,VA=0,XA=0,g0=0,$=0,cA=0,zA=0,ZA=0,t0=0,r0=0,o0=0,E0=0,B0=0,n0=0;for(BA=o=BA-2048|0,mg(o+1024|0,t),Kg(o+1024|0,e),mg(o,o+1024|0),Kg(o,n),t=0;s=r[(a=Y=(o+1024|0)+(64|(e=b<<7))|0)>>2],D=r[(E=v=(o+1024|0)+(96|e)|0)>>2],E=r[E+4>>2],y=s,c=r[a+4>>2],w=D,a=e+(o+1024|0)|0,_=r[(s=(o+1024|0)+(32|e)|0)>>2],D=r[s+4>>2],w=x(w^(F=qA(r[a>>2],r[a+4>>2],_,D)),(f=E)^(E=h),32),D=x(y=(i=qA(y,c,w,f=h))^_,D^(_=h),24),wA=x((gA=qA(F,y=E,D,E=h))^w,(H=h)^f,16),E=x(D^(mA=qA(i,_,wA,hA=h)),(yA=h)^E,63),D=h,w=r[(_=(o+1024|0)+(104|e)|0)>>2],i=r[_+4>>2],z=r[(f=F=(o+1024|0)+(72|e)|0)>>2],U=r[f+4>>2],V=x((V=w)^(W=qA(l=r[(f=w=(o+1024|0)+(8|e)|0)>>2],c=r[f+4>>2],iA=r[(f=(o+1024|0)+(40|e)|0)>>2],y=r[f+4>>2])),(c=i)^(i=h),32),y=x(U=(l=qA(z,U,V,c=h))^iA,y^(iA=h),24),NA=x((fA=qA(W,U=i,y,i=h))^V,(bA=h)^c,16),i=x(y^(cA=qA(l,iA,NA,g0=h)),(zA=h)^i,63),y=h,V=r[(W=iA=(o+1024|0)+(112|e)|0)>>2],l=r[W+4>>2],aA=r[(W=(o+1024|0)+(80|e)|0)>>2],N=r[W+4>>2],z=V,V=(o+1024|0)+(16|e)|0,tA=r[(AA=c=(o+1024|0)+(48|e)|0)>>2],AA=r[AA+4>>2],z=x(z^(_A=qA(r[V>>2],r[V+4>>2],tA,AA)),(U=l)^(l=h),32),AA=x(N=(U=qA(aA,N,z,O=h))^tA,AA^(tA=h),24),r0=x((ZA=qA(_A,N=l,AA,l=h))^z,(t0=h)^O,16),l=x(AA^(VA=qA(U,tA,r0,o0=h)),(YA=h)^l,63),AA=h,z=r[(tA=(o+1024|0)+(120|e)|0)>>2],O=r[tA+4>>2],E0=r[(U=_A=(o+1024|0)+(88|e)|0)>>2],SA=r[U+4>>2],j=x((aA=z)^(XA=qA($=r[(U=z=(o+1024|0)+(24|e)|0)>>2],N=r[U+4>>2],RA=r[(e=(o+1024|0)+(56|e)|0)>>2],U=r[e+4>>2])),(N=O)^(O=h),32),U=x(N=(SA=qA(E0,SA,j,rA=h))^RA,U^(RA=h),24),aA=RA,j=x((RA=qA(XA,N=O,U,O=h))^j,(XA=h)^rA,16),O=x(U^(SA=qA(SA,aA,j,rA=h)),($=h)^O,63),U=h,aA=VA,N=YA,VA=x(j^(gA=qA(gA,H,i,y)),rA^(H=h),32),i=x((j=qA(aA,N,VA,YA=h))^i,(rA=h)^y,24),y=qA(y=gA,H,i,gA=h),H=h,r[a>>2]=y,r[a+4>>2]=H,a=x(y^VA,YA^H,16),y=h,r[tA>>2]=a,r[tA+4>>2]=y,a=qA(j,rA,a,y),y=h,r[W>>2]=a,r[W+4>>2]=y,B0=f,n0=x(a^i,y^gA,63),r[B0>>2]=n0,r[f+4>>2]=h,H=l,y=x(wA^(f=qA(fA,bA,l,AA)),hA^(i=h),32),a=x(H^(l=qA(SA,$,y,W=h)),(a=AA)^(AA=h),24),f=qA(f,H=i,a,i=h),tA=h,r[w>>2]=f,r[w+4>>2]=tA,w=x(f^y,W^tA,16),f=h,r[v>>2]=w,r[v+4>>2]=f,v=qA(l,AA,w,f),r[_A>>2]=v,w=h,r[_A+4>>2]=w,B0=c,n0=x(a^v,w^i,63),r[B0>>2]=n0,r[c+4>>2]=h,a=qA(ZA,t0,O,U),y=qA(mA,yA,f=x(NA^a,g0^(w=h),32),i=h),a=qA(a,c=w,v=x(y^O,(W=h)^U,24),w=h),l=c=h,r[V>>2]=a,r[V+4>>2]=l,a=x(a^f,i^l,16),f=h,r[_>>2]=a,r[_+4>>2]=f,a=qA(y,W,a,f),r[Y>>2]=a,f=Y,Y=h,r[f+4>>2]=Y,B0=e,n0=x(a^v,Y^w,63),r[B0>>2]=n0,r[e+4>>2]=h,f=E,a=x(r0^(Y=qA(RA,XA,E,D)),o0^(v=h),32),e=x(f^(_=qA(cA,zA,a,E=h)),(e=D)^(D=h),24),Y=qA(Y,f=v,e,v=h),f=w=h,r[z>>2]=Y,r[z+4>>2]=f,Y=x(a^Y,E^f,16),a=h,r[iA>>2]=Y,r[iA+4>>2]=a,Y=qA(_,D,Y,a),r[F>>2]=Y,a=h,r[F+4>>2]=a,B0=s,n0=x(e^Y,a^v,63),r[B0>>2]=n0,r[s+4>>2]=h,(0|(b=b+1|0))!=8;);for(;b=r[768+(e=(v=t<<4)+(o+1024|0)|0)>>2],Y=r[e+772>>2],y=r[(a=e+512|0)>>2],w=r[a+4>>2],f=b,b=r[e+256>>2],a=r[e+260>>2],E=x(f^(s=qA(r[e>>2],r[e+4>>2],b,a)),(E=Y)^(Y=h),32),a=x(f=(_=qA(y,w,E,D=h))^b,a^(b=h),24),c=b,i=x((w=qA(s,Y,a,b=h))^E,(f=h)^D,16),b=x(a^(iA=qA(_,c,i,y=h)),(W=h)^b,63),Y=h,a=r[e+780>>2],l=r[e+520>>2],H=r[e+524>>2],_=x((V=r[e+776>>2])^(D=qA(c=r[(s=v=(o+1024|0)+(8|v)|0)>>2],D=r[s+4>>2],s=r[e+264>>2],E=r[e+268>>2])),(c=a)^(a=h),32),E=x(c=(V=qA(l,H,_,F=h))^s,E^(s=h),24),H=V,l=x((V=qA(D,c=a,E,a=h))^_,(c=h)^F,16),a=x(E^(tA=qA(H,s,l,AA=h)),(_A=h)^a,63),s=h,E=r[e+900>>2],N=r[e+640>>2],gA=r[e+644>>2],U=r[e+896>>2],D=r[e+384>>2],_=r[e+388>>2],z=x(U^(F=qA(r[e+128>>2],r[e+132>>2],D,_)),(H=E)^(E=h),32),_=x(H=(U=qA(N,gA,z,O=h))^D,_^(D=h),24),N=U,U=x((U=z)^(z=qA(F,H=E,_,E=h)),(H=O)^(O=h),16),E=x(_^(H=qA(N,D,U,gA=h)),(wA=h)^E,63),D=h,_=r[e+908>>2],YA=r[e+648>>2],g0=r[e+652>>2],aA=r[e+904>>2],F=r[e+392>>2],hA=r[e+396>>2],yA=x(aA^(mA=qA(r[e+136>>2],r[e+140>>2],F,hA)),(N=_)^(_=h),32),aA=hA=x(N=(bA=qA(YA,g0,yA,fA=h))^F,hA^(F=h),24),yA=x((hA=qA(mA,N=_,hA,_=h))^yA,(mA=h)^fA,16),_=x(aA^(bA=qA(bA,F,yA,fA=h)),(NA=h)^_,63),F=h,aA=H,N=wA,H=x(yA^(w=qA(w,f,a,s)),fA^(f=h),32),a=x((yA=qA(aA,N,H,wA=h))^a,(fA=h)^s,24),s=qA(s=w,f,a,w=h),f=h,r[e>>2]=s,r[e+4>>2]=f,s=x(s^H,wA^f,16),f=h,r[e+904>>2]=s,r[e+908>>2]=f,s=qA(yA,fA,s,f),f=h,r[e+640>>2]=s,r[e+644>>2]=f,B0=e,n0=x(a^s,w^f,63),r[B0+264>>2]=n0,r[e+268>>2]=h,H=E,s=qA(V,c,E,D),i=qA(bA,NA,w=x(i^s,y^(E=h),32),f=h),s=qA(s,y=E,a=x(H^i,(a=D)^(D=h),24),E=h),y=h,r[v>>2]=s,r[v+4>>2]=y,v=x(s^w,f^y,16),s=h,r[e+768>>2]=v,r[e+772>>2]=s,v=qA(i,D,v,s),r[e+648>>2]=v,s=h,r[e+652>>2]=s,B0=e,n0=x(a^v,s^E,63),r[B0+384>>2]=n0,r[e+388>>2]=h,w=_,E=x(l^(a=qA(z,O,_,F)),AA^(s=h),32),v=x(w^(_=qA(iA,W,E,D=h)),(f=F)^(F=h),24),a=qA(a,f=s,v,s=h),f=w=h,r[e+128>>2]=a,r[e+132>>2]=f,a=x(a^E,f^D,16),E=h,r[e+776>>2]=a,r[e+780>>2]=E,a=qA(_,F,a,E),r[e+512>>2]=a,E=h,r[e+516>>2]=E,B0=e,n0=x(a^v,s^E,63),r[B0+392>>2]=n0,r[e+396>>2]=h,v=qA(hA,mA,b,Y),D=qA(tA,_A,s=x(U^v,gA^(a=h),32),E=h),Y=qA(f=v,a,b=x(D^b,(_=h)^Y,24),v=h),a=h,r[e+136>>2]=Y,r[e+140>>2]=a,Y=x(s^Y,E^a,16),a=h,r[e+896>>2]=Y,r[e+900>>2]=a,Y=qA(D,_,Y,a),r[e+520>>2]=Y,a=h,r[e+524>>2]=a,B0=e,n0=x(Y^b,a^v,63),r[B0+256>>2]=n0,r[e+260>>2]=h,(0|(t=t+1|0))!=8;);mg(n,o),Kg(n,o+1024|0),BA=o+2048|0}function _n(e,t,n){var o,a=0,f=0,E=0,s=0,y=0,_=0,w=0,D=0,v=0,Y=0,U=0,H=0,i=0,c=0,N=0,l=0,F=0,b=0,V=0,W=0,O=0,z=0,tA=0,AA=0,gA=0,aA=0,iA=0,hA=0,yA=0,fA=0,_A=0,wA=0,mA=0,bA=0,RA=0,j=0,rA=0,YA=0,SA=0,NA=0,VA=0,XA=0,g0=0,$=0,cA=0,zA=0,ZA=0,t0=0,r0=0,o0=0,E0=0,B0=0,n0=0;for(BA=o=BA-2048|0,mg(o+1024|0,t),Kg(o+1024|0,e),mg(o,o+1024|0),t=0;s=r[(a=Y=(o+1024|0)+(64|(e=b<<7))|0)>>2],D=r[(E=v=(o+1024|0)+(96|e)|0)>>2],E=r[E+4>>2],y=s,c=r[a+4>>2],w=D,a=e+(o+1024|0)|0,_=r[(s=(o+1024|0)+(32|e)|0)>>2],D=r[s+4>>2],w=x(w^(F=qA(r[a>>2],r[a+4>>2],_,D)),(f=E)^(E=h),32),D=x(y=(i=qA(y,c,w,f=h))^_,D^(_=h),24),wA=x((gA=qA(F,y=E,D,E=h))^w,(H=h)^f,16),E=x(D^(mA=qA(i,_,wA,hA=h)),(yA=h)^E,63),D=h,w=r[(_=(o+1024|0)+(104|e)|0)>>2],i=r[_+4>>2],z=r[(f=F=(o+1024|0)+(72|e)|0)>>2],U=r[f+4>>2],V=x((V=w)^(W=qA(l=r[(f=w=(o+1024|0)+(8|e)|0)>>2],c=r[f+4>>2],iA=r[(f=(o+1024|0)+(40|e)|0)>>2],y=r[f+4>>2])),(c=i)^(i=h),32),y=x(U=(l=qA(z,U,V,c=h))^iA,y^(iA=h),24),NA=x((fA=qA(W,U=i,y,i=h))^V,(bA=h)^c,16),i=x(y^(cA=qA(l,iA,NA,g0=h)),(zA=h)^i,63),y=h,V=r[(W=iA=(o+1024|0)+(112|e)|0)>>2],l=r[W+4>>2],aA=r[(W=(o+1024|0)+(80|e)|0)>>2],N=r[W+4>>2],z=V,V=(o+1024|0)+(16|e)|0,tA=r[(AA=c=(o+1024|0)+(48|e)|0)>>2],AA=r[AA+4>>2],z=x(z^(_A=qA(r[V>>2],r[V+4>>2],tA,AA)),(U=l)^(l=h),32),AA=x(N=(U=qA(aA,N,z,O=h))^tA,AA^(tA=h),24),r0=x((ZA=qA(_A,N=l,AA,l=h))^z,(t0=h)^O,16),l=x(AA^(VA=qA(U,tA,r0,o0=h)),(YA=h)^l,63),AA=h,z=r[(tA=(o+1024|0)+(120|e)|0)>>2],O=r[tA+4>>2],E0=r[(U=_A=(o+1024|0)+(88|e)|0)>>2],SA=r[U+4>>2],j=x((aA=z)^(XA=qA($=r[(U=z=(o+1024|0)+(24|e)|0)>>2],N=r[U+4>>2],RA=r[(e=(o+1024|0)+(56|e)|0)>>2],U=r[e+4>>2])),(N=O)^(O=h),32),U=x(N=(SA=qA(E0,SA,j,rA=h))^RA,U^(RA=h),24),aA=RA,j=x((RA=qA(XA,N=O,U,O=h))^j,(XA=h)^rA,16),O=x(U^(SA=qA(SA,aA,j,rA=h)),($=h)^O,63),U=h,aA=VA,N=YA,VA=x(j^(gA=qA(gA,H,i,y)),rA^(H=h),32),i=x((j=qA(aA,N,VA,YA=h))^i,(rA=h)^y,24),y=qA(y=gA,H,i,gA=h),H=h,r[a>>2]=y,r[a+4>>2]=H,a=x(y^VA,YA^H,16),y=h,r[tA>>2]=a,r[tA+4>>2]=y,a=qA(j,rA,a,y),y=h,r[W>>2]=a,r[W+4>>2]=y,B0=f,n0=x(a^i,y^gA,63),r[B0>>2]=n0,r[f+4>>2]=h,H=l,y=x(wA^(f=qA(fA,bA,l,AA)),hA^(i=h),32),a=x(H^(l=qA(SA,$,y,W=h)),(a=AA)^(AA=h),24),f=qA(f,H=i,a,i=h),tA=h,r[w>>2]=f,r[w+4>>2]=tA,w=x(f^y,W^tA,16),f=h,r[v>>2]=w,r[v+4>>2]=f,v=qA(l,AA,w,f),r[_A>>2]=v,w=h,r[_A+4>>2]=w,B0=c,n0=x(a^v,w^i,63),r[B0>>2]=n0,r[c+4>>2]=h,a=qA(ZA,t0,O,U),y=qA(mA,yA,f=x(NA^a,g0^(w=h),32),i=h),a=qA(a,c=w,v=x(y^O,(W=h)^U,24),w=h),l=c=h,r[V>>2]=a,r[V+4>>2]=l,a=x(a^f,i^l,16),f=h,r[_>>2]=a,r[_+4>>2]=f,a=qA(y,W,a,f),r[Y>>2]=a,f=Y,Y=h,r[f+4>>2]=Y,B0=e,n0=x(a^v,Y^w,63),r[B0>>2]=n0,r[e+4>>2]=h,f=E,a=x(r0^(Y=qA(RA,XA,E,D)),o0^(v=h),32),e=x(f^(_=qA(cA,zA,a,E=h)),(e=D)^(D=h),24),Y=qA(Y,f=v,e,v=h),f=w=h,r[z>>2]=Y,r[z+4>>2]=f,Y=x(a^Y,E^f,16),a=h,r[iA>>2]=Y,r[iA+4>>2]=a,Y=qA(_,D,Y,a),r[F>>2]=Y,a=h,r[F+4>>2]=a,B0=s,n0=x(e^Y,a^v,63),r[B0>>2]=n0,r[s+4>>2]=h,(0|(b=b+1|0))!=8;);for(;b=r[768+(e=(v=t<<4)+(o+1024|0)|0)>>2],Y=r[e+772>>2],y=r[(a=e+512|0)>>2],w=r[a+4>>2],f=b,b=r[e+256>>2],a=r[e+260>>2],E=x(f^(s=qA(r[e>>2],r[e+4>>2],b,a)),(E=Y)^(Y=h),32),a=x(f=(_=qA(y,w,E,D=h))^b,a^(b=h),24),c=b,i=x((w=qA(s,Y,a,b=h))^E,(f=h)^D,16),b=x(a^(iA=qA(_,c,i,y=h)),(W=h)^b,63),Y=h,a=r[e+780>>2],l=r[e+520>>2],H=r[e+524>>2],_=x((V=r[e+776>>2])^(D=qA(c=r[(s=v=(o+1024|0)+(8|v)|0)>>2],D=r[s+4>>2],s=r[e+264>>2],E=r[e+268>>2])),(c=a)^(a=h),32),E=x(c=(V=qA(l,H,_,F=h))^s,E^(s=h),24),H=V,l=x((V=qA(D,c=a,E,a=h))^_,(c=h)^F,16),a=x(E^(tA=qA(H,s,l,AA=h)),(_A=h)^a,63),s=h,E=r[e+900>>2],N=r[e+640>>2],gA=r[e+644>>2],U=r[e+896>>2],D=r[e+384>>2],_=r[e+388>>2],z=x(U^(F=qA(r[e+128>>2],r[e+132>>2],D,_)),(H=E)^(E=h),32),_=x(H=(U=qA(N,gA,z,O=h))^D,_^(D=h),24),N=U,U=x((U=z)^(z=qA(F,H=E,_,E=h)),(H=O)^(O=h),16),E=x(_^(H=qA(N,D,U,gA=h)),(wA=h)^E,63),D=h,_=r[e+908>>2],YA=r[e+648>>2],g0=r[e+652>>2],aA=r[e+904>>2],F=r[e+392>>2],hA=r[e+396>>2],yA=x(aA^(mA=qA(r[e+136>>2],r[e+140>>2],F,hA)),(N=_)^(_=h),32),aA=hA=x(N=(bA=qA(YA,g0,yA,fA=h))^F,hA^(F=h),24),yA=x((hA=qA(mA,N=_,hA,_=h))^yA,(mA=h)^fA,16),_=x(aA^(bA=qA(bA,F,yA,fA=h)),(NA=h)^_,63),F=h,aA=H,N=wA,H=x(yA^(w=qA(w,f,a,s)),fA^(f=h),32),a=x((yA=qA(aA,N,H,wA=h))^a,(fA=h)^s,24),s=qA(s=w,f,a,w=h),f=h,r[e>>2]=s,r[e+4>>2]=f,s=x(s^H,wA^f,16),f=h,r[e+904>>2]=s,r[e+908>>2]=f,s=qA(yA,fA,s,f),f=h,r[e+640>>2]=s,r[e+644>>2]=f,B0=e,n0=x(a^s,w^f,63),r[B0+264>>2]=n0,r[e+268>>2]=h,H=E,s=qA(V,c,E,D),i=qA(bA,NA,w=x(i^s,y^(E=h),32),f=h),s=qA(s,y=E,a=x(H^i,(a=D)^(D=h),24),E=h),y=h,r[v>>2]=s,r[v+4>>2]=y,v=x(s^w,f^y,16),s=h,r[e+768>>2]=v,r[e+772>>2]=s,v=qA(i,D,v,s),r[e+648>>2]=v,s=h,r[e+652>>2]=s,B0=e,n0=x(a^v,s^E,63),r[B0+384>>2]=n0,r[e+388>>2]=h,w=_,E=x(l^(a=qA(z,O,_,F)),AA^(s=h),32),v=x(w^(_=qA(iA,W,E,D=h)),(f=F)^(F=h),24),a=qA(a,f=s,v,s=h),f=w=h,r[e+128>>2]=a,r[e+132>>2]=f,a=x(a^E,f^D,16),E=h,r[e+776>>2]=a,r[e+780>>2]=E,a=qA(_,F,a,E),r[e+512>>2]=a,E=h,r[e+516>>2]=E,B0=e,n0=x(a^v,s^E,63),r[B0+392>>2]=n0,r[e+396>>2]=h,v=qA(hA,mA,b,Y),D=qA(tA,_A,s=x(U^v,gA^(a=h),32),E=h),Y=qA(f=v,a,b=x(D^b,(_=h)^Y,24),v=h),a=h,r[e+136>>2]=Y,r[e+140>>2]=a,Y=x(s^Y,E^a,16),a=h,r[e+896>>2]=Y,r[e+900>>2]=a,Y=qA(D,_,Y,a),r[e+520>>2]=Y,a=h,r[e+524>>2]=a,B0=e,n0=x(Y^b,a^v,63),r[B0+256>>2]=n0,r[e+260>>2]=h,(0|(t=t+1|0))!=8;);mg(n,o),Kg(n,o+1024|0),BA=o+2048|0}function ot(e){var t=0,n=0,o=0,a=0,f=0,E=0,s=0,y=0,_=0;A:if(e|=0){f=(o=e-8|0)+(e=-8&(t=r[e-4>>2]))|0;t:if(!(1&t)){if(!(3&t)||(o=o-(t=r[o>>2])|0)>>>0>2]))==3)return r[8963]=e,r[f+4>>2]=-2&t,r[o+4>>2]=1|e,void(r[e+o>>2]=e)}else{if(t>>>0<=255){if(a=r[o+8>>2],t=t>>>3|0,(0|(n=r[o+12>>2]))==(0|a)){y=35844,_=r[8961]&pt(-2,t),r[y>>2]=_;break t}r[a+12>>2]=n,r[n+8>>2]=a;break t}if(s=r[o+24>>2],(0|o)==(0|(t=r[o+12>>2])))if((n=r[(a=o+20|0)>>2])||(n=r[(a=o+16|0)>>2])){for(;E=a,(n=r[(a=(t=n)+20|0)>>2])||(a=t+16|0,n=r[t+16>>2]););r[E>>2]=0}else t=0;else n=r[o+8>>2],r[n+12>>2]=t,r[t+8>>2]=n;if(!s)break t;a=r[o+28>>2];g:{if(r[(n=36148+(a<<2)|0)>>2]==(0|o)){if(r[n>>2]=t,t)break g;y=35848,_=r[8962]&pt(-2,a),r[y>>2]=_;break t}if(r[s+(r[s+16>>2]==(0|o)?16:20)>>2]=t,!t)break t}if(r[t+24>>2]=s,(n=r[o+16>>2])&&(r[t+16>>2]=n,r[n+24>>2]=t),!(n=r[o+20>>2]))break t;r[t+20>>2]=n,r[n+24>>2]=t}}if(!(o>>>0>=f>>>0)&&1&(t=r[f+4>>2])){t:{if(!(2&t)){if(r[8967]==(0|f)){if(r[8967]=o,e=r[8964]+e|0,r[8964]=e,r[o+4>>2]=1|e,r[8966]!=(0|o))break A;return r[8963]=0,void(r[8966]=0)}if(r[8966]==(0|f))return r[8966]=o,e=r[8963]+e|0,r[8963]=e,r[o+4>>2]=1|e,void(r[e+o>>2]=e);e=(-8&t)+e|0;g:if(t>>>0<=255){if(t=t>>>3|0,(0|(n=r[f+8>>2]))==(0|(a=r[f+12>>2]))){y=35844,_=r[8961]&pt(-2,t),r[y>>2]=_;break g}r[n+12>>2]=a,r[a+8>>2]=n}else{if(s=r[f+24>>2],(0|f)==(0|(t=r[f+12>>2])))if((n=r[(a=f+20|0)>>2])||(n=r[(a=f+16|0)>>2])){for(;E=a,(n=r[(a=(t=n)+20|0)>>2])||(a=t+16|0,n=r[t+16>>2]););r[E>>2]=0}else t=0;else n=r[f+8>>2],r[n+12>>2]=t,r[t+8>>2]=n;if(s){a=r[f+28>>2];r:{if(r[(n=36148+(a<<2)|0)>>2]==(0|f)){if(r[n>>2]=t,t)break r;y=35848,_=r[8962]&pt(-2,a),r[y>>2]=_;break g}if(r[s+(r[s+16>>2]==(0|f)?16:20)>>2]=t,!t)break g}r[t+24>>2]=s,(n=r[f+16>>2])&&(r[t+16>>2]=n,r[n+24>>2]=t),(n=r[f+20>>2])&&(r[t+20>>2]=n,r[n+24>>2]=t)}}if(r[o+4>>2]=1|e,r[e+o>>2]=e,r[8966]!=(0|o))break t;return void(r[8963]=e)}r[f+4>>2]=-2&t,r[o+4>>2]=1|e,r[e+o>>2]=e}if(e>>>0<=255)return t=35884+((e=e>>>3|0)<<3)|0,(n=r[8961])&(e=1<>2]:(r[8961]=e|n,e=t),r[t+8>>2]=o,r[e+12>>2]=o,r[o+12>>2]=t,void(r[o+8>>2]=e);a=31,r[o+16>>2]=0,r[o+20>>2]=0,e>>>0<=16777215&&(t=e>>>8|0,t<<=E=t+1048320>>>16&8,a=28+((t=((t<<=a=t+520192>>>16&4)<<(n=t+245760>>>16&2)>>>15|0)-(n|a|E)|0)<<1|e>>>t+21&1)|0),r[o+28>>2]=a,E=36148+(a<<2)|0;t:{g:{if((n=r[8962])&(t=1<>>1|0)|0),t=r[E>>2];;){if(n=t,(-8&r[t+4>>2])==(0|e))break g;if(t=a>>>29|0,a<<=1,!(t=r[16+(E=n+(4&t)|0)>>2]))break}r[E+16>>2]=o,r[o+24>>2]=n}else r[8962]=t|n,r[E>>2]=o,r[o+24>>2]=E;r[o+12>>2]=o,r[o+8>>2]=o;break t}e=r[n+8>>2],r[e+12>>2]=o,r[n+8>>2]=o,r[o+24>>2]=0,r[o+12>>2]=n,r[o+8>>2]=e}e=r[8969]-1|0,r[8969]=e||-1}}}function ca(e,t){var n,o=0,a=0,f=0,E=0,s=0,y=0,_=0;n=e+t|0;A:{t:if(!(1&(o=r[e+4>>2]))){if(!(3&o))break A;if(t=(o=r[e>>2])+t|0,(0|(e=e-o|0))==r[8966]){if((3&(o=r[n+4>>2]))==3)return r[8963]=t,r[n+4>>2]=-2&o,r[e+4>>2]=1|t,void(r[n>>2]=t)}else{if(o>>>0<=255){if(f=r[e+8>>2],o=o>>>3|0,(0|(a=r[e+12>>2]))==(0|f)){y=35844,_=r[8961]&pt(-2,o),r[y>>2]=_;break t}r[f+12>>2]=a,r[a+8>>2]=f;break t}if(s=r[e+24>>2],(0|(o=r[e+12>>2]))==(0|e))if((a=r[(f=e+20|0)>>2])||(a=r[(f=e+16|0)>>2])){for(;E=f,(a=r[(f=(o=a)+20|0)>>2])||(f=o+16|0,a=r[o+16>>2]););r[E>>2]=0}else o=0;else a=r[e+8>>2],r[a+12>>2]=o,r[o+8>>2]=a;if(!s)break t;f=r[e+28>>2];g:{if(r[(a=36148+(f<<2)|0)>>2]==(0|e)){if(r[a>>2]=o,o)break g;y=35848,_=r[8962]&pt(-2,f),r[y>>2]=_;break t}if(r[s+(r[s+16>>2]==(0|e)?16:20)>>2]=o,!o)break t}if(r[o+24>>2]=s,(a=r[e+16>>2])&&(r[o+16>>2]=a,r[a+24>>2]=o),!(a=r[e+20>>2]))break t;r[o+20>>2]=a,r[a+24>>2]=o}}t:{if(!(2&(o=r[n+4>>2]))){if(r[8967]==(0|n)){if(r[8967]=e,t=r[8964]+t|0,r[8964]=t,r[e+4>>2]=1|t,r[8966]!=(0|e))break A;return r[8963]=0,void(r[8966]=0)}if(r[8966]==(0|n))return r[8966]=e,t=r[8963]+t|0,r[8963]=t,r[e+4>>2]=1|t,void(r[e+t>>2]=t);t=(-8&o)+t|0;g:if(o>>>0<=255){if(f=r[n+8>>2],o=o>>>3|0,(0|(a=r[n+12>>2]))==(0|f)){y=35844,_=r[8961]&pt(-2,o),r[y>>2]=_;break g}r[f+12>>2]=a,r[a+8>>2]=f}else{if(s=r[n+24>>2],(0|n)==(0|(o=r[n+12>>2])))if((f=r[(a=n+20|0)>>2])||(f=r[(a=n+16|0)>>2])){for(;E=a,(f=r[(a=(o=f)+20|0)>>2])||(a=o+16|0,f=r[o+16>>2]););r[E>>2]=0}else o=0;else a=r[n+8>>2],r[a+12>>2]=o,r[o+8>>2]=a;if(s){f=r[n+28>>2];r:{if(r[(a=36148+(f<<2)|0)>>2]==(0|n)){if(r[a>>2]=o,o)break r;y=35848,_=r[8962]&pt(-2,f),r[y>>2]=_;break g}if(r[s+(r[s+16>>2]==(0|n)?16:20)>>2]=o,!o)break g}r[o+24>>2]=s,(a=r[n+16>>2])&&(r[o+16>>2]=a,r[a+24>>2]=o),(a=r[n+20>>2])&&(r[o+20>>2]=a,r[a+24>>2]=o)}}if(r[e+4>>2]=1|t,r[e+t>>2]=t,r[8966]!=(0|e))break t;return void(r[8963]=t)}r[n+4>>2]=-2&o,r[e+4>>2]=1|t,r[e+t>>2]=t}if(t>>>0<=255)return o=35884+((t=t>>>3|0)<<3)|0,(a=r[8961])&(t=1<>2]:(r[8961]=t|a,t=o),r[o+8>>2]=e,r[t+12>>2]=e,r[e+12>>2]=o,void(r[e+8>>2]=t);f=31,r[e+16>>2]=0,r[e+20>>2]=0,t>>>0<=16777215&&(o=t>>>8|0,o<<=E=o+1048320>>>16&8,f=28+((o=((o<<=f=o+520192>>>16&4)<<(a=o+245760>>>16&2)>>>15|0)-(a|f|E)|0)<<1|t>>>o+21&1)|0),r[e+28>>2]=f,E=36148+(f<<2)|0;t:{if((a=r[8962])&(o=1<>>1|0)|0),o=r[E>>2];;){if(a=o,(-8&r[o+4>>2])==(0|t))break t;if(o=f>>>29|0,f<<=1,!(o=r[16+(E=a+(4&o)|0)>>2]))break}r[E+16>>2]=e,r[e+24>>2]=a}else r[8962]=o|a,r[E>>2]=e,r[e+24>>2]=E;return r[e+12>>2]=e,void(r[e+8>>2]=e)}t=r[a+8>>2],r[t+12>>2]=e,r[a+8>>2]=e,r[e+24>>2]=0,r[e+12>>2]=a,r[e+8>>2]=t}}function tr(e,t,n,o,a){var f,E,s,y,_,w,D,v,Y,U,H,i,c,N,l,F=0,b=0,V=0,W=0,O=0,z=0,tA=0,AA=0,gA=0,aA=0,iA=0,hA=0,yA=0,fA=0,_A=0,wA=0,mA=0,bA=0,RA=0,j=0,rA=0,YA=0,SA=0,NA=0,VA=0,XA=0,g0=0,$=0,cA=0,zA=0,ZA=0,t0=0,r0=0,o0=0;for(BA=f=BA+-64|0,E=r[e+60>>2],s=r[e+56>>2],j=r[e+52>>2],bA=r[e+48>>2],y=r[e+44>>2],_=r[e+40>>2],w=r[e+36>>2],D=r[e+32>>2],v=r[e+28>>2],Y=r[e+24>>2],U=r[e+20>>2],H=r[e+16>>2],i=r[e+12>>2],c=r[e+8>>2],N=r[e+4>>2],l=r[e>>2];;){if(!a&o>>>0>63|a)V=n;else{if(W=0,V=F=L0(f,0,64),o|a)for(;p[F+W|0]=u[t+W|0],!a&(W=W+1|0)>>>0>>0|a;);t=V,SA=n}for(rA=20,AA=l,gA=N,aA=c,iA=i,W=H,F=U,n=Y,hA=v,O=D,z=w,yA=_,fA=E,_A=s,b=j,wA=bA,RA=y;tA=W,AA=TA((W=W+AA|0)^wA,16),wA=TA(tA^(O=AA+O|0),12),tA=O,O=TA((O=AA)^(AA=W+wA|0),8),W=TA(wA^(mA=tA+O|0),7),tA=F,gA=TA((F=F+gA|0)^b,16),b=TA(tA^(z=gA+z|0),12),tA=z,z=TA((z=gA)^(gA=F+b|0),8),F=TA(b^(YA=tA+z|0),7),b=n,aA=TA((n=n+aA|0)^_A,16),tA=_A=TA(b^(yA=aA+yA|0),12),_A=TA((b=aA)^(aA=n+_A|0),8),n=TA(tA^(yA=_A+yA|0),7),b=hA,iA=TA((hA=hA+iA|0)^fA,16),RA=b=TA(b^(fA=iA+RA|0),12),tA=fA,fA=TA((fA=iA)^(iA=hA+b|0),8),hA=TA(RA^(b=tA+fA|0),7),tA=yA,yA=TA((AA=F+AA|0)^fA,16),F=TA((wA=tA+yA|0)^F,12),fA=TA(yA^(AA=F+AA|0),8),F=TA(F^(yA=wA+fA|0),7),O=TA((gA=n+gA|0)^O,16),n=TA((b=O+b|0)^n,12),wA=TA(O^(gA=n+gA|0),8),n=TA(n^(RA=b+wA|0),7),O=TA((aA=hA+aA|0)^z,16),hA=TA((z=O+mA|0)^hA,12),b=TA(O^(aA=hA+aA|0),8),hA=TA(hA^(O=z+b|0),7),z=TA((iA=W+iA|0)^_A,16),W=TA((mA=z+YA|0)^W,12),_A=TA(z^(iA=W+iA|0),8),W=TA(W^(z=mA+_A|0),7),rA=rA-2|0;);if(rA=u[t+4|0]|u[t+5|0]<<8|u[t+6|0]<<16|u[t+7|0]<<24,mA=u[t+8|0]|u[t+9|0]<<8|u[t+10|0]<<16|u[t+11|0]<<24,YA=u[t+12|0]|u[t+13|0]<<8|u[t+14|0]<<16|u[t+15|0]<<24,NA=u[t+16|0]|u[t+17|0]<<8|u[t+18|0]<<16|u[t+19|0]<<24,VA=u[t+20|0]|u[t+21|0]<<8|u[t+22|0]<<16|u[t+23|0]<<24,XA=u[t+24|0]|u[t+25|0]<<8|u[t+26|0]<<16|u[t+27|0]<<24,g0=u[t+28|0]|u[t+29|0]<<8|u[t+30|0]<<16|u[t+31|0]<<24,$=u[t+32|0]|u[t+33|0]<<8|u[t+34|0]<<16|u[t+35|0]<<24,cA=u[t+36|0]|u[t+37|0]<<8|u[t+38|0]<<16|u[t+39|0]<<24,zA=u[t+40|0]|u[t+41|0]<<8|u[t+42|0]<<16|u[t+43|0]<<24,ZA=u[t+44|0]|u[t+45|0]<<8|u[t+46|0]<<16|u[t+47|0]<<24,t0=u[t+48|0]|u[t+49|0]<<8|u[t+50|0]<<16|u[t+51|0]<<24,r0=u[t+52|0]|u[t+53|0]<<8|u[t+54|0]<<16|u[t+55|0]<<24,o0=u[t+56|0]|u[t+57|0]<<8|u[t+58|0]<<16|u[t+59|0]<<24,tA=u[t+60|0]|u[t+61|0]<<8|u[t+62|0]<<16|u[t+63|0]<<24,y0(V,AA+l^(u[0|t]|u[t+1|0]<<8|u[t+2|0]<<16|u[t+3|0]<<24)),y0(V+4|0,gA+N^rA),y0(V+8|0,aA+c^mA),y0(V+12|0,iA+i^YA),y0(V+16|0,W+H^NA),y0(V+20|0,F+U^VA),y0(V+24|0,n+Y^XA),y0(V+28|0,hA+v^g0),y0(V+32|0,O+D^$),y0(V+36|0,z+w^cA),y0(V+40|0,zA^yA+_),y0(V+44|0,ZA^RA+y),y0(V+48|0,t0^wA+bA),y0(V+52|0,r0^b+j),y0(V+56|0,o0^_A+s),y0(V+60|0,tA^fA+E),j=((bA=(n=bA)+1|0)>>>0>>0)+j|0,!a&o>>>0<=64){if(!(!o|!a&o>>>0>63|(0|a)!=0))for(F=0;p[F+SA|0]=u[V+F|0],(0|o)!=(0|(F=F+1|0)););r[e+52>>2]=j,r[e+48>>2]=bA,BA=f- -64|0;break}t=t- -64|0,n=V- -64|0,a=a-1|0,a=(o=o+-64|0)>>>0<4294967232?a+1|0:a}}function NB(e,t,n,o){var a=0,f=0,E=0,s=0,y=0,_=0,w=0,D=0,v=0,Y=0,U=0,H=0,i=0,c=0,N=0,l=0,F=0,b=0,V=0,W=0,O=0,z=0,tA=0,AA=0,gA=0;if(v=r[e+36>>2],s=r[e+32>>2],E=r[e+28>>2],f=r[e+24>>2],y=r[e+20>>2],!o&n>>>0>=16|o)for(O=!u[e+80|0]<<24,U=r[e+4>>2],z=xA(U,5),c=r[e+8>>2],W=xA(c,5),b=r[e+12>>2],V=xA(b,5),a=r[e+16>>2],N=xA(a,5),tA=a,H=r[e>>2];a=K(_=((u[t+3|0]|u[t+4|0]<<8|u[t+5|0]<<16|u[t+6|0]<<24)>>>2&67108863)+f|0,0,b,0),w=h,f=(Y=K(y=(67108863&(u[0|t]|u[t+1|0]<<8|u[t+2|0]<<16|u[t+3|0]<<24))+y|0,0,tA,0))+a|0,a=h+w|0,a=f>>>0>>0?a+1|0:a,D=f,f=K(w=((u[t+6|0]|u[t+7|0]<<8|u[t+8|0]<<16|u[t+9|0]<<24)>>>4&67108863)+E|0,0,c,0),a=h+a|0,a=f>>>0>(E=D+f|0)>>>0?a+1|0:a,f=E,E=K(Y=((u[t+9|0]|u[t+10|0]<<8|u[t+11|0]<<16|u[t+12|0]<<24)>>>6|0)+s|0,0,U,0),a=h+a|0,a=E>>>0>(s=f+E|0)>>>0?a+1|0:a,f=s,s=K(i=v+O+((u[t+12|0]|u[t+13|0]<<8|u[t+14|0]<<16|u[t+15|0]<<24)>>>8)|0,0,H,0),a=h+a|0,AA=v=f+s|0,v=s>>>0>v>>>0?a+1|0:a,a=K(_,0,c,0),E=h,s=(f=K(y,0,b,0))+a|0,a=h+E|0,a=f>>>0>s>>>0?a+1|0:a,E=K(w,0,U,0),a=h+a|0,a=E>>>0>(s=E+s|0)>>>0?a+1|0:a,E=K(Y,0,H,0),a=h+a|0,a=E>>>0>(s=E+s|0)>>>0?a+1|0:a,E=K(i,0,N,0),a=h+a|0,gA=s=E+s|0,s=E>>>0>s>>>0?a+1|0:a,a=K(_,0,U,0),f=h,E=(l=K(y,0,c,0))+a|0,a=h+f|0,a=E>>>0>>0?a+1|0:a,f=K(w,0,H,0),a=h+a|0,a=f>>>0>(E=f+E|0)>>>0?a+1|0:a,f=K(Y,0,N,0),a=h+a|0,a=f>>>0>(E=f+E|0)>>>0?a+1|0:a,f=K(i,0,V,0),a=h+a|0,l=E=f+E|0,E=f>>>0>E>>>0?a+1|0:a,a=K(_,0,H,0),D=h,f=(F=K(y,0,U,0))+a|0,a=h+D|0,a=f>>>0>>0?a+1|0:a,D=K(w,0,N,0),a=h+a|0,a=(f=D+f|0)>>>0>>0?a+1|0:a,D=K(Y,0,V,0),a=h+a|0,a=(f=D+f|0)>>>0>>0?a+1|0:a,D=K(i,0,W,0),a=h+a|0,a=(f=D+f|0)>>>0>>0?a+1|0:a,D=f,f=a,a=K(_,0,N,0),F=h,_=(y=K(y,0,H,0))+a|0,a=h+F|0,a=_>>>0>>0?a+1|0:a,y=K(w,0,V,0),a=h+a|0,a=(_=y+_|0)>>>0>>0?a+1|0:a,y=K(Y,0,W,0),a=h+a|0,a=(_=y+_|0)>>>0>>0?a+1|0:a,y=K(i,0,z,0),a=h+a|0,a=(_=y+_|0)>>>0>>0?a+1|0:a,y=_,w=(67108863&a)<<6|_>>>26,a=f,w=(67108863&(a=(_=w+D|0)>>>0>>0?a+1|0:a))<<6|(f=_)>>>26,a=E,a=(f=w+l|0)>>>0>>0?a+1|0:a,w=f,f=(67108863&a)<<6|f>>>26,a=s,Y=E=f+gA|0,E=(67108863&(a=f>>>0>E>>>0?a+1|0:a))<<6|E>>>26,a=v,v=s=E+AA|0,f=(67108863&_)+((a=xA((67108863&(a=E>>>0>s>>>0?a+1|0:a))<<6|s>>>26,5)+(67108863&y)|0)>>>26|0)|0,E=67108863&w,s=67108863&Y,v&=67108863,y=67108863&a,t=t+16|0,!(o=o-(n>>>0<16)|0)&(n=n-16|0)>>>0>15|o;);r[e+20>>2]=y,r[e+36>>2]=v,r[e+32>>2]=s,r[e+28>>2]=E,r[e+24>>2]=f}function ha(e,t,n){var o,a,f,E,s=0,y=0,_=0,w=0,D=0;return BA=f=BA-160|0,he(t,n,32,0),p[0|t]=248&u[0|t],p[t+31|0]=63&u[t+31|0]|64,PB(f,t),OB(e,f),y=u[(a=n)+8|0]|u[a+9|0]<<8|u[a+10|0]<<16|u[a+11|0]<<24,s=u[a+12|0]|u[a+13|0]<<8|u[a+14|0]<<16|u[a+15|0]<<24,_=u[a+16|0]|u[a+17|0]<<8|u[a+18|0]<<16|u[a+19|0]<<24,w=u[a+20|0]|u[a+21|0]<<8|u[a+22|0]<<16|u[a+23|0]<<24,D=u[0|a]|u[a+1|0]<<8|u[a+2|0]<<16|u[a+3|0]<<24,n=u[a+4|0]|u[a+5|0]<<8|u[a+6|0]<<16|u[a+7|0]<<24,o=t,E=u[a+28|0]|u[a+29|0]<<8|u[a+30|0]<<16|u[a+31|0]<<24,t=u[a+24|0]|u[a+25|0]<<8|u[a+26|0]<<16|u[a+27|0]<<24,p[o+24|0]=t,p[o+25|0]=t>>>8,p[o+26|0]=t>>>16,p[o+27|0]=t>>>24,p[o+28|0]=E,p[o+29|0]=E>>>8,p[o+30|0]=E>>>16,p[o+31|0]=E>>>24,p[o+16|0]=_,p[o+17|0]=_>>>8,p[o+18|0]=_>>>16,p[o+19|0]=_>>>24,p[o+20|0]=w,p[o+21|0]=w>>>8,p[o+22|0]=w>>>16,p[o+23|0]=w>>>24,p[o+8|0]=y,p[o+9|0]=y>>>8,p[o+10|0]=y>>>16,p[o+11|0]=y>>>24,p[o+12|0]=s,p[o+13|0]=s>>>8,p[o+14|0]=s>>>16,p[o+15|0]=s>>>24,p[0|o]=D,p[o+1|0]=D>>>8,p[o+2|0]=D>>>16,p[o+3|0]=D>>>24,p[o+4|0]=n,p[o+5|0]=n>>>8,p[o+6|0]=n>>>16,p[o+7|0]=n>>>24,_=u[(s=e)+8|0]|u[s+9|0]<<8|u[s+10|0]<<16|u[s+11|0]<<24,w=u[s+12|0]|u[s+13|0]<<8|u[s+14|0]<<16|u[s+15|0]<<24,D=u[s+16|0]|u[s+17|0]<<8|u[s+18|0]<<16|u[s+19|0]<<24,n=u[s+20|0]|u[s+21|0]<<8|u[s+22|0]<<16|u[s+23|0]<<24,t=u[0|s]|u[s+1|0]<<8|u[s+2|0]<<16|u[s+3|0]<<24,e=u[s+4|0]|u[s+5|0]<<8|u[s+6|0]<<16|u[s+7|0]<<24,y=u[s+28|0]|u[s+29|0]<<8|u[s+30|0]<<16|u[s+31|0]<<24,s=u[s+24|0]|u[s+25|0]<<8|u[s+26|0]<<16|u[s+27|0]<<24,p[o+56|0]=s,p[o+57|0]=s>>>8,p[o+58|0]=s>>>16,p[o+59|0]=s>>>24,p[o+60|0]=y,p[o+61|0]=y>>>8,p[o+62|0]=y>>>16,p[o+63|0]=y>>>24,p[o+48|0]=D,p[o+49|0]=D>>>8,p[o+50|0]=D>>>16,p[o+51|0]=D>>>24,p[o+52|0]=n,p[o+53|0]=n>>>8,p[o+54|0]=n>>>16,p[o+55|0]=n>>>24,p[o+40|0]=_,p[o+41|0]=_>>>8,p[o+42|0]=_>>>16,p[o+43|0]=_>>>24,p[o+44|0]=w,p[o+45|0]=w>>>8,p[o+46|0]=w>>>16,p[o+47|0]=w>>>24,p[o+32|0]=t,p[o+33|0]=t>>>8,p[o+34|0]=t>>>16,p[o+35|0]=t>>>24,p[o+36|0]=e,p[o+37|0]=e>>>8,p[o+38|0]=e>>>16,p[o+39|0]=e>>>24,BA=f+160|0,0}function UB(e,t,n){var o,a=0,f=0,E=0;BA=o=BA+-64|0;A:{if(!(!n|n>>>0>=65)){if(a=-1,!(u[e+80|0]|u[e+81|0]<<8|u[e+82|0]<<16|u[e+83|0]<<24|u[e+84|0]|u[e+85|0]<<8|u[e+86|0]<<16|u[e+87|0]<<24)){if(f=e,(a=u[e+352|0]|u[e+353|0]<<8|u[e+354|0]<<16|u[e+355|0]<<24)>>>0>=129){if(KB(e,128),SB(e,E=e+96|0),a=(u[e+352|0]|u[e+353|0]<<8|u[e+354|0]<<16|u[e+355|0]<<24)-128|0,p[e+352|0]=a,p[e+353|0]=a>>>8,p[e+354|0]=a>>>16,p[e+355|0]=a>>>24,a>>>0>=129)break A;V0(E,e+224|0,a),a=u[e+352|0]|u[e+353|0]<<8|u[e+354|0]<<16|u[e+355|0]<<24}KB(f,a),u[e+356|0]&&(p[e+88|0]=255,p[e+89|0]=255,p[e+90|0]=255,p[e+91|0]=255,p[e+92|0]=255,p[e+93|0]=255,p[e+94|0]=255,p[e+95|0]=255),p[e+80|0]=255,p[e+81|0]=255,p[e+82|0]=255,p[e+83|0]=255,p[e+84|0]=255,p[e+85|0]=255,p[e+86|0]=255,p[e+87|0]=255,L0((a=e+96|0)+(f=u[e+352|0]|u[e+353|0]<<8|u[e+354|0]<<16|u[e+355|0]<<24)|0,0,256-f|0),SB(e,a),q0(o,u[0|e]|u[e+1|0]<<8|u[e+2|0]<<16|u[e+3|0]<<24,u[e+4|0]|u[e+5|0]<<8|u[e+6|0]<<16|u[e+7|0]<<24),q0(8|o,u[e+8|0]|u[e+9|0]<<8|u[e+10|0]<<16|u[e+11|0]<<24,u[e+12|0]|u[e+13|0]<<8|u[e+14|0]<<16|u[e+15|0]<<24),q0(o+16|0,u[e+16|0]|u[e+17|0]<<8|u[e+18|0]<<16|u[e+19|0]<<24,u[e+20|0]|u[e+21|0]<<8|u[e+22|0]<<16|u[e+23|0]<<24),q0(o+24|0,u[e+24|0]|u[e+25|0]<<8|u[e+26|0]<<16|u[e+27|0]<<24,u[e+28|0]|u[e+29|0]<<8|u[e+30|0]<<16|u[e+31|0]<<24),q0(o+32|0,u[e+32|0]|u[e+33|0]<<8|u[e+34|0]<<16|u[e+35|0]<<24,u[e+36|0]|u[e+37|0]<<8|u[e+38|0]<<16|u[e+39|0]<<24),q0(o+40|0,u[e+40|0]|u[e+41|0]<<8|u[e+42|0]<<16|u[e+43|0]<<24,u[e+44|0]|u[e+45|0]<<8|u[e+46|0]<<16|u[e+47|0]<<24),q0(o+48|0,u[e+48|0]|u[e+49|0]<<8|u[e+50|0]<<16|u[e+51|0]<<24,u[e+52|0]|u[e+53|0]<<8|u[e+54|0]<<16|u[e+55|0]<<24),q0(o+56|0,u[e+56|0]|u[e+57|0]<<8|u[e+58|0]<<16|u[e+59|0]<<24,u[e+60|0]|u[e+61|0]<<8|u[e+62|0]<<16|u[e+63|0]<<24),V0(t,o,n),Q0(e,64),Q0(a,256),a=0}return BA=o- -64|0,a}z0(),s0()}D0(1854,1886,306,1931),s0()}function ya(e,t){var n,o,a,f,E,s,y,_,w,D=0,v=0,Y=0,U=0,H=0,i=0,c=0,N=0,l=0,F=0,b=0;n=u[0|t]|u[t+1|0]<<8|u[t+2|0]<<16|u[t+3|0]<<24,l=U0(t+4|0),D=h,c=U0(t+7|0),Y=h,N=U0(t+10|0),v=h,o=U0(t+13|0),H=h,U=u[t+16|0]|u[t+17|0]<<8|u[t+18|0]<<16|u[t+19|0]<<24,a=U0(t+20|0),F=h,f=U0(t+23|0),E=h,s=U0(t+26|0),y=h,_=U0(t+29|0),t=v<<3|N>>>29,b=v=N<<3,N=v=v+16777216|0,v=t=v>>>0<16777216?t+1|0:t,Y=t=Y<<5|c>>>27,w=i=c<<5,D=t=D<<6|(c=l)>>>26,l=t=16777216+(c<<=6)|0,i=t,t=(t=(D=t>>>0<16777216?D+1|0:D)>>25)+Y|0,t=(D=w+(i=(33554431&D)<<7|i>>>25)|0)>>>0>>0?t+1|0:t,(Y=D+33554432|0)>>>0<33554432&&(t=t+1|0),t=(b-(-33554432&N)|0)+((67108863&t)<<6|Y>>>26)|0,r[e+12>>2]=t,t=-67108864&Y,r[e+8>>2]=D-t,t=0,i=U=(Y=U)+16777216|0,U=t=U>>>0<16777216?1:t,b=Y-(-33554432&i)|0,t=H<<2|(Y=o)>>>30,H=Y<<2,Y=t,t=(t=v>>25)+Y|0,D=t=(v=(D=H)+(H=(33554431&v)<<7|N>>>25)|0)>>>0>>0?t+1|0:t,Y=t=v+33554432|0,t=((67108863&(D=t>>>0<33554432?D+1|0:D))<<6|t>>>26)+b|0,r[e+20>>2]=t,t=-67108864&Y,r[e+16>>2]=v-t,H=(D=a)<<7,t=(t=F<<7|D>>>25)+(D=U>>25)|0,t=(U=H+(Y=(33554431&U)<<7|i>>>25)|0)>>>0>>0?t+1|0:t,U=D=U,Y=D=D+33554432|0,D=t=D>>>0<33554432?t+1|0:t,t=-67108864&Y,r[(v=e)+24>>2]=U-t,U=v,t=E<<5|(v=f)>>>27,F=v<<=5,H=v=v+16777216|0,v=t=v>>>0<16777216?t+1|0:t,t=(F-(-33554432&H)|0)+((67108863&D)<<6|Y>>>26)|0,r[U+28>>2]=t,Y=(D=s)<<4,D=t=y<<4|D>>>28,t=(t=v>>25)+D|0,t=(v=(i=Y)+(Y=(33554431&v)<<7|H>>>25)|0)>>>0>>0?t+1|0:t,v=D=v,Y=D=D+33554432|0,D=t=D>>>0<33554432?t+1|0:t,t=-67108864&Y,r[U+32>>2]=v-t,t=0,v=U=(U=_)<<2&33554428,t=(U=U+16777216|0)>>>0<16777216?t+1|0:t,D=(v-(33554432&U)|0)+((67108863&D)<<6|Y>>>26)|0,r[e+36>>2]=D,U=K((33554431&t)<<7|U>>>25,t>>>25|0,19,0),t=h,t=(D=U+n|0)>>>0>>0?t+1|0:t,(v=D+33554432|0)>>>0<33554432&&(t=t+1|0),t=(c-(-33554432&l)|0)+((67108863&t)<<6|v>>>26)|0,r[e+4>>2]=t,t=e,e=-67108864&v,r[t>>2]=D-e}function pn(e,t){var n,o,a,f,E,s,y,_,w,D=0,v=0,Y=0,U=0,H=0,i=0,c=0,N=0,l=0,F=0,b=0,V=0,W=0,O=0;b=v=r[(D=t)+4>>2],l=v>>31,V=v=r[D+8>>2],o=v>>31,c=v=r[D+12>>2],F=v>>31,W=v=r[D+16>>2],a=v>>31,N=v=r[D+20>>2],i=v>>31,O=v=r[D+24>>2],f=v>>31,E=v=r[D>>2],s=v>>31,U=v=K(D=r[D+36>>2],D>>31,121666,0),D=h,n=v=v+16777216|0,v=D=v>>>0<16777216?D+1|0:D,y=U-(-33554432&n)|0,Y=K(D=r[t+32>>2],D>>31,121666,0),_=h,U=K(t=r[t+28>>2],t>>31,121666,0),D=h,H=Y,w=t=U+16777216|0,Y=t,t=(t=(D=t>>>0<16777216?D+1|0:D)>>25)+_|0,t=(D=H+(Y=(33554431&D)<<7|Y>>>25)|0)>>>0>>0?t+1|0:t,Y=D,D=t,H=t=Y+33554432|0,t=((67108863&(D=t>>>0<33554432?D+1|0:D))<<6|t>>>26)+y|0,r[e+36>>2]=t,t=-67108864&H,r[e+32>>2]=Y-t,H=U-(-33554432&w)|0,D=K(O,f,121666,0),O=h,U=K(N,i,121666,0),t=h,Y=D,N=D=U+16777216|0,i=D,D=(D=(t=D>>>0<16777216?t+1|0:t)>>25)+O|0,D=(t=Y+(i=(33554431&t)<<7|i>>>25)|0)>>>0>>0?D+1|0:D,(Y=t+33554432|0)>>>0<33554432&&(D=D+1|0),D=H+((67108863&D)<<6|Y>>>26)|0,r[e+28>>2]=D,D=-67108864&Y,r[e+24>>2]=t-D,N=U-(-33554432&N)|0,t=K(W,a,121666,0),W=h,U=K(c,F,121666,0),D=h,H=t,c=t=U+16777216|0,F=(33554431&(D=t>>>0<16777216?D+1|0:D))<<7|t>>>25,D=(D>>25)+W|0,t=D=(Y=H+F|0)>>>0>>0?D+1|0:D,t=((67108863&(t=(D=Y+33554432|0)>>>0<33554432?t+1|0:t))<<6|D>>>26)+N|0,r[e+20>>2]=t,t=-67108864&D,r[e+16>>2]=Y-t,c=U-(-33554432&c)|0,D=K(V,o,121666,0),V=h,U=K(b,l,121666,0),t=h,H=D,b=D=U+16777216|0,l=(33554431&(t=D>>>0<16777216?t+1|0:t))<<7|D>>>25,t=(t>>25)+V|0,D=t=(Y=H+l|0)>>>0>>0?t+1|0:t,H=t=Y+33554432|0,t=((67108863&(D=t>>>0<33554432?D+1|0:D))<<6|t>>>26)+c|0,r[e+12>>2]=t,t=-67108864&H,r[e+8>>2]=Y-t,t=K((33554431&v)<<7|n>>>25,v>>25,19,0),D=h,H=U-(-33554432&b)|0,v=K(E,s,121666,0),D=h+D|0,D=(t=v+t|0)>>>0>>0?D+1|0:D,(v=t+33554432|0)>>>0<33554432&&(D=D+1|0),D=H+((67108863&D)<<6|v>>>26)|0,r[e+4>>2]=D,D=e,e=-67108864&v,r[D>>2]=t-e}function ln(e,t,n,o){var a,f=0,E=0;BA=a=BA-16|0,f=-31;A:{t:{g:{r:switch(o-1|0){case 1:if(t>>>0<13)break t;o=u[35660]|u[35661]<<8|u[35662]<<16|u[35663]<<24,f=u[35656]|u[35657]<<8|u[35658]<<16|u[35659]<<24,p[0|e]=f,p[e+1|0]=f>>>8,p[e+2|0]=f>>>16,p[e+3|0]=f>>>24,p[e+4|0]=o,p[e+5|0]=o>>>8,p[e+6|0]=o>>>16,p[e+7|0]=o>>>24,o=u[35665]|u[35666]<<8|u[35667]<<16|u[35668]<<24,f=u[35661]|u[35662]<<8|u[35663]<<16|u[35664]<<24,p[e+5|0]=f,p[e+6|0]=f>>>8,p[e+7|0]=f>>>16,p[e+8|0]=f>>>24,p[e+9|0]=o,p[e+10|0]=o>>>8,p[e+11|0]=o>>>16,p[e+12|0]=o>>>24,E=-12,o=12;break g;case 0:break r;default:break A}if(t>>>0<12)break t;o=u[35673]|u[35674]<<8|u[35675]<<16|u[35676]<<24,f=u[35669]|u[35670]<<8|u[35671]<<16|u[35672]<<24,p[0|e]=f,p[e+1|0]=f>>>8,p[e+2|0]=f>>>16,p[e+3|0]=f>>>24,p[e+4|0]=o,p[e+5|0]=o>>>8,p[e+6|0]=o>>>16,p[e+7|0]=o>>>24,o=u[35677]|u[35678]<<8|u[35679]<<16|u[35680]<<24,p[e+8|0]=o,p[e+9|0]=o>>>8,p[e+10|0]=o>>>16,p[e+11|0]=o>>>24,E=-11,o=11}if(f=qB(n))break A;if(ir(a+5|0,19),!((f=t+E|0)>>>0<=(t=Ut(a+5|0))>>>0)&&(e=V0(e+o|0,a+5|0,t+1|0),!((o=f-t|0)>>>0<4)&&(p[0|(e=e+t|0)]=36,p[e+1|0]=109,p[e+2|0]=61,p[e+3|0]=0,ir(a+5|0,r[n+44>>2]),!((o=o-3|0)>>>0<=(t=Ut(a+5|0))>>>0)&&(e=V0(e+3|0,a+5|0,t+1|0),!((o=o-t|0)>>>0<4)&&(p[0|(e=e+t|0)]=44,p[e+1|0]=116,p[e+2|0]=61,p[e+3|0]=0,ir(a+5|0,r[n+40>>2]),!((o=o-3|0)>>>0<=(t=Ut(a+5|0))>>>0)&&(e=V0(e+3|0,a+5|0,t+1|0),!((o=o-t|0)>>>0<4)&&(p[0|(e=e+t|0)]=44,p[e+1|0]=112,p[e+2|0]=61,p[e+3|0]=0,ir(a+5|0,r[n+48>>2]),!((o=o-3|0)>>>0<=(t=Ut(a+5|0))>>>0)&&(e=V0(e+3|0,a+5|0,t+1|0),!((o=o-t|0)>>>0<2)&&(p[0|(e=e+t|0)]=36,p[e+1|0]=0,JB(e=e+1|0,t=o-1|0,r[n+16>>2],r[n+20>>2],3)))))))))){if(f=-31,(o=(o=t)-(t=Ut(e))|0)>>>0<2)break A;return p[0|(e=e+t|0)]=36,p[e+1|0]=0,e=JB(e+1|0,o-1|0,r[n>>2],r[n+4>>2],3),BA=a+16|0,e?0:-31}}f=-31}return BA=a+16|0,f}function MB(e,t,n,o){var a,f=0;a=f=BA,BA=f=f-576&-64,r[f+188>>2]=0,y0(f+188|0,t);A:if(t>>>0<=64){if((0|Cr(f+192|0,0,0,t))<0)break A;(0|at(f+192|0,f+188|0,4,0))<0,(0|at(f+192|0,n,o,0))<0,Er(f+192|0,e,t)}else if(!((0|Cr(f+192|0,0,0,64))<0||(0|at(f+192|0,f+188|0,4,0))<0||(0|at(f+192|0,n,o,0))<0||(0|Er(f+192|0,f+112|0,64))<0)){if(n=r[f+116>>2],o=r[f+112>>2],p[0|e]=o,p[e+1|0]=o>>>8,p[e+2|0]=o>>>16,p[e+3|0]=o>>>24,p[e+4|0]=n,p[e+5|0]=n>>>8,p[e+6|0]=n>>>16,p[e+7|0]=n>>>24,n=r[f+124>>2],o=r[f+120>>2],p[e+8|0]=o,p[e+9|0]=o>>>8,p[e+10|0]=o>>>16,p[e+11|0]=o>>>24,p[e+12|0]=n,p[e+13|0]=n>>>8,p[e+14|0]=n>>>16,p[e+15|0]=n>>>24,n=r[f+140>>2],o=r[f+136>>2],p[e+24|0]=o,p[e+25|0]=o>>>8,p[e+26|0]=o>>>16,p[e+27|0]=o>>>24,p[e+28|0]=n,p[e+29|0]=n>>>8,p[e+30|0]=n>>>16,p[e+31|0]=n>>>24,n=r[f+132>>2],o=r[f+128>>2],p[e+16|0]=o,p[e+17|0]=o>>>8,p[e+18|0]=o>>>16,p[e+19|0]=o>>>24,p[e+20|0]=n,p[e+21|0]=n>>>8,p[e+22|0]=n>>>16,p[e+23|0]=n>>>24,e=e+32|0,(t=t-32|0)>>>0>=65)for(;;){if(V0(f+48|0,f+112|0,64),(0|ZB(f+112|0,64,f+48|0,64,0,0,0))<0)break A;if(n=r[f+116>>2],o=r[f+112>>2],p[0|e]=o,p[e+1|0]=o>>>8,p[e+2|0]=o>>>16,p[e+3|0]=o>>>24,p[e+4|0]=n,p[e+5|0]=n>>>8,p[e+6|0]=n>>>16,p[e+7|0]=n>>>24,n=r[f+124>>2],o=r[f+120>>2],p[e+8|0]=o,p[e+9|0]=o>>>8,p[e+10|0]=o>>>16,p[e+11|0]=o>>>24,p[e+12|0]=n,p[e+13|0]=n>>>8,p[e+14|0]=n>>>16,p[e+15|0]=n>>>24,n=r[f+140>>2],o=r[f+136>>2],p[e+24|0]=o,p[e+25|0]=o>>>8,p[e+26|0]=o>>>16,p[e+27|0]=o>>>24,p[e+28|0]=n,p[e+29|0]=n>>>8,p[e+30|0]=n>>>16,p[e+31|0]=n>>>24,n=r[f+132>>2],o=r[f+128>>2],p[e+16|0]=o,p[e+17|0]=o>>>8,p[e+18|0]=o>>>16,p[e+19|0]=o>>>24,p[e+20|0]=n,p[e+21|0]=n>>>8,p[e+22|0]=n>>>16,p[e+23|0]=n>>>24,e=e+32|0,!((t=t-32|0)>>>0>64))break}V0(f+48|0,f+112|0,64),(0|ZB(f+112|0,t,f+48|0,64,0,0,0))<0||V0(e,f+112|0,t)}Q0(f+192|0,384),BA=a}function gr(e,t,n){var o=0,a=0,f=0,E=0,s=0,y=0,_=0,w=0,D=0,v=0,Y=0,U=0,H=0,i=0,c=0,N=0,l=0,F=0,b=0;for(f=2036477234,D=857760878,v=1634760805,E=1797285236,w=u[0|n]|u[n+1|0]<<8|u[n+2|0]<<16|u[n+3|0]<<24,o=u[n+4|0]|u[n+5|0]<<8|u[n+6|0]<<16|u[n+7|0]<<24,a=u[n+8|0]|u[n+9|0]<<8|u[n+10|0]<<16|u[n+11|0]<<24,y=u[n+12|0]|u[n+13|0]<<8|u[n+14|0]<<16|u[n+15|0]<<24,U=u[n+16|0]|u[n+17|0]<<8|u[n+18|0]<<16|u[n+19|0]<<24,H=u[n+20|0]|u[n+21|0]<<8|u[n+22|0]<<16|u[n+23|0]<<24,c=u[n+24|0]|u[n+25|0]<<8|u[n+26|0]<<16|u[n+27|0]<<24,N=u[n+28|0]|u[n+29|0]<<8|u[n+30|0]<<16|u[n+31|0]<<24,n=u[0|t]|u[t+1|0]<<8|u[t+2|0]<<16|u[t+3|0]<<24,Y=u[t+4|0]|u[t+5|0]<<8|u[t+6|0]<<16|u[t+7|0]<<24,s=u[t+8|0]|u[t+9|0]<<8|u[t+10|0]<<16|u[t+11|0]<<24,t=u[t+12|0]|u[t+13|0]<<8|u[t+14|0]<<16|u[t+15|0]<<24;_=w,v=TA((i=n)^(n=w+v|0),16),_=U=TA(_^(w=v+U|0),12),U=TA((i=v)^(v=n+U|0),8),w=TA(_^(l=U+w|0),7),_=o,D=TA((n=o+D|0)^Y,16),_=Y=TA(_^(o=D+H|0),12),Y=TA((i=D)^(D=n+Y|0),8),n=TA(_^(H=Y+o|0),7),_=a,o=TA((f=f+a|0)^s,16),_=s=TA(_^(a=o+c|0),12),i=TA(o^(s=f+s|0),8),f=TA(_^(o=i+a|0),7),E=TA((a=t)^(t=E+y|0),16),y=TA((a=E+N|0)^y,12),t=TA(E^(F=t+y|0),8),E=TA(y^(a=t+a|0),7),_=o,o=TA((o=t)^(t=n+v|0),16),n=TA((y=_+o|0)^n,12),t=TA(o^(v=t+n|0),8),o=TA(n^(c=y+t|0),7),_=a,a=TA((n=f+D|0)^U,16),f=TA((y=_+a|0)^f,12),n=TA(a^(D=n+f|0),8),a=TA(f^(N=y+n|0),7),y=TA((f=E+s|0)^Y,16),E=TA((s=y+l|0)^E,12),Y=TA(y^(f=f+E|0),8),y=TA(E^(U=s+Y|0),7),s=TA((E=w+F|0)^i,16),w=TA((H=s+H|0)^w,12),s=TA(s^(E=E+w|0),8),w=TA(w^(H=H+s|0),7),(0|(b=b+1|0))!=10;);y0(e,v),y0(e+4|0,D),y0(e+8|0,f),y0(e+12|0,E),y0(e+16|0,n),y0(e+20|0,Y),y0(e+24|0,s),y0(e+28|0,t)}function RB(e){var t,n=0,o=0;BA=t=BA-48|0,n=u[28+(e|=0)|0]|u[e+29|0]<<8|u[e+30|0]<<16|u[e+31|0]<<24,r[t+24>>2]=u[e+24|0]|u[e+25|0]<<8|u[e+26|0]<<16|u[e+27|0]<<24,r[t+28>>2]=n,n=u[e+20|0]|u[e+21|0]<<8|u[e+22|0]<<16|u[e+23|0]<<24,r[t+16>>2]=u[e+16|0]|u[e+17|0]<<8|u[e+18|0]<<16|u[e+19|0]<<24,r[t+20>>2]=n,n=u[e+4|0]|u[e+5|0]<<8|u[e+6|0]<<16|u[e+7|0]<<24,r[t>>2]=u[0|e]|u[e+1|0]<<8|u[e+2|0]<<16|u[e+3|0]<<24,r[t+4>>2]=n,n=u[e+12|0]|u[e+13|0]<<8|u[e+14|0]<<16|u[e+15|0]<<24,r[t+8>>2]=u[e+8|0]|u[e+9|0]<<8|u[e+10|0]<<16|u[e+11|0]<<24,r[t+12>>2]=n,n=u[e+40|0]|u[e+41|0]<<8|u[e+42|0]<<16|u[e+43|0]<<24,r[t+32>>2]=u[e+36|0]|u[e+37|0]<<8|u[e+38|0]<<16|u[e+39|0]<<24,r[t+36>>2]=n,Ct[r[8957]](t,t,40,0,e+32|0,0,e),n=r[t+28>>2],o=r[t+24>>2],p[e+24|0]=o,p[e+25|0]=o>>>8,p[e+26|0]=o>>>16,p[e+27|0]=o>>>24,p[e+28|0]=n,p[e+29|0]=n>>>8,p[e+30|0]=n>>>16,p[e+31|0]=n>>>24,n=r[t+20>>2],o=r[t+16>>2],p[e+16|0]=o,p[e+17|0]=o>>>8,p[e+18|0]=o>>>16,p[e+19|0]=o>>>24,p[e+20|0]=n,p[e+21|0]=n>>>8,p[e+22|0]=n>>>16,p[e+23|0]=n>>>24,n=r[t+12>>2],o=r[t+8>>2],p[e+8|0]=o,p[e+9|0]=o>>>8,p[e+10|0]=o>>>16,p[e+11|0]=o>>>24,p[e+12|0]=n,p[e+13|0]=n>>>8,p[e+14|0]=n>>>16,p[e+15|0]=n>>>24,n=r[t+4>>2],o=r[t>>2],p[0|e]=o,p[e+1|0]=o>>>8,p[e+2|0]=o>>>16,p[e+3|0]=o>>>24,p[e+4|0]=n,p[e+5|0]=n>>>8,p[e+6|0]=n>>>16,p[e+7|0]=n>>>24,n=r[t+36>>2],o=r[t+32>>2],p[e+36|0]=o,p[e+37|0]=o>>>8,p[e+38|0]=o>>>16,p[e+39|0]=o>>>24,p[e+40|0]=n,p[e+41|0]=n>>>8,p[e+42|0]=n>>>16,p[e+43|0]=n>>>24,ta(e),BA=t+48|0}function LB(e,t,n){var o=0,a=0,f=0,E=0,s=0,y=0,_=0,w=0,D=0,v=0,Y=0,U=0,H=0,i=0,c=0,N=0,l=0,F=0,b=0,V=0,W=0;for(a=2036477234,f=857760878,E=1634760805,s=1797285236,c=20,w=u[0|n]|u[n+1|0]<<8|u[n+2|0]<<16|u[n+3|0]<<24,i=u[n+4|0]|u[n+5|0]<<8|u[n+6|0]<<16|u[n+7|0]<<24,N=u[n+8|0]|u[n+9|0]<<8|u[n+10|0]<<16|u[n+11|0]<<24,U=u[n+12|0]|u[n+13|0]<<8|u[n+14|0]<<16|u[n+15|0]<<24,D=u[n+16|0]|u[n+17|0]<<8|u[n+18|0]<<16|u[n+19|0]<<24,y=u[n+20|0]|u[n+21|0]<<8|u[n+22|0]<<16|u[n+23|0]<<24,v=u[n+24|0]|u[n+25|0]<<8|u[n+26|0]<<16|u[n+27|0]<<24,Y=u[n+28|0]|u[n+29|0]<<8|u[n+30|0]<<16|u[n+31|0]<<24,n=u[0|t]|u[t+1|0]<<8|u[t+2|0]<<16|u[t+3|0]<<24,_=u[t+4|0]|u[t+5|0]<<8|u[t+6|0]<<16|u[t+7|0]<<24,o=u[t+8|0]|u[t+9|0]<<8|u[t+10|0]<<16|u[t+11|0]<<24,t=u[t+12|0]|u[t+13|0]<<8|u[t+14|0]<<16|u[t+15|0]<<24;l=o,o=TA(E+y|0,7)^U,H=l^TA(o+E|0,9),F=TA(o+H|0,13)^y,U=TA(H+F|0,18),t=TA(f+w|0,7)^t,v=TA(t+f|0,9)^v,w=TA(t+v|0,13)^w,V=TA(v+w|0,18),Y=TA(n+a|0,7)^Y,y=TA(Y+a|0,9)^i,b=TA(y+Y|0,13)^n,W=TA(y+b|0,18),n=TA(s+D|0,7)^N,_=TA(n+s|0,9)^_,D=TA(n+_|0,13)^D,l=TA(_+D|0,18),w=TA((E^=U)+n|0,7)^w,i=TA(w+E|0,9)^y,N=TA(w+i|0,13)^n,E=TA(i+N|0,18)^E,n=TA((f^=V)+o|0,7)^b,_=TA(n+f|0,9)^_,U=TA(n+_|0,13)^o,f=TA(_+U|0,18)^f,D=TA((a^=W)+t|0,7)^D,o=TA(D+a|0,9)^H,t=TA(o+D|0,13)^t,a=TA(t+o|0,18)^a,y=TA((s^=l)+Y|0,7)^F,v=TA(y+s|0,9)^v,Y=TA(y+v|0,13)^Y,s=TA(v+Y|0,18)^s,H=c>>>0>2,c=c-2|0,H;);return y0(e,E),y0(e+4|0,f),y0(e+8|0,a),y0(e+12|0,s),y0(e+16|0,n),y0(e+20|0,_),y0(e+24|0,o),y0(e+28|0,t),0}function fa(e,t,n,o,a,f,E){var s,y,_,w,D,v,Y,U=0;return BA=s=BA-560|0,aa(s+352|0,E),he(s+288|0,f,32,0),wt(s+352|0,s+320|0,32,0),wt(s+352|0,n,o,a),ag(s+352|0,s+224|0),y=u[(U=f)+32|0]|u[U+33|0]<<8|u[U+34|0]<<16|u[U+35|0]<<24,_=u[U+36|0]|u[U+37|0]<<8|u[U+38|0]<<16|u[U+39|0]<<24,w=u[U+40|0]|u[U+41|0]<<8|u[U+42|0]<<16|u[U+43|0]<<24,D=u[U+44|0]|u[U+45|0]<<8|u[U+46|0]<<16|u[U+47|0]<<24,v=u[U+48|0]|u[U+49|0]<<8|u[U+50|0]<<16|u[U+51|0]<<24,f=u[U+52|0]|u[U+53|0]<<8|u[U+54|0]<<16|u[U+55|0]<<24,Y=u[U+60|0]|u[U+61|0]<<8|u[U+62|0]<<16|u[U+63|0]<<24,U=u[U+56|0]|u[U+57|0]<<8|u[U+58|0]<<16|u[U+59|0]<<24,p[e+56|0]=U,p[e+57|0]=U>>>8,p[e+58|0]=U>>>16,p[e+59|0]=U>>>24,p[e+60|0]=Y,p[e+61|0]=Y>>>8,p[e+62|0]=Y>>>16,p[e+63|0]=Y>>>24,p[e+48|0]=v,p[e+49|0]=v>>>8,p[e+50|0]=v>>>16,p[e+51|0]=v>>>24,p[e+52|0]=f,p[e+53|0]=f>>>8,p[e+54|0]=f>>>16,p[e+55|0]=f>>>24,p[e+40|0]=w,p[e+41|0]=w>>>8,p[e+42|0]=w>>>16,p[e+43|0]=w>>>24,p[e+44|0]=D,p[e+45|0]=D>>>8,p[e+46|0]=D>>>16,p[e+47|0]=D>>>24,p[0|(f=e+32|0)]=y,p[f+1|0]=y>>>8,p[f+2|0]=y>>>16,p[f+3|0]=y>>>24,p[f+4|0]=_,p[f+5|0]=_>>>8,p[f+6|0]=_>>>16,p[f+7|0]=_>>>24,YB(s+224|0),PB(s,s+224|0),OB(e,s),aa(s+352|0,E),wt(s+352|0,e,64,0),wt(s+352|0,n,o,a),ag(s+352|0,s+160|0),YB(s+160|0),p[s+288|0]=248&u[s+288|0],p[s+319|0]=63&u[s+319|0]|64,function(H,i,c,N){var l,F,b,V,W,O,z,tA,AA,gA,aA,iA,hA,yA,fA,_A,wA,mA,bA,RA,j,rA,YA,SA,NA,VA,XA,g0,$,cA,zA,ZA,t0,r0,o0,E0,B0,n0,X,eA,CA,h0,I0,w0,d0,S0,Y0,T0,k=0,DA=0,HA=0,jA=0,A0=0,a0=0,C0=0,f0=0,G0=0,H0=0,R0=0,M0=0,x0=0,P0=0,X0=0,gt=0,rt=0,et=0,Bt=0,nt=0,it=0,Qt=0,ft=0,Et=0,lt=0,Dt=0,Rt=0,dt=0,Lt=0,xt=0,bt=0,tg=0,gg=0,Jt=0,vg=0,og=0,Cg=0,Qg=0,Eg=0,sg=0,cg=0,hg=0,kg=0,Gg=0,Tg=0,Vg=0,pe=0,Fr=0,le=0,we=0,mr=0;Eg=U0(i),rt=u[i+2|0]|u[i+3|0]<<8|u[i+4|0]<<16|u[i+5|0]<<24,pe=U0(i+5|0),Lt=h,et=u[i+7|0]|u[i+8|0]<<8|u[i+9|0]<<16|u[i+10|0]<<24,Bt=u[i+10|0]|u[i+11|0]<<8|u[i+12|0]<<16|u[i+13|0]<<24,bt=U0(i+13|0),R0=h,x0=u[i+15|0]|u[i+16|0]<<8|u[i+17|0]<<16|u[i+18|0]<<24,kg=U0(i+18|0),P0=h,xt=U0(i+21|0),C0=u[i+23|0]|u[i+24|0]<<8|u[i+25|0]<<16|u[i+26|0]<<24,G0=U0(i+26|0),jA=h,HA=u[i+28|0]|u[i+29|0]<<8|u[i+30|0]<<16|u[i+31|0]<<24,vg=U0(c),Qt=u[(i=c)+2|0]|u[i+3|0]<<8|u[i+4|0]<<16|u[i+5|0]<<24,Tg=U0(i+5|0),H0=h,X0=u[i+7|0]|u[i+8|0]<<8|u[i+9|0]<<16|u[i+10|0]<<24,gt=u[i+10|0]|u[i+11|0]<<8|u[i+12|0]<<16|u[i+13|0]<<24,Vg=U0(i+13|0),M0=h,A0=u[i+15|0]|u[i+16|0]<<8|u[i+17|0]<<16|u[i+18|0]<<24,Gg=U0(i+18|0),DA=h,sg=U0(i+21|0),k=u[i+23|0]|u[i+24|0]<<8|u[i+25|0]<<16|u[i+26|0]<<24,f0=U0(i+26|0),c=h,i=u[i+28|0]|u[i+29|0]<<8|u[i+30|0]<<16|u[i+31|0]<<24,w0=U0(N),d0=u[N+2|0]|u[N+3|0]<<8|u[N+4|0]<<16|u[N+5|0]<<24,S0=U0(N+5|0),Y0=h,og=u[N+7|0]|u[N+8|0]<<8|u[N+9|0]<<16|u[N+10|0]<<24,cg=u[N+10|0]|u[N+11|0]<<8|u[N+12|0]<<16|u[N+13|0]<<24,hg=U0(N+13|0),Jt=h,tg=u[N+15|0]|u[N+16|0]<<8|u[N+17|0]<<16|u[N+18|0]<<24,Fr=U0(N+18|0),Rt=h,Et=U0(N+21|0),i=K(l=i>>>7|0,0,F=2097151&((3&jA)<<30|G0>>>2),0),a0=h,jA=i,i=K(b=2097151&((3&c)<<30|f0>>>2),0,V=HA>>>7|0,0),c=h+a0|0,a0=HA=jA+i|0,HA=i>>>0>HA>>>0?c+1|0:c,i=K(F,0,b,0),jA=h,k=(c=K(W=k>>>5&2097151,0,V,0))+i|0,i=h+jA|0,c=i=c>>>0>k>>>0?i+1|0:i,i=K(l,0,O=C0>>>5&2097151,0),c=h+c|0,C0=k=i+k|0,ft=c=i>>>0>k>>>0?c+1|0:c,nt=(i=k)- -1048576|0,it=c=c-((i>>>0<4293918720)-1|0)|0,i=(k=c>>21)+HA|0,G0=i=(c=(2097151&c)<<11|nt>>>21)>>>0>(HA=jA=c+a0|0)>>>0?i+1|0:i,lt=(i=HA)- -1048576|0,f0=a0=G0-((i>>>0<4293918720)-1|0)|0,jA=K(l,0,V,0),c=dt=(Qg=h)-(((i=jA)>>>0<4293918720)-1|0)|0,k=a0>>21,dt=(2097151&a0)<<11|lt>>>21,jA=i-(a0=-2097152&(Cg=i- -1048576|0))|0,i=(Qg-((i>>>0>>0)+c|0)|0)+k|0,ZA=i=jA>>>0>(VA=dt+jA|0)>>>0?i+1|0:i,a0=K(VA,i,-683901,-1),jA=h,t0=i=c>>21,i=K(g0=(2097151&c)<<11|Cg>>>21,i,136657,0),k=h+jA|0,dt=c=i+a0|0,a0=i>>>0>c>>>0?k+1|0:k,i=K(z=2097151&((1&M0)<<31|Vg>>>1),0,F,0),c=h,k=i,i=K(tA=gt>>>4&2097151,0,V,0),c=h+c|0,c=i>>>0>(k=k+i|0)>>>0?c+1|0:c,i=K(AA=A0>>>6&2097151,0,O,0),c=h+c|0,c=i>>>0>(k=i+k|0)>>>0?c+1|0:c,NA=i=0,jA=k,k=K(gA=2097151&sg,i,aA=2097151&((7&P0)<<29|kg>>>3),0),i=h+c|0,i=k>>>0>(jA=jA+k|0)>>>0?i+1|0:i,k=K(iA=2097151&((7&DA)<<29|Gg>>>3),0,hA=2097151&xt,0),c=h+i|0,c=k>>>0>(jA=k+jA|0)>>>0?c+1|0:c,i=K(W,0,yA=x0>>>6&2097151,0),k=h+c|0,k=i>>>0>(jA=i+jA|0)>>>0?k+1|0:k,c=K(b,0,fA=2097151&((1&R0)<<31|bt>>>1),0),i=h+k|0,c=c>>>0>(k=jA=c+jA|0)>>>0?i+1|0:i,i=K(l,0,_A=Bt>>>4&2097151,0),c=h+c|0,P0=k=i+k|0,jA=i>>>0>k>>>0?c+1|0:c,i=K(F,0,tA,0),c=h,DA=(k=i)+(i=K(wA=X0>>>7&2097151,0,V,0))|0,k=h+c|0,k=i>>>0>DA>>>0?k+1|0:k,c=K(O,0,z,0),i=h+k|0,i=c>>>0>(DA=c+DA|0)>>>0?i+1|0:i,k=K(AA,0,hA,0),c=h+i|0,c=k>>>0>(DA=k+DA|0)>>>0?c+1|0:c,i=K(gA,NA,yA,0),c=h+c|0,c=i>>>0>(k=i+DA|0)>>>0?c+1|0:c,DA=(i=k)+(k=K(aA,0,iA,0))|0,i=h+c|0,i=k>>>0>DA>>>0?i+1|0:i,c=K(W,0,fA,0),k=h+i|0,k=c>>>0>(DA=c+DA|0)>>>0?k+1|0:k,c=K(b,0,_A,0),i=h+k|0,c=c>>>0>(k=DA=c+DA|0)>>>0?i+1|0:i,i=K(l,0,mA=et>>>7&2097151,0),c=h+c|0,gt=k=i+k|0,A0=c=i>>>0>k>>>0?c+1|0:c,M0=(i=k)- -1048576|0,DA=c=c-((i>>>0<4293918720)-1|0)|0,i=(k=c>>21)+jA|0,c=i=(c=(2097151&c)<<11|M0>>>21)>>>0>(X0=c+P0|0)>>>0?i+1|0:i,i=i+a0|0,i=(k=jA=X0)>>>0>(X0=k+dt|0)>>>0?i+1|0:i,a0=(a0=c)-(((c=jA)>>>0<4293918720)-1|0)|0,R0=c- -1048576|0,x0=(c=k=X0)-(k=-2097152&R0)|0,P0=i-((jA=a0)+(c>>>0>>0)|0)|0,$=HA-(i=-2097152<)|0,r0=c=G0-((i>>>0>HA>>>0)+f0|0)|0,i=K(g0,t0,-997805,-1),k=h+A0|0,k=i>>>0>(HA=i+gt|0)>>>0?k+1|0:k,A0=(i=HA)+(HA=K(VA,ZA,136657,0))|0,i=h+k|0,c=K($,c,-683901,-1),i=h+(HA>>>0>A0>>>0?i+1|0:i)|0,i=c>>>0>(k=c+A0|0)>>>0?i+1|0:i,a0=k-(c=-2097152&M0)|0,A0=i-((c>>>0>k>>>0)+DA|0)|0,i=K(F,0,wA,0),k=h,HA=(c=K(bA=2097151&((3&H0)<<30|Tg>>>2),0,V,0))+i|0,i=h+k|0,i=c>>>0>HA>>>0?i+1|0:i,k=K(O,0,tA,0),c=h+i|0,c=k>>>0>(HA=k+HA|0)>>>0?c+1|0:c,i=K(z,0,hA,0),k=h+c|0,k=i>>>0>(HA=i+HA|0)>>>0?k+1|0:k,c=K(AA,0,aA,0),i=h+k|0,i=c>>>0>(HA=c+HA|0)>>>0?i+1|0:i,k=K(gA,NA,fA,0),c=h+i|0,c=k>>>0>(HA=k+HA|0)>>>0?c+1|0:c,k=K(iA,0,yA,0),i=h+c|0,i=k>>>0>(HA=k+HA|0)>>>0?i+1|0:i,k=K(W,0,_A,0),c=h+i|0,c=k>>>0>(HA=k+HA|0)>>>0?c+1|0:c,i=K(b,0,mA,0),k=h+c|0,k=i>>>0>(HA=i+HA|0)>>>0?k+1|0:k,c=K(l,0,RA=2097151&((3&Lt)<<30|pe>>>2),0),i=h+k|0,HA=c>>>0>(DA=HA=c+HA|0)>>>0?i+1|0:i,i=K(F,0,bA,0),c=h,k=i,i=K(j=Qt>>>5&2097151,0,V,0),c=h+c|0,c=i>>>0>(k=k+i|0)>>>0?c+1|0:c,f0=(i=K(O,0,wA,0))+k|0,k=h+c|0,k=i>>>0>f0>>>0?k+1|0:k,c=K(tA,0,hA,0),i=h+k|0,i=c>>>0>(f0=c+f0|0)>>>0?i+1|0:i,c=K(z,0,aA,0),i=h+i|0,i=c>>>0>(k=c+f0|0)>>>0?i+1|0:i,f0=(c=k)+(k=K(AA,0,yA,0))|0,c=h+i|0,c=k>>>0>f0>>>0?c+1|0:c,i=K(gA,NA,_A,0),c=h+c|0,c=i>>>0>(k=i+f0|0)>>>0?c+1|0:c,f0=(i=K(iA,0,fA,0))+k|0,k=h+c|0,k=i>>>0>f0>>>0?k+1|0:k,c=K(W,0,mA,0),i=h+k|0,i=c>>>0>(f0=c+f0|0)>>>0?i+1|0:i,c=K(b,0,RA,0),i=h+i|0,c=i=c>>>0>(k=c+f0|0)>>>0?i+1|0:i,i=K(l,0,rA=rt>>>5&2097151,0),c=h+c|0,X0=k=i+k|0,Tg=c=i>>>0>k>>>0?c+1|0:c,T0=(i=k)- -1048576|0,Vg=k=c-((i>>>0<4293918720)-1|0)|0,i=(i=k>>21)+HA|0,gt=k=(c=(2097151&k)<<11|T0>>>21)+DA|0,Gg=i=c>>>0>k>>>0?i+1|0:i,pe=(i=k)- -1048576|0,sg=k=Gg-((i>>>0<4293918720)-1|0)|0,c=(i=k>>21)+A0|0,M0=HA=(k=(2097151&k)<<11|pe>>>21)+a0|0,Qg=c=k>>>0>HA>>>0?c+1|0:c,bt=(i=HA)- -1048576|0,dt=k=c-((i>>>0<4293918720)-1|0)|0,i=(i=k>>21)+P0|0,A0=k=(c=(2097151&k)<<11|bt>>>21)+x0|0,rt=k=(lt=i=c>>>0>k>>>0?i+1|0:i)-(((i=k)>>>0<4293918720)-1|0)|0,G0=(2097151&k)<<11|(xt=i- -1048576|0)>>>21,DA=k>>21,i=K(F,0,AA,0),c=h,k=i,i=K(V,0,z,0),c=h+c|0,c=i>>>0>(k=k+i|0)>>>0?c+1|0:c,i=K(gA,NA,hA,0),c=h+c|0,c=i>>>0>(k=i+k|0)>>>0?c+1|0:c,HA=(i=k)+(k=K(O,0,iA,0))|0,i=h+c|0,i=k>>>0>HA>>>0?i+1|0:i,c=K(W,0,aA,0),k=h+i|0,k=c>>>0>(HA=c+HA|0)>>>0?k+1|0:k,c=K(b,0,yA,0),i=h+k|0,i=c>>>0>(HA=c+HA|0)>>>0?i+1|0:i,k=K(l,0,fA,0),c=h+i|0,c=k>>>0>(HA=k+HA|0)>>>0?c+1|0:c,k=K(g0,t0,-683901,-1),c=(i=c)+h|0,c=k>>>0>(a0=HA+k|0)>>>0?c+1|0:c,k=a0,a0=(a0=i)-(((i=HA)>>>0<4293918720)-1|0)|0,Qt=i- -1048576|0,f0=(i=k)-(k=-2097152&Qt)|0,k=c-((HA=a0)+(i>>>0>>0)|0)|0,i=(i=jA>>21)+k|0,i=(c=(2097151&jA)<<11|R0>>>21)>>>0>(jA=c+f0|0)>>>0?i+1|0:i,a0=(c=jA)-(k=-2097152&(H0=c- -1048576|0))|0,k=(i-((c>>>0>>0)+(jA=f0=i-((c>>>0<4293918720)-1|0)|0)|0)|0)+DA|0,o0=G0=a0+G0|0,E0=k=a0>>>0>G0>>>0?k+1|0:k,f0=K(G0,k,-683901,-1),a0=h,c=K(O,0,gA,NA),i=h,k=c,c=K(V,0,AA,0),i=h+i|0,i=c>>>0>(k=k+c|0)>>>0?i+1|0:i,DA=(c=k)+(k=K(F,0,iA,0))|0,c=h+i|0,c=k>>>0>DA>>>0?c+1|0:c,k=K(W,0,hA,0),i=h+c|0,i=k>>>0>(DA=k+DA|0)>>>0?i+1|0:i,k=K(b,0,aA,0),c=h+i|0,c=k>>>0>(DA=k+DA|0)>>>0?c+1|0:c,i=K(l,0,yA,0),k=h+c|0,k=i>>>0>(DA=i+DA|0)>>>0?k+1|0:k,i=(i=HA>>21)+k|0,et=DA=(i=(c=(2097151&HA)<<11|Qt>>>21)>>>0>(HA=c+DA|0)>>>0?i+1|0:i)-(((c=HA)>>>0<4293918720)-1|0)|0,HA=c-(k=-2097152&(gg=c- -1048576|0))|0,k=(i-((c>>>0>>0)+DA|0)|0)+(jA>>21)|0,B0=HA=(i=(2097151&jA)<<11|H0>>>21)+HA|0,n0=k=i>>>0>HA>>>0?k+1|0:k,c=K(HA,k,136657,0),i=h+a0|0,kg=k=c+f0|0,Bt=c>>>0>k>>>0?i+1|0:i,c=K(hA,0,j,0),i=h,k=c,c=K(YA=2097151&vg,0,O,0),i=h+i|0,i=c>>>0>(k=k+c|0)>>>0?i+1|0:i,HA=(c=k)+(k=K(aA,0,bA,0))|0,c=h+i|0,c=k>>>0>HA>>>0?c+1|0:c,i=K(yA,0,wA,0),k=h+c|0,k=i>>>0>(HA=i+HA|0)>>>0?k+1|0:k,c=K(tA,0,fA,0),i=h+k|0,i=c>>>0>(HA=c+HA|0)>>>0?i+1|0:i,k=K(z,0,_A,0),c=h+i|0,c=k>>>0>(HA=k+HA|0)>>>0?c+1|0:c,k=K(AA,0,mA,0),i=h+c|0,i=k>>>0>(HA=k+HA|0)>>>0?i+1|0:i,k=K(gA,NA,rA,0),c=h+i|0,c=k>>>0>(HA=k+HA|0)>>>0?c+1|0:c,i=K(iA,0,RA,0),k=h+c|0,k=i>>>0>(HA=i+HA|0)>>>0?k+1|0:k,c=K(W,0,SA=2097151&Eg,0),i=h+k|0,i=c>>>0>(HA=c+HA|0)>>>0?i+1|0:i,jA=HA=(k=(u[N+23|0]|u[N+24|0]<<8|u[N+25|0]<<16|u[N+26|0]<<24)>>>5&2097151)+HA|0,HA=k>>>0>HA>>>0?i+1|0:i,i=K(aA,0,j,0),c=h,k=i,i=K(hA,0,YA,0),c=h+c|0,c=i>>>0>(k=k+i|0)>>>0?c+1|0:c,DA=(i=K(yA,0,bA,0))+k|0,k=h+c|0,k=i>>>0>DA>>>0?k+1|0:k,c=K(fA,0,wA,0),i=h+k|0,i=c>>>0>(DA=c+DA|0)>>>0?i+1|0:i,c=K(tA,0,_A,0),i=h+i|0,i=c>>>0>(k=c+DA|0)>>>0?i+1|0:i,DA=(c=k)+(k=K(z,0,mA,0))|0,c=h+i|0,c=k>>>0>DA>>>0?c+1|0:c,i=K(AA,0,RA,0),c=h+c|0,c=i>>>0>(k=i+DA|0)>>>0?c+1|0:c,DA=(i=K(gA,NA,SA,0))+k|0,k=h+c|0,k=i>>>0>DA>>>0?k+1|0:k,c=K(iA,0,rA,0),i=h+k|0,i=c>>>0>(DA=c+DA|0)>>>0?i+1|0:i,DA=k=(c=2097151&Et)+DA|0,x0=k=(R0=i=c>>>0>k>>>0?i+1|0:i)-(((i=k)>>>0<4293918720)-1|0)|0,i=(2097151&k)<<11|(Lt=i- -1048576|0)>>>21,k=(k>>>21|0)+HA|0,H0=k=i>>>0>(jA=i+jA|0)>>>0?k+1|0:k,vg=C0-(i=-2097152&nt)|0,Et=ft-((i>>>0>C0>>>0)+it|0)|0,c=K(F,0,W,0),i=h,k=c,c=K(V,0,gA,NA),i=h+i|0,i=c>>>0>(k=k+c|0)>>>0?i+1|0:i,HA=(c=k)+(k=K(b,0,O,0))|0,c=h+i|0,c=k>>>0>HA>>>0?c+1|0:c,i=K(l,0,hA,0),k=h+c|0,k=i>>>0>(HA=i+HA|0)>>>0?k+1|0:k,a0=HA,i=K(V,0,iA,0),c=h,HA=i,i=K(F,0,gA,NA),c=h+c|0,c=i>>>0>(HA=HA+i|0)>>>0?c+1|0:c,C0=(i=HA)+(HA=K(O,0,W,0))|0,i=h+c|0,i=HA>>>0>C0>>>0?i+1|0:i,c=K(b,0,hA,0),i=h+i|0,i=c>>>0>(HA=c+C0|0)>>>0?i+1|0:i,C0=(c=HA)+(HA=K(l,0,aA,0))|0,c=h+i|0,G0=c=HA>>>0>C0>>>0?c+1|0:c,ft=(i=HA=C0)- -1048576|0,f0=C0=c-((i>>>0<4293918720)-1|0)|0,c=(i=C0>>21)+k|0,a0=c=(k=a0=(C0=(2097151&C0)<<11|ft>>>21)+a0|0)>>>0>>0?c+1|0:c,it=(i=k)- -1048576|0,c=(i=(C0=nt=c-((i>>>0<4293918720)-1|0)|0)>>21)+Et|0,X=c=(nt=(2097151&C0)<<11|it>>>21)>>>0>(XA=vg=nt+vg|0)>>>0?c+1|0:c,Et=K(XA,c,470296,0),nt=h,cA=k-(c=-2097152&it)|0,Cg=i=a0-((c>>>0>k>>>0)+C0|0)|0,c=K($,r0,666643,0),k=h+nt|0,k=c>>>0>(C0=c+Et|0)>>>0?k+1|0:k,c=K(cA,i,654183,0),i=h+k|0,c=c>>>0>(a0=C0=c+C0|0)>>>0?i+1|0:i,i=HA-(k=-2097152&ft)|0,k=(et>>21)+(C0=G0-((k>>>0>HA>>>0)+f0|0)|0)|0,eA=f0=(HA=(2097151&et)<<11|gg>>>21)+i|0,Eg=k=HA>>>0>f0>>>0?k+1|0:k,le=jA- -1048576|0,HA=C0=H0-((jA>>>0<4293918720)-1|0)|0,i=K(f0,k,-997805,-1),c=h+c|0,i=(c=i>>>0>(k=i+a0|0)>>>0?c+1|0:c)+H0|0,i=k>>>0>(jA=k+jA|0)>>>0?i+1|0:i,Et=(k=jA)-(c=-2097152&le)|0,nt=i-((c>>>0>k>>>0)+HA|0)|0,i=K(cA,Cg,470296,0),c=h,jA=(k=i)+(i=K(XA,X,666643,0))|0,k=h+c|0,k=i>>>0>jA>>>0?k+1|0:k,c=K(f0,Eg,654183,0),i=h+k|0,c=R0+(c>>>0>(jA=c+jA|0)>>>0?i+1|0:i)|0,H0=(k=DA+jA|0)-(i=-2097152&Lt)|0,C0=(c=k>>>0>>0?c+1|0:c)-((i>>>0>k>>>0)+x0|0)|0,c=K(yA,0,j,0),i=h,k=c,c=K(aA,0,YA,0),i=h+i|0,i=c>>>0>(k=k+c|0)>>>0?i+1|0:i,c=K(fA,0,bA,0),i=h+i|0,i=c>>>0>(k=c+k|0)>>>0?i+1|0:i,jA=(c=k)+(k=K(_A,0,wA,0))|0,c=h+i|0,c=k>>>0>jA>>>0?c+1|0:c,i=K(tA,0,mA,0),k=h+c|0,k=i>>>0>(jA=i+jA|0)>>>0?k+1|0:k,i=K(z,0,RA,0),c=h+k|0,c=i>>>0>(jA=i+jA|0)>>>0?c+1|0:c,k=K(AA,0,rA,0),i=h+c|0,i=k>>>0>(jA=k+jA|0)>>>0?i+1|0:i,c=K(iA,0,SA,0),i=h+i|0,i=c>>>0>(k=c+jA|0)>>>0?i+1|0:i,c=k,jA=(k=2097151&((7&Rt)<<29|Fr>>>3))>>>0>(DA=jA=c+k|0)>>>0?i+1|0:i,i=K(fA,0,j,0),c=h,a0=(k=i)+(i=K(yA,0,YA,0))|0,k=h+c|0,k=i>>>0>a0>>>0?k+1|0:k,c=K(_A,0,bA,0),i=h+k|0,i=c>>>0>(a0=c+a0|0)>>>0?i+1|0:i,k=K(mA,0,wA,0),c=h+i|0,c=k>>>0>(a0=k+a0|0)>>>0?c+1|0:c,k=K(tA,0,RA,0),i=h+c|0,i=k>>>0>(a0=k+a0|0)>>>0?i+1|0:i,k=K(z,0,rA,0),c=h+i|0,c=k>>>0>(a0=k+a0|0)>>>0?c+1|0:c,i=K(AA,0,SA,0),k=h+c|0,i=i>>>0>(c=a0=i+a0|0)>>>0?k+1|0:k,ft=k=a0+(c=tg>>>6&2097151)|0,P0=k=(G0=i=c>>>0>k>>>0?i+1|0:i)-(((i=k)>>>0<4293918720)-1|0)|0,i=(2097151&k)<<11|(it=i- -1048576|0)>>>21,k=(k>>>21|0)+jA|0,f0=k=i>>>0>(DA=i+DA|0)>>>0?k+1|0:k,et=(i=DA)- -1048576|0,a0=k=k-((i>>>0<4293918720)-1|0)|0,i=(c=k>>>21|0)+C0|0,R0=jA=(k=(2097151&k)<<11|et>>>21)+H0|0,Qt=k=(C0=i=k>>>0>jA>>>0?i+1|0:i)-(((i=jA)>>>0<4293918720)-1|0)|0,i=(2097151&k)<<11|(x0=i- -1048576|0)>>>21,k=(k>>21)+nt|0,i=(c=k=i>>>0>(jA=i+Et|0)>>>0?k+1|0:k)+Bt|0,H0=(H0=c)-(((c=jA)>>>0<4293918720)-1|0)|0,we=c- -1048576|0,mr=(c=k=Rt=jA+kg|0)-(k=-2097152&we)|0,Dt=(i=jA>>>0>Rt>>>0?i+1|0:i)-((jA=H0)+(c>>>0>>0)|0)|0,i=K(B0,n0,-997805,-1),c=h+C0|0,gg=k=i+R0|0,H0=i>>>0>k>>>0?c+1|0:c,c=K(eA,Eg,470296,0),i=h,k=c,c=K(cA,Cg,666643,0),i=h+i|0,i=(i=c>>>0>(k=k+c|0)>>>0?i+1|0:i)+f0|0,i=(c=k+DA|0)>>>0>>0?i+1|0:i,et=(k=c)-(c=-2097152&et)|0,Bt=i-((c>>>0>k>>>0)+a0|0)|0,i=K(eA,Eg,666643,0),c=h+G0|0,R0=k=i+ft|0,C0=i>>>0>k>>>0?c+1|0:c,c=K(_A,0,j,0),i=h,k=c,c=K(fA,0,YA,0),i=h+i|0,i=c>>>0>(k=k+c|0)>>>0?i+1|0:i,c=K(mA,0,bA,0),i=h+i|0,i=c>>>0>(k=c+k|0)>>>0?i+1|0:i,DA=(c=k)+(k=K(RA,0,wA,0))|0,c=h+i|0,c=k>>>0>DA>>>0?c+1|0:c,i=K(tA,0,rA,0),k=h+c|0,k=i>>>0>(DA=i+DA|0)>>>0?k+1|0:k,i=K(z,0,SA,0),c=h+k|0,i=c=i>>>0>(DA=i+DA|0)>>>0?c+1|0:c,a0=DA=(k=2097151&((1&Jt)<<31|hg>>>1))+DA|0,DA=k>>>0>DA>>>0?i+1|0:i,c=K(mA,0,j,0),i=h,k=c,c=K(_A,0,YA,0),i=h+i|0,i=c>>>0>(k=k+c|0)>>>0?i+1|0:i,f0=(c=k)+(k=K(RA,0,bA,0))|0,c=h+i|0,c=k>>>0>f0>>>0?c+1|0:c,i=K(rA,0,wA,0),c=h+c|0,c=i>>>0>(k=i+f0|0)>>>0?c+1|0:c,f0=(i=K(tA,0,SA,0))+k|0,k=h+c|0,i=i>>>0>(c=f0)>>>0?k+1|0:k,G0=k=f0+(c=cg>>>4&2097151)|0,cg=k=(Lt=i=c>>>0>k>>>0?i+1|0:i)-(((i=k)>>>0<4293918720)-1|0)|0,i=(2097151&k)<<11|(Fr=i- -1048576|0)>>>21,k=(k>>>21|0)+DA|0,f0=a0=i+a0|0,Jt=k=i>>>0>a0>>>0?k+1|0:k,kg=(i=a0)- -1048576|0,tg=k=k-((i>>>0<4293918720)-1|0)|0,i=(c=k>>>21|0)+C0|0,ft=k=(Rt=(k=(k=(2097151&k)<<11|kg>>>21)>>>0>(c=DA=k+R0|0)>>>0?i+1|0:i)-(((i=-2097152&it)>>>0>c>>>0)+P0|0)|0)-(((i=a0=c-i|0)>>>0<4293918720)-1|0)|0,c=(c=k>>21)+Bt|0,Et=k=(i=(2097151&k)<<11|(vg=i- -1048576|0)>>>21)+et|0,it=c=i>>>0>k>>>0?c+1|0:c,nt=(i=k)- -1048576|0,et=DA=c-((i>>>0<4293918720)-1|0)|0,zA=A0-(i=-2097152&xt)|0,hg=k=lt-((i>>>0>A0>>>0)+rt|0)|0,i=(c=DA>>21)+H0|0,i=(DA=(2097151&DA)<<11|nt>>>21)>>>0>(A0=DA+gg|0)>>>0?i+1|0:i,C0=(DA=K(o0,E0,136657,0))+(A0-(c=-2097152&x0)|0)|0,c=h+(i-((c>>>0>A0>>>0)+Qt|0)|0)|0,c=DA>>>0>C0>>>0?c+1|0:c,k=K(zA,k,-683901,-1),i=h+c|0,C0=DA=k+C0|0,R0=k=(Bt=i=k>>>0>DA>>>0?i+1|0:i)-(((i=DA)>>>0<4293918720)-1|0)|0,c=(c=k>>21)+Dt|0,A0=k=(i=(2097151&k)<<11|(xt=i- -1048576|0)>>>21)+mr|0,x0=c=i>>>0>k>>>0?c+1|0:c,P0=k=c-(((i=k)>>>0<4293918720)-1|0)|0,gg=(2097151&k)<<11|(lt=i- -1048576|0)>>>21,Qt=k>>21,c=K(O,0,j,0),i=h,k=c,c=K(F,0,YA,0),i=h+i|0,i=c>>>0>(k=k+c|0)>>>0?i+1|0:i,DA=(c=K(hA,0,bA,0))+k|0,k=h+i|0,k=c>>>0>DA>>>0?k+1|0:k,i=K(aA,0,wA,0),c=h+k|0,c=i>>>0>(DA=i+DA|0)>>>0?c+1|0:c,k=K(tA,0,yA,0),i=h+c|0,i=k>>>0>(DA=k+DA|0)>>>0?i+1|0:i,k=K(z,0,fA,0),c=h+i|0,c=k>>>0>(DA=k+DA|0)>>>0?c+1|0:c,k=K(AA,0,_A,0),i=h+c|0,i=k>>>0>(DA=k+DA|0)>>>0?i+1|0:i,c=K(gA,NA,RA,0),k=h+i|0,k=c>>>0>(DA=c+DA|0)>>>0?k+1|0:k,i=K(iA,0,mA,0),c=h+k|0,c=i>>>0>(DA=i+DA|0)>>>0?c+1|0:c,k=K(W,0,rA,0),i=h+c|0,i=k>>>0>(DA=k+DA|0)>>>0?i+1|0:i,k=K(b,0,SA,0),c=h+i|0,c=k>>>0>(DA=k+DA|0)>>>0?c+1|0:c,i=U0(N+26|0),k=2097151&((3&(k=h))<<30|i>>>2),i=c,rt=DA=k+DA|0,DA=i=k>>>0>DA>>>0?i+1|0:i,i=K($,r0,470296,0),c=h,Dt=(k=i)+(i=K(VA,ZA,666643,0))|0,k=h+c|0,k=i>>>0>Dt>>>0?k+1|0:k,i=K(XA,X,654183,0),c=h+k|0,c=i>>>0>(Dt=i+Dt|0)>>>0?c+1|0:c,i=K(cA,Cg,-997805,-1),c=h+c|0,c=i>>>0>(k=i+Dt|0)>>>0?c+1|0:c,Dt=(i=k)+(k=K(eA,Eg,136657,0))|0,i=h+c|0,i=(i=k>>>0>Dt>>>0?i+1|0:i)+DA|0,i=(c=Dt)>>>0>(k=c+rt|0)>>>0?i+1|0:i,c=k,k=i,CA=(i=rt)- -1048576|0,DA=H0=DA-((i>>>0<4293918720)-1|0)|0,H0=c,k=(c=HA>>21)+k|0,k=(i=(2097151&HA)<<11|le>>>21)>>>0>(HA=H0+i|0)>>>0?k+1|0:k,c=HA-(i=-2097152&CA)|0,rt=K(B0,n0,-683901,-1),i=(HA=k-((i>>>0>HA>>>0)+DA|0)|0)+h|0,k=i=rt>>>0>(Dt=c+rt|0)>>>0?i+1|0:i,H0=HA-(((i=c)>>>0<4293918720)-1|0)|0,h0=i- -1048576|0,k=(c=jA>>21)+k|0,k=(i=(2097151&jA)<<11|we>>>21)>>>0>(jA=i+(rt=Dt)|0)>>>0?k+1|0:k,rt=c=jA-(i=-2097152&h0)|0,i=(jA=k-((i>>>0>jA>>>0)+(HA=H0)|0)|0)+Qt|0,I0=c- -1048576|0,H0=jA-((c>>>0<4293918720)-1|0)|0,le=(c=k=gg=c+gg|0)-(k=-2097152&I0)|0,we=(rt>>>0>c>>>0?i+1|0:i)-((c>>>0>>0)+(jA=H0)|0)|0,mr=A0-(i=-2097152<)|0,Dt=x0-((i>>>0>A0>>>0)+P0|0)|0,gg=C0-(i=-2097152&xt)|0,xt=Bt-((i>>>0>C0>>>0)+R0|0)|0,c=K(B0,n0,654183,0),i=h+it|0,i=c>>>0>(k=c+Et|0)>>>0?i+1|0:i,C0=((A0=k)-(c=-2097152&nt)|0)+(k=K(o0,E0,-997805,-1))|0,c=h+(i-((c>>>0>A0>>>0)+et|0)|0)|0,c=k>>>0>C0>>>0?c+1|0:c,k=K(zA,hg,136657,0),i=h+c|0,lt=A0=k+C0|0,C0=k>>>0>A0>>>0?i+1|0:i,rt=M0-(i=-2097152&bt)|0,Bt=Qg-((i>>>0>M0>>>0)+dt|0)|0,i=K(VA,ZA,-997805,-1),c=h,k=i,i=K(g0,t0,654183,0),c=h+c|0,c=i>>>0>(k=k+i|0)>>>0?c+1|0:c,i=K($,r0,136657,0),c=h+c|0,c=i>>>0>(k=i+k|0)>>>0?c+1|0:c,A0=(i=k)+(k=K(XA,X,-683901,-1))|0,i=h+c|0,k=Gg+(k>>>0>A0>>>0?i+1|0:i)|0,R0=(c=A0+gt|0)-(i=-2097152&pe)|0,x0=(k=c>>>0>>0?k+1|0:k)-((i>>>0>c>>>0)+sg|0)|0,i=K(VA,ZA,654183,0),c=h,k=i,i=K(g0,t0,470296,0),c=h+c|0,c=i>>>0>(k=k+i|0)>>>0?c+1|0:c,A0=(i=k)+(k=K($,r0,-997805,-1))|0,i=h+c|0,c=A0+X0|0,k=Tg+(k>>>0>A0>>>0?i+1|0:i)|0,A0=(i=K(XA,X,136657,0))+c|0,c=h+(c>>>0>>0?k+1|0:k)|0,c=i>>>0>A0>>>0?c+1|0:c,k=K(cA,Cg,-683901,-1),i=h+c|0,i=k>>>0>(A0=k+A0|0)>>>0?i+1|0:i,gt=(k=A0)-(c=-2097152&T0)|0,M0=i-((c>>>0>k>>>0)+Vg|0)|0,c=K(F,0,j,0),i=h,k=c,c=K(V,0,YA,0),i=h+i|0,i=c>>>0>(k=k+c|0)>>>0?i+1|0:i,A0=(c=k)+(k=K(O,0,bA,0))|0,c=h+i|0,c=k>>>0>A0>>>0?c+1|0:c,k=K(hA,0,wA,0),i=h+c|0,i=k>>>0>(A0=k+A0|0)>>>0?i+1|0:i,c=K(tA,0,aA,0),k=h+i|0,k=c>>>0>(A0=c+A0|0)>>>0?k+1|0:k,i=K(z,0,yA,0),c=h+k|0,c=i>>>0>(A0=i+A0|0)>>>0?c+1|0:c,k=K(AA,0,fA,0),i=h+c|0,i=k>>>0>(A0=k+A0|0)>>>0?i+1|0:i,k=K(gA,NA,mA,0),c=h+i|0,c=k>>>0>(A0=k+A0|0)>>>0?c+1|0:c,k=K(iA,0,_A,0),i=h+c|0,i=k>>>0>(A0=k+A0|0)>>>0?i+1|0:i,c=K(W,0,RA,0),k=h+i|0,k=c>>>0>(A0=c+A0|0)>>>0?k+1|0:k,i=K(l,0,SA,0),c=h+k|0,c=i>>>0>(A0=i+A0|0)>>>0?c+1|0:c,k=K(b,0,rA,0),i=h+c|0,i=k>>>0>(A0=k+A0|0)>>>0?i+1|0:i,c=(N=(u[N+28|0]|u[N+29|0]<<8|u[N+30|0]<<16|u[N+31|0]<<24)>>>7|0)>>>0>(k=N+A0|0)>>>0?i+1|0:i,i=k,k=DA>>21,DA=i+(N=(2097151&DA)<<11|CA>>>21)|0,i=c+k|0,A0=DA,P0=i=N>>>0>DA>>>0?i+1|0:i,it=(i=DA)- -1048576|0,Qt=c=P0-((i>>>0<4293918720)-1|0)|0,i=(k=c>>21)+M0|0,DA=N=(c=(2097151&c)<<11|it>>>21)+gt|0,H0=i=c>>>0>N>>>0?i+1|0:i,et=(i=N)- -1048576|0,X0=c=H0-((i>>>0<4293918720)-1|0)|0,i=(k=c>>21)+x0|0,gt=i=(c=(2097151&c)<<11|et>>>21)>>>0>(N=c+R0|0)>>>0?i+1|0:i,x0=(i=N)- -1048576|0,M0=c=gt-((i>>>0<4293918720)-1|0)|0,i=(k=c>>21)+Bt|0,bt=R0=(c=(2097151&c)<<11|x0>>>21)+rt|0,dt=i=c>>>0>R0>>>0?i+1|0:i,i=K(R0,i,-683901,-1),c=h+C0|0,R0=k=i+lt|0,C0=i>>>0>k>>>0?c+1|0:c,Et=N-(i=-2097152&x0)|0,lt=M0=gt-((i>>>0>N>>>0)+M0|0)|0,c=K(B0,n0,470296,0)+a0|0,i=Rt+h|0,i=c>>>0>>0?i+1|0:i,a0=((k=c)-(N=-2097152&vg)|0)+(c=K(o0,E0,654183,0))|0,k=h+(i-((N>>>0>k>>>0)+ft|0)|0)|0,i=K(zA,hg,-997805,-1),c=h+(c>>>0>a0>>>0?k+1|0:k)|0,c=i>>>0>(N=i+a0|0)>>>0?c+1|0:c,k=(i=N)+(N=K(bt,dt,136657,0))|0,i=h+c|0,i=N>>>0>k>>>0?i+1|0:i,N=K(Et,M0,-683901,-1),c=h+i|0,gt=c=N>>>0>(k=N+k|0)>>>0?c+1|0:c,Bt=(i=k)- -1048576|0,M0=N=c-((i>>>0<4293918720)-1|0)|0,i=(i=N>>21)+C0|0,a0=i=(c=(2097151&N)<<11|Bt>>>21)>>>0>(N=c+R0|0)>>>0?i+1|0:i,x0=(i=N)- -1048576|0,c=(i=(C0=R0=a0-((i>>>0<4293918720)-1|0)|0)>>21)+xt|0,xt=ft=(R0=(2097151&C0)<<11|x0>>>21)+gg|0,R0=R0>>>0>ft>>>0?c+1|0:c,Tg=N-(i=-2097152&x0)|0,Vg=a0-((i>>>0>N>>>0)+C0|0)|0,sg=k-(i=-2097152&Bt)|0,Qg=gt-((i>>>0>k>>>0)+M0|0)|0,i=K(B0,n0,666643,0),k=h+(Jt-(((c=-2097152&kg)>>>0>f0>>>0)+tg|0)|0)|0,k=i>>>0>(N=i+(f0-c|0)|0)>>>0?k+1|0:k,i=K(o0,E0,470296,0),c=h+k|0,c=i>>>0>(N=i+N|0)>>>0?c+1|0:c,k=(i=N)+(N=K(zA,hg,654183,0))|0,i=h+c|0,M0=k,N=N>>>0>k>>>0?i+1|0:i,f0=DA-(i=-2097152&et)|0,C0=H0-((i>>>0>DA>>>0)+X0|0)|0,c=K(VA,ZA,470296,0),i=h,k=c,c=K(g0,t0,666643,0),i=h+i|0,i=c>>>0>(k=k+c|0)>>>0?i+1|0:i,DA=(c=k)+(k=K($,r0,654183,0))|0,c=h+i|0,c=k>>>0>DA>>>0?c+1|0:c,k=K(XA,X,-997805,-1),i=h+c|0,i=k>>>0>(DA=k+DA|0)>>>0?i+1|0:i,c=K(cA,Cg,136657,0),k=h+i|0,k=c>>>0>(DA=c+DA|0)>>>0?k+1|0:k,i=K(eA,Eg,-683901,-1),c=h+k|0,i=P0+(i>>>0>(DA=i+DA|0)>>>0?c+1|0:c)|0,i=(k=DA+A0|0)>>>0>>0?i+1|0:i,c=(DA=k)-(k=-2097152&it)|0,k=i-((k>>>0>DA>>>0)+Qt|0)|0,i=(i=HA>>21)+k|0,a0=HA=(DA=c)+(c=(2097151&HA)<<11|h0>>>21)|0,X0=k=(H0=i=c>>>0>HA>>>0?i+1|0:i)-(((i=HA)>>>0<4293918720)-1|0)|0,c=(2097151&k)<<11|(Rt=i- -1048576|0)>>>21,k=(k>>21)+C0|0,nt=HA=c+f0|0,rt=k=c>>>0>HA>>>0?k+1|0:k,i=K(HA,k,-683901,-1),c=h+N|0,c=i>>>0>(k=i+M0|0)>>>0?c+1|0:c,N=K(bt,dt,-997805,-1),i=h+c|0,i=N>>>0>(k=N+k|0)>>>0?i+1|0:i,N=K(Et,lt,136657,0),c=h+i|0,f0=k=N+k|0,DA=N>>>0>k>>>0?c+1|0:c,c=K(RA,0,j,0),i=h,N=c,c=K(mA,0,YA,0),i=h+i|0,i=c>>>0>(N=N+c|0)>>>0?i+1|0:i,c=K(rA,0,bA,0),k=h+i|0,k=c>>>0>(N=c+N|0)>>>0?k+1|0:k,i=K(SA,0,wA,0),c=h+k|0,i=c=i>>>0>(N=i+N|0)>>>0?c+1|0:c,A0=N=(c=og>>>7&2097151)+N|0,N=c>>>0>N>>>0?i+1|0:i,i=K(rA,0,j,0),c=h,k=i,i=K(RA,0,YA,0),c=h+c|0,c=i>>>0>(k=k+i|0)>>>0?c+1|0:c,i=K(SA,0,bA,0),c=h+c|0,c=i>>>0>(k=i+k|0)>>>0?c+1|0:c,HA=(i=k)+(k=2097151&((3&Y0)<<30|S0>>>2))|0,i=c,C0=HA,x0=k=(HA=i=k>>>0>HA>>>0?i+1|0:i)-(((i=C0)>>>0<4293918720)-1|0)|0,c=(c=k>>>21|0)+N|0,A0=k=(i=(2097151&k)<<11|(tg=i- -1048576|0)>>>21)+A0|0,P0=c=i>>>0>k>>>0?c+1|0:c,ft=(i=k)- -1048576|0,gt=N=c-((i>>>0<4293918720)-1|0)|0,i=(c=N>>>21|0)+Lt|0,i=(N=G0+((2097151&N)<<11|ft>>>21)|0)>>>0>>0?i+1|0:i,G0=((k=N)-(c=-2097152&Fr)|0)+(N=K(o0,E0,666643,0))|0,c=h+(i-((c>>>0>k>>>0)+cg|0)|0)|0,c=N>>>0>G0>>>0?c+1|0:c,i=K(zA,hg,470296,0),c=h+c|0,c=i>>>0>(N=i+G0|0)>>>0?c+1|0:c,k=(i=N)+(N=K(nt,rt,136657,0))|0,i=h+c|0,i=N>>>0>k>>>0?i+1|0:i,c=K(bt,dt,654183,0),i=h+i|0,i=c>>>0>(N=c+k|0)>>>0?i+1|0:i,c=K(Et,lt,-997805,-1),k=h+i|0,it=N=c+N|0,M0=k=c>>>0>N>>>0?k+1|0:k,et=(i=N)- -1048576|0,G0=N=k-((i>>>0<4293918720)-1|0)|0,c=(i=N>>21)+DA|0,DA=k=(N=(2097151&N)<<11|et>>>21)+f0|0,N=c=N>>>0>k>>>0?c+1|0:c,f0=k=c-(((i=k)>>>0<4293918720)-1|0)|0,c=(2097151&k)<<11|(Bt=i- -1048576|0)>>>21,k=(k>>21)+Qg|0,Gg=Qt=c+sg|0,Qt=c>>>0>Qt>>>0?k+1|0:k,k=jA>>21,jA=(i=(2097151&jA)<<11|I0>>>21)+(a0-(c=-2097152&Rt)|0)|0,c=k+(H0-((c>>>0>a0>>>0)+X0|0)|0)|0,H0=c=i>>>0>jA>>>0?c+1|0:c,X0=c=c-(((i=jA)>>>0<4293918720)-1|0)|0,Jt=k=c>>21,c=K(og=(2097151&c)<<11|(Rt=i- -1048576|0)>>>21,k,-683901,-1),i=h+N|0,i=c>>>0>(k=c+DA|0)>>>0?i+1|0:i,sg=k-(c=-2097152&Bt)|0,Qg=i-((c>>>0>k>>>0)+f0|0)|0,i=K(og,Jt,136657,0),c=h+M0|0,c=i>>>0>(N=i+it|0)>>>0?c+1|0:c,Lt=N-(i=-2097152&et)|0,cg=c-((i>>>0>N>>>0)+G0|0)|0,N=(i=K(zA,hg,666643,0))+(A0-(c=-2097152&ft)|0)|0,c=h+(P0-((c>>>0>A0>>>0)+gt|0)|0)|0,c=i>>>0>N>>>0?c+1|0:c,k=(i=N)+(N=K(nt,rt,-997805,-1))|0,i=h+c|0,i=N>>>0>k>>>0?i+1|0:i,N=(c=K(bt,dt,470296,0))+k|0,k=h+i|0,k=c>>>0>N>>>0?k+1|0:k,i=K(Et,lt,654183,0),c=h+k|0,P0=N=i+N|0,a0=i>>>0>N>>>0?c+1|0:c,DA=HA,c=K(SA,0,j,0),i=h,N=c,c=K(rA,0,YA,0),i=h+i|0,i=c>>>0>(N=N+c|0)>>>0?i+1|0:i,c=N,c=(N=d0>>>5&2097151)>>>0>(k=c+N|0)>>>0?i+1|0:i,N=2097151&w0,HA=K(SA,0,YA,0)+N|0,i=h,M0=N=(gt=i=N>>>0>HA>>>0?i+1|0:i)-(((i=HA)>>>0<4293918720)-1|0)|0,A0=k,c=c+(k=N>>>21|0)|0,G0=c=(i=(2097151&N)<<11|(ft=i- -1048576|0)>>>21)>>>0>(N=A0+i|0)>>>0?c+1|0:c,it=(i=N)- -1048576|0,f0=c=c-((i>>>0<4293918720)-1|0)|0,i=(k=c>>>21|0)+DA|0,i=(c=(2097151&c)<<11|it>>>21)>>>0>(A0=c+C0|0)>>>0?i+1|0:i,A0=(k=K(nt,rt,654183,0))+((DA=A0)-(c=-2097152&tg)|0)|0,c=h+(i-((16383&x0)+(c>>>0>DA>>>0)|0)|0)|0,i=K(bt,dt,666643,0),k=h+(k>>>0>A0>>>0?c+1|0:c)|0,k=i>>>0>(DA=i+A0|0)>>>0?k+1|0:k,c=K(Et,lt,470296,0),i=h+k|0,et=DA=c+DA|0,C0=i=c>>>0>DA>>>0?i+1|0:i,Bt=(i=DA)- -1048576|0,A0=c=C0-((i>>>0<4293918720)-1|0)|0,i=(k=c>>21)+a0|0,x0=DA=(c=(2097151&c)<<11|Bt>>>21)+P0|0,c=i=c>>>0>DA>>>0?i+1|0:i,P0=(i=DA)- -1048576|0,i=(k=(DA=a0=c-((i>>>0<4293918720)-1|0)|0)>>21)+cg|0,a0=(a0=(2097151&DA)<<11|P0>>>21)>>>0>(Lt=tg=a0+Lt|0)>>>0?i+1|0:i,i=K(og,Jt,-997805,-1),c=h+c|0,c=i>>>0>(k=i+x0|0)>>>0?c+1|0:c,cg=k-(i=-2097152&P0)|0,tg=c-((i>>>0>k>>>0)+DA|0)|0,i=K(og,Jt,654183,0),c=h+C0|0,c=i>>>0>(k=i+et|0)>>>0?c+1|0:c,x0=k-(i=-2097152&Bt)|0,P0=c-((i>>>0>k>>>0)+A0|0)|0,k=(c=K(nt,rt,470296,0))+(N-(i=-2097152&it)|0)|0,i=h+(G0-((16383&f0)+(i>>>0>N>>>0)|0)|0)|0,i=c>>>0>k>>>0?i+1|0:i,N=(c=K(Et,lt,666643,0))+k|0,k=h+i|0,k=c>>>0>N>>>0?k+1|0:k,DA=N,N=(i=K(nt,rt,666643,0))+(HA-(c=-2097152&ft)|0)|0,c=h+(gt-((4095&M0)+(c>>>0>HA>>>0)|0)|0)|0,C0=c=i>>>0>N>>>0?c+1|0:c,M0=(i=N)- -1048576|0,A0=HA=c-((i>>>0<4293918720)-1|0)|0,k=(i=HA>>21)+k|0,G0=HA=(c=(2097151&HA)<<11|M0>>>21)+DA|0,DA=k=c>>>0>HA>>>0?k+1|0:k,f0=(i=HA)- -1048576|0,HA=k=k-((i>>>0<4293918720)-1|0)|0,c=(i=k>>21)+P0|0,k=c=(k=(2097151&k)<<11|f0>>>21)>>>0>(gt=k+x0|0)>>>0?c+1|0:c,c=K(og,Jt,470296,0),i=h+DA|0,i=c>>>0>(G0=c+G0|0)>>>0?i+1|0:i,c=G0-(DA=-2097152&f0)|0,DA=i-((DA>>>0>G0>>>0)+HA|0)|0,f0=c,HA=(i=K(og,Jt,666643,0))+(N-(c=-2097152&M0)|0)|0,c=h+(C0-((c>>>0>N>>>0)+A0|0)|0)|0,i=(i=(c=i>>>0>HA>>>0?c+1|0:c)>>21)+DA|0,A0=N=f0+(c=(2097151&c)<<11|(N=HA)>>>21)|0,k=(c=(i=c>>>0>N>>>0?i+1|0:i)>>21)+k|0,DA=N=(i=(2097151&i)<<11|N>>>21)+gt|0,N=(2097151&(k=i>>>0>(c=N)>>>0?k+1|0:k))<<11|c>>>21,c=(i=k>>21)+tg|0,G0=k=N+cg|0,k=(c=N>>>0>(i=k)>>>0?c+1|0:c)>>21,c=(2097151&c)<<11|i>>>21,i=k+a0|0,it=N=c+Lt|0,c=(c=(i=c>>>0>N>>>0?i+1|0:i)>>21)+Qg|0,et=N=(i=(2097151&i)<<11|N>>>21)+sg|0,i=(i=(c=i>>>0>N>>>0?c+1|0:c)>>21)+Qt|0,Bt=N=(c=(2097151&c)<<11|N>>>21)+Gg|0,k=(c=(i=c>>>0>N>>>0?i+1|0:i)>>21)+Vg|0,x0=N=(i=(2097151&i)<<11|N>>>21)+Tg|0,N=(2097151&(k=i>>>0>(c=N)>>>0?k+1|0:k))<<11|c>>>21,c=(i=k>>21)+R0|0,P0=k=N+xt|0,k=(c=N>>>0>(i=k)>>>0?c+1|0:c)>>21,c=(2097151&c)<<11|i>>>21,i=k+Dt|0,Qt=N=c+mr|0,c=(c=(i=c>>>0>N>>>0?i+1|0:i)>>21)+we|0,gt=N=(i=(2097151&i)<<11|N>>>21)+le|0,i=(c=i>>>0>N>>>0?c+1|0:c)>>21,C0=(k=(2097151&c)<<11|N>>>21)+(c=jA-(N=-2097152&Rt)|0)|0,k=(H0-((N>>>0>jA>>>0)+X0|0)|0)+i|0,M0=C0,X0=(2097151&(k=c>>>0>(i=C0)>>>0?k+1|0:k))<<11|i>>>21,a0=c=k>>21,i=2097151&HA,N=K(X0,c,666643,0)+i|0,c=h,C0=N,N=c=i>>>0>N>>>0?c+1|0:c,p[0|H]=C0,p[H+1|0]=(255&c)<<24|C0>>>8,HA=H,c=2097151&A0,k=K(X0,a0,470296,0)+c|0,i=h,i=c>>>0>k>>>0?i+1|0:i,A0=k,jA=(2097151&(k=N))<<11|C0>>>21,k=i+(c=k>>21)|0,k=jA>>>0>(A0=A0+jA|0)>>>0?k+1|0:k,jA=A0,p[HA+4|0]=(2047&k)<<21|jA>>>11,i=k,k=jA,p[HA+3|0]=(7&i)<<29|k>>>3,k=2097151&DA,DA=K(X0,a0,654183,0)+k|0,c=h,c=k>>>0>DA>>>0?c+1|0:c,k=DA,DA=(2097151&i)<<11|jA>>>21,i=(i>>21)+c|0,c=i=DA>>>0>(A0=k+DA|0)>>>0?i+1|0:i,p[HA+6|0]=(63&i)<<26|A0>>>6,DA=0,i=f0=2097151&jA,p[HA+2|0]=31&((65535&N)<<16|C0>>>16)|i<<5,N=2097151&G0,k=K(X0,a0,-997805,-1)+N|0,i=h,N=i=N>>>0>k>>>0?i+1|0:i,i=c>>21,jA=(c=(2097151&c)<<11|A0>>>21)+k|0,k=i+N|0,C0=jA,k=c>>>0>jA>>>0?k+1|0:k,p[HA+9|0]=(511&k)<<23|jA>>>9,i=k,p[HA+8|0]=(1&i)<<31|jA>>>1,jA=0,N=G0=2097151&A0,p[HA+5|0]=(524287&DA)<<13|f0>>>19|N<<2,N=2097151&it,k=K(X0,a0,136657,0)+N|0,c=h,c=N>>>0>k>>>0?c+1|0:c,N=k,c=c+(k=i>>21)|0,A0=N=N+(i=(2097151&i)<<11|C0>>>21)|0,c=i>>>0>N>>>0?c+1|0:c,p[HA+12|0]=(4095&c)<<20|N>>>12,N=c,i=c,c=A0,p[HA+11|0]=(15&i)<<28|c>>>4,HA=0,c=f0=2097151&C0,p[H+7|0]=(16383&jA)<<18|G0>>>14|c<<7,k=H,c=2097151&et,jA=K(X0,a0,-683901,-1)+c|0,i=h,i=(i=c>>>0>jA>>>0?i+1|0:i)+(c=N>>21)|0,c=i=(N=(2097151&N)<<11|A0>>>21)>>>0>(DA=jA=N+jA|0)>>>0?i+1|0:i,p[k+14|0]=(127&i)<<25|DA>>>7,jA=0,N=C0=2097151&A0,p[k+10|0]=(131071&HA)<<15|f0>>>17|N<<4,N=k,i>>=21,k=(c=(2097151&c)<<11|DA>>>21)>>>0>(A0=c+(2097151&Bt)|0)>>>0?i+1|0:i,p[N+17|0]=(1023&k)<<22|A0>>>10,i=k,p[N+16|0]=(3&i)<<30|A0>>>2,N=a0=2097151&DA,p[H+13|0]=(1048575&jA)<<12|C0>>>20|N<<1,c=i,i>>=21,c=(k=(2097151&c)<<11|A0>>>21)>>>0>(DA=k+(2097151&x0)|0)>>>0?i+1|0:i,p[(N=H)+20|0]=(8191&c)<<19|DA>>>13,i=c,c=DA,p[N+19|0]=(31&i)<<27|c>>>5,c=C0=2097151&A0,p[N+15|0]=(32767&HA)<<17|a0>>>15|c<<6,c=i,i>>=21,c=(N=(2097151&c)<<11|DA>>>21)>>>0>(a0=N+(2097151&P0)|0)>>>0?i+1|0:i,p[H+21|0]=a0,i=DA,p[H+18|0]=(262143&jA)<<14|C0>>>18|i<<3,N=c,i=c,c=a0,p[H+22|0]=(255&i)<<24|c>>>8,c=i>>21,k=(i=(2097151&i)<<11|a0>>>21)>>>0>(DA=i+(2097151&Qt)|0)>>>0?c+1|0:c,p[H+25|0]=(2047&k)<<21|DA>>>11,i=k,k=DA,p[H+24|0]=(7&i)<<29|k>>>3,c=i>>21,c=(HA=(2097151&i)<<11|DA>>>21)>>>0>(A0=HA+(2097151>)|0)>>>0?c+1|0:c,HA=A0,i=c,p[(k=H)+27|0]=(63&i)<<26|HA>>>6,k=0,c=A0=2097151&DA,p[H+23|0]=31&((65535&N)<<16|a0>>>16)|c<<5,c=i,i>>=21,i=(c=(2097151&c)<<11|HA>>>21)>>>0>(jA=c+(2097151&M0)|0)>>>0?i+1|0:i,N=jA,p[H+31|0]=(131071&i)<<15|N>>>17,p[H+30|0]=(511&i)<<23|N>>>9,p[H+29|0]=(1&i)<<31|N>>>1,i=0,DA=HA&=2097151,p[H+26|0]=(524287&k)<<13|A0>>>19|DA<<2,p[H+28|0]=(16383&i)<<18|DA>>>14|N<<7}(f,s+160|0,s+288|0,s+224|0),Q0(s+288|0,64),Q0(s+224|0,64),t&&(r[t>>2]=64,r[t+4>>2]=0),BA=s+560|0,0}function V0(e,t,n){var o,a=0,f=0;if(n>>>0>=512)return Dg(0|e,0|t,0|n),e;o=e+n|0;A:if(3&(e^t))if(o>>>0<4)n=e;else if((a=o-4|0)>>>0>>0)n=e;else for(n=e;p[0|n]=u[0|t],p[n+1|0]=u[t+1|0],p[n+2|0]=u[t+2|0],p[n+3|0]=u[t+3|0],t=t+4|0,a>>>0>=(n=n+4|0)>>>0;);else{t:if((0|n)<1)n=e;else if(3&e)for(n=e;;){if(p[0|n]=u[0|t],t=t+1|0,o>>>0<=(n=n+1|0)>>>0)break t;if(!(3&n))break}else n=e;if(!((a=-4&o)>>>0<64||(f=a+-64|0)>>>0>>0))for(;r[n>>2]=r[t>>2],r[n+4>>2]=r[t+4>>2],r[n+8>>2]=r[t+8>>2],r[n+12>>2]=r[t+12>>2],r[n+16>>2]=r[t+16>>2],r[n+20>>2]=r[t+20>>2],r[n+24>>2]=r[t+24>>2],r[n+28>>2]=r[t+28>>2],r[n+32>>2]=r[t+32>>2],r[n+36>>2]=r[t+36>>2],r[n+40>>2]=r[t+40>>2],r[n+44>>2]=r[t+44>>2],r[n+48>>2]=r[t+48>>2],r[n+52>>2]=r[t+52>>2],r[n+56>>2]=r[t+56>>2],r[n+60>>2]=r[t+60>>2],t=t- -64|0,f>>>0>=(n=n- -64|0)>>>0;);if(n>>>0>=a>>>0)break A;for(;r[n>>2]=r[t>>2],t=t+4|0,a>>>0>(n=n+4|0)>>>0;);}if(n>>>0>>0)for(;p[0|n]=u[0|t],t=t+1|0,(0|o)!=(0|(n=n+1|0)););return e}function wt(e,t,n,o){var a,f=0,E=0,s=0,y=0,_=0,w=0,D=0;if(BA=a=BA-704|0,n|o)if(f=o<<3|n>>>29,s=(D=r[(E=e)+72>>2])+(_=n<<3)|0,f=f+(y=r[E+76>>2])|0,w=s,r[E+72>>2]=s,f=s>>>0<_>>>0?f+1|0:f,r[E+76>>2]=f,w=(_=(0|f)==(0|y)&D>>>0>w>>>0|f>>>0>>0)+r[(E=s=E- -64|0)>>2]|0,f=r[E+4>>2],f=_>>>0>w>>>0?f+1|0:f,s=(_=o>>>29|0)+w|0,r[E>>2]=s,r[E+4>>2]=s>>>0<_>>>0?f+1|0:f,(0|(f=o))==(0|(w=0-((y=127&((7&y)<<29|D>>>3))>>>0>128)|0))&n>>>0>=(s=128-y|0)>>>0|f>>>0>w>>>0){for(E=0,f=0;p[80+(e+(_=E+y|0)|0)|0]=u[t+E|0],(0|s)!=(0|(E=E+1|0))|(0|(f=E>>>0<1?f+1|0:f))!=(0|w););if(Ar(e,e+80|0,a,f=a+640|0),t=t+s|0,!(o=o-((n>>>0>>0)+w|0)|0)&(n=n-s|0)>>>0>127|o)for(;Ar(e,t,a,f),t=t+128|0,!(o=o-(n>>>0<128)|0)&(n=n-128|0)>>>0>127|o;);if(n|o)for(E=0,f=0;p[80+(e+E|0)|0]=u[t+E|0],(0|n)!=(0|(E=y=E+1|0))|(0|o)!=(0|(f=y>>>0<1?f+1|0:f)););Q0(a,704)}else for(E=n,s=(n=!o&n>>>0>1|(0|o)!=0)?E:1,D=n?o:0,E=0,f=0;p[80+(e+(o=E+y|0)|0)|0]=u[t+E|0],(0|s)!=(0|(E=n=E+1|0))|(0|(f=n>>>0<1?f+1|0:f))!=(0|D););return BA=a+704|0,0}function xB(e,t,n,o,a,f,E,s){e|=0,t|=0,n|=0,o|=0,a|=0,f|=0,E|=0,s|=0;var y,_=0,w=0,D=0,v=0,Y=0,U=0,H=0,i=0,c=0;BA=y=BA-16|0,r[y+12>>2]=0,Ca(s);A:{if(o){i=4&s;t:{g:{r:{for(;;){_=v;e:{a:{for(;;){if(U=p[n+_|0],(0|(D=i?kn(U):Gn(U)))!=255)break a;if(!a)break e;if(!yr(a,U))break r;if(!((_=_+1|0)>>>0>>0))break}e=v+1|0,r[y+12>>2]=e>>>0>>0?o:e;break g}if(H=(H<<6)+D|0,(D=w+6|0)>>>0<8)w=D;else{if(w=w-2|0,t>>>0<=Y>>>0){r[y+12>>2]=_,r[8960]=68,_=1;break t}p[e+Y|0]=H>>>w,Y=Y+1|0}if((v=_+1|0)>>>0>>0)continue}break}r[y+12>>2]=v;break g}r[y+12>>2]=_}_=0}if(!(w>>>0<=4)){e=-1;break A}}if(e=-1,!((-1<>2];;){g:{if(l>>>0<=W>>>0)r[8960]=68;else{if((0|(O=p[N+W|0]))==61){V=V-1|0;break g}if(b&&yr(b,O))break g;r[8960]=28}z=-1;break t}if(W=W+1|0,r[F>>2]=W,!V)break}return z}(n,o,y+12|0,a,w>>>1|0)))){e=0;t:if(a&&!((_=r[y+12>>2])>>>0>=o>>>0)){g:{for(;;){if(!yr(a,p[n+_|0]))break g;if((0|(_=_+1|0))==(0|o))break}r[y+12>>2]=o;break t}r[y+12>>2]=_}c=Y}}return t=r[y+12>>2],E?r[E>>2]=t+n:(0|t)!=(0|o)&&(r[8960]=28,e=-1),f&&(r[f>>2]=c),BA=y+16|0,0|e}function Ia(e,t,n){var o,a,f,E=0;BA=o=BA-16|0,a=r[e+20>>2],r[e+20>>2]=0,f=r[e+4>>2],r[e+4>>2]=0,E=-26;A:{t:{g:switch(n-1|0){case 1:if(E=-32,Mt(t,35621,9))break A;t=t+9|0;break t;case 0:break g;default:break A}if(E=-32,Mt(t,35631,8))break A;t=t+8|0}if(!Mt(t,35640,3)&&(t=nr(t+3|0,o+12|0))){if(E=-26,r[o+12>>2]!=19)break A;if(!Mt(t,35644,3)&&(t=nr(t+3|0,o+12|0))&&(r[e+44>>2]=r[o+12>>2],!Mt(t,35648,3)&&(t=nr(t+3|0,o+12|0))&&(r[e+40>>2]=r[o+12>>2],!Mt(t,35652,3)&&(t=nr(t+3|0,o+12|0))&&(n=r[o+12>>2],r[e+48>>2]=n,r[e+52>>2]=n,(0|(n=u[0|t]))==36&&(r[o+12>>2]=a,t=(0|n)==36?t+1|0:t,!xB(r[e+16>>2],a,t,Ut(t),0,o+12|0,o+8|0,3)&&(r[e+20>>2]=r[o+12>>2],t=r[o+8>>2],(0|(n=u[0|t]))==36&&(r[o+12>>2]=f,t=(0|n)==36?t+1|0:t,!xB(r[e>>2],f,t,Ut(t),0,o+12|0,o+8|0,3)))))))){if(r[e+4>>2]=r[o+12>>2],t=r[o+8>>2],E=qB(e))break A;return BA=o+16|0,u[0|t]?-32:0}}E=-32}return BA=o+16|0,E}function er(e,t){var n;for(BA=n=BA-192|0,k0(n+144|0,t),k0(n+96|0,n+144|0),k0(n+96|0,n+96|0),_0(n+96|0,t,n+96|0),_0(n+144|0,n+144|0,n+96|0),k0(n+48|0,n+144|0),_0(n+96|0,n+96|0,n+48|0),k0(n+48|0,n+96|0),t=1;k0(n+48|0,n+48|0),(0|(t=t+1|0))!=5;);for(_0(n+96|0,n+48|0,n+96|0),k0(n+48|0,n+96|0),t=1;k0(n+48|0,n+48|0),(0|(t=t+1|0))!=10;);for(_0(n+48|0,n+48|0,n+96|0),k0(n,n+48|0),t=1;k0(n,n),(0|(t=t+1|0))!=20;);for(_0(n+48|0,n,n+48|0),t=1;k0(n+48|0,n+48|0),(0|(t=t+1|0))!=11;);for(_0(n+96|0,n+48|0,n+96|0),k0(n+48|0,n+96|0),t=1;k0(n+48|0,n+48|0),(0|(t=t+1|0))!=50;);for(_0(n+48|0,n+48|0,n+96|0),k0(n,n+48|0),t=1;k0(n,n),(0|(t=t+1|0))!=100;);for(_0(n+48|0,n,n+48|0),t=1;k0(n+48|0,n+48|0),(0|(t=t+1|0))!=51;);for(_0(n+96|0,n+48|0,n+96|0),t=1;k0(n+96|0,n+96|0),(0|(t=t+1|0))!=6;);_0(e,n+96|0,n+144|0),BA=n+192|0}function ua(e,t){var n,o,a,f,E,s,y,_,w,D,v=0,Y=0,U=0,H=0,i=0,c=0,N=0;(Y=U=r[e+60>>2])|(v=r[e+56>>2])&&(U=v,p[(H=v+e|0)- -64|0]=1,!(Y=(v=v+1|0)>>>0<1?Y+1|0:Y)&v>>>0<=15&&L0(H+65|0,0,15-U|0),p[e+80|0]=1,NB(e,e- -64|0,16,0)),w=r[e+52>>2],D=r[e+48>>2],U=r[e+44>>2],N=r[e+24>>2],i=r[e+28>>2]+(N>>>26|0)|0,v=r[e+32>>2]+(i>>>26|0)|0,_=(n=(f=(-67108864|(a=r[e+36>>2]+(v>>>26|0)|0))+((y=(s=67108863&v)+((i=(c=67108863&i)+((Y=(v=(67108863&N)+((Y=r[e+20>>2]+xA(a>>>26|0,5)|0)>>>26|0)|0)+((E=5+(H=67108863&Y)|0)>>>26|0)|0)>>>26|0)|0)>>>26|0)|0)>>>26|0)|0)>>31)&v|(o=67108863&(N=(f>>>31|0)-1|0))&Y,Y=0,Y=(v=H&n|o&E|_<<26)>>>0>(H=v+r[e+40>>2]|0)>>>0?1:Y,y0(t,H),i=(v=(c=c&n|i&o)<<20|_>>>6)+U|0,U=0,U=v>>>0>i>>>0?1:U,v=Y,Y=U,Y=v>>>0>(i=v+i|0)>>>0?Y+1|0:Y,y0(t+4|0,i),U=0,U=(v=(H=n&s|o&y)<<14|c>>>12)>>>0>(c=v+D|0)>>>0?1:U,v=Y,Y=U,Y=v>>>0>(c=v+c|0)>>>0?Y+1|0:Y,y0(t+8|0,c),y0(U=t+12|0,Y=Y+(H=(t=(N&f|n&a)<<8|H>>>18)+w|0)|0),Q0(e,88)}function JB(e,t,n,o,a){e|=0,t|=0,n|=0,o|=0;var f=0,E=0,s=0,y=0,_=0,w=0,D=0,v=0,Y=0;Ca(a|=0),E=(f=(o>>>0)/3|0)<<2,(f=xA(f,-3)+o|0)&&(E=2&a?(2|E)+(f>>>1|0)|0:E+4|0);A:{t:{g:{r:{if(t>>>0>E>>>0){if(!(4&a)){if(s=0,!o)break g;a=0,f=0;break r}if(s=0,!o)break g;for(a=0,f=0;;){for(_=u[n+y|0]|_<<8,a=a+8|0;w=f,D=a,v=e+f|0,Y=Ta(_>>>(a=a-6|0)&63),p[0|v]=Y,f=f+1|0,a>>>0>5;);if((0|(y=y+1|0))==(0|o))break}if(s=f,!a)break g;v=e+f|0,Y=Ta(_<<12-D&63),p[0|v]=Y,s=w+2|0;break g}z0(),s0()}for(;;){for(_=u[n+y|0]|_<<8,a=a+8|0;w=f,D=a,v=e+f|0,Y=Va(_>>>(a=a-6|0)&63),p[0|v]=Y,f=f+1|0,a>>>0>5;);if((0|(y=y+1|0))==(0|o))break}s=f,a&&(v=e+f|0,Y=Va(_<<12-D&63),p[0|v]=Y,s=w+2|0)}if((f=s)>>>0<=E>>>0){if(f>>>0>>0)break t;E=f;break A}D0(35568,35587,230,35603),s0()}L0(e+f|0,61,E-f|0)}return L0(e+E|0,0,(t>>>0>(n=E+1|0)>>>0?t:n)-E|0),0|e}function _a(e,t,n,o){var a=0,f=0,E=0,s=0,y=0,_=0;A:{if((a=r[e+56>>2])|(f=r[e+60>>2])){if(_=e,y=E=16-a|0,y=(E=(0|(s=0-((a>>>0>16)+f|0)|0))==(0|o)&n>>>0>>0|o>>>0>>0)?n:y,(E=s=E?o:s)|y){if(p[(e+a|0)- -64|0]=u[0|t],f=1,a=0,(0|y)!=1|E)for(;s=f+r[e+56>>2]|0,p[(e+s|0)- -64|0]=u[t+f|0],(0|y)!=(0|(f=f+1|0))|(0|(a=f>>>0<1?a+1|0:a))!=(0|E););a=r[e+56>>2],f=r[e+60>>2]}if(s=a+y|0,a=f+E|0,f=s,r[_+56>>2]=f,a=f>>>0>>0?a+1|0:a,r[_+60>>2]=a,!a&f>>>0<16)break A;NB(e,e- -64|0,16,0),r[e+56>>2]=0,r[e+60>>2]=0,n=(a=n)-(f=y)|0,o=o-((a>>>0>>0)+E|0)|0,t=t+f|0}if(!o&n>>>0>=16|o&&(NB(e,t,a=-16&n,o),n&=15,o=0,t=t+a|0),n|o){for(f=0,a=0;_=f+r[e+56>>2]|0,p[(e+_|0)- -64|0]=u[t+f|0],(0|n)!=(0|(f=f+1|0))|(0|o)!=(0|(a=f>>>0<1?a+1|0:a)););t=e,a=n+r[e+56>>2]|0,e=o+r[e+60>>2]|0,r[t+56>>2]=a,r[t+60>>2]=n>>>0>a>>>0?e+1|0:e}}}function wn(e,t){var n=0,o=0,a=0,f=0,E=0,s=0,y=0,_=0,w=0,D=0,v=0,Y=0,U=0;A:if(e&&(r[e+36>>2]!=2||(a=r[t>>2],u[t+8|0]<2&&!a)?(function(H,i,c){var N,l=0,F=0,b=0;if(BA=N=BA-4096|0,pr(N+3072|0),pr(N+2048|0),!(!H|!i)&&(r[N+2048>>2]=r[i>>2],r[N+2052>>2]=0,r[N+2056>>2]=r[i+4>>2],r[N+2060>>2]=0,r[N+2064>>2]=u[i+8|0],r[N+2068>>2]=0,r[N+2072>>2]=r[H+16>>2],r[N+2076>>2]=0,r[N+2080>>2]=r[H+8>>2],r[N+2084>>2]=0,r[N+2088>>2]=r[H+36>>2],r[N+2092>>2]=0,r[H+20>>2]))for(i=0;(b=127&i)||(l=r[N+2100>>2],l=(F=r[N+2096>>2]+1|0)>>>0<1?l+1|0:l,r[N+2096>>2]=F,r[N+2100>>2]=l,pr(N),pr(N+1024|0),HB(N+3072|0,N+2048|0,N),HB(N+3072|0,N,N+1024|0)),b=r[4+(F=(N+1024|0)+(b<<3)|0)>>2],r[(l=(i<<3)+c|0)>>2]=r[F>>2],r[l+4>>2]=b,(i=i+1|0)>>>0>2];);BA=N+4096|0}(e,t,_=r[e+4>>2]),a=r[t>>2],o=0):(_=r[e+4>>2],o=1),D=o,!((E=!((o=u[t+8|0])|a)<<1)>>>0>=(n=r[e+20>>2])>>>0)))for(f=r[e+24>>2],n=(a=(xA(f,r[t+4>>2])+E|0)+xA(n,o)|0)+((a>>>0)%(f>>>0)|0?-1:f-1|0)|0;;){if(w=((a>>>0)%(f>>>0)|0)==1?a-1|0:n,D?(s=r[e>>2],n=r[s+4>>2]+(w<<10)|0):(s=r[e>>2],n=(E<<3)+_|0),o=r[n+4>>2],v=r[n>>2],n=r[e+28>>2],r[t+12>>2]=E,o=(o>>>0)%(n>>>0)|0,y=r[t+4>>2],n=u[t+8|0]?o:y,s=r[s+4>>2],Y=f,U=o,f=r[t>>2],y=(s+(xA(Y,n=(o=f)?U:n)<<10)|0)+(dn(e,t,v,!0&(0|n)==(0|y))<<10)|0,o=s+(w<<10)|0,n=s+(a<<10)|0,f?HB(o,y,n):_n(o,y,n),(E=E+1|0)>>>0>=OA[e+20>>2])break A;a=a+1|0,n=w+1|0,f=r[e+24>>2]}}function rr(e,t,n){var o,a,f,E,s,y,_,w,D,v,Y,U,H=0,i=0,c=0,N=0,l=0,F=0,b=0,V=0,W=0;o=r[t+4>>2],a=r[e+4>>2],f=r[t+8>>2],i=r[e+8>>2],E=r[t+12>>2],c=r[e+12>>2],s=r[t+16>>2],N=r[e+16>>2],y=r[t+20>>2],l=r[e+20>>2],_=r[t+24>>2],F=r[e+24>>2],w=r[t+28>>2],b=r[e+28>>2],D=r[t+32>>2],V=r[e+32>>2],v=r[t+36>>2],W=r[e+36>>2],U=(n=0-n|0)&((Y=r[t>>2])^(H=r[e>>2])),r[e>>2]=U^H,H=W,W=n&(W^v),r[e+36>>2]=H^W,H=V,V=n&(V^D),r[e+32>>2]=H^V,H=b,b=n&(b^w),r[e+28>>2]=H^b,H=F,F=n&(F^_),r[e+24>>2]=H^F,H=l,l=n&(l^y),r[e+20>>2]=H^l,H=N,N=n&(N^s),r[e+16>>2]=H^N,H=c,c=n&(c^E),r[e+12>>2]=H^c,H=i,i=n&(i^f),r[e+8>>2]=H^i,H=e,e=n&(o^a),r[H+4>>2]=e^a,r[t+36>>2]=W^v,r[t+32>>2]=V^D,r[t+28>>2]=b^w,r[t+24>>2]=F^_,r[t+20>>2]=l^y,r[t+16>>2]=N^s,r[t+12>>2]=c^E,r[t+8>>2]=i^f,r[t+4>>2]=e^o,r[t>>2]=Y^U}function pa(e,t){var n;r[e>>2]=67108863&(u[0|t]|u[t+1|0]<<8|u[t+2|0]<<16|u[t+3|0]<<24),r[e+4>>2]=(u[t+3|0]|u[t+4|0]<<8|u[t+5|0]<<16|u[t+6|0]<<24)>>>2&67108611,r[e+8>>2]=(u[t+6|0]|u[t+7|0]<<8|u[t+8|0]<<16|u[t+9|0]<<24)>>>4&67092735,r[e+12>>2]=(u[t+9|0]|u[t+10|0]<<8|u[t+11|0]<<16|u[t+12|0]<<24)>>>6&66076671,n=u[t+12|0]|u[t+13|0]<<8|u[t+14|0]<<16|u[t+15|0]<<24,r[e+20>>2]=0,r[e+24>>2]=0,r[e+28>>2]=0,r[e+32>>2]=0,r[e+36>>2]=0,r[e+16>>2]=n>>>8&1048575,r[e+40>>2]=u[t+16|0]|u[t+17|0]<<8|u[t+18|0]<<16|u[t+19|0]<<24,r[e+44>>2]=u[t+20|0]|u[t+21|0]<<8|u[t+22|0]<<16|u[t+23|0]<<24,r[e+48>>2]=u[t+24|0]|u[t+25|0]<<8|u[t+26|0]<<16|u[t+27|0]<<24,t=u[t+28|0]|u[t+29|0]<<8|u[t+30|0]<<16|u[t+31|0]<<24,p[e+80|0]=0,r[e+56>>2]=0,r[e+60>>2]=0,r[e+52>>2]=t}function Br(e,t,n){var o=0;A:if((0|e)!=(0|t)){if((t-e|0)-n>>>0<=0-(n<<1)>>>0)return V0(e,t,n);if(o=3&(e^t),e>>>0>>0){if(o)o=e;else{if(3&e)for(o=e;;){if(!n)break A;if(p[0|o]=u[0|t],t=t+1|0,n=n-1|0,!(3&(o=o+1|0)))break}else o=e;if(!(n>>>0<=3))for(;r[o>>2]=r[t>>2],t=t+4|0,o=o+4|0,(n=n-4|0)>>>0>3;);}if(n)for(;p[0|o]=u[0|t],o=o+1|0,t=t+1|0,n=n-1|0;);}else{if(!o){if(e+n&3)for(;;){if(!n)break A;if(p[0|(o=(n=n-1|0)+e|0)]=u[t+n|0],!(3&o))break}if(!(n>>>0<=3))for(;r[(n=n-4|0)+e>>2]=r[t+n>>2],n>>>0>3;);}if(!n)break A;for(;p[(n=n-1|0)+e|0]=u[t+n|0],n;);}}return e}function Jg(e,t){var n,o=0;BA=n=BA-48|0,function(a,f){var E,s,y,_,w,D,v,Y,U=0;s=r[f+28>>2],y=r[f+24>>2],_=r[f+20>>2],w=r[f+16>>2],D=r[f+12>>2],v=r[f+8>>2],Y=r[f+4>>2],U=r[f>>2],E=r[f+36>>2],f=r[f+32>>2],U=xA(((s+(y+(_+(w+(D+(v+(Y+(U+(xA(E,19)+16777216>>>25|0)>>26)>>25)>>26)>>25)>>26)>>25)>>26)>>25)+f>>26)+E>>25,19)+U|0,r[a>>2]=67108863&U,U=Y+(U>>26)|0,r[a+4>>2]=33554431&U,U=v+(U>>25)|0,r[a+8>>2]=67108863&U,U=D+(U>>26)|0,r[a+12>>2]=33554431&U,U=w+(U>>25)|0,r[a+16>>2]=67108863&U,U=_+(U>>26)|0,r[a+20>>2]=33554431&U,U=y+(U>>25)|0,r[a+24>>2]=67108863&U,U=s+(U>>26)|0,r[a+28>>2]=33554431&U,f=f+(U>>25)|0,r[a+32>>2]=67108863&f,r[a+36>>2]=E+(f>>26)&33554431}(n,t),t=r[n>>2],p[0|e]=t,p[e+2|0]=t>>>16,p[e+1|0]=t>>>8,o=r[n+4>>2],p[e+5|0]=o>>>14,p[e+4|0]=o>>>6,p[e+3|0]=o<<2|t>>>24,t=r[n+8>>2],p[e+8|0]=t>>>13,p[e+7|0]=t>>>5,p[e+6|0]=t<<3|o>>>22,o=r[n+12>>2],p[e+11|0]=o>>>11,p[e+10|0]=o>>>3,p[e+9|0]=o<<5|t>>>21,t=r[n+16>>2],p[e+15|0]=t>>>18,p[e+14|0]=t>>>10,p[e+13|0]=t>>>2,p[e+12|0]=t<<6|o>>>19,t=r[n+20>>2],p[e+16|0]=t,p[e+18|0]=t>>>16,p[e+17|0]=t>>>8,o=r[n+24>>2],p[e+21|0]=o>>>15,p[e+20|0]=o>>>7,p[e+19|0]=o<<1|t>>>24,t=r[n+28>>2],p[e+24|0]=t>>>13,p[e+23|0]=t>>>5,p[e+22|0]=t<<3|o>>>23,o=r[n+32>>2],p[e+27|0]=o>>>12,p[e+26|0]=o>>>4,p[e+25|0]=o<<4|t>>>21,t=r[n+36>>2],p[e+31|0]=t>>>18,p[e+30|0]=t>>>10,p[e+29|0]=t>>>2,p[e+28|0]=t<<6|o>>>20,BA=n+48|0}function Ee(e,t,n,o){var a=0,f=0,E=0,s=0,y=0,_=0;A:if(n|o)for(_=e+224|0,E=e+96|0,a=u[e+352|0]|u[e+353|0]<<8|u[e+354|0]<<16|u[e+355|0]<<24;;){if(s=96+(e+a|0)|0,y=f=256-a|0,!o&n>>>0<=f>>>0){V0(s,t,n),t=n+(u[e+352|0]|u[e+353|0]<<8|u[e+354|0]<<16|u[e+355|0]<<24)|0,p[e+352|0]=t,p[e+353|0]=t>>>8,p[e+354|0]=t>>>16,p[e+355|0]=t>>>24;break A}if(V0(s,t,f),a=(u[e+352|0]|u[e+353|0]<<8|u[e+354|0]<<16|u[e+355|0]<<24)+f|0,p[e+352|0]=a,p[e+353|0]=a>>>8,p[e+354|0]=a>>>16,p[e+355|0]=a>>>24,KB(e,128),SB(e,E),V0(E,_,128),a=(u[e+352|0]|u[e+353|0]<<8|u[e+354|0]<<16|u[e+355|0]<<24)-128|0,p[e+352|0]=a,p[e+353|0]=a>>>8,p[e+354|0]=a>>>16,p[e+355|0]=a>>>24,t=t+f|0,!((n=(f=n)-y|0)|(o=o-(f>>>0>>0)|0)))break}return 0}function PB(e,t){var n,o=0,a=0,f=0,E=0;for(BA=n=BA-464|0;a=o<<1,E=u[t+o|0],p[a+(n+400|0)|0]=15&E,p[(n+400|0)+(1|a)|0]=E>>>4,(0|(o=o+1|0))!=32;);for(o=0;t=((a=(t=o)+u[0|(o=(n+400|0)+f|0)]|0)<<24)- -134217728|0,p[0|o]=a-(t>>24&240),o=t>>28,(0|(f=f+1|0))!=63;);for(p[n+463|0]=u[n+463|0]+o,on(e),o=1;yn(n,o>>>1|0,p[(n+400|0)+o|0]),WB(n+240|0,e,n),Z0(e,n+240|0),t=o>>>0<62,o=o+2|0,t;);for(sr(n+240|0,e),Qr(n+120|0,n+240|0),ce(n+240|0,n+120|0),Qr(n+120|0,n+240|0),ce(n+240|0,n+120|0),Qr(n+120|0,n+240|0),ce(n+240|0,n+120|0),Z0(e,n+240|0),o=0;yn(n,o>>>1|0,p[(n+400|0)+o|0]),WB(n+240|0,e,n),Z0(e,n+240|0),t=o>>>0<62,o=o+2|0,t;);BA=n+464|0}function L0(e,t,n){var o=0,a=0,f=0,E=0;if(n&&(p[(o=e+n|0)-1|0]=t,p[0|e]=t,!(n>>>0<3||(p[o-2|0]=t,p[e+1|0]=t,p[o-3|0]=t,p[e+2|0]=t,n>>>0<7||(p[o-4|0]=t,p[e+3|0]=t,n>>>0<9||(a=(o=0-e&3)+e|0,t=xA(255&t,16843009),r[a>>2]=t,r[(o=(n=n-o&-4)+a|0)-4>>2]=t,n>>>0<9||(r[a+8>>2]=t,r[a+4>>2]=t,r[o-8>>2]=t,r[o-12>>2]=t,n>>>0<25||(r[a+24>>2]=t,r[a+20>>2]=t,r[a+16>>2]=t,r[a+12>>2]=t,r[o-16>>2]=t,r[o-20>>2]=t,r[o-24>>2]=t,r[o-28>>2]=t,(n=n-(E=4&a|24)|0)>>>0<32))))))))for(o=t,f=t,t=a+E|0;r[t+24>>2]=f,r[t+28>>2]=o,r[t+16>>2]=f,r[t+20>>2]=o,r[t+8>>2]=f,r[t+12>>2]=o,r[t>>2]=f,r[t+4>>2]=o,t=t+32|0,(n=n-32|0)>>>0>31;);return e}function KB(e,t){var n,o,a,f=0,E=0;E=f=e- -64|0,o=1+(n=u[f+4|0]|u[f+5|0]<<8|u[f+6|0]<<16|u[f+7|0]<<24)|0,f=(t=t+(f=a=u[0|f]|u[f+1|0]<<8|u[f+2|0]<<16|u[f+3|0]<<24)|0)>>>0>>0?o:n,p[0|E]=t,p[E+1|0]=t>>>8,p[E+2|0]=t>>>16,p[E+3|0]=t>>>24,p[E+4|0]=f,p[E+5|0]=f>>>8,p[E+6|0]=f>>>16,p[E+7|0]=f>>>24,t=(f=(0|f)==(0|n)&t>>>0>>0|f>>>0>>0)+(u[e+72|0]|u[e+73|0]<<8|u[e+74|0]<<16|u[e+75|0]<<24)|0,E=u[e+76|0]|u[e+77|0]<<8|u[e+78|0]<<16|u[e+79|0]<<24,f=t>>>0>>0?E+1|0:E,p[e+72|0]=t,p[e+73|0]=t>>>8,p[e+74|0]=t>>>16,p[e+75|0]=t>>>24,p[e+76|0]=f,p[e+77|0]=f>>>8,p[e+78|0]=f>>>16,p[e+79|0]=f>>>24}function la(e,t,n,o,a,f,E){var s,y,_,w,D=0;return BA=s=BA-352|0,LB(s,f,E),!a&o>>>0<=n-e>>>0|e>>>0>=n>>>0&&!(!a&o>>>0>e-n>>>0|a&&e>>>0>n>>>0)||(n=Br(e,n,o)),r[s+56>>2]=0,r[s+60>>2]=0,r[s+48>>2]=0,r[s+52>>2]=0,r[s+40>>2]=0,r[s+44>>2]=0,r[s+32>>2]=0,r[s+36>>2]=0,(y=!((E=(D=!a&o>>>0>32|(0|a)!=0)?32:o)|(D=D?0:a)))||V0(s- -64|0,n,E),w=f+16|0,Ba(s+32|0,s+32|0,_=E+32|0,f=_>>>0<32?D+1|0:D,w,s),$t(s+96|0,s+32|0),y||V0(e,s- -64|0,E),Q0(s+32|0,64),!a&o>>>0>=33|a&&Cn(e+E|0,f=n+E|0,(n=o)-E|0,a-(D+(n>>>0>>0)|0)|0,w,s),Q0(s,32),m0(s+96|0,e,o,a),Ag(s+96|0,t),Q0(s+96|0,256),BA=s+352|0,0}function ar(e,t){r[e>>2]=1634760805,r[e+4>>2]=857760878,r[e+8>>2]=2036477234,r[e+12>>2]=1797285236,r[e+16>>2]=u[0|t]|u[t+1|0]<<8|u[t+2|0]<<16|u[t+3|0]<<24,r[e+20>>2]=u[t+4|0]|u[t+5|0]<<8|u[t+6|0]<<16|u[t+7|0]<<24,r[e+24>>2]=u[t+8|0]|u[t+9|0]<<8|u[t+10|0]<<16|u[t+11|0]<<24,r[e+28>>2]=u[t+12|0]|u[t+13|0]<<8|u[t+14|0]<<16|u[t+15|0]<<24,r[e+32>>2]=u[t+16|0]|u[t+17|0]<<8|u[t+18|0]<<16|u[t+19|0]<<24,r[e+36>>2]=u[t+20|0]|u[t+21|0]<<8|u[t+22|0]<<16|u[t+23|0]<<24,r[e+40>>2]=u[t+24|0]|u[t+25|0]<<8|u[t+26|0]<<16|u[t+27|0]<<24,r[e+44>>2]=u[t+28|0]|u[t+29|0]<<8|u[t+30|0]<<16|u[t+31|0]<<24}function wa(e,t,n,o,a,f,E){var s,y,_=0,w=0;BA=s=BA-96|0,LB(s,f,E),y=f+16|0,Ct[r[8952]](s+32|0,32,0,y,s),f=-1;A:{if(!(0|Ct[r[8946]](n,t,o,a,s+32|0))){if(f=0,!e)break A;!a&o>>>0<=e-t>>>0|e>>>0<=t>>>0&&!(!a&o>>>0>t-e>>>0|a&&e>>>0>>0)||(t=Br(e,t,o)),n=(f=!a&o>>>0>32|(0|a)!=0)?32:o,E=f=f?0:a,n|f?(w=V0(s- -64|0,t,n),f=E,Ba(s+32|0,s+32|0,_=n+32|0,f=_>>>0<32?f+1|0:f,y,s),V0(e,w,n)):(f=E,Ba(s+32|0,s+32|0,_=n+32|0,f=_>>>0<32?f+1|0:f,y,s)),f=0,!a&o>>>0<33||Cn((_=e)+(e=n)|0,e+t|0,o-e|0,a-(E+(e>>>0>o>>>0)|0)|0,y,s)}Q0(s,32)}return BA=s+96|0,f}function qB(e){var t=0,n=0,o=0;if(!e)return-25;if(!r[e>>2])return-1;A:{t:{if(t=-2,!(OA[e+4>>2]<16)&&(r[e+8>>2]||(t=-18,!r[e+12>>2]))){if(n=r[e+20>>2],!r[e+16>>2])break t;if(t=-6,!(n>>>0<8)&&(r[e+24>>2]||(t=-20,!r[e+28>>2]))&&(r[e+32>>2]||(t=-21,!r[e+36>>2]))){if(!(n=r[e+48>>2]))return-16;if(t=-17,!(n>>>0>16777215||(t=-14,(o=r[e+44>>2])>>>0<8||(t=-15,o>>>0>2097152||(t=-14,n<<3>>>0>o>>>0))))){if(!r[e+40>>2])return-12;if(e=r[e+52>>2])break A;t=-28}}}return t}return n?-19:-6}return e>>>0>16777215?-29:0}function TB(e,t,n){var o,a,f,E,s,y,_,w,D,v,Y,U,H,i,c,N,l,F,b,V;Y=r[t+4>>2],o=r[e+4>>2],U=r[t+8>>2],a=r[e+8>>2],H=r[t+12>>2],f=r[e+12>>2],i=r[t+16>>2],E=r[e+16>>2],c=r[t+20>>2],s=r[e+20>>2],N=r[t+24>>2],y=r[e+24>>2],l=r[t+28>>2],_=r[e+28>>2],F=r[t+32>>2],w=r[e+32>>2],b=r[t+36>>2],D=r[e+36>>2],v=r[e>>2],V=r[t>>2]^v,t=0-n|0,r[e>>2]=v^V&t,r[e+36>>2]=t&(D^b)^D,r[e+32>>2]=t&(w^F)^w,r[e+28>>2]=t&(_^l)^_,r[e+24>>2]=t&(y^N)^y,r[e+20>>2]=t&(s^c)^s,r[e+16>>2]=t&(E^i)^E,r[e+12>>2]=t&(f^H)^f,r[e+8>>2]=t&(a^U)^a,r[e+4>>2]=t&(o^Y)^o}function Da(e,t){for(var n=0,o=0,a=0,f=0,E=0,s=0,y=0,_=0;p[e+n|0]=u[(n>>>3|0)+t|0]>>>(7&n)&1,(0|(n=n+1|0))!=256;);for(;;){s=(t=s)+1|0;A:if(u[0|(E=e+t|0)]&&(n=s,a=1,!(t>>>0>254)))for(;;){t:if(f=p[0|(o=e+n|0)])if((0|(_=(y=p[0|E])+(f<<=a)|0))<=15)p[0|E]=_,p[0|o]=0;else{if((0|(o=y-f|0))<-15)break A;for(p[0|E]=o;;){if(!u[0|(o=e+n|0)]){p[0|o]=1;break t}if(p[0|o]=0,o=n>>>0<255,n=n+1|0,!o)break}}if(a>>>0>5)break A;if(!((n=t+(a=a+1|0)|0)>>>0<256))break}if((0|s)==256)break}}function da(e,t,n,o){var a,f,E,s,y=0;BA=a=BA+-64|0,L0(a+8|0,0,52),y=Ut(e),r[a+20>>2]=y,r[a+36>>2]=y,r[a+4>>2]=y,f=Nt(y),r[a+32>>2]=f,E=Nt(y),r[a+16>>2]=E,s=Nt(y),r[a>>2]=s;A:if(!s|!f|!E||!(y=Nt(y)))ot(f),ot(E),ot(s),e=-22;else{if(e=Ia(a,e,o)){ot(r[a+32>>2]),ot(r[a+16>>2]),ot(r[a>>2]),ot(y);break A}e=0,t=se(r[a+40>>2],r[a+44>>2],r[a+52>>2],t,n,r[a+16>>2],r[a+20>>2],y,r[a+4>>2],0,0,o),ot(r[a+32>>2]),ot(r[a+16>>2]),(t||or(y,r[a>>2],r[a+4>>2]))&&(e=-35),ot(y),ot(r[a>>2])}return BA=a- -64|0,e}function Fa(e,t){var n,o,a=0;BA=n=BA-288|0,ya(o=e+40|0,t),kt(a=e+80|0),k0(n+240|0,o),_0(n+192|0,n+240|0,2128),$0(n+240|0,n+240|0,a),O0(n+192|0,n+192|0,a),k0(n+144|0,n+192|0),_0(n+144|0,n+144|0,n+192|0),k0(e,n+144|0),_0(e,e,n+192|0),_0(e,e,n+240|0),function(f,E){var s,y=0;for(BA=s=BA-144|0,k0(s+96|0,E),k0(s+48|0,s+96|0),k0(s+48|0,s+48|0),_0(s+48|0,E,s+48|0),_0(s+96|0,s+96|0,s+48|0),k0(s+96|0,s+96|0),_0(s+96|0,s+48|0,s+96|0),k0(s+48|0,s+96|0),y=1;k0(s+48|0,s+48|0),(0|(y=y+1|0))!=5;);for(_0(s+96|0,s+48|0,s+96|0),k0(s+48|0,s+96|0),y=1;k0(s+48|0,s+48|0),(0|(y=y+1|0))!=10;);for(_0(s+48|0,s+48|0,s+96|0),k0(s,s+48|0),y=1;k0(s,s),(0|(y=y+1|0))!=20;);for(_0(s+48|0,s,s+48|0),y=1;k0(s+48|0,s+48|0),(0|(y=y+1|0))!=11;);for(_0(s+96|0,s+48|0,s+96|0),k0(s+48|0,s+96|0),y=1;k0(s+48|0,s+48|0),(0|(y=y+1|0))!=50;);for(_0(s+48|0,s+48|0,s+96|0),k0(s,s+48|0),y=1;k0(s,s),(0|(y=y+1|0))!=100;);for(_0(s+48|0,s,s+48|0),y=1;k0(s+48|0,s+48|0),(0|(y=y+1|0))!=51;);_0(s+96|0,s+48|0,s+96|0),k0(s+96|0,s+96|0),k0(s+96|0,s+96|0),_0(f,s+96|0,E),BA=s+144|0}(e,e),_0(e,e,n+144|0),_0(e,e,n+240|0),k0(n+96|0,e),_0(n+96|0,n+96|0,n+192|0),$0(n+48|0,n+96|0,n+240|0);A:{if(!Aa(n+48|0)){if(O0(n,n+96|0,n+240|0),a=-1,!Aa(n))break A;_0(e,e,2176)}(0|an(e))==(u[t+31|0]>>>7|0)&&Sa(e,e),_0(e+120|0,e,o),a=0}return BA=n+288|0,a}function $0(e,t,n){var o,a,f,E,s,y,_,w,D,v,Y,U,H,i,c,N,l,F;o=r[n+4>>2],a=r[t+4>>2],f=r[n+8>>2],E=r[t+8>>2],s=r[n+12>>2],y=r[t+12>>2],_=r[n+16>>2],w=r[t+16>>2],D=r[n+20>>2],v=r[t+20>>2],Y=r[n+24>>2],U=r[t+24>>2],H=r[n+28>>2],i=r[t+28>>2],c=r[n+32>>2],N=r[t+32>>2],l=r[n+36>>2],F=r[t+36>>2],r[e>>2]=r[t>>2]-r[n>>2],r[e+36>>2]=F-l,r[e+32>>2]=N-c,r[e+28>>2]=i-H,r[e+24>>2]=U-Y,r[e+20>>2]=v-D,r[e+16>>2]=w-_,r[e+12>>2]=y-s,r[e+8>>2]=E-f,r[e+4>>2]=a-o}function O0(e,t,n){var o,a,f,E,s,y,_,w,D,v,Y,U,H,i,c,N,l,F;o=r[n+4>>2],a=r[t+4>>2],f=r[n+8>>2],E=r[t+8>>2],s=r[n+12>>2],y=r[t+12>>2],_=r[n+16>>2],w=r[t+16>>2],D=r[n+20>>2],v=r[t+20>>2],Y=r[n+24>>2],U=r[t+24>>2],H=r[n+28>>2],i=r[t+28>>2],c=r[n+32>>2],N=r[t+32>>2],l=r[n+36>>2],F=r[t+36>>2],r[e>>2]=r[n>>2]+r[t>>2],r[e+36>>2]=l+F,r[e+32>>2]=c+N,r[e+28>>2]=H+i,r[e+24>>2]=Y+U,r[e+20>>2]=D+v,r[e+16>>2]=_+w,r[e+12>>2]=s+y,r[e+8>>2]=f+E,r[e+4>>2]=o+a}function VB(e){var t,n=0,o=0,a=0,f=0;for(p[11+(t=BA-16|0)|0]=0,p[t+12|0]=0,p[t+13|0]=0,p[t+14|0]=0,r[t+8>>2]=0;;){for(a=u[e+o|0],n=0;p[0|(f=(t+8|0)+n|0)]=u[0|f]|a^u[(3232+(n<<5)|0)+o|0],(0|(n=n+1|0))!=7;);if((0|(o=o+1|0))==31)break}for(o=127&u[e+31|0],e=0,n=0;p[0|(a=(t+8|0)+n|0)]=u[0|a]|o^u[3263+(n<<5)|0],(0|(n=n+1|0))!=7;);for(n=0;n=u[(t+8|0)+e|0]-1|n,(0|(e=e+1|0))!=7;);return n>>>8&1}function XB(e,t){var n=0,o=0,a=0,f=0,E=0;for(L0(V0(e,1952,64)- -64|0,0,293);a=o=(n=f<<3)+e|0,n=t+n|0,E=u[0|o]|u[o+1|0]<<8|u[o+2|0]<<16|u[o+3|0]<<24,o=(u[n+4|0]|u[n+5|0]<<8|u[n+6|0]<<16|u[n+7|0]<<24)^(u[o+4|0]|u[o+5|0]<<8|u[o+6|0]<<16|u[o+7|0]<<24),n=(u[0|n]|u[n+1|0]<<8|u[n+2|0]<<16|u[n+3|0]<<24)^E,p[0|a]=n,p[a+1|0]=n>>>8,p[a+2|0]=n>>>16,p[a+3|0]=n>>>24,p[a+4|0]=o,p[a+5|0]=o>>>8,p[a+6|0]=o>>>16,p[a+7|0]=o>>>24,(0|(f=f+1|0))!=8;);}function ma(e,t,n,o,a){var f,E=0;BA=f=BA+-64|0;A:{t:{if(E=!n,(n=Ut(e))>>>0<128&&E){if(r[f+56>>2]=0,r[f+48>>2]=0,r[f+52>>2]=0,r[f+40>>2]=0,r[f+44>>2]=0,E=function(s){var y=0,_=0;return y=0,s&&(_=s,y=s,(1|s)>>>0<65536||(y=_)),_=y,!(s=Nt(y))|!(3&u[s-4|0])||L0(s,0,_),s}(n))break t}else r[8960]=28;e=-1;break A}r[f+32>>2]=0,r[f+36>>2]=0,r[f+8>>2]=E,r[f+16>>2]=E,r[f+20>>2]=n,r[f>>2]=E,r[f+12>>2]=n,r[f+24>>2]=0,r[f+28>>2]=0,r[f+4>>2]=n,Ia(f,e,a)?(r[8960]=28,e=-1):(e=1,(0|t)==r[f+40>>2]&&(e=r[f+44>>2]!=(o>>>10|0))),ot(E)}return BA=f- -64|0,e}function Dn(e,t){var n,o=0,a=0,f=0,E=0;if(BA=n=BA-48|0,!((o=qB(e))||(o=-26,t-1>>>0>1||(f=r[e+44>>2],o=r[e+48>>2],r[n>>2]=0,a=r[e+40>>2],r[n+28>>2]=o,r[n+12>>2]=-1,r[n+8>>2]=a,o=((a=f>>>0<(a=o<<3)>>>0?a:f)>>>0)/((f=o<<2)>>>0)|0,r[n+20>>2]=o,r[n+24>>2]=o<<2,r[n+16>>2]=xA(o,f),o=r[e+52>>2],r[n+36>>2]=t,r[n+32>>2]=o,o=function(s,y){var _,w=0;return BA=_=BA-80|0,w=-25,!s|!y||(w=Nt(r[s+20>>2]<<3),r[s+4>>2]=w,w?(w=function(D,v){var Y,U=0,H=0;BA=Y=BA-16|0,H=-22;A:if(!(!D|!v)&&(((U=v<<10)>>>0)/(v>>>0)|0)==1024&&(v=Nt(12),r[D>>2]=v,v)){r[v>>2]=0,r[v+4>>2]=0,v=function(i,c){if(c>>>0>4294967168)i=48;else{if(!(c=function(N){var l=0,F=0,b=0,V=0,W=0,O=0;return N>>>0>=4294967168?(r[8960]=48,0):(N=Nt(76+(b=N>>>0<11?16:N+11&-8)|0))?(l=N-8|0,63&N?(V=(-8&(O=r[(W=N-4|0)>>2]))-(F=(N=(N=(N+63&-64)-8|0)-l>>>0>15?N:N- -64|0)-l|0)|0,3&O?(r[N+4>>2]=V|1&r[N+4>>2]|2,r[4+(V=N+V|0)>>2]=1|r[V+4>>2],r[W>>2]=F|1&r[W>>2]|2,r[N+4>>2]=1|r[N+4>>2],ca(l,F)):(l=r[l>>2],r[N+4>>2]=V,r[N>>2]=l+F)):N=l,3&(l=r[N+4>>2])&&((F=-8&l)>>>0<=b+16>>>0||(r[N+4>>2]=b|1&l|2,l=N+b|0,b=F-b|0,r[l+4>>2]=3|b,r[4+(F=N+F|0)>>2]=1|r[F+4>>2],ca(l,b))),N+8|0):0}(c)))return 48;r[i>>2]=c,i=0}return i}(Y+12|0,U),r[8960]=v;t:{if(v)r[Y+12>>2]=0;else if(v=r[Y+12>>2])break t;ot(r[D>>2]),r[D>>2]=0;break A}r[r[D>>2]>>2]=v,r[r[D>>2]+4>>2]=v,r[r[D>>2]+8>>2]=U,H=0}return BA=Y+16|0,H}(s,r[s+16>>2]))?Wa(s,r[y+56>>2]):(function(D,v,Y){var U,H=0;U=H=BA,BA=H=H-448&-64,!D|!v||(Cr(H- -64|0,0,0,64),y0(H+60|0,r[v+48>>2]),at(H- -64|0,H+60|0,4,0),y0(H+60|0,r[v+4>>2]),at(H- -64|0,H+60|0,4,0),y0(H+60|0,r[v+44>>2]),at(H- -64|0,H+60|0,4,0),y0(H+60|0,r[v+40>>2]),at(H- -64|0,H+60|0,4,0),y0(H+60|0,19),at(H- -64|0,H+60|0,4,0),y0(H+60|0,Y),at(H- -64|0,H+60|0,4,0),y0(H+60|0,r[v+12>>2]),at(H- -64|0,H+60|0,4,0),(Y=r[v+8>>2])&&(at(H- -64|0,Y,r[v+12>>2],0),1&p[v+56|0]&&(Q0(r[v+8>>2],r[v+12>>2]),r[v+12>>2]=0)),y0(H+60|0,r[v+20>>2]),at(H- -64|0,H+60|0,4,0),(Y=r[v+16>>2])&&at(H- -64|0,Y,r[v+20>>2],0),y0(H+60|0,r[v+28>>2]),at(H- -64|0,H+60|0,4,0),(Y=r[v+24>>2])&&(at(H- -64|0,Y,r[v+28>>2],0),2&u[v+56|0]&&(Q0(r[v+24>>2],r[v+28>>2]),r[v+28>>2]=0)),y0(H+60|0,r[v+36>>2]),at(H- -64|0,H+60|0,4,0),(Y=r[v+32>>2])&&at(H- -64|0,Y,r[v+36>>2],0),Er(H- -64|0,D,64)),BA=U}(_,y,r[s+36>>2]),Q0(_- -64|0,8),function(D,v){var Y,U=0,H=0,i=0;if(BA=Y=BA-1024|0,r[v+28>>2])for(i=D+68|0,H=D- -64|0;y0(H,0),y0(i,U),MB(Y,1024,D,72),Ja(r[r[v>>2]+4>>2]+(xA(r[v+24>>2],U)<<10)|0,Y),y0(H,1),MB(Y,1024,D,72),Ja(1024+(r[r[v>>2]+4>>2]+(xA(r[v+24>>2],U)<<10)|0)|0,Y),(U=U+1|0)>>>0>2];);Q0(Y,1024),BA=Y+1024|0}(_,s),Q0(_,72),w=0):w=-22),BA=_+80|0,w}(n,e))))){if(r[n+8>>2])for(;Fn(n,E),(E=E+1|0)>>>0>2];);(function(s,y){var _,w=0,D=0;if(BA=_=BA-2048|0,!(!s|!y)){if(mg(_+1024|0,(r[r[y>>2]+4>>2]+(r[y+24>>2]<<10)|0)-1024|0),OA[y+28>>2]>=2)for(w=1;D=r[y+24>>2],Kg(_+1024|0,(r[r[y>>2]+4>>2]+(D+xA(w,D)<<10)|0)-1024|0),(w=w+1|0)>>>0>2];);(function(v,Y){for(var U=0,H=0;q0((U=H<<3)+v|0,r[(U=Y+U|0)>>2],r[U+4>>2]),(0|(H=H+1|0))!=128;);})(_,_+1024|0),MB(r[s>>2],r[s+4>>2],_,1024),Q0(_+1024|0,1024),Q0(_,1024),Wa(y,r[s+56>>2])}BA=_+2048|0})(e,n),o=0}return BA=n+48|0,o}function se(e,t,n,o,a,f,E,s,y,_,w,D){var v,Y;return BA=v=BA+-64|0,(Y=Nt(y))?(r[v+32>>2]=0,r[v+36>>2]=0,r[v+24>>2]=0,r[v+28>>2]=0,r[v+20>>2]=E,r[v+16>>2]=f,r[v+12>>2]=a,r[v+8>>2]=o,r[v+4>>2]=y,r[v>>2]=Y,r[v+56>>2]=0,r[v+52>>2]=n,r[v+48>>2]=n,r[v+44>>2]=t,r[v+40>>2]=e,(n=Dn(v,D))?Q0(Y,y):!_|!w||!ln(_,w,v,D)?(s&&V0(s,Y,y),Q0(Y,y),n=0):(Q0(Y,y),Q0(_,w),n=-31),ot(Y)):n=-22,BA=v- -64|0,n}function va(e,t,n,o,a,f){var E,s,y=0,_=0,w=0;return BA=E=BA-592|0,y=-1,function(D){var v=0,Y=0,U=0,H=0,i=0;for(v=32,Y=1;i=(U=u[(v=v-1|0)+D|0])-(H=u[v+3456|0])>>8&Y|255&i,Y&=65535+(U^H)>>>8,v;);return(0|i)!=0}(s=e+32|0)&&(VB(e)||function(D){var v=0,Y=0;for(Y=127&(-1^u[D+31|0]),v=30;Y=-1^u[D+v|0]|Y,v=v-1|0;);return 1&(((255&Y)-1&236-u[0|D])>>>8^-1)}(a)&&(VB(a)||Fa(E+128|0,a)||(aa(E+384|0,f),wt(E+384|0,e,32,0),wt(E+384|0,a,32,0),wt(E+384|0,t,n,o),ag(E+384|0,E+320|0),YB(E+320|0),function(D,v,Y,U){var H;BA=H=BA-2272|0,Da(H+2016|0,v),Da(H+1760|0,U),yt(H+480|0,Y),sr(H+320|0,Y),Z0(H,H+320|0),ht(H+320|0,H,H+480|0),Z0(H+160|0,H+320|0),yt(v=H+640|0,H+160|0),ht(H+320|0,H,v),Z0(H+160|0,H+320|0),yt(v=H+800|0,H+160|0),ht(H+320|0,H,v),Z0(H+160|0,H+320|0),yt(v=H+960|0,H+160|0),ht(H+320|0,H,v),Z0(H+160|0,H+320|0),yt(v=H+1120|0,H+160|0),ht(H+320|0,H,v),Z0(H+160|0,H+320|0),yt(v=H+1280|0,H+160|0),ht(H+320|0,H,v),Z0(H+160|0,H+320|0),yt(v=H+1440|0,H+160|0),ht(H+320|0,H,v),Z0(H+160|0,H+320|0),yt(H+1600|0,H+160|0),Ie(D),kt(D+40|0),kt(D+80|0),U=255;A:{for(;;){if(!(u[(Y=U)+(H+2016|0)|0]|u[(H+1760|0)+Y|0])){if(U=Y-1|0,Y)continue;break A}break}if(!((0|Y)<0))for(;ce(H+320|0,D),(0|(Y=p[(v=Y)+(H+2016|0)|0]))>=1?(Z0(H+160|0,H+320|0),ht(H+320|0,H+160|0,(H+480|0)+xA((254&Y)>>>1|0,160)|0)):(0|Y)>-1||(Z0(H+160|0,H+320|0),xa(H+320|0,H+160|0,(H+480|0)+xA((0-Y&254)>>>1|0,160)|0)),(0|(Y=p[v+(H+1760|0)|0]))>=1?(Z0(H+160|0,H+320|0),WB(H+320|0,H+160|0,xA((254&Y)>>>1|0,120)+2272|0)):(0|Y)>-1||(Z0(H+160|0,H+320|0),bn(H+320|0,H+160|0,xA((0-Y&254)>>>1|0,120)+2272|0)),Qr(D,H+320|0),Y=v-1|0,(0|v)>0;);}BA=H+2272|0}(E+8|0,E+320|0,E+128|0,s),OB(E+288|0,E+8|0),_=-1,w=fn(E+288|0,e),y=((E+288|0)==(0|e)?_:w)|or(e,E+288|0,32)))),BA=E+592|0,y}function dn(e,t,n,o){var a=0,f=0;A:if(r[t>>2])f=r[e+24>>2],a=r[e+20>>2],o=o?r[t+12>>2]+(f+(-1^a)|0)|0:(f-a|0)-!r[t+12>>2]|0,f=0,(0|(t=u[t+8|0]))!=3&&(f=xA(a,t+1|0));else{if(!(a=u[t+8|0])){o=r[t+12>>2]-1|0,f=0;break A}if(a=xA(a,r[e+20>>2]),t=r[t+12>>2],o){o=(t+a|0)-1|0,f=0;break A}o=a-!t|0,f=0}return t=f+(a=o-1|0)|0,K(n,0,n,0),K(o,0,h,0),function(E,s,y){var _=0,w=0,D=0,v=0,Y=0,U=0,H=0,i=0,c=0;A:{t:{g:{r:{e:{a:{B:{C:{Q:{if(w=s){if(!(_=y))break Q;break C}return Lg=E-xA((E>>>0)/(y>>>0)|0,y)|0,xg=0,void(h=0)}if(!E)break B;break a}if(!((v=_-1|0)&_))break e;Y=0-(v=(p0(_)+33|0)-p0(w)|0)|0;break g}return Lg=0,xg=w,void(h=0)}if((_=32-p0(w)|0)>>>0<31)break r;break t}if(Lg=E&v,xg=0,(0|_)==1)break A;return y=31&(E=_?31-p0(_-1^_)|0:32),void(h=(63&E)>>>0>=32?0:s>>>y|0)}v=_+1|0,Y=63-_|0}if(_=s,D=31&(w=63&v),w>>>0>=32?(w=0,D=_>>>D|0):(w=_>>>D|0,D=((1<>>D),_=31&(Y&=63),Y>>>0>=32?(s=E<<_,E=0):(s=(1<<_)-1&E>>>32-_|s<<_,E<<=_),v)for(Y=(0|(_=y-1|0))!=-1?0:-1;D=(H=U=D<<1|s>>>31)-(i=y&(U=Y-((w=w<<1|D>>>31)+(_>>>0>>0)|0)>>31))|0,w=w-(H>>>0>>0)|0,s=s<<1|E>>>31,E=c|E<<1,c=1&U,v=v-1|0;);return Lg=D,xg=w,void(h=s<<1|E>>>31)}Lg=E,xg=s,s=0}h=s}(t-(n=h)|0,(t>>>0>>0)-(t>>>0>>0)|0,r[e+24>>2]),h=xg,Lg}function ka(e,t,n,o,a,f,E,s,y,_){var w;return BA=w=BA-352|0,fe(w+32|0,64,y,_),$t(w+96|0,w+32|0),Q0(w+32|0,64),m0(w+96|0,f,E,s),m0(w+96|0,34688,0-E&15,0),m0(w+96|0,t,n,o),m0(w+96|0,34688,0-n&15,0),q0(w+24|0,E,s),m0(w+96|0,w+24|0,8,0),q0(w+24|0,n,o),m0(w+96|0,w+24|0,8,0),Ag(w+96|0,w),Q0(w+96|0,256),a=ur(w,a),Q0(w,16),e&&(a?(L0(e,0,n),a=-1):(Pg(e,t,n,o,y,1,_),a=0)),BA=w+352|0,a}function Fn(e,t){var n,o=0,a=0,f=0;if(BA=n=BA-32|0,!(!e|!r[e+28>>2]))for(r[n+16>>2]=t,o=1;;){if(p[n+24|0]=a,t=0,f=0,o)for(;r[n+28>>2]=0,o=r[n+28>>2],r[n+8>>2]=r[n+24>>2],r[n+12>>2]=o,r[n+20>>2]=t,o=r[n+20>>2],r[n>>2]=r[n+16>>2],r[n+4>>2]=o,wn(e,n),(t=t+1|0)>>>0<(f=r[e+28>>2])>>>0;);if(o=f,(0|(a=a+1|0))==4)break}BA=n+32|0}function Ga(e,t,n,o,a,f,E,s,y,_,w){var D;return BA=D=BA-336|0,fe(D+16|0,64,_,w),$t(D+80|0,D+16|0),Q0(D+16|0,64),m0(D+80|0,E,s,y),m0(D+80|0,34688,0-s&15,0),Pg(e,o,a,f,_,1,w),m0(D+80|0,e,a,f),m0(D+80|0,34688,0-a&15,0),q0(D+8|0,s,y),m0(D+80|0,D+8|0,8,0),q0(D+8|0,a,f),m0(D+80|0,D+8|0,8,0),Ag(D+80|0,t),Q0(D+80|0,256),n&&(r[n>>2]=16,r[n+4>>2]=0),BA=D+336|0,0}function ba(e,t,n,o,a,f,E,s,y,_){var w;return BA=w=BA-352|0,hn(w+32|0,y,_),$t(w+96|0,w+32|0),Q0(w+32|0,64),m0(w+96|0,f,E,s),q0(w+24|0,E,s),m0(w+96|0,w+24|0,8,0),m0(w+96|0,t,n,o),q0(w+24|0,n,o),m0(w+96|0,w+24|0,8,0),Ag(w+96|0,w),Q0(w+96|0,256),a=ur(w,a),Q0(w,16),e&&(a?(L0(e,0,n),a=-1):(rn(e,t,n,o,y,_),a=0)),BA=w+352|0,a}function Ut(e){var t=0,n=0,o=0;A:{t:if(3&(t=e)){if(!u[0|e])return 0;for(;;){if(!(3&(t=t+1|0)))break t;if(!u[0|t])break}break A}for(;n=t,t=t+4|0,!((-1^(o=r[n>>2]))&o-16843009&-2139062144););if(!(255&o))return n-e|0;for(;o=u[n+1|0],n=t=n+1|0,o;);}return t-e|0}function nr(e,t){var n,o=0,a=0,f=0,E=0,s=0;A:if(!(((n=u[0|e])-48&255)>>>0>9)){for(a=n,o=e;;){if(E=o,f>>>0>429496729||(a=(255&a)-48|0)>>>0>(-1^(o=xA(f,10)))>>>0)break A;if(f=o+a|0,!(((a=u[0|(o=E+1|0)])-48&255)>>>0<10))break}(0|e)==(0|o)|((0|n)==48?(0|e)!=(0|E):0)||(r[t>>2]=f,s=o)}return s}function Sa(e,t){var n,o,a,f,E,s,y,_,w;n=r[t+4>>2],o=r[t+8>>2],a=r[t+12>>2],f=r[t+16>>2],E=r[t+20>>2],s=r[t+24>>2],y=r[t+28>>2],_=r[t+32>>2],w=r[t+36>>2],r[e>>2]=0-r[t>>2],r[e+36>>2]=0-w,r[e+32>>2]=0-_,r[e+28>>2]=0-y,r[e+24>>2]=0-s,r[e+20>>2]=0-E,r[e+16>>2]=0-f,r[e+12>>2]=0-a,r[e+8>>2]=0-o,r[e+4>>2]=0-n}function mn(e,t,n){var o=0;o=t<<8&16711680|t<<24,o|=255&(n<<8|t>>>24)|65280&(n<<24|t>>>8),t=-16777216&((255&n)<<24|t>>>8)|16711680&((16777215&n)<<8|t>>>24)|n>>>8&65280|n>>>24|0,p[0|e]=t,p[e+1|0]=t>>>8,p[e+2|0]=t>>>16,p[e+3|0]=t>>>24,t=o,p[e+4|0]=t,p[e+5|0]=t>>>8,p[e+6|0]=t>>>16,p[e+7|0]=t>>>24}function Ya(e,t,n){var o;o=e,n?(r[e+48>>2]=u[0|n]|u[n+1|0]<<8|u[n+2|0]<<16|u[n+3|0]<<24,n=u[n+4|0]|u[n+5|0]<<8|u[n+6|0]<<16|u[n+7|0]<<24):(r[e+48>>2]=0,n=0),r[o+52>>2]=n,r[e+56>>2]=u[0|t]|u[t+1|0]<<8|u[t+2|0]<<16|u[t+3|0]<<24,r[e+60>>2]=u[t+4|0]|u[t+5|0]<<8|u[t+6|0]<<16|u[t+7|0]<<24}function dg(e,t){var n,o,a,f,E,s,y,_,w;n=r[t+8>>2],o=r[t+12>>2],a=r[t+16>>2],f=r[t+20>>2],E=r[t+24>>2],s=r[t+28>>2],y=r[t>>2],_=r[t+4>>2],w=r[t+36>>2],r[e+32>>2]=r[t+32>>2],r[e+36>>2]=w,r[e+24>>2]=E,r[e+28>>2]=s,r[e+16>>2]=a,r[e+20>>2]=f,r[e+8>>2]=n,r[e+12>>2]=o,r[e>>2]=y,r[e+4>>2]=_}function Ha(e,t,n,o,a,f,E,s,y,_,w){var D;return BA=D=BA-48|0,r[D+8>>2]=0,r[D>>2]=0,r[D+4>>2]=0,gr(D+16|0,_,w),w=u[_+16|0]|u[_+17|0]<<8|u[_+18|0]<<16|u[_+19|0]<<24,_=u[_+20|0]|u[_+21|0]<<8|u[_+22|0]<<16|u[_+23|0]<<24,r[D+4>>2]=w,r[D+8>>2]=_,function(v,Y,U,H,i,c,N,l,F,b,V){var W;BA=W=BA-336|0,ia(W+16|0,64,b,V),$t(W+80|0,W+16|0),Q0(W+16|0,64),m0(W+80|0,N,l,F),m0(W+80|0,34704,0-l&15,0),$B(v,H,i,c,b,1,V),m0(W+80|0,v,i,c),m0(W+80|0,34704,0-i&15,0),q0(W+8|0,l,F),m0(W+80|0,W+8|0,8,0),q0(W+8|0,i,c),m0(W+80|0,W+8|0,8,0),Ag(W+80|0,Y),Q0(W+80|0,256),U&&(r[U>>2]=16,r[U+4>>2]=0),BA=W+336|0}(e,t,n,o,a,f,E,s,y,D,D+16|0),Q0(D+16|0,32),BA=D+48|0,0}function Na(e,t,n,o,a,f,E,s,y,_){var w;return BA=w=BA-48|0,r[w+8>>2]=0,r[w>>2]=0,r[w+4>>2]=0,gr(w+16|0,y,_),_=u[y+16|0]|u[y+17|0]<<8|u[y+18|0]<<16|u[y+19|0]<<24,y=u[y+20|0]|u[y+21|0]<<8|u[y+22|0]<<16|u[y+23|0]<<24,r[w+4>>2]=_,r[w+8>>2]=y,e=function(D,v,Y,U,H,i,c,N,l,F){var b;return BA=b=BA-352|0,ia(b+32|0,64,l,F),$t(b+96|0,b+32|0),Q0(b+32|0,64),m0(b+96|0,i,c,N),m0(b+96|0,34704,0-c&15,0),m0(b+96|0,v,Y,U),m0(b+96|0,34704,0-Y&15,0),q0(b+24|0,c,N),m0(b+96|0,b+24|0,8,0),q0(b+24|0,Y,U),m0(b+96|0,b+24|0,8,0),Ag(b+96|0,b),Q0(b+96|0,256),H=ur(b,H),Q0(b,16),D&&(H?(L0(D,0,Y),H=-1):($B(D,v,Y,U,l,1,F),H=0)),BA=b+352|0,H}(e,t,n,o,a,f,E,s,w,w+16|0),Q0(w+16|0,32),BA=w+48|0,e}function vn(e){var t;return t=u[0|e]|u[e+1|0]<<8|u[e+2|0]<<16|u[e+3|0]<<24,e=u[e+4|0]|u[e+5|0]<<8|u[e+6|0]<<16|u[e+7|0]<<24,h=65280&(e<<24|t>>>8)|255&(e<<8|t>>>24)|t<<8&16711680|t<<24,-16777216&((255&e)<<24|t>>>8)|16711680&((16777215&e)<<8|t>>>24)|e>>>8&65280|e>>>24|0}function Ua(e,t,n,o,a,f,E,s,y,_,w){var D;return BA=D=BA-336|0,hn(D+16|0,_,w),$t(D+80|0,D+16|0),Q0(D+16|0,64),m0(D+80|0,E,s,y),q0(D+8|0,s,y),m0(D+80|0,D+8|0,8,0),rn(e,o,a,f,_,w),m0(D+80|0,e,a,f),q0(D+8|0,a,f),m0(D+80|0,D+8|0,8,0),Ag(D+80|0,t),Q0(D+80|0,256),n&&(r[n>>2]=16,r[n+4>>2]=0),BA=D+336|0,0}function Ma(e,t,n,o){var a;if(BA=a=BA-192|0,!(!n|(t-1&255)>>>0>=64|(o-1&255)>>>0>=64))return lA[a+130>>1]=257,p[a+129|0]=o,p[a+128|0]=t,ga(a+128|4),q0(a+128|8,0,0),L0(a+144|0,0,48),XB(e,a+128|0),L0(o+a|0,0,128-o|0),Ee(t=e,e=V0(a,n,o),128,0),Q0(e,128),BA=e+192|0,0;z0(),s0()}function Ra(e,t,n){r[e+48>>2]=n?u[0|n]|u[n+1|0]<<8|u[n+2|0]<<16|u[n+3|0]<<24:0,r[e+52>>2]=u[0|t]|u[t+1|0]<<8|u[t+2|0]<<16|u[t+3|0]<<24,r[e+56>>2]=u[t+4|0]|u[t+5|0]<<8|u[t+6|0]<<16|u[t+7|0]<<24,r[e+60>>2]=u[t+8|0]|u[t+9|0]<<8|u[t+10|0]<<16|u[t+11|0]<<24}function La(e,t,n,o,a,f,E){var s;return BA=s=BA-16|0,e=L0(e,0,128),E>>>0<2147483649&&!(o|f)?E>>>0>8191&&a|f?(vt(s,16),e=se(a,E>>>10|0,1,t,n,s,16,0,32,e,128,2)?-1:0):(r[8960]=28,e=-1):(r[8960]=22,e=-1),BA=s+16|0,e}function kn(e){var t=0;return(0-(t=e+4&(e+65488>>>8^-1)&(57-e>>>8^-1)&255|((t=e-65|0)>>>8^-1)&t&(90-e>>>8^-1)&255|e+185&(e+65439>>>8^-1)&(122-e>>>8^-1)&255|63&(1+(16288^e)>>>8^-1)|62&(1+(16338^e)>>>8^-1))>>>8^-1)&1+(65470^e)>>>8&255|t}function Gn(e){var t=0;return(0-(t=e+4&(e+65488>>>8^-1)&(57-e>>>8^-1)&255|((t=e-65|0)>>>8^-1)&t&(90-e>>>8^-1)&255|e+185&(e+65439>>>8^-1)&(122-e>>>8^-1)&255|63&(1+(16336^e)>>>8^-1)|62&(1+(16340^e)>>>8^-1))>>>8^-1)&1+(65470^e)>>>8&255|t}function ir(e,t){var n,o,a=0,f=0,E=0,s=0;for(BA=n=BA-16|0,a=10;s=a,E=(t>>>0)/10|0,p[0|(f=(a=a-1|0)+(n+6|0)|0)]=t-xA(E,10)|48,!(t>>>0<10)&&(t=E,a););o=V0(t=e,f,e=11-s|0)+e|0,p[0|o]=0,BA=n+16|0}function Mt(e,t,n){var o=0,a=0,f=0;if(!n)return 0;A:if(o=u[0|e]){for(;;){if((0|(a=u[0|t]))==(0|o)&&!(!(n=n-1|0)|!a)){if(t=t+1|0,o=u[e+1|0],e=e+1|0,o)continue;break A}break}f=o}return(255&f)-u[0|t]|0}function ht(e,t,n){var o,a,f,E=0;BA=a=BA-48|0,O0(e,E=t+40|0,t),$0(o=e+40|0,E,t),_0(E=e+80|0,e,n),_0(o,o,n+40|0),_0(f=e+120|0,n+120|0,t+120|0),_0(e,t+80|0,n+80|0),O0(a,e,e),$0(e,E,o),O0(o,E,o),O0(E,a,f),$0(f,a,f),BA=a+48|0}function xa(e,t,n){var o,a,f,E=0;BA=a=BA-48|0,O0(e,E=t+40|0,t),$0(o=e+40|0,E,t),_0(E=e+80|0,e,n+40|0),_0(o,o,n),_0(f=e+120|0,n+120|0,t+120|0),_0(e,t+80|0,n+80|0),O0(a,e,e),$0(e,E,o),O0(o,E,o),$0(E,a,f),O0(f,a,f),BA=a+48|0}function Ja(e,t){for(var n=0,o=0,a=0,f=0;a=(n=o<<3)+e|0,f=u[0|(n=t+n|0)]|u[n+1|0]<<8|u[n+2|0]<<16|u[n+3|0]<<24,n=u[n+4|0]|u[n+5|0]<<8|u[n+6|0]<<16|u[n+7|0]<<24,r[a>>2]=f,r[a+4>>2]=n,(0|(o=o+1|0))!=128;);}function Pa(e,t,n){var o;if(r[12+(o=BA-16|0)>>2]=e,r[o+8>>2]=t,t=0,r[o+4>>2]=0,(0|n)>=1)for(;r[o+4>>2]=r[o+4>>2]|u[r[o+8>>2]+t|0]^u[r[o+12>>2]+t|0],(0|n)!=(0|(t=t+1|0)););return(r[o+4>>2]-1>>>8&1)-1|0}function bn(e,t,n){var o,a,f,E=0;BA=a=BA-48|0,O0(e,E=t+40|0,t),$0(o=e+40|0,E,t),_0(E=e+80|0,e,n+40|0),_0(o,o,n),_0(f=e+120|0,n+80|0,t+120|0),O0(a,t=t+80|0,t),$0(e,E,o),O0(o,E,o),$0(E,a,f),O0(f,a,f),BA=a+48|0}function WB(e,t,n){var o,a,f,E=0;BA=a=BA-48|0,O0(e,E=t+40|0,t),$0(o=e+40|0,E,t),_0(E=e+80|0,e,n),_0(o,o,n+40|0),_0(f=e+120|0,n+80|0,t+120|0),O0(a,t=t+80|0,t),$0(e,E,o),O0(o,E,o),O0(E,a,f),$0(f,a,f),BA=a+48|0}function or(e,t,n){var o;if(r[12+(o=BA-16|0)>>2]=e,r[o+8>>2]=t,t=0,p[o+7|0]=0,n)for(;p[o+7|0]=u[o+7|0]|u[r[o+8>>2]+t|0]^u[r[o+12>>2]+t|0],(0|n)!=(0|(t=t+1|0)););return(u[o+7|0]-1>>>8&1)-1|0}function Ka(e,t,n){var o,a=0,f=0;if(BA=o=BA-16|0,p[o+15|0]=0,f=-1,!(0|Ct[r[8950]](e,t,n))){for(;p[o+15|0]=u[e+a|0]|u[o+15|0],(0|(a=a+1|0))!=32;);f=0-(u[o+15|0]-1>>>8&1)|0}return BA=o+16|0,f}function ce(e,t){var n,o,a,f,E;BA=o=BA-48|0,k0(e,t),k0(n=e+80|0,E=t+40|0),function(s,y){var _,w,D,v,Y,U,H,i,c,N,l,F,b,V,W,O,z,tA,AA,gA,aA,iA,hA,yA,fA,_A,wA,mA,bA,RA,j,rA,YA,SA,NA,VA,XA,g0,$=0,cA=0,zA=0,ZA=0,t0=0,r0=0,o0=0,E0=0,B0=0,n0=0,X=0,eA=0,CA=0,h0=0,I0=0,w0=0,d0=0,S0=0,Y0=0,T0=0;Y=$=(t0=r[y+12>>2])<<1,U=$>>31,H=$=(B0=r[y+4>>2])<<1,$=K(Y,U,$,_=$>>31),zA=h,cA=$,iA=$=h0=r[y+8>>2],ZA=K($,n0=$>>31,$,n0),$=h+zA|0,$=(cA=cA+ZA|0)>>>0>>0?$+1|0:$,ZA=cA,w=cA=I0=r[y+16>>2],i=cA>>31,c=cA=(w0=r[y>>2])<<1,zA=K(w,i,cA,D=cA>>31),$=h+$|0,$=(cA=ZA+zA|0)>>>0>>0?$+1|0:$,o0=cA,zA=r[y+28>>2],AA=cA=xA(zA,38),bA=zA,ZA=K(cA,O=cA>>31,zA,hA=zA>>31),$=h+$|0,$=(cA=o0+ZA|0)>>>0>>0?$+1|0:$,r0=cA,o0=r[y+32>>2],E0=K(l=cA=xA(o0,19),F=cA>>31,cA=(ZA=r[y+24>>2])<<1,cA>>31),cA=h+$|0,cA=E0>>>0>(X=r0+E0|0)>>>0?cA+1|0:cA,r0=X,CA=r[y+36>>2],N=$=xA(CA,38),v=$>>31,z=y=(X=r[y+20>>2])<<1,E0=K($,v,y,V=y>>31),y=h+cA|0,yA=($=r0+E0|0)<<1,SA=$=($>>>0>>0?y+1|0:y)<<1|$>>>31,RA=y=yA+33554432|0,NA=$=y>>>0<33554432?$+1|0:$,y=$>>26,$=(67108863&$)<<6|RA>>>26,cA=K(H,_,w,i),E0=h,r0=$,tA=$=h0<<1,d0=t0,t0=K($,W=$>>31,t0,fA=t0>>31),$=h+E0|0,$=(cA=t0+cA|0)>>>0>>0?$+1|0:$,h0=X,t0=(E0=K(X,gA=X>>31,c,D))+cA|0,cA=h+$|0,cA=t0>>>0>>0?cA+1|0:cA,I0=t0,j=$=zA<<1,t0=K(l,F,$,_A=$>>31),$=h+cA|0,$=(zA=I0+t0|0)>>>0>>0?$+1|0:$,cA=zA,t0=ZA,zA=K(N,v,ZA,b=ZA>>31),$=h+$|0,$=(cA=cA+zA|0)>>>0>>0?$+1|0:$,zA=cA,y=y+(cA=$<<1|cA>>>31)|0,S0=$=r0+(zA<<=1)|0,$=$>>>0>>0?y+1|0:y,VA=y=S0+16777216|0,y=(33554431&($=y>>>0<16777216?$+1|0:$))<<7|y>>>25,zA=$>>25,$=K(Y,U,d0,fA),cA=h,r0=y,y=(E0=K(w,i,tA,W))+$|0,$=h+cA|0,$=y>>>0>>0?$+1|0:$,cA=K(H,_,z,V),$=h+$|0,$=(y=cA+y|0)>>>0>>0?$+1|0:$,cA=(E0=K(c,D,ZA,b))+y|0,y=h+$|0,y=cA>>>0>>0?y+1|0:y,E0=o0,o0=K(l,F,o0,aA=o0>>31),$=h+y|0,$=(cA=o0+cA|0)>>>0>>0?$+1|0:$,y=(o0=K(N,v,j,_A))+cA|0,cA=h+$|0,y=(($=y)>>>0>>0?cA+1|0:cA)<<1|$>>>31,o0=$<<1,$=y+zA|0,$=(cA=r0+o0|0)>>>0>>0?$+1|0:$,Y0=cA=(y=cA)+33554432|0,zA=$=cA>>>0<33554432?$+1|0:$,$=-67108864&cA,r[s+24>>2]=y-$,o0=s,y=K(y=xA(X,38),y>>31,X,gA),$=h,r0=y,X=K(y=w0,cA=y>>31,y,cA),cA=h+$|0,cA=(y=r0+X|0)>>>0>>0?cA+1|0:cA,$=y,eA=y=xA(ZA,19),wA=y>>31,rA=y=w<<1,y=$+(ZA=K(eA,wA,y,mA=y>>31))|0,$=h+cA|0,$=y>>>0>>0?$+1|0:$,cA=K(Y,U,AA,O),$=h+$|0,$=(y=cA+y|0)>>>0>>0?$+1|0:$,cA=(ZA=K(l,F,tA,W))+y|0,y=h+$|0,y=cA>>>0>>0?y+1|0:y,ZA=K(H,_,N,v),$=h+y|0,XA=$=((y=cA=ZA+cA|0)>>>0>>0?$+1|0:$)<<1|y>>>31,w0=y=33554432+(X=y<<1)|0,I0=cA=y>>>0<33554432?$+1|0:$,y=(67108863&cA)<<6|y>>>26,ZA=cA>>26,$=K(eA,wA,z,V),cA=h,T0=y,y=(B0=K(c,D,r0=B0,YA=r0>>31))+$|0,$=h+cA|0,$=y>>>0>>0?$+1|0:$,cA=(B0=K(w,i,AA,O))+y|0,y=h+$|0,y=cA>>>0>>0?y+1|0:y,B0=K(l,F,Y,U),$=h+y|0,$=(cA=B0+cA|0)>>>0>>0?$+1|0:$,y=(B0=K(N,v,iA,n0))+cA|0,cA=h+$|0,y=(($=y)>>>0>>0?cA+1|0:cA)<<1|$>>>31,B0=$<<1,$=y+ZA|0,$=(cA=T0+B0|0)>>>0>>0?$+1|0:$,B0=cA,(y=cA+16777216|0)>>>0<16777216&&($=$+1|0),T0=y,cA=y,y=$>>25,$=(33554431&$)<<7|cA>>>25,ZA=y,y=K(c,D,iA,n0),cA=h,g0=$,r0=K(H,_,r0,YA),$=h+cA|0,$=(y=r0+y|0)>>>0>>0?$+1|0:$,r0=K(eA,wA,t0,b),cA=h+$|0,cA=(y=r0+y|0)>>>0>>0?cA+1|0:cA,r0=K(z,V,AA,O),$=h+cA|0,$=(y=r0+y|0)>>>0>>0?$+1|0:$,cA=K(l,F,rA,mA),$=h+$|0,$=(y=cA+y|0)>>>0>>0?$+1|0:$,cA=(r0=K(N,v,Y,U))+y|0,y=h+$|0,$=($=(y=cA>>>0>>0?y+1|0:y)<<1|cA>>>31)+ZA|0,cA=$=(y=g0+(cA<<=1)|0)>>>0>>0?$+1|0:$,r0=$=y+33554432|0,ZA=cA=$>>>0<33554432?cA+1|0:cA,$&=-67108864,r[o0+8>>2]=y-$,y=K(tA,W,h0,gA),cA=h,$=(eA=K(w,i,Y,U))+y|0,y=h+cA|0,y=$>>>0>>0?y+1|0:y,cA=(eA=K(H,_,t0,b))+$|0,$=h+y|0,$=cA>>>0>>0?$+1|0:$,y=(eA=K(c,D,bA,hA))+cA|0,cA=h+$|0,cA=y>>>0>>0?cA+1|0:cA,eA=K(N,v,E0,aA),$=h+cA|0,$=($=($=(y=eA+y|0)>>>0>>0?$+1|0:$)<<1|y>>>31)+(cA=zA>>26)|0,cA=y=(zA=(67108863&zA)<<6|Y0>>>26)+(y<<1)|0,y=$=y>>>0>>0?$+1|0:$,Y0=$=cA+16777216|0,zA=y=$>>>0<16777216?y+1|0:y,y=-33554432&$,r[o0+28>>2]=cA-y,y=K(c,D,d0,fA),$=h,cA=K(H,_,iA,n0),$=h+$|0,$=(y=cA+y|0)>>>0>>0?$+1|0:$,cA=K(t0,b,AA,O),$=h+$|0,$=(y=cA+y|0)>>>0>>0?$+1|0:$,cA=(n0=K(l,F,z,V))+y|0,y=h+$|0,y=cA>>>0>>0?y+1|0:y,$=(n0=K(N,v,w,i))+cA|0,cA=h+y|0,y=$,$=($>>>0>>0?cA+1|0:cA)<<1|$>>>31,cA=y<<1,$=(y=ZA>>26)+$|0,$=(cA=cA+(ZA=(67108863&ZA)<<6|r0>>>26)|0)>>>0>>0?$+1|0:$,d0=cA=(y=cA)+16777216|0,ZA=$=cA>>>0<16777216?$+1|0:$,$=-33554432&cA,r[o0+12>>2]=y-$,n0=s,y=K(t0,b,tA,W),$=h,cA=K(w,i,w,i),$=h+$|0,$=(y=cA+y|0)>>>0>>0?$+1|0:$,cA=K(Y,U,z,V),$=h+$|0,$=(y=cA+y|0)>>>0>>0?$+1|0:$,cA=K(H,_,j,_A),$=h+$|0,$=(y=cA+y|0)>>>0>>0?$+1|0:$,cA=(o0=K(c,D,E0,aA))+y|0,y=h+$|0,y=cA>>>0>>0?y+1|0:y,$=(CA=K(N,v,o0=CA,r0=o0>>31))+cA|0,cA=h+y|0,s=(y=$)<<1,$=(y=zA>>25)+($=($>>>0>>0?cA+1|0:cA)<<1|$>>>31)|0,$=(cA=s+(zA=(33554431&zA)<<7|Y0>>>25)|0)>>>0>>0?$+1|0:$,CA=cA=(y=cA)+33554432|0,zA=$=cA>>>0<33554432?$+1|0:$,$=-67108864&cA,r[n0+32>>2]=y-$,$=ZA>>25,cA=(ZA=(33554431&ZA)<<7|d0>>>25)+(yA-(y=-67108864&RA)|0)|0,y=$+(SA-((y>>>0>yA>>>0)+NA|0)|0)|0,$=y=cA>>>0>>0?y+1|0:y,ZA=y=cA+33554432|0,y=((67108863&($=y>>>0<33554432?$+1|0:$))<<6|y>>>26)+(S0=S0-(-33554432&VA)|0)|0,r[n0+20>>2]=y,y=-67108864&ZA,r[n0+16>>2]=cA-y,y=K(Y,U,t0,b),cA=h,$=(t0=K(h0,gA,rA,mA))+y|0,y=h+cA|0,y=$>>>0>>0?y+1|0:y,cA=(t0=K(tA,W,bA,hA))+$|0,$=h+y|0,$=cA>>>0>>0?$+1|0:$,y=(t0=K(H,_,E0,aA))+cA|0,cA=h+$|0,cA=y>>>0>>0?cA+1|0:cA,t0=K(c,D,o0,r0),$=h+cA|0,$=($=($=(y=t0+y|0)>>>0>>0?$+1|0:$)<<1|y>>>31)+(cA=zA>>26)|0,$=(y=(zA=(67108863&zA)<<6|CA>>>26)+(y<<1)|0)>>>0>>0?$+1|0:$,cA=y,zA=y,y=$,y=($=cA+16777216|0)>>>0<16777216?y+1|0:y,cA=-33554432&$,r[n0+36>>2]=zA-cA,ZA=B0-(-33554432&T0)|0,y=($=K((33554431&y)<<7|$>>>25,y>>25,19,0))+(X-(cA=-67108864&w0)|0)|0,cA=h+(XA-((cA>>>0>X>>>0)+I0|0)|0)|0,cA=y>>>0<$>>>0?cA+1|0:cA,$=y,y=cA,y=((67108863&(y=(cA=$+33554432|0)>>>0<33554432?y+1|0:y))<<6|cA>>>26)+ZA|0,r[n0+4>>2]=y,s=-67108864&cA,r[n0>>2]=$-s}(f=e+120|0,t+80|0),O0(a=e+40|0,t,E),k0(o,a),O0(a,n,e),$0(n,n,e),$0(e,o,a),$0(f,f,n),BA=o+48|0}function Fg(e){var t,n;return(e=(t=r[8943])+(n=e+3&-4)|0)>>>0<=t>>>0&&(0|n)>=1||e>>>0>In()<<16>>>0&&!(0|un(0|e))?(r[8960]=48,-1):(r[8943]=e,t)}function qa(e,t){var n;return BA=n=BA+-64|0,(t-1&255)>>>0>=64&&(z0(),s0()),p[n+3|0]=1,p[n+1|0]=0,p[n+2|0]=1,p[0|n]=t,ga(4|n),q0(8|n,0,0),L0(n+16|0,0,48),XB(e,n),BA=n- -64|0,0}function Pg(e,t,n,o,a,f,E){var s=0,y=0;s=o,(((s=(y=n+63|0)>>>0<63?s+1|0:s)>>>6|0)+((0|(s=(63&s)<<26|y>>>6))!=0)|0)==1&(y=0-s|0)>>>0>>0&&(z0(),s0()),$B(e,t,n,o,a,f,E)}function Kg(e,t){for(var n=0,o=0,a=0,f=0;o=(n=a<<3)+e|0,f=r[(n=t+n|0)>>2],n=r[o+4>>2]^r[n+4>>2],r[o>>2]=r[o>>2]^f,r[o+4>>2]=n,(0|(a=a+1|0))!=128;);}function Ta(e){var t,n;return 95&(1+(32704^e)>>>8^-1)|45&(1+(16321^e)>>>8^-1)|(t=e+65510>>>8&255)&e+65|(n=e+65484>>>8|0)&e+71&(255^t)|e+252&e+65474>>>8&(-1^n)&255}function Va(e){var t,n;return 47&(1+(16320^e)>>>8^-1)|43&(1+(16321^e)>>>8^-1)|(t=e+65510>>>8&255)&e+65|(n=e+65484>>>8|0)&e+71&(255^t)|e+252&e+65474>>>8&(-1^n)&255}function Cr(e,t,n,o){var a=0;a=-1;A:if(!(n>>>0>64|o-1>>>0>63)){t:{if((!n||!t)&&!qa(e,255&o))break t;if(Ma(e,255&o,t,255&n))break A}a=0}return a}function OB(e,t){var n,o,a;BA=n=BA-144|0,er(n+96|0,t+80|0),_0(n+48|0,t,n+96|0),_0(n,t+40|0,n+96|0),Jg(e,n),o=e,a=an(n+48|0)<<7^u[e+31|0],p[o+31|0]=a,BA=n+144|0}function jB(e,t){var n,o=0;if(p[15+(n=BA-16|0)|0]=0,t)for(;p[n+15|0]=u[e+o|0]|u[n+15|0],(0|(o=o+1|0))!=(0|t););return u[n+15|0]-1>>>8&1}function qA(e,t,n,o){var a;return o=t+o|0,o=(a=e+n|0)>>>0>>0?o+1|0:o,n=K(e<<1&-2,1&(t=t<<1|e>>>31),n,0),e=h+o|0,h=e=(t=n+a|0)>>>0>>0?e+1|0:e,t}function Xa(e,t,n){var o,a=0;if(o=n>>>3|0)for(n=0;mn((a=n<<3)+e|0,r[(a=t+a|0)>>2],r[a+4>>2]),(0|o)!=(0|(n=n+1|0)););}function Wa(e,t){var n=0;(function(o,a){a&&((a=r[o>>2])&&Q0(r[a+4>>2],r[o+16>>2]<<10),(a=r[o+4>>2])&&Q0(a,r[o+20>>2]<<3))})(e,4&t),ot(r[e+4>>2]),r[e+4>>2]=0,(t=r[e>>2])&&(n=r[t>>2])&&ot(n),ot(t),r[e>>2]=0}function q0(e,t,n){p[0|e]=t,p[e+1|0]=t>>>8,p[e+2|0]=t>>>16,p[e+3|0]=t>>>24,p[e+4|0]=n,p[e+5|0]=n>>>8,p[e+6|0]=n>>>16,p[e+7|0]=n>>>24}function Q0(e,t){var n;if(r[12+(n=BA-16|0)>>2]=e,t)for(e=0;p[r[n+12>>2]+e|0]=0,(0|t)!=(0|(e=e+1|0)););}function vt(e,t){e|=0;var n=0,o=0,a=0;if(t|=0)for(;o=e+n|0,a=zB(),p[0|o]=a,(0|(n=n+1|0))!=(0|t););}function Oa(e,t,n,o,a){var f,E;return e|=0,t|=0,n|=0,o|=0,BA=f=(E=BA)-128&-64,pa(f,a|=0),_a(f,t,n,o),ua(f,e),BA=E,0}function ja(e){var t=0,n=0,o=0;for(t=1;t=u[0|(o=e+n|0)]+t|0,p[0|o]=t,t=t>>>8|0,(0|(n=n+1|0))!=4;);}function Za(e,t,n,o,a,f,E,s){var y,_=0;return BA=y=BA-32|0,_=-1,ea(y,E,s)||(_=fr(e,t,n,o,a,f,y),Q0(y,32)),BA=y+32|0,_}function za(e,t,n,o,a,f,E,s){var y,_=0;return BA=y=BA-32|0,_=-1,ea(y,E,s)||(_=Ir(e,t,n,o,a,f,y),Q0(y,32)),BA=y+32|0,_}function Z0(e,t){var n,o,a;_0(e,t,n=t+120|0),_0(e+40|0,o=t+40|0,a=t+80|0),_0(e+80|0,a,n),_0(e+120|0,t,o)}function $a(e,t,n,o,a,f,E){return!o&n>>>0>=16|o?za(e,t+16|0,t,n-16|0,o-(n>>>0<16)|0,a,f,E):-1}function An(e,t){for(var n=0,o=0;p[0|(o=e+n|0)]=u[0|o]^u[t+n|0],(0|(n=n+1|0))!=8;);}function tn(e,t,n){var o,a;BA=o=(a=BA)-384&-64,cr(o,0,0,24),zt(o,t,32,0),zt(o,n,32,0),hr(o,e,24),BA=a}function yt(e,t){var n;O0(e,n=t+40|0,t),$0(e+40|0,n,t),dg(e+80|0,t+80|0),_0(e+120|0,t+120|0,2224)}function ZB(e,t,n,o,a,f,E){return t-1>>>0>63|E>>>0>64?-1:function(s,y,_,w,D,v,Y){var U,H=0;if(U=H=BA,BA=H=H-384&-64,!(!s|(w-1&255)>>>0>=64|(D|v?!y:0)|Y>>>0>=65|(Y?!_:0)))return Y?Ma(H,w,_,Y):qa(H,w),Ee(H,y,D,v),UB(H,s,w),BA=U,0;z0(),s0()}(e,n,f,255&t,o,a,255&E)}function gn(e,t,n,o,a,f,E){return!o&n>>>0>=4294967280|o&&(z0(),s0()),Za(e+16|0,e,t,n,o,a,f,E)}function Qr(e,t){var n;_0(e,t,n=t+120|0),_0(e+40|0,t+40|0,t=t+80|0),_0(e+80|0,t,n)}function U0(e){var t;return t=u[0|e]|u[e+1|0]<<8,e=u[e+2|0],h=e>>>16|0,t|e<<16}function zB(){var e,t;return BA=e=BA-16|0,p[e+15|0]=0,t=0|N0(1024,e+15|0,0),BA=e+16|0,0|t}function en(e,t,n,o,a){var f;return BA=f=BA-416|0,function(E,s){var y,_=0,w=0;for(BA=y=BA-192|0,ye(E),L0(y- -64|0,54,128),p[y+64|0]=54^u[0|s],_=1;p[0|(w=(y- -64|0)+_|0)]=u[0|w]^u[s+_|0],(0|(_=_+1|0))!=32;);for(wt(E,y- -64|0,128,0),ye(E=E+208|0),L0(y- -64|0,92,128),p[y+64|0]=92^u[0|s],_=1;p[0|(w=(y- -64|0)+_|0)]=u[0|w]^u[s+_|0],(0|(_=_+1|0))!=32;);wt(E,y- -64|0,128,0),Q0(y- -64|0,128),Q0(y,64),BA=y+192|0}(f,a),wt(f,t,n,o),function(E,s){var y,_=0;BA=y=BA+-64|0,function(w,D){var v;BA=v=BA+-64|0,ag(w,v),wt(w=w+208|0,v,64,0),ag(w,D),Q0(v,64),BA=v- -64|0}(E,y),_=r[y+28>>2],E=r[y+24>>2],p[s+24|0]=E,p[s+25|0]=E>>>8,p[s+26|0]=E>>>16,p[s+27|0]=E>>>24,p[s+28|0]=_,p[s+29|0]=_>>>8,p[s+30|0]=_>>>16,p[s+31|0]=_>>>24,_=r[y+20>>2],E=r[y+16>>2],p[s+16|0]=E,p[s+17|0]=E>>>8,p[s+18|0]=E>>>16,p[s+19|0]=E>>>24,p[s+20|0]=_,p[s+21|0]=_>>>8,p[s+22|0]=_>>>16,p[s+23|0]=_>>>24,_=r[y+12>>2],E=r[y+8>>2],p[s+8|0]=E,p[s+9|0]=E>>>8,p[s+10|0]=E>>>16,p[s+11|0]=E>>>24,p[s+12|0]=_,p[s+13|0]=_>>>8,p[s+14|0]=_>>>16,p[s+15|0]=_>>>24,_=r[y+4>>2],E=r[y>>2],p[0|s]=E,p[s+1|0]=E>>>8,p[s+2|0]=E>>>16,p[s+3|0]=E>>>24,p[s+4|0]=_,p[s+5|0]=_>>>8,p[s+6|0]=_>>>16,p[s+7|0]=_>>>24,BA=y- -64|0}(f,e),BA=f+416|0,0}function he(e,t,n,o){var a;return BA=a=BA-208|0,ye(a),wt(a,t,n,o),ag(a,e),BA=a+208|0,0}function pt(e,t){var n=0;return(-1>>>(n=31&t)&e)<>>e}function ag(e,t){var n;BA=n=BA-704|0,function(o,a){var f,E=0;(f=r[o+72>>2]>>>3&127)>>>0<=111?V0(80+(o+f|0)|0,35424,112-f|0):(V0((E=o+80|0)+f|0,35424,128-f|0),Ar(o,E,a,a+640|0),L0(E,0,112)),Xa(o+192|0,o- -64|0,16),Ar(o,o+80|0,a,a+640|0)}(e,n),Xa(t,e,64),Q0(n,704),Q0(e,208),BA=n+704|0}function $B(e,t,n,o,a,f,E){(0|o)==1|o>>>0>1&&(z0(),s0()),Ct[r[8957]](e,t,n,o,a,f,E)}function rn(e,t,n,o,a,f){(0|o)==1|o>>>0>1&&(z0(),s0()),Ct[r[8956]](e,t,n,o,a,1,0,f)}function ye(e){r[e+64>>2]=0,r[e+68>>2]=0,r[e+72>>2]=0,r[e+76>>2]=0,V0(e,34720,64)}function Er(e,t,n){return n>>>0>=256&&(D0(2016,2036,107,2089),s0()),UB(e,t,255&n)}function Bn(){var e;BA=e=BA-16|0,p[e+15|0]=0,N0(1062,e+15|0,0),BA=e+16|0}function Aa(e){var t;return BA=t=BA-32|0,Jg(t,e),e=jB(t,32),BA=t+32|0,e}function sr(e,t){var n;BA=n=BA-128|0,function(o,a){dg(o,a),dg(o+40|0,a+40|0),dg(o+80|0,a+80|0)}(n+8|0,t),ce(e,n+8|0),BA=n+128|0}function y0(e,t){p[0|e]=t,p[e+1|0]=t>>>8,p[e+2|0]=t>>>16,p[e+3|0]=t>>>24}function Zt(e,t,n){TB(e,t,n),TB(e+40|0,t+40|0,n),TB(e+80|0,t+80|0,n)}function an(e){var t;return BA=t=BA-32|0,Jg(t,e),BA=t+32|0,1&p[0|t]}function cr(e,t,n,o){return 0|Cr(e|=0,t|=0,n|=0,o|=0)}function ta(e){p[e+32|0]=1,p[e+33|0]=0,p[e+34|0]=0,p[e+35|0]=0}function nn(e){r[e>>2]=0,r[e+4>>2]=0,r[e+8>>2]=0,r[e+12>>2]=0}function ga(e){p[0|e]=0,p[e+1|0]=0,p[e+2|0]=0,p[e+3|0]=0}function hr(e,t,n){return 0|Er(e|=0,t|=0,n|=0)}function ea(e,t,n){return 0|function(o,a,f){var E,s=0;return BA=E=BA-32|0,s=-1,Ka(E,f,a)||(s=LB(o,35552,E)),BA=E+32|0,s}(e|=0,t|=0,n|=0)}function ra(e,t,n){return 0|Ka(e|=0,t|=0,n|=0)}function z0(){var e;(e=r[9105])&&Ct[0|e](),W0(),s0()}function on(e){Ie(e),kt(e+40|0),kt(e+80|0),Ie(e+120|0)}function Ba(e,t,n,o,a,f){Ct[r[8953]](e,t,n,o,a,0,0,f)}function Cn(e,t,n,o,a,f){Ct[r[8953]](e,t,n,o,a,1,0,f)}function Qn(e,t){return e|=0,vt(t|=0,32),0|oa(e,t)}function yr(e,t){return e=function(n,o){var a=0,f=0;A:{if(f=255&o){if(3&n)for(;;){if(!(a=u[0|n])|(0|a)==(255&o))break A;if(!(3&(n=n+1|0)))break}t:if(!((-1^(a=r[n>>2]))&a-16843009&-2139062144))for(f=xA(f,16843009);;){if((-1^(a^=f))&a-16843009&-2139062144)break t;if(a=r[n+4>>2],n=n+4|0,a-16843009&(-1^a)&-2139062144)break}for(;(f=u[0|(a=n)])&&(n=a+1|0,(0|f)!=(255&o)););return a}return Ut(n)+n|0}return n}(e,t),u[0|e]==(255&t)?e:0}function En(e,t,n,o,a,f){return fa(e,t,n,o,a,f,0),0}function fr(e,t,n,o,a,f,E){return la(e,t,n,o,a,f,E)}function Ir(e,t,n,o,a,f,E){return wa(e,t,n,o,a,f,E)}function sn(e,t,n,o,a,f,E){return ZB(e,t,n,o,a,f,E)}function aa(e,t){ye(e),t&&wt(e,35728,34,0)}function cn(e,t,n,o,a){return va(e,t,n,o,a,0)}function na(e,t){return 0|oa(e|=0,t|=0)}function ia(e,t,n,o){Ct[r[8955]](e,t,0,n,o)}function hn(e,t,n){Ct[r[8954]](e,64,0,t,n)}function K(e,t,n,o){return function(a,f,E,s){var y,_,w,D,v=0,Y=0;return D=xA(v=E>>>16|0,Y=a>>>16|0),v=(65535&(Y=((w=xA(y=65535&E,_=65535&a))>>>16|0)+xA(Y,y)|0))+xA(v,_)|0,a=(xA(f,E)+D|0)+xA(a,s)+(Y>>>16)+(v>>>16)|0,h=a,65535&w|v<<16}(e,t,n,o)}function ng(e,t){return(255&(e^t))-1>>>31|0}function yn(e,t,n){(function(o,a,f){var E,s;BA=E=BA-128|0,kt(o),kt(o+40|0),Ie(o+80|0),Zt(o,a,ng(f=f-((0-(s=(128&f)>>>7|0)&f)<<1)<<24>>24,1)),Zt(o,a+120|0,ng(f,2)),Zt(o,a+240|0,ng(f,3)),Zt(o,a+360|0,ng(f,4)),Zt(o,a+480|0,ng(f,5)),Zt(o,a+600|0,ng(f,6)),Zt(o,a+720|0,ng(f,7)),Zt(o,a+840|0,ng(f,8)),dg(E+8|0,o+40|0),dg(E+48|0,o),Sa(E+88|0,o+80|0),Zt(o,E+8|0,s),BA=E+128|0})(e,xA(t,960)+3488|0,n)}function oa(e,t){return 0|Ct[r[8951]](e,t)}function m0(e,t,n,o){Ct[r[8948]](e,t,n,o)}function zt(e,t,n,o){return at(e,t,n,o)}function kt(e){r[e>>2]=1,L0(e+4|0,0,36)}function at(e,t,n,o){return Ee(e,t,n,o)}function v0(e,t,n){return function(o,a,f){var E=0,s=0,y=0,_=0;return E=31&(y=_=63&f),y>>>0>=32?E=-1>>>E|0:(s=-1>>>E|0,E=(1<>>E),y=E&o,E=a&s,s=31&_,_>>>0>=32?(E=y<>>32-s|E<>>0>=32?(E=-1<>>32-f|-1<>>0>=32?(f=0,o=E>>>a|0):(f=E>>>a|0,o=((1<>>a),h=f|y,o|_}(e,t,n)}function x(e,t,n){return function(o,a,f){var E=0,s=0,y=0,_=0,w=0;return E=31&(_=63&f),_>>>0>=32?(s=-1<>>32-E|-1<>>0>=32?(s=0,_=E>>>y|0):(s=E>>>y|0,_=((1<>>y),w=s,y=31&(E=0-f&63),E>>>0>=32?(s=0,f=-1>>>y|0):(s=-1>>>y|0,f=(1<>>y),o&=f,a&=s,s=31&E,E>>>0>=32?(f=o<>>32-s|a<>>0<18,wA=wA+2|0,hA;);y0(o,f+1634760805|0),y0(o+4|0,b+E|0),y0(o+8|0,V+s|0),y0(o+12|0,yA+y|0),y0(o+16|0,W+_|0),y0(o+20|0,iA+857760878|0),y0(o+24|0,O+U|0),y0(o+28|0,z+H|0),y0(o+32|0,tA+i|0),y0(o+36|0,aA+c|0),y0(o+40|0,a+2036477234|0),y0(o+44|0,l+w|0),y0(o+48|0,N+D|0),y0(o+52|0,F+v|0),y0(o+56|0,gA+Y|0),y0(o+60|0,AA+1797285236|0)})(e,t,n)}function pr(e){L0(e,0,1024)}function Ie(e){L0(e,0,40)}function Gt(){return 16}function tt(){return 32}function lr(){return 24}function ue(){return-17}function qg(){return 64}function wr(){return 1}function Dr(){return 2}function Qa(){return 8}function _e(){return 0}function Ea(){return-1}function sa(){return 3}T(G=u,1024,"InsgcmV0dXJuIE1vZHVsZS5nZXRSYW5kb21WYWx1ZSgpOyB9IgB7IGlmIChNb2R1bGUuZ2V0UmFuZG9tVmFsdWUgPT09IHVuZGVmaW5lZCkgeyB0cnkgeyB2YXIgd2luZG93XyA9ICdvYmplY3QnID09PSB0eXBlb2Ygd2luZG93ID8gd2luZG93IDogc2VsZjsgdmFyIGNyeXB0b18gPSB0eXBlb2Ygd2luZG93Xy5jcnlwdG8gIT09ICd1bmRlZmluZWQnID8gd2luZG93Xy5jcnlwdG8gOiB3aW5kb3dfLm1zQ3J5cHRvOyB2YXIgcmFuZG9tVmFsdWVzU3RhbmRhcmQgPSBmdW5jdGlvbigpIHsgdmFyIGJ1ZiA9IG5ldyBVaW50MzJBcnJheSgxKTsgY3J5cHRvXy5nZXRSYW5kb21WYWx1ZXMoYnVmKTsgcmV0dXJuIGJ1ZlswXSA+Pj4gMDsgfTsgcmFuZG9tVmFsdWVzU3RhbmRhcmQoKTsgTW9kdWxlLmdldFJhbmRvbVZhbHVlID0gcmFuZG9tVmFsdWVzU3RhbmRhcmQ7IH0gY2F0Y2ggKGUpIHsgdHJ5IHsgdmFyIGNyeXB0byA9IHJlcXVpcmUoJ2NyeXB0bycpOyB2YXIgcmFuZG9tVmFsdWVOb2RlSlMgPSBmdW5jdGlvbigpIHsgdmFyIGJ1ZiA9IGNyeXB0b1sncmFuZG9tQnl0ZXMnXSg0KTsgcmV0dXJuIChidWZbMF0gPDwgMjQgfCBidWZbMV0gPDwgMTYgfCBidWZbMl0gPDwgOCB8IGJ1ZlszXSkgPj4+IDA7IH07IHJhbmRvbVZhbHVlTm9kZUpTKCk7IE1vZHVsZS5nZXRSYW5kb21WYWx1ZSA9IHJhbmRvbVZhbHVlTm9kZUpTOyB9IGNhdGNoIChlKSB7IHRocm93ICdObyBzZWN1cmUgcmFuZG9tIG51bWJlciBnZW5lcmF0b3IgZm91bmQnOyB9IH0gfSB9AExpYnNvZGl1bURSR2J1Zl9sZW4gPD0gU0laRV9NQVgAcmFuZG9tYnl0ZXMvcmFuZG9tYnl0ZXMuYwByYW5kb21ieXRlcwBTLT5idWZsZW4gPD0gQkxBS0UyQl9CTE9DS0JZVEVTAGNyeXB0b19nZW5lcmljaGFzaC9ibGFrZTJiL3JlZi9ibGFrZTJiLXJlZi5jAGJsYWtlMmJfZmluYWwAAAAAAAAAAAjJvPNn5glqO6fKhIWuZ7sr+JT+cvNuPPE2HV869U+l0YLmrX9SDlEfbD4rjGgFm2u9Qfur2YMfeSF+ExnN4FtvdXRsZW4gPD0gVUlOVDhfTUFYAGNyeXB0b19nZW5lcmljaGFzaC9ibGFrZTJiL3JlZi9nZW5lcmljaGFzaF9ibGFrZTJiLmMAY3J5cHRvX2dlbmVyaWNoYXNoX2JsYWtlMmJfZmluYWwAAAAAAAAAtnhZ/4Vy0wC9bhX/DwpqACnAAQCY6Hn/vDyg/5lxzv8At+L+tA1I/wAAAAAAAAAAsKAO/tPJhv+eGI8Af2k1AGAMvQCn1/v/n0yA/mpl4f8e/AQAkgyu"),T(G,2224,"WfGy/grlpv973Sr+HhTUAFKAAwAw0fMAd3lA/zLjnP8AbsUBZxuQ"),T(G,2272,"hTuMAb3xJP/4JcMBYNw3ALdMPv/DQj0AMkykAeGkTP9MPaP/dT4fAFGRQP92QQ4AonPW/waKLgB85vT/CoqPADQawgC49EwAgY8pAb70E/97qnr/YoFEAHnVkwBWZR7/oWebAIxZQ//v5b4BQwu1AMbwif7uRbz/Q5fuABMqbP/lVXEBMkSH/xFqCQAyZwH/UAGoASOYHv8QqLkBOFno/2XS/AAp+kcAzKpP/w4u7/9QTe8AvdZL/xGN+QAmUEz/vlV1AFbkqgCc2NABw8+k/5ZCTP+v4RD/jVBiAUzb8gDGonIALtqYAJsr8f6boGj/M7ulAAIRrwBCVKAB9zoeACNBNf5F7L8ALYb1AaN73QAgbhT/NBelALrWRwDpsGAA8u82ATlZigBTAFT/iKBkAFyOeP5ofL4AtbE+//opVQCYgioBYPz2AJeXP/7vhT4AIDicAC2nvf+OhbMBg1bTALuzlv76qg7/0qNOACU0lwBjTRoA7pzV/9XA0QFJLlQAFEEpATbOTwDJg5L+qm8Y/7EhMv6rJsv/Tvd0ANHdmQCFgLIBOiwZAMknOwG9E/wAMeXSAXW7dQC1s7gBAHLbADBekwD1KTgAfQ3M/vStdwAs3SD+VOoUAPmgxgHsfur/L2Oo/qrimf9ms9gA4o16/3pCmf629YYA4+QZAdY56//YrTj/tefSAHeAnf+BX4j/bn4zAAKpt/8HgmL+RbBe/3QE4wHZ8pH/yq0fAWkBJ/8ur0UA5C86/9fgRf7POEX/EP6L/xfP1P/KFH7/X9Vg/wmwIQDIBc//8SqA/iMhwP/45cQBgRF4APtnl/8HNHD/jDhC/yji9f/ZRiX+rNYJ/0hDhgGSwNb/LCZwAES4S//OWvsAleuNALWqOgB09O8AXJ0CAGatYgDpiWABfzHLAAWblAAXlAn/03oMACKGGv/bzIgAhggp/+BTK/5VGfcAbX8A/qmIMADud9v/563VAM4S/v4Iugf/fgkHAW8qSABvNOz+YD+NAJO/f/7NTsD/DmrtAbvbTACv87v+aVmtAFUZWQGi85QAAnbR/iGeCQCLoy7/XUYoAGwqjv5v/I7/m9+QADPlp/9J/Jv/XnQM/5ig2v+c7iX/s+rP/8UAs/+apI0A4cRoAAojGf7R1PL/Yf3e/rhl5QDeEn8BpIiH/x7PjP6SYfMAgcAa/slUIf9vCk7/k1Gy/wQEGACh7tf/Bo0hADXXDv8ptdD/54udALPL3f//uXEAveKs/3FC1v/KPi3/ZkAI/06uEP6FdUT/"),T(G,3264,"AQ=="),T(G,3296,"JuiVj8KyJ7BFw/SJ8u+Y8NXfrAXTxjM5sTgCiG1T/AXHF2pwPU3YT7o8C3YNEGcPKiBT+iw5zMZOx/13kqwDeuz///////////////////////////////////////9/7f///////////////////////////////////////3/u////////////////////////////////////////f+3T9VwaYxJY1pz3ot753hQ="),T(G,3487,"EIU7jAG98ST/+CXDAWDcNwC3TD7/w0I9ADJMpAHhpEz/TD2j/3U+HwBRkUD/dkEOAKJz1v8Gii4AfOb0/wqKjwA0GsIAuPRMAIGPKQG+9BP/e6p6/2KBRAB51ZMAVmUe/6FnmwCMWUP/7+W+AUMLtQDG8In+7kW8/+pxPP8l/zn/RbK2/oDQswB2Gn3+AwfW//EyTf9Vy8X/04f6/xkwZP+71bT+EVhpAFPRngEFc2IABK48/qs3bv/ZtRH/FLyqAJKcZv5X1q7/cnqbAeksqgB/CO8B1uzqAK8F2wAxaj3/BkLQ/wJqbv9R6hP/12vA/0OX7gATKmz/5VVxATJEh/8RagkAMmcB/1ABqAEjmB7/EKi5AThZ6P9l0vwAKfpHAMyqT/8OLu//UE3vAL3WS/8RjfkAJlBM/75VdQBW5KoAnNjQAcPPpP+WQkz/r+EQ/41QYgFM2/IAxqJyAC7amACbK/H+m6Bo/7IJ/P5kbtQADgWnAOnvo/8cl50BZZIK//6eRv5H+eQAWB4yAEQ6oP+/GGgBgUKB/8AyVf8Is4r/JvrJAHNQoACD5nEAfViTAFpExwD9TJ4AHP92AHH6/gBCSy4A5torAOV4ugGURCsAiHzuAbtrxf9UNfb/M3T+/zO7pQACEa8AQlSgAfc6HgAjQTX+Rey/AC2G9QGje90AIG4U/zQXpQC61kcA6bBgAPLvNgE5WYoAUwBU/4igZABcjnj+aHy+ALWxPv/6KVUAmIIqAWD89gCXlz/+74U+ACA4nAAtp73/joWzAYNW0wC7s5b++qoO/0RxFf/eujv/QgfxAUUGSABWnGz+N6dZAG002/4NsBf/xCxq/++VR/+kjH3/n60BADMp5wCRPiEAim9dAblTRQCQcy4AYZcQ/xjkGgAx2eIAcUvq/sGZDP+2MGD/Dg0aAIDD+f5FwTsAhCVR/n1qPADW8KkBpONCANKjTgAlNJcAY00aAO6c1f/VwNEBSS5UABRBKQE2zk8AyYOS/qpvGP+xITL+qybL/073dADR3ZkAhYCyATosGQDJJzsBvRP8ADHl0gF1u3UAtbO4AQBy2wAwXpMA9Sk4AH0NzP70rXcALN0g/lTqFAD5oMYB7H7q/48+3QCBWdb/N4sF/kQUv/8OzLIBI8PZAC8zzgEm9qUAzhsG/p5XJADZNJL/fXvX/1U8H/+rDQcA2vVY/vwjPAA31qD/hWU4AOAgE/6TQOoAGpGiAXJ2fQD4/PoAZV7E/8aN4v4zKrYAhwwJ/m2s0v/F7MIB8UGaADCcL/+ZQzf/2qUi/kq0swDaQkcBWHpjANS12/9cKuf/7wCaAPVNt/9eUaoBEtXYAKtdRwA0XvgAEpeh/sXRQv+u9A/+ojC3ADE98P62XcMAx+QGAcgFEf+JLe3/bJQEAFpP7f8nP03/NVLPAY4Wdv9l6BIBXBpDAAXIWP8hqIr/leFIAALRG/8s9agB3O0R/x7Taf6N7t0AgFD1/m/+DgDeX74B3wnxAJJM1P9szWj/P3WZAJBFMAAj5G8AwCHB/3DWvv5zmJcAF2ZYADNK+ADix4/+zKJl/9BhvQH1aBIA5vYe/xeURQBuWDT+4rVZ/9AvWv5yoVD/IXT4ALOYV/9FkLEBWO4a/zogcQEBTUUAO3k0/5juUwA0CMEA5yfp/8ciigDeRK0AWzny/tzSf//AB/b+lyO7AMPspQBvXc4A1PeFAZqF0f+b5woAQE4mAHr5ZAEeE2H/Plv5AfiFTQDFP6j+dApSALjscf7Uy8L/PWT8/iQFyv93W5n/gU8dAGdnq/7t12//2DVFAO/wFwDCld3/JuHeAOj/tP52UoX/OdGxAYvohQCesC7+wnMuAFj35QEcZ78A3d6v/pXrLACX5Bn+2mlnAI5V0gCVgb7/1UFe/nWG4P9SxnUAnd3cAKNlJADFciUAaKym/gu2AABRSLz/YbwQ/0UGCgDHk5H/CAlzAUHWr//ZrdEAUH+mAPflBP6nt3z/WhzM/q878P8LKfgBbCgz/5Cxw/6W+n4AiltBAXg83v/1we8AHda9/4ACGQBQmqIATdxrAerNSv82pmf/dEgJAOReL/8eyBn/I9ZZ/z2wjP9T4qP/S4KsAIAmEQBfiZj/13yfAU9dAACUUp3+w4L7/yjKTP/7fuAAnWM+/s8H4f9gRMMAjLqd/4MT5/8qgP4ANNs9/mbLSACNBwv/uqTVAB96dwCF8pEA0Pzo/1vVtv+PBPr++ddKAKUebwGrCd8A5XsiAVyCGv9Nmy0Bw4sc/zvgTgCIEfcAbHkgAE/6vf9g4/z+JvE+AD6uff+bb13/CubOAWHFKP8AMTn+QfoNABL7lv/cbdL/Ba6m/iyBvQDrI5P/JfeN/0iNBP9na/8A91oEADUsKgACHvAABDs/AFhOJABxp7QAvkfB/8eepP86CKwATSEMAEE/AwCZTSH/rP5mAeTdBP9XHv4BkilW/4rM7/5sjRH/u/KHANLQfwBELQ7+SWA+AFE8GP+qBiT/A/kaACPVbQAWgTb/FSPh/+o9OP862QYAj3xYAOx+QgDRJrf/Iu4G/66RZgBfFtMAxA+Z/i5U6P91IpIB5/pK/xuGZAFcu8P/qsZwAHgcKgDRRkMAHVEfAB2oZAGpraAAayN1AD5gO/9RDEUBh+++/9z8EgCj3Dr/iYm8/1NmbQBgBkwA6t7S/7muzQE8ntX/DfHWAKyBjABdaPIAwJz7ACt1HgDhUZ4Af+jaAOIcywDpG5f/dSsF//IOL/8hFAYAifss/hsf9f+31n3+KHmVALqe1f9ZCOMARVgA/suH4QDJrssAk0e4ABJ5Kf5eBU4A4Nbw/iQFtAD7h+cBo4rUANL5dP5YgbsAEwgx/j4OkP+fTNMA1jNSAG115P5n38v/S/wPAZpH3P8XDVsBjahg/7W2hQD6MzcA6urU/q8/ngAn8DQBnr0k/9UoVQEgtPf/E2YaAVQYYf9FFd4AlIt6/9zV6wHoy/8AeTmTAOMHmgA1FpMBSAHhAFKGMP5TPJ3/kUipACJn7wDG6S8AdBME/7hqCf+3gVMAJLDmASJnSADbooYA9SqeACCVYP6lLJAAyu9I/teWBQAqQiQBhNevAFauVv8axZz/MeiH/me2UgD9gLABmbJ6APX6CgDsGLIAiWqEACgdKQAyHpj/fGkmAOa/SwCPK6oALIMU/ywNF//t/5sBn21k/3C1GP9o3GwAN9ODAGMM1f+Yl5H/7gWfAGGbCAAhbFEAAQNnAD5tIv/6m7QAIEfD/yZGkQGfX/UAReVlAYgc8ABP4BkATm55//iofAC7gPcAApPr/k8LhABGOgwBtQij/0+Jhf8lqgv/jfNV/7Dn1//MlqT/79cn/y5XnP4Io1j/rCLoAEIsZv8bNin+7GNX/yl7qQE0cisAdYYoAJuGGgDnz1v+I4Qm/xNmff4k44X/dgNx/x0NfACYYEoBWJLO/6e/3P6iElj/tmQXAB91NABRLmoBDAIHAEVQyQHR9qwADDCNAeDTWAB04p8AemKCAEHs6gHh4gn/z+J7AVnWOwBwh1gBWvTL/zELJgGBbLoAWXAPAWUuzP9/zC3+T//d/zNJEv9/KmX/8RXKAKDjBwBpMuwATzTF/2jK0AG0DxAAZcVO/2JNywApufEBI8F8ACObF//PNcAAC32jAfmeuf8EgzAAFV1v/z155wFFyCT/uTC5/2/uFf8nMhn/Y9ej/1fUHv+kkwX/gAYjAWzfbv/CTLIASmW0APMvMACuGSv/Uq39ATZywP8oN1sA12yw/ws4BwDg6UwA0WLK/vIZfQAswV3+ywixAIewEwBwR9X/zjuwAQRDGgAOj9X+KjfQ/zxDeADBFaMAY6RzAAoUdgCc1N7+oAfZ/3L1TAF1O3sAsMJW/tUPsABOzs/+1YE7AOn7FgFgN5j/7P8P/8VZVP9dlYUArqBxAOpjqf+YdFgAkKRT/18dxv8iLw//Y3iG/wXswQD5937/k7seADLmdf9s2dv/o1Gm/0gZqf6beU//HJtZ/gd+EQCTQSEBL+r9ABozEgBpU8f/o8TmAHH4pADi/toAvdHL/6T33v7/I6UABLzzAX+zRwAl7f7/ZLrwAAU5R/5nSEn/9BJR/uXShP/uBrT/C+Wu/+PdwAERMRwAo9fE/gl2BP8z8EcAcYFt/0zw5wC8sX8AfUcsARqv8wBeqRn+G+YdAA+LdwGoqrr/rMVM//xLvACJfMQASBZg/y2X+QHckWQAQMCf/3jv4gCBspIAAMB9AOuK6gC3nZIAU8fA/7isSP9J4YAATQb6/7pBQwBo9s8AvCCK/9oY8gBDilH+7YF5/xTPlgEpxxD/BhSAAJ92BQC1EI//3CYPABdAk/5JGg0AV+Q5Acx8gAArGN8A22PHABZLFP8TG34AnT7XAG4d5gCzp/8BNvy+AN3Mtv6znkH/UZ0DAMLanwCq3wAA4Asg/ybFYgCopCUAF1gHAaS6bgBgJIYA6vLlAPp5EwDy/nD/Ay9eAQnvBv9Rhpn+1v2o/0N84AD1X0oAHB4s/gFt3P+yWVkA/CRMABjGLv9MTW8AhuqI/ydeHQC5SOr/RkSH/+dmB/5N54wApy86AZRhdv8QG+EBps6P/26y1v+0g6IAj43hAQ3aTv9ymSEBYmjMAK9ydQGnzksAysRTATpAQwCKL28BxPeA/4ng4P6ecM8AmmT/AYYlawDGgE//f9Gb/6P+uf48DvMAH9tw/h3ZQQDIDXT+ezzE/+A7uP7yWcQAexBL/pUQzgBF/jAB53Tf/9GgQQHIUGIAJcK4/pQ/IgCL8EH/2ZCE/zgmLf7HeNIAbLGm/6DeBADcfnf+pWug/1Lc+AHxr4gAkI0X/6mKVACgiU7/4nZQ/zQbhP8/YIv/mPonALybDwDoM5b+KA/o//DlCf+Jrxv/S0lhAdrUCwCHBaIBa7nVAAL5a/8o8kYA28gZABmdDQBDUlD/xPkX/5EUlQAySJIAXkyUARj7QQAfwBcAuNTJ/3vpogH3rUgAolfb/n6GWQCfCwz+pmkdAEkb5AFxeLf/QqNtAdSPC/+f56gB/4BaADkOOv5ZNAr//QijAQCR0v8KgVUBLrUbAGeIoP5+vNH/IiNvANfbGP/UC9b+ZQV2AOjFhf/fp23/7VBW/0aLXgCewb8Bmw8z/w++cwBOh8//+QobAbV96QBfrA3+qtWh/yfsiv9fXVf/voBfAH0PzgCmlp8A4w+e/86eeP8qjYAAZbJ4AZxtgwDaDiz+96jO/9RwHABwEeT/WhAlAcXebAD+z1P/CVrz//P0rAAaWHP/zXR6AL/mwQC0ZAsB2SVg/5pOnADr6h//zrKy/5XA+wC2+ocA9hZpAHzBbf8C0pX/qRGqAABgbv91CQgBMnso/8G9YwAi46AAMFBG/tMz7AAtevX+LK4IAK0l6f+eQasAekXX/1pQAv+DamD+43KHAM0xd/6wPkD/UjMR//EU8/+CDQj+gNnz/6IbAf5advEA9sb2/zcQdv/In50AoxEBAIxreQBVoXb/JgCVAJwv7gAJpqYBS2K1/zJKGQBCDy8Ai+GfAEwDjv8O7rgAC881/7fAugGrIK7/v0zdAfeq2wAZrDL+2QnpAMt+RP+3XDAAf6e3AUEx/gAQP38B/hWq/zvgf/4WMD//G06C/ijDHQD6hHD+I8uQAGipqADP/R7/aCgm/l7kWADOEID/1Dd6/98W6gDfxX8A/bW1AZFmdgDsmST/1NlI/xQmGP6KPj4AmIwEAObcY/8BFdT/lMnnAPR7Cf4Aq9IAMzol/wH/Dv/0t5H+APKmABZKhAB52CkAX8Ny/oUYl/+c4uf/9wVN//aUc/7hXFH/3lD2/qp7Wf9Kx40AHRQI/4qIRv9dS1wA3ZMx/jR+4gDlfBcALgm1AM1ANAGD/hwAl57UAINATgDOGasAAOaLAL/9bv5n96cAQCgoASql8f87S+T+fPO9/8Rcsv+CjFb/jVk4AZPGBf/L+J7+kKKNAAus4gCCKhX/AaeP/5AkJP8wWKT+qKrcAGJH1gBb0E8An0zJAaYq1v9F/wD/BoB9/74BjACSU9r/1+5IAXp/NQC9dKX/VAhC/9YD0P/VboUAw6gsAZ7nRQCiQMj+WzpoALY6u/755IgAy4ZM/mPd6QBL/tb+UEWaAECY+P7siMr/nWmZ/pWvFAAWIxP/fHnpALr6xv6E5YsAiVCu/6V9RACQypT+6+/4AIe4dgBlXhH/ekhG/kWCkgB/3vgBRX92/x5S1/68ShP/5afC/nUZQv9B6jj+1RacAJc7Xf4tHBv/un6k/yAG7wB/cmMB2zQC/2Ngpv4+vn7/bN6oAUvirgDm4scAPHXa//z4FAHWvMwAH8KG/ntFwP+prST+N2JbAN8qZv6JAWYAnVoZAO96QP/8BukABzYU/1J0rgCHJTb/D7p9AONwr/9ktOH/Ku30//St4v74EiEAq2OW/0rrMv91UiD+aqjtAM9t0AHkCboAhzyp/rNcjwD0qmj/6y18/0ZjugB1ibcA4B/XACgJZAAaEF8BRNlXAAiXFP8aZDr/sKXLATR2RgAHIP7+9P71/6eQwv99cRf/sHm1AIhU0QCKBh7/WTAcACGbDv8Z8JoAjc1tAUZzPv8UKGv+iprH/17f4v+dqyYAo7EZ/i12A/8O3hcB0b5R/3Z76AEN1WX/ezd7/hv2pQAyY0z/jNYg/2FBQ/8YDBwArlZOAUD3YACgh0MAQjfz/5PMYP8aBiH/YjNTAZnV0P8CuDb/GdoLADFD9v4SlUj/DRlIACpP1gAqBCYBG4uQ/5W7FwASpIQA9VS4/njGaP9+2mAAOHXq/w0d1v5ELwr/p5qE/pgmxgBCsln/yC6r/w1jU//Su/3/qi0qAYrRfADWoo0ADOacAGYkcP4Dk0MANNd7/+mrNv9iiT4A99on/+fa7AD3v38Aw5JUAKWwXP8T1F7/EUrjAFgomQHGkwH/zkP1/vAD2v89jdX/YbdqAMPo6/5fVpoA0TDN/nbR8f/weN8B1R2fAKN/k/8N2l0AVRhE/kYUUP+9BYwBUmH+/2Njv/+EVIX/a9p0/3B6LgBpESAAwqA//0TeJwHY/VwAsWnN/5XJwwAq4Qv/KKJzAAkHUQCl2tsAtBYA/h2S/P+Sz+EBtIdgAB+jcACxC9v/hQzB/itOMgBBcXkBO9kG/25eGAFwrG8ABw9gACRVewBHlhX/0Em8AMALpwHV9SIACeZcAKKOJ//XWhsAYmFZAF5P0wBanfAAX9x+AWaw4gAkHuD+Ix9/AOfocwFVU4IA0kn1/y+Pcv9EQcUAO0g+/7eFrf5deXb/O7FR/+pFrf/NgLEA3PQzABr00QFJ3k3/owhg/paV0wCe/ssBNn+LAKHgOwAEbRb/3iot/9CSZv/sjrsAMs31/wpKWf4wT44A3kyC/x6mPwDsDA3/Mbj0ALtxZgDaZf0AmTm2/iCWKgAZxpIB7fE4AIxEBQBbpKz/TpG6/kM0zQDbz4EBbXMRADaPOgEV+Hj/s/8eAMHsQv8B/wf//cAw/xNF2QED1gD/QGWSAd99I//rSbP/+afiAOGvCgFhojoAanCrAVSsBf+FjLL/hvWOAGFaff+6y7n/300X/8BcagAPxnP/2Zj4AKuyeP/khjUAsDbBAfr7NQDVCmQBIsdqAJcf9P6s4Ff/Du0X//1VGv9/J3T/rGhkAPsORv/U0Ir//dP6ALAxpQAPTHv/Jdqg/1yHEAEKfnL/RgXg//f5jQBEFDwB8dK9/8PZuwGXA3EAl1yuAOc+sv/bt+EAFxch/821UAA5uPj/Q7QB/1p7Xf8nAKL/YPg0/1RCjAAif+T/wooHAaZuvAAVEZsBmr7G/9ZQO/8SB48ASB3iAcfZ+QDooUcBlb7JANmvX/5xk0P/io/H/3/MAQAdtlMBzuab/7rMPAAKfVX/6GAZ//9Z9//V/q8B6MFRABwrnP4MRQgAkxj4ABLGMQCGPCMAdvYS/zFY/v7kFbr/tkFwAdsWAf8WfjT/vTUx/3AZjwAmfzf/4mWj/tCFPf+JRa4BvnaR/zxi2//ZDfX/+ogKAFT+4gDJH30B8DP7/x+Dgv8CijL/19exAd8M7v/8lTj/fFtE/0h+qv53/2QAgofo/w5PsgD6g8UAisbQAHnYi/53EiT/HcF6ABAqLf/V8OsB5r6p/8Yj5P5urUgA1t3x/ziUhwDAdU7+jV3P/49BlQAVEmL/Xyz0AWq/TQD+VQj+1m6w/0mtE/6gxMf/7VqQAMGscf/Im4j+5FrdAIkxSgGk3df/0b0F/2nsN/8qH4EBwf/sAC7ZPACKWLv/4lLs/1FFl/+OvhABDYYIAH96MP9RQJwAq/OLAO0j9gB6j8H+1HqSAF8p/wFXhE0ABNQfABEfTgAnLa3+GI7Z/18JBv/jUwYAYjuC/j4eIQAIc9MBomGA/we4F/50HKj/+IqX/2L08AC6doIAcvjr/2mtyAGgfEf/XiSkAa9Bkv/u8ar+ysbFAORHiv4t9m3/wjSeAIW7sABT/Jr+Wb3d/6pJ/ACUOn0AJEQz/ipFsf+oTFb/JmTM/yY1IwCvE2EA4e79/1FRhwDSG//+60lrAAjPcwBSf4gAVGMV/s8TiABkpGUAUNBN/4TP7f8PAw//IaZuAJxfVf8luW8Blmoj/6aXTAByV4f/n8JAAAx6H//oB2X+rXdiAJpH3P6/OTX/qOig/+AgY//anKUAl5mjANkNlAHFcVkAlRyh/s8XHgBphOP/NuZe/4WtzP9ct53/WJD8/mYhWgCfYQMAtdqb//BydwBq1jX/pb5zAZhb4f9Yaiz/0D1xAJc0fAC/G5z/bjbsAQ4epv8nf88B5cccALzkvP5knesA9tq3AWsWwf/OoF8ATO+TAM+hdQAzpgL/NHUK/kk44/+YweEAhF6I/2W/0QAga+X/xiu0AWTSdgByQ5n/F1ga/1maXAHceIz/kHLP//xz+v8izkgAioV//wiyfAFXS2EAD+Vc/vBDg/92e+P+knho/5HV/wGBu0b/23c2AAETrQAtlpQB+FNIAMvpqQGOazgA9/kmAS3yUP8e6WcAYFJGABfJbwBRJx7/obdO/8LqIf9E44z+2M50AEYb6/9okE8ApOZd/taHnACau/L+vBSD/yRtrgCfcPEABW6VASSl2gCmHRMBsi5JAF0rIP74ve0AZpuNAMldw//xi/3/D29i/2xBo/6bT77/Sa7B/vYoMP9rWAv+ymFV//3MEv9x8kIAbqDC/tASugBRFTwAvGin/3ymYf7ShY4AOPKJ/ilvggBvlzoBb9WN/7es8f8mBsT/uQd7/y4L9gD1aXcBDwKh/wjOLf8Sykr/U3xzAdSNnQBTCNH+iw/o/6w2rf4y94QA1r3VAJC4aQDf/vgA/5Pw/xe8SAAHMzYAvBm0/ty0AP9ToBQAo73z/zrRwv9XSTwAahgxAPX53AAWracAdgvD/xN+7QBunyX/O1IvALS7VgC8lNABZCWF/wdwwQCBvJz/VGqB/4XhygAO7G//KBRlAKysMf4zNkr/+7m4/12b4P+0+eAB5rKSAEg5Nv6yPrgAd81IALnv/f89D9oAxEM4/+ogqwEu2+QA0Gzq/xQ/6P+lNccBheQF/zTNawBK7oz/lpzb/u+ssv/7vd/+II7T/9oPigHxxFAAHCRi/hbqxwA97dz/9jklAI4Rjv+dPhoAK+5f/gPZBv/VGfABJ9yu/5rNMP4TDcD/9CI2/owQmwDwtQX+m8E8AKaABP8kkTj/lvDbAHgzkQBSmSoBjOySAGtc+AG9CgMAP4jyANMnGAATyqEBrRu6/9LM7/4p0aL/tv6f/6x0NADDZ97+zUU7ADUWKQHaMMIAUNLyANK8zwC7oaH+2BEBAIjhcQD6uD8A3x5i/k2oogA7Na8AE8kK/4vgwgCTwZr/1L0M/gHIrv8yhXEBXrNaAK22hwBesXEAK1nX/4j8av97hlP+BfVC/1IxJwHcAuAAYYGxAE07WQA9HZsBy6vc/1xOiwCRIbX/qRiNATeWswCLPFD/2idhAAKTa/88+EgAreYvAQZTtv8QaaL+idRR/7S4hgEn3qT/3Wn7Ae9wfQA/B2EAP2jj/5Q6DABaPOD/VNT8AE/XqAD43ccBc3kBACSseAAgorv/OWsx/5MqFQBqxisBOUpXAH7LUf+Bh8MAjB+xAN2LwgAD3tcAg0TnALFWsv58l7QAuHwmAUajEQD5+7UBKjfjAOKhLAAX7G4AM5WOAV0F7ADat2r+QxhNACj10f/eeZkApTkeAFN9PABGJlIB5Qa8AG3enf83dj//zZe6AOMhlf/+sPYB47HjACJqo/6wK08Aal9OAbnxev+5Dj0AJAHKAA2yov/3C4QAoeZcAUEBuf/UMqUBjZJA/57y2gAVpH0A1Yt6AUNHVwDLnrIBl1wrAJhvBf8nA+//2f/6/7A/R/9K9U0B+q4S/yIx4//2Lvv/miMwAX2dPf9qJE7/YeyZAIi7eP9xhqv/E9XZ/the0f/8BT0AXgPKAAMat/9Avyv/HhcVAIGNTf9meAcBwkyMALyvNP8RUZQA6FY3AeEwrACGKir/7jIvAKkS/gAUk1f/DsPv/0X3FwDu5YD/sTFwAKhi+/95R/gA8wiR/vbjmf/bqbH++4ul/wyjuf+kKKv/mZ8b/vNtW//eGHABEtbnAGudtf7DkwD/wmNo/1mMvv+xQn7+arlCADHaHwD8rp4AvE/mAe4p4ADU6ggBiAu1AKZ1U/9Ew14ALoTJAPCYWACkOUX+oOAq/zvXQ/93w43/JLR5/s8vCP+u0t8AZcVE//9SjQH6iekAYVaFARBQRQCEg58AdF1kAC2NiwCYrJ3/WitbAEeZLgAnEHD/2Yhh/9zGGf6xNTEA3liG/4APPADPwKn/wHTR/2pO0wHI1bf/Bwx6/t7LPP8hbsf++2p1AOThBAF4Ogf/3cFU/nCFGwC9yMn/i4eWAOo3sP89MkEAmGyp/9xVAf9wh+MAohq6AM9guf70iGsAXZkyAcZhlwBuC1b/j3Wu/3PUyAAFyrcA7aQK/rnvPgDseBL+Yntj/6jJwv4u6tYAv4Ux/2OpdwC+uyMBcxUt//mDSABwBnv/1jG1/qbpIgBcxWb+/eTN/wM7yQEqYi4A2yUj/6nDJgBefMEBnCvfAF9Ihf54zr8AesXv/7G7T//+LgIB+qe+AFSBEwDLcab/+R+9/kidyv/QR0n/zxhIAAoQEgHSUUz/WNDA/37za//ujXj/x3nq/4kMO/8k3Hv/lLM8/vAMHQBCAGEBJB4m/3MBXf9gZ+f/xZ47AcCk8ADKyjn/GK4wAFlNmwEqTNcA9JfpABcwUQDvfzT+44Il//h0XQF8hHYArf7AAQbrU/9ur+cB+xy2AIH5Xf5UuIAATLU+AK+AugBkNYj+bR3iAN3pOgEUY0oAABagAIYNFQAJNDf/EVmMAK8iOwBUpXf/4OLq/wdIpv97c/8BEtb2APoHRwHZ3LkA1CNM/yZ9rwC9YdIAcu4s/ym8qf4tupoAUVwWAISgwQB50GL/DVEs/8ucUgBHOhX/0HK//jImkwCa2MMAZRkSADz61//phOv/Z6+OARAOXACNH27+7vEt/5nZ7wFhqC//+VUQARyvPv85/jYA3ud+AKYtdf4SvWD/5EwyAMj0XgDGmHgBRCJF/wxBoP5lE1oAp8V4/0Q2uf8p2rwAcagwAFhpvQEaUiD/uV2kAeTw7f9CtjUAq8Vc/2sJ6QHHeJD/TjEK/22qaf9aBB//HPRx/0o6CwA+3Pb/eZrI/pDSsv9+OYEBK/oO/2VvHAEvVvH/PUaW/zVJBf8eGp4A0RpWAIrtSgCkX7wAjjwd/qJ0+P+7r6AAlxIQANFvQf7Lhif/WGwx/4MaR//dG9f+aGld/x/sH/6HANP/j39uAdRJ5QDpQ6f+wwHQ/4QR3f8z2VoAQ+sy/9/SjwCzNYIB6WrGANmt3P9w5Rj/r5pd/kfL9v8wQoX/A4jm/xfdcf7rb9UAqnhf/vvdAgAtgp7+aV7Z//I0tP7VRC3/aCYcAPSeTAChyGD/zzUN/7tDlACqNvgAd6Ky/1MUCwAqKsABkp+j/7fobwBN5RX/RzWPABtMIgD2iC//2ye2/1zgyQETjg7/Rbbx/6N29QAJbWoBqrX3/04v7v9U0rD/1WuLACcmCwBIFZYASIJFAM1Nm/6OhRUAR2+s/uIqO/+zANcBIYDxAOr8DQG4TwgAbh5J//aNvQCqz9oBSppF/4r2Mf+bIGQAfUpp/1pVPf8j5bH/Pn3B/5lWvAFJeNQA0Xv2/ofRJv+XOiwBXEXW/w4MWP/8mab//c9w/zxOU//jfG4AtGD8/zV1If6k3FL/KQEb/yakpv+kY6n+PZBG/8CmEgBr+kIAxUEyAAGzEv//aAH/K5kj/1BvqABur6gAKWkt/9sOzf+k6Yz+KwF2AOlDwwCyUp//ild6/9TuWv+QI3z+GYykAPvXLP6FRmv/ZeNQ/lypNwDXKjEAcrRV/yHoGwGs1RkAPrB7/iCFGP/hvz4AXUaZALUqaAEWv+D/yMiM//nqJQCVOY0AwzjQ//6CRv8grfD/HdzHAG5kc/+E5fkA5Onf/yXY0f6ysdH/ty2l/uBhcgCJYaj/4d6sAKUNMQHS68z//AQc/kaglwDovjT+U/hd/z7XTQGvr7P/oDJCAHkw0AA/qdH/ANLIAOC7LAFJolIACbCP/xNMwf8dO6cBGCuaABy+vgCNvIEA6OvL/+oAbf82QZ8APFjo/3n9lv786YP/xm4pAVNNR//IFjv+av3y/xUMz//tQr0AWsbKAeGsfwA1FsoAOOaEAAFWtwBtvioA80SuAW3kmgDIsXoBI6C3/7EwVf9a2qn/+JhOAMr+bgAGNCsAjmJB/z+RFgBGal0A6IprAW6zPf/TgdoB8tFcACNa2QG2j2r/dGXZ/3L63f+tzAYAPJajAEmsLP/vblD/7UyZ/qGM+QCV6OUAhR8o/66kdwBxM9YAgeQC/kAi8wBr4/T/rmrI/1SZRgEyIxAA+krY/uy9Qv+Z+Q0A5rIE/90p7gB243n/XleM/v53XABJ7/b+dVeAABPTkf+xLvwA5Vv2AUWA9//KTTYBCAsJ/5lgpgDZ1q3/hsACAQDPAAC9rmsBjIZkAJ7B8wG2ZqsA65ozAI4Fe/88qFkB2Q5c/xPWBQHTp/4ALAbK/ngS7P8Pcbj/uN+LACixd/62e1r/sKWwAPdNwgAb6ngA5wDW/zsnHgB9Y5H/lkREAY3e+ACZe9L/bn+Y/+Uh1gGH3cUAiWECAAyPzP9RKbwAc0+C/14DhACYr7v/fI0K/37As/8LZ8YAlQYtANtVuwHmErL/SLaYAAPGuP+AcOABYaHmAP5jJv86n8UAl0LbADtFj/+5cPkAd4gv/3uChACoR1//cbAoAei5rQDPXXUBRJ1s/2YFk/4xYSEAWUFv/vceo/982d0BZvrYAMauS/45NxIA4wXsAeXVrQDJbdoBMenvAB43ngEZsmoAm2+8AV5+jADXH+4BTfAQANXyGQEmR6gAzbpd/jHTjP/bALT/hnalAKCThv9uuiP/xvMqAPOSdwCG66MBBPGH/8Euwf5ntE//4QS4/vJ2ggCSh7AB6m8eAEVC1f4pYHsAeV4q/7K/w/8ugioAdVQI/+kx1v7uem0ABkdZAezTewD0DTD+d5QOAHIcVv9L7Rn/keUQ/oFkNf+Glnj+qJ0yABdIaP/gMQ4A/3sW/5e5l/+qULgBhrYUAClkZQGZIRAATJpvAVbO6v/AoKT+pXtd/wHYpP5DEa//qQs7/54pPf9JvA7/wwaJ/xaTHf8UZwP/9oLj/3oogADiLxj+IyQgAJi6t/9FyhQAw4XDAN4z9wCpq14BtwCg/0DNEgGcUw//xTr5/vtZbv8yClj+MyvYAGLyxgH1l3EAq+zCAcUfx//lUSYBKTsUAP1o5gCYXQ7/9vKS/tap8P/wZmz+oKfsAJravACW6cr/GxP6AQJHhf+vDD8BkbfGAGh4c/+C+/cAEdSn/z57hP/3ZL0Am9+YAI/FIQCbOyz/ll3wAX8DV/9fR88Bp1UB/7yYdP8KFxcAicNdATZiYQDwAKj/lLx/AIZrlwBM/asAWoTAAJIWNgDgQjb+5rrl/ye2xACU+4L/QYNs/oABoACpMaf+x/6U//sGgwC7/oH/VVI+ALIXOv/+hAUApNUnAIb8kv4lNVH/m4ZSAM2n7v9eLbT/hCihAP5vcAE2S9kAs+bdAetev/8X8zABypHL/yd2Kv91jf0A/gDeACv7MgA2qeoBUETQAJTL8/6RB4cABv4AAPy5fwBiCIH/JiNI/9Mk3AEoGlkAqEDF/gPe7/8CU9f+tJ9pADpzwgC6dGr/5ffb/4F2wQDKrrcBpqFIAMlrk/7tiEoA6eZqAWlvqABA4B4BAeUDAGaXr//C7uT//vrUALvteQBD+2ABxR4LALdfzADNWYoAQN0lAf/fHv+yMNP/8cha/6fRYP85gt0ALnLI/z24QgA3thj+brYhAKu+6P9yXh8AEt0IAC/n/gD/cFMAdg/X/60ZKP7AwR//7hWS/6vBdv9l6jX+g9RwAFnAawEI0BsAtdkP/+eV6ACM7H4AkAnH/wxPtf6Ttsr/E222/zHU4QBKo8sAr+mUABpwMwDBwQn/D4f5AJbjggDMANsBGPLNAO7Qdf8W9HAAGuUiACVQvP8mLc7+8Frh/x0DL/8q4EwAuvOnACCED/8FM30Ai4cYAAbx2wCs5YX/9tYyAOcLz/+/flMBtKOq//U4GAGypNP/AxDKAWI5dv+Ng1n+ITMYAPOVW//9NA4AI6lD/jEeWP+zGyT/pYy3ADq9lwBYHwAAS6lCAEJlx/8Y2McBecQa/w5Py/7w4lH/XhwK/1PB8P/MwYP/Xg9WANoonQAzwdEAAPKxAGa59wCebXQAJodbAN+vlQDcQgH/VjzoABlgJf/heqIB17uo/56dLgA4q6IA6PBlAXoWCQAzCRX/NRnu/9ke6P59qZQADehmAJQJJQClYY0B5IMpAN4P8//+EhEABjztAWoDcQA7hL0AXHAeAGnQ1QAwVLP/u3nn/hvYbf+i3Wv+Se/D//ofOf+Vh1n/uRdzAQOjnf8ScPoAGTm7/6FgpAAvEPMADI37/kPquP8pEqEArwZg/6CsNP4YsLf/xsFVAXx5if+XMnL/3Ms8/8/vBQEAJmv/N+5e/kaYXgDV3E0BeBFF/1Wkvv/L6lEAJjEl/j2QfACJTjH+qPcwAF+k/ABpqYcA/eSGAECmSwBRSRT/z9IKAOpqlv9eIlr//p85/tyFYwCLk7T+GBe5ACk5Hv+9YUwAQbvf/+CsJf8iPl8B55DwAE1qfv5AmFsAHWKbAOL7Nf/q0wX/kMve/6Sw3f4F5xgAs3rNACQBhv99Rpf+YeT8AKyBF/4wWtH/luBSAVSGHgDxxC4AZ3Hq/y5lef4ofPr/hy3y/gn5qP+MbIP/j6OrADKtx/9Y3o7/yF+eAI7Ao/8HdYcAb3wWAOwMQf5EJkH/467+APT1JgDwMtD/oT/6ADzR7wB6IxMADiHm/gKfcQBqFH//5M1gAInSrv601JD/WWKaASJYiwCnonABQW7FAPElqQBCOIP/CslT/oX9u/+xcC3+xPsAAMT6l//u6Nb/ltHNABzwdgBHTFMB7GNbACr6gwFgEkD/dt4jAHHWy/96d7j/QhMkAMxA+QCSWYsAhj6HAWjpZQC8VBoAMfmBANDWS//Pgk3/c6/rAKsCif+vkboBN/WH/5pWtQFkOvb/bcc8/1LMhv/XMeYBjOXA/97B+/9RiA//s5Wi/xcnHf8HX0v+v1HeAPFRWv9rMcn/9NOdAN6Mlf9B2zj+vfZa/7I7nQEw2zQAYiLXABwRu/+vqRgAXE+h/+zIwgGTj+oA5eEHAcWoDgDrMzUB/XiuAMUGqP/KdasAoxXOAHJVWv8PKQr/whNjAEE32P6iknQAMs7U/0CSHf+enoMBZKWC/6wXgf99NQn/D8ESARoxC/+1rskBh8kO/2QTlQDbYk8AKmOP/mAAMP/F+VP+aJVP/+tuiP5SgCz/QSkk/ljTCgC7ebsAYobHAKu8s/7SC+7/QnuC/jTqPQAwcRf+BlZ4/3ey9QBXgckA8o3RAMpyVQCUFqEAZ8MwABkxq/+KQ4IAtkl6/pQYggDT5ZoAIJueAFRpPQCxwgn/pllWATZTuwD5KHX/bQPX/zWSLAE/L7MAwtgD/g5UiACIsQ3/SPO6/3URff/TOtP/XU/fAFpY9f+L0W//Rt4vAAr2T//G2bIA4+ELAU5+s/8+K34AZ5QjAIEIpf718JQAPTOOAFHQhgAPiXP/03fs/5/1+P8Choj/5os6AaCk/gByVY3/Maa2/5BGVAFVtgcALjVdAAmmof83orL/Lbi8AJIcLP6pWjEAeLLxAQ57f/8H8ccBvUIy/8aPZf6984f/jRgY/kthVwB2+5oB7TacAKuSz/+DxPb/iEBxAZfoOQDw2nMAMT0b/0CBSQH8qRv/KIQKAVrJwf/8efABus4pACvGYQCRZLcAzNhQ/qyWQQD55cT+aHtJ/01oYP6CtAgAaHs5ANzK5f9m+dMAVg7o/7ZO0QDv4aQAag0g/3hJEf+GQ+kAU/61ALfscAEwQIP/8djz/0HB4gDO8WT+ZIam/+3KxQA3DVEAIHxm/yjksQB2tR8B56CG/3e7ygAAjjz/gCa9/6bJlgDPeBoBNrisAAzyzP6FQuYAIiYfAbhwUAAgM6X+v/M3ADpJkv6bp83/ZGiY/8X+z/+tE/cA7grKAO+X8gBeOyf/8B1m/wpcmv/lVNv/oYFQANBazAHw267/nmaRATWyTP80bKgBU95rANMkbQB2OjgACB0WAO2gxwCq0Z0AiUcvAI9WIADG8gIA1DCIAVysugDml2kBYL/lAIpQv/7w2IL/YisG/qjEMQD9ElsBkEl5AD2SJwE/aBj/uKVw/n7rYgBQ1WL/ezxX/1KM9QHfeK3/D8aGAc487wDn6lz/Ie4T/6VxjgGwdyYAoCum/u9baQBrPcIBGQREAA+LMwCkhGr/InQu/qhfxQCJ1BcASJw6AIlwRf6WaZr/7MmdABfUmv+IUuP+4jvd/1+VwABRdjT/ISvXAQ6TS/9ZnHn+DhJPAJPQiwGX2j7/nFgIAdK4Yv8Ur3v/ZlPlANxBdAGW+gT/XI7c/yL3Qv/M4bP+l1GXAEco7P+KPz4ABk/w/7e5tQB2MhsAP+PAAHtjOgEy4Jv/EeHf/tzgTf8OLHsBjYCvAPjUyACWO7f/k2EdAJbMtQD9JUcAkVV3AJrIugACgPn/Uxh8AA5XjwCoM/UBfJfn/9DwxQF8vrkAMDr2ABTp6AB9EmL/Df4f//Wxgv9sjiMAq33y/owMIv+loaIAzs1lAPcZIgFkkTkAJ0Y5AHbMy//yAKIApfQeAMZ04gCAb5n/jDa2ATx6D/+bOjkBNjLGAKvTHf9riqf/rWvH/22hwQBZSPL/znNZ//r+jv6xyl7/UVkyAAdpQv8Z/v/+y0AX/0/ebP8n+UsA8XwyAO+YhQDd8WkAk5diANWhef7yMYkA6SX5/iq3GwC4d+b/2SCj/9D75AGJPoP/T0AJ/l4wcQARijL+wf8WAPcSxQFDN2gAEM1f/zAlQgA3nD8BQFJK/8g1R/7vQ30AGuDeAN+JXf8e4Mr/CdyEAMYm6wFmjVYAPCtRAYgcGgDpJAj+z/KUAKSiPwAzLuD/cjBP/wmv4gDeA8H/L6Do//9daf4OKuYAGopSAdAr9AAbJyb/YtB//0CVtv8F+tEAuzwc/jEZ2v+pdM3/dxJ4AJx0k/+ENW3/DQrKAG5TpwCd24n/BgOC/zKnHv88ny//gYCd/l4DvQADpkQAU9/XAJZawgEPqEEA41Mz/82rQv82uzwBmGYt/3ea4QDw94gAZMWy/4tH3//MUhABKc4q/5zA3f/Ye/T/2tq5/7u67//8rKD/wzQWAJCutf67ZHP/006w/xsHwQCT1Wj/WskK/1B7QgEWIboAAQdj/h7OCgDl6gUANR7SAIoI3P5HN6cASOFWAXa+vAD+wWUBq/ms/16et/5dAmz/sF1M/0ljT/9KQIH+9i5BAGPxf/72l2b/LDXQ/jtm6gCar6T/WPIgAG8mAQD/tr7/c7AP/qk8gQB67fEAWkw/AD5KeP96w24AdwSyAN7y0gCCIS7+nCgpAKeScAExo2//ebDrAEzPDv8DGcYBKevVAFUk1gExXG3/yBge/qjswwCRJ3wB7MOVAFokuP9DVar/JiMa/oN8RP/vmyP/NsmkAMQWdf8xD80AGOAdAX5xkAB1FbYAy5+NAN+HTQCw5rD/vuXX/2Mltf8zFYr/Gb1Z/zEwpf6YLfcAqmzeAFDKBQAbRWf+zBaB/7T8Pv7SAVv/km7+/9uiHADf/NUBOwghAM4Q9ACB0zAAa6DQAHA70QBtTdj+IhW5//ZjOP+zixP/uR0y/1RZEwBK+mL/4SrI/8DZzf/SEKcAY4RfASvmOQD+C8v/Y7w//3fB+/5QaTYA6LW9AbdFcP/Qq6X/L220/3tTpQCSojT/mgsE/5fjWv+SiWH+Pekp/14qN/9spOwAmET+AAqMg/8Kak/+856JAEOyQv6xe8b/Dz4iAMVYKv+VX7H/mADG/5X+cf/hWqP/fdn3ABIR4ACAQnj+wBkJ/zLdzQAx1EYA6f+kAALRCQDdNNv+rOD0/144zgHyswL/H1ukAeYuiv+95twAOS89/28LnQCxW5gAHOZiAGFXfgDGWZH/p09rAPlNoAEd6eb/lhVW/jwLwQCXJST+uZbz/+TUUwGsl7QAyambAPQ86gCO6wQBQ9o8AMBxSwF088//QaybAFEenP9QSCH+Eudt/45rFf59GoT/sBA7/5bJOgDOqckA0HniACisDv+WPV7/ODmc/408kf8tbJX/7pGb/9FVH/7ADNIAY2Jd/pgQlwDhudwAjess/6CsFf5HGh//DUBd/hw4xgCxPvgBtgjxAKZllP9OUYX/gd7XAbypgf/oB2EAMXA8/9nl+wB3bIoAJxN7/oMx6wCEVJEAguaU/xlKuwAF9Tb/udvxARLC5P/xymYAaXHKAJvrTwAVCbL/nAHvAMiUPQBz99L/Md2HADq9CAEjLgkAUUEF/zSeuf99dC7/SowN/9JcrP6TF0cA2eD9/nNstP+ROjD+27EY/5z/PAGak/IA/YZXADVL5QAww97/H68y/5zSeP/QI97/EvizAQIKZf+dwvj/nsxl/2j+xf9PPgQAsqxlAWCS+/9BCpwAAoml/3QE5wDy1wEAEyMd/yuhTwA7lfYB+0KwAMghA/9Qbo7/w6ERAeQ4Qv97L5H+hASkAEOurAAZ/XIAV2FXAfrcVABgW8j/JX07ABNBdgChNPH/7awG/7C///8BQYL+377mAGX95/+SI20A+h1NATEAEwB7WpsBFlYg/9rVQQBvXX8APF2p/wh/tgARug7+/Yn2/9UZMP5M7gD/+FxG/2PgiwC4Cf8BB6TQAM2DxgFX1scAgtZfAN2V3gAXJqv+xW7VACtzjP7XsXYAYDRCAXWe7QAOQLb/Lj+u/55fvv/hzbH/KwWO/6xj1P/0u5MAHTOZ/+R0GP4eZc8AE/aW/4bnBQB9huIBTUFiAOyCIf8Fbj4ARWx//wdxFgCRFFP+wqHn/4O1PADZ0bH/5ZTU/gODuAB1sbsBHA4f/7BmUAAyVJf/fR82/xWdhf8Ts4sB4OgaACJ1qv+n/Kv/SY3O/oH6IwBIT+wB3OUU/ynKrf9jTO7/xhbg/2zGw/8kjWAB7J47/2pkVwBu4gIA4+reAJpdd/9KcKT/Q1sC/xWRIf9m1on/r+Zn/qP2pgBd93T+p+Ac/9wCOQGrzlQAe+QR/xt4dwB3C5MBtC/h/2jIuf6lAnIATU7UAC2asf8YxHn+Up22AFoQvgEMk8UAX++Y/wvrRwBWknf/rIbWADyDxACh4YEAH4J4/l/IMwBp59L/OgmU/yuo3f987Y4AxtMy/i71ZwCk+FQAmEbQ/7R1sQBGT7kA80ogAJWczwDFxKEB9TXvAA9d9v6L8DH/xFgk/6ImewCAyJ0Brkxn/62pIv7YAav/cjMRAIjkwgBuljj+avafABO4T/+WTfD/m1CiAAA1qf8dl1YARF4QAFwHbv5idZX/+U3m//0KjADWfFz+I3brAFkwOQEWNaYAuJA9/7P/wgDW+D3+O272AHkVUf6mA+QAakAa/0Xohv/y3DX+LtxVAHGV9/9hs2f/vn8LAIfRtgBfNIEBqpDO/3rIzP+oZJIAPJCV/kY8KAB6NLH/9tNl/67tCAAHM3gAEx+tAH7vnP+PvcsAxIBY/+mF4v8efa3/yWwyAHtkO//+owMB3ZS1/9aIOf7etIn/z1g2/xwh+/9D1jQB0tBkAFGqXgCRKDUA4G/n/iMc9P/ix8P+7hHmANnZpP6pnd0A2i6iAcfPo/9sc6IBDmC7/3Y8TAC4n5gA0edH/iqkuv+6mTP+3au2/6KOrQDrL8EAB4sQAV+kQP8Q3aYA28UQAIQdLP9kRXX/POtY/ihRrQBHvj3/u1idAOcLFwDtdaQA4ajf/5pydP+jmPIBGCCqAH1icf6oE0wAEZ3c/ps0BQATb6H/R1r8/61u8AAKxnn//f/w/0J70gDdwtf+eaMR/+EHYwC+MbYAcwmFAegaiv/VRIQALHd6/7NiMwCVWmoARzLm/wqZdv+xRhkApVfNADeK6gDuHmEAcZvPAGKZfwAia9v+dXKs/0y0//7yObP/3SKs/jiiMf9TA///cd29/7wZ5P4QWFn/RxzG/hYRlf/zef7/a8pj/wnODgHcL5kAa4knAWExwv+VM8X+ujoL/2sr6AHIBg7/tYVB/t3kq/97PucB4+qz/yK91P70u/kAvg1QAYJZAQDfha0ACd7G/0J/SgCn2F3/m6jGAUKRAABEZi4BrFqaANiAS/+gKDMAnhEbAXzwMQDsyrD/l3zA/ybBvgBftj0Ao5N8//+lM/8cKBH+12BOAFaR2v4fJMr/VgkFAG8pyP/tbGEAOT4sAHW4DwEt8XQAmAHc/52lvAD6D4MBPCx9/0Hc+/9LMrgANVqA/+dQwv+IgX8BFRK7/y06of9HkyIArvkL/iONHQDvRLH/c246AO6+sQFX9ab/vjH3/5JTuP+tDif/ktdoAI7feACVyJv/1M+RARC12QCtIFf//yO1AHffoQHI317/Rga6/8BDVf8yqZgAkBp7/zjzs/4URIgAJ4y8/v3QBf/Ic4cBK6zl/5xouwCX+6cANIcXAJeZSACTxWv+lJ4F/+6PzgB+mYn/WJjF/gdEpwD8n6X/7042/xg/N/8m3l4A7bcM/87M0gATJ/b+HkrnAIdsHQGzcwAAdXZ0AYQG/P+RgaEBaUONAFIl4v/u4uT/zNaB/qJ7ZP+5eeoALWznAEIIOP+EiIAArOBC/q+dvADm3+L+8ttFALgOdwFSojgAcnsUAKJnVf8x72P+nIfXAG//p/4nxNYAkCZPAfmofQCbYZz/FzTb/5YWkAAslaX/KH+3AMRN6f92gdL/qofm/9Z3xgDp8CMA/TQH/3VmMP8VzJr/s4ix/xcCAwGVgln//BGfAUY8GgCQaxEAtL48/zi2O/9uRzb/xhKB/5XgV//fFZj/iha2//qczQDsLdD/T5TyAWVG0QBnTq4AZZCs/5iI7QG/wogAcVB9AZgEjQCbljX/xHT1AO9ySf4TUhH/fH3q/yg0vwAq0p7/m4SlALIFKgFAXCj/JFVN/7LkdgCJQmD+c+JCAG7wRf6Xb1AAp67s/+Nsa/+88kH/t1H/ADnOtf8vIrX/1fCeAUdLXwCcKBj/ZtJRAKvH5P+aIikA469LABXvwwCK5V8BTMAxAHV7VwHj4YIAfT4//wLGqwD+JA3+kbrOAJT/9P8jAKYAHpbbAVzk1ABcxjz+PoXI/8kpOwB97m3/tKPuAYx6UgAJFlj/xZ0v/5leOQBYHrYAVKFVALKSfACmpgf/FdDfAJy28gCbebkAU5yu/poQdv+6U+gB3zp5/x0XWAAjfX//qgWV/qQMgv+bxB0AoWCIAAcjHQGiJfsAAy7y/wDZvAA5ruIBzukCADm7iP57vQn/yXV//7okzADnGdgAUE5pABOGgf+Uy0QAjVF9/vilyP/WkIcAlzem/ybrWwAVLpoA3/6W/yOZtP99sB0BK2Ie/9h65v/poAwAObkM/vBxB/8FCRD+GltsAG3GywAIkygAgYbk/3y6KP9yYoT+poQXAGNFLAAJ8u7/uDU7AISBZv80IPP+k9/I/3tTs/6HkMn/jSU4AZc84/9aSZwBy6y7AFCXL/9eief/JL87/+HRtf9K19X+Bnaz/5k2wQEyAOcAaJ1IAYzjmv+24hD+YOFc/3MUqv4G+k4A+Eut/zVZBv8AtHYASK0BAEAIzgGuhd8AuT6F/9YLYgDFH9AAq6f0/xbntQGW2rkA96lhAaWL9/8veJUBZ/gzADxFHP4Zs8QAfAfa/jprUQC46Zz//EokAHa8QwCNXzX/3l6l/i49NQDOO3P/L+z6/0oFIAGBmu7/aiDiAHm7Pf8DpvH+Q6qs/x3Ysv8XyfwA/W7zAMh9OQBtwGD/NHPuACZ58//JOCEAwnaCAEtgGf+qHub+Jz/9ACQt+v/7Ae8AoNRcAS3R7QDzIVf+7VTJ/9QSnf7UY3//2WIQ/ous7wCoyYL/j8Gp/+6XwQHXaCkA7z2l/gID8gAWy7H+scwWAJWB1f4fCyn/AJ95/qAZcv+iUMgAnZcLAJqGTgHYNvwAMGeFAGncxQD9qE3+NbMXABh58AH/LmD/azyH/mLN+f8/+Xf/eDvT/3K0N/5bVe0AldRNAThJMQBWxpYAXdGgAEXNtv/0WisAFCSwAHp03QAzpycB5wE//w3FhgAD0SL/hzvKAKdkTgAv30wAuTw+ALKmewGEDKH/Pa4rAMNFkAB/L78BIixOADnqNAH/Fij/9l6SAFPkgAA8TuD/AGDS/5mv7ACfFUkAtHPE/oPhagD/p4YAnwhw/3hEwv+wxMb/djCo/12pAQBwyGYBShj+ABONBP6OPj8Ag7O7/02cm/93VqQAqtCS/9CFmv+Umzr/onjo/vzVmwDxDSoAXjKDALOqcACMU5f/N3dUAYwj7/+ZLUMB7K8nADaXZ/+eKkH/xO+H/lY1ywCVYS/+2CMR/0YDRgFnJFr/KBqtALgwDQCj29n/UQYB/92qbP7p0F0AZMn5/lYkI//Rmh4B48n7/wK9p/5kOQMADYApAMVkSwCWzOv/ka47AHj4lf9VN+EActI1/sfMdwAO90oBP/uBAENolwGHglAAT1k3/3Xmnf8ZYI8A1ZEFAEXxeAGV81//cioUAINIAgCaNRT/ST5tAMRmmAApDMz/eiYLAfoKkQDPfZQA9vTe/ykgVQFw1X4AovlWAUfGf/9RCRUBYicE/8xHLQFLb4kA6jvnACAwX//MH3IBHcS1/zPxp/5dbY4AaJAtAOsMtf80cKQATP7K/64OogA965P/K0C5/ul92QDzWKf+SjEIAJzMQgB81nsAJt12AZJw7AByYrEAl1nHAFfFcAC5laEALGClAPizFP+829j+KD4NAPOOjQDl487/rMoj/3Ww4f9SbiYBKvUO/xRTYQAxqwoA8nd4ABnoPQDU8JP/BHM4/5ER7/7KEfv/+RL1/2N17wC4BLP/9u0z/yXvif+mcKb/Ubwh/7n6jv82u60A0HDJAPYr5AFouFj/1DTE/zN1bP/+dZsALlsP/1cOkP9X48wAUxpTAZ9M4wCfG9UBGJdsAHWQs/6J0VIAJp8KAHOFyQDftpwBbsRd/zk86QAFp2n/msWkAGAiuv+ThSUB3GO+AAGnVP8UkasAwsX7/l9Ohf/8+PP/4V2D/7uGxP/YmaoAFHae/owBdgBWng8BLdMp/5MBZP5xdEz/039sAWcPMADBEGYBRTNf/2uAnQCJq+kAWnyQAWqhtgCvTOwByI2s/6M6aADptDT/8P0O/6Jx/v8m74r+NC6mAPFlIf6DupwAb9A+/3xeoP8frP4AcK44/7xjG/9DivsAfTqAAZyYrv+yDPf//FSeAFLFDv6syFP/JScuAWrPpwAYvSIAg7KQAM7VBACh4tIASDNp/2Etu/9OuN//sB37AE+gVv90JbIAUk3VAVJUjf/iZdQBr1jH//Ve9wGsdm3/prm+AIO1eABX/l3/hvBJ/yD1j/+Lomf/s2IS/tnMcACT33j/NQrzAKaMlgB9UMj/Dm3b/1vaAf/8/C/+bZx0/3MxfwHMV9P/lMrZ/xpV+f8O9YYBTFmp//It5gA7Yqz/ckmE/k6bMf+eflQAMa8r/xC2VP+dZyMAaMFt/0PdmgDJrAH+CKJYAKUBHf99m+X/HprcAWfvXADcAW3/ysYBAF4CjgEkNiwA6+Ke/6r71v+5TQkAYUryANujlf/wI3b/33JY/sDHAwBqJRj/yaF2/2FZYwHgOmf/ZceT/t48YwDqGTsBNIcbAGYDW/6o2OsA5eiIAGg8gQAuqO4AJ79DAEujLwCPYWL/ONioAajp/P8jbxb/XFQrABrIVwFb/ZgAyjhGAI4ITQBQCq8B/MdMABZuUv+BAcIAC4A9AVcOkf/93r4BD0iuAFWjVv46Yyz/LRi8/hrNDwAT5dL++EPDAGNHuACaxyX/l/N5/yYzS//JVYL+LEH6ADmT8/6SKzv/WRw1ACFUGP+zMxL+vUZTAAucswFihncAnm9vAHeaSf/IP4z+LQ0N/5rAAv5RSCoALqC5/ixwBgCS15UBGrBoAEQcVwHsMpn/s4D6/s7Bv/+mXIn+NSjvANIBzP6orSMAjfMtASQybf8P8sL/4596/7Cvyv5GOUgAKN84ANCiOv+3Yl0AD28MAB4ITP+Ef/b/LfJnAEW1D/8K0R4AA7N5APHo2gF7x1j/AtLKAbyCUf9eZdABZyQtAEzBGAFfGvH/paK7ACRyjADKQgX/JTiTAJgL8wF/Vej/+ofUAbmxcQBa3Ev/RfiSADJvMgBcFlAA9CRz/qNkUv8ZwQYBfz0kAP1DHv5B7Kr/oRHX/j+vjAA3fwQAT3DpAG2gKACPUwf/QRru/9mpjP9OXr3/AJO+/5NHuv5qTX//6Z3pAYdX7f/QDewBm20k/7Rk2gC0oxIAvm4JARE/e/+ziLT/pXt7/5C8Uf5H8Gz/GXAL/+PaM/+nMur/ck9s/x8Tc/+38GMA41eP/0jZ+P9mqV8BgZWVAO6FDAHjzCMA0HMaAWYI6gBwWI8BkPkOAPCerP5kcHcAwo2Z/ig4U/95sC4AKjVM/56/mgBb0VwArQ0QAQVI4v/M/pUAULjPAGQJev52Zav//MsA/qDPNgA4SPkBOIwN/wpAa/5bZTT/4bX4AYv/hADmkREA6TgXAHcB8f/VqZf/Y2MJ/rkPv/+tZ20Brg37/7JYB/4bO0T/CiEC//hhOwAaHpIBsJMKAF95zwG8WBgAuV7+/nM3yQAYMkYAeDUGAI5CkgDk4vn/aMDeAa1E2wCiuCT/j2aJ/50LFwB9LWIA613h/jhwoP9GdPMBmfk3/4EnEQHxUPQAV0UVAV7kSf9OQkH/wuPnAD2SV/+tmxf/cHTb/tgmC/+DuoUAXtS7AGQvWwDM/q//3hLX/q1EbP/j5E//Jt3VAKPjlv4fvhIAoLMLAQpaXv/crlgAo9Pl/8eINACCX93/jLzn/otxgP91q+z+MdwU/zsUq//kbbwAFOEg/sMQrgDj/ogBhydpAJZNzv/S7uIAN9SE/u85fACqwl3/+RD3/xiXPv8KlwoAT4uy/3jyygAa29UAPn0j/5ACbP/mIVP/US3YAeA+EQDW2X0AYpmZ/7Owav6DXYr/bT4k/7J5IP94/EYA3PglAMxYZwGA3Pv/7OMHAWoxxv88OGsAY3LuANzMXgFJuwEAWZoiAE7Zpf8Ow/n/Ceb9/82H9QAa/Af/VM0bAYYCcAAlniAA51vt/7+qzP+YB94AbcAxAMGmkv/oE7X/aY40/2cQGwH9yKUAw9kE/zS9kP97m6D+V4I2/054Pf8OOCkAGSl9/1eo9QDWpUYA1KkG/9vTwv5IXaT/xSFn/yuOjQCD4awA9GkcAERE4QCIVA3/gjko/otNOABUljUANl+dAJANsf5fc7oAdRd2//Sm8f8LuocAsmrL/2HaXQAr/S0ApJgEAIt27wBgARj+65nT/6huFP8y77AAcinoAMH6NQD+oG/+iHop/2FsQwDXmBf/jNHUACq9owDKKjL/amq9/75E2f/pOnUA5dzzAcUDBAAleDb+BJyG/yQ9q/6liGT/1OgOAFquCgDYxkH/DANAAHRxc//4ZwgA530S/6AcxQAeuCMB30n5/3sULv6HOCX/rQ3lAXehIv/1PUkAzX1wAIlohgDZ9h7/7Y6PAEGfZv9spL4A23Wt/yIleP7IRVAAH3za/koboP+6msf/R8f8AGhRnwERyCcA0z3AARruWwCU2QwAO1vV/wtRt/+B5nr/csuRAXe0Qv9IirQA4JVqAHdSaP/QjCsAYgm2/81lhv8SZSYAX8Wm/8vxkwA+0JH/hfb7AAKpDgAN97gAjgf+ACTIF/9Yzd8AW4E0/xW6HgCP5NIB9+r4/+ZFH/6wuof/7s00AYtPKwARsNn+IPNDAPJv6QAsIwn/43JRAQRHDP8mab8AB3Uy/1FPEAA/REH/nSRu/03xA//iLfsBjhnOAHh70QEc/u7/BYB+/1ve1/+iD78AVvBJAIe5Uf4s8aMA1NvS/3CimwDPZXYAqEg4/8QFNABIrPL/fhad/5JgO/+ieZj+jBBfAMP+yP5SlqIAdyuR/sysTv+m4J8AaBPt//V+0P/iO9UAddnFAJhI7QDcHxf+Dlrn/7zUQAE8Zfb/VRhWAAGxbQCSUyABS7bAAHfx4AC57Rv/uGVSAeslTf/9hhMA6PZ6ADxqswDDCwwAbULrAX1xOwA9KKQAr2jwAAIvu/8yDI0Awou1/4f6aABhXN7/2ZXJ/8vxdv9Pl0MAeo7a/5X17wCKKsj+UCVh/3xwp/8kilf/gh2T//FXTv/MYRMBsdEW//fjf/5jd1P/1BnGARCzswCRTaz+WZkO/9q9pwBr6Tv/IyHz/ixwcP+hf08BzK8KACgViv5odOQAx1+J/4W+qP+SpeoBt2MnALfcNv7/3oUAott5/j/vBgDhZjb/+xL2AAQigQGHJIMAzjI7AQ9htwCr2If/ZZgr/5b7WwAmkV8AIswm/rKMU/8ZgfP/TJAlAGokGv52kKz/RLrl/2uh1f8uo0T/lar9ALsRDwDaoKX/qyP2AWANEwCly3UA1mvA//R7sQFkA2gAsvJh//tMgv/TTSoB+k9G/z/0UAFpZfYAPYg6Ae5b1QAOO2L/p1RNABGELv45r8X/uT64AExAzwCsr9D+r0olAIob0/6UfcIACllRAKjLZf8r1dEB6/U2AB4j4v8JfkYA4n1e/px1FP85+HAB5jBA/6RcpgHg1ub/JHiPADcIK//7AfUBamKlAEprav41BDb/WrKWAQN4e//0BVkBcvo9//6ZUgFNDxEAOe5aAV/f5gDsNC/+Z5Sk/3nPJAESELn/SxRKALsLZQAuMIH/Fu/S/03sgf9vTcz/PUhh/8fZ+/8q18wAhZHJ/znmkgHrZMYAkkkj/mzGFP+2T9L/UmeIAPZssAAiETz/E0py/qiqTv+d7xT/lSmoADp5HABPs4b/53mH/67RYv/zer4Aq6bNANR0MAAdbEL/ot62AQ53FQDVJ/n//t/k/7elxgCFvjAAfNBt/3evVf8J0XkBMKu9/8NHhgGI2zP/tluN/jGfSAAjdvX/cLrj/zuJHwCJLKMAcmc8/gjVlgCiCnH/wmhIANyDdP+yT1wAy/rV/l3Bvf+C/yL+1LyXAIgRFP8UZVP/1M6mAOXuSf+XSgP/qFfXAJu8hf+mgUkA8E+F/7LTUf/LSKP+wailAA6kx/4e/8wAQUhbAaZKZv/IKgD/wnHj/0IX0ADl2GT/GO8aAArpPv97CrIBGiSu/3fbxwEto74AEKgqAKY5xv8cGhoAfqXnAPtsZP895Xn/OnaKAEzPEQANInD+WRCoACXQaf8jydf/KGpl/gbvcgAoZ+L+9n9u/z+nOgCE8I4ABZ5Y/4FJnv9eWZIA5jaSAAgtrQBPqQEAc7r3AFRAgwBD4P3/z71AAJocUQEtuDb/V9Tg/wBgSf+BIesBNEJQ//uum/8EsyUA6qRd/l2v/QDGRVf/4GouAGMd0gA+vHL/LOoIAKmv9/8XbYn/5bYnAMClXv71ZdkAv1hgAMReY/9q7gv+NX7zAF4BZf8ukwIAyXx8/40M2gANpp0BMPvt/5v6fP9qlJL/tg3KABw9pwDZmAj+3IIt/8jm/wE3QVf/Xb9h/nL7DgAgaVwBGs+NABjPDf4VMjD/upR0/9Mr4QAlIqL+pNIq/0QXYP+21gj/9XWJ/0LDMgBLDFP+UIykAAmlJAHkbuMA8RFaARk01AAG3wz/i/M5AAxxSwH2t7//1b9F/+YPjgABw8T/iqsv/0A/agEQqdb/z644AVhJhf+2hYwAsQ4Z/5O4Nf8K46H/eNj0/0lN6QCd7osBO0HpAEb72AEpuJn/IMtwAJKT/QBXZW0BLFKF//SWNf9emOj/O10n/1iT3P9OUQ0BIC/8/6ATcv9dayf/dhDTAbl30f/j23/+WGns/6JuF/8kpm7/W+zd/0LqdABvE/T+CukaACC3Bv4Cv/IA2pw1/ik8Rv+o7G8Aebl+/+6Oz/83fjQA3IHQ/lDMpP9DF5D+2ihs/3/KpADLIQP/Ap4AACVgvP/AMUoAbQQAAG+nCv5b2of/y0Kt/5bC4gDJ/Qb/rmZ5AM2/bgA1wgQAUSgt/iNmj/8MbMb/EBvo//xHugGwbnIAjgN1AXFNjgATnMUBXC/8ADXoFgE2EusALiO9/+zUgQACYND+yO7H/zuvpP+SK+cAwtk0/wPfDACKNrL+VevPAOjPIgAxNDL/pnFZ/wot2P8+rRwAb6X2AHZzW/+AVDwAp5DLAFcN8wAWHuQBsXGS/4Gq5v78mYH/keErAEbnBf96aX7+VvaU/24lmv7RA1sARJE+AOQQpf833fn+stJbAFOS4v5FkroAXdJo/hAZrQDnuiYAvXqM//sNcP9pbl0A+0iqAMAX3/8YA8oB4V3kAJmTx/5tqhYA+GX2/7J8DP+y/mb+NwRBAH3WtAC3YJMALXUX/oS/+QCPsMv+iLc2/5LqsQCSZVb/LHuPASHRmADAWin+Uw99/9WsUgDXqZAAEA0iACDRZP9UEvkBxRHs/9m65gAxoLD/b3Zh/+1o6wBPO1z+RfkL/yOsSgETdkQA3nyl/7RCI/9WrvYAK0pv/36QVv/k6lsA8tUY/kUs6//ctCMACPgH/2YvXP/wzWb/cearAR+5yf/C9kb/ehG7AIZGx/+VA5b/dT9nAEFoe//UNhMBBo1YAFOG8/+INWcAqRu0ALExGABvNqcAwz3X/x8BbAE8KkYAuQOi/8KVKP/2fyb+vncm/z13CAFgodv/KsvdAbHypP/1nwoAdMQAAAVdzf6Af7MAfe32/5Wi2f9XJRT+jO7AAAkJwQBhAeIAHSYKAACIP//lSNL+JoZc/07a0AFoJFT/DAXB//KvPf+/qS4Bs5OT/3G+i/59rB8AA0v8/tckDwDBGxgB/0WV/26BdgDLXfkAiolA/iZGBgCZdN4AoUp7AMFjT/92O17/PQwrAZKxnQAuk78AEP8mAAszHwE8OmL/b8JNAZpb9ACMKJABrQr7AMvRMv5sgk4A5LRaAK4H+gAfrjwAKaseAHRjUv92wYv/u63G/tpvOAC5e9gA+Z40ADS0Xf/JCVv/OC2m/oSby/866G4ANNNZ//0AogEJV7cAkYgsAV569QBVvKsBk1zGAAAIaAAeX64A3eY0Aff36/+JrjX/IxXM/0fj1gHoUsIACzDj/6pJuP/G+/z+LHAiAINlg/9IqLsAhId9/4poYf/uuKj/82hU/4fY4v+LkO0AvImWAVA4jP9Wqaf/wk4Z/9wRtP8RDcEAdYnU/43glwAx9K8AwWOv/xNjmgH/QT7/nNI3//L0A//6DpUAnljZ/53Phv776BwALpz7/6s4uP/vM+oAjoqD/xn+8wEKycIAP2FLANLvogDAyB8BddbzABhH3v42KOj/TLdv/pAOV//WT4j/2MTUAIQbjP6DBf0AfGwT/xzXSwBM3jf+6bY/AESrv/40b97/CmlN/1Cq6wCPGFj/Led5AJSB4AE99lQA/S7b/+9MIQAxlBL+5iVFAEOGFv6Om14AH53T/tUqHv8E5Pf+/LAN/ycAH/7x9P//qi0K/v3e+QDecoQA/y8G/7SjswFUXpf/WdFS/uU0qf/V7AAB1jjk/4d3l/9wycEAU6A1/gaXQgASohEA6WFbAIMFTgG1eDX/dV8//+11uQC/foj/kHfpALc5YQEvybv/p6V3AS1kfgAVYgb+kZZf/3g2mADRYmgAj28e/riU+QDr2C4A+MqU/zlfFgDy4aMA6ffo/0erE/9n9DH/VGdd/0R59AFS4A0AKU8r//nOp//XNBX+wCAW//dvPABlSib/FltU/h0cDf/G59f+9JrIAN+J7QDThA4AX0DO/xE+9//pg3kBXRdNAM3MNP5RvYgAtNuKAY8SXgDMK4z+vK/bAG9ij/+XP6L/0zJH/hOSNQCSLVP+slLu/xCFVP/ixl3/yWEU/3h2I/9yMuf/ouWc/9MaDAByJ3P/ztSGAMXZoP90gV7+x9fb/0vf+QH9dLX/6Ndo/+SC9v+5dVYADgUIAO8dPQHtV4X/fZKJ/syo3wAuqPUAmmkWANzUof9rRRj/idq1//FUxv+CetP/jQiZ/76xdgBgWbIA/xAw/npgaf91Nuj/In5p/8xDpgDoNIr/05MMABk2BwAsD9f+M+wtAL5EgQFqk+EAHF0t/uyND/8RPaEA3HPAAOyRGP5vqKkA4Do//3+kvABS6ksB4J6GANFEbgHZptkARuGmAbvBj/8QB1j/Cs2MAHXAnAEROCYAG3xsAavXN/9f/dQAm4eo//aymf6aREoA6D1g/mmEOwAhTMcBvbCC/wloGf5Lxmb/6QFwAGzcFP9y5kYAjMKF/zmepP6SBlD/qcRhAVW3ggBGnt4BO+3q/2AZGv/or2H/C3n4/lgjwgDbtPz+SgjjAMPjSQG4bqH/MemkAYA1LwBSDnn/wb46ADCudf+EFyAAKAqGARYzGf/wC7D/bjmSAHWP7wGdZXb/NlRMAM24Ev8vBEj/TnBV/8EyQgFdEDT/CGmGAAxtSP86nPsAkCPMACygdf4ya8IAAUSl/29uogCeUyj+TNbqADrYzf+rYJP/KONyAbDj8QBG+bcBiFSL/zx69/6PCXX/sa6J/kn3jwDsuX7/Phn3/y1AOP+h9AYAIjk4AWnKUwCAk9AABmcK/0qKQf9hUGT/1q4h/zKGSv9ul4L+b1SsAFTHS/74O3D/CNiyAQm3XwDuGwj+qs3cAMPlhwBiTO3/4lsaAVLbJ//hvscB2ch5/1GzCP+MQc4Ass9X/vr8Lv9oWW4B/b2e/5DWnv+g9Tb/NbdcARXIwv+SIXEB0QH/AOtqK/+nNOgAneXdADMeGQD63RsBQZNX/097xABBxN//TCwRAVXxRADKt/n/QdTU/wkhmgFHO1AAr8I7/41ICQBkoPQA5tA4ADsZS/5QwsIAEgPI/qCfcwCEj/cBb105/zrtCwGG3of/eqNsAXsrvv/7vc7+ULZI/9D24AERPAkAoc8mAI1tWwDYD9P/iE5uAGKjaP8VUHn/rbK3AX+PBABoPFL+1hAN/2DuIQGelOb/f4E+/zP/0v8+jez+nTfg/3In9ADAvPr/5Ew1AGJUUf+tyz3+kzI3/8zrvwA0xfQAWCvT/hu/dwC855oAQlGhAFzBoAH643gAezfiALgRSACFqAr+Foec/ykZZ/8wyjoAupVR/7yG7wDrtb3+2Yu8/0owUgAu2uUAvf37ADLlDP/Tjb8BgPQZ/6nnev5WL73/hLcX/yWylv8zif0AyE4fABZpMgCCPAAAhKNb/hfnuwDAT+8AnWak/8BSFAEYtWf/8AnqAAF7pP+F6QD/yvLyADy69QDxEMf/4HSe/r99W//gVs8AeSXn/+MJxv8Pme//eejZ/ktwUgBfDDn+M9Zp/5TcYQHHYiQAnNEM/grUNADZtDf+1Kro/9gUVP+d+ocAnWN//gHOKQCVJEYBNsTJ/1d0AP7rq5YAG6PqAMqHtADQXwD+e5xdALc+SwCJ67YAzOH//9aL0v8Ccwj/HQxvADScAQD9Ffv/JaUf/gyC0wBqEjX+KmOaAA7ZPf7YC1z/yMVw/pMmxwAk/Hj+a6lNAAF7n//PS2YAo6/EACwB8AB4urD+DWJM/+188f/okrz/yGDgAMwfKQDQyA0AFeFg/6+cxAD30H4APrj0/gKrUQBVc54ANkAt/xOKcgCHR80A4y+TAdrnQgD90RwA9A+t/wYPdv4QltD/uRYy/1Zwz/9LcdcBP5Ir/wThE/7jFz7/Dv/W/i0Izf9XxZf+0lLX//X49/+A+EYA4fdXAFp4RgDV9VwADYXiAC+1BQFco2n/Bh6F/uiyPf/mlRj/EjGeAORkPf508/v/TUtcAVHbk/9Mo/7+jdX2AOglmP5hLGQAySUyAdT0OQCuq7f/+UpwAKacHgDe3WH/811J/vtlZP/Y2V3//oq7/46+NP87y7H/yF40AHNynv+lmGgBfmPi/3ad9AFryBAAwVrlAHkGWACcIF3+ffHT/w7tnf+lmhX/uOAW//oYmP9xTR8A96sX/+2xzP80iZH/wrZyAODqlQAKb2cByYEEAO6OTgA0Bij/btWl/jzP/QA+10UAYGEA/zEtygB4eRb/64swAcYtIv+2MhsBg9Jb/y42gACve2n/xo1O/kP07//1Nmf+Tiby/wJc+f77rlf/iz+QABhsG/8iZhIBIhaYAELldv4yj2MAkKmVAXYemACyCHkBCJ8SAFpl5v+BHXcARCQLAei3NwAX/2D/oSnB/z+L3gAPs/MA/2QP/1I1hwCJOZUBY/Cq/xbm5P4xtFL/PVIrAG712QDHfT0ALv00AI3F2wDTn8EAN3lp/rcUgQCpd6r/y7KL/4cotv+sDcr/QbKUAAjPKwB6NX8BSqEwAOPWgP5WC/P/ZFYHAfVEhv89KxUBmFRe/748+v7vduj/1oglAXFMa/9daGQBkM4X/26WmgHkZ7kA2jEy/odNi/+5AU4AAKGU/2Ed6f/PlJX/oKgAAFuAq/8GHBP+C2/3ACe7lv+K6JUAdT5E/z/YvP/r6iD+HTmg/xkM8QGpPL8AIION/+2fe/9exV7+dP4D/1yzYf55YVz/qnAOABWV+AD44wMAUGBtAEvASgEMWuL/oWpEAdByf/9yKv/+ShpK//ezlv55jDwAk0bI/9Yoof+hvMn/jUGH//Jz/AA+L8oAtJX//oI37QClEbr/CqnCAJxt2v9wjHv/aIDf/rGObP95Jdv/gE0S/29sFwFbwEsArvUW/wTsPv8rQJkB463+AO16hAF/Wbr/jlKA/vxUrgBas7EB89ZX/2c8ov/Qgg7/C4KLAM6B2/9e2Z3/7+bm/3Rzn/6ka18AM9oCAdh9xv+MyoD+C19E/zcJXf6umQb/zKxgAEWgbgDVJjH+G1DVAHZ9cgBGRkP/D45J/4N6uf/zFDL+gu0oANKfjAHFl0H/VJlCAMN+WgAQ7uwBdrtm/wMYhf+7ReYAOMVcAdVFXv9QiuUBzgfmAN5v5gFb6Xf/CVkHAQJiAQCUSoX/M/a0/+SxcAE6vWz/wsvt/hXRwwCTCiMBVp3iAB+ji/44B0v/Plp0ALU8qQCKotT+UacfAM1acP8hcOMAU5d1AbHgSf+ukNn/5sxP/xZN6P9yTuoA4Dl+/gkxjQDyk6UBaLaM/6eEDAF7RH8A4VcnAftsCADGwY8BeYfP/6wWRgAyRHT/Za8o//hp6QCmywcAbsXaANf+Gv6o4v0AH49gAAtnKQC3gcv+ZPdK/9V+hADSkywAx+obAZQvtQCbW54BNmmv/wJOkf5mml8AgM9//jR87P+CVEcA3fPTAJiqzwDeascAt1Re/lzIOP+KtnMBjmCSAIWI5ABhEpYAN/tCAIxmBADKZ5cAHhP4/zO4zwDKxlkAN8Xh/qlf+f9CQUT/vOp+AKbfZAFw7/QAkBfCADontgD0LBj+r0Sz/5h2mgGwooIA2XLM/q1+Tv8h3h7/JAJb/wKP8wAJ69cAA6uXARjX9f+oL6T+8ZLPAEWBtABE83EAkDVI/vstDgAXbqgARERP/25GX/6uW5D/Ic5f/4kpB/8Tu5n+I/9w/wmRuf4ynSUAC3AxAWYIvv/q86kBPFUXAEonvQB0Me8ArdXSAC6hbP+fliUAxHi5/yJiBv+Zwz7/YeZH/2Y9TAAa1Oz/pGEQAMY7kgCjF8QAOBg9ALViwQD7k+X/Yr0Y/y42zv/qUvYAt2cmAW0+zAAK8OAAkhZ1/46aeABF1CMA0GN2AXn/A/9IBsIAdRHF/30PFwCaT5kA1l7F/7k3k/8+/k7+f1KZAG5mP/9sUqH/abvUAVCKJwA8/13/SAy6ANL7HwG+p5D/5CwT/oBD6ADW+Wv+iJFW/4QusAC9u+P/0BaMANnTdAAyUbr+i/ofAB5AxgGHm2QAoM4X/rui0/8QvD8A/tAxAFVUvwDxwPL/mX6RAeqiov/mYdgBQId+AL6U3wE0ACv/HCe9AUCI7gCvxLkAYuLV/3+f9AHirzwAoOmOAbTzz/9FmFkBH2UVAJAZpP6Lv9EAWxl5ACCTBQAnunv/P3Pm/12nxv+P1dz/s5wT/xlCegDWoNn/Ai0+/2pPkv4ziWP/V2Tn/6+R6P9luAH/rgl9AFIloQEkco3/MN6O//W6mgAFrt3+P3Kb/4c3oAFQH4cAfvqzAezaLQAUHJEBEJNJAPm9hAERvcD/347G/0gUD//6Ne3+DwsSABvTcf7Vazj/rpOS/2B+MAAXwW0BJaJeAMed+f4YgLv/zTGy/l2kKv8rd+sBWLft/9rSAf9r/ioA5gpj/6IA4gDb7VsAgbLLANAyX/7O0F//979Z/m7qT/+lPfMAFHpw//b2uf5nBHsA6WPmAdtb/P/H3hb/s/Xp/9Px6gBv+sD/VVSIAGU6Mv+DrZz+dy0z/3bpEP7yWtYAXp/bAQMD6v9iTFz+UDbmAAXk5/41GN//cTh2ARSEAf+r0uwAOPGe/7pzE/8I5a4AMCwAAXJypv8GSeL/zVn0AInjSwH4rTgASnj2/ncDC/9ReMb/iHpi/5Lx3QFtwk7/3/FGAdbIqf9hvi//L2eu/2NcSP526bT/wSPp/hrlIP/e/MYAzCtH/8dUrACGZr4Ab+5h/uYo5gDjzUD+yAzhAKYZ3gBxRTP/j58YAKe4SgAd4HT+ntDpAMF0fv/UC4X/FjqMAcwkM//oHisA60a1/0A4kv6pElT/4gEN/8gysP801fX+qNFhAL9HNwAiTpwA6JA6AblKvQC6jpX+QEV//6HLk/+wl78AiOfL/qO2iQChfvv+6SBCAETPQgAeHCUAXXJgAf5c9/8sq0UAyncL/7x2MgH/U4j/R1IaAEbjAgAg63kBtSmaAEeG5f7K/yQAKZgFAJo/Sf8itnwAed2W/xrM1QEprFcAWp2S/22CFABHa8j/82a9AAHDkf4uWHUACM7jAL9u/f9tgBT+hlUz/4mxcAHYIhb/gxDQ/3mVqgByExcBplAf/3HwegDos/oARG60/tKqdwDfbKT/z0/p/xvl4v7RYlH/T0QHAIO5ZACqHaL/EaJr/zkVCwFkyLX/f0GmAaWGzABop6gAAaRPAJKHOwFGMoD/ZncN/uMGhwCijrP/oGTeABvg2wGeXcP/6o2JABAYff/uzi//YRFi/3RuDP9gc00AW+Po//j+T/9c5Qb+WMaLAM5LgQD6Tc7/jfR7AYpF3AAglwYBg6cW/+1Ep/7HvZYAo6uK/zO8Bv9fHYn+lOKzALVr0P+GH1L/l2Ut/4HK4QDgSJMAMIqX/8NAzv7t2p4Aah2J/v296f9nDxH/wmH/ALItqf7G4ZsAJzB1/4dqcwBhJrUAli9B/1OC5f72JoEAXO+a/ltjfwChbyH/7tny/4O5w//Vv57/KZbaAISpgwBZVPwBq0aA/6P4y/4BMrT/fExVAftvUABjQu//mu22/91+hf5KzGP/QZN3/2M4p/9P+JX/dJvk/+0rDv5FiQv/FvrxAVt6j//N+fMA1Bo8/zC2sAEwF7//y3mY/i1K1f8+WhL+9aPm/7lqdP9TI58ADCEC/1AiPgAQV67/rWVVAMokUf6gRcz/QOG7ADrOXgBWkC8A5Vb1AD+RvgElBScAbfsaAImT6gCieZH/kHTO/8Xouf+3voz/SQz+/4sU8v+qWu//YUK7//W1h/7eiDQA9QUz/ssvTgCYZdgASRd9AP5gIQHr0kn/K9FYAQeBbQB6aOT+qvLLAPLMh//KHOn/QQZ/AJ+QRwBkjF8ATpYNAPtrdgG2On3/ASZs/4290f8Im30BcaNb/3lPvv+G72z/TC/4AKPk7wARbwoAWJVL/9fr7wCnnxj/L5ds/2vRvADp52P+HMqU/64jiv9uGET/AkW1AGtmUgBm7QcAXCTt/92iUwE3ygb/h+qH/xj63gBBXqj+9fjS/6dsyf7/oW8AzQj+AIgNdABksIT/K9d+/7GFgv+eT5QAQ+AlAQzOFf8+Im4B7Wiv/1CEb/+OrkgAVOW0/mmzjABA+A//6YoQAPVDe/7aedT/P1/aAdWFif+PtlL/MBwLAPRyjQHRr0z/nbWW/7rlA/+knW8B572LAHfKvv/aakD/ROs//mAarP+7LwsB1xL7/1FUWQBEOoAAXnEFAVyB0P9hD1P+CRy8AO8JpAA8zZgAwKNi/7gSPADZtosAbTt4/wTA+wCp0vD/Jaxc/pTT9f+zQTQA/Q1zALmuzgFyvJX/7VqtACvHwP9YbHEANCNMAEIZlP/dBAf/l/Fy/77R6ABiMscAl5bV/xJKJAE1KAcAE4dB/xqsRQCu7VUAY18pAAM4EAAnoLH/yGra/rlEVP9buj3+Q4+N/w30pv9jcsYAx26j/8ESugB87/YBbkQWAALrLgHUPGsAaSppAQ7mmAAHBYMAjWia/9UDBgCD5KL/s2QcAed7Vf/ODt8B/WDmACaYlQFiiXoA1s0D/+KYs/8GhYkAnkWM/3Gimv+086z/G71z/48u3P/VhuH/fh1FALwriQHyRgkAWsz//+eqkwAXOBP+OH2d/zCz2v9Ptv3/JtS/ASnrfABglxwAh5S+AM35J/40YIj/1CyI/0PRg//8ghf/24AU/8aBdgBsZQsAsgWSAT4HZP+17F7+HBqkAEwWcP94Zk8AysDlAciw1wApQPT/zrhOAKctPwGgIwD/OwyO/8wJkP/bXuUBehtwAL1pbf9A0Er/+383AQLixgAsTNEAl5hN/9IXLgHJq0X/LNPnAL4l4P/1xD7/qbXe/yLTEQB38cX/5SOYARVFKP+y4qEAlLPBANvC/gEozjP/51z6AUOZqgAVlPEAqkVS/3kS5/9ccgMAuD7mAOHJV/+SYKL/tfLcAK273QHiPqr/OH7ZAXUN4/+zLO8AnY2b/5DdUwDr0dAAKhGlAftRhQB89cn+YdMY/1PWpgCaJAn/+C9/AFrbjP+h2Sb+1JM//0JUlAHPAwEA5oZZAX9Oev/gmwH/UohKALKc0P+6GTH/3gPSAeWWvv9VojT/KVSN/0l7VP5dEZYAdxMcASAW1/8cF8z/jvE0/+Q0fQAdTM8A16f6/q+k5gA3z2kBbbv1/6Es3AEpZYD/pxBeAF3Wa/92SAD+UD3q/3mvfQCLqfsAYSeT/vrEMf+ls27+30a7/xaOfQGas4r/drAqAQqumQCcXGYAqA2h/48QIAD6xbT/y6MsAVcgJAChmRT/e/wPABnjUAA8WI4AERbJAZrNTf8nPy8ACHqNAIAXtv7MJxP/BHAd/xckjP/S6nT+NTI//3mraP+g214AV1IO/ucqBQCli3/+Vk4mAII8Qv7LHi3/LsR6Afk1ov+Ij2f+19JyAOcHoP6pmCr/by32AI6Dh/+DR8z/JOILAAAc8v/hitX/9y7Y/vUDtwBs/EoBzhow/8029v/TxiT/eSMyADTYyv8mi4H+8kmUAEPnjf8qL8wATnQZAQThv/8Gk+QAOlixAHql5f/8U8n/4KdgAbG4nv/yabMB+MbwAIVCywH+JC8ALRhz/3c+/gDE4br+e42sABpVKf/ib7cA1eeXAAQ7B//uipQAQpMh/x/2jf/RjXT/aHAfAFihrABT1+b+L2+XAC0mNAGELcwAioBt/ul1hv/zvq3+8ezwAFJ/7P4o36H/brbh/3uu7wCH8pEBM9GaAJYDc/7ZpPz/N5xFAVRe///oSS0BFBPU/2DFO/5g+yEAJsdJAUCs9/91dDj/5BESAD6KZwH25aT/9HbJ/lYgn/9tIokBVdO6AArBwf56wrEAeu5m/6LaqwBs2aEBnqoiALAvmwG15Av/CJwAABBLXQDOYv8BOpojAAzzuP5DdUL/5uV7AMkqbgCG5LL+umx2/zoTmv9SqT7/co9zAe/EMv+tMMH/kwJU/5aGk/5f6EkAbeM0/r+JCgAozB7+TDRh/6TrfgD+fLwASrYVAXkdI//xHgf+VdrW/wdUlv5RG3X/oJ+Y/kIY3f/jCjwBjYdmANC9lgF1s1wAhBaI/3jHHAAVgU/+tglBANqjqQD2k8b/ayaQAU6vzf/WBfr+L1gd/6QvzP8rNwb/g4bP/nRk1gBgjEsBatyQAMMgHAGsUQX/x7M0/yVUywCqcK4ACwRbAEX0GwF1g1wAIZiv/4yZa//7hyv+V4oE/8bqk/55mFT/zWWbAZ0JGQBIahH+bJkA/73lugDBCLD/rpXRAO6CHQDp1n4BPeJmADmjBAHGbzP/LU9OAXPSCv/aCRn/novG/9NSu/5QhVMAnYHmAfOFhv8oiBAATWtP/7dVXAGxzMoAo0eT/5hFvgCsM7wB+tKs/9PycQFZWRr/QEJv/nSYKgChJxv/NlD+AGrRcwFnfGEA3eZi/x/nBgCywHj+D9nL/3yeTwBwkfcAXPowAaO1wf8lL47+kL2l/y6S8AAGS4AAKZ3I/ld51QABcewABS36AJAMUgAfbOcA4e93/6cHvf+75IT/br0iAF4szAGiNMUATrzx/jkUjQD0ki8BzmQzAH1rlP4bw00AmP1aAQePkP8zJR8AIncm/wfFdgCZvNMAlxR0/vVBNP+0/W4BL7HRAKFjEf923soAfbP8AXs2fv+ROb8AN7p5AArzigDN0+X/fZzx/pScuf/jE7z/fCkg/x8izv4ROVMAzBYl/ypgYgB3ZrgBA74cAG5S2v/IzMD/yZF2AHXMkgCEIGIBwMJ5AGqh+AHtWHwAF9QaAM2rWv/4MNgBjSXm/3zLAP6eqB7/1vgVAHC7B/9Lhe//SuPz//qTRgDWeKIApwmz/xaeEgDaTdEBYW1R//Qhs/85NDn/QazS//lH0f+Oqe4Anr2Z/67+Z/5iIQ4AjUzm/3GLNP8POtQAqNfJ//jM1wHfRKD/OZq3/i/neQBqpokAUYiKAKUrMwDniz0AOV87/nZiGf+XP+wBXr76/6m5cgEF+jr/S2lhAdffhgBxY6MBgD5wAGNqkwCjwwoAIc22ANYOrv+BJuf/NbbfAGIqn//3DSgAvNKxAQYVAP//PZT+iS2B/1kadP5+JnIA+zLy/nmGgP/M+af+pevXAMqx8wCFjT4A8IK+AW6v/wAAFJIBJdJ5/wcnggCO+lT/jcjPAAlfaP8L9K4Ahuh+AKcBe/4QwZX/6OnvAdVGcP/8dKD+8t7c/81V4wAHuToAdvc/AXRNsf8+9cj+PxIl/2s16P4y3dMAotsH/gJeKwC2Prb+oE7I/4eMqgDruOQArzWK/lA6Tf+YyQIBP8QiAAUeuACrsJoAeTvOACZjJwCsUE3+AIaXALoh8f5e/d//LHL8AGx+Of/JKA3/J+Ub/yfvFwGXeTP/mZb4AArqrv929gT+yPUmAEWh8gEQspYAcTiCAKsfaQAaWGz/MSpqAPupQgBFXZUAFDn+AKQZbwBavFr/zATFACjVMgHUYIT/WIq0/uSSfP+49vcAQXVW//1m0v7+eSQAiXMD/zwY2ACGEh0AO+JhALCORwAH0aEAvVQz/pv6SADVVOv/Ld7gAO6Uj/+qKjX/Tqd1ALoAKP99sWf/ReFCAOMHWAFLrAYAqS3jARAkRv8yAgn/i8EWAI+35/7aRTIA7DihAdWDKgCKkSz+iOUo/zE/I/89kfX/ZcAC/uincQCYaCYBebnaAHmL0/538CMAQb3Z/ruzov+gu+YAPvgO/zxOYQD/96P/4Ttb/2tHOv/xLyEBMnXsANuxP/70WrMAI8LX/71DMv8Xh4EAaL0l/7k5wgAjPuf/3PhsAAznsgCPUFsBg11l/5AnAgH/+rIABRHs/osgLgDMvCb+9XM0/79xSf6/bEX/FkX1ARfLsgCqY6oAQfhvACVsmf9AJUUAAFg+/lmUkP+/ROAB8Sc1ACnL7f+RfsL/3Sr9/xljlwBh/d8BSnMx/wavSP87sMsAfLf5AeTkYwCBDM/+qMDD/8ywEP6Y6qsATSVV/yF4h/+OwuMBH9Y6ANW7ff/oLjz/vnQq/peyE/8zPu3+zOzBAMLoPACsIp3/vRC4/mcDX/+N6ST+KRkL/xXDpgB29S0AQ9WV/58MEv+7pOMBoBkFAAxOwwErxeEAMI4p/sSbPP/fxxIBkYicAPx1qf6R4u4A7xdrAG21vP/mcDH+Sart/+e34/9Q3BQAwmt/AX/NZQAuNMUB0qsk/1gDWv84l40AYLv//ypOyAD+RkYB9H2oAMxEigF810YAZkLI/hE05AB13I/+y/h7ADgSrv+6l6T/M+jQAaDkK//5HRkBRL4/AA0AAAAA/wAAAAD1AAAAAAAA+wAAAAAAAP0AAAAA8wAAAAAHAAAAAAADAAAAAPMAAAAABQAAAAAAAAAACwAAAAAACwAAAADzAAAAAAAA/QAAAAAA/wAAAAADAAAAAPUAAAAAAAAADwAAAAAA/wAAAAD/AAAAAAcAAAAABQ=="),T(G,34460,"AQ=="),T(G,34496,"AQ=="),T(G,34528,"4Ot6fDtBuK4WVuP68Z/EatoJjeucMrH9hmIFFl9JuABfnJW8o1CMJLHQsVWcg+9bBERcxFgcjobYIk7d0J8RV+z///////////////////////////////////////9/7f///////////////////////////////////////3/u////////////////////////////////////////fw=="),T(G,34720,"CMm882fmCWo7p8qEha5nuyv4lP5y82488TYdXzr1T6XRguatf1IOUR9sPiuMaAWba71B+6vZgx95IX4TGc3gWyKuKNeYL4pCzWXvI5FEN3EvO03sz/vAtbzbiYGl27XpOLVI81vCVjkZ0AW28RHxWZtPGa+kgj+SGIFt2tVeHKtCAgOjmKoH2L5vcEUBW4MSjLLkTr6FMSTitP/Vw30MVW+Je/J0Xb5ysZYWO/6x3oA1Esclpwbcm5Qmac908ZvB0krxnsFpm+TjJU84hke+77XVjIvGncEPZZysd8yhDCR1AitZbyzpLYPkpm6qhHRK1PtBvdypsFy1UxGD2oj5dqvfZu5SUT6YEDK0LW3GMag/IfuYyCcDsOQO777Hf1m/wo+oPfML4MYlpwqTR5Gn1W+CA+BRY8oGcG4OCmcpKRT8L9JGhQq3JybJJlw4IRsu7SrEWvxtLE3fs5WdEw04U95jr4tUcwplqLJ3PLsKanbmru1HLsnCgTs1ghSFLHKSZAPxTKHov6IBMEK8S2YaqJGX+NBwi0vCML5UBqNRbMcYUu/WGeiS0RCpZVUkBpnWKiBxV4U1DvS40bsycKBqEMjQ0rgWwaQZU6tBUQhsNx6Z647fTHdIJ6hIm+G1vLA0Y1rJxbMMHDnLikHjSqrYTnPjY3dPypxbo7iy1vNvLmj8su9d7oKPdGAvF0NvY6V4cqvwoRR4yITsOWQaCALHjCgeYyP6/76Q6b2C3utsUKQVecay96P5vitTcuPyeHHGnGEm6s4+J8oHwsAhx7iG0R7r4M3WfdrqeNFu7n9PffW6bxdyqmfwBqaYyKLFfWMKrg35vgSYPxEbRxwTNQtxG4R9BCP1d9sokyTHQHuryjK8vskVCr6ePEwNEJzEZx1DtkI+y77UxUwqfmX8nCl/Wez61jqrb8tfF1hHSowZRGyA"),T(G,35568,"YjY0X3BvcyA8PSBiNjRfbGVuAHNvZGl1bS9jb2RlY3MuYwBzb2RpdW1fYmluMmJhc2U2NAAkYXJnb24yaWQAJGFyZ29uMmkAJHY9ACRtPQAsdD0ALHA9ACRhcmdvbjJpZCR2PQAkYXJnb24yaSR2PQAkYXJnb24yaWQkACRhcmdvbjJpJA=="),T(G,35728,"U2lnRWQyNTUxOSBubyBFZDI1NTE5IGNvbGxpc2lvbnMBADEuMC4xOA=="),T(G,35772,"UI5QAABAAAABAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAHAAAACAAAAAkAAAAKAAAACwAAAAwAAAAN");var dr,Ct=((dr=[null,Oa,function(e,t,n,o,a){var f;return e|=0,BA=f=BA-16|0,Oa(f,t|=0,n|=0,o|=0,a|=0),e=ur(e,f),BA=f+16|0,0|e},function(e,t){return pa(e|=0,t|=0),0},function(e,t,n,o){return _a(e|=0,t|=0,n|=0,o|=0),0},function(e,t){return ua(e|=0,t|=0),0},function(e,t,n){e|=0,t|=0;var o,a=0,f=0;if(BA=o=BA-336|0,a=-1,!function(E){var s,y=0,_=0,w=0,D=0;for(p[11+(s=BA-16|0)|0]=0,p[s+12|0]=0,p[s+13|0]=0,p[s+14|0]=0,r[s+8>>2]=0;;){for(w=u[E+_|0],y=0;p[0|(D=(s+8|0)+y|0)]=u[0|D]|w^u[(34464+(y<<5)|0)+_|0],(0|(y=y+1|0))!=7;);if((0|(_=_+1|0))==31)break}for(_=127&u[E+31|0],E=0,y=0;p[0|(w=(s+8|0)+y|0)]=u[0|w]|_^u[34495+(y<<5)|0],(0|(y=y+1|0))!=7;);for(y=0;y=u[(s+8|0)+E|0]-1|y,(0|(E=E+1|0))!=7;);return y>>>8&1}(n|=0)){for(a=0;p[e+a|0]=u[t+a|0],(0|(a=a+1|0))!=32;);for(p[0|e]=248&u[0|e],p[e+31|0]=63&u[e+31|0]|64,ya(o+288|0,n),kt(o+240|0),Ie(o+192|0),dg(o+144|0,o+288|0),kt(o+96|0),n=254,t=0;a=t,f=n,rr(o+240|0,o+144|0,a^=t=u[(n>>>3|0)+e|0]>>>(7&n)&1),rr(o+192|0,o+96|0,a),n=n-1|0,$0(o+48|0,o+144|0,o+96|0),$0(o,o+240|0,o+192|0),O0(o+240|0,o+240|0,o+192|0),O0(o+192|0,o+144|0,o+96|0),_0(o+96|0,o+48|0,o+240|0),_0(o+192|0,o+192|0,o),k0(o+48|0,o),k0(o,o+240|0),O0(o+144|0,o+96|0,o+192|0),$0(o+192|0,o+96|0,o+192|0),_0(o+240|0,o,o+48|0),$0(o,o,o+48|0),k0(o+192|0,o+192|0),pn(o+96|0,o),k0(o+144|0,o+144|0),O0(o+48|0,o+48|0,o+96|0),_0(o+96|0,o+288|0,o+192|0),_0(o+192|0,o,o+48|0),f;);rr(o+240|0,o+144|0,t),rr(o+192|0,o+96|0,t),er(o+192|0,o+192|0),_0(o+240|0,o+240|0,o+192|0),Jg(e,o+240|0),a=0}return BA=o+336|0,0|a},function(e,t){e|=0,t|=0;var n,o=0;for(BA=n=BA-208|0;p[e+o|0]=u[t+o|0],(0|(o=o+1|0))!=32;);return p[0|e]=248&u[0|e],p[e+31|0]=63&u[e+31|0]|64,PB(n+48|0,e),function(a,f,E){var s;BA=s=BA-96|0,O0(s+48|0,E,f),$0(s,E,f),er(s,s),_0(a,s+48|0,s),BA=s+96|0}(n,n+88|0,n+128|0),Jg(e,n),BA=n+208|0,0},function(e,t,n,o,a){e|=0,o|=0,a|=0;var f,E=0;if(BA=f=BA-112|0,(t|=0)|(n|=0)){E=u[a+28|0]|u[a+29|0]<<8|u[a+30|0]<<16|u[a+31|0]<<24,r[f+24>>2]=u[a+24|0]|u[a+25|0]<<8|u[a+26|0]<<16|u[a+27|0]<<24,r[f+28>>2]=E,E=u[a+20|0]|u[a+21|0]<<8|u[a+22|0]<<16|u[a+23|0]<<24,r[f+16>>2]=u[a+16|0]|u[a+17|0]<<8|u[a+18|0]<<16|u[a+19|0]<<24,r[f+20>>2]=E,E=u[a+4|0]|u[a+5|0]<<8|u[a+6|0]<<16|u[a+7|0]<<24,r[f>>2]=u[0|a]|u[a+1|0]<<8|u[a+2|0]<<16|u[a+3|0]<<24,r[f+4>>2]=E,E=u[a+12|0]|u[a+13|0]<<8|u[a+14|0]<<16|u[a+15|0]<<24,r[f+8>>2]=u[a+8|0]|u[a+9|0]<<8|u[a+10|0]<<16|u[a+11|0]<<24,r[f+12>>2]=E,a=u[0|o]|u[o+1|0]<<8|u[o+2|0]<<16|u[o+3|0]<<24,o=u[o+4|0]|u[o+5|0]<<8|u[o+6|0]<<16|u[o+7|0]<<24,r[f+104>>2]=0,r[f+108>>2]=0,r[f+96>>2]=a,r[f+100>>2]=o;A:{if(!n&t>>>0>=64|n){for(;;){for(_r(e,f+96|0,f),a=8,o=1;o=u[0|(E=(f+96|0)+a|0)]+o|0,p[0|E]=o,o=o>>>8|0,(0|(a=a+1|0))!=16;);if(e=e- -64|0,n=n-1|0,!(!(n=(t=t+-64|0)>>>0<4294967232?n+1|0:n)&t>>>0>63|n))break}if(!(t|n))break A}for(a=0,_r(f+32|0,f+96|0,f);p[e+a|0]=u[(f+32|0)+a|0],(0|t)!=(0|(a=a+1|0)););}Q0(f+32|0,64),Q0(f,32)}return BA=f+112|0,0},function(e,t,n,o,a,f,E,s){e|=0,t|=0,a|=0,f|=0,E|=0,s|=0;var y,_=0,w=0;if(BA=y=BA-112|0,(n|=0)|(o|=0)){for(_=u[s+28|0]|u[s+29|0]<<8|u[s+30|0]<<16|u[s+31|0]<<24,r[y+24>>2]=u[s+24|0]|u[s+25|0]<<8|u[s+26|0]<<16|u[s+27|0]<<24,r[y+28>>2]=_,_=u[s+20|0]|u[s+21|0]<<8|u[s+22|0]<<16|u[s+23|0]<<24,r[y+16>>2]=u[s+16|0]|u[s+17|0]<<8|u[s+18|0]<<16|u[s+19|0]<<24,r[y+20>>2]=_,_=u[s+4|0]|u[s+5|0]<<8|u[s+6|0]<<16|u[s+7|0]<<24,r[y>>2]=u[0|s]|u[s+1|0]<<8|u[s+2|0]<<16|u[s+3|0]<<24,r[y+4>>2]=_,_=8,w=u[s+12|0]|u[s+13|0]<<8|u[s+14|0]<<16|u[s+15|0]<<24,r[y+8>>2]=u[s+8|0]|u[s+9|0]<<8|u[s+10|0]<<16|u[s+11|0]<<24,r[y+12>>2]=w,s=u[a+4|0]|u[a+5|0]<<8|u[a+6|0]<<16|u[a+7|0]<<24,r[y+96>>2]=u[0|a]|u[a+1|0]<<8|u[a+2|0]<<16|u[a+3|0]<<24,r[y+100>>2]=s;p[(y+96|0)+_|0]=f,f=(255&E)<<24|f>>>8,E=E>>>8|0,(0|(_=_+1|0))!=16;);if(!o&n>>>0>63|o)for(;;){for(_=0,_r(y+32|0,y+96|0,y);p[e+_|0]=u[(y+32|0)+_|0]^u[t+_|0],s=1,(0|(_=_+1|0))!=64;);for(_=8;a=u[0|(f=(y+96|0)+_|0)]+s|0,p[0|f]=a,s=a>>>8|0,(0|(_=_+1|0))!=16;);if(t=t- -64|0,e=e- -64|0,o=o-1|0,!(!(o=(n=n+-64|0)>>>0<4294967232?o+1|0:o)&n>>>0>63|o))break}if(n|o)for(_=0,_r(y+32|0,y+96|0,y);p[e+_|0]=u[(y+32|0)+_|0]^u[t+_|0],(0|n)!=(0|(_=_+1|0)););Q0(y+32|0,64),Q0(y,32)}return BA=y+112|0,0},function(e,t,n,o,a){var f;return e|=0,o|=0,BA=f=BA+-64|0,(t|=0)|(n|=0)&&(ar(f,a|=0),Ya(f,o,0),tr(f,e=L0(e,0,t),e,t,n),Q0(f,64)),BA=f- -64|0,0},function(e,t,n,o,a){var f;return e|=0,o|=0,BA=f=BA+-64|0,(t|=0)|(n|=0)&&(ar(f,a|=0),Ra(f,o,0),tr(f,e=L0(e,0,t),e,t,n),Q0(f,64)),BA=f- -64|0,0},function(e,t,n,o,a,f,E,s){var y;return e|=0,t|=0,a|=0,E|=0,s|=0,BA=y=BA-80|0,(n|=0)|(o|=0)&&(y0(y+8|0,f|=0),y0(y+12|0,E),ar(y+16|0,s),Ya(y+16|0,a,y+8|0),tr(y+16|0,t,e,n,o),Q0(y+16|0,64)),BA=y+80|0,0},function(e,t,n,o,a,f,E){var s;return e|=0,t|=0,a|=0,E|=0,BA=s=BA-80|0,(n|=0)|(o|=0)&&(y0(s+12|0,f|=0),ar(s+16|0,E),Ra(s+16|0,a,s+12|0),tr(s+16|0,t,e,n,o),Q0(s+16|0,64)),BA=s+80|0,0}]).grow=function(e){var t=this.length;return this.length=this.length+e,t},dr.set=function(e,t){this[e]=t},dr.get=function(e){return this[e]},dr);function In(){return nA.byteLength/65536|0}return{h:Ct,i:function(){},j:function(e,t,n,o,a,f,E,s,y,_,w,D){return 0|Ua(e|=0,t|=0,n|=0,o|=0,a|=0,f|=0,E|=0,s|=0,y|=0,w|=0,D|=0)},k:function(e,t,n,o,a,f,E,s,y,_,w){return 0|function(D,v,Y,U,H,i,c,N,l,F){if(!H&U>>>0<4294967280)return Ua(D,D+U|0,0,Y,U,H,i,c,N,l,F),v&&(H=(D=U+16|0)>>>0<16?H+1|0:H,r[v>>2]=D,r[v+4>>2]=H),0;z0(),s0()}(e|=0,t|=0,n|=0,o|=0,a|=0,f|=0,E|=0,s|=0,_|=0,w|=0)},l:function(e,t,n,o,a,f,E,s,y,_,w,D){return 0|Ga(e|=0,t|=0,n|=0,o|=0,a|=0,f|=0,E|=0,s|=0,y|=0,w|=0,D|=0)},m:function(e,t,n,o,a,f,E,s,y,_,w){return 0|function(D,v,Y,U,H,i,c,N,l,F){if(!H&U>>>0<4294967280)return Ga(D,D+U|0,0,Y,U,H,i,c,N,l,F),v&&(H=(D=U+16|0)>>>0<16?H+1|0:H,r[v>>2]=D,r[v+4>>2]=H),0;z0(),s0()}(e|=0,t|=0,n|=0,o|=0,a|=0,f|=0,E|=0,s|=0,_|=0,w|=0)},n:function(e,t,n,o,a,f,E,s,y,_,w){return 0|ba(e|=0,n|=0,o|=0,a|=0,f|=0,E|=0,s|=0,y|=0,_|=0,w|=0)},o:function(e,t,n,o,a,f,E,s,y,_,w){return 0|function(D,v,Y,U,H,i,c,N,l,F){var b=0;return b=-1,!H&U>>>0>=16|H&&(b=ba(D,Y,U-16|0,H-(U>>>0<16)|0,(Y+U|0)-16|0,i,c,N,l,F)),v&&(r[v>>2]=b?0:U-16|0,r[v+4>>2]=b?0:H-(U>>>0<16)|0),b}(e|=0,t|=0,o|=0,a|=0,f|=0,E|=0,s|=0,y|=0,_|=0,w|=0)},p:function(e,t,n,o,a,f,E,s,y,_,w){return 0|ka(e|=0,n|=0,o|=0,a|=0,f|=0,E|=0,s|=0,y|=0,_|=0,w|=0)},q:function(e,t,n,o,a,f,E,s,y,_,w){return 0|function(D,v,Y,U,H,i,c,N,l,F){var b=0;return b=-1,!H&U>>>0>=16|H&&(b=ka(D,Y,U-16|0,H-(U>>>0<16)|0,(Y+U|0)-16|0,i,c,N,l,F)),v&&(r[v>>2]=b?0:U-16|0,r[v+4>>2]=b?0:H-(U>>>0<16)|0),b}(e|=0,t|=0,o|=0,a|=0,f|=0,E|=0,s|=0,y|=0,_|=0,w|=0)},r:tt,s:function(){return 12},t:_e,u:Gt,v:ue,w:ig,x:tt,y:Qa,z:_e,A:Gt,B:ue,C:ig,D:function(e,t,n,o,a,f,E,s,y,_,w,D){return 0|Ha(e|=0,t|=0,n|=0,o|=0,a|=0,f|=0,E|=0,s|=0,y|=0,w|=0,D|=0)},E:function(e,t,n,o,a,f,E,s,y,_,w){return 0|function(D,v,Y,U,H,i,c,N,l,F){if(!H&U>>>0<4294967280)return Ha(D,D+U|0,0,Y,U,H,i,c,N,l,F),v&&(H=(D=U+16|0)>>>0<16?H+1|0:H,r[v>>2]=D,r[v+4>>2]=H),0;z0(),s0()}(e|=0,t|=0,n|=0,o|=0,a|=0,f|=0,E|=0,s|=0,_|=0,w|=0)},F:function(e,t,n,o,a,f,E,s,y,_,w){return 0|Na(e|=0,n|=0,o|=0,a|=0,f|=0,E|=0,s|=0,y|=0,_|=0,w|=0)},G:function(e,t,n,o,a,f,E,s,y,_,w){return 0|function(D,v,Y,U,H,i,c,N,l,F){var b=0;return b=-1,!H&U>>>0>=16|H&&(b=Na(D,Y,U-16|0,H-(U>>>0<16)|0,(Y+U|0)-16|0,i,c,N,l,F)),v&&(r[v>>2]=b?0:U-16|0,r[v+4>>2]=b?0:H-(U>>>0<16)|0),b}(e|=0,t|=0,o|=0,a|=0,f|=0,E|=0,s|=0,y|=0,_|=0,w|=0)},H:tt,I:lr,J:_e,K:Gt,L:ue,M:ig,N:tt,O:tt,P:function(e,t,n,o,a){return 0|en(e|=0,t|=0,n|=0,o|=0,a|=0)},Q:function(e,t,n,o,a){return 0|function(f,E,s,y,_){var w;return BA=w=BA-32|0,en(w,E,s,y,_),E=fn(f,w),s=or(w,f,32),BA=w+32|0,s|((0|f)==(0|w)?-1:E)}(e|=0,t|=0,n|=0,o|=0,a|=0)},R:ig,S:tt,T:tt,U:tt,V:tt,W:lr,X:Gt,Y:ue,Z:function(e,t,n){return 0|function(o,a,f){var E,s=0;return BA=E=BA+-64|0,he(E,f,32,0),f=r[E+28>>2],s=r[E+24>>2],p[a+24|0]=s,p[a+25|0]=s>>>8,p[a+26|0]=s>>>16,p[a+27|0]=s>>>24,p[a+28|0]=f,p[a+29|0]=f>>>8,p[a+30|0]=f>>>16,p[a+31|0]=f>>>24,f=r[E+20>>2],s=r[E+16>>2],p[a+16|0]=s,p[a+17|0]=s>>>8,p[a+18|0]=s>>>16,p[a+19|0]=s>>>24,p[a+20|0]=f,p[a+21|0]=f>>>8,p[a+22|0]=f>>>16,p[a+23|0]=f>>>24,f=r[E+12>>2],s=r[E+8>>2],p[a+8|0]=s,p[a+9|0]=s>>>8,p[a+10|0]=s>>>16,p[a+11|0]=s>>>24,p[a+12|0]=f,p[a+13|0]=f>>>8,p[a+14|0]=f>>>16,p[a+15|0]=f>>>24,f=r[E+4>>2],s=r[E>>2],p[0|a]=s,p[a+1|0]=s>>>8,p[a+2|0]=s>>>16,p[a+3|0]=s>>>24,p[a+4|0]=f,p[a+5|0]=f>>>8,p[a+6|0]=f>>>16,p[a+7|0]=f>>>24,Q0(E,64),o=oa(o,a),BA=E- -64|0,o}(e|=0,t|=0,n|=0)},_:Qn,$:ea,aa:function(e,t,n,o,a,f,E){return 0|fr(e|=0,t|=0,n|=0,o|=0,a|=0,f|=0,E|=0)},ba:function(e,t,n,o,a,f,E,s){return 0|Za(e|=0,t|=0,n|=0,o|=0,a|=0,f|=0,E|=0,s|=0)},ca:function(e,t,n,o,a,f){return 0|function(E,s,y,_,w,D){return!_&y>>>0>=4294967280|_&&(z0(),s0()),fr(E+16|0,E,s,y,_,w,D)}(e|=0,t|=0,n|=0,o|=0,a|=0,f|=0)},da:function(e,t,n,o,a,f,E){return 0|gn(e|=0,t|=0,n|=0,o|=0,a|=0,f|=0,E|=0)},ea:function(e,t,n,o,a,f,E){return 0|Ir(e|=0,t|=0,n|=0,o|=0,a|=0,f|=0,E|=0)},fa:function(e,t,n,o,a,f,E,s){return 0|za(e|=0,t|=0,n|=0,o|=0,a|=0,f|=0,E|=0,s|=0)},ga:function(e,t,n,o,a,f){return 0|function(E,s,y,_,w,D){return!_&y>>>0>=16|_?Ir(E,s+16|0,s,y-16|0,_-(y>>>0<16)|0,w,D):-1}(e|=0,t|=0,n|=0,o|=0,a|=0,f|=0)},ha:function(e,t,n,o,a,f,E){return 0|$a(e|=0,t|=0,n|=0,o|=0,a|=0,f|=0,E|=0)},ia:function(e,t,n,o,a){return 0|function(f,E,s,y,_){var w,D=0;return BA=w=BA-96|0,D=-1,Qn(w+32|0,w)||(tn(w- -64|0,w+32|0,_),D=gn(f+32|0,E,s,y,w- -64|0,_,w),E=r[w+60>>2],s=r[w+56>>2],p[f+24|0]=s,p[f+25|0]=s>>>8,p[f+26|0]=s>>>16,p[f+27|0]=s>>>24,p[f+28|0]=E,p[f+29|0]=E>>>8,p[f+30|0]=E>>>16,p[f+31|0]=E>>>24,E=r[w+52>>2],s=r[w+48>>2],p[f+16|0]=s,p[f+17|0]=s>>>8,p[f+18|0]=s>>>16,p[f+19|0]=s>>>24,p[f+20|0]=E,p[f+21|0]=E>>>8,p[f+22|0]=E>>>16,p[f+23|0]=E>>>24,E=r[w+44>>2],s=r[w+40>>2],p[f+8|0]=s,p[f+9|0]=s>>>8,p[f+10|0]=s>>>16,p[f+11|0]=s>>>24,p[f+12|0]=E,p[f+13|0]=E>>>8,p[f+14|0]=E>>>16,p[f+15|0]=E>>>24,E=r[w+36>>2],s=r[w+32>>2],p[0|f]=s,p[f+1|0]=s>>>8,p[f+2|0]=s>>>16,p[f+3|0]=s>>>24,p[f+4|0]=E,p[f+5|0]=E>>>8,p[f+6|0]=E>>>16,p[f+7|0]=E>>>24,Q0(w,32),Q0(w+32|0,32),Q0(w- -64|0,24)),BA=w+96|0,D}(e|=0,t|=0,n|=0,o|=0,a|=0)},ja:function(e,t,n,o,a,f){return 0|function(E,s,y,_,w,D){var v,Y=0;return BA=v=BA-32|0,Y=-1,!_&y>>>0>=48|_&&(tn(v,s,w),Y=$a(E,s+32|0,y-32|0,_-(y>>>0<32)|0,v,s,D)),BA=v+32|0,Y}(e|=0,t|=0,n|=0,o|=0,a|=0,f|=0)},ka:function(){return 48},la:Gt,ma:qg,na:tt,oa:Gt,pa:qg,qa:tt,ra:function(){return 384},sa:function(e,t,n,o,a,f,E){return 0|sn(e|=0,t|=0,n|=0,o|=0,a|=0,f|=0,E|=0)},ta:cr,ua:function(e,t,n,o){return 0|zt(e|=0,t|=0,n|=0,o|=0)},va:hr,wa:ig,xa:qg,ya:function(e,t,n,o){return 0|he(e|=0,t|=0,n|=0,o|=0)},za:Gt,Aa:qg,Ba:Qa,Ca:tt,Da:function(e,t,n,o,a,f){return 0|function(E,s,y,_,w,D){var v,Y;return BA=v=BA-32|0,Y=u[0|w]|u[w+1|0]<<8|u[w+2|0]<<16|u[w+3|0]<<24,w=u[w+4|0]|u[w+5|0]<<8|u[w+6|0]<<16|u[w+7|0]<<24,r[v+24>>2]=0,r[v+28>>2]=0,r[v+16>>2]=Y,r[v+20>>2]=w,q0(v,y,_),r[v+8>>2]=0,r[v+12>>2]=0,s-16>>>0>=49?(r[8960]=28,E=-1):(y=v+16|0,E=s-1>>>0>63?-1:function(U,H,i,c,N){var l,F=0;if(l=F=BA,BA=F=F-384&-64,!(!H|!U|(i-1&255)>>>0>=64))return function(b,V,W,O,z){var tA;if(BA=tA=BA-192|0,!(!W|(V-1&255)>>>0>=64))return lA[tA+130>>1]=257,p[tA+129|0]=32,p[tA+128|0]=V,ga(tA+128|4),q0(tA+128|8,0,0),r[tA+152>>2]=0,r[tA+156>>2]=0,r[tA+144>>2]=0,r[tA+148>>2]=0,O?function(AA,gA){var aA,iA=0;iA=u[gA+4|0]|u[gA+5|0]<<8|u[gA+6|0]<<16|u[gA+7|0]<<24,aA=u[0|gA]|u[gA+1|0]<<8|u[gA+2|0]<<16|u[gA+3|0]<<24,p[AA+32|0]=aA,p[AA+33|0]=aA>>>8,p[AA+34|0]=aA>>>16,p[AA+35|0]=aA>>>24,p[AA+36|0]=iA,p[AA+37|0]=iA>>>8,p[AA+38|0]=iA>>>16,p[AA+39|0]=iA>>>24,iA=u[gA+12|0]|u[gA+13|0]<<8|u[gA+14|0]<<16|u[gA+15|0]<<24,gA=u[gA+8|0]|u[gA+9|0]<<8|u[gA+10|0]<<16|u[gA+11|0]<<24,p[AA+40|0]=gA,p[AA+41|0]=gA>>>8,p[AA+42|0]=gA>>>16,p[AA+43|0]=gA>>>24,p[AA+44|0]=iA,p[AA+45|0]=iA>>>8,p[AA+46|0]=iA>>>16,p[AA+47|0]=iA>>>24}(tA+128|0,O):(r[tA+168>>2]=0,r[tA+172>>2]=0,r[tA+160>>2]=0,r[tA+164>>2]=0),z?function(AA,gA){var aA,iA=0;iA=u[gA+4|0]|u[gA+5|0]<<8|u[gA+6|0]<<16|u[gA+7|0]<<24,aA=u[0|gA]|u[gA+1|0]<<8|u[gA+2|0]<<16|u[gA+3|0]<<24,p[AA+48|0]=aA,p[AA+49|0]=aA>>>8,p[AA+50|0]=aA>>>16,p[AA+51|0]=aA>>>24,p[AA+52|0]=iA,p[AA+53|0]=iA>>>8,p[AA+54|0]=iA>>>16,p[AA+55|0]=iA>>>24,iA=u[gA+12|0]|u[gA+13|0]<<8|u[gA+14|0]<<16|u[gA+15|0]<<24,gA=u[gA+8|0]|u[gA+9|0]<<8|u[gA+10|0]<<16|u[gA+11|0]<<24,p[AA+56|0]=gA,p[AA+57|0]=gA>>>8,p[AA+58|0]=gA>>>16,p[AA+59|0]=gA>>>24,p[AA+60|0]=iA,p[AA+61|0]=iA>>>8,p[AA+62|0]=iA>>>16,p[AA+63|0]=iA>>>24}(tA+128|0,z):(r[tA+184>>2]=0,r[tA+188>>2]=0,r[tA+176>>2]=0,r[tA+180>>2]=0),XB(b,tA+128|0),L0(tA+32|0,0,96),Ee(V=b,b=V0(tA,W,32),128,0),Q0(b,128),void(BA=b+192|0);z0(),s0()}(F,i,H,c,N),Ee(F,0,0,0),UB(F,U,i),BA=l,0;z0(),s0()}(E,D,255&s,v,y)),BA=v+32|0,E}(e|=0,t|=0,n|=0,o|=0,a|=0,f|=0)},Ea:ig,Fa:function(e,t,n){return e|=0,sn(t|=0,32,n|=0,32,0,0,0),0|na(e,t)},Ga:function(e,t){return e|=0,vt(t|=0,32),0|na(e,t)},Ha:function(e,t,n,o,a){t|=0,n|=0,a|=0;var f,E,s=0;if(E=s=BA,BA=s=s-512&-64,f=(e|=0)||t){if(e=-1,!ra(s+96|0,o|=0,a)){for(t=t||f,e=0,cr(s+128|0,0,0,64),zt(s+128|0,s+96|0,32,0),Q0(s+96|0,32),zt(s+128|0,n,32,0),zt(s+128|0,a,32,0),hr(s+128|0,s+32|0,64),Q0(s+128|0,384);n=(s+32|0)+e|0,p[e+f|0]=u[0|n],p[e+t|0]=u[n+32|0],(0|(e=e+1|0))!=32;);Q0(s+32|0,64),e=0}return BA=E,0|e}z0(),s0()},Ia:function(e,t,n,o,a){t|=0,n|=0,a|=0;var f,E,s=0;if(E=s=BA,BA=s=s-512&-64,f=(e|=0)||t){if(e=-1,!ra(s+96|0,o|=0,a)){for(t=t||f,e=0,cr(s+128|0,0,0,64),zt(s+128|0,s+96|0,32,0),Q0(s+96|0,32),zt(s+128|0,a,32,0),zt(s+128|0,n,32,0),hr(s+128|0,s+32|0,64),Q0(s+128|0,384);n=(s+32|0)+e|0,p[e+t|0]=u[0|n],p[e+f|0]=u[n+32|0],(0|(e=e+1|0))!=32;);Q0(s+32|0,64),e=0}return BA=E,0|e}z0(),s0()},Ja:tt,Ka:tt,La:tt,Ma:tt,Na:wr,Oa:Dr,Pa:Dr,Qa:Gt,Ra:Ea,Sa:_e,Ta:Ea,Ua:Gt,Va:function(){return 128},Wa:function(){return 35681},Xa:wr,Ya:Ea,Za:function(){return 8192},_a:function(){return-2147483648},$a:Dr,ab:function(){return 67108864},bb:sa,cb:function(){return 268435456},db:function(){return 4},eb:function(){return 1073741824},fb:function(e,t,n,o,a,f,E,s,y,_,w){return 0|function(D,v,Y,U,H,i,c,N,l,F,b){switch(b-1|0){case 0:return function(V,W,O,z,tA,AA,gA,aA,iA,hA){var yA,fA;fA=W,yA=L0(V,0,W),V=22;A:if(!O){if(!(!O&W>>>0<16)){if(AA|iA|hA>>>0>2147483648)break A;if(!(!iA&aA>>>0<3|hA>>>0<8192)){if(V=28,(0|z)==(0|yA))break A;return se(aA,hA>>>10|0,1,z,tA,gA,16,yA,fA,0,0,1)?-1:0}}V=28}return r[8960]=V,-1}(D,v,Y,U,H,i,c,N,l,F);case 1:return function(V,W,O,z,tA,AA,gA,aA,iA,hA){var yA,fA;fA=W,yA=L0(V,0,W),V=22;A:if(!O){if(!(!O&W>>>0<16)){if(AA|iA|hA>>>0>2147483648)break A;if(!(!(aA|iA)|hA>>>0<8192)){if(V=28,(0|z)==(0|yA))break A;return se(aA,hA>>>10|0,1,z,tA,gA,16,yA,fA,0,0,2)?-1:0}}V=28}return r[8960]=V,-1}(D,v,Y,U,H,i,c,N,l,F)}return r[8960]=28,-1}(e|=0,t|=0,n|=0,o|=0,a|=0,f|=0,E|=0,s|=0,y|=0,_|=0,w|=0)},gb:function(e,t,n,o,a,f,E){return 0|La(e|=0,t|=0,n|=0,o|=0,a|=0,f|=0,E|=0)},hb:function(e,t,n,o,a,f,E,s){return 0|function(y,_,w,D,v,Y,U,H){switch(H-1|0){case 1:return La(y,_,w,D,v,Y,U);default:z0(),s0();case 0:}return function(i,c,N,l,F,b,V){var W;return BA=W=BA-16|0,i=L0(i,0,128),V>>>0<2147483649&&!(l|b)?V>>>0>8191&&!b&F>>>0>=3|(0|b)!=0?(vt(W,16),i=se(F,V>>>10|0,1,c,N,W,16,0,32,i,128,1)?-1:0):(r[8960]=28,i=-1):(r[8960]=22,i=-1),BA=W+16|0,i}(y,_,w,D,v,Y,U)}(e|=0,t|=0,n|=0,o|=0,a|=0,f|=0,E|=0,s|=0)},ib:function(e,t,n,o){return 0|function(a,f,E,s){return Mt(a,35681,10)?Mt(a,35692,9)?(r[8960]=28,-1):function(y,_,w,D){A:{if((0|D)==1|D>>>0>1)r[8960]=22;else{if(!(y=da(y,_,w,1)))break A;(0|y)==-35&&(r[8960]=28)}y=-1}return y}(a,f,E,s):function(y,_,w,D){A:{if((0|D)==1|D>>>0>1)r[8960]=22;else{if(!(y=da(y,_,w,2)))break A;(0|y)==-35&&(r[8960]=28)}y=-1}return y}(a,f,E,s)}(e|=0,t|=0,n|=0,o|=0)},jb:function(e,t,n,o){return 0|function(a,f,E,s){return Mt(a,35681,10)?Mt(a,35692,9)?(r[8960]=28,-1):ma(a,f,E,s,1):ma(a,f,E,s,2)}(e|=0,t|=0,n|=0,o|=0)},kb:na,lb:ra,mb:tt,nb:tt,ob:tt,pb:lr,qb:Gt,rb:ue,sb:ig,tb:fr,ub:function(e,t,n,o,a,f){return 0|function(E,s,y,_,w,D){return!_&y>>>0>=4294967280|_&&(z0(),s0()),la(E+16|0,E,s,y,_,w,D),0}(e|=0,t|=0,n|=0,o|=0,a|=0,f|=0)},vb:Ir,wb:function(e,t,n,o,a,f){return 0|function(E,s,y,_,w,D){return!_&y>>>0>=16|_?wa(E,s+16|0,s,y-16|0,_-(y>>>0<16)|0,w,D):-1}(e|=0,t|=0,n|=0,o|=0,a|=0,f|=0)},xb:ig,yb:function(e,t,n){return e|=0,n|=0,vt(t|=0,24),gr(e,t,n),ta(e),n=u[t+16|0]|u[t+17|0]<<8|u[t+18|0]<<16|u[t+19|0]<<24,t=u[t+20|0]|u[t+21|0]<<8|u[t+22|0]<<16|u[t+23|0]<<24,p[e+44|0]=0,p[e+45|0]=0,p[e+46|0]=0,p[e+47|0]=0,p[e+48|0]=0,p[e+49|0]=0,p[e+50|0]=0,p[e+51|0]=0,p[e+36|0]=n,p[e+37|0]=n>>>8,p[e+38|0]=n>>>16,p[e+39|0]=n>>>24,p[e+40|0]=t,p[e+41|0]=t>>>8,p[e+42|0]=t>>>16,p[e+43|0]=t>>>24,0},zb:function(e,t,n){return gr(e|=0,t|=0,n|=0),ta(e),n=u[t+16|0]|u[t+17|0]<<8|u[t+18|0]<<16|u[t+19|0]<<24,t=u[t+20|0]|u[t+21|0]<<8|u[t+22|0]<<16|u[t+23|0]<<24,p[e+44|0]=0,p[e+45|0]=0,p[e+46|0]=0,p[e+47|0]=0,p[e+48|0]=0,p[e+49|0]=0,p[e+50|0]=0,p[e+51|0]=0,p[e+36|0]=n,p[e+37|0]=n>>>8,p[e+38|0]=n>>>16,p[e+39|0]=n>>>24,p[e+40|0]=t,p[e+41|0]=t>>>8,p[e+42|0]=t>>>16,p[e+43|0]=t>>>24,0},Ab:RB,Bb:function(e,t,n,o,a,f,E,s,y,_){return 0|function(w,D,v,Y,U,H,i,c,N,l){var F,b=0;if(BA=F=BA-336|0,v&&(r[v>>2]=0,r[v+4>>2]=0),!H&U>>>0<4294967279)return fe(F+16|0,64,b=w+32|0,w),$t(F+80|0,F+16|0),Q0(F+16|0,64),m0(F+80|0,i,c,N),m0(F+80|0,35712,0-c&15,0),L0(F+16|0,0,64),p[F+16|0]=l,Pg(F+16|0,F+16|0,64,0,b,1,w),m0(F+80|0,F+16|0,64,0),p[0|D]=u[F+16|0],Pg(i=D+1|0,Y,U,H,b,2,w),m0(F+80|0,i,U,H),m0(F+80|0,35712,15&U,0),q0(F+8|0,c,N),m0(F+80|0,F+8|0,8,0),q0(F+8|0,U- -64|0,H-((U>>>0<4294967232)-1|0)|0),m0(F+80|0,F+8|0,8,0),Ag(F+80|0,D=U+i|0),Q0(F+80|0,256),An(w+36|0,D),ja(b),(2&l||jB(b,4))&&RB(w),v&&(H=(w=U+17|0)>>>0<17?H+1|0:H,r[v>>2]=w,r[v+4>>2]=H),BA=F+336|0,0;z0(),s0()}(e|=0,t|=0,n|=0,o|=0,a|=0,f|=0,E|=0,s|=0,y|=0,_|=0)},Cb:function(e,t,n,o,a,f,E,s,y,_){return 0|function(w,D,v,Y,U,H,i,c,N,l){var F,b=0,V=0,W=0,O=0,z=0;BA=F=BA-352|0,v&&(r[v>>2]=0,r[v+4>>2]=0),Y&&(p[0|Y]=255),O=-1;A:{if(!(!i&H>>>0<17)){if(!(b=i-(H>>>0<17)|0)&(V=H-17|0)>>>0>=4294967279|b)break A;fe(F+32|0,64,W=w+32|0,w),$t(F+96|0,F+32|0),Q0(F+32|0,64),m0(F+96|0,c,N,l),m0(F+96|0,35712,0-N&15,0),L0(F+32|0,0,64),p[F+32|0]=u[0|U],Pg(F+32|0,F+32|0,64,0,W,1,w),z=u[F+32|0],p[F+32|0]=u[0|U],m0(F+96|0,F+32|0,64,0),m0(F+96|0,c=U+1|0,V,b),m0(F+96|0,35712,H-1&15,0),q0(F+24|0,N,l),m0(F+96|0,F+24|0,8,0),q0(F+24|0,U=H+47|0,i=U>>>0<47?i+1|0:i),m0(F+96|0,F+24|0,8,0),Ag(F+96|0,F),Q0(F+96|0,256),or(F,c+V|0,16)?Q0(F,16):(Pg(D,c,V,b,W,2,w),An(w+36|0,F),ja(W),(2&z||jB(W,4))&&RB(w),v&&(r[v>>2]=V,r[v+4>>2]=b),O=0,Y&&(p[0|Y]=z))}return BA=F+352|0,O}z0(),s0()}(e|=0,t|=0,n|=0,o|=0,a|=0,f|=0,E|=0,s|=0,y|=0,_|=0)},Db:function(){return 52},Eb:function(){return 17},Fb:lr,Gb:tt,Hb:function(){return-18},Ib:_e,Jb:wr,Kb:Dr,Lb:sa,Mb:Qa,Nb:Gt,Ob:function(e,t,n,o,a){return 0|function(f,E,s,y){var _=0,w=0,D=0,v=0,Y=0,U=0,H=0,i=0,c=0,N=0,l=0,F=0,b=0,V=0,W=0,O=0;if(_=1886610805^(D=u[0|y]|u[y+1|0]<<8|u[y+2|0]<<16|u[y+3|0]<<24),v=1936682341^(w=u[y+4|0]|u[y+5|0]<<8|u[y+6|0]<<16|u[y+7|0]<<24),Y=1852142177^D,H=1819895653^w,D=1852075885^(c=u[y+8|0]|u[y+9|0]<<8|u[y+10|0]<<16|u[y+11|0]<<24),w=1685025377^(y=u[y+12|0]|u[y+13|0]<<8|u[y+14|0]<<16|u[y+15|0]<<24),c^=2037671283,U=1952801890^y,(0|(y=(E+s|0)-(F=7&s)|0))!=(0|E)){for(;i=u[0|E]|u[E+1|0]<<8|u[E+2|0]<<16|u[E+3|0]<<24,N=u[E+4|0]|u[E+5|0]<<8|u[E+6|0]<<16|u[E+7|0]<<24,l=v0(D,w,13),b=h,V=1+(w=w+v|0)|0,v=w,W=v0(w=_+D|0,v=w>>>0<_>>>0?V:v,32),V=h,U=_=U^N,D=v0(c^=i,_,16),_=Y+c|0,Y=H+U|0,c=H=(Y=_>>>0>>0?Y+1|0:Y)^h,H=v0(D^=_,H,21),U=h,l=v0(w^=l,v^=b,17),O=h,v=Y+v|0,Y=_,v=v0(_=_+w|0,w=Y>>>0>_>>>0?v+1|0:v,32),Y=h,b=v0(l^=_,w^=O,13),O=h,V=1+(_=c+V|0)|0,c=_,D=(_=D+W|0)>>>0>>0?V:c,l=c=_+l|0,w=D+w|0,w=v0(c,W=_>>>0>c>>>0?w+1|0:w,32),c=h,H=v0(_^=H,D^=U,16),D=Y+D|0,D=(_=_+v|0)>>>0>>0?D+1|0:D,v=w+(Y=_^H)|0,w=(U=c)+(c=D^h)|0,c=v0(Y,c,21)^v,U=(V=v>>>0>>0?w+1|0:w)^h,Y=w=W^O,w=v0(H=l^b,w,17),D=D+Y|0,H=(Y=_+H|0)>>>0<_>>>0?D+1|0:D,D=w^Y,w=H^h,_=v^i,v=N^V,Y=v0(Y,H,32),H=h,(0|y)!=(0|(E=E+8|0)););E=y}switch(y=s<<24,s=0,F-1|0){case 6:y|=u[E+6|0]<<16;case 5:y|=u[E+5|0]<<8;case 4:y|=u[E+4|0];case 3:i=(s=u[E+3|0])>>>8|0,s<<=24,y|=i;case 2:s|=(i=u[E+2|0])<<16,y|=N=i>>>16|0;case 1:s|=(i=u[E+1|0])<<8,y|=N=i>>>24|0;case 0:s=u[0|E]|s}return i=v0(D,w,13),N=h,E=w+v|0,F=v0(D=_+D|0,w=D>>>0<_>>>0?E+1|0:E,32),l=h,v=_=y^U,_=v0(E=s^c,_,16),v=v+H|0,H=Y=(v=(U=E)>>>0>(E=E+Y|0)>>>0?v+1|0:v)^h,Y=v0(_^=E,Y,21),c=h,i=v0(D^=i,w^=N,17),N=h,w=v+w|0,U=E,w=v0(E=E+D|0,D=U>>>0>E>>>0?w+1|0:w,32),v=h,i=v0(U=E^i,D^=N,13),N=h,b=1+(E=H+l|0)|0,H=E,D=(_=(E=_+F|0)>>>0<_>>>0?b:H)+D|0,D=v0(U=H=E+U|0,H=E>>>0>H>>>0?D+1|0:D,32),F=h,Y=v0(E^=Y,_^=c,16),_=v+_|0,_=(E=E+w|0)>>>0>>0?_+1|0:_,w=E^Y,Y=v=_^h,v=v0(w,v,21),c=h,N=H^=N,H=v0(U^=i,H,17),i=h,_=_+N|0,b=E,U=v0(E=E+U|0,_=b>>>0>E>>>0?_+1|0:_,32),N=h,i=v0(E^=H,H=_^i,13),l=h,b=E,Y=1+(E=Y+F|0)|0,_=E,y=H+(y^(_=(E=D+w|0)>>>0>>0?Y:_))|0,s=v0(w=D=b+(s^=E)|0,D=s>>>0>D>>>0?y+1|0:y,32),Y=h,v=v0(E^=v,y=_^c,16),y=y+N|0,y=(_=E)>>>0>(E=E+(255^U)|0)>>>0?y+1|0:y,_=E^v,H=v=y^h,v=v0(_,v,21),c=h,U=D^=l,D=v0(w^=i,D,17),i=h,y=y+U|0,U=E,w=v0(E=E+w|0,y=U>>>0>E>>>0?y+1|0:y,32),U=h,N=v0(D^=E,i^=y,13),F=h,H=1+(E=Y+H|0)|0,y=E,_=(y=(E=s+_|0)>>>0>>0?H:y)+i|0,Y=_=E>>>0>(s=E+D|0)>>>0?_+1|0:_,_=v0(s,_,32),H=h,v=v0(E^=v,y^=c,16),y=y+U|0,U=E,D=(E=E+w|0)^v,v=w=(y=U>>>0>E>>>0?y+1|0:y)^h,w=v0(D,w,21),c=h,U=Y^=F,Y=v0(s^=N,Y,17),i=h,y=y+U|0,U=E,U=v0(E=E+s|0,s=U>>>0>E>>>0?y+1|0:y,32),N=h,F=v0(Y^=E,i^=s,13),l=h,y=1+(E=v+H|0)|0,s=E,_=(y=(E=_+D|0)>>>0<_>>>0?y:s)+i|0,v=_=E>>>0>(s=E+Y|0)>>>0?_+1|0:_,_=v0(s,_,32),Y=h,w=v0(E^=w,y^=c,16),y=y+N|0,H=E,D=(E=E+U|0)^w,H=w=(y=H>>>0>E>>>0?y+1|0:y)^h,w=v0(D,w,21),c=h,U=v^=l,v=v0(s^=F,v,17),i=h,y=y+U|0,U=E,y=v0(E=E+s|0,s=U>>>0>E>>>0?y+1|0:y,32),U=h,i=s^=i,N=v0(v^=E,s,13),F=h,H=1+(E=Y+H|0)|0,s=E,Y=D=c^(_=(E=_+D|0)>>>0<_>>>0?H:s),D=v0(s=E^w,D,16),w=Y+U|0,U=s,D=v0((s=s+y|0)^D,(y=U>>>0>s>>>0?w+1|0:w)^h,21),w=h,_=_+i|0,H=1+(y=y+(_=((U=E)>>>0>(E=E+v|0)>>>0?_+1|0:_)^F)|0)|0,U=y,s=(E=s+(y=E^N)|0)>>>0>>0?H:U,y=v0(y,_,17)^E^D,_=h^s^w,q0(f,v0(E,s,32)^y,h^_),0}(e|=0,t|=0,n|=0,a|=0)},Pb:function(e){vt(e|=0,16)},Qb:function(){return 208},Rb:qg,Sb:tt,Tb:tt,Ub:qg,Vb:function(){return-65},Wb:function(e,t,n){return 0|ha(e|=0,t|=0,n|=0)},Xb:function(e,t){return 0|function(n,o){var a;return BA=a=BA-32|0,vt(a,32),ha(n,o,a),Q0(a,32),BA=a+32|0,0}(e|=0,t|=0)},Yb:function(e,t,n,o,a,f){return 0|function(E,s,y,_,w,D){var v,Y;return BA=v=BA-16|0,Y=y,y=_,En(E,v+8|0,Br(E- -64|0,Y,_),_,w,D),r[v+8>>2]!=64|r[v+12>>2]?(s&&(r[s>>2]=0,r[s+4>>2]=0),L0(E,0,y- -64|0),E=-1):(E=0,s&&(r[s>>2]=_- -64,r[s+4>>2]=w-((_>>>0<4294967232)-1|0))),BA=v+16|0,E}(e|=0,t|=0,n|=0,o|=0,a|=0,f|=0)},Zb:function(e,t,n,o,a,f){return 0|function(E,s,y,_,w,D){var v=0;A:{t:{if(!(!w&_>>>0<64||(w=w-1|0,!(w=(_=_+-64|0)>>>0<4294967232?w+1|0:w)&_>>>0>4294967231|w))){if(!cn(y,v=y- -64|0,_,w,D))break t;E&&L0(E,0,_)}if(y=-1,!s)break A;return r[s>>2]=0,r[s+4>>2]=0,-1}s&&(r[s>>2]=_,r[s+4>>2]=w),y=0,E&&Br(E,v,_)}return y}(e|=0,t|=0,n|=0,o|=0,a|=0,f|=0)},_b:function(e,t,n,o,a,f){return 0|En(e|=0,t|=0,n|=0,o|=0,a|=0,f|=0)},$b:function(e,t,n,o,a){return 0|cn(e|=0,t|=0,n|=0,o|=0,a|=0)},ac:function(e){return ye(e|=0),0},bc:function(e,t,n,o){return 0|wt(e|=0,t|=0,n|=0,o|=0)},cc:function(e,t,n,o){return 0|function(a,f,E,s){var y;return BA=y=BA+-64|0,ag(a,y),a=fa(f,E,y,64,0,s,1),BA=y- -64|0,a}(e|=0,t|=0,n|=0,o|=0)},dc:function(e,t,n){return 0|function(o,a,f){var E;return BA=E=BA+-64|0,ag(o,E),o=va(a,E,64,0,f,1),BA=E- -64|0,o}(e|=0,t|=0,n|=0)},ec:function(e,t){e|=0;var n,o=0;return BA=n=BA-256|0,o=-1,VB(t|=0)||Fa(n+96|0,t)||function(a){var f;return BA=f=BA-160|0,function(E,s){var y,_=0;for(BA=y=BA-1760|0,yt(y+480|0,s),sr(y+320|0,s),Z0(y,y+320|0),ht(y+320|0,y,y+480|0),Z0(y+160|0,y+320|0),yt(s=y+640|0,y+160|0),ht(y+320|0,y,s),Z0(y+160|0,y+320|0),yt(s=y+800|0,y+160|0),ht(y+320|0,y,s),Z0(y+160|0,y+320|0),yt(s=y+960|0,y+160|0),ht(y+320|0,y,s),Z0(y+160|0,y+320|0),yt(s=y+1120|0,y+160|0),ht(y+320|0,y,s),Z0(y+160|0,y+320|0),yt(s=y+1280|0,y+160|0),ht(y+320|0,y,s),Z0(y+160|0,y+320|0),yt(s=y+1440|0,y+160|0),ht(y+320|0,y,s),Z0(y+160|0,y+320|0),yt(y+1600|0,y+160|0),on(E),s=252;sr(y+320|0,E),_=s,(0|(s=p[s+34208|0]))>=1?(Z0(y+160|0,y+320|0),ht(y+320|0,y+160|0,(y+480|0)+xA((254&s)>>>1|0,160)|0)):(0|s)>-1||(Z0(y+160|0,y+320|0),xa(y+320|0,y+160|0,(y+480|0)+xA((0-s&254)>>>1|0,160)|0)),Z0(E,y+320|0),s=_-1|0,_;);BA=y+1760|0}(f,a),a=Aa(f),BA=f+160|0,a}(n+96|0)&&(kt(n),$0(n,n,t=n+136|0),kt(n+48|0),O0(n+48|0,n+48|0,t),er(n,n),_0(n+48|0,n+48|0,n),Jg(e,n+48|0),o=0),BA=n+256|0,0|o},fc:function(e,t){e|=0;var n,o=0;return BA=n=BA+-64|0,he(n,t|=0,32,0),p[0|n]=248&u[0|n],p[n+31|0]=63&u[n+31|0]|64,t=r[n+20>>2],o=r[n+16>>2],p[e+16|0]=o,p[e+17|0]=o>>>8,p[e+18|0]=o>>>16,p[e+19|0]=o>>>24,p[e+20|0]=t,p[e+21|0]=t>>>8,p[e+22|0]=t>>>16,p[e+23|0]=t>>>24,t=r[n+12>>2],o=r[n+8>>2],p[e+8|0]=o,p[e+9|0]=o>>>8,p[e+10|0]=o>>>16,p[e+11|0]=o>>>24,p[e+12|0]=t,p[e+13|0]=t>>>8,p[e+14|0]=t>>>16,p[e+15|0]=t>>>24,t=r[n+4>>2],o=r[n>>2],p[0|e]=o,p[e+1|0]=o>>>8,p[e+2|0]=o>>>16,p[e+3|0]=o>>>24,p[e+4|0]=t,p[e+5|0]=t>>>8,p[e+6|0]=t>>>16,p[e+7|0]=t>>>24,t=r[n+28>>2],o=r[n+24>>2],p[e+24|0]=o,p[e+25|0]=o>>>8,p[e+26|0]=o>>>16,p[e+27|0]=o>>>24,p[e+28|0]=t,p[e+29|0]=t>>>8,p[e+30|0]=t>>>16,p[e+31|0]=t>>>24,Q0(n,64),BA=n- -64|0,0},gc:zB,hc:Bn,ic:function(e){var t=0,n=0;if((e|=0)>>>0>=2){for(n=(0-e>>>0)%(e>>>0)|0;(t=zB())>>>0>>0;);e=(t>>>0)%(e>>>0)|0}else e=0;return 0|e},jc:vt,kc:function(e,t,n){fe(e|=0,t|=0,1784,n|=0)},lc:tt,mc:function(){var e=0,t=0;return(e=r[9097])&&(e=r[e+20>>2])&&(t=0|Ct[0|e]()),0|t},nc:function(e,t,n){(function(o,a,f){(0|f)==1|f>>>0>1&&(D0(1796,1816,197,1842),s0()),vt(o,a)})(e|=0,t|=0,n|=0)},oc:function(e,t,n,o){e|=0,n|=0;var a=0,f=0,E=0;if(!((o|=0)>>>0>2147483646|o<<1>>>0>=(t|=0)>>>0)){if(t=0,o){for(;a=t<<1,f=(E=u[t+n|0])>>>4|0,p[a+e|0]=87+(f+(f+65526>>>8&217)|0),f=(1|a)+e|0,a=15&E,p[0|f]=22272+((a<<8)+(a+65526&55552)|0)>>>8,(0|o)!=(0|(t=t+1|0)););t=o<<1}else t=0;return p[t+e|0]=0,0|e}z0(),s0()},pc:function(e,t,n,o,a,f,E){e|=0,t|=0,n|=0,a|=0,f|=0,E|=0;var s=0,y=0,_=0,w=0,D=0,v=0,Y=0,U=0,H=0,i=0,c=0;A:if(o|=0){t:{g:{r:for(;;){for(y=s;;){e:{if(!(255&((H=(65526+(Y=(223&(v=u[n+y|0]))-55&255)^Y+65520)>>>8|0)|(_=65526+(i=48^v)>>>8|0)))){if(_=1,!a|255&D)break g;if(yr(a,v))break e;s=y;break A}if(t>>>0<=w>>>0){r[8960]=68,_=0;break g}if(s=Y&H|_&i,255&D?(p[e+w|0]=s|c,w=w+1|0):c=s<<4,D^=-1,_=1,(s=y+1|0)>>>0>>0)continue r;break t}if(D=0,!((y=y+1|0)>>>0>>0))break}break}s=(e=s+1|0)>>>0>>0?o:e;break A}s=y}255&D?(r[8960]=28,U=-1,s=s-1|0,w=0):_||(w=0,U=-1)}return E?r[E>>2]=n+s:(0|o)!=(0|s)&&(r[8960]=28,U=-1),f&&(r[f>>2]=w),0|U},qc:function(e,t){var n;return e|=0,Ca(t|=0),e=xA(n=(e>>>0)/3|0,-3)+e|0,xA(4-(3-e&0-(t>>>1&1))|0,1&(e|e>>>1))+(n<<2|1)|0},rc:JB,sc:xB,tc:function(){var e=0;return r[9104]?e=1:(r[9086]=0,function(){var t;BA=t=BA-16|0,nn(t),r[t>>2]&&(nn(t),L0(36348,0,40)),BA=t+16|0}(),r[9085]=1,Bn(),function(){var t=0;(0|(t=0|ct(30)))>=1?r[8944]=t:t=r[8944],t>>>0<=15&&(z0(),s0()),vt(36400,16)}(),r[9104]=1,e=0),0|e},uc:function(e,t,n,o,a){e|=0,t|=0,n|=0,a|=0;var f,E=0,s=0,y=0;BA=f=BA-16|0;A:{if(o|=0){if(y=-1,(E=(E=o-1|0)-(s=E&o?(n>>>0)%(o>>>0)|0:n&E)|0)>>>0>=(-1^n)>>>0)break A;if(!((n=n+E|0)>>>0>=a>>>0))for(e&&(r[e>>2]=n+1),e=t+n|0,y=0,p[f+15|0]=0,t=o>>>0>1?o:1,o=0;a=n=e-o|0,s=u[0|n]&u[f+15|0],n=(o^E)-1>>>24|0,p[0|a]=s|128&n,p[f+15|0]=n|u[f+15|0],(0|t)!=(0|(o=o+1|0)););}else y=-1;return BA=f+16|0,0|y}z0(),s0()},vc:function(e,t,n,o){e|=0,t|=0,n|=0,o|=0;var a,f=0,E=0,s=0,y=0,_=0;if(r[12+(a=BA-16|0)>>2]=0,o-1>>>0>>0){for(_=(f=n-1|0)+t|0,n=0,t=0;y=((128^(E=u[_-n|0]))-1&r[a+12>>2]-1&s-1)>>>8&1,r[a+12>>2]=r[a+12>>2]|0-y&n,t|=y,s|=E,(0|o)!=(0|(n=n+1|0)););r[e>>2]=f-r[a+12>>2],e=t-1|0}else e=-1;return 0|e},wc:function(){return 35762},xc:function(){return 10},yc:sa,zc:wr,Ac:function(){return 35840},Bc:Nt,Cc:ot}}(S)}(Ze)},instantiate:function(UA,d){return{then:function(S){var G=new Yt.Module(UA);S({instance:new Yt.Instance(G)})}}},RuntimeError:Error};function eB(UA,d,S,G){switch((S=S||"i8").charAt(S.length-1)==="*"&&(S="i32"),S){case"i1":case"i8":re[UA>>0]=d;break;case"i16":Be[UA>>1]=d;break;case"i32":Wt[UA>>2]=d;break;case"i64":oe=[d>>>0,(Bg=d,+Math.abs(Bg)>=1?Bg>0?(0|Math.min(+Math.floor(Bg/4294967296),4294967295))>>>0:~~+Math.ceil((Bg-+(~~Bg>>>0))/4294967296)>>>0:0)],Wt[UA>>2]=oe[0],Wt[UA+4>>2]=oe[1];break;case"float":ae[UA>>2]=d;break;case"double":Ng[UA>>3]=d;break;default:Ht("invalid type for setValue: "+S)}}function rB(UA,d,S){switch((d=d||"i8").charAt(d.length-1)==="*"&&(d="i32"),d){case"i1":case"i8":return re[UA>>0];case"i16":return Be[UA>>1];case"i32":case"i64":return Wt[UA>>2];case"float":return ae[UA>>2];case"double":return Ng[UA>>3];default:Ht("invalid type for getValue: "+d)}return null}rg=[],typeof Yt!="object"&&Ht("no native wasm support detected");var Re=!1;function Le(UA,d){UA||Ht("Assertion failed: "+d)}var pg,re,lg,Be,Wt,ae,Ng,xe=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):void 0;function BB(UA,d,S){for(var G=d+S,m=d;UA[m]&&!(m>=G);)++m;if(m-d>16&&UA.subarray&&xe)return xe.decode(UA.subarray(d,m));for(var M="";d>10,56320|1023&nA)}}else M+=String.fromCharCode((31&T)<<6|q)}else M+=String.fromCharCode(T)}return M}function Ug(UA,d){return UA?BB(lg,UA,d):""}function aB(UA,d){return UA%d>0&&(UA+=d-UA%d),UA}function Je(UA){pg=UA,L.HEAP8=re=new Int8Array(UA),L.HEAP16=Be=new Int16Array(UA),L.HEAP32=Wt=new Int32Array(UA),L.HEAPU8=lg=new Uint8Array(UA),L.HEAPU16=new Uint16Array(UA),L.HEAPU32=new Uint32Array(UA),L.HEAPF32=ae=new Float32Array(UA),L.HEAPF64=Ng=new Float64Array(UA)}var ne,Pe=L.INITIAL_MEMORY||16777216;(_g=L.wasmMemory?L.wasmMemory:new Yt.Memory({initial:Pe/65536,maximum:32768}))&&(pg=_g.buffer),Pe=pg.byteLength,Je(pg);var Ke=[],qe=[],nB=[],Te=[];function iB(){if(L.preRun)for(typeof L.preRun=="function"&&(L.preRun=[L.preRun]);L.preRun.length;)EB(L.preRun.shift());Mg(Ke)}function oB(){Mg(qe)}function CB(){Mg(nB)}function QB(){if(L.postRun)for(typeof L.postRun=="function"&&(L.postRun=[L.postRun]);L.postRun.length;)sB(L.postRun.shift());Mg(Te)}function EB(UA){Ke.unshift(UA)}function sB(UA){Te.unshift(UA)}qe.push({func:function(){ze()}});var Ot=0,wg=null;function cB(UA){Ot++,L.monitorRunDependencies&&L.monitorRunDependencies(Ot)}function hB(UA){if(Ot--,L.monitorRunDependencies&&L.monitorRunDependencies(Ot),Ot==0&&wg){var d=wg;wg=null,d()}}function Ht(UA){throw L.onAbort&&L.onAbort(UA),ug(UA+=""),Re=!0,UA="abort("+UA+"). Build with -s ASSERTIONS=1 for more info.",new Yt.RuntimeError(UA)}function Ve(UA,d){return String.prototype.startsWith?UA.startsWith(d):UA.indexOf(d)===0}L.preloadedImages={},L.preloadedAudios={};var Xe="data:application/octet-stream;base64,";function ie(UA){return Ve(UA,Xe)}var yB="file://";function We(UA){return Ve(UA,yB)}var Bg,oe,_t="<<< WASM_BINARY_FILE >>>";function Oe(UA){try{if(UA==_t&&rg)return new Uint8Array(rg);var d=jt(UA);if(d)return d;if(Ig)return Ig(UA);throw"both async and sync fetching of the wasm failed"}catch(S){Ht(S)}}function fB(){if(!rg&&(K0||J0)){if(typeof fetch=="function"&&!We(_t))return fetch(_t,{credentials:"same-origin"}).then(function(UA){if(!UA.ok)throw"failed to load wasm binary file at '"+_t+"'";return UA.arrayBuffer()}).catch(function(){return Oe(_t)});if(te)return new Promise(function(UA,d){te(_t,function(S){UA(new Uint8Array(S))},d)})}return Promise.resolve().then(function(){return Oe(_t)})}function IB(){var UA={a:Ze};function d(m,M){var T=m.exports;L.asm=T,ne=L.asm.h,hB()}function S(m){d(m.instance)}function G(m){return fB().then(function(M){return Yt.instantiate(M,UA)}).then(m,function(M){ug("failed to asynchronously prepare wasm: "+M),Ht(M)})}if(cB(),L.instantiateWasm)try{return L.instantiateWasm(UA,d)}catch(m){return ug("Module.instantiateWasm callback failed with error: "+m),!1}return rg||typeof Yt.instantiateStreaming!="function"||ie(_t)||We(_t)||typeof fetch!="function"?G(S):fetch(_t,{credentials:"same-origin"}).then(function(m){return Yt.instantiateStreaming(m,UA).then(S,function(M){return ug("wasm streaming compile failed: "+M),ug("falling back to ArrayBuffer instantiation"),G(S)})}),{}}ie(_t)||(_t=gB(_t));var uB={1024:function(){return L.getRandomValue()},1062:function(){if(L.getRandomValue===void 0)try{var UA=typeof window=="object"?window:self,d=UA.crypto!==void 0?UA.crypto:UA.msCrypto,S=function(){var M=new Uint32Array(1);return d.getRandomValues(M),M[0]>>>0};S(),L.getRandomValue=S}catch{try{var G=require("crypto"),m=function(){var T=G.randomBytes(4);return(T[0]<<24|T[1]<<16|T[2]<<8|T[3])>>>0};m(),L.getRandomValue=m}catch{throw"No secure random number generator found"}}}};function Mg(UA){for(;UA.length>0;){var d=UA.shift();if(typeof d!="function"){var S=d.func;typeof S=="number"?d.arg===void 0?ne.get(S)():ne.get(S)(d.arg):S(d.arg===void 0?null:d.arg)}else d(L)}}function _B(UA,d,S,G){Ht("Assertion failed: "+Ug(UA)+", at: "+[d?Ug(d):"unknown filename",S,G?Ug(G):"unknown function"])}function pB(){Ht()}function lB(UA,d,S){var G=kB(d,S);return uB[UA].apply(null,G)}function wB(UA,d,S){lg.copyWithin(UA,d,d+S)}function DB(){return lg.length}function dB(UA){try{return _g.grow(UA-pg.byteLength+65535>>>16),Je(_g.buffer),1}catch{}}function FB(UA){UA>>>=0;var d=DB(),S=2147483648;if(UA>S)return!1;for(var G=1;G<=4;G*=2){var m=d*(1+.2/G);if(m=Math.min(m,UA+100663296),dB(Math.min(S,aB(Math.max(16777216,UA,m),65536))))return!0}return!1}function mB(UA){return Wt[$e()>>2]=UA,UA}function vB(UA){switch(UA){case 30:return 16384;case 85:return 131072;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:case 80:case 81:case 79:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return typeof navigator=="object"&&navigator.hardwareConcurrency||1}return mB(28),-1}var Ce=[];function kB(UA,d){var S;for(Ce.length=0,d>>=2;S=lg[UA++];){var G=S<105;G&&1&d&&d++,Ce.push(G?Ng[d++>>1]:Wt[d]),++d}return Ce}function je(UA){for(var d=[],S=0;S255&&(G&=255),d.push(String.fromCharCode(G))}return d.join("")}var GB=typeof atob=="function"?atob:function(UA){var d,S,G,m,M,T,q="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",Z="",nA=0;UA=UA.replace(/[^A-Za-z0-9\+\/\=]/g,"");do d=q.indexOf(UA.charAt(nA++))<<2|(m=q.indexOf(UA.charAt(nA++)))>>4,S=(15&m)<<4|(M=q.indexOf(UA.charAt(nA++)))>>2,G=(3&M)<<6|(T=q.indexOf(UA.charAt(nA++))),Z+=String.fromCharCode(d),M!==64&&(Z+=String.fromCharCode(S)),T!==64&&(Z+=String.fromCharCode(G));while(nA0||(iB(),Ot>0||(L.setStatus?(L.setStatus("Running..."),setTimeout(function(){setTimeout(function(){L.setStatus("")},1),d()},1)):d()))}if(L._malloc=function(){return(L._malloc=L.asm.Bc).apply(null,arguments)},L._free=function(){return(L._free=L.asm.Cc).apply(null,arguments)},L.setValue=eB,L.getValue=rB,L.UTF8ToString=Ug,wg=function UA(){Rg||Qe(),Rg||(wg=UA)},L.run=Qe,L.preInit)for(typeof L.preInit=="function"&&(L.preInit=[L.preInit]);L.preInit.length>0;)L.preInit.pop()();Qe()})};var e0,R=R!==void 0?R:{},i0={};for(e0 in R)R.hasOwnProperty(e0)&&(i0[e0]=R[e0]);var $A=!1,pA=!1,u0=!1,kA=!1;$A=typeof window=="object",pA=typeof importScripts=="function",u0=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",kA=!$A&&!u0&&!pA;var dA,QA,F0,FA,KA,IA="";function l0(MA){return R.locateFile?R.locateFile(MA,IA):IA+MA}u0?(IA=pA?require$$0.dirname(IA)+"/":__dirname+"/",dA=function(MA,WA){var c0=Xt(MA);return c0?WA?c0:c0.toString():(FA||(FA=require$$0),KA||(KA=require$$0),MA=KA.normalize(MA),FA.readFileSync(MA,WA?null:"utf8"))},F0=function(MA){var WA=dA(MA,!0);return WA.buffer||(WA=new Uint8Array(WA)),De(WA.buffer),WA},process.argv.length>1&&process.argv[1].replace(/\\/g,"/"),process.argv.slice(2),oA.exports=R,R.inspect=function(){return"[Emscripten Module object]"}):kA?(typeof read!="undefined"&&(dA=function(MA){var WA=Xt(MA);return WA?Ne(WA):read(MA)}),F0=function(MA){var WA;return(WA=Xt(MA))?WA:typeof readbuffer=="function"?new Uint8Array(readbuffer(MA)):(De(typeof(WA=read(MA,"binary"))=="object"),WA)},typeof scriptArgs!="undefined"&&scriptArgs,typeof print!="undefined"&&(typeof console=="undefined"&&(console={}),console.log=print,console.warn=console.error=typeof printErr!="undefined"?printErr:print)):($A||pA)&&(pA?IA=self.location.href:typeof document!="undefined"&&document.currentScript&&(IA=document.currentScript.src),IA=IA.indexOf("blob:")!==0?IA.substr(0,IA.lastIndexOf("/")+1):"",dA=function(MA){try{var WA=new XMLHttpRequest;return WA.open("GET",MA,!1),WA.send(null),WA.responseText}catch(L){var c0=Xt(MA);if(c0)return Ne(c0);throw L}},pA&&(F0=function(MA){try{var WA=new XMLHttpRequest;return WA.open("GET",MA,!1),WA.responseType="arraybuffer",WA.send(null),new Uint8Array(WA.response)}catch(L){var c0=Xt(MA);if(c0)return c0;throw L}}),QA=function(MA,WA,c0){var L=new XMLHttpRequest;L.open("GET",MA,!0),L.responseType="arraybuffer",L.onload=function(){if(L.status==200||L.status==0&&L.response)WA(L.response);else{var b0=Xt(MA);b0?WA(b0.buffer):c0()}},L.onerror=c0,L.send(null)}),R.print;var EA,At,j0=R.printErr||void 0;for(e0 in i0)i0.hasOwnProperty(e0)&&(R[e0]=i0[e0]);function Pt(MA,WA,c0,L){switch((c0=c0||"i8").charAt(c0.length-1)==="*"&&(c0="i32"),c0){case"i1":case"i8":Xg[MA>>0]=WA;break;case"i16":Wg[MA>>1]=WA;break;case"i32":Tt[MA>>2]=WA;break;case"i64":zg=[WA>>>0,(eg=WA,+Math.abs(eg)>=1?eg>0?(0|Math.min(+Math.floor(eg/4294967296),4294967295))>>>0:~~+Math.ceil((eg-+(~~eg>>>0))/4294967296)>>>0:0)],Tt[MA>>2]=zg[0],Tt[MA+4>>2]=zg[1];break;case"float":Og[MA>>2]=WA;break;case"double":bg[MA>>3]=WA;break;default:St("invalid type for setValue: "+c0)}}function Kt(MA,WA,c0){switch((WA=WA||"i8").charAt(WA.length-1)==="*"&&(WA="i32"),WA){case"i1":case"i8":return Xg[MA>>0];case"i16":return Wg[MA>>1];case"i32":case"i64":return Tt[MA>>2];case"float":return Og[MA>>2];case"double":return bg[MA>>3];default:St("invalid type for getValue: "+WA)}return null}i0=null,R.arguments&&R.arguments,R.thisProgram&&R.thisProgram,R.quit&&R.quit,R.wasmBinary&&(EA=R.wasmBinary),R.noExitRuntime&&R.noExitRuntime,typeof WebAssembly!="object"&&St("no native wasm support detected");var qt=!1;function De(MA,WA){MA||St("Assertion failed: "+WA)}var de,Xg,yg,Wg,Tt,Og,bg,Fe=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):void 0;function vr(MA,WA,c0){for(var L=WA+c0,b0=WA;MA[b0]&&!(b0>=L);)++b0;if(b0-WA>16&&MA.subarray&&Fe)return Fe.decode(MA.subarray(WA,b0));for(var K0="";WA>10,56320|1023&ut)}}else K0+=String.fromCharCode((31&J0)<<6|st)}else K0+=String.fromCharCode(J0)}return K0}function Sg(MA,WA){return MA?vr(yg,MA,WA):""}function kr(MA,WA){return MA%WA>0&&(MA+=WA-MA%WA),MA}function me(MA){de=MA,R.HEAP8=Xg=new Int8Array(MA),R.HEAP16=Wg=new Int16Array(MA),R.HEAP32=Tt=new Int32Array(MA),R.HEAPU8=yg=new Uint8Array(MA),R.HEAPU16=new Uint16Array(MA),R.HEAPU32=new Uint32Array(MA),R.HEAPF32=Og=new Float32Array(MA),R.HEAPF64=bg=new Float64Array(MA)}R.INITIAL_MEMORY;var jg,ve=[],ke=[],Gr=[],Ge=[];function br(){if(R.preRun)for(typeof R.preRun=="function"&&(R.preRun=[R.preRun]);R.preRun.length;)Nr(R.preRun.shift());Yg(ve)}function Sr(){Yg(ke)}function Yr(){Yg(Gr)}function Hr(){if(R.postRun)for(typeof R.postRun=="function"&&(R.postRun=[R.postRun]);R.postRun.length;)Ur(R.postRun.shift());Yg(Ge)}function Nr(MA){ve.unshift(MA)}function Ur(MA){Ge.unshift(MA)}ke.push({func:function(){Ue()}});var Vt=0,fg=null;function Mr(MA){Vt++,R.monitorRunDependencies&&R.monitorRunDependencies(Vt)}function Rr(MA){if(Vt--,R.monitorRunDependencies&&R.monitorRunDependencies(Vt),Vt==0&&fg){var WA=fg;fg=null,WA()}}function St(MA){throw R.onAbort&&R.onAbort(MA),j0(MA+=""),qt=!0,MA="abort("+MA+"). Build with -s ASSERTIONS=1 for more info.",new WebAssembly.RuntimeError(MA)}function be(MA,WA){return String.prototype.startsWith?MA.startsWith(WA):MA.indexOf(WA)===0}R.preloadedImages={},R.preloadedAudios={};var Se="data:application/octet-stream;base64,";function Zg(MA){return be(MA,Se)}var Lr="file://";function Ye(MA){return be(MA,Lr)}var eg,zg,It="data:application/octet-stream;base64,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CiASfnwgCSALfnwiEUKAgIAQfCIUQhqHfCIiQoCAgAh8IiNCGYd8IhkgGUKAgIAQfCIZQoCAgOAPg30+AgggACASIBh+IA0gDn58IAkgEH58IAwgHH58IAsgF358IBNCGod8IhMgE0KAgIAIfCITQoCAgPAPg30+AhwgACAMIBp+IAkgFX58IBAgFn58IAogD358IAsgDX58IBlCGod8IgogCkKAgIAIfCIKQoCAgPAPg30+AgwgACAQIBJ+IA0gDX58IA4gD358IAkgG358IAwgF358IAsgA6wiDX58IBNCGYd8IgsgC0KAgIAQfCILQoCAgOAPg30+AiAgACAgICFCgICA8A+DfSAeIB9CgICAYIN9IApCGYd8IgpCgICAEHwiD0IaiHw+AhQgACAKIA9CgICA4A+DfT4CECAAIA4gEH4gGCAdfnwgEiAcfnwgCSAXfnwgDCANfnwgC0Iah3wiCSAJQoCAgAh8IglCgICA8A+DfT4CJCAAICIgI0KAgIDwD4N9IBEgFEKAgIBgg30gCUIZh0ITfnwiCUKAgIAQfCIMQhqIfD4CBCAAIAkgDEKAgIDgD4N9PgIACxAAIAAzAAAgADEAAkIQhoQL8wICAn8BfgJAIAJFDQAgACACaiIDQQFrIAE6AAAgACABOgAAIAJBA0kNACADQQJrIAE6AAAgACABOgABIANBA2sgAToAACAAIAE6AAIgAkEHSQ0AIANBBGsgAToAACAAIAE6AAMgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBBGsgATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQQhrIAE2AgAgAkEMayABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkEQayABNgIAIAJBFGsgATYCACACQRhrIAE2AgAgAkEcayABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa0iBUIghiAFhCEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkEgayICQR9LDQALCyAACwkAIAAgATcAAAuCBAEDfyACQYAETwRAIAAgASACEAQaIAAPCyAAIAJqIQMCQCAAIAFzQQNxRQRAAkAgAkEBSARAIAAhAgwBCyAAQQNxRQRAIAAhAgwBCyAAIQIDQCACIAEtAAA6AAAgAUEBaiEBIAJBAWoiAiADTw0BIAJBA3ENAAsLAkAgA0F8cSIEQcAASQ0AIAIgBEFAaiIFSw0AA0AgAiABKAIANgIAIAIgASgCBDYCBCACIAEoAgg2AgggAiABKAIMNgIMIAIgASgCEDYCECACIAEoAhQ2AhQgAiABKAIYNgIYIAIgASgCHDYCHCACIAEoAiA2AiAgAiABKAIkNgIkIAIgASgCKDYCKCACIAEoAiw2AiwgAiABKAIwNgIwIAIgASgCNDYCNCACIAEoAjg2AjggAiABKAI8NgI8IAFBQGshASACQUBrIgIgBU0NAAsLIAIgBE8NAQNAIAIgASgCADYCACABQQRqIQEgAkEEaiICIARJDQALDAELIANBBEkEQCAAIQIMAQsgACADQQRrIgRLBEAgACECDAELIAAhAgNAIAIgAS0AADoAACACIAEtAAE6AAEgAiABLQACOgACIAIgAS0AAzoAAyABQQRqIQEgAkEEaiICIARNDQALCyACIANJBEADQCACIAEtAAA6AAAgAUEBaiEBIAJBAWoiAiADRw0ACwsgAAvsAQESfyACKAIEIQMgASgCBCEEIAIoAgghBSABKAIIIQYgAigCDCEHIAEoAgwhCCACKAIQIQkgASgCECEKIAIoAhQhCyABKAIUIQwgAigCGCENIAEoAhghDiACKAIcIQ8gASgCHCEQIAIoAiAhESABKAIgIRIgAigCJCETIAEoAiQhFCAAIAIoAgAgASgCAGo2AgAgACATIBRqNgIkIAAgESASajYCICAAIA8gEGo2AhwgACANIA5qNgIYIAAgCyAMajYCFCAAIAkgCmo2AhAgACAHIAhqNgIMIAAgBSAGajYCCCAAIAMgBGo2AgQLGAEBf0HEnAIoAgAiAARAIAARDgALEAIAC0ABA38gACABIAFB+ABqIgIQCyAAQShqIAFBKGoiAyABQdAAaiIEEAsgAEHQAGogBCACEAsgAEH4AGogASADEAsL7AEBEn8gAigCBCEDIAEoAgQhBCACKAIIIQUgASgCCCEGIAIoAgwhByABKAIMIQggAigCECEJIAEoAhAhCiACKAIUIQsgASgCFCEMIAIoAhghDSABKAIYIQ4gAigCHCEPIAEoAhwhECACKAIgIREg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czYCFCABIAUgEHM2AhAgASAEIA9zNgIMIAEgAyANczYCCCABIAAgC3M2AgQgASAWIBdzNgIACykBAX8jAEGAAWsiAiQAIAJBCGogARDoAiAAIAJBCGoQOSACQYABaiQACzIBAX8gACABIAFB+ABqIgIQCyAAQShqIAFBKGogAUHQAGoiARALIABB0ABqIAEgAhALC68CARN/IAEoAgQhDCAAKAIEIQMgASgCCCENIAAoAgghBCABKAIMIQ4gACgCDCEFIAEoAhAhDyAAKAIQIQYgASgCFCEQIAAoAhQhByABKAIYIREgACgCGCEIIAEoAhwhEiAAKAIcIQkgASgCICETIAAoAiAhCiABKAIkIRQgACgCJCELIABBACACayICIAAoAgAiFSABKAIAc3EgFXM2AgAgACALIAsgFHMgAnFzNgIkIAAgCiAKIBNzIAJxczYCICAAIAkgCSAScyACcXM2AhwgACAIIAggEXMgAnFzNgIYIAAgByAHIBBzIAJxczYCFCAAIAYgBiAPcyACcXM2AhAgACAFIAUgDnMgAnFzNgIMIAAgBCAEIA1zIAJxczYCCCAAIAMgAyAMcyACcXM2AgQLJAEBfyMAQSBrIgEkACABIAAQLSABQSAQZSEAIAFBIGokACAAC6YEAgp/Dn4gACgCJCEEIAAoAiAhBSAAKAIcIQYgACgCGCEHIAAoAhQhAyACQhBaBEAgAC0AUEVBGHQhCCAAKAIEIglBBWytIRkgACgCCCIKQQVsrSEXIAAoAgwiC0EFbK0hFSAAKAIQIgxBBWytIRMgDK0hGiALrSEYIAqtIRYgCa0hFCAANQIAIRIDQCABKAADQQJ2Qf///x9xIAdqrSINIBh+IAEoAABB////H3EgA2qtIg4gGn58IAEoAAZBBHZB////H3EgBmqtIg8gFn58IAEoAAlBBnYgBWqtIhAgFH58IAQgCGogASgADEEIdmqtIhEgEn58IA0gFn4gDiAYfnwgDyAUfnwgECASfnwgESATfnwgDSAUfiAOIBZ+fCAPIBJ+fCAQIBN+fCARIBV+fCANIBJ+IA4gFH58IA8gE358IBAgFX58IBEgF358IA0gE34gDiASfnwgDyAVfnwgECAXfnwgESAZfnwiDUIaiEL/////D4N8Ig5CGohC/////w+DfCIPQhqIQv////8Pg3wiEEIaiEL/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aiAFIAYQDCAJQQhqIAYQESAJQdAAaiAJQQhqQggQDCAAIAMgBCAHIAgQogEgCUHQAGogACAEEAwgCUEIaiAEEBEgCUHQAGogCUEIakIIEAwgCUHQAGogARAjIAlB0ABqQYACEAkgAgRAIAJCEDcDAAsgCUHQAmokAEEACygAIAJCgICAgBBaBEAQFAALIAAgASACIANCASAEQfCXAigCABEVABoLFgAgAELAACABIAJB6JcCKAIAEREAGgsyACAAIAIEfyACKAAABUEACzYCMCAAIAEoAAA2AjQgACABKAAENgI4IAAgASgACDYCPAs9ACAAAn8gAgRAIAAgAigAADYCMCACKAAEDAELIABBADYCMEEACzYCNCAAIAEoAAA2AjggACABKAAENgI8CxkAIAAgASACIANCASAEQeSXAigCABEVABoLKAEBfyMAQRBrIgAkACAAQQA6AA9BpgggAEEPakEAEAEaIABBEGokAAtqAQN/IwBBEGsiAyQAIANBADoAD0F/IQUgACABIAJB2JcCKAIAEQMARQRAA0AgAyAAIARqLQAAIAMtAA9yOgAPIARBAWoiBEEgRw0AC0EAIAMtAA9BAWtBCHZBAXFrIQULIANBEGokACAFCxMAIAAgAUHAB2xBoBtqIAIQ5gILEAAgAEIANwIAIABCADcCCAsdACAAEDggAEEoahAdIABB0ABqEB0gAEH4AGoQOAuAAgEIfwNAIAAgAmogASACQQN2ai0AACACQQdxdkEBcToAACACQQFqIgJBgAJHDQALA0AgBCIBQQFqIQQCQCAAIAFqIgYtAABFDQAgBCECQQEhBSABQf4BSw0AA0ACQCAAIAJqIgMsAAAiB0UNACAHIAV0IgcgBiwAACIIaiIJQQ9MBEAgBiAJOgAAIANBADoAAAwBCyAIIAdrIgNBcUgNAiAGIAM6AAADQCAAIAJqIgMtAABFBEAgA0EBOgAADAILIANBADoAACACQf8BSSEDIAJBAWohAiADDQALCyAFQQVLDQEgBUEBaiIFIAFqIgJBgAJJDQALCyAEQYACRw0ACwuVAQEEfyMAQTBrIgUkACAAIAFBKGoiAyABEBMgAEEoaiIEIAMgARAWIABB0ABqIgMgACACQShqEAsgBCAEIAIQCyAAQfgAaiIGIAJB+ABqIAFB+ABqEAsgACABQdAAaiACQdAA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CSACQYAIaiQAC/ADAQJ/IwAiAyEEIANBwANrQUBxIgMkACAARSABRXJFBEAgA0FAa0EAQQBBwAAQPhogA0E8aiABKAIwEAogA0FAayADQTxqQgQQGBogA0E8aiABKAIEEAogA0FAayADQTxqQgQQGBogA0E8aiABKAIsEAogA0FAayADQTxqQgQQGBogA0E8aiABKAIoEAogA0FAayADQTxqQgQQGBogA0E8akETEAogA0FAayADQTxqQgQQGBogA0E8aiACEAogA0FAayADQTxqQgQQGBogA0E8aiABKAIMEAogA0FAayADQTxqQgQQGBoCQCABKAIIIgJFDQAgA0FAayACIAE1AgwQGBogAS0AOEEBcUUNACABKAIIIAEoAgwQCSABQQA2AgwLIANBPGogASgCFBAKIANBQGsgA0E8akIEEBgaIAEoAhAiAgRAIANBQGsgAiABNQIUEBgaCyADQTxqIAEoAhwQCiADQUBrIANBPGpCBBAYGgJAIAEoAhgiAkUNACADQUBrIAIgATUCHBAYGiABLQA4QQJxRQ0AIAEoAhggASgCHBAJIAFBADYCHAsgA0E8aiABKAIkEAogA0FAayADQTxqQgQQGBogASgCICICBEAgA0FAayACIAE1AiQQGBoLIANBQGsgAEHAABA9GgsgBCQAC68BAQN/IwBBEGsiAiQAQWohAwJAIABFIAFFcg0AIAFBCnQiBCABbkGACEcNACAAQQwQICIBNgIAIAFFDQAgAUIANwIAQYCYAiACQQxqIAQQsgEiATYCAAJAAkAgAQRAIAJBADYCDAwBCyACKAIMIgENAQsgACgCABAZIABBADYCAAwBCyAAKAIAIAE2AgAgACgCACABNgIEIAAoAgAgBDYCCEEAIQMLIAJBEGokACADC4cBAQJ/IwBB0ABrIgMkAEFnIQICQCAARSABRXINACAAIAAoAhRBA3QQICICNgIEIAJFBEBBaiECDAELIAAgACgCEBC8ASICBEAgACABKAI4EIMBDAELIAMgASAAKAIkELsBIANBQGtBCBAJIAMgABC6ASADQcgAEAlBACECCyADQdAAaiQAIAILkwEBBH8jAEEgayICJAACQCAARQ0AIAAoAhxFDQAgAiABNgIQQQEhBANAIAIgAzoAGEEAIQFBACEFIAQEQANAIAJBADYCHCACIAIpAxg3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ACAAIAEgAiADrSAErUIghoQgBSAGEGoLFwAgACABIAKtIAOtQiCGhCAEIAUQuwILFgAgACABKQAANwAwIAAgASkACDcAOAsYACAAIAEgAiADrSAErUIghoQgBSAGEGsLEwAgACABrSACrUIghoQgAxCSAgsTACAAIAEgAq0gA61CIIaEEJMCCyEAIAAgASACrSADrUIghoQgBK0gBa1CIIaEIAYgBxCUAgsfACAAIAEgAq0gA61CIIaEIAStIAWtQiCGhCAGEIwBCy0AIAAgAa0gAq1CIIaEIAMgBK0gBa1CIIaEIAYgB60gCK1CIIaEIAkgChCVAgsXACAAIAEgAq0gA61CIIaEIAQgBRCzAgsSACAAIAEgAq0gA61CIIaEEDQLEgAgACABIAKtIAOtQiCGhBAlCxkAIAAgASACIAOtIAStQiCGhCAFIAYQlAELFgAgACABKQAANwAgIAAgASkACDcAKAsXACAAIAEgAq0gA61CIIaEIAQgBRC1AgsVACAAIAEgAq0gA61CIIaEIAQQtgILGQAgACABIAKtIAOtQiCGhCAEIAUgBhCVAQsXACAAIAEgAq0gA61CIIaEIAQgBRC4AgsbACAAIAEgAiADrSAErUIghoQgBSAGIAcQlgELGAAgACABIAIgA60gBK1CIIaEIAUgBhBoCxkAIAAgASACrSADrUIghoQgBCAFIAYQlwELFwAgACABIAKtIAOtQiCGhCAEIAUQuQILGwAgACABIAIgA60gBK1CIIaEIAUgBiAHEJgBCxgAIAAgASACIAOtIAStQiCGhCAFIAYQaQsVACAAIAEgAq0gA61CIIaEIAQQwAILFQAgACABIAKtIAOtQiCGhCAEEJoBCyUAIAAgASADIAStIAWtQiCGhCAGIAetIAitQiCGhCAJIAoQyQILJQAgACACIAOtIAStQiCGhCAFIAYgB60gCK1CIIaEIAkgChCcAQslACAAIAEgAiADrSAErUIghoQgBSAGrSAHrUIghoQgCSAKEMsCCycAIAAgASACIAMgBK0gBa1CIIaEIAYgB60gCK1CIIaEIAogCxCdAQslACAAIAEgAyAErSAFrUIghoQgBiAHrSAIrUIghoQgCSAKEM8CCyUAIAAgAiADrSAErUIghoQgBSAGIAetIAitQiCGhCAJIAoQngELJQAgACABIAMgBK0gBa1CIIaEIAYgB60gCK1CIIaEIAkgChDQAgslACAAIAIgA60gBK1CIIaEIAUgBiAHrSAIrUIghoQgCSAKEJ8BCyUAIAAgASACIAOtIAStQiCGhCAFIAatIAetQiCGhCAJIAoQ0QILJwAgACABIAIgAyAErSAFrUIghoQgBiAHrSAIrUIghoQgCiALEKABCyUAIAAgASACIAOtIAStQiCGhCAFIAatIAetQiCGhCAJIAoQ0gILJwAgACABIAIgAyAErSAFrUIghoQgBiAHrSAIrUIghoQgCiALEKEBCwQAQQoLBgBBspcCCwsAIAAgASACEIICCw0AIAAgASACIAMQgwILCAAgABA1QQALCQAgACABEIgCCwsAIAAgASACEIoBCwUAQb9/CwUAQdABCywBAX8jAEFAaiIDJAAgACADECcgASADQsAAIAJBARCHASEAIANBQGskACAACy4BAX8jAEFAaiIEJAAgACAEECcgASACIARCwAAgA0EBEIkBIQAgBEFAayQAIAALewEBfwJAAkACQCADQsAAVA0AIANCQHwiA0K/////D1YNACACIAJBQGsiBSADIAQQhgFFDQEgAEUNACAAQQAgA6cQEBoLQX8hAiABRQ0BIAFCADcDAEF/DwsgAQRAIAEgAzcDAAtBACECIABFDQAgACAFIAOnEEcaCyACC3MBAX8jAEEQayIFJAAgACAFQQhqIABBQGsgAiADpyICEEcgAyAEEIgBGgJAIAUpAwhCwABSBEAgAQRAIAFCADcDAAsgAEEAIAJBQGsQEBpBfyEADAELQQAhACABRQ0AIAEgA0JAfTcDAAsgBUEQaiQAIAALbQEBfyMAQUBqIgIkACACIAFCIBA0GiACIAItAABB+AFxOgAAIAIgAi0AH0E/cUHAAHI6AB8gACACKQMQNwAQIAAgAikDCDcACCAAIAIpAwA3AAAgACACKQMYNwAYIAJBwAAQCSACQUBrJABBAAuGAQECfyMAQYACayICJABBfyEDAkAgARB1DQAgAkHgAGogARCuAQ0AIAJB4ABqEOUCRQ0AIAIQHSACIAIgAkGIAWoiARAWIAJBMGoQHSACQTBqIAJBMGogARATIAIgAhA6IAJBMGogAkEwaiACEAsgACACQTBqEC1BACEDCyACQYACaiQAIAMLLAEBfyMAQSBrIgIkACACQSAQHyAAIAEg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ASACQhB9IAMgBBBqBSAFCwslACACQvD///8PWgRAEBQACyAAQRBqIAAgASACIAMgBBBrGkEACwsAIAAgASACEL8CCy8AIAFCgICAgBBaBEBBACIAQYQOaiAAQZgOakHFASAAQbIOahAAAAsgACABpxAfCzMBAn8jAEEgayIDJABBfyEEIAMgAiABEKgBRQRAIABB4JUCIAMQbSEECyADQSBqJAAgBAtWAQF/IwBBQGoiAyQAIAMgAkIgEDQaIAEgAykDGDcAGCABIAMpAxA3ABAgASADKQMINwAIIAEgAykDADcAACADQcAAEAkgACABEHIhACADQUBrJAAgAAtAAQF/IwBBIGsiBCQAIAQgASACIAMQmgEaIAAgBBCAASEBIAQgAEEgEEUhAyAEQSBqJAAgA0F/IAEgACAERhtyC0MBAX8jAEFAaiICJAAgACACEMICIAEgAikDGDcAGCABIAIpAxA3ABAgASACKQMINwAIIAEgAikDADcAACACQUBrJAALNwEBfyMAQUBqIgIkACAAIAIQJyAAQdABaiIAIAJCwAAQHBogACABECcgAkHAABAJIAJBQGskAAvhAQEDfyMAQcABayICJAAgABA1IAJBQGtBNkGAARAQGiACIAEtAABBNnM6AEBBASEDA0AgAkFAayADaiIEIAQtAAAgASADai0AAHM6AAAgA0EBaiIDQSBHDQALIAAgAkFAa0KAARAcGiAAQdABaiIAEDUgAkFAa0HcAEGAARAQGiACIAEtAABB3ABzOgBAQQEhAwNAIAJBQGsgA2oiBCAELQAAIAEgA2otAABzOgAAIANBAWoiA0EgRw0ACyAAIAJBQGtCgAEQHBogAkFAa0GAARAJIAJBwAAQCSACQcABaiQAC2YBAX4gACkAACIBQjiGIAFCKIZCgICAgICAwP8Ag4QgAUIYhkKAgICAgOA/gyABQgiGQoCAgIDwH4OEhCABQgiIQoCAgPgPgyABQhiIQoCA/AeDhCABQiiIQoD+A4MgAUI4iISEhAsmAQJ/AkBBpJwCKAIAIgBFDQAgACgCFCIARQ0AIAARAQAhAQsgAQtkACAAIAFCKIZCgICAgICAwP8AgyABQjiGhCABQhiGQoCAgICA4D+DIAFCCIZCgICAgPAfg4SEIAFCCIhCgICA+A+DIAFCGIhCgID8B4OEIAFCKIhCgP4D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BiADakENEAggDXMiDSAGakESEAggBXMhBSAaQRJJIRAgGkECaiEaIBANAAsgACACQeXwwYsGahAKIABBBGogByASahAKIABBCGogCCATahAKIABBDGogESAUahAKIABBEGogCSAVahAKIABBFGogDkHuyIGZA2oQCiAAQRhqIAogG2oQCiAAQRxqIAsgHGoQCiAAQSBqIAwgHWoQCiAAQSRqIA8gHmoQCiAAQShqIAFBstqIywdqEAogAEEsaiAEIBZqEAogAEEwaiADIBdqEAogAEE0aiAGIBhqEAogAEE4aiANIBlqEAogAEE8aiAFQfTKgdkGahAKCzoBAX8jAEHgAGsiAyQAIANBMGogAiABEBMgAyACIAEQFiADIAMQOiAAIANBMGogAxALIANB4ABqJAALdgECfyMAQdABayICJAADQCAAIANqIAEgA2otAAA6AAAgA0EBaiIDQSBHDQALIAAgAC0AAEH4AXE6AAAgACAALQAfQT9xQcAAcjoAHyACQTBqIAAQdiACIAJB2ABqIAJBgAFqENwCIAAgAhAtIAJB0AFqJABBAAu9AwEMfiABNAIEIQIgATQCCCEDIAE0AgwhBCABNAIQIQUgATQCFCEGIAE0AhghByABNAIAIQsgACABNAIkQsK2B34iCCAIQoCAgAh8IghCgICA8A+DfSABNAIgQsK2B34gATQCHELCtgd+IglCgICACHwiCkIZh3wiDEKAgIAQfCINQhqIfD4CJCAAIAwgDUKAgIDgD4N9PgIgIAAgCSAKQoCAgPAPg30gB0LCtgd+IAZCwrYHfiIGQoCAgAh8IgdCGYd8IglCgICAEHwiCkIaiHw+AhwgACAJIApCgICA4A+DfT4CGCAAIAYgB0KAgIDwD4N9IAVCwrYHfiAEQsK2B34iBEKAgIAIfCIFQhmHfCIGQoCAgBB8IgdCGoh8PgIUIAAgBiAHQoCAgOAPg30+AhAgACAEIAVCgICA8A+DfSADQsK2B34gAkLCtgd+IgJCgICACHwiA0IZh3wiBEKAgIAQfCIFQhqIfD4CDCAAIAQgBUKAgIDgD4N9PgIIIAAgAiADQoCAgPAPg30gCEIZh0ITfiALQsK2B358IgJCgICAEHwiA0IaiHw+AgQgACACIANCgICA4A+DfT4CAAvcAQEFfyMAQRBrIgNBADYACyADQQA2AggDQCAAIAJqLQAAIQRBACEBA0AgA0EIaiABaiIFIAUtAAAgAUEFdEGgjQJqIAJqLQAAIARzcjoAACABQQFqIgFBB0cNAAsgAkEBaiICQR9HDQALIAAtAB9B/wBxIQJBACEAQQAhAQNAIANBCGogAWoiBCAELQAAIAIgAUEFdEG/jQJqLQAAc3I6AAAgAUEBaiIBQQdHDQALQQAhAQNAIANBCGogAGotAABBAWsgAXIhASAAQQFqIgBBB0cNAAsgAUEIdkEBcQvcBAEDfyMAQdACayIDJABBfyEEIAIQ3wJFBEBBACEEA0AgACAEaiABIARqLQAAOgAAIARBAWoiBEEgRw0ACyAAIAAtAABB+AFxOgAAIAAgAC0AH0E/cUHAAHI6AB8gA0GgAmogAhB7IANB8AFqEB0gA0HAAWoQOCADQZABaiADQaACahAsIANB4ABqEB1B/gEhAkEAIQQDQCADQfABaiADQZABaiAAIAIiBUEDdmotAAAgAkEHcXZBAXEiASAEcyIEEE4gA0HAAWogA0HgAGogBBBOIAJBAWshAiADQTBqIANBkAFqIANB4ABqEBYgAyADQfABaiADQcABahAWIANB8AFqIANB8AFqIANBwAFqEBMgA0HAAWogA0GQAWogA0HgAGoQEyADQeAAaiADQTBqIANB8AFqEAsgA0HAAWogA0HAAWogAxALIANBMGogAxAOIAMgA0HwAWoQDiADQZABaiADQeAAaiADQcABahATIANBwAFqIANB4ABqIANBwAFqEBYgA0HwAWogAyADQTBqEAsgAyADIANBMGoQFiADQcABaiADQcABahAOIANB4ABqIAMQ3gIgA0GQAWogA0GQAWoQDiADQTBqIANBMGogA0HgAGoQEyADQeAAaiADQaACaiADQcABahALIANBwAFqIAMgA0EwahALIAEhBCAFDQALIANB8AFqIANBkAFqIAEQTiADQcABaiADQeAAaiABEE4gA0HAAWogA0HAAWoQOiADQfABaiADQfABaiADQcABahALIAAgA0HwAWoQLUEAIQQLIANB0AJqJAAgBAtUAQV/QSAhAUEBIQIDQCAAIAFBAWsiAWotAAAiBCABQYAbai0AACIFa0EIdSACcSADQf8BcXIhAyAEIAVzQf//A2pBCHYgAnEhAiABDQALIANBAEcL6B4BOn4gARAPIRIg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CiAAIAtC////AIMgBEIVh3wiBkIKiDwAESAAIAZCAog8ABAgACAEQv///wCDIgdCAYYgBUIUiIQ8AA0gACAMQv///wCDIAZCFYd8IgRCDYg8ABQgACAEQgWIPAATIAAgBkL///8AgyIFQgaGIAdCD4iEPAAPIAAgDkL///8AgyAEQhWHfCIGPAAVIAAgBEIDhiAFQhKIhDwAEiAAIAZCCIg8ABYgACAPQv///wCDIAZCFYd8IgRCC4g8ABkgACAEQgOIPAAYIAAgEEL///8AgyAEQhWHfCIFQgaIPAAbIAAgBkIQiEIfgyAEQv///wCDIgRCBYaEPAAXIAAgDUL///8AgyAFQhWHfCIGQhGIPAAfIAAgBkIJiDwAHiAAIAZCAYg8AB0gACAFQv///wCDIgVCAoYgBEITiIQ8ABogACAGQgeGIAVCDoiEPAAcC1IBA38gAC0AH0F/c0H/AHEhAUEeIQIDQCABIAAgAmotAABBf3NyIQEgAkEBayIDIQIgAw0ACyABQf8BcUEBa0HsASAALQAAa3FBCHZBf3NBAXELjAQBAn8jAEHgDWsiAiQAIAJB4ANqIAEQGyACQcACaiABEE8gAiACQcACahAVIAJBwAJqIAIgAkHgA2oQGiACQaABaiACQcACahAVIAJBgAVqIgEgAkGgAWoQGyACQcACaiACIAEQGiACQaABaiACQcACahAVIAJBoAZqIgEgAkGgAWoQGyACQcACaiACIAEQGiACQaABaiACQcACahAVIAJBwAdqIgEgAkGgAWoQGyACQcACaiACIAEQGiACQaABaiACQcACahAVIAJB4AhqIgEgAkGgAWoQGyACQcACaiACIAEQGiACQaABaiACQcACahAVIAJBgApqIgEgAkGgAWoQGyACQcACaiACIAEQGiACQaABaiACQcACahAVIAJBoAtqIgEgAkGgAWoQGyACQcACaiACIAEQGiACQaABaiACQcACahAVIAJBwAxqIAJBoAFqEBsgABCrAUH8ASEBA0AgAkHAAmogABBPAkAgASIDQaCLAmosAAAiAUEBTgRAIAJBoAFqIAJBwAJqEBUgAkHAAmogAkGgAWogAkHgA2ogAUH+AXFBAXZBoAFsahAaDAELIAFBf0oNACACQaABaiACQcACahAVIAJBwAJqIAJBoAFqIAJB4ANqQQAgAWtB/gFx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/////////3/t////////////////////////////////////////f+7///////////////////////////////////////9/7dP1XBpjEljWnPei3vneFABBnxsL/PABEIU7jAG98ST/+CXDAWDcNwC3TD7/w0I9ADJMpAHhpEz/TD2j/3U+HwBRkUD/dkEOAKJz1v8Gii4AfOb0/wqKjwA0GsIAuPRMAIGPKQG+9BP/e6p6/2KBRAB51ZMAVmUe/6FnmwCMWUP/7+W+AUMLtQDG8In+7kW8/+pxPP8l/zn/RbK2/oDQswB2Gn3+AwfW//EyTf9Vy8X/04f6/xkwZP+71bT+EVhpAFPRngEFc2IABK48/qs3bv/ZtRH/FLyqAJKcZv5X1q7/cnqbAeksqgB/CO8B1uzqAK8F2wAxaj3/BkLQ/wJqbv9R6hP/12vA/0OX7gATKmz/5VVxATJEh/8RagkAMmcB/1ABqAEjmB7/EKi5AThZ6P9l0vwAKfpHAMyqT/8OLu//UE3vAL3WS/8RjfkAJlBM/75VdQBW5KoAnNjQAcPPpP+WQkz/r+EQ/41QYgFM2/IAxqJyAC7amACbK/H+m6Bo/7IJ/P5kbtQADgWnAOnvo/8cl50BZZIK//6eRv5H+eQAWB4yAEQ6oP+/GGgBgUKB/8AyVf8Is4r/JvrJAHNQoACD5nEAfViTAFpExwD9TJ4AHP92AHH6/gBCSy4A5torAOV4ugGURCsAiHzuAbtrxf9UNfb/M3T+/zO7pQACEa8AQlSgAfc6HgAjQTX+Rey/AC2G9QGje90AIG4U/zQXpQC61kcA6bBgAPLvNgE5WYoAUwBU/4igZABcjnj+aHy+ALWxPv/6KVUAmIIqAWD89gCXlz/+74U+ACA4nAAtp73/joWzAYNW0wC7s5b++qoO/0RxFf/eujv/QgfxAUUGSABWnGz+N6dZAG002/4NsBf/xCxq/++VR/+kjH3/n60BADMp5wCRPiEAim9dAblTRQCQcy4AYZcQ/xjkGgAx2eIAcUvq/sGZDP+2MGD/Dg0aAIDD+f5FwTsAhCVR/n1qPADW8KkBpONCANKjTgAlNJcAY00aAO6c1f/VwNEBSS5UABRBKQE2zk8AyYOS/qpvGP+xITL+qybL/073dADR3ZkAhYCyATosGQDJJzsBvRP8ADHl0gF1u3UAtbO4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ANW7ff/oLjz/vnQq/peyE/8zPu3+zOzBAMLoPACsIp3/vRC4/mcDX/+N6ST+KRkL/xXDpgB29S0AQ9WV/58MEv+7pOMBoBkFAAxOwwErxeEAMI4p/sSbPP/fxxIBkYicAPx1qf6R4u4A7xdrAG21vP/mcDH+Sart/+e34/9Q3BQAwmt/AX/NZQAuNMUB0qsk/1gDWv84l40AYLv//ypOyAD+RkYB9H2oAMxEigF810YAZkLI/hE05AB13I/+y/h7ADgSrv+6l6T/M+jQAaDkK//5HRkBRL4/AA0AAAAA/wAAAAD1AAAAAAAA+wAAAAAAAP0AAAAA8wAAAAAHAAAAAAADAAAAAPMAAAAABQAAAAAAAAAACwAAAAAACwAAAADzAAAAAAAA/QAAAAAA/wAAAAADAAAAAPUAAAAAAAAADwAAAAAA/wAAAAD/AAAAAAcAAAAABQBBnI0CCwEBAEHAjQILAQEAQeCNAgugAeDrenw7QbiuFlbj+vGfxGraCY3rnDKx/YZiBRZfSbgAX5yVvKNQjCSx0LFVnIPvWwREXMRYHI6G2CJO3dCfEVfs////////////////////////////////////////f+3///////////////////////////////////////9/7v///////////////////////////////////////38AQaCPAgvBBQjJvPNn5glqO6fKhIWuZ7sr+JT+cvNuPPE2HV869U+l0YLmrX9SDlEfbD4rjGgFm2u9Qfur2YMfeSF+ExnN4FsirijXmC+KQs1l7yORRDdxLztN7M/7wLW824mBpdu16Ti1SPNbwlY5GdAFtvER8VmbTxmvpII/khiBbdrVXhyrQgIDo5iqB9i+b3BFAVuDEoyy5E6+hTEk4rT/1cN9DFVviXvydF2+crGWFjv+sd6ANRLHJacG3JuUJmnPdPGbwdJK8Z7BaZvk4yVPOIZHvu+11YyLxp3BD2WcrHfMoQwkdQIrWW8s6S2D5KZuqoR0StT7Qb3cqbBctVMRg9qI+Xar32buUlE+mBAytC1txjGoPyH7mMgnA7DkDu++x39Zv8KPqD3zC+DGJacKk0eRp9VvggPgUWPKBnBuDgpnKSkU/C/SRoUKtycmySZcOCEbLu0qxFr8bSxN37OVnRMNOFPeY6+LVHMKZaiydzy7Cmp25q7tRy7JwoE7NYIUhSxykmQD8Uyh6L+iATBCvEtmGqiRl/jQcItLwjC+VAajUWzHGFLv1hnoktEQqWVVJAaZ1iogcVeFNQ70uNG7MnCgahDI0NK4FsGkGVOrQVEIbDcemeuO30x3SCeoSJvhtbywNGNaycWzDBw5y4pB40qq2E5z42N3T8qcW6O4stbzby5o/LLvXe6Cj3RgLxdDb2OleHKr8KEUeMiE7DlkGggCx4woHmMj+v++kOm9gt7rbFCkFXnGsvej+b4rU3Lj8nhxxpxhJurOPifKB8LAIce4htEe6+DN1n3a6njRbu5/T331um8Xcqpn8AammMiixX1jCq4N+b4EmD8RG0ccEzULcRuEfQQj9XfbKJMkx0B7q8oyvL7JFQq+njxMDRCcxGcdQ7ZCPsu+1MVMKn5l/Jwpf1ns+tY6q2/LXxdYR0qMGURsgABB8JUCC4UBYjY0X3BvcyA8PSBiNjRfbGVuAHNvZGl1bS9jb2RlY3MuYwBzb2RpdW1fYmluMmJhc2U2NAAkYXJnb24yaWQAJGFyZ29uMmkAJHY9ACRtPQAsdD0ALHA9ACRhcmdvbjJpZCR2PQAkYXJnb24yaSR2PQAkYXJnb24yaWQkACRhcmdvbjJpJABBkJcCCyhTaWdFZDI1NTE5IG5vIEVkMjU1MTkgY29sbGlzaW9ucwEAMS4wLjE4AEG8lwILOVCOUAAAQAAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQ==";function He(MA){try{if(MA==It&&EA)return new Uint8Array(EA);var WA=Xt(MA);if(WA)return WA;if(F0)return F0(MA);throw"both async and sync fetching of the wasm failed"}catch(c0){St(c0)}}function xr(){if(!EA&&($A||pA)){if(typeof fetch=="function"&&!Ye(It))return fetch(It,{credentials:"same-origin"}).then(function(MA){if(!MA.ok)throw"failed to load wasm binary file at '"+It+"'";return MA.arrayBuffer()}).catch(function(){return He(It)});if(QA)return new Promise(function(MA,WA){QA(It,function(c0){MA(new Uint8Array(c0))},WA)})}return Promise.resolve().then(function(){return He(It)})}function Jr(){var MA={a:tB};function WA(b0,K0){var J0=b0.exports;R.asm=J0,me((At=R.asm.g).buffer),jg=R.asm.h,Rr()}function c0(b0){WA(b0.instance)}function L(b0){return xr().then(function(K0){return WebAssembly.instantiate(K0,MA)}).then(b0,function(K0){j0("failed to asynchronously prepare wasm: "+K0),St(K0)})}if(Mr(),R.instantiateWasm)try{return R.instantiateWasm(MA,WA)}catch(b0){return j0("Module.instantiateWasm callback failed with error: "+b0),!1}return EA||typeof WebAssembly.instantiateStreaming!="function"||Zg(It)||Ye(It)||typeof fetch!="function"?L(c0):fetch(It,{credentials:"same-origin"}).then(function(b0){return WebAssembly.instantiateStreaming(b0,MA).then(c0,function(K0){return j0("wasm streaming compile failed: "+K0),j0("falling back to ArrayBuffer instantiation"),L(c0)})}),{}}Zg(It)||(It=l0(It));var Pr={1024:function(){return R.getRandomValue()},1062:function(){if(R.getRandomValue===void 0)try{var MA=typeof window=="object"?window:self,WA=MA.crypto!==void 0?MA.crypto:MA.msCrypto,c0=function(){var K0=new Uint32Array(1);return WA.getRandomValues(K0),K0[0]>>>0};c0(),R.getRandomValue=c0}catch{try{var L=require("crypto"),b0=function(){var J0=L.randomBytes(4);return(J0[0]<<24|J0[1]<<16|J0[2]<<8|J0[3])>>>0};b0(),R.getRandomValue=b0}catch{throw"No secure random number generator found"}}}};function Yg(MA){for(;MA.length>0;){var WA=MA.shift();if(typeof WA!="function"){var c0=WA.func;typeof c0=="number"?WA.arg===void 0?jg.get(c0)():jg.get(c0)(WA.arg):c0(WA.arg===void 0?null:WA.arg)}else WA(R)}}function Kr(MA,WA,c0,L){St("Assertion failed: "+Sg(MA)+", at: "+[WA?Sg(WA):"unknown filename",c0,L?Sg(L):"unknown function"])}function qr(){St()}function Tr(MA,WA,c0){var L=zr(WA,c0);return Pr[MA].apply(null,L)}function Vr(MA,WA,c0){yg.copyWithin(MA,WA,WA+c0)}function Xr(){return yg.length}function Wr(MA){try{return At.grow(MA-de.byteLength+65535>>>16),me(At.buffer),1}catch{}}function Or(MA){MA>>>=0;var WA=Xr(),c0=2147483648;if(MA>c0)return!1;for(var L=1;L<=4;L*=2){var b0=WA*(1+.2/L);if(b0=Math.min(b0,MA+100663296),Wr(Math.min(c0,kr(Math.max(16777216,MA,b0),65536))))return!0}return!1}function jr(MA){return Tt[Me()>>2]=MA,MA}function Zr(MA){switch(MA){case 30:return 16384;case 85:return 131072;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:case 80:case 81:case 79:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return typeof navigator=="object"&&navigator.hardwareConcurrency||1}return jr(28),-1}var $g=[];function zr(MA,WA){var c0;for($g.length=0,WA>>=2;c0=yg[MA++];){var L=c0<105;L&&1&WA&&WA++,$g.push(L?bg[WA++>>1]:Tt[WA]),++WA}return $g}function Ne(MA){for(var WA=[],c0=0;c0255&&(L&=255),WA.push(String.fromCharCode(L))}return WA.join("")}var $r=typeof atob=="function"?atob:function(MA){var WA,c0,L,b0,K0,J0,st="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",Ft="",ut=0;MA=MA.replace(/[^A-Za-z0-9\+\/\=]/g,"");do WA=st.indexOf(MA.charAt(ut++))<<2|(b0=st.indexOf(MA.charAt(ut++)))>>4,c0=(15&b0)<<4|(K0=st.indexOf(MA.charAt(ut++)))>>2,L=(3&K0)<<6|(J0=st.indexOf(MA.charAt(ut++))),Ft+=String.fromCharCode(WA),K0!==64&&(Ft+=String.fromCharCode(c0)),J0!==64&&(Ft+=String.fromCharCode(L));while(ut0||(br(),Vt>0||(R.setStatus?(R.setStatus("Running..."),setTimeout(function(){setTimeout(function(){R.setStatus("")},1),WA()},1)):WA()))}if(R._malloc=function(){return(R._malloc=R.asm.Bc).apply(null,arguments)},R._free=function(){return(R._free=R.asm.Cc).apply(null,arguments)},R.setValue=Pt,R.getValue=Kt,R.UTF8ToString=Sg,fg=function MA(){Hg||Ae(),Hg||(fg=MA)},R.run=Ae,R.preInit)for(typeof R.preInit=="function"&&(R.preInit=[R.preInit]);R.preInit.length>0;)R.preInit.pop()();Ae()}).catch(function(){return PA.useBackupModule()}),vA}typeof J.nodeName!="string"?GA(J):sA.libsodium=GA(sA.libsodium_mod||(sA.commonJsStrict={}))})(commonjsGlobal)})(libsodium,libsodium.exports);(function(oA){(function(J){function sA(uA,vA){var P,PA=vA.ready.then(function(){function d(){if(P._sodium_init()!==0)throw new Error("libsodium was not correctly initialized.");for(var q=["crypto_aead_chacha20poly1305_decrypt","crypto_aead_chacha20poly1305_decrypt_detached","crypto_aead_chacha20poly1305_encrypt","crypto_aead_chacha20poly1305_encrypt_detached","crypto_aead_chacha20poly1305_ietf_decrypt","crypto_aead_chacha20poly1305_ietf_decrypt_detached","crypto_aead_chacha20poly1305_ietf_encrypt","crypto_aead_chacha20poly1305_ietf_encrypt_detached","crypto_aead_chacha20poly1305_ietf_keygen","crypto_aead_chacha20poly1305_keygen","crypto_aead_xchacha20poly1305_ietf_decrypt","crypto_aead_xchacha20poly1305_ietf_decrypt_detached","crypto_aead_xchacha20poly1305_ietf_encrypt","crypto_aead_xchacha20poly1305_ietf_encrypt_detached","crypto_aead_xchacha20poly1305_ietf_keygen","crypto_auth","crypto_auth_hmacsha256","crypto_auth_hmacsha256_keygen","crypto_auth_hmacsha256_verify","crypto_auth_hmacsha512","crypto_auth_hmacsha512_keygen","crypto_auth_hmacsha512_verify","crypto_auth_keygen","crypto_auth_verify","crypto_box_beforenm","crypto_box_curve25519xchacha20poly1305_keypair","crypto_box_curve25519xchacha20poly1305_seal","crypto_box_curve25519xchacha20poly1305_seal_open","crypto_box_detached","crypto_box_easy","crypto_box_easy_afternm","crypto_box_keypair","crypto_box_open_detached","crypto_box_open_easy","crypto_box_open_easy_afternm","crypto_box_seal","crypto_box_seal_open","crypto_box_seed_keypair","crypto_core_ed25519_add","crypto_core_ed25519_from_hash","crypto_core_ed25519_from_uniform","crypto_core_ed25519_is_valid_point","crypto_core_ed25519_random","crypto_core_ed25519_scalar_add","crypto_core_ed25519_scalar_complement","crypto_core_ed25519_scalar_invert","crypto_core_ed25519_scalar_mul","crypto_core_ed25519_scalar_negate","crypto_core_ed25519_scalar_random","crypto_core_ed25519_scalar_reduce","crypto_core_ed25519_scalar_sub","crypto_core_ed25519_sub","crypto_core_ristretto255_add","crypto_core_ristretto255_from_hash","crypto_core_ristretto255_is_valid_point","crypto_core_ristretto255_random","crypto_core_ristretto255_scalar_add","crypto_core_ristretto255_scalar_complement","crypto_core_ristretto255_scalar_invert","crypto_core_ristretto255_scalar_mul","crypto_core_ristretto255_scalar_negate","crypto_core_ristretto255_scalar_random","crypto_core_ristretto255_scalar_reduce","crypto_core_ristretto255_scalar_sub","crypto_core_ristretto255_sub","crypto_generichash","crypto_generichash_blake2b_salt_personal","crypto_generichash_final","crypto_generichash_init","crypto_generichash_keygen","crypto_generichash_update","crypto_hash","crypto_hash_sha256","crypto_hash_sha256_final","crypto_hash_sha256_init","crypto_hash_sha256_update","crypto_hash_sha512","crypto_hash_sha512_final","crypto_hash_sha512_init","crypto_hash_sha512_update","crypto_kdf_derive_from_key","crypto_kdf_keygen","crypto_kx_client_session_keys","crypto_kx_keypair","crypto_kx_seed_keypair","crypto_kx_server_session_keys","crypto_onetimeauth","crypto_onetimeauth_final","crypto_onetimeauth_init","crypto_onetimeauth_keygen","crypto_onetimeauth_update","crypto_onetimeauth_verify","crypto_pwhash","crypto_pwhash_scryptsalsa208sha256","crypto_pwhash_scryptsalsa208sha256_ll","crypto_pwhash_scryptsalsa208sha256_str","crypto_pwhash_scryptsalsa208sha256_str_verify","crypto_pwhash_str","crypto_pwhash_str_needs_rehash","crypto_pwhash_str_verify","crypto_scalarmult","crypto_scalarmult_base","crypto_scalarmult_ed25519","crypto_scalarmult_ed25519_base","crypto_scalarmult_ed25519_base_noclamp","crypto_scalarmult_ed25519_noclamp","crypto_scalarmult_ristretto255","crypto_scalarmult_ristretto255_base","crypto_secretbox_detached","crypto_secretbox_easy","crypto_secretbox_keygen","crypto_secretbox_open_detached","crypto_secretbox_open_easy","crypto_secretstream_xchacha20poly1305_init_pull","crypto_secretstream_xchacha20poly1305_init_push","crypto_secretstream_xchacha20poly1305_keygen","crypto_secretstream_xchacha20poly1305_pull","crypto_secretstream_xchacha20poly1305_push","crypto_secretstream_xchacha20poly1305_rekey","crypto_shorthash","crypto_shorthash_keygen","crypto_shorthash_siphashx24","crypto_sign","crypto_sign_detached","crypto_sign_ed25519_pk_to_curve25519","crypto_sign_ed25519_sk_to_curve25519","crypto_sign_ed25519_sk_to_pk","crypto_sign_ed25519_sk_to_seed","crypto_sign_final_create","crypto_sign_final_verify","crypto_sign_init","crypto_sign_keypair","crypto_sign_open","crypto_sign_seed_keypair","crypto_sign_update","crypto_sign_verify_detached","crypto_stream_chacha20","crypto_stream_chacha20_ietf_xor","crypto_stream_chacha20_ietf_xor_ic","crypto_stream_chacha20_keygen","crypto_stream_chacha20_xor","crypto_stream_chacha20_xor_ic","crypto_stream_keygen","crypto_stream_xchacha20_keygen","crypto_stream_xchacha20_xor","crypto_stream_xchacha20_xor_ic","randombytes_buf","randombytes_buf_deterministic","randombytes_close","randombytes_random","randombytes_set_implementation","randombytes_stir","randombytes_uniform","sodium_version_string"],Z=[At,j0,Pt,Kt,qt,De,de,Xg,yg,Wg,Tt,Og,bg,Fe,vr,Sg,kr,me,jg,ve,ke,Gr,Ge,br,Sr,Yr,Hr,Nr,Ur,Vt,fg,Mr,Rr,St,be,Se,Zg,Lr,Ye,eg,zg,It,He,xr,Jr,Pr,Yg,Kr,qr,Tr,Vr,Xr,Wr,Or,jr,Zr,$g,zr,Ne,$r,AB,Xt,Hg,tB,Ue,Me,Ae,MA,WA,c0,L,b0,K0,J0,st,Ft,ut,te,Ig,ge,ee,mt,gB,rg,ug,_g,Yt,eB,rB,Re,Le,pg,re,lg,Be,Wt,ae,Ng,xe,BB,Ug,aB,Je,ne,Pe,Ke,qe,nB,Te,iB,oB,CB,QB,EB,sB,Ot,wg,cB,hB,Ht,Ve,Xe,ie,yB,We,Bg,oe,_t,Oe,fB,IB,uB,Mg,_B,pB,lB,wB,DB,dB,FB,mB,vB,Ce,kB,je,GB,bB,jt,Rg,Ze,ze,$e,Qe,UA],nA=0;nA=240?(p=4,Z=!0):lA>=224?(p=3,Z=!0):lA>=192?(p=2,Z=!0):lA<128&&(p=1,Z=!0)}while(!Z);for(var r=p-(q.length-nA),u=0;u>8&-39)<<8|87+(S=d[T]>>>4)+(S-10>>8&-39),M+=String.fromCharCode(255&m)+String.fromCharCode(m>>>8);return M}var R={ORIGINAL:1,ORIGINAL_NO_PADDING:3,URLSAFE:5,URLSAFE_NO_PADDING:7};function i0(d){if(d==null)return R.URLSAFE_NO_PADDING;if(d!==R.ORIGINAL&&d!==R.ORIGINAL_NO_PADDING&&d!==R.URLSAFE&&d!=R.URLSAFE_NO_PADDING)throw new Error("unsupported base64 variant");return d}function $A(d,S){S=i0(S),d=EA(m,d,"input");var G,m=[],M=0|Math.floor(d.length/3),T=d.length-3*M,q=4*M+(T!==0?(2&S)==0?4:2+(T>>>1):0),Z=new dA(q+1),nA=QA(d);return m.push(nA),m.push(Z.address),P._sodium_bin2base64(Z.address,Z.length,nA,d.length,S)===0&&KA(m,"conversion failed"),Z.length=q,G=LA(Z.to_Uint8Array()),FA(m),G}function pA(d,S){var G=S||"uint8array";if(!u0(G))throw new Error(G+" output format is not available");if(d instanceof dA){if(G==="uint8array")return d.to_Uint8Array();if(G==="text")return LA(d.to_Uint8Array());if(G==="hex")return e0(d.to_Uint8Array());if(G==="base64")return $A(d.to_Uint8Array(),R.URLSAFE_NO_PADDING);throw new Error('What is output format "'+G+'"?')}if(typeof d=="object"){for(var m=Object.keys(d),M={},T=0;T>>24>>>8,q,nA);var u=pA(lA,M);return FA(T),u}function mt(d){var S=[];kA(d);var G=new dA(0|P._crypto_kdf_keybytes()),m=G.address;S.push(m),P._crypto_kdf_keygen(m);var M=pA(G,d);return FA(S),M}function gB(d,S,G,m){var M=[];kA(m),d=EA(M,d,"clientPublicKey");var T,q=0|P._crypto_kx_publickeybytes();d.length!==q&&IA(M,"invalid clientPublicKey length"),T=QA(d),M.push(T),S=EA(M,S,"clientSecretKey");var Z,nA=0|P._crypto_kx_secretkeybytes();S.length!==nA&&IA(M,"invalid clientSecretKey length"),Z=QA(S),M.push(Z),G=EA(M,G,"serverPublicKey");var p,lA=0|P._crypto_kx_publickeybytes();G.length!==lA&&IA(M,"invalid serverPublicKey length"),p=QA(G),M.push(p);var r=new dA(0|P._crypto_kx_sessionkeybytes()),u=r.address;M.push(u);var OA=new dA(0|P._crypto_kx_sessionkeybytes()),xA=OA.address;if(M.push(xA),(0|P._crypto_kx_client_session_keys(u,xA,T,Z,p))==0){var p0=pA({sharedRx:r,sharedTx:OA},m);return FA(M),p0}KA(M,"invalid usage")}function rg(d){var S=[];kA(d);var G=new dA(0|P._crypto_kx_publickeybytes()),m=G.address;S.push(m);var M=new dA(0|P._crypto_kx_secretkeybytes()),T=M.address;if(S.push(T),(0|P._crypto_kx_keypair(m,T))==0){var q={publicKey:pA(G,d),privateKey:pA(M,d),keyType:"x25519"};return FA(S),q}KA(S,"internal error")}function ug(d,S){var G=[];kA(S),d=EA(G,d,"seed");var m,M=0|P._crypto_kx_seedbytes();d.length!==M&&IA(G,"invalid seed length"),m=QA(d),G.push(m);var T=new dA(0|P._crypto_kx_publickeybytes()),q=T.address;G.push(q);var Z=new dA(0|P._crypto_kx_secretkeybytes()),nA=Z.address;if(G.push(nA),(0|P._crypto_kx_seed_keypair(q,nA,m))==0){var p={publicKey:pA(T,S),privateKey:pA(Z,S),keyType:"x25519"};return FA(G),p}KA(G,"internal error")}function _g(d,S,G,m){var M=[];kA(m),d=EA(M,d,"serverPublicKey");var T,q=0|P._crypto_kx_publickeybytes();d.length!==q&&IA(M,"invalid serverPublicKey length"),T=QA(d),M.push(T),S=EA(M,S,"serverSecretKey");var Z,nA=0|P._crypto_kx_secretkeybytes();S.length!==nA&&IA(M,"invalid serverSecretKey length"),Z=QA(S),M.push(Z),G=EA(M,G,"clientPublicKey");var p,lA=0|P._crypto_kx_publickeybytes();G.length!==lA&&IA(M,"invalid clientPublicKey length"),p=QA(G),M.push(p);var r=new dA(0|P._crypto_kx_sessionkeybytes()),u=r.address;M.push(u);var OA=new dA(0|P._crypto_kx_sessionkeybytes()),xA=OA.address;if(M.push(xA),(0|P._crypto_kx_server_session_keys(u,xA,T,Z,p))==0){var p0=pA({sharedRx:r,sharedTx:OA},m);return FA(M),p0}KA(M,"invalid usage")}function Yt(d,S,G){var m=[];kA(G);var M=QA(d=EA(m,d,"message")),T=d.length;m.push(M),S=EA(m,S,"key");var q,Z=0|P._crypto_onetimeauth_keybytes();S.length!==Z&&IA(m,"invalid key length"),q=QA(S),m.push(q);var nA=new dA(0|P._crypto_onetimeauth_bytes()),p=nA.address;if(m.push(p),(0|P._crypto_onetimeauth(p,M,T,0,q))==0){var lA=pA(nA,G);return FA(m),lA}KA(m,"invalid usage")}function eB(d,S){var G=[];kA(S),l0(G,d,"state_address");var m=new dA(0|P._crypto_onetimeauth_bytes()),M=m.address;if(G.push(M),(0|P._crypto_onetimeauth_final(d,M))==0){var T=(P._free(d),pA(m,S));return FA(G),T}KA(G,"invalid usage")}function rB(d,S){var G=[];kA(S);var m=null;d!=null&&(m=QA(d=EA(G,d,"key")),d.length,G.push(m));var M=new dA(144).address;if((0|P._crypto_onetimeauth_init(M,m))==0){var T=M;return FA(G),T}KA(G,"invalid usage")}function Re(d){var S=[];kA(d);var G=new dA(0|P._crypto_onetimeauth_keybytes()),m=G.address;S.push(m),P._crypto_onetimeauth_keygen(m);var M=pA(G,d);return FA(S),M}function Le(d,S,G){var m=[];kA(G),l0(m,d,"state_address");var M=QA(S=EA(m,S,"message_chunk")),T=S.length;m.push(M),(0|P._crypto_onetimeauth_update(d,M,T))!=0&&KA(m,"invalid usage"),FA(m)}function pg(d,S,G){var m=[];d=EA(m,d,"hash");var M,T=0|P._crypto_onetimeauth_bytes();d.length!==T&&IA(m,"invalid hash length"),M=QA(d),m.push(M);var q=QA(S=EA(m,S,"message")),Z=S.length;m.push(q),G=EA(m,G,"key");var nA,p=0|P._crypto_onetimeauth_keybytes();G.length!==p&&IA(m,"invalid key length"),nA=QA(G),m.push(nA);var lA=(0|P._crypto_onetimeauth_verify(M,q,Z,0,nA))==0;return FA(m),lA}function re(d,S,G,m,M,T,q){var Z=[];kA(q),l0(Z,d,"keyLength"),(typeof d!="number"||(0|d)!==d||d<0)&&IA(Z,"keyLength must be an unsigned integer");var nA=QA(S=EA(Z,S,"password")),p=S.length;Z.push(nA),G=EA(Z,G,"salt");var lA,r=0|P._crypto_pwhash_saltbytes();G.length!==r&&IA(Z,"invalid salt length"),lA=QA(G),Z.push(lA),l0(Z,m,"opsLimit"),(typeof m!="number"||(0|m)!==m||m<0)&&IA(Z,"opsLimit must be an unsigned integer"),l0(Z,M,"memLimit"),(typeof M!="number"||(0|M)!==M||M<0)&&IA(Z,"memLimit must be an unsigned integer"),l0(Z,T,"algorithm"),(typeof T!="number"||(0|T)!==T||T<0)&&IA(Z,"algorithm must be an unsigned integer");var u=new dA(0|d),OA=u.address;if(Z.push(OA),(0|P._crypto_pwhash(OA,d,0,nA,p,0,lA,m,0,M,T))==0){var xA=pA(u,q);return FA(Z),xA}KA(Z,"invalid usage")}function lg(d,S,G,m,M,T){var q=[];kA(T),l0(q,d,"keyLength"),(typeof d!="number"||(0|d)!==d||d<0)&&IA(q,"keyLength must be an unsigned integer");var Z=QA(S=EA(q,S,"password")),nA=S.length;q.push(Z),G=EA(q,G,"salt");var p,lA=0|P._crypto_pwhash_scryptsalsa208sha256_saltbytes();G.length!==lA&&IA(q,"invalid salt length"),p=QA(G),q.push(p),l0(q,m,"opsLimit"),(typeof m!="number"||(0|m)!==m||m<0)&&IA(q,"opsLimit must be an unsigned integer"),l0(q,M,"memLimit"),(typeof M!="number"||(0|M)!==M||M<0)&&IA(q,"memLimit must be an unsigned integer");var r=new dA(0|d),u=r.address;if(q.push(u),(0|P._crypto_pwhash_scryptsalsa208sha256(u,d,0,Z,nA,0,p,m,0,M))==0){var OA=pA(r,T);return FA(q),OA}KA(q,"invalid usage")}function Be(d,S,G,m,M,T,q){var Z=[];kA(q);var nA=QA(d=EA(Z,d,"password")),p=d.length;Z.push(nA);var lA=QA(S=EA(Z,S,"salt")),r=S.length;Z.push(lA),l0(Z,G,"opsLimit"),(typeof G!="number"||(0|G)!==G||G<0)&&IA(Z,"opsLimit must be an unsigned integer"),l0(Z,m,"r"),(typeof m!="number"||(0|m)!==m||m<0)&&IA(Z,"r must be an unsigned integer"),l0(Z,M,"p"),(typeof M!="number"||(0|M)!==M||M<0)&&IA(Z,"p must be an unsigned integer"),l0(Z,T,"keyLength"),(typeof T!="number"||(0|T)!==T||T<0)&&IA(Z,"keyLength must be an unsigned integer");var u=new dA(0|T),OA=u.address;if(Z.push(OA),(0|P._crypto_pwhash_scryptsalsa208sha256_ll(nA,p,lA,r,G,0,m,M,OA,T))==0){var xA=pA(u,q);return FA(Z),xA}KA(Z,"invalid usage")}function Wt(d,S,G,m){var M=[];kA(m);var T=QA(d=EA(M,d,"password")),q=d.length;M.push(T),l0(M,S,"opsLimit"),(typeof S!="number"||(0|S)!==S||S<0)&&IA(M,"opsLimit must be an unsigned integer"),l0(M,G,"memLimit"),(typeof G!="number"||(0|G)!==G||G<0)&&IA(M,"memLimit must be an unsigned integer");var Z=new dA(0|P._crypto_pwhash_scryptsalsa208sha256_strbytes()).address;if(M.push(Z),(0|P._crypto_pwhash_scryptsalsa208sha256_str(Z,T,q,0,S,0,G))==0){var nA=P.UTF8ToString(Z);return FA(M),nA}KA(M,"invalid usage")}function ae(d,S,G){var m=[];kA(G),typeof d!="string"&&IA(m,"hashed_password must be a string"),d=JA(d+"\0"),T!=null&&d.length-1!==T&&IA(m,"invalid hashed_password length");var M=QA(d),T=d.length-1;m.push(M);var q=QA(S=EA(m,S,"password")),Z=S.length;m.push(q);var nA=(0|P._crypto_pwhash_scryptsalsa208sha256_str_verify(M,q,Z,0))==0;return FA(m),nA}function Ng(d,S,G,m){var M=[];kA(m);var T=QA(d=EA(M,d,"password")),q=d.length;M.push(T),l0(M,S,"opsLimit"),(typeof S!="number"||(0|S)!==S||S<0)&&IA(M,"opsLimit must be an unsigned integer"),l0(M,G,"memLimit"),(typeof G!="number"||(0|G)!==G||G<0)&&IA(M,"memLimit must be an unsigned integer");var Z=new dA(0|P._crypto_pwhash_strbytes()).address;if(M.push(Z),(0|P._crypto_pwhash_str(Z,T,q,0,S,0,G))==0){var nA=P.UTF8ToString(Z);return FA(M),nA}KA(M,"invalid usage")}function xe(d,S,G,m){var M=[];kA(m),typeof d!="string"&&IA(M,"hashed_password must be a string"),d=JA(d+"\0"),q!=null&&d.length-1!==q&&IA(M,"invalid hashed_password length");var T=QA(d),q=d.length-1;M.push(T),l0(M,S,"opsLimit"),(typeof S!="number"||(0|S)!==S||S<0)&&IA(M,"opsLimit must be an unsigned integer"),l0(M,G,"memLimit"),(typeof G!="number"||(0|G)!==G||G<0)&&IA(M,"memLimit must be an unsigned integer");var Z=(0|P._crypto_pwhash_str_needs_rehash(T,S,0,G))!=0;return FA(M),Z}function BB(d,S,G){var m=[];kA(G),typeof d!="string"&&IA(m,"hashed_password must be a string"),d=JA(d+"\0"),T!=null&&d.length-1!==T&&IA(m,"invalid hashed_password length");var M=QA(d),T=d.length-1;m.push(M);var q=QA(S=EA(m,S,"password")),Z=S.length;m.push(q);var nA=(0|P._crypto_pwhash_str_verify(M,q,Z,0))==0;return FA(m),nA}function Ug(d,S,G){var m=[];kA(G),d=EA(m,d,"privateKey");var M,T=0|P._crypto_scalarmult_scalarbytes();d.length!==T&&IA(m,"invalid privateKey length"),M=QA(d),m.push(M),S=EA(m,S,"publicKey");var q,Z=0|P._crypto_scalarmult_bytes();S.length!==Z&&IA(m,"invalid publicKey length"),q=QA(S),m.push(q);var nA=new dA(0|P._crypto_scalarmult_bytes()),p=nA.address;if(m.push(p),(0|P._crypto_scalarmult(p,M,q))==0){var lA=pA(nA,G);return FA(m),lA}KA(m,"weak public key")}function aB(d,S){var G=[];kA(S),d=EA(G,d,"privateKey");var m,M=0|P._crypto_scalarmult_scalarbytes();d.length!==M&&IA(G,"invalid privateKey length"),m=QA(d),G.push(m);var T=new dA(0|P._crypto_scalarmult_bytes()),q=T.address;if(G.push(q),(0|P._crypto_scalarmult_base(q,m))==0){var Z=pA(T,S);return FA(G),Z}KA(G,"unknown error")}function Je(d,S,G){var m=[];kA(G),d=EA(m,d,"n");var M,T=0|P._crypto_scalarmult_ed25519_scalarbytes();d.length!==T&&IA(m,"invalid n length"),M=QA(d),m.push(M),S=EA(m,S,"p");var q,Z=0|P._crypto_scalarmult_ed25519_bytes();S.length!==Z&&IA(m,"invalid p length"),q=QA(S),m.push(q);var nA=new dA(0|P._crypto_scalarmult_ed25519_bytes()),p=nA.address;if(m.push(p),(0|P._crypto_scalarmult_ed25519(p,M,q))==0){var lA=pA(nA,G);return FA(m),lA}KA(m,"invalid point or scalar is 0")}function ne(d,S){var G=[];kA(S),d=EA(G,d,"scalar");var m,M=0|P._crypto_scalarmult_ed25519_scalarbytes();d.length!==M&&IA(G,"invalid scalar length"),m=QA(d),G.push(m);var T=new dA(0|P._crypto_scalarmult_ed25519_bytes()),q=T.address;if(G.push(q),(0|P._crypto_scalarmult_ed25519_base(q,m))==0){var Z=pA(T,S);return FA(G),Z}KA(G,"scalar is 0")}function Pe(d,S){var G=[];kA(S),d=EA(G,d,"scalar");var m,M=0|P._crypto_scalarmult_ed25519_scalarbytes();d.length!==M&&IA(G,"invalid scalar length"),m=QA(d),G.push(m);var T=new dA(0|P._crypto_scalarmult_ed25519_bytes()),q=T.address;if(G.push(q),(0|P._crypto_scalarmult_ed25519_base_noclamp(q,m))==0){var Z=pA(T,S);return FA(G),Z}KA(G,"scalar is 0")}function Ke(d,S,G){var m=[];kA(G),d=EA(m,d,"n");var M,T=0|P._crypto_scalarmult_ed25519_scalarbytes();d.length!==T&&IA(m,"invalid n length"),M=QA(d),m.push(M),S=EA(m,S,"p");var q,Z=0|P._crypto_scalarmult_ed25519_bytes();S.length!==Z&&IA(m,"invalid p length"),q=QA(S),m.push(q);var nA=new dA(0|P._crypto_scalarmult_ed25519_bytes()),p=nA.address;if(m.push(p),(0|P._crypto_scalarmult_ed25519_noclamp(p,M,q))==0){var lA=pA(nA,G);return FA(m),lA}KA(m,"invalid point or scalar is 0")}function qe(d,S,G){var m=[];kA(G),d=EA(m,d,"scalar");var M,T=0|P._crypto_scalarmult_ristretto255_scalarbytes();d.length!==T&&IA(m,"invalid scalar length"),M=QA(d),m.push(M),S=EA(m,S,"element");var q,Z=0|P._crypto_scalarmult_ristretto255_bytes();S.length!==Z&&IA(m,"invalid element length"),q=QA(S),m.push(q);var nA=new dA(0|P._crypto_scalarmult_ristretto255_bytes()),p=nA.address;if(m.push(p),(0|P._crypto_scalarmult_ristretto255(p,M,q))==0){var lA=pA(nA,G);return FA(m),lA}KA(m,"result is identity element")}function nB(d,S){var G=[];kA(S),d=EA(G,d,"scalar");var m,M=0|P._crypto_core_ristretto255_scalarbytes();d.length!==M&&IA(G,"invalid scalar length"),m=QA(d),G.push(m);var T=new dA(0|P._crypto_core_ristretto255_bytes()),q=T.address;if(G.push(q),(0|P._crypto_scalarmult_ristretto255_base(q,m))==0){var Z=pA(T,S);return FA(G),Z}KA(G,"scalar is 0")}function Te(d,S,G,m){var M=[];kA(m);var T=QA(d=EA(M,d,"message")),q=d.length;M.push(T),S=EA(M,S,"nonce");var Z,nA=0|P._crypto_secretbox_noncebytes();S.length!==nA&&IA(M,"invalid nonce length"),Z=QA(S),M.push(Z),G=EA(M,G,"key");var p,lA=0|P._crypto_secretbox_keybytes();G.length!==lA&&IA(M,"invalid key length"),p=QA(G),M.push(p);var r=new dA(0|q),u=r.address;M.push(u);var OA=new dA(0|P._crypto_secretbox_macbytes()),xA=OA.address;if(M.push(xA),(0|P._crypto_secretbox_detached(u,xA,T,q,0,Z,p))==0){var p0=pA({mac:OA,cipher:r},m);return FA(M),p0}KA(M,"invalid usage")}function iB(d,S,G,m){var M=[];kA(m);var T=QA(d=EA(M,d,"message")),q=d.length;M.push(T),S=EA(M,S,"nonce");var Z,nA=0|P._crypto_secretbox_noncebytes();S.length!==nA&&IA(M,"invalid nonce length"),Z=QA(S),M.push(Z),G=EA(M,G,"key");var p,lA=0|P._crypto_secretbox_keybytes();G.length!==lA&&IA(M,"invalid key length"),p=QA(G),M.push(p);var r=new dA(q+P._crypto_secretbox_macbytes()|0),u=r.address;if(M.push(u),(0|P._crypto_secretbox_easy(u,T,q,0,Z,p))==0){var OA=pA(r,m);return FA(M),OA}KA(M,"invalid usage")}function oB(d){var S=[];kA(d);var G=new dA(0|P._crypto_secretbox_keybytes()),m=G.address;S.push(m),P._crypto_secretbox_keygen(m);var M=pA(G,d);return FA(S),M}function CB(d,S,G,m,M){var T=[];kA(M);var q=QA(d=EA(T,d,"ciphertext")),Z=d.length;T.push(q),S=EA(T,S,"mac");var nA,p=0|P._crypto_secretbox_macbytes();S.length!==p&&IA(T,"invalid mac length"),nA=QA(S),T.push(nA),G=EA(T,G,"nonce");var lA,r=0|P._crypto_secretbox_noncebytes();G.length!==r&&IA(T,"invalid nonce length"),lA=QA(G),T.push(lA),m=EA(T,m,"key");var u,OA=0|P._crypto_secretbox_keybytes();m.length!==OA&&IA(T,"invalid key length"),u=QA(m),T.push(u);var xA=new dA(0|Z),p0=xA.address;if(T.push(p0),(0|P._crypto_secretbox_open_detached(p0,q,nA,Z,0,lA,u))==0){var s0=pA(xA,M);return FA(T),s0}KA(T,"wrong secret key for the given ciphertext")}function QB(d,S,G,m){var M=[];kA(m),d=EA(M,d,"ciphertext");var T,q=P._crypto_secretbox_macbytes(),Z=d.length;Z>>0;return FA([]),S}function ze(d,S){var G=[];kA(S);for(var m=P._malloc(24),M=0;M<6;M++)P.setValue(m+4*M,P.Runtime.addFunction(d[["implementation_name","random","stir","uniform","buf","close"][M]]),"i32");(0|P._randombytes_set_implementation(m))!=0&&KA(G,"unsupported implementation"),FA(G)}function $e(d){kA(d),P._randombytes_stir()}function Qe(d,S){var G=[];kA(S),l0(G,d,"upper_bound"),(typeof d!="number"||(0|d)!==d||d<0)&&IA(G,"upper_bound must be an unsigned integer");var m=P._randombytes_uniform(d)>>>0;return FA(G),m}function UA(){var d=P._sodium_version_string(),S=P.UTF8ToString(d);return FA([]),S}return dA.prototype.to_Uint8Array=function(){var d=new Uint8Array(this.length);return d.set(P.HEAPU8.subarray(this.address,this.address+this.length)),d},uA.add=function(d,S){if(!(d instanceof Uint8Array&&S instanceof Uint8Array))throw new TypeError("Only Uint8Array instances can added");var G=d.length,m=0,M=0;if(S.length!=d.length)throw new TypeError("Arguments must have the same length");for(M=0;M>=8,m+=d[M]+S[M],d[M]=255&m},uA.base64_variants=R,uA.compare=function(d,S){if(!(d instanceof Uint8Array&&S instanceof Uint8Array))throw new TypeError("Only Uint8Array instances can be compared");if(d.length!==S.length)throw new TypeError("Only instances of identical length can be compared");for(var G=0,m=1,M=d.length;M-- >0;)G|=S[M]-d[M]>>8&m,m&=(S[M]^d[M])-1>>8;return G+G+m-1},uA.from_base64=function(d,S){S=i0(S);var G,m=[],M=new dA(3*(d=EA(m,d,"input")).length/4),T=QA(d),q=F0(4),Z=F0(4);return m.push(T),m.push(M.address),m.push(M.result_bin_len_p),m.push(M.b64_end_p),P._sodium_base642bin(M.address,M.length,T,d.length,0,q,Z,S)!==0&&KA(m,"invalid input"),P.getValue(Z,"i32")-T!==d.length&&KA(m,"incomplete input"),M.length=P.getValue(q,"i32"),G=M.to_Uint8Array(),FA(m),G},uA.from_hex=function(d){var S,G=[],m=new dA((d=EA(G,d,"input")).length/2),M=QA(d),T=F0(4);return G.push(M),G.push(m.address),G.push(m.hex_end_p),P._sodium_hex2bin(m.address,m.length,M,d.length,0,0,T)!==0&&KA(G,"invalid input"),P.getValue(T,"i32")-M!==d.length&&KA(G,"incomplete input"),S=m.to_Uint8Array(),FA(G),S},uA.from_string=JA,uA.increment=function(d){if(!(d instanceof Uint8Array))throw new TypeError("Only Uint8Array instances can be incremented");for(var S=256,G=0,m=d.length;G>=8,S+=d[G],d[G]=255&S},uA.is_zero=function(d){if(!(d instanceof Uint8Array))throw new TypeError("Only Uint8Array instances can be checked");for(var S=0,G=0,m=d.length;G 0");var G,m=[],M=F0(4),T=1,q=0,Z=0|d.length,nA=new dA(Z+S);m.push(M),m.push(nA.address);for(var p=nA.address,lA=nA.address+Z+S;p>>48|Z>>>32|Z>>>16|Z))-1>>16);return P._sodium_pad(M,nA.address,d.length,S,nA.length)!==0&&KA(m,"internal error"),nA.length=P.getValue(M,"i32"),G=nA.to_Uint8Array(),FA(m),G},uA.unpad=function(d,S){if(!(d instanceof Uint8Array))throw new TypeError("buffer must be a Uint8Array");if((S|=0)<=0)throw new Error("block size must be > 0");var G=[],m=QA(d),M=F0(4);return G.push(m),G.push(M),P._sodium_unpad(M,m,d.length,S)!==0&&KA(G,"unsupported/invalid padding"),d=(d=new Uint8Array(d)).subarray(0,P.getValue(M,"i32")),FA(G),d},uA.ready=PA,uA.symbols=function(){return Object.keys(uA).sort()},uA.to_base64=$A,uA.to_hex=e0,uA.to_string=LA,uA}var GA=typeof J.sodium=="object"&&typeof J.sodium.onload=="function"?J.sodium.onload:null;typeof oA.nodeName!="string"?sA(oA,libsodium.exports):J.sodium=sA(J.commonJsStrict={},J.libsodium),GA&&J.sodium.ready.then(function(){GA(J.sodium)})})(commonjsGlobal)})(libsodiumWrappers);var dist={exports:{}};(function(oA,J){(function(sA,GA){oA.exports=GA()})(commonjsGlobal,function(){class sA{constructor(uA){this.init(uA)}init(uA){const vA={inputCodec:"Int16",channels:1,sampleRate:8e3,flushTime:1e3};this.option=Object.assign({},vA,uA),this.samples=new Float32Array,this.interval=setInterval(this.flush.bind(this),this.option.flushTime),this.convertValue=this.getConvertValue(),this.typedArray=this.getTypedArray(),this.initAudioContext()}getConvertValue(){const uA={Int8:128,Int16:32768,Int32:2147483648,Float32:1};if(!uA[this.option.inputCodec])throw new Error("wrong codec.please input one of these codecs:Int8,Int16,Int32,Float32");return uA[this.option.inputCodec]}getTypedArray(){const uA={Int8:Int8Array,Int16:Int16Array,Int32:Int32Array,Float32:Float32Array};if(!uA[this.option.inputCodec])throw new Error("wrong codec.please input one of these codecs:Int8,Int16,Int32,Float32");return uA[this.option.inputCodec]}initAudioContext(){this.audioCtx=new(window.AudioContext||window.webkitAudioContext),this.gainNode=this.audioCtx.createGain(),this.gainNode.gain.value=10,this.gainNode.connect(this.audioCtx.destination),this.startTime=this.audioCtx.currentTime}static isTypedArray(uA){return uA.byteLength&&uA.buffer&&uA.buffer.constructor==ArrayBuffer||uA.constructor==ArrayBuffer}isSupported(uA){if(!sA.isTypedArray(uA))throw new Error("\u8BF7\u4F20\u5165ArrayBuffer\u6216\u8005\u4EFB\u610FTypedArray");return!0}feed(uA){this.isSupported(uA),uA=this.getFormatedValue(uA);const vA=new Float32Array(this.samples.length+uA.length);vA.set(this.samples,0),vA.set(uA,this.samples.length),this.samples=vA}getFormatedValue(uA){uA.constructor==ArrayBuffer?uA=new this.typedArray(uA):uA=new this.typedArray(uA.buffer);let vA=new Float32Array(uA.length);for(let P=0;P=vA-51&&(JA[R]=JA[R]*e0--/50),LA+=this.option.channels}this.startTime diff --git a/web/icons/Icon-192.png b/web/icons/Icon-192.png new file mode 100644 index 000000000..db3e76713 Binary files /dev/null and b/web/icons/Icon-192.png differ diff --git a/web/icons/Icon-512.png b/web/icons/Icon-512.png new file mode 100644 index 000000000..6910947a3 Binary files /dev/null and b/web/icons/Icon-512.png differ diff --git a/web/icons/Icon-maskable-192.png b/web/icons/Icon-maskable-192.png new file mode 100644 index 000000000..36597c1bc Binary files /dev/null and b/web/icons/Icon-maskable-192.png differ diff --git a/web/icons/Icon-maskable-512.png b/web/icons/Icon-maskable-512.png new file mode 100644 index 000000000..f2f79e64b Binary files /dev/null and b/web/icons/Icon-maskable-512.png differ diff --git a/web/index.html b/web/index.html new file mode 100644 index 000000000..4d5a20b05 --- /dev/null +++ b/web/index.html @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + RustDesk + + + + + + + + + + + + + + + diff --git a/web/libopus.js b/web/libopus.js new file mode 100644 index 000000000..5b0ff4907 --- /dev/null +++ b/web/libopus.js @@ -0,0 +1,5555 @@ + + +// The Module object: Our interface to the outside world. We import +// and export values on it. There are various ways Module can be used: +// 1. Not defined. We create it here +// 2. A function parameter, function(Module) { ..generated code.. } +// 3. pre-run appended it, var Module = {}; ..generated code.. +// 4. External script tag defines var Module. +// We need to check if Module already exists (e.g. case 3 above). +// Substitution will be replaced with actual code on later stage of the build, +// this way Closure Compiler will not mangle it (e.g. case 4. above). +// Note that if you want to run closure, and also to use Module +// after the generated code, you will need to define var Module = {}; +// before the code. Then that object will be used in the code, and you +// can continue to use Module afterwards as well. +var Module = typeof Module !== 'undefined' ? Module : {}; + +// See https://caniuse.com/mdn-javascript_builtins_object_assign +var objAssign = Object.assign; + +// --pre-jses are emitted after the Module integration code, so that they can +// refer to Module (if they choose; they can also define Module) +Module["onRuntimeInitialized"] = function(){ + if(Module.onload) + Module.onload(); + Module.loaded = true; +} + +Module["locateFile"] = function(url){ + if(url == "libopus.wasm" && typeof LIBOPUS_WASM_URL != "undefined") + return LIBOPUS_WASM_URL; + else + return url; +} + + +// Sometimes an existing Module object exists with properties +// meant to overwrite the default module functionality. Here +// we collect those properties and reapply _after_ we configure +// the current environment's defaults to avoid having to be so +// defensive during initialization. +var moduleOverrides = objAssign({}, Module); + +var arguments_ = []; +var thisProgram = './this.program'; +var quit_ = (status, toThrow) => { + throw toThrow; +}; + +// Determine the runtime environment we are in. You can customize this by +// setting the ENVIRONMENT setting at compile time (see settings.js). + +// Attempt to auto-detect the environment +var ENVIRONMENT_IS_WEB = typeof window === 'object'; +var ENVIRONMENT_IS_WORKER = typeof importScripts === 'function'; +// N.b. Electron.js environment is simultaneously a NODE-environment, but +// also a web environment. +var ENVIRONMENT_IS_NODE = typeof process === 'object' && typeof process.versions === 'object' && typeof process.versions.node === 'string'; +var ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER; + +if (Module['ENVIRONMENT']) { + throw new Error('Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -s ENVIRONMENT=web or -s ENVIRONMENT=node)'); +} + +// `/` should be present at the end if `scriptDirectory` is not empty +var scriptDirectory = ''; +function locateFile(path) { + if (Module['locateFile']) { + return Module['locateFile'](path, scriptDirectory); + } + return scriptDirectory + path; +} + +// Hooks that are implemented differently in different runtime environments. +var read_, + readAsync, + readBinary, + setWindowTitle; + +// Normally we don't log exceptions but instead let them bubble out the top +// level where the embedding environment (e.g. the browser) can handle +// them. +// However under v8 and node we sometimes exit the process direcly in which case +// its up to use us to log the exception before exiting. +// If we fix https://github.com/emscripten-core/emscripten/issues/15080 +// this may no longer be needed under node. +function logExceptionOnExit(e) { + if (e instanceof ExitStatus) return; + let toLog = e; + if (e && typeof e === 'object' && e.stack) { + toLog = [e, e.stack]; + } + err('exiting due to exception: ' + toLog); +} + +var fs; +var nodePath; +var requireNodeFS; + +if (ENVIRONMENT_IS_NODE) { + if (!(typeof process === 'object' && typeof require === 'function')) throw new Error('not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)'); + if (ENVIRONMENT_IS_WORKER) { + scriptDirectory = require('path').dirname(scriptDirectory) + '/'; + } else { + scriptDirectory = __dirname + '/'; + } + +// include: node_shell_read.js + + +requireNodeFS = () => { + // Use nodePath as the indicator for these not being initialized, + // since in some environments a global fs may have already been + // created. + if (!nodePath) { + fs = require('fs'); + nodePath = require('path'); + } +}; + +read_ = function shell_read(filename, binary) { + requireNodeFS(); + filename = nodePath['normalize'](filename); + return fs.readFileSync(filename, binary ? null : 'utf8'); +}; + +readBinary = (filename) => { + var ret = read_(filename, true); + if (!ret.buffer) { + ret = new Uint8Array(ret); + } + assert(ret.buffer); + return ret; +}; + +readAsync = (filename, onload, onerror) => { + requireNodeFS(); + filename = nodePath['normalize'](filename); + fs.readFile(filename, function(err, data) { + if (err) onerror(err); + else onload(data.buffer); + }); +}; + +// end include: node_shell_read.js + if (process['argv'].length > 1) { + thisProgram = process['argv'][1].replace(/\\/g, '/'); + } + + arguments_ = process['argv'].slice(2); + + if (typeof module !== 'undefined') { + module['exports'] = Module; + } + + process['on']('uncaughtException', function(ex) { + // suppress ExitStatus exceptions from showing an error + if (!(ex instanceof ExitStatus)) { + throw ex; + } + }); + + // Without this older versions of node (< v15) will log unhandled rejections + // but return 0, which is not normally the desired behaviour. This is + // not be needed with node v15 and about because it is now the default + // behaviour: + // See https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode + process['on']('unhandledRejection', function(reason) { throw reason; }); + + quit_ = (status, toThrow) => { + if (keepRuntimeAlive()) { + process['exitCode'] = status; + throw toThrow; + } + logExceptionOnExit(toThrow); + process['exit'](status); + }; + + Module['inspect'] = function () { return '[Emscripten Module object]'; }; + +} else +if (ENVIRONMENT_IS_SHELL) { + + if ((typeof process === 'object' && typeof require === 'function') || typeof window === 'object' || typeof importScripts === 'function') throw new Error('not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)'); + + if (typeof read != 'undefined') { + read_ = function shell_read(f) { + return read(f); + }; + } + + readBinary = function readBinary(f) { + let data; + if (typeof readbuffer === 'function') { + return new Uint8Array(readbuffer(f)); + } + data = read(f, 'binary'); + assert(typeof data === 'object'); + return data; + }; + + readAsync = function readAsync(f, onload, onerror) { + setTimeout(() => onload(readBinary(f)), 0); + }; + + if (typeof scriptArgs != 'undefined') { + arguments_ = scriptArgs; + } else if (typeof arguments != 'undefined') { + arguments_ = arguments; + } + + if (typeof quit === 'function') { + quit_ = (status, toThrow) => { + logExceptionOnExit(toThrow); + quit(status); + }; + } + + if (typeof print !== 'undefined') { + // Prefer to use print/printErr where they exist, as they usually work better. + if (typeof console === 'undefined') console = /** @type{!Console} */({}); + console.log = /** @type{!function(this:Console, ...*): undefined} */ (print); + console.warn = console.error = /** @type{!function(this:Console, ...*): undefined} */ (typeof printErr !== 'undefined' ? printErr : print); + } + +} else + +// Note that this includes Node.js workers when relevant (pthreads is enabled). +// Node.js workers are detected as a combination of ENVIRONMENT_IS_WORKER and +// ENVIRONMENT_IS_NODE. +if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) { + if (ENVIRONMENT_IS_WORKER) { // Check worker, not web, since window could be polyfilled + scriptDirectory = self.location.href; + } else if (typeof document !== 'undefined' && document.currentScript) { // web + scriptDirectory = document.currentScript.src; + } + // blob urls look like blob:http://site.com/etc/etc and we cannot infer anything from them. + // otherwise, slice off the final part of the url to find the script directory. + // if scriptDirectory does not contain a slash, lastIndexOf will return -1, + // and scriptDirectory will correctly be replaced with an empty string. + // If scriptDirectory contains a query (starting with ?) or a fragment (starting with #), + // they are removed because they could contain a slash. + if (scriptDirectory.indexOf('blob:') !== 0) { + scriptDirectory = scriptDirectory.substr(0, scriptDirectory.replace(/[?#].*/, "").lastIndexOf('/')+1); + } else { + scriptDirectory = ''; + } + + if (!(typeof window === 'object' || typeof importScripts === 'function')) throw new Error('not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)'); + + // Differentiate the Web Worker from the Node Worker case, as reading must + // be done differently. + { +// include: web_or_worker_shell_read.js + + + read_ = (url) => { + var xhr = new XMLHttpRequest(); + xhr.open('GET', url, false); + xhr.send(null); + return xhr.responseText; + } + + if (ENVIRONMENT_IS_WORKER) { + readBinary = (url) => { + var xhr = new XMLHttpRequest(); + xhr.open('GET', url, false); + xhr.responseType = 'arraybuffer'; + xhr.send(null); + return new Uint8Array(/** @type{!ArrayBuffer} */(xhr.response)); + }; + } + + readAsync = (url, onload, onerror) => { + var xhr = new XMLHttpRequest(); + xhr.open('GET', url, true); + xhr.responseType = 'arraybuffer'; + xhr.onload = () => { + if (xhr.status == 200 || (xhr.status == 0 && xhr.response)) { // file URLs can return 0 + onload(xhr.response); + return; + } + onerror(); + }; + xhr.onerror = onerror; + xhr.send(null); + } + +// end include: web_or_worker_shell_read.js + } + + setWindowTitle = (title) => document.title = title; +} else +{ + throw new Error('environment detection error'); +} + +var out = Module['print'] || console.log.bind(console); +var err = Module['printErr'] || console.warn.bind(console); + +// Merge back in the overrides +objAssign(Module, moduleOverrides); +// Free the object hierarchy contained in the overrides, this lets the GC +// reclaim data used e.g. in memoryInitializerRequest, which is a large typed array. +moduleOverrides = null; + +// Emit code to handle expected values on the Module object. This applies Module.x +// to the proper local x. This has two benefits: first, we only emit it if it is +// expected to arrive, and second, by using a local everywhere else that can be +// minified. + +if (Module['arguments']) arguments_ = Module['arguments']; +if (!Object.getOwnPropertyDescriptor(Module, 'arguments')) { + Object.defineProperty(Module, 'arguments', { + configurable: true, + get: function() { + abort('Module.arguments has been replaced with plain arguments_ (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)') + } + }); +} + +if (Module['thisProgram']) thisProgram = Module['thisProgram']; +if (!Object.getOwnPropertyDescriptor(Module, 'thisProgram')) { + Object.defineProperty(Module, 'thisProgram', { + configurable: true, + get: function() { + abort('Module.thisProgram has been replaced with plain thisProgram (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)') + } + }); +} + +if (Module['quit']) quit_ = Module['quit']; +if (!Object.getOwnPropertyDescriptor(Module, 'quit')) { + Object.defineProperty(Module, 'quit', { + configurable: true, + get: function() { + abort('Module.quit has been replaced with plain quit_ (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)') + } + }); +} + +// perform assertions in shell.js after we set up out() and err(), as otherwise if an assertion fails it cannot print the message +// Assertions on removed incoming Module JS APIs. +assert(typeof Module['memoryInitializerPrefixURL'] === 'undefined', 'Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead'); +assert(typeof Module['pthreadMainPrefixURL'] === 'undefined', 'Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead'); +assert(typeof Module['cdInitializerPrefixURL'] === 'undefined', 'Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead'); +assert(typeof Module['filePackagePrefixURL'] === 'undefined', 'Module.filePackagePrefixURL option was removed, use Module.locateFile instead'); +assert(typeof Module['read'] === 'undefined', 'Module.read option was removed (modify read_ in JS)'); +assert(typeof Module['readAsync'] === 'undefined', 'Module.readAsync option was removed (modify readAsync in JS)'); +assert(typeof Module['readBinary'] === 'undefined', 'Module.readBinary option was removed (modify readBinary in JS)'); +assert(typeof Module['setWindowTitle'] === 'undefined', 'Module.setWindowTitle option was removed (modify setWindowTitle in JS)'); +assert(typeof Module['TOTAL_MEMORY'] === 'undefined', 'Module.TOTAL_MEMORY has been renamed Module.INITIAL_MEMORY'); + +if (!Object.getOwnPropertyDescriptor(Module, 'read')) { + Object.defineProperty(Module, 'read', { + configurable: true, + get: function() { + abort('Module.read has been replaced with plain read_ (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)') + } + }); +} + +if (!Object.getOwnPropertyDescriptor(Module, 'readAsync')) { + Object.defineProperty(Module, 'readAsync', { + configurable: true, + get: function() { + abort('Module.readAsync has been replaced with plain readAsync (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)') + } + }); +} + +if (!Object.getOwnPropertyDescriptor(Module, 'readBinary')) { + Object.defineProperty(Module, 'readBinary', { + configurable: true, + get: function() { + abort('Module.readBinary has been replaced with plain readBinary (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)') + } + }); +} + +if (!Object.getOwnPropertyDescriptor(Module, 'setWindowTitle')) { + Object.defineProperty(Module, 'setWindowTitle', { + configurable: true, + get: function() { + abort('Module.setWindowTitle has been replaced with plain setWindowTitle (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)') + } + }); +} +var IDBFS = 'IDBFS is no longer included by default; build with -lidbfs.js'; +var PROXYFS = 'PROXYFS is no longer included by default; build with -lproxyfs.js'; +var WORKERFS = 'WORKERFS is no longer included by default; build with -lworkerfs.js'; +var NODEFS = 'NODEFS is no longer included by default; build with -lnodefs.js'; + + +assert(!ENVIRONMENT_IS_SHELL, "shell environment detected but not enabled at build time. Add 'shell' to `-s ENVIRONMENT` to enable."); + + + + +var STACK_ALIGN = 16; +var POINTER_SIZE = 4; + +function getNativeTypeSize(type) { + switch (type) { + case 'i1': case 'i8': return 1; + case 'i16': return 2; + case 'i32': return 4; + case 'i64': return 8; + case 'float': return 4; + case 'double': return 8; + default: { + if (type[type.length - 1] === '*') { + return POINTER_SIZE; + } else if (type[0] === 'i') { + const bits = Number(type.substr(1)); + assert(bits % 8 === 0, 'getNativeTypeSize invalid bits ' + bits + ', type ' + type); + return bits / 8; + } else { + return 0; + } + } + } +} + +function warnOnce(text) { + if (!warnOnce.shown) warnOnce.shown = {}; + if (!warnOnce.shown[text]) { + warnOnce.shown[text] = 1; + err(text); + } +} + +// include: runtime_functions.js + + +// Wraps a JS function as a wasm function with a given signature. +function convertJsFunctionToWasm(func, sig) { + + // If the type reflection proposal is available, use the new + // "WebAssembly.Function" constructor. + // Otherwise, construct a minimal wasm module importing the JS function and + // re-exporting it. + if (typeof WebAssembly.Function === "function") { + var typeNames = { + 'i': 'i32', + 'j': 'i64', + 'f': 'f32', + 'd': 'f64' + }; + var type = { + parameters: [], + results: sig[0] == 'v' ? [] : [typeNames[sig[0]]] + }; + for (var i = 1; i < sig.length; ++i) { + type.parameters.push(typeNames[sig[i]]); + } + return new WebAssembly.Function(type, func); + } + + // The module is static, with the exception of the type section, which is + // generated based on the signature passed in. + var typeSection = [ + 0x01, // id: section, + 0x00, // length: 0 (placeholder) + 0x01, // count: 1 + 0x60, // form: func + ]; + var sigRet = sig.slice(0, 1); + var sigParam = sig.slice(1); + var typeCodes = { + 'i': 0x7f, // i32 + 'j': 0x7e, // i64 + 'f': 0x7d, // f32 + 'd': 0x7c, // f64 + }; + + // Parameters, length + signatures + typeSection.push(sigParam.length); + for (var i = 0; i < sigParam.length; ++i) { + typeSection.push(typeCodes[sigParam[i]]); + } + + // Return values, length + signatures + // With no multi-return in MVP, either 0 (void) or 1 (anything else) + if (sigRet == 'v') { + typeSection.push(0x00); + } else { + typeSection = typeSection.concat([0x01, typeCodes[sigRet]]); + } + + // Write the overall length of the type section back into the section header + // (excepting the 2 bytes for the section id and length) + typeSection[1] = typeSection.length - 2; + + // Rest of the module is static + var bytes = new Uint8Array([ + 0x00, 0x61, 0x73, 0x6d, // magic ("\0asm") + 0x01, 0x00, 0x00, 0x00, // version: 1 + ].concat(typeSection, [ + 0x02, 0x07, // import section + // (import "e" "f" (func 0 (type 0))) + 0x01, 0x01, 0x65, 0x01, 0x66, 0x00, 0x00, + 0x07, 0x05, // export section + // (export "f" (func 0 (type 0))) + 0x01, 0x01, 0x66, 0x00, 0x00, + ])); + + // We can compile this wasm module synchronously because it is very small. + // This accepts an import (at "e.f"), that it reroutes to an export (at "f") + var module = new WebAssembly.Module(bytes); + var instance = new WebAssembly.Instance(module, { + 'e': { + 'f': func + } + }); + var wrappedFunc = instance.exports['f']; + return wrappedFunc; +} + +var freeTableIndexes = []; + +// Weak map of functions in the table to their indexes, created on first use. +var functionsInTableMap; + +function getEmptyTableSlot() { + // Reuse a free index if there is one, otherwise grow. + if (freeTableIndexes.length) { + return freeTableIndexes.pop(); + } + // Grow the table + try { + wasmTable.grow(1); + } catch (err) { + if (!(err instanceof RangeError)) { + throw err; + } + throw 'Unable to grow wasm table. Set ALLOW_TABLE_GROWTH.'; + } + return wasmTable.length - 1; +} + +function updateTableMap(offset, count) { + for (var i = offset; i < offset + count; i++) { + var item = getWasmTableEntry(i); + // Ignore null values. + if (item) { + functionsInTableMap.set(item, i); + } + } +} + +// Add a function to the table. +// 'sig' parameter is required if the function being added is a JS function. +function addFunction(func, sig) { + assert(typeof func !== 'undefined'); + + // Check if the function is already in the table, to ensure each function + // gets a unique index. First, create the map if this is the first use. + if (!functionsInTableMap) { + functionsInTableMap = new WeakMap(); + updateTableMap(0, wasmTable.length); + } + if (functionsInTableMap.has(func)) { + return functionsInTableMap.get(func); + } + + // It's not in the table, add it now. + + var ret = getEmptyTableSlot(); + + // Set the new value. + try { + // Attempting to call this with JS function will cause of table.set() to fail + setWasmTableEntry(ret, func); + } catch (err) { + if (!(err instanceof TypeError)) { + throw err; + } + assert(typeof sig !== 'undefined', 'Missing signature argument to addFunction: ' + func); + var wrapped = convertJsFunctionToWasm(func, sig); + setWasmTableEntry(ret, wrapped); + } + + functionsInTableMap.set(func, ret); + + return ret; +} + +function removeFunction(index) { + functionsInTableMap.delete(getWasmTableEntry(index)); + freeTableIndexes.push(index); +} + +// end include: runtime_functions.js +// include: runtime_debug.js + + +// end include: runtime_debug.js +var tempRet0 = 0; +var setTempRet0 = (value) => { tempRet0 = value; }; +var getTempRet0 = () => tempRet0; + + + +// === Preamble library stuff === + +// Documentation for the public APIs defined in this file must be updated in: +// site/source/docs/api_reference/preamble.js.rst +// A prebuilt local version of the documentation is available at: +// site/build/text/docs/api_reference/preamble.js.txt +// You can also build docs locally as HTML or other formats in site/ +// An online HTML version (which may be of a different version of Emscripten) +// is up at http://kripken.github.io/emscripten-site/docs/api_reference/preamble.js.html + +var wasmBinary; +if (Module['wasmBinary']) wasmBinary = Module['wasmBinary']; +if (!Object.getOwnPropertyDescriptor(Module, 'wasmBinary')) { + Object.defineProperty(Module, 'wasmBinary', { + configurable: true, + get: function() { + abort('Module.wasmBinary has been replaced with plain wasmBinary (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)') + } + }); +} +var noExitRuntime = Module['noExitRuntime'] || true; +if (!Object.getOwnPropertyDescriptor(Module, 'noExitRuntime')) { + Object.defineProperty(Module, 'noExitRuntime', { + configurable: true, + get: function() { + abort('Module.noExitRuntime has been replaced with plain noExitRuntime (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)') + } + }); +} + +if (typeof WebAssembly !== 'object') { + abort('no native wasm support detected'); +} + +// include: runtime_safe_heap.js + + +// In MINIMAL_RUNTIME, setValue() and getValue() are only available when building with safe heap enabled, for heap safety checking. +// In traditional runtime, setValue() and getValue() are always available (although their use is highly discouraged due to perf penalties) + +/** @param {number} ptr + @param {number} value + @param {string} type + @param {number|boolean=} noSafe */ +function setValue(ptr, value, type = 'i8', noSafe) { + if (type.charAt(type.length-1) === '*') type = 'i32'; + switch (type) { + case 'i1': HEAP8[((ptr)>>0)] = value; break; + case 'i8': HEAP8[((ptr)>>0)] = value; break; + case 'i16': HEAP16[((ptr)>>1)] = value; break; + case 'i32': HEAP32[((ptr)>>2)] = value; break; + case 'i64': (tempI64 = [value>>>0,(tempDouble=value,(+(Math.abs(tempDouble))) >= 1.0 ? (tempDouble > 0.0 ? ((Math.min((+(Math.floor((tempDouble)/4294967296.0))), 4294967295.0))|0)>>>0 : (~~((+(Math.ceil((tempDouble - +(((~~(tempDouble)))>>>0))/4294967296.0)))))>>>0) : 0)],HEAP32[((ptr)>>2)] = tempI64[0],HEAP32[(((ptr)+(4))>>2)] = tempI64[1]); break; + case 'float': HEAPF32[((ptr)>>2)] = value; break; + case 'double': HEAPF64[((ptr)>>3)] = value; break; + default: abort('invalid type for setValue: ' + type); + } +} + +/** @param {number} ptr + @param {string} type + @param {number|boolean=} noSafe */ +function getValue(ptr, type = 'i8', noSafe) { + if (type.charAt(type.length-1) === '*') type = 'i32'; + switch (type) { + case 'i1': return HEAP8[((ptr)>>0)]; + case 'i8': return HEAP8[((ptr)>>0)]; + case 'i16': return HEAP16[((ptr)>>1)]; + case 'i32': return HEAP32[((ptr)>>2)]; + case 'i64': return HEAP32[((ptr)>>2)]; + case 'float': return HEAPF32[((ptr)>>2)]; + case 'double': return Number(HEAPF64[((ptr)>>3)]); + default: abort('invalid type for getValue: ' + type); + } + return null; +} + +// end include: runtime_safe_heap.js +// Wasm globals + +var wasmMemory; + +//======================================== +// Runtime essentials +//======================================== + +// whether we are quitting the application. no code should run after this. +// set in exit() and abort() +var ABORT = false; + +// set by exit() and abort(). Passed to 'onExit' handler. +// NOTE: This is also used as the process return code code in shell environments +// but only when noExitRuntime is false. +var EXITSTATUS; + +/** @type {function(*, string=)} */ +function assert(condition, text) { + if (!condition) { + abort('Assertion failed' + (text ? ': ' + text : '')); + } +} + +// Returns the C function with a specified identifier (for C++, you need to do manual name mangling) +function getCFunc(ident) { + var func = Module['_' + ident]; // closure exported function + assert(func, 'Cannot call unknown function ' + ident + ', make sure it is exported'); + return func; +} + +// C calling interface. +/** @param {string|null=} returnType + @param {Array=} argTypes + @param {Arguments|Array=} args + @param {Object=} opts */ +function ccall(ident, returnType, argTypes, args, opts) { + // For fast lookup of conversion functions + var toC = { + 'string': function(str) { + var ret = 0; + if (str !== null && str !== undefined && str !== 0) { // null string + // at most 4 bytes per UTF-8 code point, +1 for the trailing '\0' + var len = (str.length << 2) + 1; + ret = stackAlloc(len); + stringToUTF8(str, ret, len); + } + return ret; + }, + 'array': function(arr) { + var ret = stackAlloc(arr.length); + writeArrayToMemory(arr, ret); + return ret; + } + }; + + function convertReturnValue(ret) { + if (returnType === 'string') return UTF8ToString(ret); + if (returnType === 'boolean') return Boolean(ret); + return ret; + } + + var func = getCFunc(ident); + var cArgs = []; + var stack = 0; + assert(returnType !== 'array', 'Return type should not be "array".'); + if (args) { + for (var i = 0; i < args.length; i++) { + var converter = toC[argTypes[i]]; + if (converter) { + if (stack === 0) stack = stackSave(); + cArgs[i] = converter(args[i]); + } else { + cArgs[i] = args[i]; + } + } + } + var ret = func.apply(null, cArgs); + function onDone(ret) { + if (stack !== 0) stackRestore(stack); + return convertReturnValue(ret); + } + + ret = onDone(ret); + return ret; +} + +/** @param {string=} returnType + @param {Array=} argTypes + @param {Object=} opts */ +function cwrap(ident, returnType, argTypes, opts) { + return function() { + return ccall(ident, returnType, argTypes, arguments, opts); + } +} + +// We used to include malloc/free by default in the past. Show a helpful error in +// builds with assertions. + +var ALLOC_NORMAL = 0; // Tries to use _malloc() +var ALLOC_STACK = 1; // Lives for the duration of the current function call + +// allocate(): This is for internal use. You can use it yourself as well, but the interface +// is a little tricky (see docs right below). The reason is that it is optimized +// for multiple syntaxes to save space in generated code. So you should +// normally not use allocate(), and instead allocate memory using _malloc(), +// initialize it with setValue(), and so forth. +// @slab: An array of data. +// @allocator: How to allocate memory, see ALLOC_* +/** @type {function((Uint8Array|Array), number)} */ +function allocate(slab, allocator) { + var ret; + assert(typeof allocator === 'number', 'allocate no longer takes a type argument') + assert(typeof slab !== 'number', 'allocate no longer takes a number as arg0') + + if (allocator == ALLOC_STACK) { + ret = stackAlloc(slab.length); + } else { + ret = _malloc(slab.length); + } + + if (slab.subarray || slab.slice) { + HEAPU8.set(/** @type {!Uint8Array} */(slab), ret); + } else { + HEAPU8.set(new Uint8Array(slab), ret); + } + return ret; +} + +// include: runtime_strings.js + + +// runtime_strings.js: Strings related runtime functions that are part of both MINIMAL_RUNTIME and regular runtime. + +// Given a pointer 'ptr' to a null-terminated UTF8-encoded string in the given array that contains uint8 values, returns +// a copy of that string as a Javascript String object. + +var UTF8Decoder = typeof TextDecoder !== 'undefined' ? new TextDecoder('utf8') : undefined; + +/** + * @param {number} idx + * @param {number=} maxBytesToRead + * @return {string} + */ +function UTF8ArrayToString(heap, idx, maxBytesToRead) { + var endIdx = idx + maxBytesToRead; + var endPtr = idx; + // TextDecoder needs to know the byte length in advance, it doesn't stop on null terminator by itself. + // Also, use the length info to avoid running tiny strings through TextDecoder, since .subarray() allocates garbage. + // (As a tiny code save trick, compare endPtr against endIdx using a negation, so that undefined means Infinity) + while (heap[endPtr] && !(endPtr >= endIdx)) ++endPtr; + + if (endPtr - idx > 16 && heap.subarray && UTF8Decoder) { + return UTF8Decoder.decode(heap.subarray(idx, endPtr)); + } else { + var str = ''; + // If building with TextDecoder, we have already computed the string length above, so test loop end condition against that + while (idx < endPtr) { + // For UTF8 byte structure, see: + // http://en.wikipedia.org/wiki/UTF-8#Description + // https://www.ietf.org/rfc/rfc2279.txt + // https://tools.ietf.org/html/rfc3629 + var u0 = heap[idx++]; + if (!(u0 & 0x80)) { str += String.fromCharCode(u0); continue; } + var u1 = heap[idx++] & 63; + if ((u0 & 0xE0) == 0xC0) { str += String.fromCharCode(((u0 & 31) << 6) | u1); continue; } + var u2 = heap[idx++] & 63; + if ((u0 & 0xF0) == 0xE0) { + u0 = ((u0 & 15) << 12) | (u1 << 6) | u2; + } else { + if ((u0 & 0xF8) != 0xF0) warnOnce('Invalid UTF-8 leading byte 0x' + u0.toString(16) + ' encountered when deserializing a UTF-8 string in wasm memory to a JS string!'); + u0 = ((u0 & 7) << 18) | (u1 << 12) | (u2 << 6) | (heap[idx++] & 63); + } + + if (u0 < 0x10000) { + str += String.fromCharCode(u0); + } else { + var ch = u0 - 0x10000; + str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF)); + } + } + } + return str; +} + +// Given a pointer 'ptr' to a null-terminated UTF8-encoded string in the emscripten HEAP, returns a +// copy of that string as a Javascript String object. +// maxBytesToRead: an optional length that specifies the maximum number of bytes to read. You can omit +// this parameter to scan the string until the first \0 byte. If maxBytesToRead is +// passed, and the string at [ptr, ptr+maxBytesToReadr[ contains a null byte in the +// middle, then the string will cut short at that byte index (i.e. maxBytesToRead will +// not produce a string of exact length [ptr, ptr+maxBytesToRead[) +// N.B. mixing frequent uses of UTF8ToString() with and without maxBytesToRead may +// throw JS JIT optimizations off, so it is worth to consider consistently using one +// style or the other. +/** + * @param {number} ptr + * @param {number=} maxBytesToRead + * @return {string} + */ +function UTF8ToString(ptr, maxBytesToRead) { + ; + return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : ''; +} + +// Copies the given Javascript String object 'str' to the given byte array at address 'outIdx', +// encoded in UTF8 form and null-terminated. The copy will require at most str.length*4+1 bytes of space in the HEAP. +// Use the function lengthBytesUTF8 to compute the exact number of bytes (excluding null terminator) that this function will write. +// Parameters: +// str: the Javascript string to copy. +// heap: the array to copy to. Each index in this array is assumed to be one 8-byte element. +// outIdx: The starting offset in the array to begin the copying. +// maxBytesToWrite: The maximum number of bytes this function can write to the array. +// This count should include the null terminator, +// i.e. if maxBytesToWrite=1, only the null terminator will be written and nothing else. +// maxBytesToWrite=0 does not write any bytes to the output, not even the null terminator. +// Returns the number of bytes written, EXCLUDING the null terminator. + +function stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) { + if (!(maxBytesToWrite > 0)) // Parameter maxBytesToWrite is not optional. Negative values, 0, null, undefined and false each don't write out any bytes. + return 0; + + var startIdx = outIdx; + var endIdx = outIdx + maxBytesToWrite - 1; // -1 for string null terminator. + for (var i = 0; i < str.length; ++i) { + // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! So decode UTF16->UTF32->UTF8. + // See http://unicode.org/faq/utf_bom.html#utf16-3 + // For UTF8 byte structure, see http://en.wikipedia.org/wiki/UTF-8#Description and https://www.ietf.org/rfc/rfc2279.txt and https://tools.ietf.org/html/rfc3629 + var u = str.charCodeAt(i); // possibly a lead surrogate + if (u >= 0xD800 && u <= 0xDFFF) { + var u1 = str.charCodeAt(++i); + u = 0x10000 + ((u & 0x3FF) << 10) | (u1 & 0x3FF); + } + if (u <= 0x7F) { + if (outIdx >= endIdx) break; + heap[outIdx++] = u; + } else if (u <= 0x7FF) { + if (outIdx + 1 >= endIdx) break; + heap[outIdx++] = 0xC0 | (u >> 6); + heap[outIdx++] = 0x80 | (u & 63); + } else if (u <= 0xFFFF) { + if (outIdx + 2 >= endIdx) break; + heap[outIdx++] = 0xE0 | (u >> 12); + heap[outIdx++] = 0x80 | ((u >> 6) & 63); + heap[outIdx++] = 0x80 | (u & 63); + } else { + if (outIdx + 3 >= endIdx) break; + if (u > 0x10FFFF) warnOnce('Invalid Unicode code point 0x' + u.toString(16) + ' encountered when serializing a JS string to a UTF-8 string in wasm memory! (Valid unicode code points should be in range 0-0x10FFFF).'); + heap[outIdx++] = 0xF0 | (u >> 18); + heap[outIdx++] = 0x80 | ((u >> 12) & 63); + heap[outIdx++] = 0x80 | ((u >> 6) & 63); + heap[outIdx++] = 0x80 | (u & 63); + } + } + // Null-terminate the pointer to the buffer. + heap[outIdx] = 0; + return outIdx - startIdx; +} + +// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr', +// null-terminated and encoded in UTF8 form. The copy will require at most str.length*4+1 bytes of space in the HEAP. +// Use the function lengthBytesUTF8 to compute the exact number of bytes (excluding null terminator) that this function will write. +// Returns the number of bytes written, EXCLUDING the null terminator. + +function stringToUTF8(str, outPtr, maxBytesToWrite) { + assert(typeof maxBytesToWrite == 'number', 'stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!'); + return stringToUTF8Array(str, HEAPU8,outPtr, maxBytesToWrite); +} + +// Returns the number of bytes the given Javascript string takes if encoded as a UTF8 byte array, EXCLUDING the null terminator byte. +function lengthBytesUTF8(str) { + var len = 0; + for (var i = 0; i < str.length; ++i) { + // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! So decode UTF16->UTF32->UTF8. + // See http://unicode.org/faq/utf_bom.html#utf16-3 + var u = str.charCodeAt(i); // possibly a lead surrogate + if (u >= 0xD800 && u <= 0xDFFF) u = 0x10000 + ((u & 0x3FF) << 10) | (str.charCodeAt(++i) & 0x3FF); + if (u <= 0x7F) ++len; + else if (u <= 0x7FF) len += 2; + else if (u <= 0xFFFF) len += 3; + else len += 4; + } + return len; +} + +// end include: runtime_strings.js +// include: runtime_strings_extra.js + + +// runtime_strings_extra.js: Strings related runtime functions that are available only in regular runtime. + +// Given a pointer 'ptr' to a null-terminated ASCII-encoded string in the emscripten HEAP, returns +// a copy of that string as a Javascript String object. + +function AsciiToString(ptr) { + var str = ''; + while (1) { + var ch = HEAPU8[((ptr++)>>0)]; + if (!ch) return str; + str += String.fromCharCode(ch); + } +} + +// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr', +// null-terminated and encoded in ASCII form. The copy will require at most str.length+1 bytes of space in the HEAP. + +function stringToAscii(str, outPtr) { + return writeAsciiToMemory(str, outPtr, false); +} + +// Given a pointer 'ptr' to a null-terminated UTF16LE-encoded string in the emscripten HEAP, returns +// a copy of that string as a Javascript String object. + +var UTF16Decoder = typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-16le') : undefined; + +function UTF16ToString(ptr, maxBytesToRead) { + assert(ptr % 2 == 0, 'Pointer passed to UTF16ToString must be aligned to two bytes!'); + var endPtr = ptr; + // TextDecoder needs to know the byte length in advance, it doesn't stop on null terminator by itself. + // Also, use the length info to avoid running tiny strings through TextDecoder, since .subarray() allocates garbage. + var idx = endPtr >> 1; + var maxIdx = idx + maxBytesToRead / 2; + // If maxBytesToRead is not passed explicitly, it will be undefined, and this + // will always evaluate to true. This saves on code size. + while (!(idx >= maxIdx) && HEAPU16[idx]) ++idx; + endPtr = idx << 1; + + if (endPtr - ptr > 32 && UTF16Decoder) { + return UTF16Decoder.decode(HEAPU8.subarray(ptr, endPtr)); + } else { + var str = ''; + + // If maxBytesToRead is not passed explicitly, it will be undefined, and the for-loop's condition + // will always evaluate to true. The loop is then terminated on the first null char. + for (var i = 0; !(i >= maxBytesToRead / 2); ++i) { + var codeUnit = HEAP16[(((ptr)+(i*2))>>1)]; + if (codeUnit == 0) break; + // fromCharCode constructs a character from a UTF-16 code unit, so we can pass the UTF16 string right through. + str += String.fromCharCode(codeUnit); + } + + return str; + } +} + +// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr', +// null-terminated and encoded in UTF16 form. The copy will require at most str.length*4+2 bytes of space in the HEAP. +// Use the function lengthBytesUTF16() to compute the exact number of bytes (excluding null terminator) that this function will write. +// Parameters: +// str: the Javascript string to copy. +// outPtr: Byte address in Emscripten HEAP where to write the string to. +// maxBytesToWrite: The maximum number of bytes this function can write to the array. This count should include the null +// terminator, i.e. if maxBytesToWrite=2, only the null terminator will be written and nothing else. +// maxBytesToWrite<2 does not write any bytes to the output, not even the null terminator. +// Returns the number of bytes written, EXCLUDING the null terminator. + +function stringToUTF16(str, outPtr, maxBytesToWrite) { + assert(outPtr % 2 == 0, 'Pointer passed to stringToUTF16 must be aligned to two bytes!'); + assert(typeof maxBytesToWrite == 'number', 'stringToUTF16(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!'); + // Backwards compatibility: if max bytes is not specified, assume unsafe unbounded write is allowed. + if (maxBytesToWrite === undefined) { + maxBytesToWrite = 0x7FFFFFFF; + } + if (maxBytesToWrite < 2) return 0; + maxBytesToWrite -= 2; // Null terminator. + var startPtr = outPtr; + var numCharsToWrite = (maxBytesToWrite < str.length*2) ? (maxBytesToWrite / 2) : str.length; + for (var i = 0; i < numCharsToWrite; ++i) { + // charCodeAt returns a UTF-16 encoded code unit, so it can be directly written to the HEAP. + var codeUnit = str.charCodeAt(i); // possibly a lead surrogate + HEAP16[((outPtr)>>1)] = codeUnit; + outPtr += 2; + } + // Null-terminate the pointer to the HEAP. + HEAP16[((outPtr)>>1)] = 0; + return outPtr - startPtr; +} + +// Returns the number of bytes the given Javascript string takes if encoded as a UTF16 byte array, EXCLUDING the null terminator byte. + +function lengthBytesUTF16(str) { + return str.length*2; +} + +function UTF32ToString(ptr, maxBytesToRead) { + assert(ptr % 4 == 0, 'Pointer passed to UTF32ToString must be aligned to four bytes!'); + var i = 0; + + var str = ''; + // If maxBytesToRead is not passed explicitly, it will be undefined, and this + // will always evaluate to true. This saves on code size. + while (!(i >= maxBytesToRead / 4)) { + var utf32 = HEAP32[(((ptr)+(i*4))>>2)]; + if (utf32 == 0) break; + ++i; + // Gotcha: fromCharCode constructs a character from a UTF-16 encoded code (pair), not from a Unicode code point! So encode the code point to UTF-16 for constructing. + // See http://unicode.org/faq/utf_bom.html#utf16-3 + if (utf32 >= 0x10000) { + var ch = utf32 - 0x10000; + str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF)); + } else { + str += String.fromCharCode(utf32); + } + } + return str; +} + +// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr', +// null-terminated and encoded in UTF32 form. The copy will require at most str.length*4+4 bytes of space in the HEAP. +// Use the function lengthBytesUTF32() to compute the exact number of bytes (excluding null terminator) that this function will write. +// Parameters: +// str: the Javascript string to copy. +// outPtr: Byte address in Emscripten HEAP where to write the string to. +// maxBytesToWrite: The maximum number of bytes this function can write to the array. This count should include the null +// terminator, i.e. if maxBytesToWrite=4, only the null terminator will be written and nothing else. +// maxBytesToWrite<4 does not write any bytes to the output, not even the null terminator. +// Returns the number of bytes written, EXCLUDING the null terminator. + +function stringToUTF32(str, outPtr, maxBytesToWrite) { + assert(outPtr % 4 == 0, 'Pointer passed to stringToUTF32 must be aligned to four bytes!'); + assert(typeof maxBytesToWrite == 'number', 'stringToUTF32(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!'); + // Backwards compatibility: if max bytes is not specified, assume unsafe unbounded write is allowed. + if (maxBytesToWrite === undefined) { + maxBytesToWrite = 0x7FFFFFFF; + } + if (maxBytesToWrite < 4) return 0; + var startPtr = outPtr; + var endPtr = startPtr + maxBytesToWrite - 4; + for (var i = 0; i < str.length; ++i) { + // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! We must decode the string to UTF-32 to the heap. + // See http://unicode.org/faq/utf_bom.html#utf16-3 + var codeUnit = str.charCodeAt(i); // possibly a lead surrogate + if (codeUnit >= 0xD800 && codeUnit <= 0xDFFF) { + var trailSurrogate = str.charCodeAt(++i); + codeUnit = 0x10000 + ((codeUnit & 0x3FF) << 10) | (trailSurrogate & 0x3FF); + } + HEAP32[((outPtr)>>2)] = codeUnit; + outPtr += 4; + if (outPtr + 4 > endPtr) break; + } + // Null-terminate the pointer to the HEAP. + HEAP32[((outPtr)>>2)] = 0; + return outPtr - startPtr; +} + +// Returns the number of bytes the given Javascript string takes if encoded as a UTF16 byte array, EXCLUDING the null terminator byte. + +function lengthBytesUTF32(str) { + var len = 0; + for (var i = 0; i < str.length; ++i) { + // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! We must decode the string to UTF-32 to the heap. + // See http://unicode.org/faq/utf_bom.html#utf16-3 + var codeUnit = str.charCodeAt(i); + if (codeUnit >= 0xD800 && codeUnit <= 0xDFFF) ++i; // possibly a lead surrogate, so skip over the tail surrogate. + len += 4; + } + + return len; +} + +// Allocate heap space for a JS string, and write it there. +// It is the responsibility of the caller to free() that memory. +function allocateUTF8(str) { + var size = lengthBytesUTF8(str) + 1; + var ret = _malloc(size); + if (ret) stringToUTF8Array(str, HEAP8, ret, size); + return ret; +} + +// Allocate stack space for a JS string, and write it there. +function allocateUTF8OnStack(str) { + var size = lengthBytesUTF8(str) + 1; + var ret = stackAlloc(size); + stringToUTF8Array(str, HEAP8, ret, size); + return ret; +} + +// Deprecated: This function should not be called because it is unsafe and does not provide +// a maximum length limit of how many bytes it is allowed to write. Prefer calling the +// function stringToUTF8Array() instead, which takes in a maximum length that can be used +// to be secure from out of bounds writes. +/** @deprecated + @param {boolean=} dontAddNull */ +function writeStringToMemory(string, buffer, dontAddNull) { + warnOnce('writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!'); + + var /** @type {number} */ lastChar, /** @type {number} */ end; + if (dontAddNull) { + // stringToUTF8Array always appends null. If we don't want to do that, remember the + // character that existed at the location where the null will be placed, and restore + // that after the write (below). + end = buffer + lengthBytesUTF8(string); + lastChar = HEAP8[end]; + } + stringToUTF8(string, buffer, Infinity); + if (dontAddNull) HEAP8[end] = lastChar; // Restore the value under the null character. +} + +function writeArrayToMemory(array, buffer) { + assert(array.length >= 0, 'writeArrayToMemory array must have a length (should be an array or typed array)') + HEAP8.set(array, buffer); +} + +/** @param {boolean=} dontAddNull */ +function writeAsciiToMemory(str, buffer, dontAddNull) { + for (var i = 0; i < str.length; ++i) { + assert(str.charCodeAt(i) === (str.charCodeAt(i) & 0xff)); + HEAP8[((buffer++)>>0)] = str.charCodeAt(i); + } + // Null-terminate the pointer to the HEAP. + if (!dontAddNull) HEAP8[((buffer)>>0)] = 0; +} + +// end include: runtime_strings_extra.js +// Memory management + +function alignUp(x, multiple) { + if (x % multiple > 0) { + x += multiple - (x % multiple); + } + return x; +} + +var HEAP, +/** @type {ArrayBuffer} */ + buffer, +/** @type {Int8Array} */ + HEAP8, +/** @type {Uint8Array} */ + HEAPU8, +/** @type {Int16Array} */ + HEAP16, +/** @type {Uint16Array} */ + HEAPU16, +/** @type {Int32Array} */ + HEAP32, +/** @type {Uint32Array} */ + HEAPU32, +/** @type {Float32Array} */ + HEAPF32, +/** @type {Float64Array} */ + HEAPF64; + +function updateGlobalBufferAndViews(buf) { + buffer = buf; + Module['HEAP8'] = HEAP8 = new Int8Array(buf); + Module['HEAP16'] = HEAP16 = new Int16Array(buf); + Module['HEAP32'] = HEAP32 = new Int32Array(buf); + Module['HEAPU8'] = HEAPU8 = new Uint8Array(buf); + Module['HEAPU16'] = HEAPU16 = new Uint16Array(buf); + Module['HEAPU32'] = HEAPU32 = new Uint32Array(buf); + Module['HEAPF32'] = HEAPF32 = new Float32Array(buf); + Module['HEAPF64'] = HEAPF64 = new Float64Array(buf); +} + +var TOTAL_STACK = 5242880; +if (Module['TOTAL_STACK']) assert(TOTAL_STACK === Module['TOTAL_STACK'], 'the stack size can no longer be determined at runtime') + +var INITIAL_MEMORY = Module['INITIAL_MEMORY'] || 16777216; +if (!Object.getOwnPropertyDescriptor(Module, 'INITIAL_MEMORY')) { + Object.defineProperty(Module, 'INITIAL_MEMORY', { + configurable: true, + get: function() { + abort('Module.INITIAL_MEMORY has been replaced with plain INITIAL_MEMORY (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)') + } + }); +} + +assert(INITIAL_MEMORY >= TOTAL_STACK, 'INITIAL_MEMORY should be larger than TOTAL_STACK, was ' + INITIAL_MEMORY + '! (TOTAL_STACK=' + TOTAL_STACK + ')'); + +// check for full engine support (use string 'subarray' to avoid closure compiler confusion) +assert(typeof Int32Array !== 'undefined' && typeof Float64Array !== 'undefined' && Int32Array.prototype.subarray !== undefined && Int32Array.prototype.set !== undefined, + 'JS engine does not provide full typed array support'); + +// If memory is defined in wasm, the user can't provide it. +assert(!Module['wasmMemory'], 'Use of `wasmMemory` detected. Use -s IMPORTED_MEMORY to define wasmMemory externally'); +assert(INITIAL_MEMORY == 16777216, 'Detected runtime INITIAL_MEMORY setting. Use -s IMPORTED_MEMORY to define wasmMemory dynamically'); + +// include: runtime_init_table.js +// In regular non-RELOCATABLE mode the table is exported +// from the wasm module and this will be assigned once +// the exports are available. +var wasmTable; + +// end include: runtime_init_table.js +// include: runtime_stack_check.js + + +// Initializes the stack cookie. Called at the startup of main and at the startup of each thread in pthreads mode. +function writeStackCookie() { + var max = _emscripten_stack_get_end(); + assert((max & 3) == 0); + // The stack grows downwards + HEAP32[((max + 4)>>2)] = 0x2135467; + HEAP32[((max + 8)>>2)] = 0x89BACDFE; + // Also test the global address 0 for integrity. + HEAP32[0] = 0x63736d65; /* 'emsc' */ +} + +function checkStackCookie() { + if (ABORT) return; + var max = _emscripten_stack_get_end(); + var cookie1 = HEAPU32[((max + 4)>>2)]; + var cookie2 = HEAPU32[((max + 8)>>2)]; + if (cookie1 != 0x2135467 || cookie2 != 0x89BACDFE) { + abort('Stack overflow! Stack cookie has been overwritten, expected hex dwords 0x89BACDFE and 0x2135467, but received 0x' + cookie2.toString(16) + ' 0x' + cookie1.toString(16)); + } + // Also test the global address 0 for integrity. + if (HEAP32[0] !== 0x63736d65 /* 'emsc' */) abort('Runtime error: The application has corrupted its heap memory area (address zero)!'); +} + +// end include: runtime_stack_check.js +// include: runtime_assertions.js + + +// Endianness check +(function() { + var h16 = new Int16Array(1); + var h8 = new Int8Array(h16.buffer); + h16[0] = 0x6373; + if (h8[0] !== 0x73 || h8[1] !== 0x63) throw 'Runtime error: expected the system to be little-endian! (Run with -s SUPPORT_BIG_ENDIAN=1 to bypass)'; +})(); + +// end include: runtime_assertions.js +var __ATPRERUN__ = []; // functions called before the runtime is initialized +var __ATINIT__ = []; // functions called during startup +var __ATEXIT__ = []; // functions called during shutdown +var __ATPOSTRUN__ = []; // functions called after the main() is called + +var runtimeInitialized = false; +var runtimeExited = false; +var runtimeKeepaliveCounter = 0; + +function keepRuntimeAlive() { + return noExitRuntime || runtimeKeepaliveCounter > 0; +} + +function preRun() { + + if (Module['preRun']) { + if (typeof Module['preRun'] == 'function') Module['preRun'] = [Module['preRun']]; + while (Module['preRun'].length) { + addOnPreRun(Module['preRun'].shift()); + } + } + + callRuntimeCallbacks(__ATPRERUN__); +} + +function initRuntime() { + checkStackCookie(); + assert(!runtimeInitialized); + runtimeInitialized = true; + + +if (!Module["noFSInit"] && !FS.init.initialized) + FS.init(); +FS.ignorePermissions = false; + +TTY.init(); + callRuntimeCallbacks(__ATINIT__); +} + +function exitRuntime() { + checkStackCookie(); + runtimeExited = true; +} + +function postRun() { + checkStackCookie(); + + if (Module['postRun']) { + if (typeof Module['postRun'] == 'function') Module['postRun'] = [Module['postRun']]; + while (Module['postRun'].length) { + addOnPostRun(Module['postRun'].shift()); + } + } + + callRuntimeCallbacks(__ATPOSTRUN__); +} + +function addOnPreRun(cb) { + __ATPRERUN__.unshift(cb); +} + +function addOnInit(cb) { + __ATINIT__.unshift(cb); +} + +function addOnExit(cb) { +} + +function addOnPostRun(cb) { + __ATPOSTRUN__.unshift(cb); +} + +// include: runtime_math.js + + +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/imul + +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/fround + +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/clz32 + +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/trunc + +assert(Math.imul, 'This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill'); +assert(Math.fround, 'This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill'); +assert(Math.clz32, 'This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill'); +assert(Math.trunc, 'This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill'); + +// end include: runtime_math.js +// A counter of dependencies for calling run(). If we need to +// do asynchronous work before running, increment this and +// decrement it. Incrementing must happen in a place like +// Module.preRun (used by emcc to add file preloading). +// Note that you can add dependencies in preRun, even though +// it happens right before run - run will be postponed until +// the dependencies are met. +var runDependencies = 0; +var runDependencyWatcher = null; +var dependenciesFulfilled = null; // overridden to take different actions when all run dependencies are fulfilled +var runDependencyTracking = {}; + +function getUniqueRunDependency(id) { + var orig = id; + while (1) { + if (!runDependencyTracking[id]) return id; + id = orig + Math.random(); + } +} + +function addRunDependency(id) { + runDependencies++; + + if (Module['monitorRunDependencies']) { + Module['monitorRunDependencies'](runDependencies); + } + + if (id) { + assert(!runDependencyTracking[id]); + runDependencyTracking[id] = 1; + if (runDependencyWatcher === null && typeof setInterval !== 'undefined') { + // Check for missing dependencies every few seconds + runDependencyWatcher = setInterval(function() { + if (ABORT) { + clearInterval(runDependencyWatcher); + runDependencyWatcher = null; + return; + } + var shown = false; + for (var dep in runDependencyTracking) { + if (!shown) { + shown = true; + err('still waiting on run dependencies:'); + } + err('dependency: ' + dep); + } + if (shown) { + err('(end of list)'); + } + }, 10000); + } + } else { + err('warning: run dependency added without ID'); + } +} + +function removeRunDependency(id) { + runDependencies--; + + if (Module['monitorRunDependencies']) { + Module['monitorRunDependencies'](runDependencies); + } + + if (id) { + assert(runDependencyTracking[id]); + delete runDependencyTracking[id]; + } else { + err('warning: run dependency removed without ID'); + } + if (runDependencies == 0) { + if (runDependencyWatcher !== null) { + clearInterval(runDependencyWatcher); + runDependencyWatcher = null; + } + if (dependenciesFulfilled) { + var callback = dependenciesFulfilled; + dependenciesFulfilled = null; + callback(); // can add another dependenciesFulfilled + } + } +} + +Module["preloadedImages"] = {}; // maps url to image data +Module["preloadedAudios"] = {}; // maps url to audio data + +/** @param {string|number=} what */ +function abort(what) { + { + if (Module['onAbort']) { + Module['onAbort'](what); + } + } + + what = 'Aborted(' + what + ')'; + // TODO(sbc): Should we remove printing and leave it up to whoever + // catches the exception? + err(what); + + ABORT = true; + EXITSTATUS = 1; + + // Use a wasm runtime error, because a JS error might be seen as a foreign + // exception, which means we'd run destructors on it. We need the error to + // simply make the program stop. + var e = new WebAssembly.RuntimeError(what); + + // Throw the error whether or not MODULARIZE is set because abort is used + // in code paths apart from instantiation where an exception is expected + // to be thrown when abort is called. + throw e; +} + +// {{MEM_INITIALIZER}} + +// include: memoryprofiler.js + + +// end include: memoryprofiler.js +// include: URIUtils.js + + +// Prefix of data URIs emitted by SINGLE_FILE and related options. +var dataURIPrefix = 'data:application/octet-stream;base64,'; + +// Indicates whether filename is a base64 data URI. +function isDataURI(filename) { + // Prefix of data URIs emitted by SINGLE_FILE and related options. + return filename.startsWith(dataURIPrefix); +} + +// Indicates whether filename is delivered via file protocol (as opposed to http/https) +function isFileURI(filename) { + return filename.startsWith('file://'); +} + +// end include: URIUtils.js +function createExportWrapper(name, fixedasm) { + return function() { + var displayName = name; + var asm = fixedasm; + if (!fixedasm) { + asm = Module['asm']; + } + assert(runtimeInitialized, 'native function `' + displayName + '` called before runtime initialization'); + assert(!runtimeExited, 'native function `' + displayName + '` called after runtime exit (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + if (!asm[name]) { + assert(asm[name], 'exported native function `' + displayName + '` not found'); + } + return asm[name].apply(null, arguments); + }; +} + +var wasmBinaryFile; + wasmBinaryFile = 'libopus.wasm'; + if (!isDataURI(wasmBinaryFile)) { + wasmBinaryFile = locateFile(wasmBinaryFile); + } + +function getBinary(file) { + try { + if (file == wasmBinaryFile && wasmBinary) { + return new Uint8Array(wasmBinary); + } + if (readBinary) { + return readBinary(file); + } else { + throw "both async and sync fetching of the wasm failed"; + } + } + catch (err) { + abort(err); + } +} + +function getBinaryPromise() { + // If we don't have the binary yet, try to to load it asynchronously. + // Fetch has some additional restrictions over XHR, like it can't be used on a file:// url. + // See https://github.com/github/fetch/pull/92#issuecomment-140665932 + // Cordova or Electron apps are typically loaded from a file:// url. + // So use fetch if it is available and the url is not a file, otherwise fall back to XHR. + if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER)) { + if (typeof fetch === 'function' + && !isFileURI(wasmBinaryFile) + ) { + return fetch(wasmBinaryFile, { credentials: 'same-origin' }).then(function(response) { + if (!response['ok']) { + throw "failed to load wasm binary file at '" + wasmBinaryFile + "'"; + } + return response['arrayBuffer'](); + }).catch(function () { + return getBinary(wasmBinaryFile); + }); + } + else { + if (readAsync) { + // fetch is not available or url is file => try XHR (readAsync uses XHR internally) + return new Promise(function(resolve, reject) { + readAsync(wasmBinaryFile, function(response) { resolve(new Uint8Array(/** @type{!ArrayBuffer} */(response))) }, reject) + }); + } + } + } + + // Otherwise, getBinary should be able to get it synchronously + return Promise.resolve().then(function() { return getBinary(wasmBinaryFile); }); +} + +// Create the wasm instance. +// Receives the wasm imports, returns the exports. +function createWasm() { + // prepare imports + var info = { + 'env': asmLibraryArg, + 'wasi_snapshot_preview1': asmLibraryArg, + }; + // Load the wasm module and create an instance of using native support in the JS engine. + // handle a generated wasm instance, receiving its exports and + // performing other necessary setup + /** @param {WebAssembly.Module=} module*/ + function receiveInstance(instance, module) { + var exports = instance.exports; + + Module['asm'] = exports; + + wasmMemory = Module['asm']['memory']; + assert(wasmMemory, "memory not found in wasm exports"); + // This assertion doesn't hold when emscripten is run in --post-link + // mode. + // TODO(sbc): Read INITIAL_MEMORY out of the wasm file in post-link mode. + //assert(wasmMemory.buffer.byteLength === 16777216); + updateGlobalBufferAndViews(wasmMemory.buffer); + + wasmTable = Module['asm']['__indirect_function_table']; + assert(wasmTable, "table not found in wasm exports"); + + addOnInit(Module['asm']['__wasm_call_ctors']); + + removeRunDependency('wasm-instantiate'); + } + // we can't run yet (except in a pthread, where we have a custom sync instantiator) + addRunDependency('wasm-instantiate'); + + // Prefer streaming instantiation if available. + // Async compilation can be confusing when an error on the page overwrites Module + // (for example, if the order of elements is wrong, and the one defining Module is + // later), so we save Module and check it later. + var trueModule = Module; + function receiveInstantiationResult(result) { + // 'result' is a ResultObject object which has both the module and instance. + // receiveInstance() will swap in the exports (to Module.asm) so they can be called + assert(Module === trueModule, 'the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?'); + trueModule = null; + // TODO: Due to Closure regression https://github.com/google/closure-compiler/issues/3193, the above line no longer optimizes out down to the following line. + // When the regression is fixed, can restore the above USE_PTHREADS-enabled path. + receiveInstance(result['instance']); + } + + function instantiateArrayBuffer(receiver) { + return getBinaryPromise().then(function(binary) { + return WebAssembly.instantiate(binary, info); + }).then(function (instance) { + return instance; + }).then(receiver, function(reason) { + err('failed to asynchronously prepare wasm: ' + reason); + + // Warn on some common problems. + if (isFileURI(wasmBinaryFile)) { + err('warning: Loading from a file URI (' + wasmBinaryFile + ') is not supported in most browsers. See https://emscripten.org/docs/getting_started/FAQ.html#how-do-i-run-a-local-webserver-for-testing-why-does-my-program-stall-in-downloading-or-preparing'); + } + abort(reason); + }); + } + + function instantiateAsync() { + if (!wasmBinary && + typeof WebAssembly.instantiateStreaming === 'function' && + !isDataURI(wasmBinaryFile) && + // Don't use streaming for file:// delivered objects in a webview, fetch them synchronously. + !isFileURI(wasmBinaryFile) && + typeof fetch === 'function') { + return fetch(wasmBinaryFile, { credentials: 'same-origin' }).then(function (response) { + var result = WebAssembly.instantiateStreaming(response, info); + + return result.then( + receiveInstantiationResult, + function(reason) { + // We expect the most common failure cause to be a bad MIME type for the binary, + // in which case falling back to ArrayBuffer instantiation should work. + err('wasm streaming compile failed: ' + reason); + err('falling back to ArrayBuffer instantiation'); + return instantiateArrayBuffer(receiveInstantiationResult); + }); + }); + } else { + return instantiateArrayBuffer(receiveInstantiationResult); + } + } + + // User shell pages can write their own Module.instantiateWasm = function(imports, successCallback) callback + // to manually instantiate the Wasm module themselves. This allows pages to run the instantiation parallel + // to any other async startup actions they are performing. + if (Module['instantiateWasm']) { + try { + var exports = Module['instantiateWasm'](info, receiveInstance); + return exports; + } catch(e) { + err('Module.instantiateWasm callback failed with error: ' + e); + return false; + } + } + + instantiateAsync(); + return {}; // no exports yet; we'll fill them in later +} + +// Globals used by JS i64 conversions (see makeSetValue) +var tempDouble; +var tempI64; + +// === Body === + +var ASM_CONSTS = { + +}; + + + + + + + function callRuntimeCallbacks(callbacks) { + while (callbacks.length > 0) { + var callback = callbacks.shift(); + if (typeof callback == 'function') { + callback(Module); // Pass the module as the first argument. + continue; + } + var func = callback.func; + if (typeof func === 'number') { + if (callback.arg === undefined) { + getWasmTableEntry(func)(); + } else { + getWasmTableEntry(func)(callback.arg); + } + } else { + func(callback.arg === undefined ? null : callback.arg); + } + } + } + + function withStackSave(f) { + var stack = stackSave(); + var ret = f(); + stackRestore(stack); + return ret; + } + function demangle(func) { + warnOnce('warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling'); + return func; + } + + function demangleAll(text) { + var regex = + /\b_Z[\w\d_]+/g; + return text.replace(regex, + function(x) { + var y = demangle(x); + return x === y ? x : (y + ' [' + x + ']'); + }); + } + + var wasmTableMirror = []; + function getWasmTableEntry(funcPtr) { + var func = wasmTableMirror[funcPtr]; + if (!func) { + if (funcPtr >= wasmTableMirror.length) wasmTableMirror.length = funcPtr + 1; + wasmTableMirror[funcPtr] = func = wasmTable.get(funcPtr); + } + assert(wasmTable.get(funcPtr) == func, "JavaScript-side Wasm function table mirror is out of date!"); + return func; + } + + function handleException(e) { + // Certain exception types we do not treat as errors since they are used for + // internal control flow. + // 1. ExitStatus, which is thrown by exit() + // 2. "unwind", which is thrown by emscripten_unwind_to_js_event_loop() and others + // that wish to return to JS event loop. + if (e instanceof ExitStatus || e == 'unwind') { + return EXITSTATUS; + } + quit_(1, e); + } + + function jsStackTrace() { + var error = new Error(); + if (!error.stack) { + // IE10+ special cases: It does have callstack info, but it is only populated if an Error object is thrown, + // so try that as a special-case. + try { + throw new Error(); + } catch(e) { + error = e; + } + if (!error.stack) { + return '(no stack trace available)'; + } + } + return error.stack.toString(); + } + + function setWasmTableEntry(idx, func) { + wasmTable.set(idx, func); + wasmTableMirror[idx] = func; + } + + function stackTrace() { + var js = jsStackTrace(); + if (Module['extraStackTrace']) js += '\n' + Module['extraStackTrace'](); + return demangleAll(js); + } + + function ___cxa_allocate_exception(size) { + // Thrown object is prepended by exception metadata block + return _malloc(size + 16) + 16; + } + + function ExceptionInfo(excPtr) { + this.excPtr = excPtr; + this.ptr = excPtr - 16; + + this.set_type = function(type) { + HEAP32[(((this.ptr)+(4))>>2)] = type; + }; + + this.get_type = function() { + return HEAP32[(((this.ptr)+(4))>>2)]; + }; + + this.set_destructor = function(destructor) { + HEAP32[(((this.ptr)+(8))>>2)] = destructor; + }; + + this.get_destructor = function() { + return HEAP32[(((this.ptr)+(8))>>2)]; + }; + + this.set_refcount = function(refcount) { + HEAP32[((this.ptr)>>2)] = refcount; + }; + + this.set_caught = function (caught) { + caught = caught ? 1 : 0; + HEAP8[(((this.ptr)+(12))>>0)] = caught; + }; + + this.get_caught = function () { + return HEAP8[(((this.ptr)+(12))>>0)] != 0; + }; + + this.set_rethrown = function (rethrown) { + rethrown = rethrown ? 1 : 0; + HEAP8[(((this.ptr)+(13))>>0)] = rethrown; + }; + + this.get_rethrown = function () { + return HEAP8[(((this.ptr)+(13))>>0)] != 0; + }; + + // Initialize native structure fields. Should be called once after allocated. + this.init = function(type, destructor) { + this.set_type(type); + this.set_destructor(destructor); + this.set_refcount(0); + this.set_caught(false); + this.set_rethrown(false); + } + + this.add_ref = function() { + var value = HEAP32[((this.ptr)>>2)]; + HEAP32[((this.ptr)>>2)] = value + 1; + }; + + // Returns true if last reference released. + this.release_ref = function() { + var prev = HEAP32[((this.ptr)>>2)]; + HEAP32[((this.ptr)>>2)] = prev - 1; + assert(prev > 0); + return prev === 1; + }; + } + + var exceptionLast = 0; + + var uncaughtExceptionCount = 0; + function ___cxa_throw(ptr, type, destructor) { + var info = new ExceptionInfo(ptr); + // Initialize ExceptionInfo content after it was allocated in __cxa_allocate_exception. + info.init(type, destructor); + exceptionLast = ptr; + uncaughtExceptionCount++; + throw ptr + " - Exception catching is disabled, this exception cannot be caught. Compile with -s NO_DISABLE_EXCEPTION_CATCHING or -s EXCEPTION_CATCHING_ALLOWED=[..] to catch."; + } + + function _abort() { + abort('native code called abort()'); + } + + function _emscripten_memcpy_big(dest, src, num) { + HEAPU8.copyWithin(dest, src, src + num); + } + + function abortOnCannotGrowMemory(requestedSize) { + abort('Cannot enlarge memory arrays to size ' + requestedSize + ' bytes (OOM). Either (1) compile with -s INITIAL_MEMORY=X with X higher than the current value ' + HEAP8.length + ', (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime, or (3) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 '); + } + function _emscripten_resize_heap(requestedSize) { + var oldSize = HEAPU8.length; + requestedSize = requestedSize >>> 0; + abortOnCannotGrowMemory(requestedSize); + } + + var ENV = {}; + + function getExecutableName() { + return thisProgram || './this.program'; + } + function getEnvStrings() { + if (!getEnvStrings.strings) { + // Default values. + // Browser language detection #8751 + var lang = ((typeof navigator === 'object' && navigator.languages && navigator.languages[0]) || 'C').replace('-', '_') + '.UTF-8'; + var env = { + 'USER': 'web_user', + 'LOGNAME': 'web_user', + 'PATH': '/', + 'PWD': '/', + 'HOME': '/home/web_user', + 'LANG': lang, + '_': getExecutableName() + }; + // Apply the user-provided values, if any. + for (var x in ENV) { + // x is a key in ENV; if ENV[x] is undefined, that means it was + // explicitly set to be so. We allow user code to do that to + // force variables with default values to remain unset. + if (ENV[x] === undefined) delete env[x]; + else env[x] = ENV[x]; + } + var strings = []; + for (var x in env) { + strings.push(x + '=' + env[x]); + } + getEnvStrings.strings = strings; + } + return getEnvStrings.strings; + } + + var PATH = {splitPath:function(filename) { + var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/; + return splitPathRe.exec(filename).slice(1); + },normalizeArray:function(parts, allowAboveRoot) { + // if the path tries to go above the root, `up` ends up > 0 + var up = 0; + for (var i = parts.length - 1; i >= 0; i--) { + var last = parts[i]; + if (last === '.') { + parts.splice(i, 1); + } else if (last === '..') { + parts.splice(i, 1); + up++; + } else if (up) { + parts.splice(i, 1); + up--; + } + } + // if the path is allowed to go above the root, restore leading ..s + if (allowAboveRoot) { + for (; up; up--) { + parts.unshift('..'); + } + } + return parts; + },normalize:function(path) { + var isAbsolute = path.charAt(0) === '/', + trailingSlash = path.substr(-1) === '/'; + // Normalize the path + path = PATH.normalizeArray(path.split('/').filter(function(p) { + return !!p; + }), !isAbsolute).join('/'); + if (!path && !isAbsolute) { + path = '.'; + } + if (path && trailingSlash) { + path += '/'; + } + return (isAbsolute ? '/' : '') + path; + },dirname:function(path) { + var result = PATH.splitPath(path), + root = result[0], + dir = result[1]; + if (!root && !dir) { + // No dirname whatsoever + return '.'; + } + if (dir) { + // It has a dirname, strip trailing slash + dir = dir.substr(0, dir.length - 1); + } + return root + dir; + },basename:function(path) { + // EMSCRIPTEN return '/'' for '/', not an empty string + if (path === '/') return '/'; + path = PATH.normalize(path); + path = path.replace(/\/$/, ""); + var lastSlash = path.lastIndexOf('/'); + if (lastSlash === -1) return path; + return path.substr(lastSlash+1); + },extname:function(path) { + return PATH.splitPath(path)[3]; + },join:function() { + var paths = Array.prototype.slice.call(arguments, 0); + return PATH.normalize(paths.join('/')); + },join2:function(l, r) { + return PATH.normalize(l + '/' + r); + }}; + + function getRandomDevice() { + if (typeof crypto === 'object' && typeof crypto['getRandomValues'] === 'function') { + // for modern web browsers + var randomBuffer = new Uint8Array(1); + return function() { crypto.getRandomValues(randomBuffer); return randomBuffer[0]; }; + } else + if (ENVIRONMENT_IS_NODE) { + // for nodejs with or without crypto support included + try { + var crypto_module = require('crypto'); + // nodejs has crypto support + return function() { return crypto_module['randomBytes'](1)[0]; }; + } catch (e) { + // nodejs doesn't have crypto support + } + } + // we couldn't find a proper implementation, as Math.random() is not suitable for /dev/random, see emscripten-core/emscripten/pull/7096 + return function() { abort("no cryptographic support found for randomDevice. consider polyfilling it if you want to use something insecure like Math.random(), e.g. put this in a --pre-js: var crypto = { getRandomValues: function(array) { for (var i = 0; i < array.length; i++) array[i] = (Math.random()*256)|0 } };"); }; + } + + var PATH_FS = {resolve:function() { + var resolvedPath = '', + resolvedAbsolute = false; + for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { + var path = (i >= 0) ? arguments[i] : FS.cwd(); + // Skip empty and invalid entries + if (typeof path !== 'string') { + throw new TypeError('Arguments to path.resolve must be strings'); + } else if (!path) { + return ''; // an invalid portion invalidates the whole thing + } + resolvedPath = path + '/' + resolvedPath; + resolvedAbsolute = path.charAt(0) === '/'; + } + // At this point the path should be resolved to a full absolute path, but + // handle relative paths to be safe (might happen when process.cwd() fails) + resolvedPath = PATH.normalizeArray(resolvedPath.split('/').filter(function(p) { + return !!p; + }), !resolvedAbsolute).join('/'); + return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.'; + },relative:function(from, to) { + from = PATH_FS.resolve(from).substr(1); + to = PATH_FS.resolve(to).substr(1); + function trim(arr) { + var start = 0; + for (; start < arr.length; start++) { + if (arr[start] !== '') break; + } + var end = arr.length - 1; + for (; end >= 0; end--) { + if (arr[end] !== '') break; + } + if (start > end) return []; + return arr.slice(start, end - start + 1); + } + var fromParts = trim(from.split('/')); + var toParts = trim(to.split('/')); + var length = Math.min(fromParts.length, toParts.length); + var samePartsLength = length; + for (var i = 0; i < length; i++) { + if (fromParts[i] !== toParts[i]) { + samePartsLength = i; + break; + } + } + var outputParts = []; + for (var i = samePartsLength; i < fromParts.length; i++) { + outputParts.push('..'); + } + outputParts = outputParts.concat(toParts.slice(samePartsLength)); + return outputParts.join('/'); + }}; + + var TTY = {ttys:[],init:function () { + // https://github.com/emscripten-core/emscripten/pull/1555 + // if (ENVIRONMENT_IS_NODE) { + // // currently, FS.init does not distinguish if process.stdin is a file or TTY + // // device, it always assumes it's a TTY device. because of this, we're forcing + // // process.stdin to UTF8 encoding to at least make stdin reading compatible + // // with text files until FS.init can be refactored. + // process['stdin']['setEncoding']('utf8'); + // } + },shutdown:function() { + // https://github.com/emscripten-core/emscripten/pull/1555 + // if (ENVIRONMENT_IS_NODE) { + // // inolen: any idea as to why node -e 'process.stdin.read()' wouldn't exit immediately (with process.stdin being a tty)? + // // isaacs: because now it's reading from the stream, you've expressed interest in it, so that read() kicks off a _read() which creates a ReadReq operation + // // inolen: I thought read() in that case was a synchronous operation that just grabbed some amount of buffered data if it exists? + // // isaacs: it is. but it also triggers a _read() call, which calls readStart() on the handle + // // isaacs: do process.stdin.pause() and i'd think it'd probably close the pending call + // process['stdin']['pause'](); + // } + },register:function(dev, ops) { + TTY.ttys[dev] = { input: [], output: [], ops: ops }; + FS.registerDevice(dev, TTY.stream_ops); + },stream_ops:{open:function(stream) { + var tty = TTY.ttys[stream.node.rdev]; + if (!tty) { + throw new FS.ErrnoError(43); + } + stream.tty = tty; + stream.seekable = false; + },close:function(stream) { + // flush any pending line data + stream.tty.ops.flush(stream.tty); + },flush:function(stream) { + stream.tty.ops.flush(stream.tty); + },read:function(stream, buffer, offset, length, pos /* ignored */) { + if (!stream.tty || !stream.tty.ops.get_char) { + throw new FS.ErrnoError(60); + } + var bytesRead = 0; + for (var i = 0; i < length; i++) { + var result; + try { + result = stream.tty.ops.get_char(stream.tty); + } catch (e) { + throw new FS.ErrnoError(29); + } + if (result === undefined && bytesRead === 0) { + throw new FS.ErrnoError(6); + } + if (result === null || result === undefined) break; + bytesRead++; + buffer[offset+i] = result; + } + if (bytesRead) { + stream.node.timestamp = Date.now(); + } + return bytesRead; + },write:function(stream, buffer, offset, length, pos) { + if (!stream.tty || !stream.tty.ops.put_char) { + throw new FS.ErrnoError(60); + } + try { + for (var i = 0; i < length; i++) { + stream.tty.ops.put_char(stream.tty, buffer[offset+i]); + } + } catch (e) { + throw new FS.ErrnoError(29); + } + if (length) { + stream.node.timestamp = Date.now(); + } + return i; + }},default_tty_ops:{get_char:function(tty) { + if (!tty.input.length) { + var result = null; + if (ENVIRONMENT_IS_NODE) { + // we will read data by chunks of BUFSIZE + var BUFSIZE = 256; + var buf = Buffer.alloc(BUFSIZE); + var bytesRead = 0; + + try { + bytesRead = fs.readSync(process.stdin.fd, buf, 0, BUFSIZE, null); + } catch(e) { + // Cross-platform differences: on Windows, reading EOF throws an exception, but on other OSes, + // reading EOF returns 0. Uniformize behavior by treating the EOF exception to return 0. + if (e.toString().includes('EOF')) bytesRead = 0; + else throw e; + } + + if (bytesRead > 0) { + result = buf.slice(0, bytesRead).toString('utf-8'); + } else { + result = null; + } + } else + if (typeof window != 'undefined' && + typeof window.prompt == 'function') { + // Browser. + result = window.prompt('Input: '); // returns null on cancel + if (result !== null) { + result += '\n'; + } + } else if (typeof readline == 'function') { + // Command line. + result = readline(); + if (result !== null) { + result += '\n'; + } + } + if (!result) { + return null; + } + tty.input = intArrayFromString(result, true); + } + return tty.input.shift(); + },put_char:function(tty, val) { + if (val === null || val === 10) { + out(UTF8ArrayToString(tty.output, 0)); + tty.output = []; + } else { + if (val != 0) tty.output.push(val); // val == 0 would cut text output off in the middle. + } + },flush:function(tty) { + if (tty.output && tty.output.length > 0) { + out(UTF8ArrayToString(tty.output, 0)); + tty.output = []; + } + }},default_tty1_ops:{put_char:function(tty, val) { + if (val === null || val === 10) { + err(UTF8ArrayToString(tty.output, 0)); + tty.output = []; + } else { + if (val != 0) tty.output.push(val); + } + },flush:function(tty) { + if (tty.output && tty.output.length > 0) { + err(UTF8ArrayToString(tty.output, 0)); + tty.output = []; + } + }}}; + + function zeroMemory(address, size) { + HEAPU8.fill(0, address, address + size); + } + + function alignMemory(size, alignment) { + assert(alignment, "alignment argument is required"); + return Math.ceil(size / alignment) * alignment; + } + function mmapAlloc(size) { + abort('internal error: mmapAlloc called but `memalign` native symbol not exported'); + } + var MEMFS = {ops_table:null,mount:function(mount) { + return MEMFS.createNode(null, '/', 16384 | 511 /* 0777 */, 0); + },createNode:function(parent, name, mode, dev) { + if (FS.isBlkdev(mode) || FS.isFIFO(mode)) { + // no supported + throw new FS.ErrnoError(63); + } + if (!MEMFS.ops_table) { + MEMFS.ops_table = { + dir: { + node: { + getattr: MEMFS.node_ops.getattr, + setattr: MEMFS.node_ops.setattr, + lookup: MEMFS.node_ops.lookup, + mknod: MEMFS.node_ops.mknod, + rename: MEMFS.node_ops.rename, + unlink: MEMFS.node_ops.unlink, + rmdir: MEMFS.node_ops.rmdir, + readdir: MEMFS.node_ops.readdir, + symlink: MEMFS.node_ops.symlink + }, + stream: { + llseek: MEMFS.stream_ops.llseek + } + }, + file: { + node: { + getattr: MEMFS.node_ops.getattr, + setattr: MEMFS.node_ops.setattr + }, + stream: { + llseek: MEMFS.stream_ops.llseek, + read: MEMFS.stream_ops.read, + write: MEMFS.stream_ops.write, + allocate: MEMFS.stream_ops.allocate, + mmap: MEMFS.stream_ops.mmap, + msync: MEMFS.stream_ops.msync + } + }, + link: { + node: { + getattr: MEMFS.node_ops.getattr, + setattr: MEMFS.node_ops.setattr, + readlink: MEMFS.node_ops.readlink + }, + stream: {} + }, + chrdev: { + node: { + getattr: MEMFS.node_ops.getattr, + setattr: MEMFS.node_ops.setattr + }, + stream: FS.chrdev_stream_ops + } + }; + } + var node = FS.createNode(parent, name, mode, dev); + if (FS.isDir(node.mode)) { + node.node_ops = MEMFS.ops_table.dir.node; + node.stream_ops = MEMFS.ops_table.dir.stream; + node.contents = {}; + } else if (FS.isFile(node.mode)) { + node.node_ops = MEMFS.ops_table.file.node; + node.stream_ops = MEMFS.ops_table.file.stream; + node.usedBytes = 0; // The actual number of bytes used in the typed array, as opposed to contents.length which gives the whole capacity. + // When the byte data of the file is populated, this will point to either a typed array, or a normal JS array. Typed arrays are preferred + // for performance, and used by default. However, typed arrays are not resizable like normal JS arrays are, so there is a small disk size + // penalty involved for appending file writes that continuously grow a file similar to std::vector capacity vs used -scheme. + node.contents = null; + } else if (FS.isLink(node.mode)) { + node.node_ops = MEMFS.ops_table.link.node; + node.stream_ops = MEMFS.ops_table.link.stream; + } else if (FS.isChrdev(node.mode)) { + node.node_ops = MEMFS.ops_table.chrdev.node; + node.stream_ops = MEMFS.ops_table.chrdev.stream; + } + node.timestamp = Date.now(); + // add the new node to the parent + if (parent) { + parent.contents[name] = node; + parent.timestamp = node.timestamp; + } + return node; + },getFileDataAsTypedArray:function(node) { + if (!node.contents) return new Uint8Array(0); + if (node.contents.subarray) return node.contents.subarray(0, node.usedBytes); // Make sure to not return excess unused bytes. + return new Uint8Array(node.contents); + },expandFileStorage:function(node, newCapacity) { + var prevCapacity = node.contents ? node.contents.length : 0; + if (prevCapacity >= newCapacity) return; // No need to expand, the storage was already large enough. + // Don't expand strictly to the given requested limit if it's only a very small increase, but instead geometrically grow capacity. + // For small filesizes (<1MB), perform size*2 geometric increase, but for large sizes, do a much more conservative size*1.125 increase to + // avoid overshooting the allocation cap by a very large margin. + var CAPACITY_DOUBLING_MAX = 1024 * 1024; + newCapacity = Math.max(newCapacity, (prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2.0 : 1.125)) >>> 0); + if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256); // At minimum allocate 256b for each file when expanding. + var oldContents = node.contents; + node.contents = new Uint8Array(newCapacity); // Allocate new storage. + if (node.usedBytes > 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0); // Copy old data over to the new storage. + },resizeFileStorage:function(node, newSize) { + if (node.usedBytes == newSize) return; + if (newSize == 0) { + node.contents = null; // Fully decommit when requesting a resize to zero. + node.usedBytes = 0; + } else { + var oldContents = node.contents; + node.contents = new Uint8Array(newSize); // Allocate new storage. + if (oldContents) { + node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes))); // Copy old data over to the new storage. + } + node.usedBytes = newSize; + } + },node_ops:{getattr:function(node) { + var attr = {}; + // device numbers reuse inode numbers. + attr.dev = FS.isChrdev(node.mode) ? node.id : 1; + attr.ino = node.id; + attr.mode = node.mode; + attr.nlink = 1; + attr.uid = 0; + attr.gid = 0; + attr.rdev = node.rdev; + if (FS.isDir(node.mode)) { + attr.size = 4096; + } else if (FS.isFile(node.mode)) { + attr.size = node.usedBytes; + } else if (FS.isLink(node.mode)) { + attr.size = node.link.length; + } else { + attr.size = 0; + } + attr.atime = new Date(node.timestamp); + attr.mtime = new Date(node.timestamp); + attr.ctime = new Date(node.timestamp); + // NOTE: In our implementation, st_blocks = Math.ceil(st_size/st_blksize), + // but this is not required by the standard. + attr.blksize = 4096; + attr.blocks = Math.ceil(attr.size / attr.blksize); + return attr; + },setattr:function(node, attr) { + if (attr.mode !== undefined) { + node.mode = attr.mode; + } + if (attr.timestamp !== undefined) { + node.timestamp = attr.timestamp; + } + if (attr.size !== undefined) { + MEMFS.resizeFileStorage(node, attr.size); + } + },lookup:function(parent, name) { + throw FS.genericErrors[44]; + },mknod:function(parent, name, mode, dev) { + return MEMFS.createNode(parent, name, mode, dev); + },rename:function(old_node, new_dir, new_name) { + // if we're overwriting a directory at new_name, make sure it's empty. + if (FS.isDir(old_node.mode)) { + var new_node; + try { + new_node = FS.lookupNode(new_dir, new_name); + } catch (e) { + } + if (new_node) { + for (var i in new_node.contents) { + throw new FS.ErrnoError(55); + } + } + } + // do the internal rewiring + delete old_node.parent.contents[old_node.name]; + old_node.parent.timestamp = Date.now() + old_node.name = new_name; + new_dir.contents[new_name] = old_node; + new_dir.timestamp = old_node.parent.timestamp; + old_node.parent = new_dir; + },unlink:function(parent, name) { + delete parent.contents[name]; + parent.timestamp = Date.now(); + },rmdir:function(parent, name) { + var node = FS.lookupNode(parent, name); + for (var i in node.contents) { + throw new FS.ErrnoError(55); + } + delete parent.contents[name]; + parent.timestamp = Date.now(); + },readdir:function(node) { + var entries = ['.', '..']; + for (var key in node.contents) { + if (!node.contents.hasOwnProperty(key)) { + continue; + } + entries.push(key); + } + return entries; + },symlink:function(parent, newname, oldpath) { + var node = MEMFS.createNode(parent, newname, 511 /* 0777 */ | 40960, 0); + node.link = oldpath; + return node; + },readlink:function(node) { + if (!FS.isLink(node.mode)) { + throw new FS.ErrnoError(28); + } + return node.link; + }},stream_ops:{read:function(stream, buffer, offset, length, position) { + var contents = stream.node.contents; + if (position >= stream.node.usedBytes) return 0; + var size = Math.min(stream.node.usedBytes - position, length); + assert(size >= 0); + if (size > 8 && contents.subarray) { // non-trivial, and typed array + buffer.set(contents.subarray(position, position + size), offset); + } else { + for (var i = 0; i < size; i++) buffer[offset + i] = contents[position + i]; + } + return size; + },write:function(stream, buffer, offset, length, position, canOwn) { + // The data buffer should be a typed array view + assert(!(buffer instanceof ArrayBuffer)); + + if (!length) return 0; + var node = stream.node; + node.timestamp = Date.now(); + + if (buffer.subarray && (!node.contents || node.contents.subarray)) { // This write is from a typed array to a typed array? + if (canOwn) { + assert(position === 0, 'canOwn must imply no weird position inside the file'); + node.contents = buffer.subarray(offset, offset + length); + node.usedBytes = length; + return length; + } else if (node.usedBytes === 0 && position === 0) { // If this is a simple first write to an empty file, do a fast set since we don't need to care about old data. + node.contents = buffer.slice(offset, offset + length); + node.usedBytes = length; + return length; + } else if (position + length <= node.usedBytes) { // Writing to an already allocated and used subrange of the file? + node.contents.set(buffer.subarray(offset, offset + length), position); + return length; + } + } + + // Appending to an existing file and we need to reallocate, or source data did not come as a typed array. + MEMFS.expandFileStorage(node, position+length); + if (node.contents.subarray && buffer.subarray) { + // Use typed array write which is available. + node.contents.set(buffer.subarray(offset, offset + length), position); + } else { + for (var i = 0; i < length; i++) { + node.contents[position + i] = buffer[offset + i]; // Or fall back to manual write if not. + } + } + node.usedBytes = Math.max(node.usedBytes, position + length); + return length; + },llseek:function(stream, offset, whence) { + var position = offset; + if (whence === 1) { + position += stream.position; + } else if (whence === 2) { + if (FS.isFile(stream.node.mode)) { + position += stream.node.usedBytes; + } + } + if (position < 0) { + throw new FS.ErrnoError(28); + } + return position; + },allocate:function(stream, offset, length) { + MEMFS.expandFileStorage(stream.node, offset + length); + stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length); + },mmap:function(stream, address, length, position, prot, flags) { + if (address !== 0) { + // We don't currently support location hints for the address of the mapping + throw new FS.ErrnoError(28); + } + if (!FS.isFile(stream.node.mode)) { + throw new FS.ErrnoError(43); + } + var ptr; + var allocated; + var contents = stream.node.contents; + // Only make a new copy when MAP_PRIVATE is specified. + if (!(flags & 2) && contents.buffer === buffer) { + // We can't emulate MAP_SHARED when the file is not backed by the buffer + // we're mapping to (e.g. the HEAP buffer). + allocated = false; + ptr = contents.byteOffset; + } else { + // Try to avoid unnecessary slices. + if (position > 0 || position + length < contents.length) { + if (contents.subarray) { + contents = contents.subarray(position, position + length); + } else { + contents = Array.prototype.slice.call(contents, position, position + length); + } + } + allocated = true; + ptr = mmapAlloc(length); + if (!ptr) { + throw new FS.ErrnoError(48); + } + HEAP8.set(contents, ptr); + } + return { ptr: ptr, allocated: allocated }; + },msync:function(stream, buffer, offset, length, mmapFlags) { + if (!FS.isFile(stream.node.mode)) { + throw new FS.ErrnoError(43); + } + if (mmapFlags & 2) { + // MAP_PRIVATE calls need not to be synced back to underlying fs + return 0; + } + + var bytesWritten = MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false); + // should we check if bytesWritten and length are the same? + return 0; + }}}; + + function asyncLoad(url, onload, onerror, noRunDep) { + var dep = !noRunDep ? getUniqueRunDependency('al ' + url) : ''; + readAsync(url, function(arrayBuffer) { + assert(arrayBuffer, 'Loading data file "' + url + '" failed (no arrayBuffer).'); + onload(new Uint8Array(arrayBuffer)); + if (dep) removeRunDependency(dep); + }, function(event) { + if (onerror) { + onerror(); + } else { + throw 'Loading data file "' + url + '" failed.'; + } + }); + if (dep) addRunDependency(dep); + } + + var ERRNO_MESSAGES = {0:"Success",1:"Arg list too long",2:"Permission denied",3:"Address already in use",4:"Address not available",5:"Address family not supported by protocol family",6:"No more processes",7:"Socket already connected",8:"Bad file number",9:"Trying to read unreadable message",10:"Mount device busy",11:"Operation canceled",12:"No children",13:"Connection aborted",14:"Connection refused",15:"Connection reset by peer",16:"File locking deadlock error",17:"Destination address required",18:"Math arg out of domain of func",19:"Quota exceeded",20:"File exists",21:"Bad address",22:"File too large",23:"Host is unreachable",24:"Identifier removed",25:"Illegal byte sequence",26:"Connection already in progress",27:"Interrupted system call",28:"Invalid argument",29:"I/O error",30:"Socket is already connected",31:"Is a directory",32:"Too many symbolic links",33:"Too many open files",34:"Too many links",35:"Message too long",36:"Multihop attempted",37:"File or path name too long",38:"Network interface is not configured",39:"Connection reset by network",40:"Network is unreachable",41:"Too many open files in system",42:"No buffer space available",43:"No such device",44:"No such file or directory",45:"Exec format error",46:"No record locks available",47:"The link has been severed",48:"Not enough core",49:"No message of desired type",50:"Protocol not available",51:"No space left on device",52:"Function not implemented",53:"Socket is not connected",54:"Not a directory",55:"Directory not empty",56:"State not recoverable",57:"Socket operation on non-socket",59:"Not a typewriter",60:"No such device or address",61:"Value too large for defined data type",62:"Previous owner died",63:"Not super-user",64:"Broken pipe",65:"Protocol error",66:"Unknown protocol",67:"Protocol wrong type for socket",68:"Math result not representable",69:"Read only file system",70:"Illegal seek",71:"No such process",72:"Stale file handle",73:"Connection timed out",74:"Text file busy",75:"Cross-device link",100:"Device not a stream",101:"Bad font file fmt",102:"Invalid slot",103:"Invalid request code",104:"No anode",105:"Block device required",106:"Channel number out of range",107:"Level 3 halted",108:"Level 3 reset",109:"Link number out of range",110:"Protocol driver not attached",111:"No CSI structure available",112:"Level 2 halted",113:"Invalid exchange",114:"Invalid request descriptor",115:"Exchange full",116:"No data (for no delay io)",117:"Timer expired",118:"Out of streams resources",119:"Machine is not on the network",120:"Package not installed",121:"The object is remote",122:"Advertise error",123:"Srmount error",124:"Communication error on send",125:"Cross mount point (not really error)",126:"Given log. name not unique",127:"f.d. invalid for this operation",128:"Remote address changed",129:"Can access a needed shared lib",130:"Accessing a corrupted shared lib",131:".lib section in a.out corrupted",132:"Attempting to link in too many libs",133:"Attempting to exec a shared library",135:"Streams pipe error",136:"Too many users",137:"Socket type not supported",138:"Not supported",139:"Protocol family not supported",140:"Can't send after socket shutdown",141:"Too many references",142:"Host is down",148:"No medium (in tape drive)",156:"Level 2 not synchronized"}; + + var ERRNO_CODES = {}; + var FS = {root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:function(path, opts = {}) { + path = PATH_FS.resolve(FS.cwd(), path); + + if (!path) return { path: '', node: null }; + + var defaults = { + follow_mount: true, + recurse_count: 0 + }; + for (var key in defaults) { + if (opts[key] === undefined) { + opts[key] = defaults[key]; + } + } + + if (opts.recurse_count > 8) { // max recursive lookup of 8 + throw new FS.ErrnoError(32); + } + + // split the path + var parts = PATH.normalizeArray(path.split('/').filter(function(p) { + return !!p; + }), false); + + // start at the root + var current = FS.root; + var current_path = '/'; + + for (var i = 0; i < parts.length; i++) { + var islast = (i === parts.length-1); + if (islast && opts.parent) { + // stop resolving + break; + } + + current = FS.lookupNode(current, parts[i]); + current_path = PATH.join2(current_path, parts[i]); + + // jump to the mount's root node if this is a mountpoint + if (FS.isMountpoint(current)) { + if (!islast || (islast && opts.follow_mount)) { + current = current.mounted.root; + } + } + + // by default, lookupPath will not follow a symlink if it is the final path component. + // setting opts.follow = true will override this behavior. + if (!islast || opts.follow) { + var count = 0; + while (FS.isLink(current.mode)) { + var link = FS.readlink(current_path); + current_path = PATH_FS.resolve(PATH.dirname(current_path), link); + + var lookup = FS.lookupPath(current_path, { recurse_count: opts.recurse_count }); + current = lookup.node; + + if (count++ > 40) { // limit max consecutive symlinks to 40 (SYMLOOP_MAX). + throw new FS.ErrnoError(32); + } + } + } + } + + return { path: current_path, node: current }; + },getPath:function(node) { + var path; + while (true) { + if (FS.isRoot(node)) { + var mount = node.mount.mountpoint; + if (!path) return mount; + return mount[mount.length-1] !== '/' ? mount + '/' + path : mount + path; + } + path = path ? node.name + '/' + path : node.name; + node = node.parent; + } + },hashName:function(parentid, name) { + var hash = 0; + + for (var i = 0; i < name.length; i++) { + hash = ((hash << 5) - hash + name.charCodeAt(i)) | 0; + } + return ((parentid + hash) >>> 0) % FS.nameTable.length; + },hashAddNode:function(node) { + var hash = FS.hashName(node.parent.id, node.name); + node.name_next = FS.nameTable[hash]; + FS.nameTable[hash] = node; + },hashRemoveNode:function(node) { + var hash = FS.hashName(node.parent.id, node.name); + if (FS.nameTable[hash] === node) { + FS.nameTable[hash] = node.name_next; + } else { + var current = FS.nameTable[hash]; + while (current) { + if (current.name_next === node) { + current.name_next = node.name_next; + break; + } + current = current.name_next; + } + } + },lookupNode:function(parent, name) { + var errCode = FS.mayLookup(parent); + if (errCode) { + throw new FS.ErrnoError(errCode, parent); + } + var hash = FS.hashName(parent.id, name); + for (var node = FS.nameTable[hash]; node; node = node.name_next) { + var nodeName = node.name; + if (node.parent.id === parent.id && nodeName === name) { + return node; + } + } + // if we failed to find it in the cache, call into the VFS + return FS.lookup(parent, name); + },createNode:function(parent, name, mode, rdev) { + assert(typeof parent === 'object') + var node = new FS.FSNode(parent, name, mode, rdev); + + FS.hashAddNode(node); + + return node; + },destroyNode:function(node) { + FS.hashRemoveNode(node); + },isRoot:function(node) { + return node === node.parent; + },isMountpoint:function(node) { + return !!node.mounted; + },isFile:function(mode) { + return (mode & 61440) === 32768; + },isDir:function(mode) { + return (mode & 61440) === 16384; + },isLink:function(mode) { + return (mode & 61440) === 40960; + },isChrdev:function(mode) { + return (mode & 61440) === 8192; + },isBlkdev:function(mode) { + return (mode & 61440) === 24576; + },isFIFO:function(mode) { + return (mode & 61440) === 4096; + },isSocket:function(mode) { + return (mode & 49152) === 49152; + },flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:function(str) { + var flags = FS.flagModes[str]; + if (typeof flags === 'undefined') { + throw new Error('Unknown file open mode: ' + str); + } + return flags; + },flagsToPermissionString:function(flag) { + var perms = ['r', 'w', 'rw'][flag & 3]; + if ((flag & 512)) { + perms += 'w'; + } + return perms; + },nodePermissions:function(node, perms) { + if (FS.ignorePermissions) { + return 0; + } + // return 0 if any user, group or owner bits are set. + if (perms.includes('r') && !(node.mode & 292)) { + return 2; + } else if (perms.includes('w') && !(node.mode & 146)) { + return 2; + } else if (perms.includes('x') && !(node.mode & 73)) { + return 2; + } + return 0; + },mayLookup:function(dir) { + var errCode = FS.nodePermissions(dir, 'x'); + if (errCode) return errCode; + if (!dir.node_ops.lookup) return 2; + return 0; + },mayCreate:function(dir, name) { + try { + var node = FS.lookupNode(dir, name); + return 20; + } catch (e) { + } + return FS.nodePermissions(dir, 'wx'); + },mayDelete:function(dir, name, isdir) { + var node; + try { + node = FS.lookupNode(dir, name); + } catch (e) { + return e.errno; + } + var errCode = FS.nodePermissions(dir, 'wx'); + if (errCode) { + return errCode; + } + if (isdir) { + if (!FS.isDir(node.mode)) { + return 54; + } + if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) { + return 10; + } + } else { + if (FS.isDir(node.mode)) { + return 31; + } + } + return 0; + },mayOpen:function(node, flags) { + if (!node) { + return 44; + } + if (FS.isLink(node.mode)) { + return 32; + } else if (FS.isDir(node.mode)) { + if (FS.flagsToPermissionString(flags) !== 'r' || // opening for write + (flags & 512)) { // TODO: check for O_SEARCH? (== search for dir only) + return 31; + } + } + return FS.nodePermissions(node, FS.flagsToPermissionString(flags)); + },MAX_OPEN_FDS:4096,nextfd:function(fd_start = 0, fd_end = FS.MAX_OPEN_FDS) { + for (var fd = fd_start; fd <= fd_end; fd++) { + if (!FS.streams[fd]) { + return fd; + } + } + throw new FS.ErrnoError(33); + },getStream:function(fd) { + return FS.streams[fd]; + },createStream:function(stream, fd_start, fd_end) { + if (!FS.FSStream) { + FS.FSStream = /** @constructor */ function(){}; + FS.FSStream.prototype = { + object: { + get: function() { return this.node; }, + set: function(val) { this.node = val; } + }, + isRead: { + get: function() { return (this.flags & 2097155) !== 1; } + }, + isWrite: { + get: function() { return (this.flags & 2097155) !== 0; } + }, + isAppend: { + get: function() { return (this.flags & 1024); } + } + }; + } + // clone it, so we can return an instance of FSStream + var newStream = new FS.FSStream(); + for (var p in stream) { + newStream[p] = stream[p]; + } + stream = newStream; + var fd = FS.nextfd(fd_start, fd_end); + stream.fd = fd; + FS.streams[fd] = stream; + return stream; + },closeStream:function(fd) { + FS.streams[fd] = null; + },chrdev_stream_ops:{open:function(stream) { + var device = FS.getDevice(stream.node.rdev); + // override node's stream ops with the device's + stream.stream_ops = device.stream_ops; + // forward the open call + if (stream.stream_ops.open) { + stream.stream_ops.open(stream); + } + },llseek:function() { + throw new FS.ErrnoError(70); + }},major:function(dev) { + return ((dev) >> 8); + },minor:function(dev) { + return ((dev) & 0xff); + },makedev:function(ma, mi) { + return ((ma) << 8 | (mi)); + },registerDevice:function(dev, ops) { + FS.devices[dev] = { stream_ops: ops }; + },getDevice:function(dev) { + return FS.devices[dev]; + },getMounts:function(mount) { + var mounts = []; + var check = [mount]; + + while (check.length) { + var m = check.pop(); + + mounts.push(m); + + check.push.apply(check, m.mounts); + } + + return mounts; + },syncfs:function(populate, callback) { + if (typeof(populate) === 'function') { + callback = populate; + populate = false; + } + + FS.syncFSRequests++; + + if (FS.syncFSRequests > 1) { + err('warning: ' + FS.syncFSRequests + ' FS.syncfs operations in flight at once, probably just doing extra work'); + } + + var mounts = FS.getMounts(FS.root.mount); + var completed = 0; + + function doCallback(errCode) { + assert(FS.syncFSRequests > 0); + FS.syncFSRequests--; + return callback(errCode); + } + + function done(errCode) { + if (errCode) { + if (!done.errored) { + done.errored = true; + return doCallback(errCode); + } + return; + } + if (++completed >= mounts.length) { + doCallback(null); + } + }; + + // sync all mounts + mounts.forEach(function (mount) { + if (!mount.type.syncfs) { + return done(null); + } + mount.type.syncfs(mount, populate, done); + }); + },mount:function(type, opts, mountpoint) { + if (typeof type === 'string') { + // The filesystem was not included, and instead we have an error + // message stored in the variable. + throw type; + } + var root = mountpoint === '/'; + var pseudo = !mountpoint; + var node; + + if (root && FS.root) { + throw new FS.ErrnoError(10); + } else if (!root && !pseudo) { + var lookup = FS.lookupPath(mountpoint, { follow_mount: false }); + + mountpoint = lookup.path; // use the absolute path + node = lookup.node; + + if (FS.isMountpoint(node)) { + throw new FS.ErrnoError(10); + } + + if (!FS.isDir(node.mode)) { + throw new FS.ErrnoError(54); + } + } + + var mount = { + type: type, + opts: opts, + mountpoint: mountpoint, + mounts: [] + }; + + // create a root node for the fs + var mountRoot = type.mount(mount); + mountRoot.mount = mount; + mount.root = mountRoot; + + if (root) { + FS.root = mountRoot; + } else if (node) { + // set as a mountpoint + node.mounted = mount; + + // add the new mount to the current mount's children + if (node.mount) { + node.mount.mounts.push(mount); + } + } + + return mountRoot; + },unmount:function (mountpoint) { + var lookup = FS.lookupPath(mountpoint, { follow_mount: false }); + + if (!FS.isMountpoint(lookup.node)) { + throw new FS.ErrnoError(28); + } + + // destroy the nodes for this mount, and all its child mounts + var node = lookup.node; + var mount = node.mounted; + var mounts = FS.getMounts(mount); + + Object.keys(FS.nameTable).forEach(function (hash) { + var current = FS.nameTable[hash]; + + while (current) { + var next = current.name_next; + + if (mounts.includes(current.mount)) { + FS.destroyNode(current); + } + + current = next; + } + }); + + // no longer a mountpoint + node.mounted = null; + + // remove this mount from the child mounts + var idx = node.mount.mounts.indexOf(mount); + assert(idx !== -1); + node.mount.mounts.splice(idx, 1); + },lookup:function(parent, name) { + return parent.node_ops.lookup(parent, name); + },mknod:function(path, mode, dev) { + var lookup = FS.lookupPath(path, { parent: true }); + var parent = lookup.node; + var name = PATH.basename(path); + if (!name || name === '.' || name === '..') { + throw new FS.ErrnoError(28); + } + var errCode = FS.mayCreate(parent, name); + if (errCode) { + throw new FS.ErrnoError(errCode); + } + if (!parent.node_ops.mknod) { + throw new FS.ErrnoError(63); + } + return parent.node_ops.mknod(parent, name, mode, dev); + },create:function(path, mode) { + mode = mode !== undefined ? mode : 438 /* 0666 */; + mode &= 4095; + mode |= 32768; + return FS.mknod(path, mode, 0); + },mkdir:function(path, mode) { + mode = mode !== undefined ? mode : 511 /* 0777 */; + mode &= 511 | 512; + mode |= 16384; + return FS.mknod(path, mode, 0); + },mkdirTree:function(path, mode) { + var dirs = path.split('/'); + var d = ''; + for (var i = 0; i < dirs.length; ++i) { + if (!dirs[i]) continue; + d += '/' + dirs[i]; + try { + FS.mkdir(d, mode); + } catch(e) { + if (e.errno != 20) throw e; + } + } + },mkdev:function(path, mode, dev) { + if (typeof(dev) === 'undefined') { + dev = mode; + mode = 438 /* 0666 */; + } + mode |= 8192; + return FS.mknod(path, mode, dev); + },symlink:function(oldpath, newpath) { + if (!PATH_FS.resolve(oldpath)) { + throw new FS.ErrnoError(44); + } + var lookup = FS.lookupPath(newpath, { parent: true }); + var parent = lookup.node; + if (!parent) { + throw new FS.ErrnoError(44); + } + var newname = PATH.basename(newpath); + var errCode = FS.mayCreate(parent, newname); + if (errCode) { + throw new FS.ErrnoError(errCode); + } + if (!parent.node_ops.symlink) { + throw new FS.ErrnoError(63); + } + return parent.node_ops.symlink(parent, newname, oldpath); + },rename:function(old_path, new_path) { + var old_dirname = PATH.dirname(old_path); + var new_dirname = PATH.dirname(new_path); + var old_name = PATH.basename(old_path); + var new_name = PATH.basename(new_path); + // parents must exist + var lookup, old_dir, new_dir; + + // let the errors from non existant directories percolate up + lookup = FS.lookupPath(old_path, { parent: true }); + old_dir = lookup.node; + lookup = FS.lookupPath(new_path, { parent: true }); + new_dir = lookup.node; + + if (!old_dir || !new_dir) throw new FS.ErrnoError(44); + // need to be part of the same mount + if (old_dir.mount !== new_dir.mount) { + throw new FS.ErrnoError(75); + } + // source must exist + var old_node = FS.lookupNode(old_dir, old_name); + // old path should not be an ancestor of the new path + var relative = PATH_FS.relative(old_path, new_dirname); + if (relative.charAt(0) !== '.') { + throw new FS.ErrnoError(28); + } + // new path should not be an ancestor of the old path + relative = PATH_FS.relative(new_path, old_dirname); + if (relative.charAt(0) !== '.') { + throw new FS.ErrnoError(55); + } + // see if the new path already exists + var new_node; + try { + new_node = FS.lookupNode(new_dir, new_name); + } catch (e) { + // not fatal + } + // early out if nothing needs to change + if (old_node === new_node) { + return; + } + // we'll need to delete the old entry + var isdir = FS.isDir(old_node.mode); + var errCode = FS.mayDelete(old_dir, old_name, isdir); + if (errCode) { + throw new FS.ErrnoError(errCode); + } + // need delete permissions if we'll be overwriting. + // need create permissions if new doesn't already exist. + errCode = new_node ? + FS.mayDelete(new_dir, new_name, isdir) : + FS.mayCreate(new_dir, new_name); + if (errCode) { + throw new FS.ErrnoError(errCode); + } + if (!old_dir.node_ops.rename) { + throw new FS.ErrnoError(63); + } + if (FS.isMountpoint(old_node) || (new_node && FS.isMountpoint(new_node))) { + throw new FS.ErrnoError(10); + } + // if we are going to change the parent, check write permissions + if (new_dir !== old_dir) { + errCode = FS.nodePermissions(old_dir, 'w'); + if (errCode) { + throw new FS.ErrnoError(errCode); + } + } + // remove the node from the lookup hash + FS.hashRemoveNode(old_node); + // do the underlying fs rename + try { + old_dir.node_ops.rename(old_node, new_dir, new_name); + } catch (e) { + throw e; + } finally { + // add the node back to the hash (in case node_ops.rename + // changed its name) + FS.hashAddNode(old_node); + } + },rmdir:function(path) { + var lookup = FS.lookupPath(path, { parent: true }); + var parent = lookup.node; + var name = PATH.basename(path); + var node = FS.lookupNode(parent, name); + var errCode = FS.mayDelete(parent, name, true); + if (errCode) { + throw new FS.ErrnoError(errCode); + } + if (!parent.node_ops.rmdir) { + throw new FS.ErrnoError(63); + } + if (FS.isMountpoint(node)) { + throw new FS.ErrnoError(10); + } + parent.node_ops.rmdir(parent, name); + FS.destroyNode(node); + },readdir:function(path) { + var lookup = FS.lookupPath(path, { follow: true }); + var node = lookup.node; + if (!node.node_ops.readdir) { + throw new FS.ErrnoError(54); + } + return node.node_ops.readdir(node); + },unlink:function(path) { + var lookup = FS.lookupPath(path, { parent: true }); + var parent = lookup.node; + if (!parent) { + throw new FS.ErrnoError(44); + } + var name = PATH.basename(path); + var node = FS.lookupNode(parent, name); + var errCode = FS.mayDelete(parent, name, false); + if (errCode) { + // According to POSIX, we should map EISDIR to EPERM, but + // we instead do what Linux does (and we must, as we use + // the musl linux libc). + throw new FS.ErrnoError(errCode); + } + if (!parent.node_ops.unlink) { + throw new FS.ErrnoError(63); + } + if (FS.isMountpoint(node)) { + throw new FS.ErrnoError(10); + } + parent.node_ops.unlink(parent, name); + FS.destroyNode(node); + },readlink:function(path) { + var lookup = FS.lookupPath(path); + var link = lookup.node; + if (!link) { + throw new FS.ErrnoError(44); + } + if (!link.node_ops.readlink) { + throw new FS.ErrnoError(28); + } + return PATH_FS.resolve(FS.getPath(link.parent), link.node_ops.readlink(link)); + },stat:function(path, dontFollow) { + var lookup = FS.lookupPath(path, { follow: !dontFollow }); + var node = lookup.node; + if (!node) { + throw new FS.ErrnoError(44); + } + if (!node.node_ops.getattr) { + throw new FS.ErrnoError(63); + } + return node.node_ops.getattr(node); + },lstat:function(path) { + return FS.stat(path, true); + },chmod:function(path, mode, dontFollow) { + var node; + if (typeof path === 'string') { + var lookup = FS.lookupPath(path, { follow: !dontFollow }); + node = lookup.node; + } else { + node = path; + } + if (!node.node_ops.setattr) { + throw new FS.ErrnoError(63); + } + node.node_ops.setattr(node, { + mode: (mode & 4095) | (node.mode & ~4095), + timestamp: Date.now() + }); + },lchmod:function(path, mode) { + FS.chmod(path, mode, true); + },fchmod:function(fd, mode) { + var stream = FS.getStream(fd); + if (!stream) { + throw new FS.ErrnoError(8); + } + FS.chmod(stream.node, mode); + },chown:function(path, uid, gid, dontFollow) { + var node; + if (typeof path === 'string') { + var lookup = FS.lookupPath(path, { follow: !dontFollow }); + node = lookup.node; + } else { + node = path; + } + if (!node.node_ops.setattr) { + throw new FS.ErrnoError(63); + } + node.node_ops.setattr(node, { + timestamp: Date.now() + // we ignore the uid / gid for now + }); + },lchown:function(path, uid, gid) { + FS.chown(path, uid, gid, true); + },fchown:function(fd, uid, gid) { + var stream = FS.getStream(fd); + if (!stream) { + throw new FS.ErrnoError(8); + } + FS.chown(stream.node, uid, gid); + },truncate:function(path, len) { + if (len < 0) { + throw new FS.ErrnoError(28); + } + var node; + if (typeof path === 'string') { + var lookup = FS.lookupPath(path, { follow: true }); + node = lookup.node; + } else { + node = path; + } + if (!node.node_ops.setattr) { + throw new FS.ErrnoError(63); + } + if (FS.isDir(node.mode)) { + throw new FS.ErrnoError(31); + } + if (!FS.isFile(node.mode)) { + throw new FS.ErrnoError(28); + } + var errCode = FS.nodePermissions(node, 'w'); + if (errCode) { + throw new FS.ErrnoError(errCode); + } + node.node_ops.setattr(node, { + size: len, + timestamp: Date.now() + }); + },ftruncate:function(fd, len) { + var stream = FS.getStream(fd); + if (!stream) { + throw new FS.ErrnoError(8); + } + if ((stream.flags & 2097155) === 0) { + throw new FS.ErrnoError(28); + } + FS.truncate(stream.node, len); + },utime:function(path, atime, mtime) { + var lookup = FS.lookupPath(path, { follow: true }); + var node = lookup.node; + node.node_ops.setattr(node, { + timestamp: Math.max(atime, mtime) + }); + },open:function(path, flags, mode, fd_start, fd_end) { + if (path === "") { + throw new FS.ErrnoError(44); + } + flags = typeof flags === 'string' ? FS.modeStringToFlags(flags) : flags; + mode = typeof mode === 'undefined' ? 438 /* 0666 */ : mode; + if ((flags & 64)) { + mode = (mode & 4095) | 32768; + } else { + mode = 0; + } + var node; + if (typeof path === 'object') { + node = path; + } else { + path = PATH.normalize(path); + try { + var lookup = FS.lookupPath(path, { + follow: !(flags & 131072) + }); + node = lookup.node; + } catch (e) { + // ignore + } + } + // perhaps we need to create the node + var created = false; + if ((flags & 64)) { + if (node) { + // if O_CREAT and O_EXCL are set, error out if the node already exists + if ((flags & 128)) { + throw new FS.ErrnoError(20); + } + } else { + // node doesn't exist, try to create it + node = FS.mknod(path, mode, 0); + created = true; + } + } + if (!node) { + throw new FS.ErrnoError(44); + } + // can't truncate a device + if (FS.isChrdev(node.mode)) { + flags &= ~512; + } + // if asked only for a directory, then this must be one + if ((flags & 65536) && !FS.isDir(node.mode)) { + throw new FS.ErrnoError(54); + } + // check permissions, if this is not a file we just created now (it is ok to + // create and write to a file with read-only permissions; it is read-only + // for later use) + if (!created) { + var errCode = FS.mayOpen(node, flags); + if (errCode) { + throw new FS.ErrnoError(errCode); + } + } + // do truncation if necessary + if ((flags & 512)) { + FS.truncate(node, 0); + } + // we've already handled these, don't pass down to the underlying vfs + flags &= ~(128 | 512 | 131072); + + // register the stream with the filesystem + var stream = FS.createStream({ + node: node, + path: FS.getPath(node), // we want the absolute path to the node + id: node.id, + flags: flags, + mode: node.mode, + seekable: true, + position: 0, + stream_ops: node.stream_ops, + node_ops: node.node_ops, + // used by the file family libc calls (fopen, fwrite, ferror, etc.) + ungotten: [], + error: false + }, fd_start, fd_end); + // call the new stream's open function + if (stream.stream_ops.open) { + stream.stream_ops.open(stream); + } + if (Module['logReadFiles'] && !(flags & 1)) { + if (!FS.readFiles) FS.readFiles = {}; + if (!(path in FS.readFiles)) { + FS.readFiles[path] = 1; + } + } + return stream; + },close:function(stream) { + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(8); + } + if (stream.getdents) stream.getdents = null; // free readdir state + try { + if (stream.stream_ops.close) { + stream.stream_ops.close(stream); + } + } catch (e) { + throw e; + } finally { + FS.closeStream(stream.fd); + } + stream.fd = null; + },isClosed:function(stream) { + return stream.fd === null; + },llseek:function(stream, offset, whence) { + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(8); + } + if (!stream.seekable || !stream.stream_ops.llseek) { + throw new FS.ErrnoError(70); + } + if (whence != 0 && whence != 1 && whence != 2) { + throw new FS.ErrnoError(28); + } + stream.position = stream.stream_ops.llseek(stream, offset, whence); + stream.ungotten = []; + return stream.position; + },read:function(stream, buffer, offset, length, position) { + if (length < 0 || position < 0) { + throw new FS.ErrnoError(28); + } + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(8); + } + if ((stream.flags & 2097155) === 1) { + throw new FS.ErrnoError(8); + } + if (FS.isDir(stream.node.mode)) { + throw new FS.ErrnoError(31); + } + if (!stream.stream_ops.read) { + throw new FS.ErrnoError(28); + } + var seeking = typeof position !== 'undefined'; + if (!seeking) { + position = stream.position; + } else if (!stream.seekable) { + throw new FS.ErrnoError(70); + } + var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position); + if (!seeking) stream.position += bytesRead; + return bytesRead; + },write:function(stream, buffer, offset, length, position, canOwn) { + if (length < 0 || position < 0) { + throw new FS.ErrnoError(28); + } + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(8); + } + if ((stream.flags & 2097155) === 0) { + throw new FS.ErrnoError(8); + } + if (FS.isDir(stream.node.mode)) { + throw new FS.ErrnoError(31); + } + if (!stream.stream_ops.write) { + throw new FS.ErrnoError(28); + } + if (stream.seekable && stream.flags & 1024) { + // seek to the end before writing in append mode + FS.llseek(stream, 0, 2); + } + var seeking = typeof position !== 'undefined'; + if (!seeking) { + position = stream.position; + } else if (!stream.seekable) { + throw new FS.ErrnoError(70); + } + var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn); + if (!seeking) stream.position += bytesWritten; + return bytesWritten; + },allocate:function(stream, offset, length) { + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(8); + } + if (offset < 0 || length <= 0) { + throw new FS.ErrnoError(28); + } + if ((stream.flags & 2097155) === 0) { + throw new FS.ErrnoError(8); + } + if (!FS.isFile(stream.node.mode) && !FS.isDir(stream.node.mode)) { + throw new FS.ErrnoError(43); + } + if (!stream.stream_ops.allocate) { + throw new FS.ErrnoError(138); + } + stream.stream_ops.allocate(stream, offset, length); + },mmap:function(stream, address, length, position, prot, flags) { + // User requests writing to file (prot & PROT_WRITE != 0). + // Checking if we have permissions to write to the file unless + // MAP_PRIVATE flag is set. According to POSIX spec it is possible + // to write to file opened in read-only mode with MAP_PRIVATE flag, + // as all modifications will be visible only in the memory of + // the current process. + if ((prot & 2) !== 0 + && (flags & 2) === 0 + && (stream.flags & 2097155) !== 2) { + throw new FS.ErrnoError(2); + } + if ((stream.flags & 2097155) === 1) { + throw new FS.ErrnoError(2); + } + if (!stream.stream_ops.mmap) { + throw new FS.ErrnoError(43); + } + return stream.stream_ops.mmap(stream, address, length, position, prot, flags); + },msync:function(stream, buffer, offset, length, mmapFlags) { + if (!stream || !stream.stream_ops.msync) { + return 0; + } + return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags); + },munmap:function(stream) { + return 0; + },ioctl:function(stream, cmd, arg) { + if (!stream.stream_ops.ioctl) { + throw new FS.ErrnoError(59); + } + return stream.stream_ops.ioctl(stream, cmd, arg); + },readFile:function(path, opts = {}) { + opts.flags = opts.flags || 0; + opts.encoding = opts.encoding || 'binary'; + if (opts.encoding !== 'utf8' && opts.encoding !== 'binary') { + throw new Error('Invalid encoding type "' + opts.encoding + '"'); + } + var ret; + var stream = FS.open(path, opts.flags); + var stat = FS.stat(path); + var length = stat.size; + var buf = new Uint8Array(length); + FS.read(stream, buf, 0, length, 0); + if (opts.encoding === 'utf8') { + ret = UTF8ArrayToString(buf, 0); + } else if (opts.encoding === 'binary') { + ret = buf; + } + FS.close(stream); + return ret; + },writeFile:function(path, data, opts = {}) { + opts.flags = opts.flags || 577; + var stream = FS.open(path, opts.flags, opts.mode); + if (typeof data === 'string') { + var buf = new Uint8Array(lengthBytesUTF8(data)+1); + var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length); + FS.write(stream, buf, 0, actualNumBytes, undefined, opts.canOwn); + } else if (ArrayBuffer.isView(data)) { + FS.write(stream, data, 0, data.byteLength, undefined, opts.canOwn); + } else { + throw new Error('Unsupported data type'); + } + FS.close(stream); + },cwd:function() { + return FS.currentPath; + },chdir:function(path) { + var lookup = FS.lookupPath(path, { follow: true }); + if (lookup.node === null) { + throw new FS.ErrnoError(44); + } + if (!FS.isDir(lookup.node.mode)) { + throw new FS.ErrnoError(54); + } + var errCode = FS.nodePermissions(lookup.node, 'x'); + if (errCode) { + throw new FS.ErrnoError(errCode); + } + FS.currentPath = lookup.path; + },createDefaultDirectories:function() { + FS.mkdir('/tmp'); + FS.mkdir('/home'); + FS.mkdir('/home/web_user'); + },createDefaultDevices:function() { + // create /dev + FS.mkdir('/dev'); + // setup /dev/null + FS.registerDevice(FS.makedev(1, 3), { + read: function() { return 0; }, + write: function(stream, buffer, offset, length, pos) { return length; } + }); + FS.mkdev('/dev/null', FS.makedev(1, 3)); + // setup /dev/tty and /dev/tty1 + // stderr needs to print output using err() rather than out() + // so we register a second tty just for it. + TTY.register(FS.makedev(5, 0), TTY.default_tty_ops); + TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops); + FS.mkdev('/dev/tty', FS.makedev(5, 0)); + FS.mkdev('/dev/tty1', FS.makedev(6, 0)); + // setup /dev/[u]random + var random_device = getRandomDevice(); + FS.createDevice('/dev', 'random', random_device); + FS.createDevice('/dev', 'urandom', random_device); + // we're not going to emulate the actual shm device, + // just create the tmp dirs that reside in it commonly + FS.mkdir('/dev/shm'); + FS.mkdir('/dev/shm/tmp'); + },createSpecialDirectories:function() { + // create /proc/self/fd which allows /proc/self/fd/6 => readlink gives the + // name of the stream for fd 6 (see test_unistd_ttyname) + FS.mkdir('/proc'); + var proc_self = FS.mkdir('/proc/self'); + FS.mkdir('/proc/self/fd'); + FS.mount({ + mount: function() { + var node = FS.createNode(proc_self, 'fd', 16384 | 511 /* 0777 */, 73); + node.node_ops = { + lookup: function(parent, name) { + var fd = +name; + var stream = FS.getStream(fd); + if (!stream) throw new FS.ErrnoError(8); + var ret = { + parent: null, + mount: { mountpoint: 'fake' }, + node_ops: { readlink: function() { return stream.path } } + }; + ret.parent = ret; // make it look like a simple root node + return ret; + } + }; + return node; + } + }, {}, '/proc/self/fd'); + },createStandardStreams:function() { + // TODO deprecate the old functionality of a single + // input / output callback and that utilizes FS.createDevice + // and instead require a unique set of stream ops + + // by default, we symlink the standard streams to the + // default tty devices. however, if the standard streams + // have been overwritten we create a unique device for + // them instead. + if (Module['stdin']) { + FS.createDevice('/dev', 'stdin', Module['stdin']); + } else { + FS.symlink('/dev/tty', '/dev/stdin'); + } + if (Module['stdout']) { + FS.createDevice('/dev', 'stdout', null, Module['stdout']); + } else { + FS.symlink('/dev/tty', '/dev/stdout'); + } + if (Module['stderr']) { + FS.createDevice('/dev', 'stderr', null, Module['stderr']); + } else { + FS.symlink('/dev/tty1', '/dev/stderr'); + } + + // open default streams for the stdin, stdout and stderr devices + var stdin = FS.open('/dev/stdin', 0); + var stdout = FS.open('/dev/stdout', 1); + var stderr = FS.open('/dev/stderr', 1); + assert(stdin.fd === 0, 'invalid handle for stdin (' + stdin.fd + ')'); + assert(stdout.fd === 1, 'invalid handle for stdout (' + stdout.fd + ')'); + assert(stderr.fd === 2, 'invalid handle for stderr (' + stderr.fd + ')'); + },ensureErrnoError:function() { + if (FS.ErrnoError) return; + FS.ErrnoError = /** @this{Object} */ function ErrnoError(errno, node) { + this.node = node; + this.setErrno = /** @this{Object} */ function(errno) { + this.errno = errno; + for (var key in ERRNO_CODES) { + if (ERRNO_CODES[key] === errno) { + this.code = key; + break; + } + } + }; + this.setErrno(errno); + this.message = ERRNO_MESSAGES[errno]; + + // Try to get a maximally helpful stack trace. On Node.js, getting Error.stack + // now ensures it shows what we want. + if (this.stack) { + // Define the stack property for Node.js 4, which otherwise errors on the next line. + Object.defineProperty(this, "stack", { value: (new Error).stack, writable: true }); + this.stack = demangleAll(this.stack); + } + }; + FS.ErrnoError.prototype = new Error(); + FS.ErrnoError.prototype.constructor = FS.ErrnoError; + // Some errors may happen quite a bit, to avoid overhead we reuse them (and suffer a lack of stack info) + [44].forEach(function(code) { + FS.genericErrors[code] = new FS.ErrnoError(code); + FS.genericErrors[code].stack = ''; + }); + },staticInit:function() { + FS.ensureErrnoError(); + + FS.nameTable = new Array(4096); + + FS.mount(MEMFS, {}, '/'); + + FS.createDefaultDirectories(); + FS.createDefaultDevices(); + FS.createSpecialDirectories(); + + FS.filesystems = { + 'MEMFS': MEMFS, + }; + },init:function(input, output, error) { + assert(!FS.init.initialized, 'FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)'); + FS.init.initialized = true; + + FS.ensureErrnoError(); + + // Allow Module.stdin etc. to provide defaults, if none explicitly passed to us here + Module['stdin'] = input || Module['stdin']; + Module['stdout'] = output || Module['stdout']; + Module['stderr'] = error || Module['stderr']; + + FS.createStandardStreams(); + },quit:function() { + FS.init.initialized = false; + // force-flush all streams, so we get musl std streams printed out + _fflush(0); + // close all of our streams + for (var i = 0; i < FS.streams.length; i++) { + var stream = FS.streams[i]; + if (!stream) { + continue; + } + FS.close(stream); + } + },getMode:function(canRead, canWrite) { + var mode = 0; + if (canRead) mode |= 292 | 73; + if (canWrite) mode |= 146; + return mode; + },findObject:function(path, dontResolveLastLink) { + var ret = FS.analyzePath(path, dontResolveLastLink); + if (ret.exists) { + return ret.object; + } else { + return null; + } + },analyzePath:function(path, dontResolveLastLink) { + // operate from within the context of the symlink's target + try { + var lookup = FS.lookupPath(path, { follow: !dontResolveLastLink }); + path = lookup.path; + } catch (e) { + } + var ret = { + isRoot: false, exists: false, error: 0, name: null, path: null, object: null, + parentExists: false, parentPath: null, parentObject: null + }; + try { + var lookup = FS.lookupPath(path, { parent: true }); + ret.parentExists = true; + ret.parentPath = lookup.path; + ret.parentObject = lookup.node; + ret.name = PATH.basename(path); + lookup = FS.lookupPath(path, { follow: !dontResolveLastLink }); + ret.exists = true; + ret.path = lookup.path; + ret.object = lookup.node; + ret.name = lookup.node.name; + ret.isRoot = lookup.path === '/'; + } catch (e) { + ret.error = e.errno; + }; + return ret; + },createPath:function(parent, path, canRead, canWrite) { + parent = typeof parent === 'string' ? parent : FS.getPath(parent); + var parts = path.split('/').reverse(); + while (parts.length) { + var part = parts.pop(); + if (!part) continue; + var current = PATH.join2(parent, part); + try { + FS.mkdir(current); + } catch (e) { + // ignore EEXIST + } + parent = current; + } + return current; + },createFile:function(parent, name, properties, canRead, canWrite) { + var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); + var mode = FS.getMode(canRead, canWrite); + return FS.create(path, mode); + },createDataFile:function(parent, name, data, canRead, canWrite, canOwn) { + var path = name ? PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name) : parent; + var mode = FS.getMode(canRead, canWrite); + var node = FS.create(path, mode); + if (data) { + if (typeof data === 'string') { + var arr = new Array(data.length); + for (var i = 0, len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i); + data = arr; + } + // make sure we can write to the file + FS.chmod(node, mode | 146); + var stream = FS.open(node, 577); + FS.write(stream, data, 0, data.length, 0, canOwn); + FS.close(stream); + FS.chmod(node, mode); + } + return node; + },createDevice:function(parent, name, input, output) { + var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); + var mode = FS.getMode(!!input, !!output); + if (!FS.createDevice.major) FS.createDevice.major = 64; + var dev = FS.makedev(FS.createDevice.major++, 0); + // Create a fake device that a set of stream ops to emulate + // the old behavior. + FS.registerDevice(dev, { + open: function(stream) { + stream.seekable = false; + }, + close: function(stream) { + // flush any pending line data + if (output && output.buffer && output.buffer.length) { + output(10); + } + }, + read: function(stream, buffer, offset, length, pos /* ignored */) { + var bytesRead = 0; + for (var i = 0; i < length; i++) { + var result; + try { + result = input(); + } catch (e) { + throw new FS.ErrnoError(29); + } + if (result === undefined && bytesRead === 0) { + throw new FS.ErrnoError(6); + } + if (result === null || result === undefined) break; + bytesRead++; + buffer[offset+i] = result; + } + if (bytesRead) { + stream.node.timestamp = Date.now(); + } + return bytesRead; + }, + write: function(stream, buffer, offset, length, pos) { + for (var i = 0; i < length; i++) { + try { + output(buffer[offset+i]); + } catch (e) { + throw new FS.ErrnoError(29); + } + } + if (length) { + stream.node.timestamp = Date.now(); + } + return i; + } + }); + return FS.mkdev(path, mode, dev); + },forceLoadFile:function(obj) { + if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true; + if (typeof XMLHttpRequest !== 'undefined') { + throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread."); + } else if (read_) { + // Command-line. + try { + // WARNING: Can't read binary files in V8's d8 or tracemonkey's js, as + // read() will try to parse UTF8. + obj.contents = intArrayFromString(read_(obj.url), true); + obj.usedBytes = obj.contents.length; + } catch (e) { + throw new FS.ErrnoError(29); + } + } else { + throw new Error('Cannot load without read() or XMLHttpRequest.'); + } + },createLazyFile:function(parent, name, url, canRead, canWrite) { + // Lazy chunked Uint8Array (implements get and length from Uint8Array). Actual getting is abstracted away for eventual reuse. + /** @constructor */ + function LazyUint8Array() { + this.lengthKnown = false; + this.chunks = []; // Loaded chunks. Index is the chunk number + } + LazyUint8Array.prototype.get = /** @this{Object} */ function LazyUint8Array_get(idx) { + if (idx > this.length-1 || idx < 0) { + return undefined; + } + var chunkOffset = idx % this.chunkSize; + var chunkNum = (idx / this.chunkSize)|0; + return this.getter(chunkNum)[chunkOffset]; + }; + LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) { + this.getter = getter; + }; + LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() { + // Find length + var xhr = new XMLHttpRequest(); + xhr.open('HEAD', url, false); + xhr.send(null); + if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status); + var datalength = Number(xhr.getResponseHeader("Content-length")); + var header; + var hasByteServing = (header = xhr.getResponseHeader("Accept-Ranges")) && header === "bytes"; + var usesGzip = (header = xhr.getResponseHeader("Content-Encoding")) && header === "gzip"; + + var chunkSize = 1024*1024; // Chunk size in bytes + + if (!hasByteServing) chunkSize = datalength; + + // Function to get a range from the remote URL. + var doXHR = (function(from, to) { + if (from > to) throw new Error("invalid range (" + from + ", " + to + ") or no bytes requested!"); + if (to > datalength-1) throw new Error("only " + datalength + " bytes available! programmer error!"); + + // TODO: Use mozResponseArrayBuffer, responseStream, etc. if available. + var xhr = new XMLHttpRequest(); + xhr.open('GET', url, false); + if (datalength !== chunkSize) xhr.setRequestHeader("Range", "bytes=" + from + "-" + to); + + // Some hints to the browser that we want binary data. + if (typeof Uint8Array != 'undefined') xhr.responseType = 'arraybuffer'; + if (xhr.overrideMimeType) { + xhr.overrideMimeType('text/plain; charset=x-user-defined'); + } + + xhr.send(null); + if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status); + if (xhr.response !== undefined) { + return new Uint8Array(/** @type{Array} */(xhr.response || [])); + } else { + return intArrayFromString(xhr.responseText || '', true); + } + }); + var lazyArray = this; + lazyArray.setDataGetter(function(chunkNum) { + var start = chunkNum * chunkSize; + var end = (chunkNum+1) * chunkSize - 1; // including this byte + end = Math.min(end, datalength-1); // if datalength-1 is selected, this is the last block + if (typeof(lazyArray.chunks[chunkNum]) === "undefined") { + lazyArray.chunks[chunkNum] = doXHR(start, end); + } + if (typeof(lazyArray.chunks[chunkNum]) === "undefined") throw new Error("doXHR failed!"); + return lazyArray.chunks[chunkNum]; + }); + + if (usesGzip || !datalength) { + // if the server uses gzip or doesn't supply the length, we have to download the whole file to get the (uncompressed) length + chunkSize = datalength = 1; // this will force getter(0)/doXHR do download the whole file + datalength = this.getter(0).length; + chunkSize = datalength; + out("LazyFiles on gzip forces download of the whole file when length is accessed"); + } + + this._length = datalength; + this._chunkSize = chunkSize; + this.lengthKnown = true; + }; + if (typeof XMLHttpRequest !== 'undefined') { + if (!ENVIRONMENT_IS_WORKER) throw 'Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc'; + var lazyArray = new LazyUint8Array(); + Object.defineProperties(lazyArray, { + length: { + get: /** @this{Object} */ function() { + if (!this.lengthKnown) { + this.cacheLength(); + } + return this._length; + } + }, + chunkSize: { + get: /** @this{Object} */ function() { + if (!this.lengthKnown) { + this.cacheLength(); + } + return this._chunkSize; + } + } + }); + + var properties = { isDevice: false, contents: lazyArray }; + } else { + var properties = { isDevice: false, url: url }; + } + + var node = FS.createFile(parent, name, properties, canRead, canWrite); + // This is a total hack, but I want to get this lazy file code out of the + // core of MEMFS. If we want to keep this lazy file concept I feel it should + // be its own thin LAZYFS proxying calls to MEMFS. + if (properties.contents) { + node.contents = properties.contents; + } else if (properties.url) { + node.contents = null; + node.url = properties.url; + } + // Add a function that defers querying the file size until it is asked the first time. + Object.defineProperties(node, { + usedBytes: { + get: /** @this {FSNode} */ function() { return this.contents.length; } + } + }); + // override each stream op with one that tries to force load the lazy file first + var stream_ops = {}; + var keys = Object.keys(node.stream_ops); + keys.forEach(function(key) { + var fn = node.stream_ops[key]; + stream_ops[key] = function forceLoadLazyFile() { + FS.forceLoadFile(node); + return fn.apply(null, arguments); + }; + }); + // use a custom read function + stream_ops.read = function stream_ops_read(stream, buffer, offset, length, position) { + FS.forceLoadFile(node); + var contents = stream.node.contents; + if (position >= contents.length) + return 0; + var size = Math.min(contents.length - position, length); + assert(size >= 0); + if (contents.slice) { // normal array + for (var i = 0; i < size; i++) { + buffer[offset + i] = contents[position + i]; + } + } else { + for (var i = 0; i < size; i++) { // LazyUint8Array from sync binary XHR + buffer[offset + i] = contents.get(position + i); + } + } + return size; + }; + node.stream_ops = stream_ops; + return node; + },createPreloadedFile:function(parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish) { + Browser.init(); // XXX perhaps this method should move onto Browser? + // TODO we should allow people to just pass in a complete filename instead + // of parent and name being that we just join them anyways + var fullname = name ? PATH_FS.resolve(PATH.join2(parent, name)) : parent; + var dep = getUniqueRunDependency('cp ' + fullname); // might have several active requests for the same fullname + function processData(byteArray) { + function finish(byteArray) { + if (preFinish) preFinish(); + if (!dontCreateFile) { + FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn); + } + if (onload) onload(); + removeRunDependency(dep); + } + var handled = false; + Module['preloadPlugins'].forEach(function(plugin) { + if (handled) return; + if (plugin['canHandle'](fullname)) { + plugin['handle'](byteArray, fullname, finish, function() { + if (onerror) onerror(); + removeRunDependency(dep); + }); + handled = true; + } + }); + if (!handled) finish(byteArray); + } + addRunDependency(dep); + if (typeof url == 'string') { + asyncLoad(url, function(byteArray) { + processData(byteArray); + }, onerror); + } else { + processData(url); + } + },indexedDB:function() { + return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB; + },DB_NAME:function() { + return 'EM_FS_' + window.location.pathname; + },DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:function(paths, onload, onerror) { + onload = onload || function(){}; + onerror = onerror || function(){}; + var indexedDB = FS.indexedDB(); + try { + var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION); + } catch (e) { + return onerror(e); + } + openRequest.onupgradeneeded = function openRequest_onupgradeneeded() { + out('creating db'); + var db = openRequest.result; + db.createObjectStore(FS.DB_STORE_NAME); + }; + openRequest.onsuccess = function openRequest_onsuccess() { + var db = openRequest.result; + var transaction = db.transaction([FS.DB_STORE_NAME], 'readwrite'); + var files = transaction.objectStore(FS.DB_STORE_NAME); + var ok = 0, fail = 0, total = paths.length; + function finish() { + if (fail == 0) onload(); else onerror(); + } + paths.forEach(function(path) { + var putRequest = files.put(FS.analyzePath(path).object.contents, path); + putRequest.onsuccess = function putRequest_onsuccess() { ok++; if (ok + fail == total) finish() }; + putRequest.onerror = function putRequest_onerror() { fail++; if (ok + fail == total) finish() }; + }); + transaction.onerror = onerror; + }; + openRequest.onerror = onerror; + },loadFilesFromDB:function(paths, onload, onerror) { + onload = onload || function(){}; + onerror = onerror || function(){}; + var indexedDB = FS.indexedDB(); + try { + var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION); + } catch (e) { + return onerror(e); + } + openRequest.onupgradeneeded = onerror; // no database to load from + openRequest.onsuccess = function openRequest_onsuccess() { + var db = openRequest.result; + try { + var transaction = db.transaction([FS.DB_STORE_NAME], 'readonly'); + } catch(e) { + onerror(e); + return; + } + var files = transaction.objectStore(FS.DB_STORE_NAME); + var ok = 0, fail = 0, total = paths.length; + function finish() { + if (fail == 0) onload(); else onerror(); + } + paths.forEach(function(path) { + var getRequest = files.get(path); + getRequest.onsuccess = function getRequest_onsuccess() { + if (FS.analyzePath(path).exists) { + FS.unlink(path); + } + FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true); + ok++; + if (ok + fail == total) finish(); + }; + getRequest.onerror = function getRequest_onerror() { fail++; if (ok + fail == total) finish() }; + }); + transaction.onerror = onerror; + }; + openRequest.onerror = onerror; + },absolutePath:function() { + abort('FS.absolutePath has been removed; use PATH_FS.resolve instead'); + },createFolder:function() { + abort('FS.createFolder has been removed; use FS.mkdir instead'); + },createLink:function() { + abort('FS.createLink has been removed; use FS.symlink instead'); + },joinPath:function() { + abort('FS.joinPath has been removed; use PATH.join instead'); + },mmapAlloc:function() { + abort('FS.mmapAlloc has been replaced by the top level function mmapAlloc'); + },standardizePath:function() { + abort('FS.standardizePath has been removed; use PATH.normalize instead'); + }}; + var SYSCALLS = {mappings:{},DEFAULT_POLLMASK:5,calculateAt:function(dirfd, path, allowEmpty) { + if (path[0] === '/') { + return path; + } + // relative path + var dir; + if (dirfd === -100) { + dir = FS.cwd(); + } else { + var dirstream = FS.getStream(dirfd); + if (!dirstream) throw new FS.ErrnoError(8); + dir = dirstream.path; + } + if (path.length == 0) { + if (!allowEmpty) { + throw new FS.ErrnoError(44);; + } + return dir; + } + return PATH.join2(dir, path); + },doStat:function(func, path, buf) { + try { + var stat = func(path); + } catch (e) { + if (e && e.node && PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node))) { + // an error occurred while trying to look up the path; we should just report ENOTDIR + return -54; + } + throw e; + } + HEAP32[((buf)>>2)] = stat.dev; + HEAP32[(((buf)+(4))>>2)] = 0; + HEAP32[(((buf)+(8))>>2)] = stat.ino; + HEAP32[(((buf)+(12))>>2)] = stat.mode; + HEAP32[(((buf)+(16))>>2)] = stat.nlink; + HEAP32[(((buf)+(20))>>2)] = stat.uid; + HEAP32[(((buf)+(24))>>2)] = stat.gid; + HEAP32[(((buf)+(28))>>2)] = stat.rdev; + HEAP32[(((buf)+(32))>>2)] = 0; + (tempI64 = [stat.size>>>0,(tempDouble=stat.size,(+(Math.abs(tempDouble))) >= 1.0 ? (tempDouble > 0.0 ? ((Math.min((+(Math.floor((tempDouble)/4294967296.0))), 4294967295.0))|0)>>>0 : (~~((+(Math.ceil((tempDouble - +(((~~(tempDouble)))>>>0))/4294967296.0)))))>>>0) : 0)],HEAP32[(((buf)+(40))>>2)] = tempI64[0],HEAP32[(((buf)+(44))>>2)] = tempI64[1]); + HEAP32[(((buf)+(48))>>2)] = 4096; + HEAP32[(((buf)+(52))>>2)] = stat.blocks; + HEAP32[(((buf)+(56))>>2)] = (stat.atime.getTime() / 1000)|0; + HEAP32[(((buf)+(60))>>2)] = 0; + HEAP32[(((buf)+(64))>>2)] = (stat.mtime.getTime() / 1000)|0; + HEAP32[(((buf)+(68))>>2)] = 0; + HEAP32[(((buf)+(72))>>2)] = (stat.ctime.getTime() / 1000)|0; + HEAP32[(((buf)+(76))>>2)] = 0; + (tempI64 = [stat.ino>>>0,(tempDouble=stat.ino,(+(Math.abs(tempDouble))) >= 1.0 ? (tempDouble > 0.0 ? ((Math.min((+(Math.floor((tempDouble)/4294967296.0))), 4294967295.0))|0)>>>0 : (~~((+(Math.ceil((tempDouble - +(((~~(tempDouble)))>>>0))/4294967296.0)))))>>>0) : 0)],HEAP32[(((buf)+(80))>>2)] = tempI64[0],HEAP32[(((buf)+(84))>>2)] = tempI64[1]); + return 0; + },doMsync:function(addr, stream, len, flags, offset) { + var buffer = HEAPU8.slice(addr, addr + len); + FS.msync(stream, buffer, offset, len, flags); + },doMkdir:function(path, mode) { + // remove a trailing slash, if one - /a/b/ has basename of '', but + // we want to create b in the context of this function + path = PATH.normalize(path); + if (path[path.length-1] === '/') path = path.substr(0, path.length-1); + FS.mkdir(path, mode, 0); + return 0; + },doMknod:function(path, mode, dev) { + // we don't want this in the JS API as it uses mknod to create all nodes. + switch (mode & 61440) { + case 32768: + case 8192: + case 24576: + case 4096: + case 49152: + break; + default: return -28; + } + FS.mknod(path, mode, dev); + return 0; + },doReadlink:function(path, buf, bufsize) { + if (bufsize <= 0) return -28; + var ret = FS.readlink(path); + + var len = Math.min(bufsize, lengthBytesUTF8(ret)); + var endChar = HEAP8[buf+len]; + stringToUTF8(ret, buf, bufsize+1); + // readlink is one of the rare functions that write out a C string, but does never append a null to the output buffer(!) + // stringToUTF8() always appends a null byte, so restore the character under the null byte after the write. + HEAP8[buf+len] = endChar; + + return len; + },doAccess:function(path, amode) { + if (amode & ~7) { + // need a valid mode + return -28; + } + var lookup = FS.lookupPath(path, { follow: true }); + var node = lookup.node; + if (!node) { + return -44; + } + var perms = ''; + if (amode & 4) perms += 'r'; + if (amode & 2) perms += 'w'; + if (amode & 1) perms += 'x'; + if (perms /* otherwise, they've just passed F_OK */ && FS.nodePermissions(node, perms)) { + return -2; + } + return 0; + },doDup:function(path, flags, suggestFD) { + var suggest = FS.getStream(suggestFD); + if (suggest) FS.close(suggest); + return FS.open(path, flags, 0, suggestFD, suggestFD).fd; + },doReadv:function(stream, iov, iovcnt, offset) { + var ret = 0; + for (var i = 0; i < iovcnt; i++) { + var ptr = HEAP32[(((iov)+(i*8))>>2)]; + var len = HEAP32[(((iov)+(i*8 + 4))>>2)]; + var curr = FS.read(stream, HEAP8,ptr, len, offset); + if (curr < 0) return -1; + ret += curr; + if (curr < len) break; // nothing more to read + } + return ret; + },doWritev:function(stream, iov, iovcnt, offset) { + var ret = 0; + for (var i = 0; i < iovcnt; i++) { + var ptr = HEAP32[(((iov)+(i*8))>>2)]; + var len = HEAP32[(((iov)+(i*8 + 4))>>2)]; + var curr = FS.write(stream, HEAP8,ptr, len, offset); + if (curr < 0) return -1; + ret += curr; + } + return ret; + },varargs:undefined,get:function() { + assert(SYSCALLS.varargs != undefined); + SYSCALLS.varargs += 4; + var ret = HEAP32[(((SYSCALLS.varargs)-(4))>>2)]; + return ret; + },getStr:function(ptr) { + var ret = UTF8ToString(ptr); + return ret; + },getStreamFromFD:function(fd) { + var stream = FS.getStream(fd); + if (!stream) throw new FS.ErrnoError(8); + return stream; + },get64:function(low, high) { + if (low >= 0) assert(high === 0); + else assert(high === -1); + return low; + }}; + function _environ_get(__environ, environ_buf) { + var bufSize = 0; + getEnvStrings().forEach(function(string, i) { + var ptr = environ_buf + bufSize; + HEAP32[(((__environ)+(i * 4))>>2)] = ptr; + writeAsciiToMemory(string, ptr); + bufSize += string.length + 1; + }); + return 0; + } + + function _environ_sizes_get(penviron_count, penviron_buf_size) { + var strings = getEnvStrings(); + HEAP32[((penviron_count)>>2)] = strings.length; + var bufSize = 0; + strings.forEach(function(string) { + bufSize += string.length + 1; + }); + HEAP32[((penviron_buf_size)>>2)] = bufSize; + return 0; + } + + function _fd_close(fd) {try { + + var stream = SYSCALLS.getStreamFromFD(fd); + FS.close(stream); + return 0; + } catch (e) { + if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) throw e; + return e.errno; + } + } + + function _fd_read(fd, iov, iovcnt, pnum) {try { + + var stream = SYSCALLS.getStreamFromFD(fd); + var num = SYSCALLS.doReadv(stream, iov, iovcnt); + HEAP32[((pnum)>>2)] = num; + return 0; + } catch (e) { + if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) throw e; + return e.errno; + } + } + + function _fd_seek(fd, offset_low, offset_high, whence, newOffset) {try { + + + var stream = SYSCALLS.getStreamFromFD(fd); + var HIGH_OFFSET = 0x100000000; // 2^32 + // use an unsigned operator on low and shift high by 32-bits + var offset = offset_high * HIGH_OFFSET + (offset_low >>> 0); + + var DOUBLE_LIMIT = 0x20000000000000; // 2^53 + // we also check for equality since DOUBLE_LIMIT + 1 == DOUBLE_LIMIT + if (offset <= -DOUBLE_LIMIT || offset >= DOUBLE_LIMIT) { + return -61; + } + + FS.llseek(stream, offset, whence); + (tempI64 = [stream.position>>>0,(tempDouble=stream.position,(+(Math.abs(tempDouble))) >= 1.0 ? (tempDouble > 0.0 ? ((Math.min((+(Math.floor((tempDouble)/4294967296.0))), 4294967295.0))|0)>>>0 : (~~((+(Math.ceil((tempDouble - +(((~~(tempDouble)))>>>0))/4294967296.0)))))>>>0) : 0)],HEAP32[((newOffset)>>2)] = tempI64[0],HEAP32[(((newOffset)+(4))>>2)] = tempI64[1]); + if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null; // reset readdir state + return 0; + } catch (e) { + if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) throw e; + return e.errno; + } + } + + function _fd_write(fd, iov, iovcnt, pnum) {try { + + ; + var stream = SYSCALLS.getStreamFromFD(fd); + var num = SYSCALLS.doWritev(stream, iov, iovcnt); + HEAP32[((pnum)>>2)] = num; + return 0; + } catch (e) { + if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) throw e; + return e.errno; + } + } + + function _setTempRet0(val) { + setTempRet0(val); + } + + function __isLeapYear(year) { + return year%4 === 0 && (year%100 !== 0 || year%400 === 0); + } + + function __arraySum(array, index) { + var sum = 0; + for (var i = 0; i <= index; sum += array[i++]) { + // no-op + } + return sum; + } + + var __MONTH_DAYS_LEAP = [31,29,31,30,31,30,31,31,30,31,30,31]; + + var __MONTH_DAYS_REGULAR = [31,28,31,30,31,30,31,31,30,31,30,31]; + function __addDays(date, days) { + var newDate = new Date(date.getTime()); + while (days > 0) { + var leap = __isLeapYear(newDate.getFullYear()); + var currentMonth = newDate.getMonth(); + var daysInCurrentMonth = (leap ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR)[currentMonth]; + + if (days > daysInCurrentMonth-newDate.getDate()) { + // we spill over to next month + days -= (daysInCurrentMonth-newDate.getDate()+1); + newDate.setDate(1); + if (currentMonth < 11) { + newDate.setMonth(currentMonth+1) + } else { + newDate.setMonth(0); + newDate.setFullYear(newDate.getFullYear()+1); + } + } else { + // we stay in current month + newDate.setDate(newDate.getDate()+days); + return newDate; + } + } + + return newDate; + } + function _strftime(s, maxsize, format, tm) { + // size_t strftime(char *restrict s, size_t maxsize, const char *restrict format, const struct tm *restrict timeptr); + // http://pubs.opengroup.org/onlinepubs/009695399/functions/strftime.html + + var tm_zone = HEAP32[(((tm)+(40))>>2)]; + + var date = { + tm_sec: HEAP32[((tm)>>2)], + tm_min: HEAP32[(((tm)+(4))>>2)], + tm_hour: HEAP32[(((tm)+(8))>>2)], + tm_mday: HEAP32[(((tm)+(12))>>2)], + tm_mon: HEAP32[(((tm)+(16))>>2)], + tm_year: HEAP32[(((tm)+(20))>>2)], + tm_wday: HEAP32[(((tm)+(24))>>2)], + tm_yday: HEAP32[(((tm)+(28))>>2)], + tm_isdst: HEAP32[(((tm)+(32))>>2)], + tm_gmtoff: HEAP32[(((tm)+(36))>>2)], + tm_zone: tm_zone ? UTF8ToString(tm_zone) : '' + }; + + var pattern = UTF8ToString(format); + + // expand format + var EXPANSION_RULES_1 = { + '%c': '%a %b %d %H:%M:%S %Y', // Replaced by the locale's appropriate date and time representation - e.g., Mon Aug 3 14:02:01 2013 + '%D': '%m/%d/%y', // Equivalent to %m / %d / %y + '%F': '%Y-%m-%d', // Equivalent to %Y - %m - %d + '%h': '%b', // Equivalent to %b + '%r': '%I:%M:%S %p', // Replaced by the time in a.m. and p.m. notation + '%R': '%H:%M', // Replaced by the time in 24-hour notation + '%T': '%H:%M:%S', // Replaced by the time + '%x': '%m/%d/%y', // Replaced by the locale's appropriate date representation + '%X': '%H:%M:%S', // Replaced by the locale's appropriate time representation + // Modified Conversion Specifiers + '%Ec': '%c', // Replaced by the locale's alternative appropriate date and time representation. + '%EC': '%C', // Replaced by the name of the base year (period) in the locale's alternative representation. + '%Ex': '%m/%d/%y', // Replaced by the locale's alternative date representation. + '%EX': '%H:%M:%S', // Replaced by the locale's alternative time representation. + '%Ey': '%y', // Replaced by the offset from %EC (year only) in the locale's alternative representation. + '%EY': '%Y', // Replaced by the full alternative year representation. + '%Od': '%d', // Replaced by the day of the month, using the locale's alternative numeric symbols, filled as needed with leading zeros if there is any alternative symbol for zero; otherwise, with leading characters. + '%Oe': '%e', // Replaced by the day of the month, using the locale's alternative numeric symbols, filled as needed with leading characters. + '%OH': '%H', // Replaced by the hour (24-hour clock) using the locale's alternative numeric symbols. + '%OI': '%I', // Replaced by the hour (12-hour clock) using the locale's alternative numeric symbols. + '%Om': '%m', // Replaced by the month using the locale's alternative numeric symbols. + '%OM': '%M', // Replaced by the minutes using the locale's alternative numeric symbols. + '%OS': '%S', // Replaced by the seconds using the locale's alternative numeric symbols. + '%Ou': '%u', // Replaced by the weekday as a number in the locale's alternative representation (Monday=1). + '%OU': '%U', // Replaced by the week number of the year (Sunday as the first day of the week, rules corresponding to %U ) using the locale's alternative numeric symbols. + '%OV': '%V', // Replaced by the week number of the year (Monday as the first day of the week, rules corresponding to %V ) using the locale's alternative numeric symbols. + '%Ow': '%w', // Replaced by the number of the weekday (Sunday=0) using the locale's alternative numeric symbols. + '%OW': '%W', // Replaced by the week number of the year (Monday as the first day of the week) using the locale's alternative numeric symbols. + '%Oy': '%y', // Replaced by the year (offset from %C ) using the locale's alternative numeric symbols. + }; + for (var rule in EXPANSION_RULES_1) { + pattern = pattern.replace(new RegExp(rule, 'g'), EXPANSION_RULES_1[rule]); + } + + var WEEKDAYS = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']; + var MONTHS = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']; + + function leadingSomething(value, digits, character) { + var str = typeof value === 'number' ? value.toString() : (value || ''); + while (str.length < digits) { + str = character[0]+str; + } + return str; + } + + function leadingNulls(value, digits) { + return leadingSomething(value, digits, '0'); + } + + function compareByDay(date1, date2) { + function sgn(value) { + return value < 0 ? -1 : (value > 0 ? 1 : 0); + } + + var compare; + if ((compare = sgn(date1.getFullYear()-date2.getFullYear())) === 0) { + if ((compare = sgn(date1.getMonth()-date2.getMonth())) === 0) { + compare = sgn(date1.getDate()-date2.getDate()); + } + } + return compare; + } + + function getFirstWeekStartDate(janFourth) { + switch (janFourth.getDay()) { + case 0: // Sunday + return new Date(janFourth.getFullYear()-1, 11, 29); + case 1: // Monday + return janFourth; + case 2: // Tuesday + return new Date(janFourth.getFullYear(), 0, 3); + case 3: // Wednesday + return new Date(janFourth.getFullYear(), 0, 2); + case 4: // Thursday + return new Date(janFourth.getFullYear(), 0, 1); + case 5: // Friday + return new Date(janFourth.getFullYear()-1, 11, 31); + case 6: // Saturday + return new Date(janFourth.getFullYear()-1, 11, 30); + } + } + + function getWeekBasedYear(date) { + var thisDate = __addDays(new Date(date.tm_year+1900, 0, 1), date.tm_yday); + + var janFourthThisYear = new Date(thisDate.getFullYear(), 0, 4); + var janFourthNextYear = new Date(thisDate.getFullYear()+1, 0, 4); + + var firstWeekStartThisYear = getFirstWeekStartDate(janFourthThisYear); + var firstWeekStartNextYear = getFirstWeekStartDate(janFourthNextYear); + + if (compareByDay(firstWeekStartThisYear, thisDate) <= 0) { + // this date is after the start of the first week of this year + if (compareByDay(firstWeekStartNextYear, thisDate) <= 0) { + return thisDate.getFullYear()+1; + } else { + return thisDate.getFullYear(); + } + } else { + return thisDate.getFullYear()-1; + } + } + + var EXPANSION_RULES_2 = { + '%a': function(date) { + return WEEKDAYS[date.tm_wday].substring(0,3); + }, + '%A': function(date) { + return WEEKDAYS[date.tm_wday]; + }, + '%b': function(date) { + return MONTHS[date.tm_mon].substring(0,3); + }, + '%B': function(date) { + return MONTHS[date.tm_mon]; + }, + '%C': function(date) { + var year = date.tm_year+1900; + return leadingNulls((year/100)|0,2); + }, + '%d': function(date) { + return leadingNulls(date.tm_mday, 2); + }, + '%e': function(date) { + return leadingSomething(date.tm_mday, 2, ' '); + }, + '%g': function(date) { + // %g, %G, and %V give values according to the ISO 8601:2000 standard week-based year. + // In this system, weeks begin on a Monday and week 1 of the year is the week that includes + // January 4th, which is also the week that includes the first Thursday of the year, and + // is also the first week that contains at least four days in the year. + // If the first Monday of January is the 2nd, 3rd, or 4th, the preceding days are part of + // the last week of the preceding year; thus, for Saturday 2nd January 1999, + // %G is replaced by 1998 and %V is replaced by 53. If December 29th, 30th, + // or 31st is a Monday, it and any following days are part of week 1 of the following year. + // Thus, for Tuesday 30th December 1997, %G is replaced by 1998 and %V is replaced by 01. + + return getWeekBasedYear(date).toString().substring(2); + }, + '%G': function(date) { + return getWeekBasedYear(date); + }, + '%H': function(date) { + return leadingNulls(date.tm_hour, 2); + }, + '%I': function(date) { + var twelveHour = date.tm_hour; + if (twelveHour == 0) twelveHour = 12; + else if (twelveHour > 12) twelveHour -= 12; + return leadingNulls(twelveHour, 2); + }, + '%j': function(date) { + // Day of the year (001-366) + return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900) ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR, date.tm_mon-1), 3); + }, + '%m': function(date) { + return leadingNulls(date.tm_mon+1, 2); + }, + '%M': function(date) { + return leadingNulls(date.tm_min, 2); + }, + '%n': function() { + return '\n'; + }, + '%p': function(date) { + if (date.tm_hour >= 0 && date.tm_hour < 12) { + return 'AM'; + } else { + return 'PM'; + } + }, + '%S': function(date) { + return leadingNulls(date.tm_sec, 2); + }, + '%t': function() { + return '\t'; + }, + '%u': function(date) { + return date.tm_wday || 7; + }, + '%U': function(date) { + // Replaced by the week number of the year as a decimal number [00,53]. + // The first Sunday of January is the first day of week 1; + // days in the new year before this are in week 0. [ tm_year, tm_wday, tm_yday] + var janFirst = new Date(date.tm_year+1900, 0, 1); + var firstSunday = janFirst.getDay() === 0 ? janFirst : __addDays(janFirst, 7-janFirst.getDay()); + var endDate = new Date(date.tm_year+1900, date.tm_mon, date.tm_mday); + + // is target date after the first Sunday? + if (compareByDay(firstSunday, endDate) < 0) { + // calculate difference in days between first Sunday and endDate + var februaryFirstUntilEndMonth = __arraySum(__isLeapYear(endDate.getFullYear()) ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR, endDate.getMonth()-1)-31; + var firstSundayUntilEndJanuary = 31-firstSunday.getDate(); + var days = firstSundayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate(); + return leadingNulls(Math.ceil(days/7), 2); + } + + return compareByDay(firstSunday, janFirst) === 0 ? '01': '00'; + }, + '%V': function(date) { + // Replaced by the week number of the year (Monday as the first day of the week) + // as a decimal number [01,53]. If the week containing 1 January has four + // or more days in the new year, then it is considered week 1. + // Otherwise, it is the last week of the previous year, and the next week is week 1. + // Both January 4th and the first Thursday of January are always in week 1. [ tm_year, tm_wday, tm_yday] + var janFourthThisYear = new Date(date.tm_year+1900, 0, 4); + var janFourthNextYear = new Date(date.tm_year+1901, 0, 4); + + var firstWeekStartThisYear = getFirstWeekStartDate(janFourthThisYear); + var firstWeekStartNextYear = getFirstWeekStartDate(janFourthNextYear); + + var endDate = __addDays(new Date(date.tm_year+1900, 0, 1), date.tm_yday); + + if (compareByDay(endDate, firstWeekStartThisYear) < 0) { + // if given date is before this years first week, then it belongs to the 53rd week of last year + return '53'; + } + + if (compareByDay(firstWeekStartNextYear, endDate) <= 0) { + // if given date is after next years first week, then it belongs to the 01th week of next year + return '01'; + } + + // given date is in between CW 01..53 of this calendar year + var daysDifference; + if (firstWeekStartThisYear.getFullYear() < date.tm_year+1900) { + // first CW of this year starts last year + daysDifference = date.tm_yday+32-firstWeekStartThisYear.getDate() + } else { + // first CW of this year starts this year + daysDifference = date.tm_yday+1-firstWeekStartThisYear.getDate(); + } + return leadingNulls(Math.ceil(daysDifference/7), 2); + }, + '%w': function(date) { + return date.tm_wday; + }, + '%W': function(date) { + // Replaced by the week number of the year as a decimal number [00,53]. + // The first Monday of January is the first day of week 1; + // days in the new year before this are in week 0. [ tm_year, tm_wday, tm_yday] + var janFirst = new Date(date.tm_year, 0, 1); + var firstMonday = janFirst.getDay() === 1 ? janFirst : __addDays(janFirst, janFirst.getDay() === 0 ? 1 : 7-janFirst.getDay()+1); + var endDate = new Date(date.tm_year+1900, date.tm_mon, date.tm_mday); + + // is target date after the first Monday? + if (compareByDay(firstMonday, endDate) < 0) { + var februaryFirstUntilEndMonth = __arraySum(__isLeapYear(endDate.getFullYear()) ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR, endDate.getMonth()-1)-31; + var firstMondayUntilEndJanuary = 31-firstMonday.getDate(); + var days = firstMondayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate(); + return leadingNulls(Math.ceil(days/7), 2); + } + return compareByDay(firstMonday, janFirst) === 0 ? '01': '00'; + }, + '%y': function(date) { + // Replaced by the last two digits of the year as a decimal number [00,99]. [ tm_year] + return (date.tm_year+1900).toString().substring(2); + }, + '%Y': function(date) { + // Replaced by the year as a decimal number (for example, 1997). [ tm_year] + return date.tm_year+1900; + }, + '%z': function(date) { + // Replaced by the offset from UTC in the ISO 8601:2000 standard format ( +hhmm or -hhmm ). + // For example, "-0430" means 4 hours 30 minutes behind UTC (west of Greenwich). + var off = date.tm_gmtoff; + var ahead = off >= 0; + off = Math.abs(off) / 60; + // convert from minutes into hhmm format (which means 60 minutes = 100 units) + off = (off / 60)*100 + (off % 60); + return (ahead ? '+' : '-') + String("0000" + off).slice(-4); + }, + '%Z': function(date) { + return date.tm_zone; + }, + '%%': function() { + return '%'; + } + }; + for (var rule in EXPANSION_RULES_2) { + if (pattern.includes(rule)) { + pattern = pattern.replace(new RegExp(rule, 'g'), EXPANSION_RULES_2[rule](date)); + } + } + + var bytes = intArrayFromString(pattern, false); + if (bytes.length > maxsize) { + return 0; + } + + writeArrayToMemory(bytes, s); + return bytes.length-1; + } + function _strftime_l(s, maxsize, format, tm) { + return _strftime(s, maxsize, format, tm); // no locale support yet + } + + var FSNode = /** @constructor */ function(parent, name, mode, rdev) { + if (!parent) { + parent = this; // root node sets parent to itself + } + this.parent = parent; + this.mount = parent.mount; + this.mounted = null; + this.id = FS.nextInode++; + this.name = name; + this.mode = mode; + this.node_ops = {}; + this.stream_ops = {}; + this.rdev = rdev; + }; + var readMode = 292/*292*/ | 73/*73*/; + var writeMode = 146/*146*/; + Object.defineProperties(FSNode.prototype, { + read: { + get: /** @this{FSNode} */function() { + return (this.mode & readMode) === readMode; + }, + set: /** @this{FSNode} */function(val) { + val ? this.mode |= readMode : this.mode &= ~readMode; + } + }, + write: { + get: /** @this{FSNode} */function() { + return (this.mode & writeMode) === writeMode; + }, + set: /** @this{FSNode} */function(val) { + val ? this.mode |= writeMode : this.mode &= ~writeMode; + } + }, + isFolder: { + get: /** @this{FSNode} */function() { + return FS.isDir(this.mode); + } + }, + isDevice: { + get: /** @this{FSNode} */function() { + return FS.isChrdev(this.mode); + } + } + }); + FS.FSNode = FSNode; + FS.staticInit();; +ERRNO_CODES = { + 'EPERM': 63, + 'ENOENT': 44, + 'ESRCH': 71, + 'EINTR': 27, + 'EIO': 29, + 'ENXIO': 60, + 'E2BIG': 1, + 'ENOEXEC': 45, + 'EBADF': 8, + 'ECHILD': 12, + 'EAGAIN': 6, + 'EWOULDBLOCK': 6, + 'ENOMEM': 48, + 'EACCES': 2, + 'EFAULT': 21, + 'ENOTBLK': 105, + 'EBUSY': 10, + 'EEXIST': 20, + 'EXDEV': 75, + 'ENODEV': 43, + 'ENOTDIR': 54, + 'EISDIR': 31, + 'EINVAL': 28, + 'ENFILE': 41, + 'EMFILE': 33, + 'ENOTTY': 59, + 'ETXTBSY': 74, + 'EFBIG': 22, + 'ENOSPC': 51, + 'ESPIPE': 70, + 'EROFS': 69, + 'EMLINK': 34, + 'EPIPE': 64, + 'EDOM': 18, + 'ERANGE': 68, + 'ENOMSG': 49, + 'EIDRM': 24, + 'ECHRNG': 106, + 'EL2NSYNC': 156, + 'EL3HLT': 107, + 'EL3RST': 108, + 'ELNRNG': 109, + 'EUNATCH': 110, + 'ENOCSI': 111, + 'EL2HLT': 112, + 'EDEADLK': 16, + 'ENOLCK': 46, + 'EBADE': 113, + 'EBADR': 114, + 'EXFULL': 115, + 'ENOANO': 104, + 'EBADRQC': 103, + 'EBADSLT': 102, + 'EDEADLOCK': 16, + 'EBFONT': 101, + 'ENOSTR': 100, + 'ENODATA': 116, + 'ETIME': 117, + 'ENOSR': 118, + 'ENONET': 119, + 'ENOPKG': 120, + 'EREMOTE': 121, + 'ENOLINK': 47, + 'EADV': 122, + 'ESRMNT': 123, + 'ECOMM': 124, + 'EPROTO': 65, + 'EMULTIHOP': 36, + 'EDOTDOT': 125, + 'EBADMSG': 9, + 'ENOTUNIQ': 126, + 'EBADFD': 127, + 'EREMCHG': 128, + 'ELIBACC': 129, + 'ELIBBAD': 130, + 'ELIBSCN': 131, + 'ELIBMAX': 132, + 'ELIBEXEC': 133, + 'ENOSYS': 52, + 'ENOTEMPTY': 55, + 'ENAMETOOLONG': 37, + 'ELOOP': 32, + 'EOPNOTSUPP': 138, + 'EPFNOSUPPORT': 139, + 'ECONNRESET': 15, + 'ENOBUFS': 42, + 'EAFNOSUPPORT': 5, + 'EPROTOTYPE': 67, + 'ENOTSOCK': 57, + 'ENOPROTOOPT': 50, + 'ESHUTDOWN': 140, + 'ECONNREFUSED': 14, + 'EADDRINUSE': 3, + 'ECONNABORTED': 13, + 'ENETUNREACH': 40, + 'ENETDOWN': 38, + 'ETIMEDOUT': 73, + 'EHOSTDOWN': 142, + 'EHOSTUNREACH': 23, + 'EINPROGRESS': 26, + 'EALREADY': 7, + 'EDESTADDRREQ': 17, + 'EMSGSIZE': 35, + 'EPROTONOSUPPORT': 66, + 'ESOCKTNOSUPPORT': 137, + 'EADDRNOTAVAIL': 4, + 'ENETRESET': 39, + 'EISCONN': 30, + 'ENOTCONN': 53, + 'ETOOMANYREFS': 141, + 'EUSERS': 136, + 'EDQUOT': 19, + 'ESTALE': 72, + 'ENOTSUP': 138, + 'ENOMEDIUM': 148, + 'EILSEQ': 25, + 'EOVERFLOW': 61, + 'ECANCELED': 11, + 'ENOTRECOVERABLE': 56, + 'EOWNERDEAD': 62, + 'ESTRPIPE': 135, + };; +var ASSERTIONS = true; + + + +/** @type {function(string, boolean=, number=)} */ +function intArrayFromString(stringy, dontAddNull, length) { + var len = length > 0 ? length : lengthBytesUTF8(stringy)+1; + var u8array = new Array(len); + var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length); + if (dontAddNull) u8array.length = numBytesWritten; + return u8array; +} + +function intArrayToString(array) { + var ret = []; + for (var i = 0; i < array.length; i++) { + var chr = array[i]; + if (chr > 0xFF) { + if (ASSERTIONS) { + assert(false, 'Character code ' + chr + ' (' + String.fromCharCode(chr) + ') at offset ' + i + ' not in 0x00-0xFF.'); + } + chr &= 0xFF; + } + ret.push(String.fromCharCode(chr)); + } + return ret.join(''); +} + + +var asmLibraryArg = { + "__cxa_allocate_exception": ___cxa_allocate_exception, + "__cxa_throw": ___cxa_throw, + "abort": _abort, + "emscripten_memcpy_big": _emscripten_memcpy_big, + "emscripten_resize_heap": _emscripten_resize_heap, + "environ_get": _environ_get, + "environ_sizes_get": _environ_sizes_get, + "fd_close": _fd_close, + "fd_read": _fd_read, + "fd_seek": _fd_seek, + "fd_write": _fd_write, + "setTempRet0": _setTempRet0, + "strftime_l": _strftime_l +}; +var asm = createWasm(); +/** @type {function(...*):?} */ +var ___wasm_call_ctors = Module["___wasm_call_ctors"] = createExportWrapper("__wasm_call_ctors"); + +/** @type {function(...*):?} */ +var _Encoder_new = Module["_Encoder_new"] = createExportWrapper("Encoder_new"); + +/** @type {function(...*):?} */ +var _Encoder_delete = Module["_Encoder_delete"] = createExportWrapper("Encoder_delete"); + +/** @type {function(...*):?} */ +var _Encoder_input = Module["_Encoder_input"] = createExportWrapper("Encoder_input"); + +/** @type {function(...*):?} */ +var _Encoder_output = Module["_Encoder_output"] = createExportWrapper("Encoder_output"); + +/** @type {function(...*):?} */ +var _Decoder_new = Module["_Decoder_new"] = createExportWrapper("Decoder_new"); + +/** @type {function(...*):?} */ +var _Decoder_delete = Module["_Decoder_delete"] = createExportWrapper("Decoder_delete"); + +/** @type {function(...*):?} */ +var _Decoder_input = Module["_Decoder_input"] = createExportWrapper("Decoder_input"); + +/** @type {function(...*):?} */ +var _Decoder_output = Module["_Decoder_output"] = createExportWrapper("Decoder_output"); + +/** @type {function(...*):?} */ +var _String_size = Module["_String_size"] = createExportWrapper("String_size"); + +/** @type {function(...*):?} */ +var _String_new = Module["_String_new"] = createExportWrapper("String_new"); + +/** @type {function(...*):?} */ +var _String_data = Module["_String_data"] = createExportWrapper("String_data"); + +/** @type {function(...*):?} */ +var _String_delete = Module["_String_delete"] = createExportWrapper("String_delete"); + +/** @type {function(...*):?} */ +var _Int16Array_size = Module["_Int16Array_size"] = createExportWrapper("Int16Array_size"); + +/** @type {function(...*):?} */ +var _Int16Array_new = Module["_Int16Array_new"] = createExportWrapper("Int16Array_new"); + +/** @type {function(...*):?} */ +var _Int16Array_data = Module["_Int16Array_data"] = createExportWrapper("Int16Array_data"); + +/** @type {function(...*):?} */ +var _Int16Array_delete = Module["_Int16Array_delete"] = createExportWrapper("Int16Array_delete"); + +/** @type {function(...*):?} */ +var _malloc = Module["_malloc"] = createExportWrapper("malloc"); + +/** @type {function(...*):?} */ +var _free = Module["_free"] = createExportWrapper("free"); + +/** @type {function(...*):?} */ +var ___errno_location = Module["___errno_location"] = createExportWrapper("__errno_location"); + +/** @type {function(...*):?} */ +var _fflush = Module["_fflush"] = createExportWrapper("fflush"); + +/** @type {function(...*):?} */ +var _emscripten_stack_init = Module["_emscripten_stack_init"] = function() { + return (_emscripten_stack_init = Module["_emscripten_stack_init"] = Module["asm"]["emscripten_stack_init"]).apply(null, arguments); +}; + +/** @type {function(...*):?} */ +var _emscripten_stack_get_free = Module["_emscripten_stack_get_free"] = function() { + return (_emscripten_stack_get_free = Module["_emscripten_stack_get_free"] = Module["asm"]["emscripten_stack_get_free"]).apply(null, arguments); +}; + +/** @type {function(...*):?} */ +var _emscripten_stack_get_end = Module["_emscripten_stack_get_end"] = function() { + return (_emscripten_stack_get_end = Module["_emscripten_stack_get_end"] = Module["asm"]["emscripten_stack_get_end"]).apply(null, arguments); +}; + +/** @type {function(...*):?} */ +var stackSave = Module["stackSave"] = createExportWrapper("stackSave"); + +/** @type {function(...*):?} */ +var stackRestore = Module["stackRestore"] = createExportWrapper("stackRestore"); + +/** @type {function(...*):?} */ +var stackAlloc = Module["stackAlloc"] = createExportWrapper("stackAlloc"); + +/** @type {function(...*):?} */ +var dynCall_viijii = Module["dynCall_viijii"] = createExportWrapper("dynCall_viijii"); + +/** @type {function(...*):?} */ +var dynCall_jiji = Module["dynCall_jiji"] = createExportWrapper("dynCall_jiji"); + +/** @type {function(...*):?} */ +var dynCall_iiiiij = Module["dynCall_iiiiij"] = createExportWrapper("dynCall_iiiiij"); + +/** @type {function(...*):?} */ +var dynCall_iiiiijj = Module["dynCall_iiiiijj"] = createExportWrapper("dynCall_iiiiijj"); + +/** @type {function(...*):?} */ +var dynCall_iiiiiijj = Module["dynCall_iiiiiijj"] = createExportWrapper("dynCall_iiiiiijj"); + + + + + +// === Auto-generated postamble setup entry stuff === + +if (!Object.getOwnPropertyDescriptor(Module, "intArrayFromString")) Module["intArrayFromString"] = () => abort("'intArrayFromString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "intArrayToString")) Module["intArrayToString"] = () => abort("'intArrayToString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "ccall")) Module["ccall"] = () => abort("'ccall' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "cwrap")) Module["cwrap"] = () => abort("'cwrap' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "setValue")) Module["setValue"] = () => abort("'setValue' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "getValue")) Module["getValue"] = () => abort("'getValue' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "allocate")) Module["allocate"] = () => abort("'allocate' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "UTF8ArrayToString")) Module["UTF8ArrayToString"] = () => abort("'UTF8ArrayToString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "UTF8ToString")) Module["UTF8ToString"] = () => abort("'UTF8ToString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "stringToUTF8Array")) Module["stringToUTF8Array"] = () => abort("'stringToUTF8Array' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "stringToUTF8")) Module["stringToUTF8"] = () => abort("'stringToUTF8' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "lengthBytesUTF8")) Module["lengthBytesUTF8"] = () => abort("'lengthBytesUTF8' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "stackTrace")) Module["stackTrace"] = () => abort("'stackTrace' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "addOnPreRun")) Module["addOnPreRun"] = () => abort("'addOnPreRun' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "addOnInit")) Module["addOnInit"] = () => abort("'addOnInit' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "addOnPreMain")) Module["addOnPreMain"] = () => abort("'addOnPreMain' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "addOnExit")) Module["addOnExit"] = () => abort("'addOnExit' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "addOnPostRun")) Module["addOnPostRun"] = () => abort("'addOnPostRun' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "writeStringToMemory")) Module["writeStringToMemory"] = () => abort("'writeStringToMemory' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "writeArrayToMemory")) Module["writeArrayToMemory"] = () => abort("'writeArrayToMemory' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "writeAsciiToMemory")) Module["writeAsciiToMemory"] = () => abort("'writeAsciiToMemory' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "addRunDependency")) Module["addRunDependency"] = () => abort("'addRunDependency' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you"); +if (!Object.getOwnPropertyDescriptor(Module, "removeRunDependency")) Module["removeRunDependency"] = () => abort("'removeRunDependency' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you"); +if (!Object.getOwnPropertyDescriptor(Module, "FS_createFolder")) Module["FS_createFolder"] = () => abort("'FS_createFolder' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "FS_createPath")) Module["FS_createPath"] = () => abort("'FS_createPath' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you"); +if (!Object.getOwnPropertyDescriptor(Module, "FS_createDataFile")) Module["FS_createDataFile"] = () => abort("'FS_createDataFile' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you"); +if (!Object.getOwnPropertyDescriptor(Module, "FS_createPreloadedFile")) Module["FS_createPreloadedFile"] = () => abort("'FS_createPreloadedFile' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you"); +if (!Object.getOwnPropertyDescriptor(Module, "FS_createLazyFile")) Module["FS_createLazyFile"] = () => abort("'FS_createLazyFile' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you"); +if (!Object.getOwnPropertyDescriptor(Module, "FS_createLink")) Module["FS_createLink"] = () => abort("'FS_createLink' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "FS_createDevice")) Module["FS_createDevice"] = () => abort("'FS_createDevice' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you"); +if (!Object.getOwnPropertyDescriptor(Module, "FS_unlink")) Module["FS_unlink"] = () => abort("'FS_unlink' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you"); +if (!Object.getOwnPropertyDescriptor(Module, "getLEB")) Module["getLEB"] = () => abort("'getLEB' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "getFunctionTables")) Module["getFunctionTables"] = () => abort("'getFunctionTables' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "alignFunctionTables")) Module["alignFunctionTables"] = () => abort("'alignFunctionTables' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "registerFunctions")) Module["registerFunctions"] = () => abort("'registerFunctions' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "addFunction")) Module["addFunction"] = () => abort("'addFunction' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "removeFunction")) Module["removeFunction"] = () => abort("'removeFunction' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "getFuncWrapper")) Module["getFuncWrapper"] = () => abort("'getFuncWrapper' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "prettyPrint")) Module["prettyPrint"] = () => abort("'prettyPrint' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "dynCall")) Module["dynCall"] = () => abort("'dynCall' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "getCompilerSetting")) Module["getCompilerSetting"] = () => abort("'getCompilerSetting' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "print")) Module["print"] = () => abort("'print' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "printErr")) Module["printErr"] = () => abort("'printErr' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "getTempRet0")) Module["getTempRet0"] = () => abort("'getTempRet0' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "setTempRet0")) Module["setTempRet0"] = () => abort("'setTempRet0' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "callMain")) Module["callMain"] = () => abort("'callMain' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "abort")) Module["abort"] = () => abort("'abort' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "keepRuntimeAlive")) Module["keepRuntimeAlive"] = () => abort("'keepRuntimeAlive' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "zeroMemory")) Module["zeroMemory"] = () => abort("'zeroMemory' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "stringToNewUTF8")) Module["stringToNewUTF8"] = () => abort("'stringToNewUTF8' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "setFileTime")) Module["setFileTime"] = () => abort("'setFileTime' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "abortOnCannotGrowMemory")) Module["abortOnCannotGrowMemory"] = () => abort("'abortOnCannotGrowMemory' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "emscripten_realloc_buffer")) Module["emscripten_realloc_buffer"] = () => abort("'emscripten_realloc_buffer' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "ENV")) Module["ENV"] = () => abort("'ENV' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "withStackSave")) Module["withStackSave"] = () => abort("'withStackSave' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "ERRNO_CODES")) Module["ERRNO_CODES"] = () => abort("'ERRNO_CODES' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "ERRNO_MESSAGES")) Module["ERRNO_MESSAGES"] = () => abort("'ERRNO_MESSAGES' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "setErrNo")) Module["setErrNo"] = () => abort("'setErrNo' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "inetPton4")) Module["inetPton4"] = () => abort("'inetPton4' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "inetNtop4")) Module["inetNtop4"] = () => abort("'inetNtop4' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "inetPton6")) Module["inetPton6"] = () => abort("'inetPton6' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "inetNtop6")) Module["inetNtop6"] = () => abort("'inetNtop6' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "readSockaddr")) Module["readSockaddr"] = () => abort("'readSockaddr' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "writeSockaddr")) Module["writeSockaddr"] = () => abort("'writeSockaddr' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "DNS")) Module["DNS"] = () => abort("'DNS' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "getHostByName")) Module["getHostByName"] = () => abort("'getHostByName' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "GAI_ERRNO_MESSAGES")) Module["GAI_ERRNO_MESSAGES"] = () => abort("'GAI_ERRNO_MESSAGES' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "Protocols")) Module["Protocols"] = () => abort("'Protocols' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "Sockets")) Module["Sockets"] = () => abort("'Sockets' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "getRandomDevice")) Module["getRandomDevice"] = () => abort("'getRandomDevice' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "traverseStack")) Module["traverseStack"] = () => abort("'traverseStack' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "convertFrameToPC")) Module["convertFrameToPC"] = () => abort("'convertFrameToPC' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "UNWIND_CACHE")) Module["UNWIND_CACHE"] = () => abort("'UNWIND_CACHE' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "saveInUnwindCache")) Module["saveInUnwindCache"] = () => abort("'saveInUnwindCache' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "convertPCtoSourceLocation")) Module["convertPCtoSourceLocation"] = () => abort("'convertPCtoSourceLocation' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "readAsmConstArgsArray")) Module["readAsmConstArgsArray"] = () => abort("'readAsmConstArgsArray' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "readAsmConstArgs")) Module["readAsmConstArgs"] = () => abort("'readAsmConstArgs' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "mainThreadEM_ASM")) Module["mainThreadEM_ASM"] = () => abort("'mainThreadEM_ASM' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "jstoi_q")) Module["jstoi_q"] = () => abort("'jstoi_q' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "jstoi_s")) Module["jstoi_s"] = () => abort("'jstoi_s' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "getExecutableName")) Module["getExecutableName"] = () => abort("'getExecutableName' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "listenOnce")) Module["listenOnce"] = () => abort("'listenOnce' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "autoResumeAudioContext")) Module["autoResumeAudioContext"] = () => abort("'autoResumeAudioContext' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "dynCallLegacy")) Module["dynCallLegacy"] = () => abort("'dynCallLegacy' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "getDynCaller")) Module["getDynCaller"] = () => abort("'getDynCaller' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "dynCall")) Module["dynCall"] = () => abort("'dynCall' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "callRuntimeCallbacks")) Module["callRuntimeCallbacks"] = () => abort("'callRuntimeCallbacks' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "wasmTableMirror")) Module["wasmTableMirror"] = () => abort("'wasmTableMirror' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "setWasmTableEntry")) Module["setWasmTableEntry"] = () => abort("'setWasmTableEntry' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "getWasmTableEntry")) Module["getWasmTableEntry"] = () => abort("'getWasmTableEntry' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "handleException")) Module["handleException"] = () => abort("'handleException' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "runtimeKeepalivePush")) Module["runtimeKeepalivePush"] = () => abort("'runtimeKeepalivePush' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "runtimeKeepalivePop")) Module["runtimeKeepalivePop"] = () => abort("'runtimeKeepalivePop' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "callUserCallback")) Module["callUserCallback"] = () => abort("'callUserCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "maybeExit")) Module["maybeExit"] = () => abort("'maybeExit' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "safeSetTimeout")) Module["safeSetTimeout"] = () => abort("'safeSetTimeout' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "asmjsMangle")) Module["asmjsMangle"] = () => abort("'asmjsMangle' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "asyncLoad")) Module["asyncLoad"] = () => abort("'asyncLoad' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "alignMemory")) Module["alignMemory"] = () => abort("'alignMemory' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "mmapAlloc")) Module["mmapAlloc"] = () => abort("'mmapAlloc' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "reallyNegative")) Module["reallyNegative"] = () => abort("'reallyNegative' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "unSign")) Module["unSign"] = () => abort("'unSign' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "reSign")) Module["reSign"] = () => abort("'reSign' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "formatString")) Module["formatString"] = () => abort("'formatString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "PATH")) Module["PATH"] = () => abort("'PATH' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "PATH_FS")) Module["PATH_FS"] = () => abort("'PATH_FS' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "SYSCALLS")) Module["SYSCALLS"] = () => abort("'SYSCALLS' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "syscallMmap2")) Module["syscallMmap2"] = () => abort("'syscallMmap2' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "syscallMunmap")) Module["syscallMunmap"] = () => abort("'syscallMunmap' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "getSocketFromFD")) Module["getSocketFromFD"] = () => abort("'getSocketFromFD' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "getSocketAddress")) Module["getSocketAddress"] = () => abort("'getSocketAddress' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "JSEvents")) Module["JSEvents"] = () => abort("'JSEvents' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "registerKeyEventCallback")) Module["registerKeyEventCallback"] = () => abort("'registerKeyEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "specialHTMLTargets")) Module["specialHTMLTargets"] = () => abort("'specialHTMLTargets' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "maybeCStringToJsString")) Module["maybeCStringToJsString"] = () => abort("'maybeCStringToJsString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "findEventTarget")) Module["findEventTarget"] = () => abort("'findEventTarget' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "findCanvasEventTarget")) Module["findCanvasEventTarget"] = () => abort("'findCanvasEventTarget' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "getBoundingClientRect")) Module["getBoundingClientRect"] = () => abort("'getBoundingClientRect' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "fillMouseEventData")) Module["fillMouseEventData"] = () => abort("'fillMouseEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "registerMouseEventCallback")) Module["registerMouseEventCallback"] = () => abort("'registerMouseEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "registerWheelEventCallback")) Module["registerWheelEventCallback"] = () => abort("'registerWheelEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "registerUiEventCallback")) Module["registerUiEventCallback"] = () => abort("'registerUiEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "registerFocusEventCallback")) Module["registerFocusEventCallback"] = () => abort("'registerFocusEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "fillDeviceOrientationEventData")) Module["fillDeviceOrientationEventData"] = () => abort("'fillDeviceOrientationEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "registerDeviceOrientationEventCallback")) Module["registerDeviceOrientationEventCallback"] = () => abort("'registerDeviceOrientationEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "fillDeviceMotionEventData")) Module["fillDeviceMotionEventData"] = () => abort("'fillDeviceMotionEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "registerDeviceMotionEventCallback")) Module["registerDeviceMotionEventCallback"] = () => abort("'registerDeviceMotionEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "screenOrientation")) Module["screenOrientation"] = () => abort("'screenOrientation' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "fillOrientationChangeEventData")) Module["fillOrientationChangeEventData"] = () => abort("'fillOrientationChangeEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "registerOrientationChangeEventCallback")) Module["registerOrientationChangeEventCallback"] = () => abort("'registerOrientationChangeEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "fillFullscreenChangeEventData")) Module["fillFullscreenChangeEventData"] = () => abort("'fillFullscreenChangeEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "registerFullscreenChangeEventCallback")) Module["registerFullscreenChangeEventCallback"] = () => abort("'registerFullscreenChangeEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "registerRestoreOldStyle")) Module["registerRestoreOldStyle"] = () => abort("'registerRestoreOldStyle' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "hideEverythingExceptGivenElement")) Module["hideEverythingExceptGivenElement"] = () => abort("'hideEverythingExceptGivenElement' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "restoreHiddenElements")) Module["restoreHiddenElements"] = () => abort("'restoreHiddenElements' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "setLetterbox")) Module["setLetterbox"] = () => abort("'setLetterbox' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "currentFullscreenStrategy")) Module["currentFullscreenStrategy"] = () => abort("'currentFullscreenStrategy' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "restoreOldWindowedStyle")) Module["restoreOldWindowedStyle"] = () => abort("'restoreOldWindowedStyle' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "softFullscreenResizeWebGLRenderTarget")) Module["softFullscreenResizeWebGLRenderTarget"] = () => abort("'softFullscreenResizeWebGLRenderTarget' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "doRequestFullscreen")) Module["doRequestFullscreen"] = () => abort("'doRequestFullscreen' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "fillPointerlockChangeEventData")) Module["fillPointerlockChangeEventData"] = () => abort("'fillPointerlockChangeEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "registerPointerlockChangeEventCallback")) Module["registerPointerlockChangeEventCallback"] = () => abort("'registerPointerlockChangeEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "registerPointerlockErrorEventCallback")) Module["registerPointerlockErrorEventCallback"] = () => abort("'registerPointerlockErrorEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "requestPointerLock")) Module["requestPointerLock"] = () => abort("'requestPointerLock' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "fillVisibilityChangeEventData")) Module["fillVisibilityChangeEventData"] = () => abort("'fillVisibilityChangeEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "registerVisibilityChangeEventCallback")) Module["registerVisibilityChangeEventCallback"] = () => abort("'registerVisibilityChangeEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "registerTouchEventCallback")) Module["registerTouchEventCallback"] = () => abort("'registerTouchEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "fillGamepadEventData")) Module["fillGamepadEventData"] = () => abort("'fillGamepadEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "registerGamepadEventCallback")) Module["registerGamepadEventCallback"] = () => abort("'registerGamepadEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "registerBeforeUnloadEventCallback")) Module["registerBeforeUnloadEventCallback"] = () => abort("'registerBeforeUnloadEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "fillBatteryEventData")) Module["fillBatteryEventData"] = () => abort("'fillBatteryEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "battery")) Module["battery"] = () => abort("'battery' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "registerBatteryEventCallback")) Module["registerBatteryEventCallback"] = () => abort("'registerBatteryEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "setCanvasElementSize")) Module["setCanvasElementSize"] = () => abort("'setCanvasElementSize' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "getCanvasElementSize")) Module["getCanvasElementSize"] = () => abort("'getCanvasElementSize' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "demangle")) Module["demangle"] = () => abort("'demangle' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "demangleAll")) Module["demangleAll"] = () => abort("'demangleAll' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "jsStackTrace")) Module["jsStackTrace"] = () => abort("'jsStackTrace' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "stackTrace")) Module["stackTrace"] = () => abort("'stackTrace' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "getEnvStrings")) Module["getEnvStrings"] = () => abort("'getEnvStrings' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "checkWasiClock")) Module["checkWasiClock"] = () => abort("'checkWasiClock' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "writeI53ToI64")) Module["writeI53ToI64"] = () => abort("'writeI53ToI64' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "writeI53ToI64Clamped")) Module["writeI53ToI64Clamped"] = () => abort("'writeI53ToI64Clamped' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "writeI53ToI64Signaling")) Module["writeI53ToI64Signaling"] = () => abort("'writeI53ToI64Signaling' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "writeI53ToU64Clamped")) Module["writeI53ToU64Clamped"] = () => abort("'writeI53ToU64Clamped' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "writeI53ToU64Signaling")) Module["writeI53ToU64Signaling"] = () => abort("'writeI53ToU64Signaling' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "readI53FromI64")) Module["readI53FromI64"] = () => abort("'readI53FromI64' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "readI53FromU64")) Module["readI53FromU64"] = () => abort("'readI53FromU64' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "convertI32PairToI53")) Module["convertI32PairToI53"] = () => abort("'convertI32PairToI53' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "convertU32PairToI53")) Module["convertU32PairToI53"] = () => abort("'convertU32PairToI53' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "setImmediateWrapped")) Module["setImmediateWrapped"] = () => abort("'setImmediateWrapped' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "clearImmediateWrapped")) Module["clearImmediateWrapped"] = () => abort("'clearImmediateWrapped' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "polyfillSetImmediate")) Module["polyfillSetImmediate"] = () => abort("'polyfillSetImmediate' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "uncaughtExceptionCount")) Module["uncaughtExceptionCount"] = () => abort("'uncaughtExceptionCount' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "exceptionLast")) Module["exceptionLast"] = () => abort("'exceptionLast' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "exceptionCaught")) Module["exceptionCaught"] = () => abort("'exceptionCaught' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "ExceptionInfo")) Module["ExceptionInfo"] = () => abort("'ExceptionInfo' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "CatchInfo")) Module["CatchInfo"] = () => abort("'CatchInfo' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "exception_addRef")) Module["exception_addRef"] = () => abort("'exception_addRef' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "exception_decRef")) Module["exception_decRef"] = () => abort("'exception_decRef' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "Browser")) Module["Browser"] = () => abort("'Browser' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "funcWrappers")) Module["funcWrappers"] = () => abort("'funcWrappers' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "getFuncWrapper")) Module["getFuncWrapper"] = () => abort("'getFuncWrapper' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "setMainLoop")) Module["setMainLoop"] = () => abort("'setMainLoop' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "wget")) Module["wget"] = () => abort("'wget' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "FS")) Module["FS"] = () => abort("'FS' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "MEMFS")) Module["MEMFS"] = () => abort("'MEMFS' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "TTY")) Module["TTY"] = () => abort("'TTY' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "PIPEFS")) Module["PIPEFS"] = () => abort("'PIPEFS' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "SOCKFS")) Module["SOCKFS"] = () => abort("'SOCKFS' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "_setNetworkCallback")) Module["_setNetworkCallback"] = () => abort("'_setNetworkCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "tempFixedLengthArray")) Module["tempFixedLengthArray"] = () => abort("'tempFixedLengthArray' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "miniTempWebGLFloatBuffers")) Module["miniTempWebGLFloatBuffers"] = () => abort("'miniTempWebGLFloatBuffers' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "heapObjectForWebGLType")) Module["heapObjectForWebGLType"] = () => abort("'heapObjectForWebGLType' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "heapAccessShiftForWebGLHeap")) Module["heapAccessShiftForWebGLHeap"] = () => abort("'heapAccessShiftForWebGLHeap' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "GL")) Module["GL"] = () => abort("'GL' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "emscriptenWebGLGet")) Module["emscriptenWebGLGet"] = () => abort("'emscriptenWebGLGet' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "computeUnpackAlignedImageSize")) Module["computeUnpackAlignedImageSize"] = () => abort("'computeUnpackAlignedImageSize' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "emscriptenWebGLGetTexPixelData")) Module["emscriptenWebGLGetTexPixelData"] = () => abort("'emscriptenWebGLGetTexPixelData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "emscriptenWebGLGetUniform")) Module["emscriptenWebGLGetUniform"] = () => abort("'emscriptenWebGLGetUniform' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "webglGetUniformLocation")) Module["webglGetUniformLocation"] = () => abort("'webglGetUniformLocation' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "webglPrepareUniformLocationsBeforeFirstUse")) Module["webglPrepareUniformLocationsBeforeFirstUse"] = () => abort("'webglPrepareUniformLocationsBeforeFirstUse' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "webglGetLeftBracePos")) Module["webglGetLeftBracePos"] = () => abort("'webglGetLeftBracePos' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "emscriptenWebGLGetVertexAttrib")) Module["emscriptenWebGLGetVertexAttrib"] = () => abort("'emscriptenWebGLGetVertexAttrib' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "writeGLArray")) Module["writeGLArray"] = () => abort("'writeGLArray' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "AL")) Module["AL"] = () => abort("'AL' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "SDL_unicode")) Module["SDL_unicode"] = () => abort("'SDL_unicode' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "SDL_ttfContext")) Module["SDL_ttfContext"] = () => abort("'SDL_ttfContext' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "SDL_audio")) Module["SDL_audio"] = () => abort("'SDL_audio' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "SDL")) Module["SDL"] = () => abort("'SDL' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "SDL_gfx")) Module["SDL_gfx"] = () => abort("'SDL_gfx' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "GLUT")) Module["GLUT"] = () => abort("'GLUT' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "EGL")) Module["EGL"] = () => abort("'EGL' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "GLFW_Window")) Module["GLFW_Window"] = () => abort("'GLFW_Window' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "GLFW")) Module["GLFW"] = () => abort("'GLFW' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "GLEW")) Module["GLEW"] = () => abort("'GLEW' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "IDBStore")) Module["IDBStore"] = () => abort("'IDBStore' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "runAndAbortIfError")) Module["runAndAbortIfError"] = () => abort("'runAndAbortIfError' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "warnOnce")) Module["warnOnce"] = () => abort("'warnOnce' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "stackSave")) Module["stackSave"] = () => abort("'stackSave' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "stackRestore")) Module["stackRestore"] = () => abort("'stackRestore' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "stackAlloc")) Module["stackAlloc"] = () => abort("'stackAlloc' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "AsciiToString")) Module["AsciiToString"] = () => abort("'AsciiToString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "stringToAscii")) Module["stringToAscii"] = () => abort("'stringToAscii' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "UTF16ToString")) Module["UTF16ToString"] = () => abort("'UTF16ToString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "stringToUTF16")) Module["stringToUTF16"] = () => abort("'stringToUTF16' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "lengthBytesUTF16")) Module["lengthBytesUTF16"] = () => abort("'lengthBytesUTF16' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "UTF32ToString")) Module["UTF32ToString"] = () => abort("'UTF32ToString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "stringToUTF32")) Module["stringToUTF32"] = () => abort("'stringToUTF32' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "lengthBytesUTF32")) Module["lengthBytesUTF32"] = () => abort("'lengthBytesUTF32' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "allocateUTF8")) Module["allocateUTF8"] = () => abort("'allocateUTF8' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +if (!Object.getOwnPropertyDescriptor(Module, "allocateUTF8OnStack")) Module["allocateUTF8OnStack"] = () => abort("'allocateUTF8OnStack' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); +Module["writeStackCookie"] = writeStackCookie; +Module["checkStackCookie"] = checkStackCookie; +if (!Object.getOwnPropertyDescriptor(Module, "ALLOC_NORMAL")) Object.defineProperty(Module, "ALLOC_NORMAL", { configurable: true, get: function() { abort("'ALLOC_NORMAL' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)") } }); +if (!Object.getOwnPropertyDescriptor(Module, "ALLOC_STACK")) Object.defineProperty(Module, "ALLOC_STACK", { configurable: true, get: function() { abort("'ALLOC_STACK' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)") } }); + +var calledRun; + +/** + * @constructor + * @this {ExitStatus} + */ +function ExitStatus(status) { + this.name = "ExitStatus"; + this.message = "Program terminated with exit(" + status + ")"; + this.status = status; +} + +var calledMain = false; + +dependenciesFulfilled = function runCaller() { + // If run has never been called, and we should call run (INVOKE_RUN is true, and Module.noInitialRun is not false) + if (!calledRun) run(); + if (!calledRun) dependenciesFulfilled = runCaller; // try this again later, after new deps are fulfilled +}; + +function stackCheckInit() { + // This is normally called automatically during __wasm_call_ctors but need to + // get these values before even running any of the ctors so we call it redundantly + // here. + // TODO(sbc): Move writeStackCookie to native to to avoid this. + _emscripten_stack_init(); + writeStackCookie(); +} + +/** @type {function(Array=)} */ +function run(args) { + args = args || arguments_; + + if (runDependencies > 0) { + return; + } + + stackCheckInit(); + + preRun(); + + // a preRun added a dependency, run will be called later + if (runDependencies > 0) { + return; + } + + function doRun() { + // run may have just been called through dependencies being fulfilled just in this very frame, + // or while the async setStatus time below was happening + if (calledRun) return; + calledRun = true; + Module['calledRun'] = true; + + if (ABORT) return; + + initRuntime(); + + if (Module['onRuntimeInitialized']) Module['onRuntimeInitialized'](); + + assert(!Module['_main'], 'compiled without a main, but one is present. if you added it from JS, use Module["onRuntimeInitialized"]'); + + postRun(); + } + + if (Module['setStatus']) { + Module['setStatus']('Running...'); + setTimeout(function() { + setTimeout(function() { + Module['setStatus'](''); + }, 1); + doRun(); + }, 1); + } else + { + doRun(); + } + checkStackCookie(); +} +Module['run'] = run; + +function checkUnflushedContent() { + // Compiler settings do not allow exiting the runtime, so flushing + // the streams is not possible. but in ASSERTIONS mode we check + // if there was something to flush, and if so tell the user they + // should request that the runtime be exitable. + // Normally we would not even include flush() at all, but in ASSERTIONS + // builds we do so just for this check, and here we see if there is any + // content to flush, that is, we check if there would have been + // something a non-ASSERTIONS build would have not seen. + // How we flush the streams depends on whether we are in SYSCALLS_REQUIRE_FILESYSTEM=0 + // mode (which has its own special function for this; otherwise, all + // the code is inside libc) + var oldOut = out; + var oldErr = err; + var has = false; + out = err = (x) => { + has = true; + } + try { // it doesn't matter if it fails + _fflush(0); + // also flush in the JS FS layer + ['stdout', 'stderr'].forEach(function(name) { + var info = FS.analyzePath('/dev/' + name); + if (!info) return; + var stream = info.object; + var rdev = stream.rdev; + var tty = TTY.ttys[rdev]; + if (tty && tty.output && tty.output.length) { + has = true; + } + }); + } catch(e) {} + out = oldOut; + err = oldErr; + if (has) { + warnOnce('stdio streams had content in them that was not flushed. you should set EXIT_RUNTIME to 1 (see the FAQ), or make sure to emit a newline when you printf etc.'); + } +} + +/** @param {boolean|number=} implicit */ +function exit(status, implicit) { + EXITSTATUS = status; + + checkUnflushedContent(); + + if (keepRuntimeAlive()) { + // if exit() was called, we may warn the user if the runtime isn't actually being shut down + if (!implicit) { + var msg = 'program exited (with status: ' + status + '), but EXIT_RUNTIME is not set, so halting execution but not exiting the runtime or preventing further async execution (build with EXIT_RUNTIME=1, if you want a true shutdown)'; + err(msg); + } + } else { + exitRuntime(); + } + + procExit(status); +} + +function procExit(code) { + EXITSTATUS = code; + if (!keepRuntimeAlive()) { + if (Module['onExit']) Module['onExit'](code); + ABORT = true; + } + quit_(code, new ExitStatus(code)); +} + +if (Module['preInit']) { + if (typeof Module['preInit'] == 'function') Module['preInit'] = [Module['preInit']]; + while (Module['preInit'].length > 0) { + Module['preInit'].pop()(); + } +} + +run(); + + + + + +// Encoder + +// create encoder +// channels: 1-2 +// samplerate: 8000,12000,16000,24000,48000 +// bitrate: see Opus recommended bitrates +// frame_size: frame size in milliseconds (2.5,5,10,20,40,60), 20 is recommended +// voice_optimization: true/false +function Encoder(channels, samplerate, bitrate, frame_size, voice_optimization) +{ + this.enc = Module._Encoder_new.apply(null, arguments); + this.out = Module._String_new(); +} + +// free encoder memory +Encoder.prototype.destroy = function() +{ + Module._Encoder_delete(this.enc); + Module._String_delete(this.out); +} + +// add samples to the encoder buffer +// samples: Int16Array of interleaved (if multiple channels) samples +Encoder.prototype.input = function(samples) +{ + var ptr = Module._malloc(samples.length*samples.BYTES_PER_ELEMENT); + var pdata = new Uint8Array(Module.HEAPU8.buffer, ptr, samples.length*samples.BYTES_PER_ELEMENT); + pdata.set(new Uint8Array(samples.buffer, samples.byteOffset, samples.length*samples.BYTES_PER_ELEMENT)); + + Module._Encoder_input(this.enc, ptr, samples.length); + Module._free(ptr); +} + +// output the next encoded packet +// return Uint8Array (valid until the next output call) or null if there is no packet to output +Encoder.prototype.output = function() +{ + var ok = Module._Encoder_output(this.enc, this.out); + if(ok) + return new Uint8Array(Module.HEAPU8.buffer, Module._String_data(this.out), Module._String_size(this.out)); +} + +// Decoder + +// create decoder +// channels and samplerate should match the encoder options +function Decoder(channels, samplerate) +{ + this.dec = Module._Decoder_new.apply(null, arguments); + this.out = Module._Int16Array_new(); +} + +// free decoder memory +Decoder.prototype.destroy = function() +{ + Module._Decoder_delete(this.dec); + Module._Int16Array_delete(this.out); +} + +// add packet to the decoder buffer +// packet: Uint8Array +Decoder.prototype.input = function(packet) +{ + var ptr = Module._malloc(packet.length*packet.BYTES_PER_ELEMENT); + var pdata = new Uint8Array(Module.HEAPU8.buffer, ptr, packet.length*packet.BYTES_PER_ELEMENT); + pdata.set(new Uint8Array(packet.buffer, packet.byteOffset, packet.length*packet.BYTES_PER_ELEMENT)); + + Module._Decoder_input(this.dec, ptr, packet.length); + Module._free(ptr); +} + +// output the next decoded samples +// return samples (interleaved if multiple channels) as Int16Array (valid until the next output call) or null if there is no output +Decoder.prototype.output = function() +{ + var ok = Module._Decoder_output(this.dec, this.out); + if(ok) + return new Int16Array(Module.HEAPU8.buffer, Module._Int16Array_data(this.out), Module._Int16Array_size(this.out)); +} + + +//export objects +Module.Encoder = Encoder; +Module.Decoder = Decoder; + +//make the module global if not using nodejs +if(Module["ENVIRONMENT"] != "NODE") + libopus = Module; + +var dec; +var i = 0; +self.addEventListener('message', (e) => { + if (e.data.channels > 0) { + if (dec) dec.destroy(); + dec = new Decoder(e.data.channels, e.data.sampleRate); + } else { + dec.input(e.data); + self.postMessage(dec.output().slice(0)); + } +}); \ No newline at end of file diff --git a/web/libopus.wasm b/web/libopus.wasm new file mode 100755 index 000000000..36e42afb1 Binary files /dev/null and b/web/libopus.wasm differ diff --git a/web/manifest.json b/web/manifest.json new file mode 100644 index 000000000..9723be242 --- /dev/null +++ b/web/manifest.json @@ -0,0 +1,35 @@ +{ + "name": "rustdesk", + "short_name": "rustdesk", + "start_url": ".", + "display": "standalone", + "background_color": "#0175C2", + "theme_color": "#0175C2", + "description": "Remote Desktop.", + "orientation": "portrait-primary", + "prefer_related_applications": false, + "icons": [ + { + "src": "icons/Icon-192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "icons/Icon-512.png", + "sizes": "512x512", + "type": "image/png" + }, + { + "src": "icons/Icon-maskable-192.png", + "sizes": "192x192", + "type": "image/png", + "purpose": "maskable" + }, + { + "src": "icons/Icon-maskable-512.png", + "sizes": "512x512", + "type": "image/png", + "purpose": "maskable" + } + ] +} diff --git a/web/ogvjs-1.8.6/COPYING b/web/ogvjs-1.8.6/COPYING new file mode 100644 index 000000000..56c4368fa --- /dev/null +++ b/web/ogvjs-1.8.6/COPYING @@ -0,0 +1,21 @@ +ogv.js wrapper and player code + +Copyright (c) 2013-2019 Brion Vibber and other contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/web/ogvjs-1.8.6/COPYING-dav1d.txt b/web/ogvjs-1.8.6/COPYING-dav1d.txt new file mode 100644 index 000000000..875b138ec --- /dev/null +++ b/web/ogvjs-1.8.6/COPYING-dav1d.txt @@ -0,0 +1,23 @@ +Copyright © 2018-2019, VideoLAN and dav1d authors +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/web/ogvjs-1.8.6/COPYING-ogg.txt b/web/ogvjs-1.8.6/COPYING-ogg.txt new file mode 100644 index 000000000..6111c6c5a --- /dev/null +++ b/web/ogvjs-1.8.6/COPYING-ogg.txt @@ -0,0 +1,28 @@ +Copyright (c) 2002, Xiph.org Foundation + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +- Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + +- Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in the +documentation and/or other materials provided with the distribution. + +- Neither the name of the Xiph.org Foundation nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION +OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/web/ogvjs-1.8.6/COPYING-opus.txt b/web/ogvjs-1.8.6/COPYING-opus.txt new file mode 100644 index 000000000..9c739c34a --- /dev/null +++ b/web/ogvjs-1.8.6/COPYING-opus.txt @@ -0,0 +1,44 @@ +Copyright 2001-2011 Xiph.Org, Skype Limited, Octasic, + Jean-Marc Valin, Timothy B. Terriberry, + CSIRO, Gregory Maxwell, Mark Borgerding, + Erik de Castro Lopo + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +- Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + +- Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in the +documentation and/or other materials provided with the distribution. + +- Neither the name of Internet Society, IETF or IETF Trust, nor the +names of specific contributors, may be used to endorse or promote +products derived from this software without specific prior written +permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER +OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Opus is subject to the royalty-free patent licenses which are +specified at: + +Xiph.Org Foundation: +https://datatracker.ietf.org/ipr/1524/ + +Microsoft Corporation: +https://datatracker.ietf.org/ipr/1914/ + +Broadcom Corporation: +https://datatracker.ietf.org/ipr/1526/ diff --git a/web/ogvjs-1.8.6/COPYING-theora.txt b/web/ogvjs-1.8.6/COPYING-theora.txt new file mode 100644 index 000000000..c8ccce4ff --- /dev/null +++ b/web/ogvjs-1.8.6/COPYING-theora.txt @@ -0,0 +1,28 @@ +Copyright (C) 2002-2009 Xiph.org Foundation + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +- Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + +- Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in the +documentation and/or other materials provided with the distribution. + +- Neither the name of the Xiph.org Foundation nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION +OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/web/ogvjs-1.8.6/COPYING-vorbis.txt b/web/ogvjs-1.8.6/COPYING-vorbis.txt new file mode 100644 index 000000000..153b926a1 --- /dev/null +++ b/web/ogvjs-1.8.6/COPYING-vorbis.txt @@ -0,0 +1,28 @@ +Copyright (c) 2002-2018 Xiph.org Foundation + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +- Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + +- Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in the +documentation and/or other materials provided with the distribution. + +- Neither the name of the Xiph.org Foundation nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION +OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/web/ogvjs-1.8.6/LICENSE-nestegg.txt b/web/ogvjs-1.8.6/LICENSE-nestegg.txt new file mode 100644 index 000000000..a67984a61 --- /dev/null +++ b/web/ogvjs-1.8.6/LICENSE-nestegg.txt @@ -0,0 +1,13 @@ +Copyright © 2010 Mozilla Foundation + +Permission to use, copy, modify, and distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/web/ogvjs-1.8.6/LICENSE-vpx.txt b/web/ogvjs-1.8.6/LICENSE-vpx.txt new file mode 100644 index 000000000..1ce44343c --- /dev/null +++ b/web/ogvjs-1.8.6/LICENSE-vpx.txt @@ -0,0 +1,31 @@ +Copyright (c) 2010, The WebM Project authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of Google, nor the WebM Project, nor the names + of its contributors may be used to endorse or promote products + derived from this software without specific prior written + permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + diff --git a/web/ogvjs-1.8.6/PATENTS-vpx.txt b/web/ogvjs-1.8.6/PATENTS-vpx.txt new file mode 100644 index 000000000..caedf607e --- /dev/null +++ b/web/ogvjs-1.8.6/PATENTS-vpx.txt @@ -0,0 +1,23 @@ +Additional IP Rights Grant (Patents) +------------------------------------ + +"These implementations" means the copyrightable works that implement the WebM +codecs distributed by Google as part of the WebM Project. + +Google hereby grants to you a perpetual, worldwide, non-exclusive, no-charge, +royalty-free, irrevocable (except as stated in this section) patent license to +make, have made, use, offer to sell, sell, import, transfer, and otherwise +run, modify and propagate the contents of these implementations of WebM, where +such license applies only to those patent claims, both currently owned by +Google and acquired in the future, licensable by Google that are necessarily +infringed by these implementations of WebM. This grant does not include claims +that would be infringed only as a consequence of further modification of these +implementations. If you or your agent or exclusive licensee institute or order +or agree to the institution of patent litigation or any other patent +enforcement activity against any entity (including a cross-claim or +counterclaim in a lawsuit) alleging that any of these implementations of WebM +or any code incorporated within any of these implementations of WebM +constitute direct or contributory patent infringement, or inducement of +patent infringement, then any patent rights granted to you under this License +for these implementations of WebM shall terminate as of the date such +litigation is filed. diff --git a/web/ogvjs-1.8.6/README.md b/web/ogvjs-1.8.6/README.md new file mode 100644 index 000000000..cb7e249d5 --- /dev/null +++ b/web/ogvjs-1.8.6/README.md @@ -0,0 +1,391 @@ +ogv.js +====== + +Media decoder and player for Ogg Vorbis/Opus/Theora and WebM VP8/VP9/AV1 video. + +Based around libogg, libvorbis, libtheora, libopus, libvpx, libnestegg and dav1d compiled to JavaScript and WebAssembly with Emscripten. + +## Updates + +1.8.6 - 2022-01-12 +* Bump to yuv-canvas +* Fix demo for removal of video-canvas mode + +1.8.5 - 2022-01-11 +* Remove unnecessary user-agent checks +* Remove flaky, obsolete support for faking CSS `object-fit` +* Remove experimental support for streaming `` into `