From 050ec748d8739546e0e1bafeab03dfb8b6e9fa35 Mon Sep 17 00:00:00 2001 From: td Date: Tue, 30 Jan 2024 15:17:02 +0100 Subject: [PATCH 01/29] feat: v1 of new calls --- .gitignore | 2 + android/app/proguard-rules.pro | 6 +- android/app/src/main/AndroidManifest.xml | 33 +- .../src/main/res/drawable-xxxhdpi/ic_logo.png | Bin 0 -> 2603 bytes assets/js/package/.gitkeep | 0 assets/l10n/intl_en.arb | 46 +- lib/config/app_config.dart | 4 + lib/config/routes.dart | 28 + lib/main.dart | 28 +- lib/pages/chat/chat.dart | 59 +- lib/pages/chat/chat_view.dart | 13 +- lib/pages/chat_list/chat_list.dart | 7 - lib/pages/dialer/dialer.dart | 651 -------------- lib/pages/dialer/pip/dismiss_keyboard.dart | 5 - lib/pages/dialer/pip/pip_view.dart | 345 -------- lib/pages/global_banner_scaffold.dart | 74 ++ .../settings_chat/settings_chat_view.dart | 14 +- lib/pages/voip/calling_page.dart | 810 ++++++++++++++++++ .../group_call_onboarding_view.dart | 368 ++++++++ .../voip/group_call_view/group_call_view.dart | 373 ++++++++ .../widgets/grid_definitions.dart | 131 +++ .../widgets/lk_participant_stats.dart | 137 +++ .../widgets/no_tracks_published_tile.dart | 67 ++ lib/pages/voip/p2p_call_view/p2p_view.dart | 244 ++++++ lib/pages/voip/widgets/call_banner.dart | 78 ++ lib/pages/voip/widgets/call_buttons.dart | 70 ++ lib/pages/voip/widgets/call_overlay.dart | 377 ++++++++ lib/pages/voip/widgets/call_timer.dart | 45 + .../voip/widgets/more_options_listtile.dart | 44 + lib/pages/voip/widgets/stream_view.dart | 169 ++++ lib/utils/app_state.dart | 74 ++ lib/utils/format_time_helper.dart | 35 + .../localization_for_locale_extension.dart | 32 + lib/utils/push_helper.dart | 7 - lib/utils/voip/call_session_state.dart | 306 +++++++ lib/utils/voip/call_state_proxy.dart | 53 ++ lib/utils/voip/callkeep_manager.dart | 367 -------- lib/utils/voip/famedly_key_provider_impl.dart | 65 ++ lib/utils/voip/group_call_session_state.dart | 191 +++++ lib/utils/voip/incoming_call.dart | 210 +++++ .../livekit_group_call_session_state.dart | 612 +++++++++++++ lib/utils/voip/livekit_stream.dart | 58 ++ lib/utils/voip/user_media_manager.dart | 42 - lib/utils/voip/voip_plugin.dart | 461 ++++++++++ lib/utils/voip_plugin.dart | 200 ----- lib/widgets/fluffy_chat_app.dart | 35 +- lib/widgets/matrix.dart | 23 +- macos/Flutter/GeneratedPluginRegistrant.swift | 4 + pubspec.lock | 121 ++- pubspec.yaml | 22 +- scripts/prepare-web.sh | 9 + .../flutter/generated_plugin_registrant.cc | 6 + windows/flutter/generated_plugins.cmake | 2 + 53 files changed, 5402 insertions(+), 1761 deletions(-) create mode 100644 android/app/src/main/res/drawable-xxxhdpi/ic_logo.png delete mode 100644 assets/js/package/.gitkeep delete mode 100644 lib/pages/dialer/dialer.dart delete mode 100644 lib/pages/dialer/pip/dismiss_keyboard.dart delete mode 100644 lib/pages/dialer/pip/pip_view.dart create mode 100644 lib/pages/global_banner_scaffold.dart create mode 100644 lib/pages/voip/calling_page.dart create mode 100644 lib/pages/voip/group_call_onboarding/group_call_onboarding_view.dart create mode 100644 lib/pages/voip/group_call_view/group_call_view.dart create mode 100644 lib/pages/voip/group_call_view/widgets/grid_definitions.dart create mode 100644 lib/pages/voip/group_call_view/widgets/lk_participant_stats.dart create mode 100644 lib/pages/voip/group_call_view/widgets/no_tracks_published_tile.dart create mode 100644 lib/pages/voip/p2p_call_view/p2p_view.dart create mode 100644 lib/pages/voip/widgets/call_banner.dart create mode 100644 lib/pages/voip/widgets/call_buttons.dart create mode 100644 lib/pages/voip/widgets/call_overlay.dart create mode 100644 lib/pages/voip/widgets/call_timer.dart create mode 100644 lib/pages/voip/widgets/more_options_listtile.dart create mode 100644 lib/pages/voip/widgets/stream_view.dart create mode 100644 lib/utils/app_state.dart create mode 100644 lib/utils/format_time_helper.dart create mode 100644 lib/utils/localization_for_locale_extension.dart create mode 100644 lib/utils/voip/call_session_state.dart create mode 100644 lib/utils/voip/call_state_proxy.dart delete mode 100644 lib/utils/voip/callkeep_manager.dart create mode 100644 lib/utils/voip/famedly_key_provider_impl.dart create mode 100644 lib/utils/voip/group_call_session_state.dart create mode 100644 lib/utils/voip/incoming_call.dart create mode 100644 lib/utils/voip/livekit_group_call_session_state.dart create mode 100644 lib/utils/voip/livekit_stream.dart delete mode 100644 lib/utils/voip/user_media_manager.dart create mode 100644 lib/utils/voip/voip_plugin.dart delete mode 100644 lib/utils/voip_plugin.dart diff --git a/.gitignore b/.gitignore index 0ce56e79e3..f48b787a57 100644 --- a/.gitignore +++ b/.gitignore @@ -60,3 +60,5 @@ ios/Runner.ipa /macos/out .vs olm + +web/*.dart.js* diff --git a/android/app/proguard-rules.pro b/android/app/proguard-rules.pro index d0e0fbc9b9..0aeeedced3 100644 --- a/android/app/proguard-rules.pro +++ b/android/app/proguard-rules.pro @@ -1 +1,5 @@ --keep class net.sqlcipher.** { *; } \ No newline at end of file +-keep class net.sqlcipher.** { *; } + +-keep class com.cloudwebrtc.webrtc.** { *; } +-keep class org.webrtc.** { *; } +-keep class com.hiennv.flutter_callkit_incoming.** { *; } \ No newline at end of file diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index c0595780ae..6af50e4255 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -13,23 +13,24 @@ + + + + - + + + + + + - - - - - - - - - + > + - - - - - - diff --git a/android/app/src/main/res/drawable-xxxhdpi/ic_logo.png b/android/app/src/main/res/drawable-xxxhdpi/ic_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..fcd0f6e4a93f4b7e59a94e22aef5d57f4c526da8 GIT binary patch literal 2603 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 defaultPageBuilder( + context, + Provider.of(context).proxy == null + ? const Center(child: CircularProgressIndicator()) + : Calling( + voipPlugin: Matrix.of(context).voipPlugin, + proxy: Provider.of(context).proxy!, + remoteUserInCall: + Provider.of(context).remoteUserInCall, + ), + ), + ), + GoRoute( + path: 'group_call_onboarding', + pageBuilder: (context, state) => defaultPageBuilder( + context, + GroupCallOnboardingView( + roomId: state.pathParameters['roomid']!, + ), + ), + ), GoRoute( path: 'encryption', pageBuilder: (context, state) => defaultPageBuilder( diff --git a/lib/main.dart b/lib/main.dart index 877f80da34..e9ac417482 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -8,6 +8,7 @@ import 'package:shared_preferences/shared_preferences.dart'; import 'package:fluffychat/config/app_config.dart'; import 'package:fluffychat/utils/client_manager.dart'; import 'package:fluffychat/utils/platform_infos.dart'; +import 'package:fluffychat/utils/voip/voip_plugin.dart'; import 'package:fluffychat/widgets/error_widget.dart'; import 'config/setting_keys.dart'; import 'utils/background_push.dart'; @@ -24,6 +25,7 @@ void main() async { Logs().nativeColors = !PlatformInfos.isIOS; final store = await SharedPreferences.getInstance(); final clients = await ClientManager.getClients(store: store); + final voipPlugins = clients.map((e) => VoipPlugin.clientOnly(e)).toList(); // If the app starts in detached mode, we assume that it is in // background fetch mode for processing push notifications. This is @@ -34,12 +36,12 @@ void main() async { for (final client in clients) { client.syncPresence = PresenceType.offline; } - // In the background fetch mode we do not want to waste ressources with // starting the Flutter engine but process incoming push notifications. BackgroundPush.clientOnly(clients.first); // To start the flutter engine afterwards we add an custom observer. - WidgetsBinding.instance.addObserver(AppStarter(clients, store)); + WidgetsBinding.instance + .addObserver(AppStarter(clients, voipPlugins, store)); Logs().i( '${AppConfig.applicationName} started in background-fetch mode. No GUI will be created unless the app is no longer detached.', ); @@ -50,11 +52,15 @@ void main() async { Logs().i( '${AppConfig.applicationName} started in foreground mode. Rendering GUI...', ); - await startGui(clients, store); + await startGui(clients, voipPlugins, store); } /// Fetch the pincode for the applock and start the flutter engine. -Future startGui(List clients, SharedPreferences store) async { +Future startGui( + List clients, + List voipPlugins, + SharedPreferences store, +) async { // Fetch the pin for the applock if existing for mobile applications. String? pin; if (PlatformInfos.isMobile) { @@ -72,17 +78,25 @@ Future startGui(List clients, SharedPreferences store) async { await firstClient?.accountDataLoading; ErrorWidget.builder = (details) => FluffyChatErrorWidget(details); - runApp(FluffyChatApp(clients: clients, pincode: pin, store: store)); + runApp( + FluffyChatApp( + clients: clients, + voipPlugins: voipPlugins, + pincode: pin, + store: store, + ), + ); } /// Watches the lifecycle changes to start the application when it /// is no longer detached. class AppStarter with WidgetsBindingObserver { final List clients; + List voipPlugins; final SharedPreferences store; bool guiStarted = false; - AppStarter(this.clients, this.store); + AppStarter(this.clients, this.voipPlugins, this.store); @override void didChangeAppLifecycleState(AppLifecycleState state) { @@ -96,7 +110,7 @@ class AppStarter with WidgetsBindingObserver { for (final client in clients) { client.syncPresence = PresenceType.online; } - startGui(clients, store); + startGui(clients, voipPlugins, store); // We must make sure that the GUI is only started once. guiStarted = true; } diff --git a/lib/pages/chat/chat.dart b/lib/pages/chat/chat.dart index 6e4006300e..a5f0436ccf 100644 --- a/lib/pages/chat/chat.dart +++ b/lib/pages/chat/chat.dart @@ -30,6 +30,7 @@ import 'package:fluffychat/utils/error_reporter.dart'; import 'package:fluffychat/utils/matrix_sdk_extensions/event_extension.dart'; import 'package:fluffychat/utils/matrix_sdk_extensions/matrix_locals.dart'; import 'package:fluffychat/utils/platform_infos.dart'; +import 'package:fluffychat/utils/voip/voip_plugin.dart'; import 'package:fluffychat/widgets/app_lock.dart'; import 'package:fluffychat/widgets/matrix.dart'; import '../../utils/account_bundles.dart'; @@ -1245,7 +1246,7 @@ class ChatController extends State // VoIP required Android SDK 21 if (PlatformInfos.isAndroid) { DeviceInfoPlugin().androidInfo.then((value) { - if (value.version.sdkInt < 21) { + if (value.version.sdkInt < 23) { Navigator.pop(context); showOkAlertDialog( context: context, @@ -1256,45 +1257,41 @@ class ChatController extends State } }); } - final callType = await showModalActionSheet( + final callType = await showModalActionSheet( context: context, title: L10n.of(context)!.warning, message: L10n.of(context)!.videoCallsBetaWarning, cancelLabel: L10n.of(context)!.cancel, actions: [ - SheetAction( - label: L10n.of(context)!.voiceCall, - icon: Icons.phone_outlined, - key: CallType.kVoice, - ), - SheetAction( - label: L10n.of(context)!.videoCall, - icon: Icons.video_call_outlined, - key: CallType.kVideo, - ), + if (room.isDirectChat) + SheetAction( + label: L10n.of(context)!.voiceCall, + icon: Icons.phone_outlined, + key: VoipType.kVoice, + ), + if (room.isDirectChat) + SheetAction( + label: L10n.of(context)!.videoCall, + icon: Icons.video_call_outlined, + key: VoipType.kVideo, + ), + if (!room.isDirectChat) + SheetAction( + label: L10n.of(context)!.groupCall, + icon: Icons.people, + key: VoipType.kGroup, + ), ], ); if (callType == null) return; - final success = await showFutureLoadingDialog( - context: context, - future: () => - Matrix.of(context).voipPlugin!.voip.requestTurnServerCredentials(), - ); - if (success.result != null) { - final voipPlugin = Matrix.of(context).voipPlugin; - try { - await voipPlugin!.voip.inviteToCall(room.id, callType); - } catch (e) { - ScaffoldMessenger.of(context).showSnackBar( - SnackBar(content: Text(e.toLocalizedString(context))), - ); - } - } else { - await showOkAlertDialog( - context: context, - title: L10n.of(context)!.unavailable, - okLabel: L10n.of(context)!.next, + final voipPlugin = Matrix.of(context).voipPlugin; + try { + voipPlugin.onPhoneButtonTap(context, room, callType); + } catch (e, s) { + Logs().e('[VOIP] onPhoneButtonTap fialed', e, s); + ScaffoldMessenger.of(context).showSnackBar( + SnackBar(content: Text(e.toLocalizedString(context))), ); } } diff --git a/lib/pages/chat/chat_view.dart b/lib/pages/chat/chat_view.dart index 9b8894a934..05881dd2bc 100644 --- a/lib/pages/chat/chat_view.dart +++ b/lib/pages/chat/chat_view.dart @@ -18,7 +18,6 @@ import 'package:fluffychat/pages/chat/reply_display.dart'; import 'package:fluffychat/pages/chat/tombstone_display.dart'; import 'package:fluffychat/widgets/chat_settings_popup_menu.dart'; import 'package:fluffychat/widgets/connection_status_header.dart'; -import 'package:fluffychat/widgets/matrix.dart'; import 'package:fluffychat/widgets/unread_rooms_badge.dart'; import '../../utils/stream_extension.dart'; import 'chat_emoji_picker.dart'; @@ -111,13 +110,11 @@ class ChatView extends StatelessWidget { ]; } else if (!controller.room.isArchived) { return [ - if (Matrix.of(context).voipPlugin != null && - controller.room.isDirectChat) - IconButton( - onPressed: controller.onPhoneButtonTap, - icon: const Icon(Icons.call_outlined), - tooltip: L10n.of(context)!.placeCall, - ), + IconButton( + onPressed: controller.onPhoneButtonTap, + icon: const Icon(Icons.call_outlined), + tooltip: L10n.of(context)!.placeCall, + ), EncryptionButton(controller.room), ChatSettingsPopupMenu(controller.room, true), ]; diff --git a/lib/pages/chat_list/chat_list.dart b/lib/pages/chat_list/chat_list.dart index db0708ffba..b3869df7c3 100644 --- a/lib/pages/chat_list/chat_list.dart +++ b/lib/pages/chat_list/chat_list.dart @@ -23,7 +23,6 @@ import 'package:fluffychat/utils/platform_infos.dart'; import '../../../utils/account_bundles.dart'; import '../../utils/matrix_sdk_extensions/matrix_file_extension.dart'; import '../../utils/url_launcher.dart'; -import '../../utils/voip/callkeep_manager.dart'; import '../../widgets/fluffy_chat_app.dart'; import '../../widgets/matrix.dart'; import '../bootstrap/bootstrap_dialog.dart'; @@ -406,8 +405,6 @@ class ChatListController extends State scrollController.addListener(_onScroll); _waitForFirstSync(); - _hackyWebRTCFixForWeb(); - CallKeepManager().initialize(); WidgetsBinding.instance.addPostFrameCallback((_) async { if (mounted) { searchServer = @@ -740,10 +737,6 @@ class ChatListController extends State @override Widget build(BuildContext context) => ChatListView(this); - void _hackyWebRTCFixForWeb() { - ChatList.contextForVoip = context; - } - Future _checkTorBrowser() async { if (!kIsWeb) return; final isTor = await TorBrowserDetector.isTorBrowser; diff --git a/lib/pages/dialer/dialer.dart b/lib/pages/dialer/dialer.dart deleted file mode 100644 index a8e5a92020..0000000000 --- a/lib/pages/dialer/dialer.dart +++ /dev/null @@ -1,651 +0,0 @@ -/* - * Famedly - * Copyright (C) 2019, 2020, 2021 Famedly GmbH - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -import 'dart:async'; -import 'dart:math'; - -import 'package:flutter/foundation.dart'; -import 'package:flutter/material.dart'; - -import 'package:flutter_foreground_task/flutter_foreground_task.dart'; -import 'package:flutter_gen/gen_l10n/l10n.dart'; -import 'package:flutter_webrtc/flutter_webrtc.dart'; -import 'package:just_audio/just_audio.dart'; -import 'package:matrix/matrix.dart'; -import 'package:vibration/vibration.dart'; -import 'package:wakelock_plus/wakelock_plus.dart'; - -import 'package:fluffychat/utils/matrix_sdk_extensions/matrix_locals.dart'; -import 'package:fluffychat/utils/platform_infos.dart'; -import 'package:fluffychat/widgets/avatar.dart'; -import 'pip/pip_view.dart'; - -class _StreamView extends StatelessWidget { - const _StreamView( - this.wrappedStream, { - this.mainView = false, - required this.matrixClient, - }); - - final WrappedMediaStream wrappedStream; - final Client matrixClient; - - final bool mainView; - - Uri? get avatarUrl => wrappedStream.getUser().avatarUrl; - - String? get displayName => wrappedStream.displayName; - - String get avatarName => wrappedStream.avatarName; - - bool get isLocal => wrappedStream.isLocal(); - - bool get mirrored => - wrappedStream.isLocal() && - wrappedStream.purpose == SDPStreamMetadataPurpose.Usermedia; - - bool get audioMuted => wrappedStream.audioMuted; - - bool get videoMuted => wrappedStream.videoMuted; - - bool get isScreenSharing => - wrappedStream.purpose == SDPStreamMetadataPurpose.Screenshare; - - @override - Widget build(BuildContext context) { - return Container( - decoration: const BoxDecoration( - color: Colors.black54, - ), - child: Stack( - alignment: Alignment.center, - children: [ - if (videoMuted) - Container( - color: Colors.transparent, - ), - if (!videoMuted) - RTCVideoView( - // yes, it must explicitly be casted even though I do not feel - // comfortable with it... - wrappedStream.renderer as RTCVideoRenderer, - mirror: mirrored, - objectFit: RTCVideoViewObjectFit.RTCVideoViewObjectFitContain, - ), - if (videoMuted) - Positioned( - child: Avatar( - mxContent: avatarUrl, - name: displayName, - size: mainView ? 96 : 48, - client: matrixClient, - // textSize: mainView ? 36 : 24, - // matrixClient: matrixClient, - ), - ), - if (!isScreenSharing) - Positioned( - left: 4.0, - bottom: 4.0, - child: Icon( - audioMuted ? Icons.mic_off : Icons.mic, - color: Colors.white, - size: 18.0, - ), - ), - ], - ), - ); - } -} - -class Calling extends StatefulWidget { - final VoidCallback? onClear; - final BuildContext context; - final String callId; - final CallSession call; - final Client client; - - const Calling({ - required this.context, - required this.call, - required this.client, - required this.callId, - this.onClear, - super.key, - }); - - @override - MyCallingPage createState() => MyCallingPage(); -} - -class MyCallingPage extends State { - Room? get room => call.room; - - String get displayName => call.room.getLocalizedDisplayname( - MatrixLocals(L10n.of(widget.context)!), - ); - - String get callId => widget.callId; - - CallSession get call => widget.call; - - MediaStream? get localStream { - if (call.localUserMediaStream != null) { - return call.localUserMediaStream!.stream!; - } - return null; - } - - MediaStream? get remoteStream { - if (call.getRemoteStreams.isNotEmpty) { - return call.getRemoteStreams[0].stream!; - } - return null; - } - - bool get speakerOn => call.speakerOn; - - bool get isMicrophoneMuted => call.isMicrophoneMuted; - - bool get isLocalVideoMuted => call.isLocalVideoMuted; - - bool get isScreensharingEnabled => call.screensharingEnabled; - - bool get isRemoteOnHold => call.remoteOnHold; - - bool get voiceonly => call.type == CallType.kVoice; - - bool get connecting => call.state == CallState.kConnecting; - - bool get connected => call.state == CallState.kConnected; - - bool get mirrored => call.facingMode == 'user'; - - List get streams => call.streams; - double? _localVideoHeight; - double? _localVideoWidth; - EdgeInsetsGeometry? _localVideoMargin; - CallState? _state; - - void _playCallSound() async { - const path = 'assets/sounds/call.ogg'; - if (kIsWeb || PlatformInfos.isMobile || PlatformInfos.isMacOS) { - final player = AudioPlayer(); - await player.setAsset(path); - player.play(); - } else { - Logs().w('Playing sound not implemented for this platform!'); - } - } - - @override - void initState() { - super.initState(); - initialize(); - _playCallSound(); - } - - void initialize() async { - final call = this.call; - call.onCallStateChanged.stream.listen(_handleCallState); - call.onCallEventChanged.stream.listen((event) { - if (event == CallEvent.kFeedsChanged) { - setState(() { - call.tryRemoveStopedStreams(); - }); - } else if (event == CallEvent.kLocalHoldUnhold || - event == CallEvent.kRemoteHoldUnhold) { - setState(() {}); - Logs().i( - 'Call hold event: local ${call.localHold}, remote ${call.remoteOnHold}', - ); - } - }); - _state = call.state; - - if (call.type == CallType.kVideo) { - try { - // Enable wakelock (keep screen on) - unawaited(WakelockPlus.enable()); - } catch (_) {} - } - } - - void cleanUp() { - Timer( - const Duration(seconds: 2), - () => widget.onClear?.call(), - ); - if (call.type == CallType.kVideo) { - try { - unawaited(WakelockPlus.disable()); - } catch (_) {} - } - } - - @override - void dispose() { - super.dispose(); - call.cleanUp.call(); - } - - void _resizeLocalVideo(Orientation orientation) { - final shortSide = min( - MediaQuery.of(widget.context).size.width, - MediaQuery.of(widget.context).size.height, - ); - _localVideoMargin = remoteStream != null - ? const EdgeInsets.only(top: 20.0, right: 20.0) - : EdgeInsets.zero; - _localVideoWidth = remoteStream != null - ? shortSide / 3 - : MediaQuery.of(widget.context).size.width; - _localVideoHeight = remoteStream != null - ? shortSide / 4 - : MediaQuery.of(widget.context).size.height; - } - - void _handleCallState(CallState state) { - Logs().v('CallingPage::handleCallState: ${state.toString()}'); - if ({CallState.kConnected, CallState.kEnded}.contains(state)) { - try { - Vibration.vibrate(duration: 200); - } catch (e) { - Logs().e('[Dialer] could not vibrate for call updates'); - } - } - - if (mounted) { - setState(() { - _state = state; - if (_state == CallState.kEnded) cleanUp(); - }); - } - } - - void _answerCall() { - setState(() { - call.answer(); - }); - } - - void _hangUp() { - setState(() { - if (call.isRinging) { - call.reject(); - } else { - call.hangup(); - } - }); - } - - void _muteMic() { - setState(() { - call.setMicrophoneMuted(!call.isMicrophoneMuted); - }); - } - - void _screenSharing() async { - if (PlatformInfos.isAndroid) { - if (!call.screensharingEnabled) { - FlutterForegroundTask.init( - androidNotificationOptions: AndroidNotificationOptions( - channelId: 'notification_channel_id', - channelName: 'Foreground Notification', - channelDescription: - L10n.of(widget.context)!.foregroundServiceRunning, - ), - iosNotificationOptions: const IOSNotificationOptions(), - foregroundTaskOptions: const ForegroundTaskOptions(), - ); - FlutterForegroundTask.startService( - notificationTitle: L10n.of(widget.context)!.screenSharingTitle, - notificationText: L10n.of(widget.context)!.screenSharingDetail, - ); - } else { - FlutterForegroundTask.stopService(); - } - } - - setState(() { - call.setScreensharingEnabled(!call.screensharingEnabled); - }); - } - - void _remoteOnHold() { - setState(() { - call.setRemoteOnHold(!call.remoteOnHold); - }); - } - - void _muteCamera() { - setState(() { - call.setLocalVideoMuted(!call.isLocalVideoMuted); - }); - } - - void _switchCamera() async { - if (call.localUserMediaStream != null) { - await Helper.switchCamera( - call.localUserMediaStream!.stream!.getVideoTracks()[0], - ); - if (PlatformInfos.isMobile) { - call.facingMode == 'user' - ? call.facingMode = 'environment' - : call.facingMode = 'user'; - } - } - setState(() {}); - } - - /* - void _switchSpeaker() { - setState(() { - session.setSpeakerOn(); - }); - } - */ - - List _buildActionButtons(bool isFloating) { - if (isFloating) { - return []; - } - - final switchCameraButton = FloatingActionButton( - heroTag: 'switchCamera', - onPressed: _switchCamera, - backgroundColor: Colors.black45, - child: const Icon(Icons.switch_camera), - ); - /* - var switchSpeakerButton = FloatingActionButton( - heroTag: 'switchSpeaker', - child: Icon(_speakerOn ? Icons.volume_up : Icons.volume_off), - onPressed: _switchSpeaker, - foregroundColor: Colors.black54, - backgroundColor: Theme.of(widget.context).backgroundColor, - ); - */ - final hangupButton = FloatingActionButton( - heroTag: 'hangup', - onPressed: _hangUp, - tooltip: 'Hangup', - backgroundColor: _state == CallState.kEnded ? Colors.black45 : Colors.red, - child: const Icon(Icons.call_end), - ); - - final answerButton = FloatingActionButton( - heroTag: 'answer', - onPressed: _answerCall, - tooltip: 'Answer', - backgroundColor: Colors.green, - child: const Icon(Icons.phone), - ); - - final muteMicButton = FloatingActionButton( - heroTag: 'muteMic', - onPressed: _muteMic, - foregroundColor: isMicrophoneMuted ? Colors.black26 : Colors.white, - backgroundColor: isMicrophoneMuted ? Colors.white : Colors.black45, - child: Icon(isMicrophoneMuted ? Icons.mic_off : Icons.mic), - ); - - final screenSharingButton = FloatingActionButton( - heroTag: 'screenSharing', - onPressed: _screenSharing, - foregroundColor: isScreensharingEnabled ? Colors.black26 : Colors.white, - backgroundColor: isScreensharingEnabled ? Colors.white : Colors.black45, - child: const Icon(Icons.desktop_mac), - ); - - final holdButton = FloatingActionButton( - heroTag: 'hold', - onPressed: _remoteOnHold, - foregroundColor: isRemoteOnHold ? Colors.black26 : Colors.white, - backgroundColor: isRemoteOnHold ? Colors.white : Colors.black45, - child: const Icon(Icons.pause), - ); - - final muteCameraButton = FloatingActionButton( - heroTag: 'muteCam', - onPressed: _muteCamera, - foregroundColor: isLocalVideoMuted ? Colors.black26 : Colors.white, - backgroundColor: isLocalVideoMuted ? Colors.white : Colors.black45, - child: Icon(isLocalVideoMuted ? Icons.videocam_off : Icons.videocam), - ); - - switch (_state) { - case CallState.kRinging: - case CallState.kInviteSent: - case CallState.kCreateAnswer: - case CallState.kConnecting: - return call.isOutgoing - ? [hangupButton] - : [answerButton, hangupButton]; - case CallState.kConnected: - return [ - muteMicButton, - //switchSpeakerButton, - if (!voiceonly && !kIsWeb) switchCameraButton, - if (!voiceonly) muteCameraButton, - if (PlatformInfos.isMobile || PlatformInfos.isWeb) - screenSharingButton, - holdButton, - hangupButton, - ]; - case CallState.kEnded: - return [ - hangupButton, - ]; - case CallState.kFledgling: - // TODO: Handle this case. - break; - case CallState.kWaitLocalMedia: - // TODO: Handle this case. - break; - case CallState.kCreateOffer: - // TODO: Handle this case. - break; - case null: - // TODO: Handle this case. - break; - } - return []; - } - - List _buildContent(Orientation orientation, bool isFloating) { - final stackWidgets = []; - - final call = this.call; - if (call.callHasEnded) { - return stackWidgets; - } - - if (call.localHold || call.remoteOnHold) { - var title = ''; - if (call.localHold) { - title = '${call.room.getLocalizedDisplayname( - MatrixLocals(L10n.of(widget.context)!), - )} held the call.'; - } else if (call.remoteOnHold) { - title = 'You held the call.'; - } - stackWidgets.add( - Center( - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - const Icon( - Icons.pause, - size: 48.0, - color: Colors.white, - ), - Text( - title, - style: const TextStyle( - color: Colors.white, - fontSize: 24.0, - ), - ), - ], - ), - ), - ); - return stackWidgets; - } - - var primaryStream = call.remoteScreenSharingStream ?? - call.localScreenSharingStream ?? - call.remoteUserMediaStream ?? - call.localUserMediaStream; - - if (!connected) { - primaryStream = call.localUserMediaStream; - } - - if (primaryStream != null) { - stackWidgets.add( - Center( - child: _StreamView( - primaryStream, - mainView: true, - matrixClient: widget.client, - ), - ), - ); - } - - if (isFloating || !connected) { - return stackWidgets; - } - - _resizeLocalVideo(orientation); - - if (call.getRemoteStreams.isEmpty) { - return stackWidgets; - } - - final secondaryStreamViews = []; - - if (call.remoteScreenSharingStream != null) { - final remoteUserMediaStream = call.remoteUserMediaStream; - secondaryStreamViews.add( - SizedBox( - width: _localVideoWidth, - height: _localVideoHeight, - child: - _StreamView(remoteUserMediaStream!, matrixClient: widget.client), - ), - ); - secondaryStreamViews.add(const SizedBox(height: 10)); - } - - final localStream = - call.localUserMediaStream ?? call.localScreenSharingStream; - if (localStream != null && !isFloating) { - secondaryStreamViews.add( - SizedBox( - width: _localVideoWidth, - height: _localVideoHeight, - child: _StreamView(localStream, matrixClient: widget.client), - ), - ); - secondaryStreamViews.add(const SizedBox(height: 10)); - } - - if (call.localScreenSharingStream != null && !isFloating) { - secondaryStreamViews.add( - SizedBox( - width: _localVideoWidth, - height: _localVideoHeight, - child: _StreamView( - call.remoteUserMediaStream!, - matrixClient: widget.client, - ), - ), - ); - secondaryStreamViews.add(const SizedBox(height: 10)); - } - - if (secondaryStreamViews.isNotEmpty) { - stackWidgets.add( - Container( - padding: const EdgeInsets.fromLTRB(0, 20, 0, 120), - alignment: Alignment.bottomRight, - child: Container( - width: _localVideoWidth, - margin: _localVideoMargin, - child: Column( - children: secondaryStreamViews, - ), - ), - ), - ); - } - - return stackWidgets; - } - - @override - Widget build(BuildContext context) { - return PIPView( - builder: (context, isFloating) { - return Scaffold( - resizeToAvoidBottomInset: !isFloating, - floatingActionButtonLocation: - FloatingActionButtonLocation.centerFloat, - floatingActionButton: SizedBox( - width: 320.0, - height: 150.0, - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceAround, - children: _buildActionButtons(isFloating), - ), - ), - body: OrientationBuilder( - builder: (BuildContext context, Orientation orientation) { - return Container( - decoration: const BoxDecoration( - color: Colors.black87, - ), - child: Stack( - children: [ - ..._buildContent(orientation, isFloating), - if (!isFloating) - Positioned( - top: 24.0, - left: 24.0, - child: IconButton( - color: Colors.black45, - icon: const Icon(Icons.arrow_back), - onPressed: () { - PIPView.of(context)?.setFloating(true); - }, - ), - ), - ], - ), - ); - }, - ), - ); - }, - ); - } -} diff --git a/lib/pages/dialer/pip/dismiss_keyboard.dart b/lib/pages/dialer/pip/dismiss_keyboard.dart deleted file mode 100644 index c9ca3180fb..0000000000 --- a/lib/pages/dialer/pip/dismiss_keyboard.dart +++ /dev/null @@ -1,5 +0,0 @@ -import 'package:flutter/material.dart'; - -void dismissKeyboard(BuildContext context) { - FocusScope.of(context).requestFocus(FocusNode()); -} diff --git a/lib/pages/dialer/pip/pip_view.dart b/lib/pages/dialer/pip/pip_view.dart deleted file mode 100644 index 5396c9136e..0000000000 --- a/lib/pages/dialer/pip/pip_view.dart +++ /dev/null @@ -1,345 +0,0 @@ -import 'package:flutter/material.dart'; - -import 'package:fluffychat/config/themes.dart'; -import 'dismiss_keyboard.dart'; - -class PIPView extends StatefulWidget { - final PIPViewCorner initialCorner; - final double? floatingWidth; - final double? floatingHeight; - final bool avoidKeyboard; - - final Widget Function( - BuildContext context, - bool isFloating, - ) builder; - - const PIPView({ - super.key, - required this.builder, - this.initialCorner = PIPViewCorner.topRight, - this.floatingWidth, - this.floatingHeight, - this.avoidKeyboard = true, - }); - - @override - PIPViewState createState() => PIPViewState(); - - static PIPViewState? of(BuildContext context) { - return context.findAncestorStateOfType(); - } -} - -class PIPViewState extends State with TickerProviderStateMixin { - late AnimationController _toggleFloatingAnimationController; - late AnimationController _dragAnimationController; - late PIPViewCorner _corner; - Offset _dragOffset = Offset.zero; - bool _isDragging = false; - bool _floating = false; - Map _offsets = {}; - - @override - void initState() { - super.initState(); - _corner = widget.initialCorner; - _toggleFloatingAnimationController = AnimationController( - duration: FluffyThemes.animationDuration, - vsync: this, - ); - _dragAnimationController = AnimationController( - duration: FluffyThemes.animationDuration, - vsync: this, - ); - } - - void _updateCornersOffsets({ - required Size spaceSize, - required Size widgetSize, - required EdgeInsets windowPadding, - }) { - _offsets = _calculateOffsets( - spaceSize: spaceSize, - widgetSize: widgetSize, - windowPadding: windowPadding, - ); - } - - bool _isAnimating() { - return _toggleFloatingAnimationController.isAnimating || - _dragAnimationController.isAnimating; - } - - void setFloating(bool floating) { - if (_isAnimating()) return; - dismissKeyboard(context); - setState(() { - _floating = floating; - }); - _toggleFloatingAnimationController.forward(); - } - - void stopFloating() { - if (_isAnimating()) return; - dismissKeyboard(context); - _toggleFloatingAnimationController.reverse().whenCompleteOrCancel(() { - if (mounted) { - setState(() { - _floating = false; - }); - } - }); - } - - void _onPanUpdate(DragUpdateDetails details) { - if (!_isDragging) return; - setState(() { - _dragOffset = _dragOffset.translate( - details.delta.dx, - details.delta.dy, - ); - }); - } - - void _onPanCancel() { - if (!_isDragging) return; - setState(() { - _dragAnimationController.value = 0; - _dragOffset = Offset.zero; - _isDragging = false; - }); - } - - void _onPanEnd(_) { - if (!_isDragging) return; - - final nearestCorner = _calculateNearestCorner( - offset: _dragOffset, - offsets: _offsets, - ); - setState(() { - _corner = nearestCorner; - _isDragging = false; - }); - _dragAnimationController.forward().whenCompleteOrCancel(() { - _dragAnimationController.value = 0; - _dragOffset = Offset.zero; - }); - } - - void _onPanStart(_) { - if (_isAnimating()) return; - setState(() { - _dragOffset = _offsets[_corner]!; - _isDragging = true; - }); - } - - @override - Widget build(BuildContext context) { - final mediaQuery = MediaQuery.of(context); - var windowPadding = mediaQuery.padding; - if (widget.avoidKeyboard) { - windowPadding += mediaQuery.viewInsets; - } - final isFloating = _floating; - - return LayoutBuilder( - builder: (context, constraints) { - final width = constraints.maxWidth; - final height = constraints.maxHeight; - var floatingWidth = widget.floatingWidth; - var floatingHeight = widget.floatingHeight; - if (floatingWidth == null && floatingHeight != null) { - floatingWidth = width / height * floatingHeight; - } - floatingWidth ??= 100.0; - floatingHeight ??= height / width * floatingWidth; - - final floatingWidgetSize = Size(floatingWidth, floatingHeight); - final fullWidgetSize = Size(width, height); - - _updateCornersOffsets( - spaceSize: fullWidgetSize, - widgetSize: floatingWidgetSize, - windowPadding: windowPadding, - ); - - final calculatedOffset = _offsets[_corner]; - - // BoxFit.cover - final widthRatio = floatingWidth / width; - final heightRatio = floatingHeight / height; - final scaledDownScale = widthRatio > heightRatio - ? floatingWidgetSize.width / fullWidgetSize.width - : floatingWidgetSize.height / fullWidgetSize.height; - - return Stack( - children: [ - AnimatedBuilder( - animation: Listenable.merge([ - _toggleFloatingAnimationController, - _dragAnimationController, - ]), - builder: (context, child) { - final animationCurve = CurveTween( - curve: Curves.easeInOutQuad, - ); - final dragAnimationValue = animationCurve.transform( - _dragAnimationController.value, - ); - final toggleFloatingAnimationValue = animationCurve.transform( - _toggleFloatingAnimationController.value, - ); - - final floatingOffset = _isDragging - ? _dragOffset - : Tween( - begin: _dragOffset, - end: calculatedOffset, - ).transform( - _dragAnimationController.isAnimating - ? dragAnimationValue - : toggleFloatingAnimationValue, - ); - final borderRadius = Tween( - begin: 0, - end: 10, - ).transform(toggleFloatingAnimationValue); - final width = Tween( - begin: fullWidgetSize.width, - end: floatingWidgetSize.width, - ).transform(toggleFloatingAnimationValue); - final height = Tween( - begin: fullWidgetSize.height, - end: floatingWidgetSize.height, - ).transform(toggleFloatingAnimationValue); - final scale = Tween( - begin: 1, - end: scaledDownScale, - ).transform(toggleFloatingAnimationValue); - return Positioned( - left: floatingOffset.dx, - top: floatingOffset.dy, - child: GestureDetector( - onPanStart: isFloating ? _onPanStart : null, - onPanUpdate: isFloating ? _onPanUpdate : null, - onPanCancel: isFloating ? _onPanCancel : null, - onPanEnd: isFloating ? _onPanEnd : null, - onTap: isFloating ? stopFloating : null, - child: Material( - elevation: 10, - borderRadius: BorderRadius.circular(borderRadius), - child: Container( - clipBehavior: Clip.antiAlias, - decoration: BoxDecoration( - color: Colors.transparent, - borderRadius: BorderRadius.circular(borderRadius), - ), - width: width, - height: height, - child: Transform.scale( - scale: scale, - child: OverflowBox( - maxHeight: fullWidgetSize.height, - maxWidth: fullWidgetSize.width, - child: IgnorePointer( - ignoring: isFloating, - child: child, - ), - ), - ), - ), - ), - ), - ); - }, - child: Builder( - builder: (context) => widget.builder(context, isFloating), - ), - ), - ], - ); - }, - ); - } -} - -enum PIPViewCorner { - topLeft, - topRight, - bottomLeft, - bottomRight, -} - -class _CornerDistance { - final PIPViewCorner corner; - final double distance; - - _CornerDistance({ - required this.corner, - required this.distance, - }); -} - -PIPViewCorner _calculateNearestCorner({ - required Offset offset, - required Map offsets, -}) { - _CornerDistance calculateDistance(PIPViewCorner corner) { - final distance = offsets[corner]! - .translate( - -offset.dx, - -offset.dy, - ) - .distanceSquared; - return _CornerDistance( - corner: corner, - distance: distance, - ); - } - - final distances = PIPViewCorner.values.map(calculateDistance).toList(); - - distances.sort((cd0, cd1) => cd0.distance.compareTo(cd1.distance)); - - return distances.first.corner; -} - -Map _calculateOffsets({ - required Size spaceSize, - required Size widgetSize, - required EdgeInsets windowPadding, -}) { - Offset getOffsetForCorner(PIPViewCorner corner) { - const spacing = 16; - final left = spacing + windowPadding.left; - final top = spacing + windowPadding.top; - final right = - spaceSize.width - widgetSize.width - windowPadding.right - spacing; - final bottom = - spaceSize.height - widgetSize.height - windowPadding.bottom - spacing; - - switch (corner) { - case PIPViewCorner.topLeft: - return Offset(left, top); - case PIPViewCorner.topRight: - return Offset(right, top); - case PIPViewCorner.bottomLeft: - return Offset(left, bottom); - case PIPViewCorner.bottomRight: - return Offset(right, bottom); - default: - throw Exception('Not implemented.'); - } - } - - const corners = PIPViewCorner.values; - final offsets = {}; - for (final corner in corners) { - offsets[corner] = getOffsetForCorner(corner); - } - - return offsets; -} diff --git a/lib/pages/global_banner_scaffold.dart b/lib/pages/global_banner_scaffold.dart new file mode 100644 index 0000000000..6753167901 --- /dev/null +++ b/lib/pages/global_banner_scaffold.dart @@ -0,0 +1,74 @@ +import 'dart:async'; + +import 'package:flutter/material.dart'; + +import 'package:provider/provider.dart'; + +import 'package:fluffychat/config/themes.dart'; +import 'package:fluffychat/utils/app_state.dart'; +import 'package:fluffychat/widgets/fluffy_chat_app.dart'; +import 'package:fluffychat/widgets/matrix.dart'; + +class GlobalBannerScaffold extends StatefulWidget { + // the actual page below the banner + final Widget child; + + const GlobalBannerScaffold({super.key, required this.child}); + + // add strings or whole routes you don't want banner to be in + static const ignoreBannerRoutes = ['call']; + + @override + State createState() => _GlobalBannerScaffoldState(); +} + +class _GlobalBannerScaffoldState extends State { + StreamSubscription? _onSyncStatusSub; + + @override + void dispose() { + _onSyncStatusSub?.cancel(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + if (FluffyThemes.isColumnMode(context)) return widget.child; + return Selector( + selector: (_, state) => state.globalBanner, + child: widget.child, + builder: (context, banner, child) { + final bool showBanner = banner != null && + !GlobalBannerScaffold.ignoreBannerRoutes.any( + (route) => FluffyChatApp + .router.routerDelegate.currentConfiguration.uri + .toString() + .contains(route), + ) && + Matrix.of(context).client.isLogged(); + + return showBanner + ? Scaffold( + appBar: AppBar( + titleSpacing: 0, + toolbarHeight: showBanner ? 70 : 0, + automaticallyImplyLeading: false, + title: Column( + children: [ + if (showBanner) + Padding( + padding: const EdgeInsets.symmetric( + horizontal: 8.0, + ), + child: banner, + ), + ], + ), + ), + body: child, + ) + : child ?? widget.child; // only for null safety, never occurs + }, + ); + } +} diff --git a/lib/pages/settings_chat/settings_chat_view.dart b/lib/pages/settings_chat/settings_chat_view.dart index b2d4a40adf..f32c427c1a 100644 --- a/lib/pages/settings_chat/settings_chat_view.dart +++ b/lib/pages/settings_chat/settings_chat_view.dart @@ -6,9 +6,7 @@ import 'package:go_router/go_router.dart'; import 'package:fluffychat/config/app_config.dart'; import 'package:fluffychat/config/setting_keys.dart'; import 'package:fluffychat/utils/platform_infos.dart'; -import 'package:fluffychat/utils/voip/callkeep_manager.dart'; import 'package:fluffychat/widgets/layouts/max_width_body.dart'; -import 'package:fluffychat/widgets/matrix.dart'; import 'package:fluffychat/widgets/settings_switch_list_tile.dart'; import 'settings_chat.dart'; @@ -75,22 +73,12 @@ class SettingsChatView extends StatelessWidget { title: L10n.of(context)!.experimentalVideoCalls, onChanged: (b) { AppConfig.experimentalVoip = b; - Matrix.of(context).createVoipPlugin(); + // Matrix.of(context).createVoipPlugin(); return; }, storeKey: SettingKeys.experimentalVoip, defaultValue: AppConfig.experimentalVoip, ), - if (PlatformInfos.isMobile) - ListTile( - title: Text(L10n.of(context)!.callingPermissions), - onTap: () => - CallKeepManager().checkoutPhoneAccountSetting(context), - trailing: const Padding( - padding: EdgeInsets.all(16.0), - child: Icon(Icons.call), - ), - ), SettingsSwitchListTile.adaptive( title: L10n.of(context)!.separateChatTypes, onChanged: (b) => AppConfig.separateChatTypes = b, diff --git a/lib/pages/voip/calling_page.dart b/lib/pages/voip/calling_page.dart new file mode 100644 index 0000000000..dfd6f50b37 --- /dev/null +++ b/lib/pages/voip/calling_page.dart @@ -0,0 +1,810 @@ +/* + * Famedly + * Copyright (C) 2019, 2020, 2021 Famedly GmbH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +import 'dart:async'; +import 'dart:io'; + +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; + +import 'package:flutter_foreground_task/flutter_foreground_task.dart'; +import 'package:flutter_gen/gen_l10n/l10n.dart'; +import 'package:flutter_webrtc/flutter_webrtc.dart'; +import 'package:go_router/go_router.dart'; +import 'package:matrix/matrix.dart'; +import 'package:provider/provider.dart'; + +import 'package:fluffychat/config/themes.dart'; +import 'package:fluffychat/utils/app_state.dart'; +import 'package:fluffychat/utils/platform_infos.dart'; +import 'package:fluffychat/utils/voip/voip_plugin.dart'; +import '../../utils/voip/call_session_state.dart'; +import '../../utils/voip/call_state_proxy.dart'; +import '../../utils/voip/group_call_session_state.dart'; +import '../../utils/voip/livekit_group_call_session_state.dart'; +import 'group_call_view/group_call_view.dart'; +import 'p2p_call_view/p2p_view.dart'; +import 'widgets/call_buttons.dart'; +import 'widgets/call_timer.dart'; +import 'widgets/more_options_listtile.dart'; + +enum ChangeAudioMode { input, output } + +class Calling extends StatefulWidget { + final VoipPlugin voipPlugin; + final CallStateProxy proxy; + + /// when a call is not connected we don't have the remote user, so pass this + /// to show the remote user + final User? remoteUserInCall; + const Calling({ + super.key, + required this.voipPlugin, + required this.proxy, + this.remoteUserInCall, + }); + + @override + MyCallingPage createState() => MyCallingPage(); +} + +class MyCallingPage extends State { + CallStateProxy get proxy => widget.proxy; + Room get room => proxy.room; + + String get displayName => proxy.displayName ?? ''; + + MediaStream? get localStream { + if (proxy.localUserMediaStream != null) { + return proxy.localUserMediaStream!.stream!; + } + return null; + } + + bool get isMicrophoneMuted => proxy.isMicrophoneMuted; + bool get isLocalVideoMuted => proxy.isLocalVideoMuted; + bool get isScreensharingEnabled => proxy.isScreensharingEnabled; + bool get isRemoteOnHold => proxy.remoteOnHold; + bool get isLocalOnHold => proxy.localHold; + bool get voiceonly => proxy.voiceonly; + bool get answering => proxy.answering; + bool get connecting => proxy.connecting; + bool get connected => proxy.connected; + bool get ended => proxy.ended; + bool get callOnHold => proxy.callOnHold; + bool get isGroupCall => + (proxy is GroupCallSessionState || proxy is LiveKitGroupCallSessionState); + bool get showMicMuteButton => connected; + bool get showScreenSharingButton => connected; + bool get showHoldButton => connected && !isGroupCall; + bool get showEstablishingConnection => connecting; + WrappedMediaStream get screenSharing => screenSharingStreams.elementAt(0); + WrappedMediaStream? get primaryStream => proxy.primaryStream; + + // TODO(td): remove this when ios gets callkeepv3 + bool get showAnswerButton => + (!connected && !connecting && !ended) && + !proxy.isOutgoing && + !isGroupCall && + (kIsWeb || !Platform.isAndroid); + + bool get showVideoMuteButton => connected; + bool get showFlipCameraButton => + !kIsWeb && + PlatformInfos.isMobile && + proxy.localUserMediaStream?.videoMuted == false; + + List get screenSharingStreams => + (proxy.screenSharingStreams); + + List get userMediaStreams { + if (isGroupCall) { + return (proxy.userMediaStreams); + } + final streams = [ + ...proxy.screenSharingStreams, + ...proxy.userMediaStreams, + ]; + streams.removeWhere((s) => s.stream?.id == proxy.primaryStream?.stream?.id); + return streams; + } + + String get title { + if (isGroupCall) { + return 'Group call'; + } + return '${voiceonly ? L10n.of(context)!.audioCall : L10n.of(context)!.videoCall} (${proxy.callState})'; + } + + String get heldTitle { + var heldTitle = ''; + if (proxy.localHold) { + heldTitle = '${proxy.displayName ?? ''} ${L10n.of(context)!.heldTheCall}'; + } else if (proxy.remoteOnHold) { + heldTitle = '${L10n.of(context)!.you} ${L10n.of(context)!.heldTheCall}'; + } + return heldTitle; + } + + VoipPlugin get voipPlugin => widget.voipPlugin; + + @override + void initState() { + super.initState(); + // Do not rely on this initState to be called only once, user can close this + // page and reopen from call banner anytime. + ServicesBinding.instance.addPostFrameCallback((timeStamp) { + Provider.of(context, listen: false) + .removeGlobalBanner(); // ideally was a call banner + }); + SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]); + proxy.onUpdateViewCallback(_handleCallState); + } + + StreamSubscription? proximitySubscription; + + @override + void dispose() { + SystemChrome.setPreferredOrientations([]); + super.dispose(); + } + + void _handleCallState() { + if (mounted) { + setState(() {}); + } + } + + Future handleAnswerButtonClick() async { + try { + await proxy.answer(); + } catch (e) { + Logs().e('answer failed?', e); + } + } + + Future handleHangupButtonClick() async { + try { + await proxy.hangup(); + } catch (e) { + Logs().e('hangup failed?', e); + } + } + + Future handleMicMuteButtonClick() async { + await proxy.setMicrophoneMuted(!isMicrophoneMuted); + } + + Future handleScreenSharingButtonClick() async { + if (!kIsWeb && Platform.isAndroid) { + if (!proxy.isScreensharingEnabled) { + FlutterForegroundTask.init( + androidNotificationOptions: AndroidNotificationOptions( + channelId: 'notification_channel_id', + channelName: 'Foreground Notification', + channelDescription: + 'This notification appears when the foreground service is running.', + ), + iosNotificationOptions: const IOSNotificationOptions(), + foregroundTaskOptions: const ForegroundTaskOptions(), + ); + await FlutterForegroundTask.startService( + notificationTitle: 'Screen sharing', + notificationText: 'You are sharing your screen in famedly', + ); + } else { + await FlutterForegroundTask.stopService(); + } + } + + await proxy.setScreensharingEnabled(!isScreensharingEnabled); + } + + Future handleHoldButtonClick() async { + await proxy.setRemoteOnHold(!isRemoteOnHold); + } + + Future handleVideoMuteButtonClick() async { + await proxy.setLocalVideoMuted(!isLocalVideoMuted); + } + + Future handleFlipCameraButtonClick() async { + if (proxy.localUserMediaStream != null) { + await Helper.switchCamera( + proxy.localUserMediaStream!.stream!.getVideoTracks()[0], + ); + } + setState(() {}); + } + + bool speakerPhoneTurnedOn = false; + void handleturnOnSpeakerPhoneClicked() async { + if (proxy.localUserMediaStream != null) { + await Helper.setSpeakerphoneOn(!speakerPhoneTurnedOn); + setState(() { + speakerPhoneTurnedOn = !speakerPhoneTurnedOn; + }); + } + } + + void changeAudioStuff(ChangeAudioMode mode) async { + if (proxy.localUserMediaStream != null) { + final devices = mode == ChangeAudioMode.input + ? await Helper.enumerateDevices('audioinput') + : await Helper.audiooutputs; + await showModalBottomSheet( + context: context, + backgroundColor: Colors.white, + shape: const RoundedRectangleBorder( + borderRadius: BorderRadius.only( + topLeft: Radius.circular(8.0), + topRight: Radius.circular(8.0), + ), + ), + builder: (context) { + return SafeArea( + child: Column( + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.start, + children: devices + .map( + (device) => ListTile( + title: Text( + device.label, + style: Theme.of(context).textTheme.bodyLarge!, + ), + onTap: () async { + Logs().d('setting audio $mode to ${device.label}'); + if (mode == ChangeAudioMode.input) { + await Helper.selectAudioInput(device.deviceId); + } else { + await Helper.selectAudioOutput(device.deviceId); + } + + GoRouter.of(context).pop(); + }, + ), + ) + .toList(), + ), + ); + }, + ); + } + setState(() {}); + } + + void handleMoreButtonClicked() async { + await showModalBottomSheet( + context: context, + backgroundColor: Colors.white, + shape: const RoundedRectangleBorder( + borderRadius: BorderRadius.only( + topLeft: Radius.circular(8.0), + topRight: Radius.circular(8.0), + ), + ), + builder: (context) { + return SafeArea( + child: Column( + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + if (showScreenSharingButton && + !FluffyThemes.isColumnMode(context)) + MoreOptionsListTile( + icon: Icons.screen_share, + title: isScreensharingEnabled + ? L10n.of(context)!.stopScreenShare + : L10n.of(context)!.startScreenShare, + onPressed: handleScreenSharingButtonClick, + shouldPopOnPress: true, + ), + if (proxy is CallSessionState) + MoreOptionsListTile( + icon: Icons.pause, + title: isRemoteOnHold + ? L10n.of(context)!.unholdCall + : L10n.of(context)!.holdCall, + onPressed: handleHoldButtonClick, + shouldPopOnPress: true, + ), + if (showFlipCameraButton && + MediaQuery.of(context).size.width < 400) + MoreOptionsListTile( + icon: Icons.flip_camera_android, + title: L10n.of(context)!.flipCamera, + onPressed: handleFlipCameraButtonClick, + ), + if (!kIsWeb) + MoreOptionsListTile( + icon: Icons.speaker, + title: L10n.of(context)!.audioOutput, + onPressed: () async => + changeAudioStuff(ChangeAudioMode.output), + ), + if (!kIsWeb) + MoreOptionsListTile( + icon: Icons.mic, + title: L10n.of(context)!.audioInput, + onPressed: () async => + changeAudioStuff(ChangeAudioMode.input), + ), + ], + ), + ); + }, + ); + } + + bool miniHangupButtonLoading = false; + + /// PIP buttons + /// New buttons will also need to go to more list manually for now if no space available. + List _buildActionButtons() { + return [ + if (connected && + voiceonly && + !kIsWeb && + PlatformInfos.isMobile && + !FluffyThemes.isColumnMode(context)) + CallButton( + onPressed: handleturnOnSpeakerPhoneClicked, + selected: speakerPhoneTurnedOn, + selectedIcon: Icons.speaker, + unSelectedIcon: Icons.speaker, + extendedView: expandedMainView, + ), + if (showMicMuteButton) + CallButton( + onPressed: handleMicMuteButtonClick, + selected: isMicrophoneMuted, + selectedIcon: Icons.mic_off, + unSelectedIcon: Icons.mic, + extendedView: expandedMainView, + ), + if (showFlipCameraButton && MediaQuery.of(context).size.width > 400) + CallButton( + onPressed: handleFlipCameraButtonClick, + selected: false, + selectedIcon: Icons.flip_camera_android, + unSelectedIcon: Icons.flip_camera_android, + extendedView: expandedMainView, + ), + if (showVideoMuteButton) + CallButton( + onPressed: handleVideoMuteButtonClick, + selected: isLocalVideoMuted, + selectedIcon: Icons.videocam_off, + unSelectedIcon: Icons.videocam, + extendedView: expandedMainView, + ), + if (showScreenSharingButton && FluffyThemes.isColumnMode(context)) + CallButton( + onPressed: handleScreenSharingButtonClick, + selected: isScreensharingEnabled, + selectedIcon: Icons.stop_screen_share, + unSelectedIcon: Icons.screen_share, + extendedView: expandedMainView, + ), + if (connected && + (!FluffyThemes.isColumnMode(context) || + !isGroupCall)) // show for p2p calls because hold, audio change buttons + CallButton( + onPressed: handleMoreButtonClicked, + selected: false, + selectedIcon: Icons.more_vert, + unSelectedIcon: Icons.more_vert, + extendedView: expandedMainView, + doLoadingAnimation: false, + ), + if (expandedMainView) + InkWell( + onTap: () async { + if (miniHangupButtonLoading) return; + setState(() { + miniHangupButtonLoading = true; + }); + await handleHangupButtonClick(); + if (mounted) { + setState(() { + miniHangupButtonLoading = false; + }); + } + }, + child: Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular( + 8.0, + ), + color: Colors.red, + ), + child: Padding( + padding: const EdgeInsets.symmetric( + horizontal: 16.0, + vertical: 12, + ), + child: miniHangupButtonLoading + ? const Center( + child: SizedBox( + height: 20, + width: 20, + child: CircularProgressIndicator( + color: Colors.white, + ), + ), + ) + : isGroupCall + ? Center( + child: Text( + L10n.of(context)!.leave, + style: const TextStyle( + color: Colors.white, + fontSize: 15, + fontWeight: FontWeight.bold, + ), + ), + ) + : const Center( + child: Icon( + Icons.call_end, + color: Colors.white, + ), + ), + ), + ), + ), + ]; + } + + bool get expandedMainView => + FluffyThemes.isColumnMode(context) || + isGroupCall || + primaryStream != null && !voiceonly && connected; + bool membersEnabled = true; + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: Colors.black, + appBar: !FluffyThemes.isColumnMode(context) + ? AppBar( + automaticallyImplyLeading: false, + title: expandedMainView + ? CallerId( + proxy: proxy, + voipPlugin: voipPlugin, + ) + : Container(), + toolbarHeight: 70, + backgroundColor: Colors.black.withOpacity(0.9), + actions: [ + CallActionButtons( + proxy: proxy, + voipPlugin: voipPlugin, + toggleMembers: () { + setState(() { + membersEnabled = !membersEnabled; + }); + }, + ), + const SizedBox(width: 12), + ], + ) + : const PreferredSize( + preferredSize: Size.fromHeight(24.0), + child: SizedBox(height: 24.0), + ), + body: AnnotatedRegion( + value: const SystemUiOverlayStyle( + systemNavigationBarColor: Colors.black, + statusBarColor: Colors.black, + ), + child: Column( + mainAxisSize: MainAxisSize.max, + mainAxisAlignment: MainAxisAlignment.start, + children: [ + if (isGroupCall) + Expanded( + child: Center( + child: GroupCallView( + call: proxy, + client: voipPlugin.client, + ), + ), + ) + else + Expanded( + child: Center( + child: P2PCallView( + call: proxy as CallSessionState, + remoteUserInCall: widget.remoteUserInCall, + voipPlugin: voipPlugin, + ), + ), + ), + Column( + mainAxisSize: MainAxisSize.min, + children: [ + SizedBox( + height: expandedMainView ? 12.0 : 40, + ), + if (connected) + SizedBox( + height: 56.0, + width: MediaQuery.of(context).size.width, + child: Center( + child: Padding( + padding: const EdgeInsets.symmetric( + horizontal: 16.0, + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + if (FluffyThemes.isColumnMode(context)) + Flexible( + flex: 1, + child: Align( + alignment: Alignment.centerLeft, + child: CallerId( + proxy: proxy, + voipPlugin: voipPlugin, + ), + ), + ), + Flexible( + flex: 3, + child: Align( + alignment: Alignment.center, + child: ListView.separated( + shrinkWrap: true, + itemBuilder: (context, index) => + _buildActionButtons().toList()[index], + separatorBuilder: (context, index) => + const SizedBox(width: 12), + itemCount: _buildActionButtons().length, + scrollDirection: Axis.horizontal, + ), + ), + ), + if (FluffyThemes.isColumnMode(context)) + Flexible( + flex: 1, + child: Align( + alignment: Alignment.centerRight, + child: CallActionButtons( + proxy: proxy, + voipPlugin: voipPlugin, + toggleMembers: () { + setState(() { + membersEnabled = !membersEnabled; + }); + }, + ), + ), + ), + ], + ), + ), + ), + ), + SizedBox( + height: expandedMainView ? 0 : 16.0, + ), + if (!expandedMainView || (!connected && !isGroupCall)) + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + CallBigButton( + onPressed: handleHangupButtonClick, + iconData: Icons.call_end, + proxy: proxy, + text: proxy.isOutgoing || proxy.connected + ? L10n.of(context)!.hangup + : L10n.of(context)!.reject, + backgroundColor: Colors.red, + ), + const SizedBox(width: 12), + if (showAnswerButton) + CallBigButton( + onPressed: handleAnswerButtonClick, + iconData: Icons.call, + proxy: proxy, + text: L10n.of(context)!.accept, + backgroundColor: Colors.green, + ), + ], + ), + SizedBox( + height: expandedMainView + ? 12.0 + : connected + ? MediaQuery.of(context).size.height * 0.05 + : MediaQuery.of(context).size.height * 0.1, + ), + ], + ), + ], + ), + ), + ); + } +} + +class CallBigButton extends StatefulWidget { + final Function onPressed; + final CallStateProxy proxy; + final Color backgroundColor; + final IconData iconData; + final String text; + const CallBigButton({ + super.key, + required this.onPressed, + required this.proxy, + required this.backgroundColor, + required this.iconData, + required this.text, + }); + + @override + State createState() => _CallBigButtonState(); +} + +class _CallBigButtonState extends State { + bool loading = false; + + @override + Widget build(BuildContext context) { + return InkWell( + onTap: () async { + if (loading) return; + setState(() { + loading = true; + }); + await widget.onPressed(); + if (mounted) { + setState(() { + loading = false; + }); + } + }, + child: Container( + decoration: BoxDecoration( + color: widget.backgroundColor, + borderRadius: BorderRadius.circular(8.0), + ), + child: Padding( + padding: const EdgeInsets.symmetric( + vertical: 16.0, + horizontal: 16.0 + 4, + ), + child: loading + ? const Center( + child: SizedBox( + height: 24, + width: 24, + child: CircularProgressIndicator( + color: Colors.white, + ), + ), + ) + : Row( + mainAxisSize: MainAxisSize.min, + children: [ + Icon(widget.iconData, color: Colors.white), + const SizedBox(width: 12), + Text( + widget.text, + style: const TextStyle(color: Colors.white), + ), + ], + ), + ), + ), + ); + } +} + +class CallerId extends StatelessWidget { + final CallStateProxy proxy; + final VoipPlugin voipPlugin; + const CallerId({super.key, required this.proxy, required this.voipPlugin}); + + @override + Widget build(BuildContext context) { + return Padding( + padding: + EdgeInsets.only(left: FluffyThemes.isColumnMode(context) ? 0 : 8), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + proxy.room.getLocalizedDisplayname(), + style: Theme.of(context) + .textTheme + .titleMedium! + .copyWith(color: Colors.white), + ), + CallTimer( + voipPlugin: voipPlugin, + appBar: true, + proxy: proxy, + ), + ], + ), + ); + } +} + +class CallActionButtons extends StatelessWidget { + final CallStateProxy proxy; + final VoipPlugin voipPlugin; + final Function toggleMembers; + const CallActionButtons({ + super.key, + required this.proxy, + required this.voipPlugin, + required this.toggleMembers, + }); + + @override + Widget build(BuildContext context) { + final toRoomPath = '/rooms/${proxy.room.id}'; + return Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + IconButton( + onPressed: () { + GoRouter.of(context).go(toRoomPath); + voipPlugin.createMinimizer(proxy); + }, + icon: const Icon( + Icons.chat, + color: Colors.white, + ), + ), + if ((proxy.screenSharingStreams.isNotEmpty && + proxy is GroupCallSessionState) || + proxy.userMediaStreams.length > 4) + IconButton( + onPressed: () => toggleMembers(), + icon: const Icon( + Icons.people, + color: Colors.white, + ), + ), + IconButton( + onPressed: () { + GoRouter.of(context).go( + Provider.of(context, listen: false) + .bannerClickedOnPath ?? + toRoomPath, + ); + voipPlugin.createMinimizer(proxy); + }, + icon: const Icon( + Icons.minimize, + color: Colors.white, + ), + ), + ], + ); + } +} diff --git a/lib/pages/voip/group_call_onboarding/group_call_onboarding_view.dart b/lib/pages/voip/group_call_onboarding/group_call_onboarding_view.dart new file mode 100644 index 0000000000..c3dabcb7e0 --- /dev/null +++ b/lib/pages/voip/group_call_onboarding/group_call_onboarding_view.dart @@ -0,0 +1,368 @@ +import 'dart:math'; + +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; + +import 'package:flutter_gen/gen_l10n/l10n.dart'; +import 'package:go_router/go_router.dart'; +import 'package:matrix/matrix.dart'; +import 'package:webrtc_interface/webrtc_interface.dart' hide Navigator; + +import 'package:fluffychat/config/app_config.dart'; +import 'package:fluffychat/widgets/matrix.dart'; +import '../../../utils/voip/group_call_session_state.dart'; +import '../../../utils/voip/livekit_group_call_session_state.dart'; +import '../widgets/stream_view.dart'; + +class GroupCallOnboardingView extends StatefulWidget { + const GroupCallOnboardingView({super.key, required this.roomId}); + final String roomId; + + @override + State createState() => + _GroupCallOnboardingViewState(); +} + +class _GroupCallOnboardingViewState extends State { + MediaStream? _localMediaStream; + WrappedMediaStream? _localStream; + Client get client => Matrix.of(context).client; + + late Room room; + + Future setup() async { + room = client.getRoomById(widget.roomId)!; + + final voipPlugin = Matrix.of(context).voipPlugin; + + _localMediaStream = await voipPlugin.mediaDevices.getUserMedia( + { + 'audio': true, + 'video': { + 'mandatory': { + 'minWidth': '640', + 'minHeight': '480', + 'minFrameRate': '30', + }, + 'facingMode': 'user', + 'optional': [], + }, + }, + ); + + _localStream = WrappedMediaStream( + renderer: voipPlugin.createRenderer(), + stream: _localMediaStream, + participant: + Participant(deviceId: client.deviceID!, userId: client.userID!), + room: room, + client: voipPlugin.client, + purpose: SDPStreamMetadataPurpose.Usermedia, + audioMuted: _localMediaStream!.getAudioTracks().isEmpty, + videoMuted: _localMediaStream!.getVideoTracks().isEmpty, + isWeb: voipPlugin.isWeb, + isGroupCall: true, + ); + + await _localStream!.initialize(); + + setState(() {}); + Logs().i( + 'setting up group calls onboarding page with localStream = $_localStream', + ); + } + + @override + void initState() { + super.initState(); + setup(); + SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]); + } + + @override + void dispose() { + SystemChrome.setPreferredOrientations([]); + super.dispose(); + } + + bool cancelButtonLoading = false; + bool joinGroupCallButtonLoading = false; + GroupCallSession? groupCallSession; + + @override + Widget build(BuildContext context) { + if (_localStream == null) { + return const Scaffold( + body: Center( + child: CircularProgressIndicator(), + ), + ); + } + return Scaffold( + backgroundColor: Colors.black, + appBar: AppBar( + backgroundColor: Colors.black, + leadingWidth: 120, + leading: InkWell( + onTap: _localStream == null + ? null + : () async { + if (cancelButtonLoading) return; + setState(() { + cancelButtonLoading = true; + }); + + await _localStream?.dispose(); + await _localMediaStream?.dispose(); + await groupCallSession?.leave(); + + if (mounted) { + setState(() { + cancelButtonLoading = false; + }); + } + final path = '/rooms/${room.id}'; + GoRouter.of(context).go(path); + }, + child: Row( + children: [ + const SizedBox( + width: 16.0, + ), + if (cancelButtonLoading) + const SizedBox( + height: 24, + width: 24, + child: CircularProgressIndicator( + color: Colors.white, + ), + ), + if (!cancelButtonLoading) ...[ + const Icon(Icons.cancel, color: Colors.white), + const SizedBox( + width: 12.0, + ), + Text( + L10n.of(context)!.cancel, + style: const TextStyle(color: Colors.white), + ), + ], + ], + ), + ), + ), + body: _localStream == null + ? const Center( + child: CircularProgressIndicator(), + ) + : Center( + child: SingleChildScrollView( + child: Column( + mainAxisSize: MainAxisSize.max, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text( + L10n.of(context)!.joinGroupCall, + style: Theme.of(context) + .textTheme + .bodyLarge! + .copyWith(color: Colors.white70), + ), + const SizedBox( + height: 4.0, + ), + Text( + room.getLocalizedDisplayname(), + style: const TextStyle(fontSize: 28, color: Colors.white), + ), + const SizedBox( + height: 32.0, + ), + Center( + child: Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular( + 8.0, + ), + color: Colors.white.withOpacity(0.08), + ), + height: 200, + width: + min(343, MediaQuery.of(context).size.width * 0.9), + child: _localStream!.videoMuted + ? Center( + child: Text( + L10n.of(context)!.cameraTurnedOff, + style: Theme.of(context) + .textTheme + .bodyLarge! + .copyWith( + color: Colors.white.withOpacity(0.8), + ), + ), + ) + : StreamView(wrappedStream: _localStream!), + ), + ), + const SizedBox(height: 60), + Row( + mainAxisAlignment: MainAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + InkWell( + onTap: () { + setState(() { + _localStream! + .setAudioMuted(!_localStream!.audioMuted); + }); + }, + child: Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular( + 8.0, + ), + color: _localStream!.audioMuted + ? Colors.white + : Colors.white10, + ), + child: Padding( + padding: const EdgeInsets.all( + 16.0, + ), + child: Icon( + _localStream!.audioMuted + ? Icons.mic_off + : Icons.mic, + color: !_localStream!.audioMuted + ? Colors.white + : Colors.black, + ), + ), + ), + ), + const SizedBox( + width: 16.0, + ), + InkWell( + onTap: () { + setState(() { + _localStream! + .setVideoMuted(!_localStream!.videoMuted); + }); + }, + child: Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular( + 8.0, + ), + color: _localStream!.videoMuted + ? Colors.white + : Colors.white10, + ), + child: Padding( + padding: const EdgeInsets.all( + 16.0, + ), + child: Icon( + _localStream!.videoMuted + ? Icons.videocam_off + : Icons.videocam, + color: !_localStream!.videoMuted + ? Colors.white + : Colors.black, + ), + ), + ), + ), + ], + ), + const SizedBox(height: 24), + InkWell( + onTap: () async { + if (joinGroupCallButtonLoading) return; + setState(() { + joinGroupCallButtonLoading = true; + }); + groupCallSession = await Matrix.of(context) + .voipPlugin + .voip + .fetchOrCreateGroupCall( + '', //call for whole room + room, + [ + AppConfig.livekitEnabledCalls + ? LiveKitBackend( + livekitServiceUrl: + AppConfig.livekitServiceUrl, + livekitAlias: widget.roomId, + ) + : MeshBackend(), + ], + 'm.call', + 'm.room', + ); + final voipPlugin = Matrix.of(context).voipPlugin; + final groupCallProxy = groupCallSession!.isLivekitCall + ? LiveKitGroupCallSessionState( + groupCallSession!, + voipPlugin, + ) + : GroupCallSessionState( + groupCallSession!, + voipPlugin, + ); + voipPlugin.currentGroupCallProxy = groupCallProxy; + + voipPlugin.connectedTsSinceEpoch = 0; + voipPlugin.onHoldMs = 0; + + await groupCallProxy.enter(_localStream!); + + voipPlugin.setupCallAndOpenCallPage( + groupCallProxy, + null, + ); + + if (mounted) { + setState(() { + joinGroupCallButtonLoading = false; + }); + } + }, + child: Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular( + 8.0, + ), + color: Theme.of(context).colorScheme.primary, + ), + child: Padding( + padding: const EdgeInsets.symmetric( + vertical: 16.0, + horizontal: 32.0, + ), + child: joinGroupCallButtonLoading + ? const SizedBox( + height: 24, + width: 24, + child: CircularProgressIndicator( + color: Colors.white, + ), + ) + : Text( + L10n.of(context)!.joinGroupCall, + style: Theme.of(context) + .textTheme + .bodyLarge! + .copyWith(color: Colors.white), + ), + ), + ), + ), + ], + ), + ), + ), + ); + } +} diff --git a/lib/pages/voip/group_call_view/group_call_view.dart b/lib/pages/voip/group_call_view/group_call_view.dart new file mode 100644 index 0000000000..6e0a77e747 --- /dev/null +++ b/lib/pages/voip/group_call_view/group_call_view.dart @@ -0,0 +1,373 @@ +import 'dart:convert'; + +import 'package:flutter/material.dart'; + +import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart'; +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/config/themes.dart'; +import 'package:fluffychat/widgets/fluffy_chat_app.dart'; +import '../../../utils/voip/call_state_proxy.dart'; +import '../widgets/stream_view.dart'; +import 'widgets/grid_definitions.dart'; +import 'widgets/no_tracks_published_tile.dart'; + +enum TileType { userMedia, screenShare } + +class GroupCallView extends StatefulWidget { + final CallStateProxy call; + final Client client; + + const GroupCallView({ + super.key, + required this.call, + required this.client, + }); + + @override + State createState() => GroupCallViewState(); +} + +class GroupCallViewState extends State { + GroupCallSession get groupCall => widget.call.groupCall!; + + List get participants => groupCall.participants; + + List? userMediaStreams; + List? screenSharingStreams; + + List getStreamOfTileType(TileType type) { + return (type == TileType.userMedia + ? userMediaStreams + : screenSharingStreams) ?? + []; + } + + List selectedLayouts = []; + int currentPage = 0; + final pageViewController = PageController(); + + /// called every build + void createLayoutList(int pcount) { + final layout = selectGridLayout( + GRID_LAYOUTS, + pcount, + MediaQuery.of(context).size.width, + MediaQuery.of(context).size.height, + ); + int pSet; + final pLeft = pcount - layout.maxTiles; + pSet = pLeft > 0 ? layout.maxTiles : pcount; + selectedLayouts.add(SelectedLayout(layout: layout, tilesOnLayout: pSet)); + if (pLeft > 0) { + createLayoutList(pLeft); + } + } + + /// keep in sync with getTiles + int getTilesCount(TileType tileType) { + int tiles = 0; + for (final p in participants) { + final tracksLength = getStreamOfTileType(tileType) + .where((element) => element.participant == p) + .length; + if (tileType == TileType.userMedia) { + tiles += tracksLength > 0 ? tracksLength : 1; + } + } + return tiles; + } + + /// keep in sync with getTilesCount + List getTiles({ + required TileType tileType, + required double height, + double? width, + }) { + final List tiles = []; + for (final p in participants) { + final user = widget.call.room.unsafeGetUserFromMemoryOrFallback(p.userId); + + final List ptiles = []; + for (final stream in getStreamOfTileType(tileType) + .where((element) => element.participant == p)) { + final tile = InkWell( + key: ValueKey(stream.id), + onTap: () => togglePinned(stream), + child: IgnorePointer( + child: SizedBox( + height: height, + width: width, + child: StreamView( + highLight: false, + wrappedStream: stream, + showName: true, + avatarSize: 80, + avatarTextSize: 48, + avatarBorderRadius: 16, + showExtendedName: true, + ), + ), + ), + ); + ptiles.add(tile); + } + + tiles.addAll(ptiles); + Logs().d( + 'Found ${ptiles.length} tiles for ${user.displayName} of $tileType', + ); + // add users who haven't published any tracks and hide missing screen share blanks + if (tileType == TileType.userMedia && ptiles.isEmpty) { + tiles.add( + NoTracksPublishedTile( + client: widget.client, + user: user, + height: height, + ), + ); + Logs().d( + 'Added blank tile for for ${user.displayName} of $tileType', + ); + } + } + Logs().d( + 'Rendering ${tiles.length} tiles of $tileType', + ); + return tiles; + } + + WrappedMediaStream? pinnedStream; + + void togglePinned(WrappedMediaStream stream) { + // ignore pinning when only one tile + + final totalTiles = + getTilesCount(TileType.userMedia) + getTilesCount(TileType.screenShare); + + if (totalTiles <= 1) return; + + setState(() { + pinnedStream = pinnedStream == stream ? null : stream; + }); + Logs() + .e('pinnsed stream set to: ${(pinnedStream?.displayName).toString()}'); + } + + @override + Widget build(BuildContext context) { + Logs().d('[GroupCallView] rebuilding callgrid children'); + + groupCall.encryptionKeysMap.forEach((key, value) { + Logs().e(key.userId.toString()); + Logs().e(value.values.map((e) => base64Encode(e).toString()).toString()); + }); + + userMediaStreams = List.from(widget.call.userMediaStreams); + screenSharingStreams = List.from(widget.call.screenSharingStreams); + + // reset the pinned stream + if (!userMediaStreams!.contains(pinnedStream) && + !screenSharingStreams!.contains(pinnedStream)) pinnedStream = null; + + selectedLayouts.clear(); + createLayoutList(getTilesCount(TileType.userMedia)); + + if (currentPage > selectedLayouts.length - 1) { + currentPage = selectedLayouts.length - 1; + Logs().d('[GroupCallView] currentPage set to $currentPage'); + } + + // use global context so no other widget in the tree can affect getting this + final mediaQuery = + MediaQuery.of(FluffyChatApp.appGlobalKey.currentContext!); + final columnMode = + FluffyThemes.isColumnMode(FluffyChatApp.appGlobalKey.currentContext!); + + final availableHeight = mediaQuery.size.height - + (70 + + mediaQuery.padding.top + + mediaQuery.padding.bottom + + 56.0 + + 24 + // bottom and top padding of action buttons bar + 8.0 + // seperator padding + // pagination buttons + (columnMode ? 0 : 40)); + final availableWidth = mediaQuery.size.width - + 24; // acts as left right padding because centered + + if ((screenSharingStreams ?? []).isEmpty && pinnedStream == null) { + return Column( + children: [ + SizedBox( + height: availableHeight, + child: PageView.builder( + physics: const NeverScrollableScrollPhysics(), + itemCount: selectedLayouts.length, + controller: pageViewController, + itemBuilder: (BuildContext context, int pageIndex) { + // Logs().d('pageIndex: $pageIndex'); + // Logs().d('users: ${selectedLayouts[pageIndex].tilesOnLayout}'); + // Logs() + // .d('grid name: ${selectedLayouts[pageIndex].layout.name}'); + // Logs() + // .d('columns: ${selectedLayouts[pageIndex].layout.columns}'); + // Logs().d('rows: ${selectedLayouts[pageIndex].layout.rows}'); + // Logs().d( + // 'maxTiles: ${selectedLayouts[pageIndex].layout.maxTiles}', + // ); + + int startIndex = 0; + for (final page in selectedLayouts.sublist(0, pageIndex)) { + startIndex += page.tilesOnLayout; + } + Logs().d('startIndex: $startIndex'); + + final tiles = getTiles( + tileType: TileType.userMedia, + height: + availableHeight / selectedLayouts[pageIndex].layout.rows, + ); + + final tilesForPage = tiles.sublist( + startIndex, + startIndex + selectedLayouts[pageIndex].tilesOnLayout, + ); + + Logs().d('tilesForPage length: ${tilesForPage.toString()}'); + + return Center( + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 8), + child: AlignedGridView.count( + mainAxisSpacing: 3.0, + crossAxisSpacing: 4.0, + crossAxisCount: selectedLayouts[pageIndex].layout.columns, + itemCount: selectedLayouts[pageIndex].tilesOnLayout, + itemBuilder: (context, index) { + return tilesForPage[index]; + }, + ), + ), + ); + }, + ), + ), + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + IconButton( + icon: const Icon(Icons.arrow_back), + onPressed: currentPage > 0 + ? () { + setState(() { + currentPage--; + pageViewController.jumpToPage(currentPage); + }); + } + : null, + ), + Text('${currentPage + 1}/${selectedLayouts.length}'), + IconButton( + icon: const Icon(Icons.arrow_forward), + onPressed: currentPage < selectedLayouts.length - 1 + ? () { + setState(() { + currentPage++; + pageViewController.jumpToPage(currentPage); + }); + } + : null, + ), + ], + ), + ], + ); + } else { + final focusedStream = pinnedStream ?? + screenSharingStreams!.firstWhere((element) => element.stream != null); + + final List miniTiles = [ + ...getTiles( + tileType: TileType.screenShare, + height: 120.0, + width: columnMode ? 220.0 - 8.0 : 120.0, + ), + ...getTiles( + tileType: TileType.userMedia, + height: 120.0, + width: columnMode ? 220.0 - 8.0 : 120.0, + ), + ] + .where( + (element) => element.key != ValueKey(focusedStream.id), + ) + .toList(); + + final List tilesWhileScreenSharing = [ + InkWell( + key: ValueKey(focusedStream.id), + onTap: () => togglePinned(focusedStream), + child: IgnorePointer( + child: SizedBox( + height: columnMode ? availableHeight : availableHeight - 120.0, + width: columnMode ? availableWidth - 220.0 : availableWidth, + child: StreamView( + highLight: false, + showName: true, + avatarSize: 80, + avatarTextSize: 48, + avatarBorderRadius: 16, + showExtendedName: true, + wrappedStream: focusedStream, + ), + ), + ), + ), + const SizedBox( + height: 2.0, + width: 2.0, + ), + SizedBox( + height: columnMode + ? null + : 120.0, // allow complete height to scroll in columnMode + width: columnMode + ? 220.0 - 8.0 + : null, // allow complete width to scroll in mobileMode + child: ListView.separated( + scrollDirection: columnMode ? Axis.vertical : Axis.horizontal, + itemCount: miniTiles.length, + separatorBuilder: (context, index) => const SizedBox( + height: 2.0, + width: 2.0, + ), + itemBuilder: (context, index) => miniTiles[index], + ), + ), + ]; + return SizedBox( + // height: availableHeight, + width: availableWidth, + child: columnMode + ? Row( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.start, + children: tilesWhileScreenSharing, + ) + : Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.start, + children: tilesWhileScreenSharing.reversed.toList(), + ), + ); + } + } +} + +class SelectedLayout { + GridLayoutDefinition layout; + int tilesOnLayout; + + SelectedLayout({required this.layout, required this.tilesOnLayout}); +} diff --git a/lib/pages/voip/group_call_view/widgets/grid_definitions.dart b/lib/pages/voip/group_call_view/widgets/grid_definitions.dart new file mode 100644 index 0000000000..d4e01cf7f1 --- /dev/null +++ b/lib/pages/voip/group_call_view/widgets/grid_definitions.dart @@ -0,0 +1,131 @@ +import 'package:matrix/matrix.dart'; + +class GridLayoutDefinition { + late String name; + late int columns; + late int rows; + late int minTiles; + late int maxTiles; + late int minWidth; + late int minHeight; + + GridLayoutDefinition({ + required this.name, + required this.columns, + required this.rows, + required this.minTiles, + required this.maxTiles, + required this.minWidth, + required this.minHeight, + }); +} + +// ignore: non_constant_identifier_names +List GRID_LAYOUTS = [ + GridLayoutDefinition( + name: '1x1', + columns: 1, + rows: 1, + minTiles: 1, + maxTiles: 1, + minWidth: 0, + minHeight: 0, + ), + GridLayoutDefinition( + name: '1x2', + columns: 1, + rows: 2, + minTiles: 2, + maxTiles: 2, + minWidth: 0, + minHeight: 0, + ), + GridLayoutDefinition( + name: '2x1', + columns: 2, + rows: 1, + minTiles: 2, + maxTiles: 2, + minWidth: 560, + minHeight: 0, + ), + GridLayoutDefinition( + name: '2x2', + columns: 2, + rows: 2, + minTiles: 3, + maxTiles: 4, + minWidth: 560, + minHeight: 0, + ), + GridLayoutDefinition( + name: '3x3', + columns: 3, + rows: 3, + minTiles: 5, + maxTiles: 9, + minWidth: 700, + minHeight: 0, + ), + GridLayoutDefinition( + name: '4x4', + columns: 4, + rows: 4, + minTiles: 10, + maxTiles: 16, + minWidth: 960, + minHeight: 0, + ), + GridLayoutDefinition( + name: '5x5', + columns: 5, + rows: 5, + minTiles: 17, + maxTiles: 25, + minWidth: 1100, + minHeight: 0, + ), +]; + +GridLayoutDefinition selectGridLayout( + List layouts, + int participantCount, + double width, + double height, +) { + int currentLayoutIndex = 0; + var layout = layouts.firstWhere( + (layout_) { + currentLayoutIndex = layouts.indexOf(layout_); + final isBiggerLayoutAvailable = layouts.indexWhere( + (l) => + layouts.indexOf(l) > currentLayoutIndex && + l.maxTiles == layout_.maxTiles, + ) != + -1; + return layout_.maxTiles >= participantCount && !isBiggerLayoutAvailable; + }, + orElse: () { + final lastLayout = layouts.last; + // ignore: avoid_print + Logs().d( + 'No layout found for: participantCount: $participantCount, width/height: $width/$height fallback to biggest available layout (${lastLayout.name}).', + ); + return lastLayout; + }, + ); + + if (width < layout.minWidth || height < layout.minHeight) { + if (currentLayoutIndex > 0) { + final smallerLayout = layouts[currentLayoutIndex - 1]; + layout = selectGridLayout( + layouts.sublist(0, currentLayoutIndex), + smallerLayout.maxTiles, + width, + height, + ); + } + } + + return layout; +} diff --git a/lib/pages/voip/group_call_view/widgets/lk_participant_stats.dart b/lib/pages/voip/group_call_view/widgets/lk_participant_stats.dart new file mode 100644 index 0000000000..d43389cfd2 --- /dev/null +++ b/lib/pages/voip/group_call_view/widgets/lk_participant_stats.dart @@ -0,0 +1,137 @@ +import 'package:flutter/material.dart'; + +import 'package:livekit_client/livekit_client.dart'; + +enum StatsType { + kUnknown, + kLocalAudioSender, + kLocalVideoSender, + kRemoteAudioReceiver, + kRemoteVideoReceiver, +} + +class ParticipantStatsWidget extends StatefulWidget { + const ParticipantStatsWidget({super.key, required this.participant}); + final Participant participant; + @override + State createState() => _ParticipantStatsWidgetState(); +} + +class _ParticipantStatsWidgetState extends State { + List> listeners = []; + StatsType statsType = StatsType.kUnknown; + Map stats = {}; + + void _setUpListener(Track track) { + final listener = track.createListener(); + listeners.add(listener); + if (track is LocalVideoTrack) { + statsType = StatsType.kLocalVideoSender; + listener.on((event) { + setState(() { + stats['video tx'] = 'total sent ${event.currentBitrate.toInt()} kpbs'; + event.stats.forEach((key, value) { + stats['layer-$key'] = + '${value.frameWidth ?? 0}x${value.frameHeight ?? 0} ${value.framesPerSecond?.toDouble() ?? 0} fps, ${event.bitrateForLayers[key] ?? 0} kbps'; + }); + final firstStats = + event.stats['f'] ?? event.stats['h'] ?? event.stats['q']; + if (firstStats != null) { + stats['encoder'] = firstStats.encoderImplementation ?? ''; + stats['video codec'] = + '${firstStats.mimeType}, ${firstStats.clockRate}hz, pt: ${firstStats.payloadType}'; + stats['qualityLimitationReason'] = + firstStats.qualityLimitationReason ?? ''; + } + }); + }); + } else if (track is RemoteVideoTrack) { + statsType = StatsType.kRemoteVideoReceiver; + listener.on((event) { + setState(() { + stats['video rx'] = '${event.currentBitrate.toInt()} kpbs'; + stats['video codec'] = + '${event.stats.mimeType}, ${event.stats.clockRate}hz, pt: ${event.stats.payloadType}'; + stats['video size'] = + '${event.stats.frameWidth}x${event.stats.frameHeight} ${event.stats.framesPerSecond?.toDouble()}fps'; + stats['video jitter'] = '${event.stats.jitter} s'; + stats['video decoder'] = '${event.stats.decoderImplementation}'; + //stats['video packets lost'] = '${event.stats.packetsLost}'; + //stats['video packets received'] = '${event.stats.packetsReceived}'; + stats['video frames received'] = '${event.stats.framesReceived}'; + stats['video frames decoded'] = '${event.stats.framesDecoded}'; + stats['video frames dropped'] = '${event.stats.framesDropped}'; + }); + }); + } else if (track is LocalAudioTrack) { + statsType = StatsType.kLocalAudioSender; + listener.on((event) { + setState(() { + stats['audio tx'] = '${event.currentBitrate.toInt()} kpbs'; + stats['audio codec'] = + '${event.stats.mimeType}, ${event.stats.clockRate}hz, ${event.stats.channels}ch, pt: ${event.stats.payloadType}'; + }); + }); + } else if (track is RemoteAudioTrack) { + statsType = StatsType.kRemoteAudioReceiver; + listener.on((event) { + setState(() { + stats['audio rx'] = '${event.currentBitrate.toInt()} kpbs'; + stats['audio codec'] = + '${event.stats.mimeType}, ${event.stats.clockRate}hz, ${event.stats.channels}ch, pt: ${event.stats.payloadType}'; + stats['audio jitter'] = '${event.stats.jitter} s'; + //stats['audio concealed samples'] = + // '${event.stats.concealedSamples} / ${event.stats.concealmentEvents}'; + stats['audio packets lost'] = '${event.stats.packetsLost}'; + stats['audio packets received'] = '${event.stats.packetsReceived}'; + }); + }); + } + } + + _onParticipantChanged() { + for (final element in listeners) { + element.dispose(); + } + listeners.clear(); + for (final track in widget.participant.trackPublications.values) { + if (track.track != null) { + _setUpListener(track.track!); + } + } + } + + @override + void initState() { + super.initState(); + widget.participant.addListener(_onParticipantChanged); + // trigger initial change + _onParticipantChanged(); + } + + @override + void deactivate() { + for (final element in listeners) { + element.dispose(); + } + widget.participant.removeListener(_onParticipantChanged); + super.deactivate(); + } + + num sendBitrate = 0; + + @override + Widget build(BuildContext context) { + return Container( + color: Colors.black.withOpacity(0.3), + padding: const EdgeInsets.symmetric( + vertical: 8, + horizontal: 8, + ), + child: Column( + children: + stats.entries.map((e) => Text('${e.key}: ${e.value}')).toList(), + ), + ); + } +} diff --git a/lib/pages/voip/group_call_view/widgets/no_tracks_published_tile.dart b/lib/pages/voip/group_call_view/widgets/no_tracks_published_tile.dart new file mode 100644 index 0000000000..8866c51971 --- /dev/null +++ b/lib/pages/voip/group_call_view/widgets/no_tracks_published_tile.dart @@ -0,0 +1,67 @@ +import 'package:flutter/material.dart'; + +import 'package:matrix/matrix.dart'; + +import '../../../../widgets/avatar.dart'; + +class NoTracksPublishedTile extends StatelessWidget { + final double? height; + final User user; + final Client client; + + const NoTracksPublishedTile({ + super.key, + this.height, + required this.user, + required this.client, + }); + + @override + Widget build(BuildContext context) { + return Container( + height: height, + decoration: BoxDecoration( + color: Colors.white.withOpacity(0.18), + borderRadius: BorderRadius.circular( + 4.0, + ), + ), + child: Stack( + alignment: Alignment.center, + children: [ + Avatar( + mxContent: user.avatarUrl, + name: user.displayName ?? '', + size: 80, + fontSize: 48, + client: client, + ), + Positioned( + left: 4.0, + bottom: 4.0, + child: Padding( + padding: const EdgeInsets.all(12), + child: Row( + children: [ + const Icon( + Icons.mic_off, + size: 15, + color: Colors.white, + ), + const SizedBox(width: 4), + Text( + user.displayName.toString(), + style: const TextStyle( + color: Colors.white, + fontSize: 12, + ), + ), + ], + ), + ), + ), + ], + ), + ); + } +} diff --git a/lib/pages/voip/p2p_call_view/p2p_view.dart b/lib/pages/voip/p2p_call_view/p2p_view.dart new file mode 100644 index 0000000000..30fb007440 --- /dev/null +++ b/lib/pages/voip/p2p_call_view/p2p_view.dart @@ -0,0 +1,244 @@ +import 'dart:math'; + +import 'package:flutter/material.dart'; + +import 'package:flutter_gen/gen_l10n/l10n.dart'; +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/utils/voip/voip_plugin.dart'; +import 'package:fluffychat/widgets/fluffy_chat_app.dart'; +import '../../../utils/voip/call_session_state.dart'; +import '../../../widgets/avatar.dart'; +import '../widgets/call_timer.dart'; +import '../widgets/stream_view.dart'; + +/// stack of remote view and user view +class P2PCallView extends StatefulWidget { + final CallSessionState call; + final VoipPlugin voipPlugin; + final User? remoteUserInCall; + const P2PCallView({ + super.key, + required this.call, + required this.voipPlugin, + required this.remoteUserInCall, + }); + + @override + State createState() => _P2PCallViewState(); +} + +class _P2PCallViewState extends State { + CallSessionState get call => widget.call; + VoipPlugin get voipPlugin => widget.voipPlugin; + + WrappedMediaStream? get primaryStream => call.primaryStream; + List get remoteStreams => + call.userMediaStreams.where((element) => !element.isLocal()).toList(); + List get screenSharingStreams => + call.screenSharingStreams; + + List secondaryViews() { + final views = []; + + final List userMediaStreamsCopy = + List.from(call.userMediaStreams); + + if (call.connected && call.voiceonly) { + userMediaStreamsCopy.removeWhere( + (element) => element.participant == voipPlugin.voip.localParticipant, + ); + } + userMediaStreamsCopy.removeWhere( + (element) => element.stream!.id == primaryStream!.stream!.id, + ); + + for (final stream in userMediaStreamsCopy) { + views.add( + Material( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(8.0), + ), + elevation: 20, + child: Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular( + 8.0, + ), + color: Colors.black, + ), + child: SizedBox( + width: 96, + height: 128, + child: stream.participant == voipPlugin.voip.localParticipant && + stream.videoMuted + ? Padding( + padding: const EdgeInsets.symmetric(horizontal: 8), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Icon( + Icons.videocam_off, + color: Colors.white.withOpacity(0.3), + ), + const SizedBox(height: 11), + Text( + 'Camera turned off', + style: + Theme.of(context).textTheme.bodySmall!.copyWith( + color: Colors.white.withOpacity(0.8), + ), + textAlign: TextAlign.center, + ), + ], + ), + ) + : StreamView( + wrappedStream: stream, + isVoiceOnly: call.voiceonly, + ), + ), + ), + ), + ); + views.add(const SizedBox(height: 8)); + } + + return views; + } + + bool get expandedMainView => + primaryStream != null && !call.voiceonly && call.connected; + + @override + Widget build(BuildContext context) { + // use global context so no other widget in the tree can affect getting this + final mediaQuery = + MediaQuery.of(FluffyChatApp.appGlobalKey.currentContext!); + + final availableHeight = mediaQuery.size.height - + (70 + + mediaQuery.padding.top + + mediaQuery.padding.bottom + + 56.0 + + 24 // bottom and top padding of action buttons bar + ); + + return call.callOnHold + ? Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const Icon( + Icons.pause, + size: 48.0, + color: Colors.white, + ), + Text( + call.localHold + ? L10n.of(context)!.userHeldTheCall( + call.displayName ?? L10n.of(context)!.unknownUser, + ) + : L10n.of(context)!.youHeldTheCall, + style: const TextStyle( + color: Colors.white, + fontSize: 24.0, + ), + ), + ], + ) + : Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + if (!call.connected) + Text( + !call.isOutgoing && !call.connecting + ? call.type == VoipType.kVoice + ? L10n.of(context)!.audioCall + : L10n.of(context)!.videoCall + : call.isOutgoing && !call.connecting + ? L10n.of(context)!.youAreCalling + : L10n.of(context)!.connecting, + style: Theme.of(context) + .textTheme + .bodyLarge! + .copyWith(color: Colors.white.withOpacity(0.8)), + ), + if (call.connected && call.voiceonly) + CallTimer( + voipPlugin: voipPlugin, + appBar: false, + proxy: call, + ), + SizedBox(height: !expandedMainView ? 32 : 0), + if (widget.remoteUserInCall != null && !call.connected) + // outgoing calls initial page + Avatar( + mxContent: widget.remoteUserInCall!.avatarUrl, + name: widget.remoteUserInCall!.displayName.toString(), + size: min(MediaQuery.of(context).size.height * 0.2, 160), + fontSize: 64, + client: call.room.client, + ) + else + Stack( + children: [ + Center( + child: SizedBox( + height: expandedMainView ? availableHeight : null, + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 4), + child: Center( + child: StreamView( + wrappedStream: primaryStream!, + avatarSize: min( + MediaQuery.of(context).size.height * 0.2, + 160, + ), + avatarTextSize: 64, + avatarBorderRadius: 24, + isVoiceOnly: call.voiceonly, + ), + ), + ), + ), + ), + call.userMediaStreams.isEmpty || + (call.voiceonly && primaryStream!.videoMuted) + ? Container() + : Positioned( + right: 8, + bottom: 0, + child: Column(children: secondaryViews()), + ), + ], + ), + SizedBox(height: expandedMainView ? 0 : 32), + if (screenSharingStreams.isEmpty && + (call.voiceonly || !call.connected)) ...[ + // show name and org only if voice only and no screen sharing + Text( + !call.connected + ? widget.remoteUserInCall!.displayName.toString() + : primaryStream!.displayName.toString(), + style: Theme.of(context) + .textTheme + .headlineSmall! + .copyWith(fontSize: 24, color: Colors.white), + ), + const SizedBox(height: 6), + Text( + !call.connected + ? widget.remoteUserInCall!.id.domain.toString() + : primaryStream!.participant.userId.domain.toString(), + style: Theme.of(context) + .textTheme + .bodyLarge! + .copyWith(color: Colors.white), + ), + ], + ], + ); + } +} diff --git a/lib/pages/voip/widgets/call_banner.dart b/lib/pages/voip/widgets/call_banner.dart new file mode 100644 index 0000000000..70380f4721 --- /dev/null +++ b/lib/pages/voip/widgets/call_banner.dart @@ -0,0 +1,78 @@ +import 'package:flutter/material.dart'; + +import 'package:flutter_gen/gen_l10n/l10n.dart'; +import 'package:provider/provider.dart'; + +import 'package:fluffychat/utils/app_state.dart'; +import 'package:fluffychat/utils/voip/voip_plugin.dart'; +import 'package:fluffychat/widgets/fluffy_chat_app.dart'; +import 'package:fluffychat/widgets/matrix.dart'; +import '../../../utils/voip/call_state_proxy.dart'; +import '../../../utils/voip/group_call_session_state.dart'; +import '../../../widgets/avatar.dart'; +import 'call_timer.dart'; + +class CallBanner extends StatelessWidget { + final CallStateProxy proxy; + final VoipPlugin? voipPlugin; + const CallBanner({super.key, required this.proxy, this.voipPlugin}); + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + final isBright = theme.brightness == Brightness.light; + return ListTile( + onTap: () { + Provider.of(context, listen: false).bannerClickedOnPath = + FluffyChatApp.router.routerDelegate.currentConfiguration.uri + .toString(); + + FluffyChatApp.router.go('/rooms/${proxy.room.id}/call'); + }, + shape: const RoundedRectangleBorder( + borderRadius: BorderRadius.all( + Radius.circular(12.0), + ), + ), + tileColor: Colors.green, + contentPadding: const EdgeInsets.all(0), + minVerticalPadding: 0, + horizontalTitleGap: 0, + leading: Padding( + padding: const EdgeInsets.only( + left: 8.0, + right: 12.0, + ), + child: Avatar( + mxContent: proxy.room.avatar, + size: 52, + name: proxy.room.getLocalizedDisplayname(), + client: proxy.room.client, + ), + ), + title: Text( + proxy.room.getLocalizedDisplayname(), + style: Theme.of(context).textTheme.labelLarge!.copyWith(fontSize: 16), + ), + subtitle: CallTimer( + appendText: proxy is GroupCallSessionState + ? L10n.of(context)!.groupCall + : proxy.type == VoipType.kVoice + ? L10n.of(context)!.audioCall + : L10n.of(context)!.videoCall, + proxy: proxy, + appBar: true, + voipPlugin: voipPlugin ?? Matrix.of(context).voipPlugin, + overrideTextStyle: Theme.of(context).textTheme.bodySmall!.copyWith( + color: isBright + ? Colors.white.withOpacity(0.8) + : Colors.black.withOpacity(0.72), + ), + ), + trailing: const Padding( + padding: EdgeInsets.only(right: 16.0), + child: Icon(Icons.arrow_forward_ios, size: 16), + ), + ); + } +} diff --git a/lib/pages/voip/widgets/call_buttons.dart b/lib/pages/voip/widgets/call_buttons.dart new file mode 100644 index 0000000000..68369722e0 --- /dev/null +++ b/lib/pages/voip/widgets/call_buttons.dart @@ -0,0 +1,70 @@ +import 'package:flutter/material.dart'; + +class CallButton extends StatefulWidget { + final IconData selectedIcon; + final IconData unSelectedIcon; + final bool selected; + final Function onPressed; + final bool extendedView; + final bool doLoadingAnimation; + const CallButton({ + super.key, + required this.onPressed, + required this.selectedIcon, + required this.selected, + required this.unSelectedIcon, + this.extendedView = false, + this.doLoadingAnimation = true, + }); + + @override + State createState() => _CallButtonState(); +} + +class _CallButtonState extends State { + bool loading = false; + @override + Widget build(BuildContext context) { + return InkWell( + onTap: () async { + if (loading) return; + setState(() { + loading = true; + }); + await widget.onPressed(); + setState(() { + loading = false; + }); + }, + child: Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(8.0), + color: widget.selected + ? Colors.white + : widget.extendedView + ? null + : Colors.white10, + ), + child: Padding( + padding: const EdgeInsets.all(16.0), + child: Center( + child: loading && widget.doLoadingAnimation + ? SizedBox( + height: 24, + width: 24, + child: CircularProgressIndicator( + color: widget.selected ? Colors.black : Colors.white, + ), + ) + : Icon( + widget.selected + ? widget.selectedIcon + : widget.unSelectedIcon, + color: widget.selected ? Colors.black : Colors.white, + ), + ), + ), + ), + ); + } +} diff --git a/lib/pages/voip/widgets/call_overlay.dart b/lib/pages/voip/widgets/call_overlay.dart new file mode 100644 index 0000000000..012e1e60fa --- /dev/null +++ b/lib/pages/voip/widgets/call_overlay.dart @@ -0,0 +1,377 @@ +import 'package:flutter/material.dart'; + +import 'package:flutter_gen/gen_l10n/l10n.dart'; +import 'package:matrix/matrix.dart'; +import 'package:provider/provider.dart'; + +import 'package:fluffychat/utils/app_state.dart'; +import 'package:fluffychat/utils/voip/voip_plugin.dart'; +import 'package:fluffychat/widgets/fluffy_chat_app.dart'; +import '../../../utils/voip/call_state_proxy.dart'; +import '../../../utils/voip/group_call_session_state.dart'; +import '../../../utils/voip/livekit_group_call_session_state.dart'; +import '../../../widgets/avatar.dart'; +import 'call_timer.dart'; +import 'stream_view.dart'; + +class CallOverlay extends StatefulWidget { + final CallStateProxy callStateProxy; + final VoipPlugin voipPlugin; + const CallOverlay({ + super.key, + required this.callStateProxy, + required this.voipPlugin, + }); + + @override + State createState() => _CallOverlayState(); +} + +class _CallOverlayState extends State { + List screenSharingStreams = []; + List userMediaStreams = []; + WrappedMediaStream? get primaryScreenShare => screenSharingStreams.first; + + late bool isGroupCall; + + BuildContext get globalContext => FluffyChatApp.appGlobalKey.currentContext!; + void setupCall() { + isGroupCall = widget.callStateProxy is GroupCallSessionState || + widget.callStateProxy is LiveKitGroupCallSessionState; + + p2pCallConnecting = !widget.callStateProxy.connected && + !widget.callStateProxy.ended && + !isGroupCall; + + remoteUser = + Provider.of(globalContext, listen: false).remoteUserInCall; + + userMediaStreams = List.from(widget.callStateProxy.userMediaStreams); + + screenSharingStreams = + List.from(widget.callStateProxy.screenSharingStreams); + + widget.callStateProxy.onUpdateViewCallback(() { + if (mounted) setState(() {}); + }); + } + + late bool p2pCallConnecting; + bool hovering = false; + late User? remoteUser; + + void toCallAndRemovePopup() { + Provider.of(globalContext, listen: false).bannerClickedOnPath = + FluffyChatApp.router.routerDelegate.currentConfiguration.uri.toString(); + + FluffyChatApp.router.go('/rooms/${widget.callStateProxy.room.id}/call'); + + widget.voipPlugin.removeCallPopupOverlay(); + } + + Future handleAnswerButtonClick() async { + try { + await widget.callStateProxy.answer(); + } catch (e) { + Logs().e('answer failed?', e); + } + toCallAndRemovePopup(); + } + + Future handleHangupButtonClick() async { + try { + await widget.callStateProxy.hangup(); + } catch (e) { + Logs().e('hangup failed?', e); + } + } + + @override + Widget build(BuildContext context) { + /// why call this per build and not initState? widget can close/open multiple + /// times so initState is called multiple times, having it in the build to avoid confusion + /// state is stored in a global variable + setupCall(); + + return SafeArea( + child: p2pCallConnecting + ? Align( + heightFactor: 1.0, + alignment: Alignment.center, + child: SizedBox( + height: 360, + width: 360, + child: Material( + color: Colors.black, + borderRadius: const BorderRadius.all(Radius.circular(20)), + child: Container( + decoration: BoxDecoration( + color: Colors.white.withOpacity(0.16), + border: Border.all(), + borderRadius: const BorderRadius.all(Radius.circular(20)), + ), + child: remoteUser == null + ? const Center(child: CircularProgressIndicator()) + : Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + const SizedBox( + height: 16.0, + ), + Padding( + padding: const EdgeInsets.symmetric( + horizontal: 16.0, + ), + child: Row( + children: [ + if (widget.callStateProxy.type == + VoipType.kVoice) + Icon( + Icons.call, + color: Colors.white.withOpacity(0.6), + size: 21, + ) + else + Icon( + Icons.videocam, + color: Colors.white.withOpacity(0.6), + size: 21, + ), + const SizedBox( + width: 12.0, + ), + Text( + widget.voipPlugin.getCallStateSuffix( + widget.callStateProxy, + context, + ), + style: TextStyle( + color: Colors.white.withOpacity(0.6), + ), + ), + const Spacer(), + IconButton( + onPressed: toCallAndRemovePopup, + icon: const Icon( + Icons.maximize, + color: Colors.white, + ), + ), + const SizedBox( + width: 12.0, + ), + ], + ), + ), + const SizedBox( + height: 32.0, + ), + Avatar( + mxContent: remoteUser!.avatarUrl, + name: remoteUser!.displayName.toString(), + size: 96, + fontSize: 16, + client: widget.callStateProxy.client, + ), + const SizedBox( + height: 24.0, + ), + Text( + remoteUser!.displayName.toString(), + style: Theme.of(context) + .textTheme + .bodyLarge! + .copyWith( + fontWeight: FontWeight.bold, + ), + ), + const SizedBox( + height: 4.0, + ), + Text( + remoteUser!.id.domain.toString(), + ), + const SizedBox( + height: 24.0, + ), + Row( + mainAxisAlignment: MainAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + InkWell( + onTap: handleHangupButtonClick, + child: Container( + height: 56, + width: 64, + decoration: BoxDecoration( + color: + Theme.of(context).colorScheme.error, + border: Border.all(), + borderRadius: const BorderRadius.all( + Radius.circular(8), + ), + ), + child: const Icon( + Icons.call_end, + color: Colors.red, + ), + ), + ), + const SizedBox( + width: 16.0, + ), + InkWell( + onTap: handleAnswerButtonClick, + child: Container( + height: 56, + width: 64, + decoration: BoxDecoration( + color: Colors.green, + border: Border.all(), + borderRadius: const BorderRadius.all( + Radius.circular(8), + ), + ), + child: Icon( + widget.callStateProxy.type == + VoipType.kVoice + ? Icons.call + : Icons.videocam, + color: Colors.green, + ), + ), + ), + ], + ), + ], + ), + ), + ), + ), + ) + : Align( + heightFactor: 1.0, + alignment: Alignment.bottomRight, + child: Container( + margin: const EdgeInsets.only( + bottom: 74.0, + right: 8.0, + ), + height: 300, + width: 300, + child: Material( + color: Colors.black, + borderRadius: const BorderRadius.all(Radius.circular(12)), + child: Container( + decoration: BoxDecoration( + color: Colors.white.withOpacity(0.16), + border: Border.all(), + borderRadius: const BorderRadius.all(Radius.circular(12)), + ), + child: InkWell( + enableFeedback: false, + onTap: toCallAndRemovePopup, + onHover: (value) { + setState(() { + hovering = value; + }); + }, + child: screenSharingStreams.isEmpty && + userMediaStreams.isEmpty + ? const Center(child: CircularProgressIndicator()) + : Stack( + children: [ + StreamView( + highLight: true, + wrappedStream: screenSharingStreams.isNotEmpty + ? screenSharingStreams.first + : userMediaStreams.first, + avatarSize: 80, + avatarTextSize: 48, + avatarBorderRadius: 16, + ), + if (hovering) + Align( + alignment: Alignment.bottomCenter, + child: Container( + height: 64, + width: 300, + margin: const EdgeInsets.only( + left: 8.0, + right: 8.0, + bottom: 8.0, + ), + decoration: BoxDecoration( + color: Colors.black, + border: Border.all(), + borderRadius: const BorderRadius.all( + Radius.circular(12), + ), + ), + child: Row( + mainAxisAlignment: + MainAxisAlignment.start, + crossAxisAlignment: + CrossAxisAlignment.center, + children: [ + const SizedBox( + width: 12.0, + ), + Column( + mainAxisAlignment: + MainAxisAlignment.center, + crossAxisAlignment: + CrossAxisAlignment.start, + children: [ + Text( + widget.callStateProxy + .displayName ?? + L10n.of(context)!.call, + style: Theme.of(context) + .textTheme + .titleMedium! + .copyWith( + fontWeight: + FontWeight.bold, + ), + ), + const SizedBox( + height: 4.0, + ), + CallTimer( + appBar: false, + proxy: widget.callStateProxy, + voipPlugin: widget.voipPlugin, + overrideTextStyle: + Theme.of(context) + .textTheme + .bodySmall!, + ), + ], + ), + const Spacer(), + IconButton( + onPressed: toCallAndRemovePopup, + icon: const Icon( + Icons.maximize, + color: Colors.white, + ), + ), + const SizedBox( + width: 12.0, + ), + ], + ), + ), + ), + ], + ), + ), + ), + ), + ), + ), + ); + } +} diff --git a/lib/pages/voip/widgets/call_timer.dart b/lib/pages/voip/widgets/call_timer.dart new file mode 100644 index 0000000000..e42f422cf1 --- /dev/null +++ b/lib/pages/voip/widgets/call_timer.dart @@ -0,0 +1,45 @@ +import 'package:flutter/material.dart'; + +import 'package:fluffychat/utils/format_time_helper.dart'; +import 'package:fluffychat/utils/voip/voip_plugin.dart'; +import '../../../utils/voip/call_state_proxy.dart'; + +class CallTimer extends StatelessWidget { + final CallStateProxy proxy; + final VoipPlugin voipPlugin; + final bool appBar; + final TextStyle? overrideTextStyle; + final String? appendText; + const CallTimer({ + super.key, + required this.voipPlugin, + required this.appBar, + this.overrideTextStyle, + this.appendText, + required this.proxy, + }); + + @override + Widget build(BuildContext context) { + return StreamBuilder( + stream: Stream.periodic(const Duration(seconds: 1)), + builder: (context, snapshot) { + final ts = FormatTimeHelper.formatHHMMSS( + ((DateTime.now().millisecondsSinceEpoch - + voipPlugin.connectedTsSinceEpoch - + voipPlugin.onHoldMs) / + 1000) + .floor(), + ); + return Text( + '${appendText?.isEmpty ?? true ? '' : '$appendText '}${proxy.connected ? ts : voipPlugin.getCallStateSuffix(proxy, context)}', + style: overrideTextStyle ?? + Theme.of(context).textTheme.bodyLarge!.copyWith( + color: Colors.white.withOpacity(0.8), + fontSize: appBar ? 12 : 16, + ), + ); + }, + ); + } +} diff --git a/lib/pages/voip/widgets/more_options_listtile.dart b/lib/pages/voip/widgets/more_options_listtile.dart new file mode 100644 index 0000000000..24b5767d33 --- /dev/null +++ b/lib/pages/voip/widgets/more_options_listtile.dart @@ -0,0 +1,44 @@ +import 'package:flutter/material.dart'; + +import 'package:go_router/go_router.dart'; + +class MoreOptionsListTile extends StatelessWidget { + final IconData icon; + final Function onPressed; + final String title; + final bool shouldPopOnPress; + const MoreOptionsListTile({ + super.key, + required this.icon, + required this.onPressed, + required this.title, + this.shouldPopOnPress = false, + }); + + @override + Widget build(BuildContext context) { + return ListTile( + onTap: () async { + await onPressed(); + if (shouldPopOnPress) GoRouter.of(context).pop(); + }, + minLeadingWidth: 1, + leading: Icon( + icon, + color: Colors.black, + ), + title: Text( + title, + style: Theme.of(context) + .textTheme + .bodyLarge! + .copyWith(color: Colors.black), + ), + trailing: const Icon( + Icons.arrow_forward_ios, + color: Colors.black, + size: 16, + ), + ); + } +} diff --git a/lib/pages/voip/widgets/stream_view.dart b/lib/pages/voip/widgets/stream_view.dart new file mode 100644 index 0000000000..b47380531b --- /dev/null +++ b/lib/pages/voip/widgets/stream_view.dart @@ -0,0 +1,169 @@ +import 'package:flutter/material.dart'; + +import 'package:flutter_webrtc/flutter_webrtc.dart'; +import 'package:livekit_client/livekit_client.dart'; +import 'package:matrix/matrix.dart'; + +import '../../../utils/voip/livekit_stream.dart'; +import '../../../widgets/avatar.dart'; + +class StreamView extends StatefulWidget { + final WrappedMediaStream wrappedStream; + final double avatarSize; + final double avatarTextSize; + final double avatarBorderRadius; + final bool showExtendedName; + final bool showName; + final bool isVoiceOnly; + final bool highLight; + const StreamView({ + super.key, + required this.wrappedStream, + this.isVoiceOnly = false, + this.showName = false, + this.highLight = false, + this.avatarSize = 44, + this.avatarTextSize = 18, + this.avatarBorderRadius = 8.0, + this.showExtendedName = false, + }); + + @override + State createState() => _StreamViewState(); +} + +class _StreamViewState extends State { + Uri? get avatarUrl => widget.wrappedStream.getUser().avatarUrl; + + String? get displayName => widget.wrappedStream.displayName; + + String get avatarName => widget.wrappedStream.avatarName; + + bool get isLocal => widget.wrappedStream.isLocal(); + + bool get isLivekit => widget.wrappedStream is LivekitParticipantStream; + + bool get isEncrypted => + isLivekit && + (widget.wrappedStream as LivekitParticipantStream).isEncrypted; + + VideoTrack? get videoTrack => isLivekit + ? (widget.wrappedStream as LivekitParticipantStream).lkVideoTrack() + : null; + + bool get mirrored => + widget.wrappedStream.isLocal() && + widget.wrappedStream.purpose == SDPStreamMetadataPurpose.Usermedia; + + bool get isScreenSharing => + widget.wrappedStream.purpose == SDPStreamMetadataPurpose.Screenshare; + + @override + void initState() { + widget.wrappedStream.onMuteStateChanged.stream.listen((stream) { + if (mounted) { + setState(() {}); + } + }); + super.initState(); + } + + @override + Widget build(BuildContext context) { + return Container( + decoration: BoxDecoration( + border: Border.all( + width: widget.highLight && !widget.wrappedStream.audioMuted ? 2 : 0, + color: Theme.of(context).colorScheme.primary, + strokeAlign: BorderSide.strokeAlignInside, + style: widget.highLight && !widget.wrappedStream.audioMuted + ? BorderStyle.solid + : BorderStyle.none, + ), + borderRadius: BorderRadius.circular(8.0), + color: widget.isVoiceOnly + ? Colors.black.withOpacity(0.9) + : Colors.white.withOpacity(0.18), + ), + child: Stack( + alignment: Alignment.center, + children: [ + if (widget.wrappedStream.videoMuted) + Container( + color: Colors.transparent, + ), + if (!widget.wrappedStream.videoMuted) + isLivekit && videoTrack != null + ? VideoTrackRenderer( + videoTrack!, + fit: RTCVideoViewObjectFit.RTCVideoViewObjectFitContain, + ) + : RTCVideoView( + widget.wrappedStream.renderer as RTCVideoRenderer, + mirror: mirrored, + objectFit: + RTCVideoViewObjectFit.RTCVideoViewObjectFitContain, + ), + if (widget.wrappedStream.videoMuted) + Builder( + builder: (context) { + return Avatar( + mxContent: avatarUrl, + name: displayName ?? '', + size: widget.avatarSize, + fontSize: widget.avatarTextSize, + client: widget.wrappedStream.client, + ); + }, + ), + if (widget.showName) + Positioned( + left: 4.0, + bottom: 4.0, + child: !widget.showExtendedName + ? Text(displayName.toString()) + : Container( + decoration: BoxDecoration( + color: + widget.highLight && !widget.wrappedStream.audioMuted + ? Theme.of(context).colorScheme.primary + : Colors.black.withOpacity(0.4), + borderRadius: BorderRadius.circular( + 4.0, + ), + ), + child: Padding( + padding: const EdgeInsets.all(12), + child: Row( + children: [ + Icon( + widget.wrappedStream.audioMuted + ? Icons.mic_off + : Icons.mic, + size: 15, + color: Colors.white, + ), + const SizedBox(width: 4), + Text( + displayName.toString(), + style: const TextStyle( + color: Colors.white, + fontSize: 12, + ), + ), + const SizedBox(width: 4), + Icon( + isEncrypted ? Icons.lock : Icons.lock_open, + size: 15, + color: isEncrypted ? Colors.green : Colors.red, + ), + ], + ), + ), + ), + ), + ], + ), + ); + } +} diff --git a/lib/utils/app_state.dart b/lib/utils/app_state.dart new file mode 100644 index 0000000000..14d05369e5 --- /dev/null +++ b/lib/utils/app_state.dart @@ -0,0 +1,74 @@ +import 'package:flutter/material.dart'; + +import 'package:matrix/matrix.dart'; + +import '../../utils/voip/call_state_proxy.dart'; + +class AppState extends ChangeNotifier { + bool? wipe; + String? welcomeMessage; + Profile? userProfile; + + /// set using `setupCallAndOpenCallPage` and manually on incoming call rn. + CallStateProxy? proxy; + Function? confirmPINCallback; + + /// used to set the remote caller user to show incoming/outgoing call screens + /// before a pc is created. + User? remoteUserInCall; + + /// used by the call screen minimize button to navigate back to the last + /// screen where banner was tapped + String? bannerClickedOnPath; + + /// a banner widget which can be set using the `setGlobalBanner` and removed + /// using the `removeGlobalBanner` methods. Is shown on all screens + Widget? globalBanner; + + /// similar to `globalBanner` but shown below it if both banners are set. + /// In non-column mode, it's only shown at the top of `NavScaffold` and nowhere else + Widget? secondaryGlobalBanner; + + /// The [eventId] which has been searched by user. Only used in three column mode. + String? searchedEventId; + + /// stores a list of the room ids where user clicked to hide the join group call + /// banner + List hideGroupCallBanner = []; + void addRoomToHideBanner(Room room) { + hideGroupCallBanner.add(room.id); + notifyListeners(); + } + + /// Use these to set banner anytime in the app + void setGlobalBanner(Widget banner, {bool isSecondary = false}) { + if (isSecondary) { + secondaryGlobalBanner = banner; + } else { + globalBanner = banner; + } + notifyListeners(); + } + + /// Use these to remove the global banner + void removeGlobalBanner({bool isSecondary = false}) { + if (isSecondary) { + secondaryGlobalBanner = null; + } else { + globalBanner = null; + } + notifyListeners(); + } + + /// Use to set [searchedEventId]. Only use in three column mode. + void setSearchedEventId(String eventId) { + searchedEventId = eventId; + notifyListeners(); + } + + /// Use to remove [searchedEventId]. Only use in three column mode. + void removeSearchedEventId() { + searchedEventId = null; + notifyListeners(); + } +} diff --git a/lib/utils/format_time_helper.dart b/lib/utils/format_time_helper.dart new file mode 100644 index 0000000000..5a8cc25d50 --- /dev/null +++ b/lib/utils/format_time_helper.dart @@ -0,0 +1,35 @@ +import 'package:duration/duration.dart'; +import 'package:duration/locale.dart'; +import 'package:intl/intl.dart'; + +class FormatTimeHelper { + static String formatHHMMSS(int seconds) { + if (seconds != 0) { + final int hours = (seconds / 3600).truncate(); + seconds = (seconds % 3600).truncate(); + final int minutes = (seconds / 60).truncate(); + + final String hoursStr = (hours).toString().padLeft(2, '0'); + final String minutesStr = (minutes).toString().padLeft(2, '0'); + final String secondsStr = (seconds % 60).toString().padLeft(2, '0'); + if (hours == 0) { + return "$minutesStr:$secondsStr"; + } + return "$hoursStr:$minutesStr:$secondsStr"; + } else { + return " "; + } + } + + /// returns seconds in a prettier format supporting localizations + /// Use l10n.localeName to pass localeName + static String prettierTime(int seconds, String localeName) { + return prettyDuration( + Duration(seconds: seconds), + locale: DurationLocale.fromLanguageCode( + Intl.getCurrentLocale(), + ) ?? + DurationLocale.fromLanguageCode(localeName)!, + ); + } +} diff --git a/lib/utils/localization_for_locale_extension.dart b/lib/utils/localization_for_locale_extension.dart new file mode 100644 index 0000000000..fd4a9de318 --- /dev/null +++ b/lib/utils/localization_for_locale_extension.dart @@ -0,0 +1,32 @@ +/* + * Famedly + * Copyright (C) 2019, 2020, 2021 Famedly GmbH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +import 'dart:ui'; + +import 'package:flutter/material.dart'; + +import 'package:flutter_gen/gen_l10n/l10n.dart'; + +extension LocalizationForLocaleExtension on PlatformDispatcher { + /// Loads the right L10n delegate for the current locale or falls back to a default otherwise. This reuses the Flutter locale selection algorithm. Usually you should not call this. Only do that if you have no access to a build context. + Future loadL10n() { + final locale = basicLocaleListResolution(locales, L10n.supportedLocales); + + return L10n.delegate.load(locale); + } +} diff --git a/lib/utils/push_helper.dart b/lib/utils/push_helper.dart index 2b4b561bf1..6ed1311fb7 100644 --- a/lib/utils/push_helper.dart +++ b/lib/utils/push_helper.dart @@ -15,7 +15,6 @@ import 'package:fluffychat/config/setting_keys.dart'; import 'package:fluffychat/utils/client_manager.dart'; import 'package:fluffychat/utils/matrix_sdk_extensions/matrix_locals.dart'; import 'package:fluffychat/utils/platform_infos.dart'; -import 'package:fluffychat/utils/voip/callkeep_manager.dart'; Future pushHelper( PushNotification notification, { @@ -132,12 +131,6 @@ Future _tryPushHelper( client.backgroundSync = true; } - if (event.type == EventTypes.CallInvite) { - CallKeepManager().initialize(); - } else if (event.type == EventTypes.CallHangup) { - client.backgroundSync = false; - } - if (event.type.startsWith('m.call') && event.type != EventTypes.CallInvite) { Logs().v('Push message is a m.call but not invite. Do not display.'); return; diff --git a/lib/utils/voip/call_session_state.dart b/lib/utils/voip/call_session_state.dart new file mode 100644 index 0000000000..53c62ba178 --- /dev/null +++ b/lib/utils/voip/call_session_state.dart @@ -0,0 +1,306 @@ +import 'dart:async'; + +import 'package:all_sensors/all_sensors.dart'; +import 'package:just_audio/just_audio.dart'; +import 'package:matrix/matrix.dart'; +import 'package:vibration/vibration.dart'; +import 'package:wakelock_plus/wakelock_plus.dart'; + +import 'package:fluffychat/utils/platform_infos.dart'; +import 'package:fluffychat/utils/voip/voip_plugin.dart'; +import 'call_state_proxy.dart'; + +// maybe make it a singleton? + +class CallSessionState implements CallStateProxy { + final CallSession call; + Function()? callback; + final VoipPlugin voipPlugin; + AudioPlayer? _outgoingCallAudioPlayer; + CallSessionState(this.call, this.voipPlugin) { + StreamSubscription? proximitySubscription; + int onHold = 0; + int onUnhold = 0; + call.onCallEventChanged.stream.listen((CallEvent event) async { + Logs().d('[CallSessionState] onCallEventChanged ${event.toString()}'); + // if (event == CallEvent.kError) { + // await ErrorReporter( + // call.lastError, + // StackTrace.current, + // level: SentryLevel.error, + // ).onErrorCallback(error); + // } + + if (event == CallEvent.kState || + event == CallEvent.kFeedsChanged || + event == CallEvent.kLocalHoldUnhold || + event == CallEvent.kRemoteHoldUnhold) { + if (event == CallEvent.kFeedsChanged) { + await call.tryRemoveStopedStreams(); + } else if ({CallEvent.kLocalHoldUnhold, CallEvent.kRemoteHoldUnhold} + .contains(event)) { + if (callOnHold) { + onHold = DateTime.now().millisecondsSinceEpoch; + } else { + onUnhold = DateTime.now().millisecondsSinceEpoch; + voipPlugin.onHoldMs = voipPlugin.onHoldMs + (onUnhold - onHold); + } + Logs().w(voipPlugin.onHoldMs.toString()); + } + callback?.call(); + } + }); + + call.onCallStateChanged.stream.listen((state) async { + Logs().d('[CallSessionState] onCallStateChanged ${state.toString()}'); + + if (call.isOutgoing) { + if (state == CallState.kInviteSent) { + final player = _outgoingCallAudioPlayer = AudioPlayer(); + await player.setLoopMode(LoopMode.all); + await player.setAudioSource( + AudioSource.asset('assets/sounds/call.ogg'), + initialIndex: 0, + initialPosition: Duration.zero, + ); + await player.play(); + } else if ({ + CallState.kConnecting, + CallState.kConnected, + CallState.kEnded, + }.contains(state)) { + await _outgoingCallAudioPlayer?.stop(); + _outgoingCallAudioPlayer = null; + } + } + + if (state == CallState.kConnected) { + voipPlugin.connectedTsSinceEpoch = + DateTime.now().millisecondsSinceEpoch; + if (PlatformInfos.isMobile) { + if (voiceonly) { + // once you start listening to proximity stream remember to cancel it or + // proximity sensor will keep turning off screen + proximitySubscription = + proximityEvents!.listen((ProximityEvent event) {}); + } else { + await WakelockPlus.enable(); + } + await vibrate(); + } + } else if (state == CallState.kEnded) { + voipPlugin.connectedTsSinceEpoch = 0; + if (PlatformInfos.isMobile) { + if (voiceonly) { + await proximitySubscription?.cancel(); + } else { + await WakelockPlus.disable(); + } + await vibrate(); + } + } + callback?.call(); + }); + } + + Future vibrate() async { + try { + await Vibration.vibrate(duration: 100); + } catch (e) { + Logs().e('[Dialer] could not vibrate for call updates'); + } + } + + @override + Stream get callEventStream => call.onCallEventChanged.stream; + @override + Stream get callStateStream => call.onCallStateChanged.stream; + @override + bool get voiceonly => + userMediaStreams.every((stream) => stream.videoMuted) && + screenSharingStreams.isEmpty; + + @override + bool get connecting => call.state == CallState.kConnecting; + + @override + bool get answering => call.state == CallState.kCreateAnswer; + + @override + bool get connected => call.state == CallState.kConnected; + + @override + bool get ended => call.state == CallState.kEnded; + + @override + bool get isOutgoing => call.isOutgoing; + + @override + bool get ringingPlay => call.state == CallState.kInviteSent; + + @override + Future answer() async { + await call.answer(); + callback?.call(); + } + + @override + Future enter(WrappedMediaStream stream) async { + // TODO: implement enter + } + + @override + Future hangup() async { + if ({CallState.kRinging, CallState.kFledgling}.contains(call.state)) { + await call.reject(); + } else { + await call.hangup(); + } + callback?.call(); + } + + @override + bool get isLocalVideoMuted => call.isLocalVideoMuted; + + @override + bool get isMicrophoneMuted => call.isMicrophoneMuted; + + @override + bool get localHold => call.localHold; + + @override + bool get remoteOnHold => call.remoteOnHold; + + @override + bool get isScreensharingEnabled => call.screensharingEnabled; + + @override + bool get callOnHold => call.localHold || call.remoteOnHold; + + @override + Future setLocalVideoMuted(bool muted) async { + await call.setLocalVideoMuted(muted); + callback?.call(); + } + + @override + Future setMicrophoneMuted(bool muted) async { + await call.setMicrophoneMuted(muted); + // TODO(Nico): Refactor this to be more granular + callback?.call(); + } + + @override + Future setRemoteOnHold(bool onHold) async { + await call.setRemoteOnHold(onHold); + callback?.call(); + } + + @override + Future setScreensharingEnabled(bool enabled) async { + await call.setScreensharingEnabled(enabled); + callback?.call(); + } + + @override + String get callState { + switch (call.state) { + case CallState.kCreateAnswer: + case CallState.kFledgling: + case CallState.kWaitLocalMedia: + case CallState.kCreateOffer: + break; + case CallState.kRinging: + state = 'Ringing'; + break; + case CallState.kInviteSent: + state = 'Invite Sent'; + break; + case CallState.kConnecting: + state = 'Connecting'; + break; + case CallState.kConnected: + state = 'Connected'; + break; + case CallState.kEnded: + state = 'Ended'; + break; + } + return state; + } + + String state = 'New Call'; + @override + WrappedMediaStream? get localUserMediaStream => call.localUserMediaStream; + @override + WrappedMediaStream? get localScreenSharingStream => + call.localScreenSharingStream; + + @override + List get screenSharingStreams { + final streams = []; + if (connected) { + if (call.remoteScreenSharingStream != null) { + streams.add(call.remoteScreenSharingStream!); + } + if (call.localScreenSharingStream != null) { + streams.add(call.localScreenSharingStream!); + } + } + return streams; + } + + @override + List get userMediaStreams { + final streams = []; + if (connected) { + if (call.remoteUserMediaStream != null) { + streams.add(call.remoteUserMediaStream!); + } + if (call.localUserMediaStream != null) { + streams.add(call.localUserMediaStream!); + } + } + return streams; + } + + @override + WrappedMediaStream? get primaryStream { + if (screenSharingStreams.isNotEmpty) { + return screenSharingStreams.first; + } + + if (userMediaStreams.isNotEmpty) { + return userMediaStreams.first; + } + + if (!connected) { + return call.type == CallType.kVoice && !call.isOutgoing + ? call.remoteUserMediaStream // show remote avatar on incoming call + : call.localUserMediaStream; + } + + return call.localScreenSharingStream ?? call.localUserMediaStream; + } + + @override + GroupCallSession? get groupCall => null; + + @override + String? get displayName => call.room.getLocalizedDisplayname(); + + @override + void onUpdateViewCallback(Function() handler) { + callback = handler; + } + + @override + Room get room => call.room; + + @override + Client get client => call.client; + + @override + VoipType get type => + call.type == CallType.kVideo ? VoipType.kVideo : VoipType.kVoice; +} diff --git a/lib/utils/voip/call_state_proxy.dart b/lib/utils/voip/call_state_proxy.dart new file mode 100644 index 0000000000..f784e1d190 --- /dev/null +++ b/lib/utils/voip/call_state_proxy.dart @@ -0,0 +1,53 @@ +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/utils/voip/voip_plugin.dart'; + +abstract class CallStateProxy { + String? get displayName; + bool get isMicrophoneMuted; + bool get isLocalVideoMuted; + bool get isScreensharingEnabled; + bool get localHold; + bool get remoteOnHold; + bool get answering; + bool get voiceonly; + bool get connecting; + bool get connected; + bool get ended; + bool get callOnHold; + bool get isOutgoing; + bool get ringingPlay; + String get callState; + Room get room; + Stream get callEventStream; + Stream get callStateStream; + Client get client; + VoipType get type; + GroupCallSession? get groupCall; + + Future answer(); + + Future hangup(); + + Future enter(WrappedMediaStream stream); + + Future setMicrophoneMuted(bool muted); + + Future setLocalVideoMuted(bool muted); + + Future setScreensharingEnabled(bool enabled); + + Future setRemoteOnHold(bool onHold); + + WrappedMediaStream? get localUserMediaStream; + + WrappedMediaStream? get localScreenSharingStream; + + WrappedMediaStream? get primaryStream; + + List get screenSharingStreams; + + List get userMediaStreams; + + void onUpdateViewCallback(Function() callback); +} diff --git a/lib/utils/voip/callkeep_manager.dart b/lib/utils/voip/callkeep_manager.dart deleted file mode 100644 index 6de7cb6e3a..0000000000 --- a/lib/utils/voip/callkeep_manager.dart +++ /dev/null @@ -1,367 +0,0 @@ -import 'dart:async'; - -import 'package:flutter/material.dart'; - -import 'package:callkeep/callkeep.dart'; -import 'package:flutter_foreground_task/flutter_foreground_task.dart'; -import 'package:flutter_gen/gen_l10n/l10n.dart'; -import 'package:matrix/matrix.dart'; -import 'package:permission_handler/permission_handler.dart'; - -import 'package:fluffychat/utils/voip_plugin.dart'; - -class CallKeeper { - CallKeeper(this.callKeepManager, this.call) { - call.onCallStateChanged.stream.listen(_handleCallState); - } - - CallKeepManager callKeepManager; - bool? held = false; - bool? muted = false; - bool connected = false; - CallSession call; - - // update native caller to show what remote user has done. - void _handleCallState(CallState state) { - Logs().i('CallKeepManager::handleCallState: ${state.toString()}'); - switch (state) { - case CallState.kConnecting: - Logs().v('callkeep connecting'); - break; - case CallState.kConnected: - Logs().v('callkeep connected'); - if (!connected) { - callKeepManager.answer(call.callId); - } else { - callKeepManager.setMutedCall(call.callId, false); - callKeepManager.setOnHold(call.callId, false); - } - break; - case CallState.kEnded: - callKeepManager.hangup(call.callId); - break; - /* TODO: - case CallState.kMuted: - callKeepManager.setMutedCall(uuid, true); - break; - case CallState.kHeld: - callKeepManager.setOnHold(uuid, true); - break; - */ - case CallState.kFledgling: - // TODO: Handle this case. - break; - case CallState.kInviteSent: - // TODO: Handle this case. - break; - case CallState.kWaitLocalMedia: - // TODO: Handle this case. - break; - case CallState.kCreateOffer: - // TODO: Handle this case. - break; - case CallState.kCreateAnswer: - // TODO: Handle this case. - break; - case CallState.kRinging: - // TODO: Handle this case. - break; - } - } -} - -Map calls = {}; - -class CallKeepManager { - factory CallKeepManager() { - return _instance; - } - - CallKeepManager._internal() { - _callKeep = FlutterCallkeep(); - } - - static final CallKeepManager _instance = CallKeepManager._internal(); - - late FlutterCallkeep _callKeep; - VoipPlugin? _voipPlugin; - - String get appName => 'FluffyChat'; - - Future get hasPhoneAccountEnabled async => - await _callKeep.hasPhoneAccount(); - - Map get alertOptions => { - 'alertTitle': 'Permissions required', - 'alertDescription': - 'Allow $appName to register as a calling account? This will allow calls to be handled by the native android dialer.', - 'cancelButton': 'Cancel', - 'okButton': 'ok', - // Required to get audio in background when using Android 11 - 'foregroundService': { - 'channelId': 'com.fluffy.fluffychat', - 'channelName': 'Foreground service for my app', - 'notificationTitle': '$appName is running on background', - 'notificationIcon': 'mipmap/ic_notification_launcher', - }, - 'additionalPermissions': [''], - }; - bool setupDone = false; - - Future showCallkitIncoming(CallSession call) async { - if (!setupDone) { - await _callKeep.setup( - null, - { - 'ios': { - 'appName': appName, - }, - 'android': alertOptions, - }, - backgroundMode: true, - ); - } - setupDone = true; - await displayIncomingCall(call); - call.onCallStateChanged.stream.listen((state) { - if (state == CallState.kEnded) { - _callKeep.endAllCalls(); - } - }); - call.onCallEventChanged.stream.listen( - (event) { - if (event == CallEvent.kLocalHoldUnhold) { - Logs().i( - 'Call hold event: local ${call.localHold}, remote ${call.remoteOnHold}', - ); - } - }, - ); - } - - void removeCall(String? callUUID) { - calls.remove(callUUID); - } - - void addCall(String? callUUID, CallKeeper callKeeper) { - if (calls.containsKey(callUUID)) return; - calls[callUUID] = callKeeper; - } - - void setCallHeld(String? callUUID, bool? held) { - calls[callUUID]!.held = held; - } - - void setCallMuted(String? callUUID, bool? muted) { - calls[callUUID]!.muted = muted; - } - - void didDisplayIncomingCall(CallKeepDidDisplayIncomingCall event) { - final callUUID = event.callUUID; - final number = event.handle; - Logs().v('[displayIncomingCall] $callUUID number: $number'); - // addCall(callUUID, CallKeeper(this null)); - } - - void onPushKitToken(CallKeepPushKitToken event) { - Logs().v('[onPushKitToken] token => ${event.token}'); - } - - Future initialize() async { - _callKeep.on(CallKeepPerformAnswerCallAction(), answerCall); - _callKeep.on(CallKeepDidPerformDTMFAction(), didPerformDTMFAction); - _callKeep.on( - CallKeepDidReceiveStartCallAction(), - didReceiveStartCallAction, - ); - _callKeep.on(CallKeepDidToggleHoldAction(), didToggleHoldCallAction); - _callKeep.on( - CallKeepDidPerformSetMutedCallAction(), - didPerformSetMutedCallAction, - ); - _callKeep.on(CallKeepPerformEndCallAction(), endCall); - _callKeep.on(CallKeepPushKitToken(), onPushKitToken); - _callKeep.on(CallKeepDidDisplayIncomingCall(), didDisplayIncomingCall); - Logs().i('[VOIP] Initialized'); - } - - Future hangup(String callUUID) async { - await _callKeep.endCall(callUUID); - removeCall(callUUID); - } - - Future reject(String callUUID) async { - await _callKeep.rejectCall(callUUID); - } - - Future answer(String? callUUID) async { - final keeper = calls[callUUID]!; - if (!keeper.connected) { - await _callKeep.answerIncomingCall(callUUID!); - keeper.connected = true; - } - } - - Future setOnHold(String callUUID, bool held) async { - await _callKeep.setOnHold(callUUID, held); - setCallHeld(callUUID, held); - } - - Future setMutedCall(String callUUID, bool muted) async { - await _callKeep.setMutedCall(callUUID, muted); - setCallMuted(callUUID, muted); - } - - Future updateDisplay(String callUUID) async { - // Workaround because Android doesn't display well displayName, se we have to switch ... - if (isIOS) { - await _callKeep.updateDisplay( - callUUID, - displayName: 'New Name', - handle: callUUID, - ); - } else { - await _callKeep.updateDisplay( - callUUID, - displayName: callUUID, - handle: 'New Name', - ); - } - } - - Future displayIncomingCall(CallSession call) async { - final callKeeper = CallKeeper(this, call); - addCall(call.callId, callKeeper); - await _callKeep.displayIncomingCall( - call.callId, - '${call.room.getLocalizedDisplayname()} (FluffyChat)', - localizedCallerName: - '${call.room.getLocalizedDisplayname()} (FluffyChat)', - handleType: 'number', - hasVideo: call.type == CallType.kVideo, - ); - return callKeeper; - } - - Future checkoutPhoneAccountSetting(BuildContext context) async { - showDialog( - context: context, - barrierDismissible: true, - useRootNavigator: false, - builder: (_) => AlertDialog( - title: Text(L10n.of(context)!.callingPermissions), - content: Column( - mainAxisSize: MainAxisSize.min, - children: [ - ListTile( - onTap: () => openCallingAccountsPage(context), - title: Text(L10n.of(context)!.callingAccount), - subtitle: Text(L10n.of(context)!.callingAccountDetails), - trailing: const Icon(Icons.phone), - ), - const Divider(), - ListTile( - onTap: () => FlutterForegroundTask.openSystemAlertWindowSettings( - forceOpen: true, - ), - title: Text(L10n.of(context)!.appearOnTop), - subtitle: Text(L10n.of(context)!.appearOnTopDetails), - trailing: const Icon(Icons.file_upload_rounded), - ), - const Divider(), - ListTile( - onTap: () => openAppSettings(), - title: Text(L10n.of(context)!.otherCallingPermissions), - trailing: const Icon(Icons.mic), - ), - ], - ), - ), - ); - } - - void openCallingAccountsPage(BuildContext context) async { - await _callKeep.setup(context, { - 'ios': { - 'appName': appName, - }, - 'android': alertOptions, - }); - final hasPhoneAccount = await _callKeep.hasPhoneAccount(); - Logs().e(hasPhoneAccount.toString()); - if (!hasPhoneAccount) { - await _callKeep.hasDefaultPhoneAccount(context, alertOptions); - } else { - await _callKeep.openPhoneAccounts(); - } - } - - /// CallActions. - Future answerCall(CallKeepPerformAnswerCallAction event) async { - final callUUID = event.callUUID; - final keeper = calls[event.callUUID]!; - if (!keeper.connected) { - Logs().e('answered'); - // Answer Call - keeper.call.answer(); - keeper.connected = true; - } - Timer(const Duration(seconds: 1), () { - _callKeep.setCurrentCallActive(callUUID!); - }); - } - - Future endCall(CallKeepPerformEndCallAction event) async { - final keeper = calls[event.callUUID]; - keeper?.call.hangup(); - removeCall(event.callUUID); - } - - Future didPerformDTMFAction(CallKeepDidPerformDTMFAction event) async { - final keeper = calls[event.callUUID]!; - keeper.call.sendDTMF(event.digits!); - } - - Future didReceiveStartCallAction( - CallKeepDidReceiveStartCallAction event, - ) async { - if (event.handle == null) { - // @TODO: sometime we receive `didReceiveStartCallAction` with handle` undefined` - return; - } - final callUUID = event.callUUID!; - if (event.callUUID == null) { - final call = - await _voipPlugin!.voip.inviteToCall(event.handle!, CallType.kVideo); - addCall(callUUID, CallKeeper(this, call)); - } - await _callKeep.startCall(callUUID, event.handle!, event.handle!); - Timer(const Duration(seconds: 1), () { - _callKeep.setCurrentCallActive(callUUID); - }); - } - - Future didPerformSetMutedCallAction( - CallKeepDidPerformSetMutedCallAction event, - ) async { - final keeper = calls[event.callUUID]; - if (event.muted!) { - keeper!.call.setMicrophoneMuted(true); - } else { - keeper!.call.setMicrophoneMuted(false); - } - setCallMuted(event.callUUID, event.muted); - } - - Future didToggleHoldCallAction( - CallKeepDidToggleHoldAction event, - ) async { - final keeper = calls[event.callUUID]; - if (event.hold!) { - keeper!.call.setRemoteOnHold(true); - } else { - keeper!.call.setRemoteOnHold(false); - } - setCallHeld(event.callUUID, event.hold); - } -} diff --git a/lib/utils/voip/famedly_key_provider_impl.dart b/lib/utils/voip/famedly_key_provider_impl.dart new file mode 100644 index 0000000000..750ba74d0d --- /dev/null +++ b/lib/utils/voip/famedly_key_provider_impl.dart @@ -0,0 +1,65 @@ +import 'dart:typed_data'; + +import 'package:livekit_client/livekit_client.dart' as lk; +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/utils/voip/voip_plugin.dart'; + +class FamedlyAppEncryptionKeyProviderImpl implements EncryptionKeyProvider { + final Client client; + final VoipPlugin voip; + + FamedlyAppEncryptionKeyProviderImpl(this.client, this.voip) { + _initFuture = init(); + } + late Future _initFuture; + + late lk.BaseKeyProvider _keyProvider; + + lk.BaseKeyProvider get keyProvider => _keyProvider; + + Future init() async { + _keyProvider = await lk.BaseKeyProvider.create( + sharedKey: false, + ratchetWindowSize: 16, + failureTolerance: -1, + ); + } + + @override + Future onSetEncryptionKey( + Participant participant, + String key, + int index, + ) async { + await _initFuture; + await _keyProvider.setKey( + key, + keyIndex: index, + participantId: participant.id, + ); + Logs().i( + 'onSetEncryptionKey Set key for ${participant.id}, key = $key, index = $index,', + ); + } + + @override + Future onExportKey(Participant participant, int index) async { + await _initFuture; + final key = await _keyProvider.exportKey(participant.id, index); + Logs().i( + 'onExportKey Got key for ${participant.id}, key = $key, index = $index,', + ); + return key; + } + + @override + Future onRatchetKey(Participant participant, int index) async { + await _initFuture; + final key = await _keyProvider.ratchetKey(participant.id, index); + Logs().i( + 'onRatchetKey Ratched key for ${participant.id}, new key = $key, index = $index,', + ); + return key; + } +} diff --git a/lib/utils/voip/group_call_session_state.dart b/lib/utils/voip/group_call_session_state.dart new file mode 100644 index 0000000000..fc474fbbc1 --- /dev/null +++ b/lib/utils/voip/group_call_session_state.dart @@ -0,0 +1,191 @@ +import 'dart:async'; + +import 'package:matrix/matrix.dart'; +import 'package:vibration/vibration.dart'; +import 'package:wakelock_plus/wakelock_plus.dart'; + +import 'package:fluffychat/utils/platform_infos.dart'; +import 'package:fluffychat/utils/voip/voip_plugin.dart'; +import 'call_state_proxy.dart'; + +class GroupCallSessionState implements CallStateProxy { + Function()? callback; + final GroupCallSession _groupCall; + final VoipPlugin _voipPlugin; + GroupCallSessionState(this._groupCall, this._voipPlugin) { + _groupCall.onGroupCallEvent.stream.listen((event) { + Logs().d('[GroupCallSessionState] onGroupCallEvent ${event.toString()}'); + callback?.call(); + }); + + _groupCall.onGroupCallState.stream.listen((state) async { + Logs().d('[GroupCallSessionState] onGroupCallState ${state.toString()}'); + if (state == GroupCallState.Entered) { + _voipPlugin.connectedTsSinceEpoch = + DateTime.now().millisecondsSinceEpoch; + if (PlatformInfos.isMobile) { + await WakelockPlus.enable(); + await vibrate(); + } + } else if ({ + GroupCallState.LocalCallFeedUninitialized, + GroupCallState.Ended, + }.contains(state)) { + // uninititalized when call not terminated, still has participant + _voipPlugin.connectedTsSinceEpoch = 0; + if (PlatformInfos.isMobile) { + await WakelockPlus.disable(); + await vibrate(); + } + } + callback?.call(); + }); + + _groupCall.onStreamAdd.stream.listen((event) { + Logs().d('[GroupCallSessionState] onStreamAdd ${event.toString()}'); + callback?.call(); + }); + _groupCall.onStreamRemoved.stream.listen((event) { + Logs().d('[GroupCallSessionState] onStreamRemoved ${event.toString()}'); + callback?.call(); + }); + } + + Future vibrate() async { + try { + await Vibration.vibrate(duration: 100); + } catch (e) { + Logs().e('[Dialer] could not vibrate for call updates'); + } + } + + @override + Future answer() async { + // TODO: implement answer + } + + @override + Stream get callEventStream => _groupCall.onGroupCallEvent.stream; + + @override + Stream get callStateStream => _groupCall.onGroupCallState.stream; + + @override + bool get callOnHold => false; + + @override + String get callState => _groupCall.state; + + @override + bool get connected => _groupCall.state == GroupCallState.Entered; + + @override + bool get connecting => _groupCall.state == GroupCallState.Entering; + + @override + bool get answering => _groupCall.state == GroupCallState.Entering; + + @override + GroupCallSession? get groupCall => _groupCall; + + @override + String? get displayName => _groupCall.room.getLocalizedDisplayname(); + + @override + bool get ended => + _groupCall.state == GroupCallState.Ended || + _groupCall.state == GroupCallState.LocalCallFeedUninitialized; + + @override + Future enter(WrappedMediaStream stream) async { + await _groupCall.enter( + stream: stream, + ); + callback?.call(); + } + + @override + Future hangup() async { + await _groupCall.leave(); + callback?.call(); + } + + @override + bool get isLocalVideoMuted => _groupCall.isLocalVideoMuted; + + @override + bool get isMicrophoneMuted => _groupCall.isMicrophoneMuted; + + @override + bool get isOutgoing => false; + + @override + bool get isScreensharingEnabled => _groupCall.isScreensharing(); + + @override + bool get localHold => false; + + @override + WrappedMediaStream? get localScreenSharingStream => + _groupCall.localScreenshareStream; + + @override + WrappedMediaStream? get localUserMediaStream => + _groupCall.localUserMediaStream; + + @override + void onUpdateViewCallback(Function() handler) { + callback = handler; + } + + @override + WrappedMediaStream? get primaryStream => _groupCall.localUserMediaStream; + + @override + bool get remoteOnHold => false; + + @override + bool get ringingPlay => false; + + @override + List get screenSharingStreams => + _groupCall.screenshareStreams; + + @override + List get userMediaStreams => _groupCall.userMediaStreams; + + @override + Future setLocalVideoMuted(bool muted) async { + await _groupCall.setLocalVideoMuted(muted); + callback?.call(); + } + + @override + Future setMicrophoneMuted(bool muted) async { + await _groupCall.setMicrophoneMuted(muted); + callback?.call(); + } + + @override + Future setRemoteOnHold(bool onHold) async { + // TODO: implement setRemoteOnHold + } + + @override + Future setScreensharingEnabled(bool enabled) async { + await _groupCall.setScreensharingEnabled(enabled, ''); + callback?.call(); + } + + @override + bool get voiceonly => false; + + @override + Room get room => _groupCall.room; + + @override + Client get client => _groupCall.client; + + @override + VoipType get type => VoipType.kGroup; +} diff --git a/lib/utils/voip/incoming_call.dart b/lib/utils/voip/incoming_call.dart new file mode 100644 index 0000000000..2515f627a4 --- /dev/null +++ b/lib/utils/voip/incoming_call.dart @@ -0,0 +1,210 @@ +import 'dart:async'; + +import 'package:flutter/material.dart'; + +import 'package:flutter_callkit_incoming/entities/entities.dart'; +import 'package:flutter_callkit_incoming/flutter_callkit_incoming.dart'; +import 'package:flutter_gen/gen_l10n/l10n.dart'; +import 'package:matrix/matrix.dart' hide CallEvent, Event; +import 'package:provider/provider.dart'; +import 'package:uuid/uuid.dart'; + +import 'package:fluffychat/utils/app_state.dart'; +import 'package:fluffychat/utils/localization_for_locale_extension.dart'; +import 'package:fluffychat/utils/voip/voip_plugin.dart'; +import 'package:fluffychat/widgets/fluffy_chat_app.dart'; +import '../../pages/voip/widgets/call_banner.dart'; + +Map calls = {}; + +/// Add uuid extension field for CallSession +extension CallSessionUuidExt on CallSession { + static Map uuids_ = {}; + String get callUUID { + if (uuids_.containsKey(callId)) { + return uuids_[callId]!; + } + final uuid = const Uuid().v4().toString(); + uuids_[callId] = uuid; + return uuid; + } + + void removeUUID() { + uuids_.remove(callId); + } +} + +class CallKeeper { + CallKeeper(this.incomingCallManager, this.call) { + call.onCallStateChanged.stream.listen(_handleCallState); + } + + IncomingCallManager incomingCallManager; + bool? held = false; + bool? muted = false; + bool connected = false; + CallSession call; + + // update native caller to show what remote user has done. + Future _handleCallState(CallState state) async { + Logs().d('CallKeepManager::handleCallState: ${state.toString()}'); + if (state case CallState.kConnected) { + await incomingCallManager.endIncomingCall(call.callUUID); + } else if (state case CallState.kEnded) { + await incomingCallManager.endIncomingCall(call.callUUID); + } + } +} + +class IncomingCallManager { + late VoipPlugin voipPlugin; + factory IncomingCallManager(VoipPlugin voipPlugin) { + _instance.voipPlugin = voipPlugin; + return _instance; + } + + static final IncomingCallManager _instance = IncomingCallManager._internal(); + IncomingCallManager._internal(); + + void removeCall(String? callUUID) { + final callkeep = calls.remove(callUUID); + callkeep?.call.removeUUID(); + } + + void addCall(String? callUUID, CallKeeper callKeeper) { + if (calls.containsKey(callUUID)) return; + calls[callUUID] = callKeeper; + } + + Future initialize() async { + FlutterCallkitIncoming.onEvent.listen((event) async { + Logs().w(event!.event.name.toString()); + if (event.event case Event.actionCallAccept) { + await answerCall(event.body['id']); + } else if (event.event case Event.actionCallDecline) { + await reject(event.body['id']); + } + }); + Logs().d('callkeepv3 init done'); + } + + /// CallActions. + Future answerCall(String callUUID) async { + final keeper = calls[callUUID]!; + + // never null because incoming call thingy is always triggered after handleNewCall + final callProxy = voipPlugin.currentCallProxy; + + final provider = Provider.of( + FluffyChatApp.appGlobalKey.currentContext!, + listen: false, + ); + + final remoteUser = + await keeper.call.room.requestUser(keeper.call.inviteeUserId!); + provider.proxy = callProxy; + + provider.remoteUserInCall = remoteUser; + + provider.setGlobalBanner( + CallBanner(proxy: callProxy!), + ); + FluffyChatApp.router.go('/rooms/${callProxy.room.id}/call'); + if (!keeper.connected) { + Logs().d('[VOIP] answering call'); + // Answer Call, don't await because call page is not up yet no loading + // inndicator to show + unawaited(keeper.call.answer()); + keeper.connected = true; + } + } + + /// recieved decline from other end, passed on by callkeepmanager + Future hangup(String callUUID) async { + await endIncomingCall(callUUID); + removeCall(callUUID); + } + + /// user clicked the decline button on incoming call UI + Future reject(String callUUID) async { + await endIncomingCall(callUUID); + final keeper = calls[callUUID]; + // unawaited because we don't have a screen to show any progress indicator + unawaited(keeper!.call.reject()); + removeCall(callUUID); + } + + Future showIncomingCall(CallSession call) async { + final callKeeper = CallKeeper(this, call); + final l10n = await WidgetsBinding.instance.platformDispatcher.loadL10n(); + addCall(call.callUUID, callKeeper); + final remoteUser = await call.room.requestUser(call.inviteeUserId!); + final avatarMxc = await call.client.getAvatarUrl(remoteUser?.id ?? ''); + final avatarUrl = avatarMxc?.getThumbnail( + call.client, + width: 500, + height: 500, + method: ThumbnailMethod.scale, + ); + + final params = getParams( + call, + avatarUrl.toString(), + l10n, + ); + + Logs().e('[VOIP] showing incoming call with params: ${params.toJson()}'); + + await FlutterCallkitIncoming.showCallkitIncoming(params); + } + + /// only hides incoming call notification + Future endIncomingCall(String callUUID) async { + try { + await FlutterCallkitIncoming.endCall(callUUID); + } catch (e) { + Logs().e('[VOIP] removing callkit incoming failed on endIncomingCall'); + } + } + + Future showMissedCallNotification(CallSession call) async { + final l10n = await WidgetsBinding.instance.platformDispatcher.loadL10n(); + final remoteUser = await call.room.requestUser(call.inviteeUserId!); + final avatarMxc = await call.client.getAvatarUrl(remoteUser?.id ?? ''); + final avatarUrl = avatarMxc?.getThumbnail( + call.client, + width: 500, + height: 500, + method: ThumbnailMethod.scale, + ); + await FlutterCallkitIncoming.showMissCallNotification( + getParams( + call, + avatarUrl.toString(), + l10n, + ), + ); + } + + CallKitParams getParams(CallSession call, String avatarUrl, L10n l10n) { + return CallKitParams( + id: call.callUUID, + appName: call.client.clientName, + nameCaller: call.room.getLocalizedDisplayname(), + handle: call.type == CallType.kVideo ? l10n.videoCall : l10n.audioCall, + avatar: avatarUrl, + textAccept: l10n.accept, + textDecline: l10n.reject, + type: call.type == CallType.kVideo ? 1 : 0, + missedCallNotification: NotificationParams( + isShowCallback: false, + subtitle: 'Missed call from ${call.room.getLocalizedDisplayname()}', + ), + android: const AndroidParams( + isShowLogo: true, + isShowCallID: true, + ), + // TODO: add ios once you can run decryption stuff in background + ); + } +} diff --git a/lib/utils/voip/livekit_group_call_session_state.dart b/lib/utils/voip/livekit_group_call_session_state.dart new file mode 100644 index 0000000000..d0526d04e7 --- /dev/null +++ b/lib/utils/voip/livekit_group_call_session_state.dart @@ -0,0 +1,612 @@ +import 'dart:convert'; + +import 'package:collection/collection.dart'; +import 'package:flutter_webrtc/flutter_webrtc.dart'; +import 'package:http/http.dart' as http; +import 'package:livekit_client/livekit_client.dart' as livekit; +import 'package:matrix/matrix.dart'; +import 'package:vibration/vibration.dart'; +import 'package:wakelock_plus/wakelock_plus.dart'; +import 'package:webrtc_interface/webrtc_interface.dart'; + +import 'package:fluffychat/config/app_config.dart'; +import 'package:fluffychat/utils/platform_infos.dart'; +import 'package:fluffychat/utils/voip/voip_plugin.dart'; +import 'call_state_proxy.dart'; +import 'livekit_stream.dart'; + +class LiveKitGroupCallSessionState implements CallStateProxy { + Function()? callback; + final GroupCallSession _groupCall; + final VoipPlugin voipPlugin; + livekit.Room? lkRoom; + + /// livekitstreams + final List _userMediaStreams = []; + + /// livekitstreams + final List _screenSharingStreams = []; + + LiveKitGroupCallSessionState(this._groupCall, this.voipPlugin) { + _groupCall.onGroupCallEvent.stream.listen((event) { + Logs().d( + '[LiveKitGroupCallSessionState] onGroupCallEvent ${event.toString()}', + ); + callback?.call(); + }); + + _groupCall.onGroupCallState.stream.listen((state) async { + Logs().d( + '[LiveKitGroupCallSessionState] onGroupCallState ${state.toString()}', + ); + if (state == GroupCallState.Entered) { + voipPlugin.connectedTsSinceEpoch = + DateTime.now().millisecondsSinceEpoch; + if (PlatformInfos.isMobile) { + await WakelockPlus.enable(); + await vibrate(); + } + } else if ({ + GroupCallState.LocalCallFeedUninitialized, + GroupCallState.Ended, + }.contains(state)) { + // uninititalized when call not terminated, still has participant + voipPlugin.connectedTsSinceEpoch = 0; + if (PlatformInfos.isMobile) { + await WakelockPlus.disable(); + await vibrate(); + } + } + callback?.call(); + }); + } + + Future vibrate() async { + try { + await Vibration.vibrate(duration: 100); + } catch (e) { + Logs().e('[Dialer] could not vibrate for call updates'); + } + } + + @override + Future answer() async {} + + @override + Stream get callEventStream => _groupCall.onGroupCallEvent.stream; + + @override + Stream get callStateStream => _groupCall.onGroupCallState.stream; + + @override + bool get callOnHold => false; + + @override + String get callState => _groupCall.state; + + @override + bool get connected => _groupCall.state == GroupCallState.Entered; + + @override + bool get connecting => _groupCall.state == GroupCallState.Entering; + + @override + bool get answering => _groupCall.state == GroupCallState.Entering; + + @override + GroupCallSession? get groupCall => _groupCall; + + @override + String? get displayName => _groupCall.room.getLocalizedDisplayname(); + + @override + bool get ended => + _groupCall.state == GroupCallState.Ended || + _groupCall.state == GroupCallState.LocalCallFeedUninitialized; + + @override + Future enter(WrappedMediaStream stream) async { + await _groupCall.enter(); + + if (_groupCall.isLivekitCall && _groupCall.state != GroupCallState.Ended) { + try { + final sfuConfig = await getSFUConfigWithOpenID( + client: client, + roomName: _groupCall.room.id, + groupCall: _groupCall, + ); + if (sfuConfig == null) { + Logs().w('Failed to get SFU config for group call'); + return; + } + await join( + groupCall: _groupCall, + enableE2EE: false, + sfuConfig: sfuConfig, + stream: stream, + ); + } catch (e) { + Logs().e('Failed to get SFU config for group call', e); + return; + } + } + callback?.call(); + } + + @override + Future hangup() async { + await _groupCall.leave(); + if (_groupCall.isLivekitCall) { + if (lkRoom != null) { + await lkRoom?.disconnect(); + await _groupCall.localUserMediaStream?.dispose(); + _groupCall.localUserMediaStream = null; + } + } + callback?.call(); + } + + @override + bool get isLocalVideoMuted => + !(lkRoom?.localParticipant?.isCameraEnabled() ?? false); + + @override + bool get isMicrophoneMuted => + !(lkRoom?.localParticipant?.isMicrophoneEnabled() ?? false); + + @override + bool get isScreensharingEnabled => + lkRoom?.localParticipant?.isScreenShareEnabled() ?? false; + + @override + bool get isOutgoing => false; + + @override + bool get localHold => false; + + @override + WrappedMediaStream? get localScreenSharingStream => + screenSharingStreams.firstWhereOrNull((element) => element.isLocal()); + + @override + WrappedMediaStream? get localUserMediaStream => + userMediaStreams.firstWhereOrNull((element) => element.isLocal()); + + @override + List get userMediaStreams => _userMediaStreams.toList(); + + @override + WrappedMediaStream? get primaryStream => localUserMediaStream; + + @override + List get screenSharingStreams => + _screenSharingStreams.toList(); + + @override + void onUpdateViewCallback(Function() handler) { + callback = handler; + } + + @override + bool get remoteOnHold => false; + + @override + bool get ringingPlay => false; + + @override + Room get room => _groupCall.room; + + @override + Future setLocalVideoMuted(bool muted) async { + await lkRoom?.localParticipant?.setCameraEnabled(!muted); + localUserMediaStream?.setVideoMuted(muted); + callback?.call(); + } + + @override + Future setMicrophoneMuted(bool muted) async { + await lkRoom?.localParticipant?.setMicrophoneEnabled(!muted); + localUserMediaStream?.setAudioMuted(muted); + callback?.call(); + } + + @override + Future setRemoteOnHold(bool onHold) async {} + + @override + Future setScreensharingEnabled(bool enabled) async { + enabled ? await _enableScreenShare() : await _disableScreenShare(); + } + + Future _enableScreenShare() async { + if (livekit.lkPlatformIs(livekit.PlatformType.iOS)) { + final track = await livekit.LocalVideoTrack.createScreenShareTrack( + const livekit.ScreenShareCaptureOptions( + useiOSBroadcastExtension: true, + maxFrameRate: 15.0, + ), + ); + await lkRoom?.localParticipant?.publishVideoTrack(track); + return; + } + await lkRoom?.localParticipant?.setScreenShareEnabled(true); + } + + Future _disableScreenShare() async { + await lkRoom?.localParticipant?.setScreenShareEnabled(false); + } + + @override + VoipType get type => VoipType.kLivekit; + + @override + bool get voiceonly => false; + + @override + Client get client => _groupCall.client; + + Future join({ + required GroupCallSession groupCall, + required SFUConfig sfuConfig, + bool? enableE2EE, + required WrappedMediaStream stream, + }) async { + livekit.E2EEOptions? e2eeOptions; + if (enableE2EE == true) { + e2eeOptions = livekit.E2EEOptions( + keyProvider: voipPlugin.encryptionKeyProvider.keyProvider, + ); + } + + livekit.FastConnectOptions? fastConnectOptions; + + fastConnectOptions = livekit.FastConnectOptions( + microphone: livekit.TrackOption(enabled: !stream.audioMuted), + camera: livekit.TrackOption(enabled: !stream.videoMuted), + ); + // we don't need the preview stream anymore? I think + await stream.disposeRenderer(); + await stopMediaStream(stream.stream!); + + // create new room + lkRoom = livekit.Room( + roomOptions: livekit.RoomOptions( + adaptiveStream: true, + dynacast: true, + defaultAudioPublishOptions: const livekit.AudioPublishOptions(), + defaultVideoPublishOptions: const livekit.VideoPublishOptions(), + defaultScreenShareCaptureOptions: livekit.ScreenShareCaptureOptions( + useiOSBroadcastExtension: true, + params: livekit.VideoParametersPresets.screenShareH1080FPS30, + ), + e2eeOptions: e2eeOptions, + defaultCameraCaptureOptions: livekit.CameraCaptureOptions( + maxFrameRate: 30, + params: livekit.VideoParametersPresets.h720_169, + ), + ), + ); + + // Create a Listener before connecting + final livekit.EventsListener listener = + lkRoom!.createListener(); + + await setUpListeners(lkRoom, listener, groupCall); + + await lkRoom!.connect( + sfuConfig.url, + sfuConfig.jwt, + fastConnectOptions: fastConnectOptions, + ); + + Logs().i( + 'Connected to room ${lkRoom?.name}, local participant => ${lkRoom?.localParticipant!.identity}', + ); + } + + Future _sortParticipants(GroupCallSession groupCall) async { + _userMediaStreams.clear(); + _screenSharingStreams.clear(); + + final lkps = List.from( + lkRoom?.participants.values.toList() ?? [], + ); + for (final lkp in lkps) { + // skip livekit participant updates that don't have a valid matrix event set + if (!groupCall.participants.contains(Participant.fromId(lkp.identity))) { + continue; + } + + final remoteTrackPublications = List.from( + lkp.trackPublications.values.toList(), + ); + for (final t in remoteTrackPublications) { + if (t.kind == livekit.TrackType.AUDIO) continue; + + final lkpStream = LivekitParticipantStream( + lkParticipant: lkp, + client: client, + room: groupCall.room, + participant: Participant.fromId(lkp.identity), + audioMuted: !lkp.isMicrophoneEnabled(), + videoMuted: t.isScreenShare + ? !lkp.isScreenShareEnabled() + : !lkp.isCameraEnabled(), + stream: t.track?.mediaStream, + renderer: voipPlugin.createRenderer(), + isWeb: false, + isGroupCall: true, + purpose: t.isScreenShare + ? SDPStreamMetadataPurpose.Screenshare + : SDPStreamMetadataPurpose.Usermedia, + publication: [t], + ); + await lkpStream.initialize(); + if (t.isScreenShare) { + if (_screenSharingStreams.contains(lkpStream)) continue; + _screenSharingStreams.add(lkpStream); + } else { + if (_userMediaStreams.contains(lkpStream)) continue; + _userMediaStreams.add(lkpStream); + } + } + } + // sort speakers for the grid + _userMediaStreams.sort((a, b) { + // loudest speaker first + if (a.lkParticipant.isSpeaking && b.lkParticipant.isSpeaking) { + if (a.lkParticipant.audioLevel > b.lkParticipant.audioLevel) { + return -1; + } else { + return 1; + } + } + + // last spoken at + final aSpokeAt = a.lkParticipant.lastSpokeAt?.millisecondsSinceEpoch ?? 0; + final bSpokeAt = b.lkParticipant.lastSpokeAt?.millisecondsSinceEpoch ?? 0; + + if (aSpokeAt != bSpokeAt) { + return aSpokeAt > bSpokeAt ? -1 : 1; + } + + // video on + if (a.lkParticipant.hasVideo != b.lkParticipant.hasVideo) { + return a.lkParticipant.hasVideo ? -1 : 1; + } + + // joinedAt + return a.lkParticipant.joinedAt.millisecondsSinceEpoch - + b.lkParticipant.joinedAt.millisecondsSinceEpoch; + }); + + final localParticipantTracks = List.from( + lkRoom?.localParticipant?.trackPublications.values.toList() ?? [], + ); + + for (final t in localParticipantTracks) { + if (t.kind == livekit.TrackType.AUDIO) continue; + final lkp = lkRoom!.localParticipant!; + + final lkpStream = LivekitParticipantStream( + lkParticipant: lkp, + client: client, + room: groupCall.room, + participant: Participant.fromId(lkp.identity), + audioMuted: !lkp.isMicrophoneEnabled(), + videoMuted: t.isScreenShare + ? !lkp.isScreenShareEnabled() + : !lkp.isCameraEnabled(), + stream: t.track?.mediaStream, + renderer: voipPlugin.createRenderer(), + isWeb: false, + isGroupCall: true, + purpose: t.isScreenShare + ? SDPStreamMetadataPurpose.Screenshare + : SDPStreamMetadataPurpose.Usermedia, + publication: [t], + ); + await lkpStream.initialize(); + if (t.isScreenShare) { + if (_screenSharingStreams.contains(lkpStream)) continue; + _screenSharingStreams.add(lkpStream); + } else { + if (_userMediaStreams.contains(lkpStream)) continue; + _userMediaStreams.add(lkpStream); + } + } + + callback?.call(); + } + + Future setUpListeners( + room, + livekit.EventsListener listener, + GroupCallSession groupCall, + ) async { + listener.on((livekit.RoomDisconnectedEvent event) async { + Logs().i('RoomDisconnectedEvent'); + if (event.reason != null) { + Logs().i('Room disconnected: reason => ${event.reason}'); + } + await groupCall.leave(); + }); + listener.on((livekit.LocalTrackPublishedEvent event) async { + Logs().i( + 'LocalTrackPublishedEvent, p: ${event.participant.identity}, sid: ${event.publication.sid}, kind: ${event.publication.track?.kind}, screenShare: ${event.publication.isScreenShare}', + ); + await _sortParticipants(groupCall); + }); + + listener.on((livekit.LocalTrackUnpublishedEvent event) async { + Logs().i( + 'LocalTrackUnpublishedEvent, p: ${event.participant.identity}, sid: ${event.publication.sid}, kind: ${event.publication.track?.kind}, screenShare: ${event.publication.isScreenShare}', + ); + await _sortParticipants(groupCall); + }); + + listener.on((livekit.TrackSubscribedEvent event) async { + Logs().i( + 'TrackSubscribedEvent, p: ${event.participant.identity}, sid: ${event.publication.sid}, kind: ${event.publication.track?.kind}, screenShare: ${event.publication.isScreenShare}', + ); + await _sortParticipants(groupCall); + }); + + listener.on((livekit.TrackUnsubscribedEvent event) async { + Logs().i( + 'TrackUnsubscribedEvent, p: ${event.participant.identity}, sid: ${event.publication.sid}, kind: ${event.publication.track?.kind}, screenShare: ${event.publication.isScreenShare}', + ); + await _sortParticipants(groupCall); + }); + + listener.on((livekit.ParticipantNameUpdatedEvent event) async { + Logs().i('ParticipantNameUpdatedEvent'); + callback?.call(); + }); + + listener.on((livekit.DataReceivedEvent event) async { + String decoded = 'Failed to decode'; + try { + decoded = utf8.decode(event.data); + } catch (_) { + Logs().e('Failed to decode: $_'); + } + Logs() + .i('Data received: ${event.participant?.identity}, data => $decoded'); + }); + + listener.on((livekit.TrackMutedEvent event) async { + Logs().i( + 'TrackMutedEvent, p: ${event.participant.identity}, sid: ${event.publication.sid}, kind: ${event.publication.track?.kind}, screenShare: ${event.publication.isScreenShare}', + ); + await _sortParticipants(groupCall); + }); + + listener.on((livekit.TrackUnmutedEvent event) async { + Logs().i( + 'TrackUnmutedEvent, p: ${event.participant.identity}, sid: ${event.publication.sid}, kind: ${event.publication.track?.kind}, screenShare: ${event.publication.isScreenShare}', + ); + await _sortParticipants(groupCall); + }); + + listener.on((livekit.TrackE2EEStateEvent event) async { + Logs().i( + 'TrackE2EEStateEvent: ${event.participant.identity}, ${event.publication.sid} state: ${event.state}', + ); + final participant = Participant.fromId(event.participant.identity); + if (event.state == livekit.E2EEState.kMissingKey && + participant != voipPlugin.voip.localParticipant) { + Logs().i('TrackE2EEStateEvent: requesting keys from ${participant.id}'); + await groupCall.requestEncrytionKey( + [participant], + ); + } + await _sortParticipants(groupCall); + }); + } + + Future stopMediaStream(MediaStream? stream) async { + if (stream != null) { + for (final track in stream.getTracks()) { + try { + await track.stop(); + } catch (e, s) { + Logs().e('[VOIP] stopping track ${track.id} failed', e, s); + } + } + try { + await stream.dispose(); + } catch (e, s) { + Logs().e('[VOIP] disposing stream ${stream.id} failed', e, s); + } + } + } +} + +/// lk token processing +/// The livekitServiceURL is usually set by the participant who created the +/// meeting, and everyone who joins later needs to use the same livekitServiceURL +/// 1, request a openID token from our matrix server +/// 2, use the { openIDToken, roomId,deviceId } to request a SFUConfig from the lk jwt service, +/// `lk-jwt-service` will use openIdToken to go to our matrix server to verify the validity of the client. +/// and then we will get a jwt and a url from the livekit server +/// 3, put jwt/url to the livekit-flutter-sdk to connect to the livekit server +Future getSFUConfigWithOpenID({ + required Client client, + required String roomName, + required GroupCallSession groupCall, +}) async { + final openIdToken = await client.requestOpenIdToken(client.userID!, {}); + Logs().d('Got openID token of type ${openIdToken.tokenType}'); + if (groupCall.isLivekitCall) { + final backend = (groupCall.backends.first as LiveKitBackend); + try { + Logs().i( + 'Trying to get JWT from call\'s configured URL of ${backend.livekitServiceUrl}...', + ); + final sfuConfig = await getLiveKitJWT( + client, + backend.livekitServiceUrl, + roomName, + openIdToken, + ); + Logs().i('Got JWT from call state event URL.'); + + return sfuConfig; + } catch (e) { + Logs().w( + 'Failed to get JWT from group call\'s configured URL of ${backend.livekitServiceUrl}. $e', + ); + } + } + const urlFromConf = AppConfig.livekitServiceUrl; + Logs().i('Trying livekit service URL from our config: $urlFromConf...'); + try { + final sfuConfig = + await getLiveKitJWT(client, urlFromConf, roomName, openIdToken); + + Logs() + .i('Got JWT, updating call livekit service URL with: $urlFromConf...'); + + return sfuConfig; + } catch (e) { + Logs().e('Failed to get JWT from URL defined in Config.', e); + rethrow; + } +} + +/// identity for the user is set in livekit-jwt-service (currently userId:deviceId) +Future getLiveKitJWT( + Client client, + String livekitServiceURL, + String roomName, + OpenIdCredentials openIdCredentials, +) async { + try { + final res = await http.post( + Uri.parse('$livekitServiceURL/sfu/get'), // element compantibilty + headers: { + 'Content-Type': 'application/json', + }, + body: jsonEncode({ + 'room': roomName, + 'openid_token': { + 'access_token': openIdCredentials.accessToken, + 'token_type': openIdCredentials.tokenType, + 'matrix_server_name': openIdCredentials.matrixServerName, + }, + 'device_id': client.deviceID!, + }), + ); + if (res.statusCode != 200) { + throw Exception( + 'SFU Config fetch failed with status code #${res.statusCode}', + ); + } + return SFUConfig.fromJson(jsonDecode(res.body)); + } catch (e) { + throw Exception( + 'SFU Config fetch failed with exception $e', + ); + } +} diff --git a/lib/utils/voip/livekit_stream.dart b/lib/utils/voip/livekit_stream.dart new file mode 100644 index 0000000000..e0bcd72917 --- /dev/null +++ b/lib/utils/voip/livekit_stream.dart @@ -0,0 +1,58 @@ +import 'package:livekit_client/livekit_client.dart' as livekit; +import 'package:matrix/matrix.dart'; + +class SFUConfig { + final String url; + final String jwt; + SFUConfig({required this.url, required this.jwt}); + factory SFUConfig.fromJson(Map json) { + return SFUConfig(url: json['url'], jwt: json['jwt']); + } +} + +class LivekitParticipantStream extends WrappedMediaStream { + final livekit.Participant lkParticipant; + List publication = []; + LivekitParticipantStream({ + required super.participant, + required super.renderer, + required super.room, + required super.purpose, + required super.client, + required super.audioMuted, + required super.videoMuted, + required super.isWeb, + required super.isGroupCall, + required super.stream, + required this.lkParticipant, + this.publication = const [], + }); + + bool publicationExists(livekit.TrackPublication pub) { + return publication.contains(pub); + } + + void addPublication(livekit.TrackPublication pub) { + publication.add(pub); + super.onMuteStateChanged.add(this); + } + + void removePublication(livekit.TrackPublication pub) { + publication.remove(pub); + super.onMuteStateChanged.add(this); + } + + livekit.VideoTrack? lkVideoTrack() { + if (lkParticipant is livekit.LocalParticipant) { + return publication.firstOrNull?.track as livekit.VideoTrack?; + } + + if (lkParticipant is livekit.RemoteParticipant) { + return publication.firstOrNull?.track as livekit.VideoTrack?; + } + + return null; + } + + bool get isEncrypted => lkParticipant.isEncrypted; +} diff --git a/lib/utils/voip/user_media_manager.dart b/lib/utils/voip/user_media_manager.dart deleted file mode 100644 index 03ecd60305..0000000000 --- a/lib/utils/voip/user_media_manager.dart +++ /dev/null @@ -1,42 +0,0 @@ -import 'package:flutter/foundation.dart'; - -import 'package:flutter_ringtone_player/flutter_ringtone_player.dart'; -import 'package:just_audio/just_audio.dart'; - -import 'package:fluffychat/utils/platform_infos.dart'; - -class UserMediaManager { - factory UserMediaManager() { - return _instance; - } - - UserMediaManager._internal(); - - static final UserMediaManager _instance = UserMediaManager._internal(); - - AudioPlayer? _assetsAudioPlayer; - - final FlutterRingtonePlayer _flutterRingtonePlayer = FlutterRingtonePlayer(); - - Future startRingingTone() async { - if (PlatformInfos.isMobile) { - await _flutterRingtonePlayer.playRingtone(volume: 80); - } else if ((kIsWeb || PlatformInfos.isMacOS) && - _assetsAudioPlayer != null) { - const path = 'assets/sounds/phone.ogg'; - final player = _assetsAudioPlayer = AudioPlayer(); - player.setAsset(path); - player.play(); - } - return; - } - - Future stopRingingTone() async { - if (PlatformInfos.isMobile) { - await _flutterRingtonePlayer.stop(); - } - await _assetsAudioPlayer?.stop(); - _assetsAudioPlayer = null; - return; - } -} diff --git a/lib/utils/voip/voip_plugin.dart b/lib/utils/voip/voip_plugin.dart new file mode 100644 index 0000000000..a1251dbaa0 --- /dev/null +++ b/lib/utils/voip/voip_plugin.dart @@ -0,0 +1,461 @@ +import 'dart:async'; +import 'dart:core'; +import 'dart:io'; + +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; + +import 'package:connectivity_plus/connectivity_plus.dart'; +import 'package:flutter_foreground_task/flutter_foreground_task.dart'; +import 'package:flutter_gen/gen_l10n/l10n.dart'; +import 'package:flutter_webrtc/flutter_webrtc.dart' as webrtc_impl; +import 'package:just_audio/just_audio.dart'; +import 'package:matrix/matrix.dart'; +import 'package:permission_handler/permission_handler.dart'; +import 'package:provider/provider.dart'; +import 'package:webrtc_interface/webrtc_interface.dart' hide Navigator; + +import 'package:fluffychat/config/themes.dart'; +import 'package:fluffychat/utils/app_state.dart'; +import 'package:fluffychat/utils/platform_infos.dart'; +import 'package:fluffychat/widgets/fluffy_chat_app.dart'; +import 'package:fluffychat/widgets/matrix.dart'; +import '../../pages/voip/widgets/call_banner.dart'; +import '../../pages/voip/widgets/call_overlay.dart'; +import '../../utils/voip/call_session_state.dart'; +import '../../utils/voip/call_state_proxy.dart'; +import '../../utils/voip/famedly_key_provider_impl.dart'; +import '../../utils/voip/incoming_call.dart'; + +enum VoipType { kVoice, kVideo, kGroup, kLivekit } + +class MediaDevicesWrapper extends MediaDevices { + MediaDevicesWrapper() { + AppLifecycleListener( + onResume: () { + _appLifecycleStateResumeStream.sink.add(true); + }, + ); + } + final StreamController _appLifecycleStateResumeStream = + StreamController.broadcast(); + + // We only request mic/cam permissions during the first call (this is handled in + // getUserMedia from flutter_webrtc). But if the first call happens when the + // app is in background (in android), getUserMedia throws an exception and is + // unable to request permissions. + // + // So, awaiting for _waitBeforeRequestingMediaPermission method will make sure + // you wait till the app comes back to foreground (or timeout, whichever comes first). + // If the respective media permissions for the call (mic for audio call, + // mic+cam for video call) have already been granted, the method just returns. + // + // The expected behaviour is, only the push notification that the call has started + // will be shown to users and no callkit ringing, if the respective media + // permissions for the call haven't been granted. The user will click on the push + // notification and the app will come to foreground, then getUserMedia will run. + Future _waitBeforeRequestingMediaPermission({ + required bool isVideoCall, + }) async { + // if android and not on web, + if (kIsWeb || !Platform.isAndroid) return; + // if mic permission not granted and if video call, mic+cam permission not granted, + if (await Permission.microphone.isGranted && + (!isVideoCall || await Permission.camera.isGranted)) return; + // if app currently isn't in foreground, + if (WidgetsBinding.instance.lifecycleState == AppLifecycleState.resumed) { + return; + } + // then, wait till it comes to foreground. + await Future.any([ + _appLifecycleStateResumeStream.stream.first, + Future.delayed(CallTimeouts.callInviteLifetime), + ]); + } + + @override + Future> enumerateDevices() => + webrtc_impl.navigator.mediaDevices.enumerateDevices(); + + @override + Future getDisplayMedia( + Map mediaConstraints, + ) async { + final mediaConstraintsCopy = Map.from(mediaConstraints); + if (!kIsWeb && Platform.isIOS) { + mediaConstraintsCopy['video'] = {'deviceId': 'broadcast'}; + } + return webrtc_impl.navigator.mediaDevices + .getDisplayMedia(mediaConstraintsCopy); + } + + @override + Future getSources() => + webrtc_impl.navigator.mediaDevices.enumerateDevices(); + + @override + Future getUserMedia( + Map mediaConstraints, + ) async { + await _waitBeforeRequestingMediaPermission( + isVideoCall: mediaConstraints.containsKey('video') && + mediaConstraints['video'] != false, + ); + return webrtc_impl.navigator.mediaDevices.getUserMedia(mediaConstraints); + } +} + +class VoipPlugin implements WebRTCDelegate { + static VoipPlugin? _instance; + + final Client client; + + factory VoipPlugin.clientOnly(Client client) { + _instance ??= VoipPlugin._(client); + return _instance!; + } + + /// dw it'll be there + /// do not use this randomly everywhere, rare cases where you are either stuck + /// with a context hack or this + + VoipPlugin._(this.client) { + voip = VoIP(client, this); + encryptionKeyProvider = FamedlyAppEncryptionKeyProviderImpl(client, this); + if (PlatformInfos.isMobile) { + IncomingCallManager(this).initialize(); + } + Connectivity() + .onConnectivityChanged + .listen(_handleNetworkChanged) + .onError((e) => _currentConnectivity = ConnectivityResult.none); + Connectivity() + .checkConnectivity() + .then((result) => _currentConnectivity = result) + .catchError((e) => _currentConnectivity = ConnectivityResult.none); + } + + final MediaDevicesWrapper _mediaDevices = MediaDevicesWrapper(); + + late FamedlyAppEncryptionKeyProviderImpl encryptionKeyProvider; + + /// These are used to handle the calls all over the app with `voipPlugin.currentCallProxy` + /// or `voipPlugin.currentGroupCallProxy` + CallSessionState? currentCallProxy; + CallStateProxy? currentGroupCallProxy; + + late VoIP voip; + ConnectivityResult? _currentConnectivity; + + /// the only time this is null is when `FamedlyApp` is not in the tree (eg: call when the app is not open) + BuildContext get globalContext => FluffyChatApp.appGlobalKey.currentContext!; + + void setupCallAndOpenCallPage(CallStateProxy proxy, User? user) { + final provider = Provider.of(globalContext, listen: false); + provider.proxy = proxy; + provider.remoteUserInCall = user; + + if (!FluffyThemes.isColumnMode(globalContext)) { + provider.setGlobalBanner(CallBanner(proxy: proxy, voipPlugin: this)); + } + if (FluffyThemes.isColumnMode(globalContext) && + currentCall != null && + currentGroupCall == null && + !currentCall!.isOutgoing) { + createOverlay(proxy); + } else { + FluffyChatApp.router.go('/rooms/${proxy.room.id}/call'); + } + } + + void onPhoneButtonTap( + BuildContext context, + Room room, + VoipType callType, + ) async { + await startCall(context, room, callType); + } + + void _handleNetworkChanged(ConnectivityResult result) async { + /// Got a new connectivity status! + if (_currentConnectivity != result) { + voip.calls.forEach((_, sess) { + sess.restartIce(); + }); + } + _currentConnectivity = result; + } + + CallSession? get currentCall => + voip.currentCID == null ? null : voip.calls[voip.currentCID]; + + GroupCallSession? get currentGroupCall => voip.currentGroupCID == null + ? null + : voip.groupCalls[voip.currentGroupCID]; + + bool getInMeetingState() { + return currentCall != null || currentGroupCall != null; + } + + @override + MediaDevices get mediaDevices => _mediaDevices; + + @override + bool get isWeb => kIsWeb; + + @override + Future createPeerConnection( + Map configuration, [ + Map constraints = const {}, + ]) => + webrtc_impl.createPeerConnection(configuration, constraints); + + @override + VideoRenderer createRenderer() { + return webrtc_impl.RTCVideoRenderer(); + } + + int connectedTsSinceEpoch = 0; + int onHoldMs = 0; + + @override + Future handleNewCall(CallSession call) async { + Logs().d('[VoipPlugin] Handle new call'); + connectedTsSinceEpoch = 0; + onHoldMs = 0; + final callProxy = CallSessionState(call, this); + currentCallProxy = callProxy; + if (!call.isOutgoing && !kIsWeb && Platform.isAndroid) { + await IncomingCallManager(this).showIncomingCall(call); + } else { + final user = call.room.unsafeGetUserFromMemoryOrFallback( + call.inviteeUserId!, + ); + setupCallAndOpenCallPage( + callProxy, + user, + ); + } + client.backgroundSync = true; + } + + @override + Future handleCallEnded(CallSession call) async { + try { + Logs().d('[VoipPlugin] handleCallEnded'); + if (currentGroupCall == null && + currentCallProxy?.call.callId == call.callId) { + if (!kIsWeb && Platform.isAndroid) { + await IncomingCallManager(this).endIncomingCall(call.callId); + await FlutterForegroundTask.stopService(); + } + Logs().d('[VoipPlugin] Handle 1:1 call ended'); + + connectedTsSinceEpoch = 0; + onHoldMs = 0; + final provider = Provider.of(globalContext, listen: false); + provider.removeGlobalBanner(); + removeCallPopupOverlay(); + provider.remoteUserInCall = null; + provider.proxy = null; + + currentCallProxy = null; + final path = '/rooms/${call.room.id}'; + + if (FluffyChatApp.router.routerDelegate.currentConfiguration.uri + .toString() == + '/rooms/${call.room.id}/call') { + FluffyChatApp.router.go(path); + } + } + } catch (e) { + Logs().e('[VoipPlugin] handleCallEnded failed', e); + } + } + + @override + Future handleNewGroupCall(GroupCallSession groupCall) async { + Logs().d('[VoipPlugin] new group call found'); + } + + @override + Future handleGroupCallEnded(GroupCallSession groupCall) async { + try { + if (currentGroupCallProxy?.groupCall?.groupCallId == + groupCall.groupCallId) { + if (!kIsWeb && Platform.isAndroid) { + await FlutterForegroundTask.stopService(); + } + final provider = Provider.of(globalContext, listen: false); + provider.removeGlobalBanner(); + removeCallPopupOverlay(); + provider.proxy = null; + currentGroupCallProxy = null; + + final roomPath = '/rooms/${groupCall.room.id}'; + if (FluffyChatApp.router.routerDelegate.currentConfiguration.uri + .toString() == + '/rooms/${groupCall.room.id}/call') { + FluffyChatApp.router.go(roomPath); + } + } + } catch (e, s) { + Logs().e('[VoipPlugin] handleGroupCallEnded failed', e, s); + } + } + + @override + bool get canHandleNewCall => + voip.currentCID == null && voip.currentGroupCID == null; + + @override + Future handleMissedCall(CallSession call) async { + try { + if (currentGroupCall == null) { + await IncomingCallManager(this).showMissedCallNotification(call); + } + } catch (e) { + Logs().w('[VoipPlugin] unable to show missed call notification'); + } + } + + final player = AudioPlayer(); + + @override + Future playRingtone() async { + try { + if (kIsWeb || Platform.isIOS) { + await player.setLoopMode(LoopMode.all); + await player.setAudioSource( + // https://pixabay.com/sound-effects/ringtone-126505 + AudioSource.asset('assets/sounds/ringtone.mp3'), + initialIndex: 0, + initialPosition: Duration.zero, + ); + // don't want to block the UI + unawaited(player.play()); + } + Logs().d('[VoipPlugin] ringtone playing'); + } catch (e) { + Logs().e('[VoipPlugin] unable to start ringtone', e); + } + } + + @override + Future stopRingtone() async { + try { + // TODO: remove ios once callkeep is implemented + if (kIsWeb || Platform.isIOS) { + if (player.playerState.playing) { + // don't want to block the UI + unawaited(player.stop()); + } + } + } catch (e) { + Logs().e('[VoipPlugin] unable to stop ringtone', e); + } + } + + OverlayEntry? callPopupOverlayEntry; + void createOverlay(CallStateProxy proxy) { + callPopupOverlayEntry = OverlayEntry( + maintainState: true, + builder: (context) { + return CallOverlay( + callStateProxy: proxy, + voipPlugin: this, + ); + }, + ); + + Overlay.of(globalContext).insert(callPopupOverlayEntry!); + } + + void createMinimizer(CallStateProxy proxy) async { + if (FluffyThemes.isColumnMode(globalContext)) { + Provider.of(globalContext, listen: false).removeGlobalBanner(); + createOverlay(proxy); + } else { + removeCallPopupOverlay(); + Provider.of(globalContext, listen: false) + .setGlobalBanner(CallBanner(proxy: proxy, voipPlugin: this)); + } + } + + // Remove the OverlayEntry. + void removeCallPopupOverlay() { + callPopupOverlayEntry?.remove(); + callPopupOverlayEntry = null; + } + + Future startCall( + BuildContext context, + Room room, + VoipType callType, + ) async { + FocusManager.instance.primaryFocus?.unfocus(); + + final voipPlugin = Matrix.of(context).voipPlugin; + if ({VoipType.kVideo, VoipType.kVoice}.contains(callType)) { + if (currentCallProxy != null) { + setupCallAndOpenCallPage( + currentCallProxy!, + room.unsafeGetUserFromMemoryOrFallback(room.directChatMatrixID!), + ); + return; + } + + try { + await voipPlugin.voip.inviteToCall( + room.id, + callType == VoipType.kVoice ? CallType.kVoice : CallType.kVideo, + room.directChatMatrixID!, + ); + + // force null check here because handleNewCall is triggered in the above line anyway + setupCallAndOpenCallPage( + currentCallProxy!, + room.unsafeGetUserFromMemoryOrFallback(room.directChatMatrixID!), + ); + } catch (e, s) { + Logs().e('startCall', e, s); + } + return; + } else { + if (voipPlugin.currentGroupCall != null && + currentGroupCallProxy != null) { + setupCallAndOpenCallPage(currentGroupCallProxy!, null); + } else if (currentGroupCallProxy == null) { + FluffyChatApp.router.go('/rooms/${room.id}/group_call_onboarding'); + } + } + } + + String getCallStateSuffix(CallStateProxy proxy, BuildContext context) { + if (proxy.connecting) { + return L10n.of(context)!.connecting; + } + if (proxy.answering) { + return L10n.of(context)!.answering; + } + if (proxy.ended) { + return L10n.of(context)!.ended; + } + if (proxy is CallSessionState) { + if (proxy.isOutgoing) { + return L10n.of(context)!.calling; + } + if (!proxy.isOutgoing) { + return L10n.of(context)!.incomingCall; + } + if (proxy.ringingPlay) { + return L10n.of(context)!.ringing; + } + } + + return 'Unknown state'; + } + + @override + EncryptionKeyProvider? get keyProvider => encryptionKeyProvider; +} diff --git a/lib/utils/voip_plugin.dart b/lib/utils/voip_plugin.dart deleted file mode 100644 index bf36385a5b..0000000000 --- a/lib/utils/voip_plugin.dart +++ /dev/null @@ -1,200 +0,0 @@ -import 'dart:core'; - -import 'package:flutter/foundation.dart'; -import 'package:flutter/material.dart'; - -import 'package:flutter_foreground_task/flutter_foreground_task.dart'; -import 'package:flutter_webrtc/flutter_webrtc.dart' as webrtc_impl; -import 'package:matrix/matrix.dart'; -import 'package:webrtc_interface/webrtc_interface.dart' hide Navigator; - -import 'package:fluffychat/pages/chat_list/chat_list.dart'; -import 'package:fluffychat/pages/dialer/dialer.dart'; -import 'package:fluffychat/utils/platform_infos.dart'; -import '../../utils/voip/callkeep_manager.dart'; -import '../../utils/voip/user_media_manager.dart'; -import '../widgets/matrix.dart'; - -class VoipPlugin with WidgetsBindingObserver implements WebRTCDelegate { - final MatrixState matrix; - Client get client => matrix.client; - VoipPlugin(this.matrix) { - voip = VoIP(client, this); - if (!kIsWeb) { - final wb = WidgetsBinding.instance; - wb.addObserver(this); - didChangeAppLifecycleState(wb.lifecycleState); - } - } - bool background = false; - bool speakerOn = false; - late VoIP voip; - OverlayEntry? overlayEntry; - BuildContext get context => matrix.context; - - @override - void didChangeAppLifecycleState(AppLifecycleState? state) { - background = (state == AppLifecycleState.detached || - state == AppLifecycleState.paused); - Logs().w('Set background mode in VOIP plugin', background); - } - - void addCallingOverlay(String callId, CallSession call) { - final context = - kIsWeb ? ChatList.contextForVoip! : this.context; // web is weird - - if (overlayEntry != null) { - Logs().e('[VOIP] addCallingOverlay: The call session already exists?'); - overlayEntry!.remove(); - } - // Overlay.of(context) is broken on web - // falling back on a dialog - if (kIsWeb) { - showDialog( - context: context, - builder: (context) => Calling( - context: context, - client: client, - callId: callId, - call: call, - onClear: () => Navigator.of(context).pop(), - ), - ); - } else { - overlayEntry = OverlayEntry( - builder: (_) => Calling( - context: context, - client: client, - callId: callId, - call: call, - onClear: () { - overlayEntry?.remove(); - overlayEntry = null; - }, - ), - ); - Overlay.of(context).insert(overlayEntry!); - } - } - - @override - MediaDevices get mediaDevices => webrtc_impl.navigator.mediaDevices; - - @override - bool get isWeb => kIsWeb; - - @override - Future createPeerConnection( - Map configuration, [ - Map constraints = const {}, - ]) => - webrtc_impl.createPeerConnection(configuration, constraints); - - @override - VideoRenderer createRenderer() { - return webrtc_impl.RTCVideoRenderer(); - } - - Future get hasCallingAccount async => - kIsWeb ? false : await CallKeepManager().hasPhoneAccountEnabled; - - @override - Future playRingtone() async { - if (!background && !await hasCallingAccount) { - try { - await UserMediaManager().startRingingTone(); - } catch (_) {} - } - } - - @override - Future stopRingtone() async { - if (!background && !await hasCallingAccount) { - try { - await UserMediaManager().stopRingingTone(); - } catch (_) {} - } - } - - @override - Future handleNewCall(CallSession call) async { - if (PlatformInfos.isAndroid) { - // probably works on ios too - final hasCallingAccount = await CallKeepManager().hasPhoneAccountEnabled; - if (call.direction == CallDirection.kIncoming && - hasCallingAccount && - call.type == CallType.kVoice) { - ///Popup native telecom manager call UI for incoming call. - final callKeeper = CallKeeper(CallKeepManager(), call); - CallKeepManager().addCall(call.callId, callKeeper); - await CallKeepManager().showCallkitIncoming(call); - return; - } else { - try { - final wasForeground = await FlutterForegroundTask.isAppOnForeground; - - await matrix.store.setString( - 'wasForeground', - wasForeground == true ? 'true' : 'false', - ); - FlutterForegroundTask.setOnLockScreenVisibility(true); - FlutterForegroundTask.wakeUpScreen(); - FlutterForegroundTask.launchApp(); - } catch (e) { - Logs().e('VOIP foreground failed $e'); - } - // use fallback flutter call pages for outgoing and video calls. - addCallingOverlay(call.callId, call); - try { - if (!hasCallingAccount) { - ScaffoldMessenger.of(context).showSnackBar( - const SnackBar( - content: Text( - 'No calling accounts found (used for native calls UI)', - ), - ), - ); - } - } catch (e) { - Logs().e('failed to show snackbar'); - } - } - } else { - addCallingOverlay(call.callId, call); - } - } - - @override - Future handleCallEnded(CallSession session) async { - if (overlayEntry != null) { - overlayEntry!.remove(); - overlayEntry = null; - if (PlatformInfos.isAndroid) { - FlutterForegroundTask.setOnLockScreenVisibility(false); - FlutterForegroundTask.stopService(); - final wasForeground = matrix.store.getString('wasForeground'); - wasForeground == 'false' ? FlutterForegroundTask.minimizeApp() : null; - } - } - } - - @override - Future handleGroupCallEnded(GroupCall groupCall) async { - // TODO: implement handleGroupCallEnded - } - - @override - Future handleNewGroupCall(GroupCall groupCall) async { - // TODO: implement handleNewGroupCall - } - - @override - // TODO: implement canHandleNewCall - bool get canHandleNewCall => - voip.currentCID == null && voip.currentGroupCID == null; - - @override - Future handleMissedCall(CallSession session) async { - // TODO: implement handleMissedCall - } -} diff --git a/lib/widgets/fluffy_chat_app.dart b/lib/widgets/fluffy_chat_app.dart index d9d2f042af..4cce23955a 100644 --- a/lib/widgets/fluffy_chat_app.dart +++ b/lib/widgets/fluffy_chat_app.dart @@ -3,10 +3,13 @@ import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:go_router/go_router.dart'; import 'package:matrix/matrix.dart'; +import 'package:provider/provider.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:fluffychat/config/routes.dart'; import 'package:fluffychat/config/themes.dart'; +import 'package:fluffychat/utils/app_state.dart'; +import 'package:fluffychat/utils/voip/voip_plugin.dart'; import 'package:fluffychat/widgets/app_lock.dart'; import 'package:fluffychat/widgets/theme_builder.dart'; import '../config/app_config.dart'; @@ -16,6 +19,7 @@ import 'matrix.dart'; class FluffyChatApp extends StatelessWidget { final Widget? testWidget; final List clients; + final List voipPlugins; final String? pincode; final SharedPreferences store; @@ -23,6 +27,7 @@ class FluffyChatApp extends StatelessWidget { super.key, this.testWidget, required this.clients, + required this.voipPlugins, required this.store, this.pincode, }); @@ -36,6 +41,8 @@ class FluffyChatApp extends StatelessWidget { // the current path. static final GoRouter router = GoRouter(routes: AppRoutes.routes); + static final appGlobalKey = GlobalKey(); + @override Widget build(BuildContext context) { return ThemeBuilder( @@ -49,17 +56,23 @@ class FluffyChatApp extends StatelessWidget { localizationsDelegates: L10n.localizationsDelegates, supportedLocales: L10n.supportedLocales, routerConfig: router, - builder: (context, child) => AppLockWidget( - pincode: pincode, - clients: clients, - // Need a navigator above the Matrix widget for - // displaying dialogs - child: Navigator( - onGenerateRoute: (_) => MaterialPageRoute( - builder: (_) => Matrix( - clients: clients, - store: store, - child: testWidget ?? child, + builder: (context, child) => ChangeNotifierProvider.value( + key: ValueKey(themeMode), + value: AppState(), + child: AppLockWidget( + pincode: pincode, + clients: clients, + // Need a navigator above the Matrix widget for + // displaying dialogs + child: Navigator( + onGenerateRoute: (_) => MaterialPageRoute( + builder: (_) => Matrix( + key: appGlobalKey, + clients: clients, + voipPlugins: voipPlugins, + store: store, + child: testWidget ?? child, + ), ), ), ), diff --git a/lib/widgets/matrix.dart b/lib/widgets/matrix.dart index 9f98931b35..62bf604d95 100644 --- a/lib/widgets/matrix.dart +++ b/lib/widgets/matrix.dart @@ -23,7 +23,7 @@ import 'package:fluffychat/utils/init_with_restore.dart'; import 'package:fluffychat/utils/localized_exception_extension.dart'; import 'package:fluffychat/utils/platform_infos.dart'; import 'package:fluffychat/utils/uia_request_manager.dart'; -import 'package:fluffychat/utils/voip_plugin.dart'; +import 'package:fluffychat/utils/voip/voip_plugin.dart'; import 'package:fluffychat/widgets/fluffy_chat_app.dart'; import '../config/app_config.dart'; import '../config/setting_keys.dart'; @@ -32,12 +32,11 @@ import '../utils/account_bundles.dart'; import '../utils/background_push.dart'; import 'local_notifications_extension.dart'; -// import 'package:flutter_secure_storage/flutter_secure_storage.dart'; - class Matrix extends StatefulWidget { final Widget? child; final List clients; + final List voipPlugins; final Map? queryParameters; @@ -46,6 +45,7 @@ class Matrix extends StatefulWidget { const Matrix({ this.child, required this.clients, + required this.voipPlugins, required this.store, this.queryParameters, super.key, @@ -71,6 +71,9 @@ class MatrixState extends State with WidgetsBindingObserver { BackgroundPush? backgroundPush; + VoipPlugin get voipPlugin => widget.voipPlugins + .singleWhere((element) => element.client.userID == client.userID); + Client get client { if (widget.clients.isEmpty) { widget.clients.add(getLoginClient()); @@ -81,8 +84,6 @@ class MatrixState extends State with WidgetsBindingObserver { return widget.clients[_activeClient]; } - VoipPlugin? voipPlugin; - bool get isMultiAccount => widget.clients.length > 1; int getClientIndexByMatrixId(String matrixId) => @@ -95,8 +96,6 @@ class MatrixState extends State with WidgetsBindingObserver { final i = widget.clients.indexWhere((c) => c == cl); if (i != -1) { _activeClient = i; - // TODO: Multi-client VoiP support - createVoipPlugin(); } else { Logs().w('Tried to set an unknown client ${cl!.userID} as active'); } @@ -403,16 +402,6 @@ class MatrixState extends State with WidgetsBindingObserver { }, ); } - - createVoipPlugin(); - } - - void createVoipPlugin() async { - if (store.getBool(SettingKeys.experimentalVoip) == false) { - voipPlugin = null; - return; - } - voipPlugin = VoipPlugin(this); } @override diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index f5ab4a3f8f..c1f5f43bfa 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -7,6 +7,7 @@ import Foundation import appkit_ui_element_colors import audio_session +import connectivity_plus import desktop_drop import device_info_plus import dynamic_color @@ -19,6 +20,7 @@ import flutter_web_auth_2 import flutter_webrtc import geolocator_apple import just_audio +import livekit_client import macos_ui import macos_window_utils import package_info_plus @@ -38,6 +40,7 @@ import window_to_front func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { AppkitUiElementColorsPlugin.register(with: registry.registrar(forPlugin: "AppkitUiElementColorsPlugin")) AudioSessionPlugin.register(with: registry.registrar(forPlugin: "AudioSessionPlugin")) + ConnectivityPlugin.register(with: registry.registrar(forPlugin: "ConnectivityPlugin")) DesktopDropPlugin.register(with: registry.registrar(forPlugin: "DesktopDropPlugin")) DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin")) DynamicColorPlugin.register(with: registry.registrar(forPlugin: "DynamicColorPlugin")) @@ -50,6 +53,7 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { FlutterWebRTCPlugin.register(with: registry.registrar(forPlugin: "FlutterWebRTCPlugin")) GeolocatorPlugin.register(with: registry.registrar(forPlugin: "GeolocatorPlugin")) JustAudioPlugin.register(with: registry.registrar(forPlugin: "JustAudioPlugin")) + LiveKitPlugin.register(with: registry.registrar(forPlugin: "LiveKitPlugin")) MacOSUiPlugin.register(with: registry.registrar(forPlugin: "MacOSUiPlugin")) MacOSWindowUtilsPlugin.register(with: registry.registrar(forPlugin: "MacOSWindowUtilsPlugin")) FPPPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FPPPackageInfoPlusPlugin")) diff --git a/pubspec.lock b/pubspec.lock index 720e382076..13bd7846d4 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -17,6 +17,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.0.0" + all_sensors: + dependency: "direct main" + description: + name: all_sensors + sha256: "5de1d20c3fee63d18be29ed27c368143d980e7fc5a805c3903946028816ac375" + url: "https://pub.dev" + source: hosted + version: "0.4.2" analyzer: dependency: transitive description: @@ -129,14 +137,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.1.1" - callkeep: - dependency: "direct main" - description: - name: callkeep - sha256: "9e86e9632a603a61f7045c179ea5ca0ee4da0a49fc5f80c2fe09fb422b96d3c6" - url: "https://pub.dev" - source: hosted - version: "0.3.3" canonical_json: dependency: transitive description: @@ -201,6 +201,22 @@ packages: url: "https://pub.dev" source: hosted version: "1.18.0" + connectivity_plus: + dependency: "direct main" + description: + name: connectivity_plus + sha256: "224a77051d52a11fbad53dd57827594d3bd24f945af28bd70bab376d68d437f0" + url: "https://pub.dev" + source: hosted + version: "5.0.2" + connectivity_plus_platform_interface: + dependency: transitive + description: + name: connectivity_plus_platform_interface + sha256: cf1d1c28f4416f8c654d7dc3cd638ec586076255d407cef3ddbdaf178272a71a + url: "https://pub.dev" + source: hosted + version: "1.2.4" console: dependency: transitive description: @@ -233,6 +249,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.0.3" + cryptography: + dependency: transitive + description: + name: cryptography + sha256: d146b76d33d94548cf035233fbc2f4338c1242fa119013bead807d033fc4ae05 + url: "https://pub.dev" + source: hosted + version: "2.7.0" csslib: dependency: transitive description: @@ -329,6 +353,14 @@ packages: url: "https://pub.dev" source: hosted version: "7.0.0" + duration: + dependency: "direct main" + description: + name: duration + sha256: "0548a12d235dab185c677ef660995f23fdc06a02a2b984aa23805f6a03d82815" + url: "https://pub.dev" + source: hosted + version: "3.0.13" dynamic_color: dependency: "direct main" description: @@ -441,6 +473,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.9.3+1" + fixnum: + dependency: transitive + description: + name: fixnum + sha256: "25517a4deb0c03aa0f32fd12db525856438902d9c16536311e76cdc57b31d7d1" + url: "https://pub.dev" + source: hosted + version: "1.1.0" flutter: dependency: "direct main" description: flutter @@ -470,6 +510,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.3.1" + flutter_callkit_incoming: + dependency: "direct main" + description: + name: flutter_callkit_incoming + sha256: ccfc2cb0a1ad22e4e94e235803a85f3403007fda9efac9922b69d64fb51efbe4 + url: "https://pub.dev" + source: hosted + version: "2.0.1+2" flutter_driver: dependency: transitive description: flutter @@ -712,6 +760,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.0.0" + flutter_staggered_grid_view: + dependency: "direct main" + description: + name: flutter_staggered_grid_view + sha256: "19e7abb550c96fbfeb546b23f3ff356ee7c59a019a651f8f102a4ba9b7349395" + url: "https://pub.dev" + source: hosted + version: "0.7.0" flutter_svg: dependency: transitive description: @@ -758,10 +814,10 @@ packages: dependency: "direct main" description: name: flutter_webrtc - sha256: "8522e9f347aed9f03ec591d05fc286a698c1b11a1a6d3e994e92727d24c6f352" + sha256: "577216727181cb13776a65d3e7cb33e783e740c5496335011aed4a038b28c3fe" url: "https://pub.dev" source: hosted - version: "0.9.46" + version: "0.9.47" fuchsia_remote_debug_protocol: dependency: transitive description: flutter @@ -1101,6 +1157,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.1" + livekit_client: + dependency: "direct main" + description: + name: livekit_client + sha256: e56294ac4b837f00dfeb16a814ee6d5290cb2ad6230714ce8722cbeed85bff3e + url: "https://pub.dev" + source: hosted + version: "1.5.6" logging: dependency: transitive description: @@ -1152,10 +1216,9 @@ packages: matrix: dependency: "direct main" description: - name: matrix - sha256: "1cea8c269054329a8882f47fa36c6573d6b62465b8e7b06f1211b4113fdcd201" - url: "https://pub.dev" - source: hosted + path: "../matrix-dart-sdk" + relative: true + source: path version: "0.25.6" matrix_api_lite: dependency: transitive @@ -1213,6 +1276,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.0" + nm: + dependency: transitive + description: + name: nm + sha256: "2c9aae4127bdc8993206464fcc063611e0e36e72018696cd9631023a31b24254" + url: "https://pub.dev" + source: hosted + version: "0.5.0" olm: dependency: transitive description: @@ -1437,6 +1508,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.0" + protobuf: + dependency: transitive + description: + name: protobuf + sha256: "68645b24e0716782e58948f8467fd42a880f255096a821f9e7d0ec625b00c84d" + url: "https://pub.dev" + source: hosted + version: "3.1.0" provider: dependency: "direct main" description: @@ -1706,6 +1785,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.10.0" + sprintf: + dependency: transitive + description: + name: sprintf + sha256: "1fc9ffe69d4df602376b52949af107d8f5703b77cda567c4d7d86a0693120f23" + url: "https://pub.dev" + source: hosted + version: "7.0.0" sqflite: dependency: "direct main" description: @@ -2003,13 +2090,13 @@ packages: source: hosted version: "3.1.0" uuid: - dependency: transitive + dependency: "direct main" description: name: uuid - sha256: "648e103079f7c64a36dc7d39369cabb358d377078a051d6ae2ad3aa539519313" + sha256: cd210a09f7c18cbe5a02511718e0334de6559871052c90a90c0cca46a4aa81c8 url: "https://pub.dev" source: hosted - version: "3.0.7" + version: "4.3.3" vector_graphics: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 2b5f81b2b4..aee82fd828 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -9,29 +9,31 @@ environment: dependencies: adaptive_dialog: ^2.0.0 + all_sensors: ^0.4.2 animations: ^2.0.8 archive: ^3.4.9 async: ^2.11.0 badges: ^3.1.2 blurhash_dart: ^1.2.1 - callkeep: ^0.3.2 chewie: ^1.7.1 collection: ^1.17.2 + connectivity_plus: ^5.0.2 cupertino_icons: any desktop_drop: ^0.4.4 desktop_notifications: ^0.6.3 device_info_plus: ^9.1.0 + duration: ^3.0.13 dynamic_color: ^1.6.8 emoji_picker_flutter: ^1.6.3 emoji_proposal: ^0.0.1 emojis: ^0.9.9 - #fcm_shared_isolate: ^0.1.0 file_picker: ^6.1.1 flutter: sdk: flutter flutter_app_badger: ^1.5.0 flutter_blurhash: ^0.8.2 flutter_cache_manager: ^3.3.0 + flutter_callkit_incoming: ^2.0.1+2 flutter_foreground_task: ^6.0.0+1 flutter_highlighter: ^0.1.1 flutter_html: ^3.0.0-beta.2 @@ -42,10 +44,11 @@ dependencies: sdk: flutter flutter_map: ^4.0.0 flutter_math_fork: ^0.7.2 - flutter_olm: 1.3.2 # Keep in sync with scripts/prepare-web.sh ! 1.4.0 does currently not build on Android + flutter_olm: 1.3.2 flutter_openssl_crypto: ^0.3.0 flutter_ringtone_player: ^4.0.0+2 flutter_secure_storage: ^9.0.0 + flutter_staggered_grid_view: ^0.7.0 flutter_typeahead: ^4.8.0 flutter_web_auth_2: ^3.0.4 flutter_webrtc: ^0.9.46 @@ -62,6 +65,7 @@ dependencies: keyboard_shortcuts: ^0.1.4 latlong2: ^0.8.1 linkify: ^5.0.0 + livekit_client: ^1.5.6 matrix: ^0.25.6 native_imaging: ^0.1.0 package_info_plus: ^4.0.0 @@ -73,10 +77,10 @@ dependencies: qr_code_scanner: ^1.0.0 qr_flutter: ^4.0.0 receive_sharing_intent: ^1.4.5 - record: 4.4.4 # Upgrade to 5 currently breaks playing on iOS + record: 4.4.4 scroll_to_index: ^3.0.1 share_plus: ^7.2.1 - shared_preferences: ^2.2.0 # Pinned because https://github.com/flutter/flutter/issues/118401 + shared_preferences: ^2.2.0 slugify: ^2.0.0 sqflite: ^2.3.0 sqflite_common_ffi: ^2.3.0+4 @@ -87,6 +91,7 @@ dependencies: unifiedpush: ^5.0.1 universal_html: ^2.2.4 url_launcher: ^6.2.1 + uuid: ^4.3.3 vibration: ^1.8.3 video_compress: ^3.1.1 video_player: ^2.8.1 @@ -160,6 +165,12 @@ dependency_overrides: git: url: https://github.com/TheOneWithTheBraid/keyboard_shortcuts.git ref: null-safety + matrix: + path: ../matrix-dart-sdk + # git: + # url: git@github.com:famedly/matrix-dart-sdk.git + # ref: td/fosdemDemoFork + uuid: ^4.3.3 # blocked upgrade of package_info_plus for null safety # https://github.com/creativecreatorormaybenot/wakelock/pull/203 wakelock_windows: @@ -167,3 +178,4 @@ dependency_overrides: url: https://github.com/chandrabezzo/wakelock.git ref: main path: wakelock_windows/ + diff --git a/scripts/prepare-web.sh b/scripts/prepare-web.sh index 70b15a246a..a201e0c871 100755 --- a/scripts/prepare-web.sh +++ b/scripts/prepare-web.sh @@ -8,3 +8,12 @@ cd assets/js/ && curl -L $DOWNLOAD_PATH > olm.zip && cd ../../ cd assets/js/ && unzip olm.zip && cd ../../ cd assets/js/ && rm olm.zip && cd ../../ cd assets/js/ && mv javascript package && cd ../../ + + +# e2ee worker for livekit. +cd web +git clone https://github.com/flutter-webrtc/dart-webrtc.git -b e2ee/improvements +cd dart-webrtc +dart pub get +dart compile js lib/src/e2ee.worker/e2ee.worker.dart -o ../e2ee.worker.dart.js -m +cd .. && rm -rf dart-webrtc \ No newline at end of file diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc index f3aa995468..332ebf5149 100644 --- a/windows/flutter/generated_plugin_registrant.cc +++ b/windows/flutter/generated_plugin_registrant.cc @@ -6,12 +6,14 @@ #include "generated_plugin_registrant.h" +#include #include #include #include #include #include #include +#include #include #include #include @@ -20,6 +22,8 @@ #include void RegisterPlugins(flutter::PluginRegistry* registry) { + ConnectivityPlusWindowsPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("ConnectivityPlusWindowsPlugin")); DesktopDropPluginRegisterWithRegistrar( registry->GetRegistrarForPlugin("DesktopDropPlugin")); DynamicColorPluginCApiRegisterWithRegistrar( @@ -32,6 +36,8 @@ void RegisterPlugins(flutter::PluginRegistry* registry) { registry->GetRegistrarForPlugin("FlutterSecureStorageWindowsPlugin")); FlutterWebRTCPluginRegisterWithRegistrar( registry->GetRegistrarForPlugin("FlutterWebRTCPlugin")); + LiveKitPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("LiveKitPlugin")); PasteboardPluginRegisterWithRegistrar( registry->GetRegistrarForPlugin("PasteboardPlugin")); PermissionHandlerWindowsPluginRegisterWithRegistrar( diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake index 69d3cc36e0..898ec04a9b 100644 --- a/windows/flutter/generated_plugins.cmake +++ b/windows/flutter/generated_plugins.cmake @@ -3,12 +3,14 @@ # list(APPEND FLUTTER_PLUGIN_LIST + connectivity_plus desktop_drop dynamic_color emoji_picker_flutter file_selector_windows flutter_secure_storage_windows flutter_webrtc + livekit_client pasteboard permission_handler_windows record_windows From fa5bbafff8e3aaca7351602555ad7fb6d8da0674 Mon Sep 17 00:00:00 2001 From: td Date: Tue, 30 Jan 2024 19:23:36 +0100 Subject: [PATCH 02/29] chore: v2 working livekit calls --- lib/config/routes.dart | 49 ++++----- lib/pages/voip/calling_page.dart | 6 +- .../group_call_onboarding_view.dart | 8 +- lib/pages/voip/p2p_call_view/p2p_view.dart | 15 ++- lib/pages/voip/widgets/call_overlay.dart | 3 - lib/pages/voip/widgets/stream_view.dart | 7 +- lib/utils/app_state.dart | 45 +------- lib/utils/voip/call_session_state.dart | 103 +++++++++--------- lib/utils/voip/call_state_proxy.dart | 3 +- lib/utils/voip/group_call_session_state.dart | 7 +- lib/utils/voip/incoming_call.dart | 14 +-- .../livekit_group_call_session_state.dart | 16 ++- lib/utils/voip/voip_plugin.dart | 64 +++++------ pubspec.yaml | 2 +- scripts/prepare-web.sh | 2 +- 15 files changed, 141 insertions(+), 203 deletions(-) diff --git a/lib/config/routes.dart b/lib/config/routes.dart index 93c0d45f3d..a87d6600e1 100644 --- a/lib/config/routes.dart +++ b/lib/config/routes.dart @@ -1,10 +1,10 @@ import 'dart:async'; +import 'package:fluffychat/utils/voip/voip_plugin.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; -import 'package:provider/provider.dart'; import 'package:fluffychat/config/themes.dart'; import 'package:fluffychat/pages/archive/archive.dart'; @@ -33,7 +33,6 @@ import 'package:fluffychat/pages/settings_security/settings_security.dart'; import 'package:fluffychat/pages/settings_style/settings_style.dart'; import 'package:fluffychat/pages/voip/calling_page.dart'; import 'package:fluffychat/pages/voip/group_call_onboarding/group_call_onboarding_view.dart'; -import 'package:fluffychat/utils/app_state.dart'; import 'package:fluffychat/widgets/layouts/empty_page.dart'; import 'package:fluffychat/widgets/layouts/two_column_layout.dart'; import 'package:fluffychat/widgets/log_view.dart'; @@ -103,6 +102,29 @@ abstract class AppRoutes { : child, ), routes: [ + GoRoute( + path: '/rooms/:roomid/call', + pageBuilder: (context, state) => defaultPageBuilder( + context, + VoipPlugin.currentCallProxy == null + ? const Center(child: CircularProgressIndicator()) + : Calling( + voipPlugin: Matrix.of(context).voipPlugin, + proxy: VoipPlugin.currentCallProxy!, + // remoteUserInCall: + // Provider.of(context).remoteUserInCall, + ), + ), + ), + GoRoute( + path: '/rooms/:roomid/group_call_onboarding', + pageBuilder: (context, state) => defaultPageBuilder( + context, + GroupCallOnboardingView( + roomId: state.pathParameters['roomid']!, + ), + ), + ), GoRoute( path: '/rooms', redirect: loggedOutRedirect, @@ -295,29 +317,6 @@ abstract class AppRoutes { ), redirect: loggedOutRedirect, routes: [ - GoRoute( - path: 'call', - pageBuilder: (context, state) => defaultPageBuilder( - context, - Provider.of(context).proxy == null - ? const Center(child: CircularProgressIndicator()) - : Calling( - voipPlugin: Matrix.of(context).voipPlugin, - proxy: Provider.of(context).proxy!, - remoteUserInCall: - Provider.of(context).remoteUserInCall, - ), - ), - ), - GoRoute( - path: 'group_call_onboarding', - pageBuilder: (context, state) => defaultPageBuilder( - context, - GroupCallOnboardingView( - roomId: state.pathParameters['roomid']!, - ), - ), - ), GoRoute( path: 'encryption', pageBuilder: (context, state) => defaultPageBuilder( diff --git a/lib/pages/voip/calling_page.dart b/lib/pages/voip/calling_page.dart index dfd6f50b37..7662b692ac 100644 --- a/lib/pages/voip/calling_page.dart +++ b/lib/pages/voip/calling_page.dart @@ -52,12 +52,12 @@ class Calling extends StatefulWidget { /// when a call is not connected we don't have the remote user, so pass this /// to show the remote user - final User? remoteUserInCall; + // final User? remoteUserInCall; const Calling({ super.key, required this.voipPlugin, required this.proxy, - this.remoteUserInCall, + // this.remoteUserInCall, }); @override @@ -535,7 +535,7 @@ class MyCallingPage extends State { child: Center( child: P2PCallView( call: proxy as CallSessionState, - remoteUserInCall: widget.remoteUserInCall, + voipPlugin: voipPlugin, ), ), diff --git a/lib/pages/voip/group_call_onboarding/group_call_onboarding_view.dart b/lib/pages/voip/group_call_onboarding/group_call_onboarding_view.dart index c3dabcb7e0..01fc112844 100644 --- a/lib/pages/voip/group_call_onboarding/group_call_onboarding_view.dart +++ b/lib/pages/voip/group_call_onboarding/group_call_onboarding_view.dart @@ -1,5 +1,6 @@ import 'dart:math'; +import 'package:fluffychat/utils/voip/voip_plugin.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; @@ -311,17 +312,14 @@ class _GroupCallOnboardingViewState extends State { groupCallSession!, voipPlugin, ); - voipPlugin.currentGroupCallProxy = groupCallProxy; + VoipPlugin.currentCallProxy = groupCallProxy; voipPlugin.connectedTsSinceEpoch = 0; voipPlugin.onHoldMs = 0; await groupCallProxy.enter(_localStream!); - voipPlugin.setupCallAndOpenCallPage( - groupCallProxy, - null, - ); + voipPlugin.setupCallAndOpenCallPage(groupCallProxy); if (mounted) { setState(() { diff --git a/lib/pages/voip/p2p_call_view/p2p_view.dart b/lib/pages/voip/p2p_call_view/p2p_view.dart index 30fb007440..946e9110ae 100644 --- a/lib/pages/voip/p2p_call_view/p2p_view.dart +++ b/lib/pages/voip/p2p_call_view/p2p_view.dart @@ -16,12 +16,10 @@ import '../widgets/stream_view.dart'; class P2PCallView extends StatefulWidget { final CallSessionState call; final VoipPlugin voipPlugin; - final User? remoteUserInCall; const P2PCallView({ super.key, required this.call, required this.voipPlugin, - required this.remoteUserInCall, }); @override @@ -116,7 +114,8 @@ class _P2PCallViewState extends State { // use global context so no other widget in the tree can affect getting this final mediaQuery = MediaQuery.of(FluffyChatApp.appGlobalKey.currentContext!); - + final remoteUser = call.call.room + .unsafeGetUserFromMemoryOrFallback(call.call.inviteeUserId!); final availableHeight = mediaQuery.size.height - (70 + mediaQuery.padding.top + @@ -172,11 +171,11 @@ class _P2PCallViewState extends State { proxy: call, ), SizedBox(height: !expandedMainView ? 32 : 0), - if (widget.remoteUserInCall != null && !call.connected) + if (!call.connected) // outgoing calls initial page Avatar( - mxContent: widget.remoteUserInCall!.avatarUrl, - name: widget.remoteUserInCall!.displayName.toString(), + mxContent: remoteUser.avatarUrl, + name: remoteUser.displayName.toString(), size: min(MediaQuery.of(context).size.height * 0.2, 160), fontSize: 64, client: call.room.client, @@ -220,7 +219,7 @@ class _P2PCallViewState extends State { // show name and org only if voice only and no screen sharing Text( !call.connected - ? widget.remoteUserInCall!.displayName.toString() + ? remoteUser.displayName.toString() : primaryStream!.displayName.toString(), style: Theme.of(context) .textTheme @@ -230,7 +229,7 @@ class _P2PCallViewState extends State { const SizedBox(height: 6), Text( !call.connected - ? widget.remoteUserInCall!.id.domain.toString() + ? remoteUser.id.domain.toString() : primaryStream!.participant.userId.domain.toString(), style: Theme.of(context) .textTheme diff --git a/lib/pages/voip/widgets/call_overlay.dart b/lib/pages/voip/widgets/call_overlay.dart index 012e1e60fa..e485e372f2 100644 --- a/lib/pages/voip/widgets/call_overlay.dart +++ b/lib/pages/voip/widgets/call_overlay.dart @@ -43,9 +43,6 @@ class _CallOverlayState extends State { !widget.callStateProxy.ended && !isGroupCall; - remoteUser = - Provider.of(globalContext, listen: false).remoteUserInCall; - userMediaStreams = List.from(widget.callStateProxy.userMediaStreams); screenSharingStreams = diff --git a/lib/pages/voip/widgets/stream_view.dart b/lib/pages/voip/widgets/stream_view.dart index b47380531b..959610f801 100644 --- a/lib/pages/voip/widgets/stream_view.dart +++ b/lib/pages/voip/widgets/stream_view.dart @@ -94,15 +94,10 @@ class _StreamViewState extends State { ), if (!widget.wrappedStream.videoMuted) isLivekit && videoTrack != null - ? VideoTrackRenderer( - videoTrack!, - fit: RTCVideoViewObjectFit.RTCVideoViewObjectFitContain, - ) + ? VideoTrackRenderer(videoTrack!) : RTCVideoView( widget.wrappedStream.renderer as RTCVideoRenderer, mirror: mirrored, - objectFit: - RTCVideoViewObjectFit.RTCVideoViewObjectFitContain, ), if (widget.wrappedStream.videoMuted) Builder( diff --git a/lib/utils/app_state.dart b/lib/utils/app_state.dart index 14d05369e5..4223fe5b08 100644 --- a/lib/utils/app_state.dart +++ b/lib/utils/app_state.dart @@ -2,21 +2,7 @@ import 'package:flutter/material.dart'; import 'package:matrix/matrix.dart'; -import '../../utils/voip/call_state_proxy.dart'; - class AppState extends ChangeNotifier { - bool? wipe; - String? welcomeMessage; - Profile? userProfile; - - /// set using `setupCallAndOpenCallPage` and manually on incoming call rn. - CallStateProxy? proxy; - Function? confirmPINCallback; - - /// used to set the remote caller user to show incoming/outgoing call screens - /// before a pc is created. - User? remoteUserInCall; - /// used by the call screen minimize button to navigate back to the last /// screen where banner was tapped String? bannerClickedOnPath; @@ -25,13 +11,6 @@ class AppState extends ChangeNotifier { /// using the `removeGlobalBanner` methods. Is shown on all screens Widget? globalBanner; - /// similar to `globalBanner` but shown below it if both banners are set. - /// In non-column mode, it's only shown at the top of `NavScaffold` and nowhere else - Widget? secondaryGlobalBanner; - - /// The [eventId] which has been searched by user. Only used in three column mode. - String? searchedEventId; - /// stores a list of the room ids where user clicked to hide the join group call /// banner List hideGroupCallBanner = []; @@ -42,33 +21,15 @@ class AppState extends ChangeNotifier { /// Use these to set banner anytime in the app void setGlobalBanner(Widget banner, {bool isSecondary = false}) { - if (isSecondary) { - secondaryGlobalBanner = banner; - } else { - globalBanner = banner; - } + globalBanner = banner; + notifyListeners(); } /// Use these to remove the global banner void removeGlobalBanner({bool isSecondary = false}) { - if (isSecondary) { - secondaryGlobalBanner = null; - } else { - globalBanner = null; - } - notifyListeners(); - } - - /// Use to set [searchedEventId]. Only use in three column mode. - void setSearchedEventId(String eventId) { - searchedEventId = eventId; - notifyListeners(); - } + globalBanner = null; - /// Use to remove [searchedEventId]. Only use in three column mode. - void removeSearchedEventId() { - searchedEventId = null; notifyListeners(); } } diff --git a/lib/utils/voip/call_session_state.dart b/lib/utils/voip/call_session_state.dart index 53c62ba178..ea8c3a7abf 100644 --- a/lib/utils/voip/call_session_state.dart +++ b/lib/utils/voip/call_session_state.dart @@ -13,15 +13,15 @@ import 'call_state_proxy.dart'; // maybe make it a singleton? class CallSessionState implements CallStateProxy { - final CallSession call; + final CallSession _call; Function()? callback; final VoipPlugin voipPlugin; AudioPlayer? _outgoingCallAudioPlayer; - CallSessionState(this.call, this.voipPlugin) { + CallSessionState(this._call, this.voipPlugin) { StreamSubscription? proximitySubscription; int onHold = 0; int onUnhold = 0; - call.onCallEventChanged.stream.listen((CallEvent event) async { + _call.onCallEventChanged.stream.listen((CallEvent event) async { Logs().d('[CallSessionState] onCallEventChanged ${event.toString()}'); // if (event == CallEvent.kError) { // await ErrorReporter( @@ -36,7 +36,7 @@ class CallSessionState implements CallStateProxy { event == CallEvent.kLocalHoldUnhold || event == CallEvent.kRemoteHoldUnhold) { if (event == CallEvent.kFeedsChanged) { - await call.tryRemoveStopedStreams(); + await _call.tryRemoveStopedStreams(); } else if ({CallEvent.kLocalHoldUnhold, CallEvent.kRemoteHoldUnhold} .contains(event)) { if (callOnHold) { @@ -51,10 +51,10 @@ class CallSessionState implements CallStateProxy { } }); - call.onCallStateChanged.stream.listen((state) async { + _call.onCallStateChanged.stream.listen((state) async { Logs().d('[CallSessionState] onCallStateChanged ${state.toString()}'); - if (call.isOutgoing) { + if (_call.isOutgoing) { if (state == CallState.kInviteSent) { final player = _outgoingCallAudioPlayer = AudioPlayer(); await player.setLoopMode(LoopMode.all); @@ -103,6 +103,12 @@ class CallSessionState implements CallStateProxy { }); } + @override + GroupCallSession? get groupCall => null; + + @override + CallSession get call => _call; + Future vibrate() async { try { await Vibration.vibrate(duration: 100); @@ -112,35 +118,35 @@ class CallSessionState implements CallStateProxy { } @override - Stream get callEventStream => call.onCallEventChanged.stream; + Stream get callEventStream => _call.onCallEventChanged.stream; @override - Stream get callStateStream => call.onCallStateChanged.stream; + Stream get callStateStream => _call.onCallStateChanged.stream; @override bool get voiceonly => userMediaStreams.every((stream) => stream.videoMuted) && screenSharingStreams.isEmpty; @override - bool get connecting => call.state == CallState.kConnecting; + bool get connecting => _call.state == CallState.kConnecting; @override - bool get answering => call.state == CallState.kCreateAnswer; + bool get answering => _call.state == CallState.kCreateAnswer; @override - bool get connected => call.state == CallState.kConnected; + bool get connected => _call.state == CallState.kConnected; @override - bool get ended => call.state == CallState.kEnded; + bool get ended => _call.state == CallState.kEnded; @override - bool get isOutgoing => call.isOutgoing; + bool get isOutgoing => _call.isOutgoing; @override - bool get ringingPlay => call.state == CallState.kInviteSent; + bool get ringingPlay => _call.state == CallState.kInviteSent; @override Future answer() async { - await call.answer(); + await _call.answer(); callback?.call(); } @@ -151,60 +157,60 @@ class CallSessionState implements CallStateProxy { @override Future hangup() async { - if ({CallState.kRinging, CallState.kFledgling}.contains(call.state)) { - await call.reject(); + if ({CallState.kRinging, CallState.kFledgling}.contains(_call.state)) { + await _call.reject(); } else { - await call.hangup(); + await _call.hangup(); } callback?.call(); } @override - bool get isLocalVideoMuted => call.isLocalVideoMuted; + bool get isLocalVideoMuted => _call.isLocalVideoMuted; @override - bool get isMicrophoneMuted => call.isMicrophoneMuted; + bool get isMicrophoneMuted => _call.isMicrophoneMuted; @override - bool get localHold => call.localHold; + bool get localHold => _call.localHold; @override - bool get remoteOnHold => call.remoteOnHold; + bool get remoteOnHold => _call.remoteOnHold; @override - bool get isScreensharingEnabled => call.screensharingEnabled; + bool get isScreensharingEnabled => _call.screensharingEnabled; @override - bool get callOnHold => call.localHold || call.remoteOnHold; + bool get callOnHold => _call.localHold || _call.remoteOnHold; @override Future setLocalVideoMuted(bool muted) async { - await call.setLocalVideoMuted(muted); + await _call.setLocalVideoMuted(muted); callback?.call(); } @override Future setMicrophoneMuted(bool muted) async { - await call.setMicrophoneMuted(muted); + await _call.setMicrophoneMuted(muted); // TODO(Nico): Refactor this to be more granular callback?.call(); } @override Future setRemoteOnHold(bool onHold) async { - await call.setRemoteOnHold(onHold); + await _call.setRemoteOnHold(onHold); callback?.call(); } @override Future setScreensharingEnabled(bool enabled) async { - await call.setScreensharingEnabled(enabled); + await _call.setScreensharingEnabled(enabled); callback?.call(); } @override String get callState { - switch (call.state) { + switch (_call.state) { case CallState.kCreateAnswer: case CallState.kFledgling: case CallState.kWaitLocalMedia: @@ -231,20 +237,20 @@ class CallSessionState implements CallStateProxy { String state = 'New Call'; @override - WrappedMediaStream? get localUserMediaStream => call.localUserMediaStream; + WrappedMediaStream? get localUserMediaStream => _call.localUserMediaStream; @override WrappedMediaStream? get localScreenSharingStream => - call.localScreenSharingStream; + _call.localScreenSharingStream; @override List get screenSharingStreams { final streams = []; if (connected) { - if (call.remoteScreenSharingStream != null) { - streams.add(call.remoteScreenSharingStream!); + if (_call.remoteScreenSharingStream != null) { + streams.add(_call.remoteScreenSharingStream!); } - if (call.localScreenSharingStream != null) { - streams.add(call.localScreenSharingStream!); + if (_call.localScreenSharingStream != null) { + streams.add(_call.localScreenSharingStream!); } } return streams; @@ -254,11 +260,11 @@ class CallSessionState implements CallStateProxy { List get userMediaStreams { final streams = []; if (connected) { - if (call.remoteUserMediaStream != null) { - streams.add(call.remoteUserMediaStream!); + if (_call.remoteUserMediaStream != null) { + streams.add(_call.remoteUserMediaStream!); } - if (call.localUserMediaStream != null) { - streams.add(call.localUserMediaStream!); + if (_call.localUserMediaStream != null) { + streams.add(_call.localUserMediaStream!); } } return streams; @@ -275,19 +281,16 @@ class CallSessionState implements CallStateProxy { } if (!connected) { - return call.type == CallType.kVoice && !call.isOutgoing - ? call.remoteUserMediaStream // show remote avatar on incoming call - : call.localUserMediaStream; + return _call.type == CallType.kVoice && !_call.isOutgoing + ? _call.remoteUserMediaStream // show remote avatar on incoming call + : _call.localUserMediaStream; } - return call.localScreenSharingStream ?? call.localUserMediaStream; + return _call.localScreenSharingStream ?? _call.localUserMediaStream; } @override - GroupCallSession? get groupCall => null; - - @override - String? get displayName => call.room.getLocalizedDisplayname(); + String? get displayName => _call.room.getLocalizedDisplayname(); @override void onUpdateViewCallback(Function() handler) { @@ -295,12 +298,12 @@ class CallSessionState implements CallStateProxy { } @override - Room get room => call.room; + Room get room => _call.room; @override - Client get client => call.client; + Client get client => _call.client; @override VoipType get type => - call.type == CallType.kVideo ? VoipType.kVideo : VoipType.kVoice; + _call.type == CallType.kVideo ? VoipType.kVideo : VoipType.kVoice; } diff --git a/lib/utils/voip/call_state_proxy.dart b/lib/utils/voip/call_state_proxy.dart index f784e1d190..56a7c65547 100644 --- a/lib/utils/voip/call_state_proxy.dart +++ b/lib/utils/voip/call_state_proxy.dart @@ -24,7 +24,8 @@ abstract class CallStateProxy { Client get client; VoipType get type; GroupCallSession? get groupCall; - + CallSession? get call; + Future answer(); Future hangup(); diff --git a/lib/utils/voip/group_call_session_state.dart b/lib/utils/voip/group_call_session_state.dart index fc474fbbc1..1d8390e63f 100644 --- a/lib/utils/voip/group_call_session_state.dart +++ b/lib/utils/voip/group_call_session_state.dart @@ -86,10 +86,13 @@ class GroupCallSessionState implements CallStateProxy { bool get answering => _groupCall.state == GroupCallState.Entering; @override - GroupCallSession? get groupCall => _groupCall; + GroupCallSession get groupCall => _groupCall; @override - String? get displayName => _groupCall.room.getLocalizedDisplayname(); + CallSession? get call => null; + + @override + String get displayName => _groupCall.room.getLocalizedDisplayname(); @override bool get ended => diff --git a/lib/utils/voip/incoming_call.dart b/lib/utils/voip/incoming_call.dart index 2515f627a4..5a28289707 100644 --- a/lib/utils/voip/incoming_call.dart +++ b/lib/utils/voip/incoming_call.dart @@ -92,24 +92,16 @@ class IncomingCallManager { Future answerCall(String callUUID) async { final keeper = calls[callUUID]!; - // never null because incoming call thingy is always triggered after handleNewCall - final callProxy = voipPlugin.currentCallProxy; - final provider = Provider.of( FluffyChatApp.appGlobalKey.currentContext!, listen: false, ); - final remoteUser = - await keeper.call.room.requestUser(keeper.call.inviteeUserId!); - provider.proxy = callProxy; - - provider.remoteUserInCall = remoteUser; - provider.setGlobalBanner( - CallBanner(proxy: callProxy!), + CallBanner(proxy: VoipPlugin.currentCallProxy!), ); - FluffyChatApp.router.go('/rooms/${callProxy.room.id}/call'); + FluffyChatApp.router + .go('/rooms/${VoipPlugin.currentCallProxy!.room.id}/call'); if (!keeper.connected) { Logs().d('[VOIP] answering call'); // Answer Call, don't await because call page is not up yet no loading diff --git a/lib/utils/voip/livekit_group_call_session_state.dart b/lib/utils/voip/livekit_group_call_session_state.dart index d0526d04e7..db024c3ddd 100644 --- a/lib/utils/voip/livekit_group_call_session_state.dart +++ b/lib/utils/voip/livekit_group_call_session_state.dart @@ -94,10 +94,13 @@ class LiveKitGroupCallSessionState implements CallStateProxy { bool get answering => _groupCall.state == GroupCallState.Entering; @override - GroupCallSession? get groupCall => _groupCall; + GroupCallSession get groupCall => _groupCall; @override - String? get displayName => _groupCall.room.getLocalizedDisplayname(); + CallSession? get call => null; + + @override + String get displayName => _groupCall.room.getLocalizedDisplayname(); @override bool get ended => @@ -237,7 +240,7 @@ class LiveKitGroupCallSessionState implements CallStateProxy { } @override - VoipType get type => VoipType.kLivekit; + VoipType get type => VoipType.kGroup; @override bool get voiceonly => false; @@ -264,9 +267,6 @@ class LiveKitGroupCallSessionState implements CallStateProxy { microphone: livekit.TrackOption(enabled: !stream.audioMuted), camera: livekit.TrackOption(enabled: !stream.videoMuted), ); - // we don't need the preview stream anymore? I think - await stream.disposeRenderer(); - await stopMediaStream(stream.stream!); // create new room lkRoom = livekit.Room( @@ -302,6 +302,10 @@ class LiveKitGroupCallSessionState implements CallStateProxy { Logs().i( 'Connected to room ${lkRoom?.name}, local participant => ${lkRoom?.localParticipant!.identity}', ); + + // we don't need the preview stream anymore? I think + await stream.disposeRenderer(); + await stopMediaStream(stream.stream!); } Future _sortParticipants(GroupCallSession groupCall) async { diff --git a/lib/utils/voip/voip_plugin.dart b/lib/utils/voip/voip_plugin.dart index a1251dbaa0..a051cefc07 100644 --- a/lib/utils/voip/voip_plugin.dart +++ b/lib/utils/voip/voip_plugin.dart @@ -2,6 +2,7 @@ import 'dart:async'; import 'dart:core'; import 'dart:io'; +import 'package:fluffychat/utils/voip/livekit_group_call_session_state.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; @@ -27,7 +28,7 @@ import '../../utils/voip/call_state_proxy.dart'; import '../../utils/voip/famedly_key_provider_impl.dart'; import '../../utils/voip/incoming_call.dart'; -enum VoipType { kVoice, kVideo, kGroup, kLivekit } +enum VoipType { kVoice, kVideo, kGroup } class MediaDevicesWrapper extends MediaDevices { MediaDevicesWrapper() { @@ -107,6 +108,7 @@ class MediaDevicesWrapper extends MediaDevices { class VoipPlugin implements WebRTCDelegate { static VoipPlugin? _instance; + static CallStateProxy? currentCallProxy; final Client client; @@ -139,25 +141,19 @@ class VoipPlugin implements WebRTCDelegate { late FamedlyAppEncryptionKeyProviderImpl encryptionKeyProvider; - /// These are used to handle the calls all over the app with `voipPlugin.currentCallProxy` - /// or `voipPlugin.currentGroupCallProxy` - CallSessionState? currentCallProxy; - CallStateProxy? currentGroupCallProxy; - late VoIP voip; ConnectivityResult? _currentConnectivity; /// the only time this is null is when `FamedlyApp` is not in the tree (eg: call when the app is not open) BuildContext get globalContext => FluffyChatApp.appGlobalKey.currentContext!; - void setupCallAndOpenCallPage(CallStateProxy proxy, User? user) { + void setupCallAndOpenCallPage(CallStateProxy proxy) { final provider = Provider.of(globalContext, listen: false); - provider.proxy = proxy; - provider.remoteUserInCall = user; if (!FluffyThemes.isColumnMode(globalContext)) { provider.setGlobalBanner(CallBanner(proxy: proxy, voipPlugin: this)); } + if (FluffyThemes.isColumnMode(globalContext) && currentCall != null && currentGroupCall == null && @@ -228,13 +224,7 @@ class VoipPlugin implements WebRTCDelegate { if (!call.isOutgoing && !kIsWeb && Platform.isAndroid) { await IncomingCallManager(this).showIncomingCall(call); } else { - final user = call.room.unsafeGetUserFromMemoryOrFallback( - call.inviteeUserId!, - ); - setupCallAndOpenCallPage( - callProxy, - user, - ); + setupCallAndOpenCallPage(callProxy); } client.backgroundSync = true; } @@ -243,8 +233,9 @@ class VoipPlugin implements WebRTCDelegate { Future handleCallEnded(CallSession call) async { try { Logs().d('[VoipPlugin] handleCallEnded'); - if (currentGroupCall == null && - currentCallProxy?.call.callId == call.callId) { + if (currentCallProxy != null && + currentCallProxy is CallSessionState && + currentCallProxy!.call?.callId == call.callId) { if (!kIsWeb && Platform.isAndroid) { await IncomingCallManager(this).endIncomingCall(call.callId); await FlutterForegroundTask.stopService(); @@ -256,10 +247,8 @@ class VoipPlugin implements WebRTCDelegate { final provider = Provider.of(globalContext, listen: false); provider.removeGlobalBanner(); removeCallPopupOverlay(); - provider.remoteUserInCall = null; - provider.proxy = null; - currentCallProxy = null; + final path = '/rooms/${call.room.id}'; if (FluffyChatApp.router.routerDelegate.currentConfiguration.uri @@ -281,16 +270,17 @@ class VoipPlugin implements WebRTCDelegate { @override Future handleGroupCallEnded(GroupCallSession groupCall) async { try { - if (currentGroupCallProxy?.groupCall?.groupCallId == - groupCall.groupCallId) { + if ((currentCallProxy is GroupCallSession || + currentCallProxy is LiveKitGroupCallSessionState) && + currentCallProxy != null && + currentCallProxy?.groupCall?.groupCallId == groupCall.groupCallId) { if (!kIsWeb && Platform.isAndroid) { await FlutterForegroundTask.stopService(); } final provider = Provider.of(globalContext, listen: false); provider.removeGlobalBanner(); removeCallPopupOverlay(); - provider.proxy = null; - currentGroupCallProxy = null; + currentCallProxy = null; final roomPath = '/rooms/${groupCall.room.id}'; if (FluffyChatApp.router.routerDelegate.currentConfiguration.uri @@ -396,12 +386,10 @@ class VoipPlugin implements WebRTCDelegate { FocusManager.instance.primaryFocus?.unfocus(); final voipPlugin = Matrix.of(context).voipPlugin; - if ({VoipType.kVideo, VoipType.kVoice}.contains(callType)) { + if ({VoipType.kVideo, VoipType.kVoice}.contains(callType) && + room.isDirectChat) { if (currentCallProxy != null) { - setupCallAndOpenCallPage( - currentCallProxy!, - room.unsafeGetUserFromMemoryOrFallback(room.directChatMatrixID!), - ); + setupCallAndOpenCallPage(currentCallProxy!); return; } @@ -413,19 +401,17 @@ class VoipPlugin implements WebRTCDelegate { ); // force null check here because handleNewCall is triggered in the above line anyway - setupCallAndOpenCallPage( - currentCallProxy!, - room.unsafeGetUserFromMemoryOrFallback(room.directChatMatrixID!), - ); + setupCallAndOpenCallPage(currentCallProxy!); } catch (e, s) { Logs().e('startCall', e, s); } - return; - } else { + } else if (callType == VoipType.kGroup) { if (voipPlugin.currentGroupCall != null && - currentGroupCallProxy != null) { - setupCallAndOpenCallPage(currentGroupCallProxy!, null); - } else if (currentGroupCallProxy == null) { + (currentCallProxy is GroupCallSession || + currentCallProxy is LiveKitGroupCallSessionState) && + currentCallProxy != null) { + setupCallAndOpenCallPage(currentCallProxy!); + } else if (currentCallProxy == null) { FluffyChatApp.router.go('/rooms/${room.id}/group_call_onboarding'); } } diff --git a/pubspec.yaml b/pubspec.yaml index aee82fd828..b80ce45b55 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -96,7 +96,7 @@ dependencies: video_compress: ^3.1.1 video_player: ^2.8.1 wakelock_plus: ^1.1.3 - webrtc_interface: ^1.0.13 + webrtc_interface: ^1.1.2 dev_dependencies: dart_code_metrics: ^5.7.5 diff --git a/scripts/prepare-web.sh b/scripts/prepare-web.sh index a201e0c871..66690388ce 100755 --- a/scripts/prepare-web.sh +++ b/scripts/prepare-web.sh @@ -1,5 +1,5 @@ #!/bin/sh -ve -rm -r assets/js/package +rm -rf assets/js/package OLM_VERSION=$(cat pubspec.yaml | yq .dependencies.flutter_olm) DOWNLOAD_PATH="https://github.com/famedly/olm/releases/download/v$OLM_VERSION/olm.zip" From f314b286db2310eda511ea1329980e52297f29c2 Mon Sep 17 00:00:00 2001 From: td Date: Wed, 31 Jan 2024 16:57:38 +0100 Subject: [PATCH 03/29] chore: fix calls route --- lib/config/routes.dart | 46 +++++++++++++++++++++--------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/lib/config/routes.dart b/lib/config/routes.dart index a87d6600e1..d74875ad42 100644 --- a/lib/config/routes.dart +++ b/lib/config/routes.dart @@ -84,6 +84,29 @@ abstract class AppRoutes { const LogViewer(), ), ), + GoRoute( + path: '/rooms/:roomid/call', + pageBuilder: (context, state) => defaultPageBuilder( + context, + VoipPlugin.currentCallProxy == null + ? const Center(child: CircularProgressIndicator()) + : Calling( + voipPlugin: Matrix.of(context).voipPlugin, + proxy: VoipPlugin.currentCallProxy!, + // remoteUserInCall: + // Provider.of(context).remoteUserInCall, + ), + ), + ), + GoRoute( + path: '/rooms/:roomid/group_call_onboarding', + pageBuilder: (context, state) => defaultPageBuilder( + context, + GroupCallOnboardingView( + roomId: state.pathParameters['roomid']!, + ), + ), + ), ShellRoute( pageBuilder: (context, state, child) => defaultPageBuilder( context, @@ -102,29 +125,6 @@ abstract class AppRoutes { : child, ), routes: [ - GoRoute( - path: '/rooms/:roomid/call', - pageBuilder: (context, state) => defaultPageBuilder( - context, - VoipPlugin.currentCallProxy == null - ? const Center(child: CircularProgressIndicator()) - : Calling( - voipPlugin: Matrix.of(context).voipPlugin, - proxy: VoipPlugin.currentCallProxy!, - // remoteUserInCall: - // Provider.of(context).remoteUserInCall, - ), - ), - ), - GoRoute( - path: '/rooms/:roomid/group_call_onboarding', - pageBuilder: (context, state) => defaultPageBuilder( - context, - GroupCallOnboardingView( - roomId: state.pathParameters['roomid']!, - ), - ), - ), GoRoute( path: '/rooms', redirect: loggedOutRedirect, From 4166058a5416d8805864f450dc4a3a02cca550b8 Mon Sep 17 00:00:00 2001 From: td Date: Wed, 31 Jan 2024 17:03:49 +0100 Subject: [PATCH 04/29] chore: use matrix from git --- pubspec.lock | 8 +++++--- pubspec.yaml | 8 ++++---- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/pubspec.lock b/pubspec.lock index 13bd7846d4..ea687c0ba5 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1216,9 +1216,11 @@ packages: matrix: dependency: "direct main" description: - path: "../matrix-dart-sdk" - relative: true - source: path + path: "." + ref: "td/fosdemDemoFork" + resolved-ref: "7f76ad2f2b6d4bf23a8aaaf42c429791bf9a904b" + url: "git@github.com:famedly/matrix-dart-sdk.git" + source: git version: "0.25.6" matrix_api_lite: dependency: transitive diff --git a/pubspec.yaml b/pubspec.yaml index 176baa4197..762b394617 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -166,10 +166,10 @@ dependency_overrides: url: https://github.com/TheOneWithTheBraid/keyboard_shortcuts.git ref: null-safety matrix: - path: ../matrix-dart-sdk - # git: - # url: git@github.com:famedly/matrix-dart-sdk.git - # ref: td/fosdemDemoFork + # path: ../matrix-dart-sdk + git: + url: git@github.com:famedly/matrix-dart-sdk.git + ref: td/fosdemDemoFork uuid: ^4.3.3 # blocked upgrade of package_info_plus for null safety # https://github.com/creativecreatorormaybenot/wakelock/pull/203 From 1a1f3afde2b8d6bcae2d49a7fa38e8eaa51d5f2f Mon Sep 17 00:00:00 2001 From: td Date: Wed, 31 Jan 2024 17:50:50 +0100 Subject: [PATCH 05/29] chore: fix remote user in incoming call --- lib/pages/voip/p2p_call_view/p2p_view.dart | 10 ++-- lib/pages/voip/widgets/call_overlay.dart | 22 +++++--- lib/utils/voip/incoming_call.dart | 4 +- lib/widgets/fluffy_chat_app.dart | 40 ++++++++------ lib/widgets/layouts/two_column_layout.dart | 64 ++++++++++++++++++---- lib/widgets/matrix.dart | 3 +- pubspec.lock | 4 +- pubspec.yaml | 2 +- 8 files changed, 99 insertions(+), 50 deletions(-) diff --git a/lib/pages/voip/p2p_call_view/p2p_view.dart b/lib/pages/voip/p2p_call_view/p2p_view.dart index 946e9110ae..b072695abd 100644 --- a/lib/pages/voip/p2p_call_view/p2p_view.dart +++ b/lib/pages/voip/p2p_call_view/p2p_view.dart @@ -114,8 +114,6 @@ class _P2PCallViewState extends State { // use global context so no other widget in the tree can affect getting this final mediaQuery = MediaQuery.of(FluffyChatApp.appGlobalKey.currentContext!); - final remoteUser = call.call.room - .unsafeGetUserFromMemoryOrFallback(call.call.inviteeUserId!); final availableHeight = mediaQuery.size.height - (70 + mediaQuery.padding.top + @@ -174,8 +172,8 @@ class _P2PCallViewState extends State { if (!call.connected) // outgoing calls initial page Avatar( - mxContent: remoteUser.avatarUrl, - name: remoteUser.displayName.toString(), + mxContent: call.call.remoteUser!.avatarUrl, + name: call.call.remoteUser!.displayName.toString(), size: min(MediaQuery.of(context).size.height * 0.2, 160), fontSize: 64, client: call.room.client, @@ -219,7 +217,7 @@ class _P2PCallViewState extends State { // show name and org only if voice only and no screen sharing Text( !call.connected - ? remoteUser.displayName.toString() + ? call.call.remoteUser!.displayName.toString() : primaryStream!.displayName.toString(), style: Theme.of(context) .textTheme @@ -229,7 +227,7 @@ class _P2PCallViewState extends State { const SizedBox(height: 6), Text( !call.connected - ? remoteUser.id.domain.toString() + ? call.call.remoteUser!.id.domain.toString() : primaryStream!.participant.userId.domain.toString(), style: Theme.of(context) .textTheme diff --git a/lib/pages/voip/widgets/call_overlay.dart b/lib/pages/voip/widgets/call_overlay.dart index e485e372f2..00df2ddc7a 100644 --- a/lib/pages/voip/widgets/call_overlay.dart +++ b/lib/pages/voip/widgets/call_overlay.dart @@ -53,9 +53,8 @@ class _CallOverlayState extends State { }); } - late bool p2pCallConnecting; + bool? p2pCallConnecting; bool hovering = false; - late User? remoteUser; void toCallAndRemovePopup() { Provider.of(globalContext, listen: false).bannerClickedOnPath = @@ -91,7 +90,7 @@ class _CallOverlayState extends State { setupCall(); return SafeArea( - child: p2pCallConnecting + child: p2pCallConnecting ?? true ? Align( heightFactor: 1.0, alignment: Alignment.center, @@ -107,7 +106,7 @@ class _CallOverlayState extends State { border: Border.all(), borderRadius: const BorderRadius.all(Radius.circular(20)), ), - child: remoteUser == null + child: widget.callStateProxy.call!.remoteUser == null ? const Center(child: CircularProgressIndicator()) : Column( mainAxisAlignment: MainAxisAlignment.start, @@ -165,8 +164,11 @@ class _CallOverlayState extends State { height: 32.0, ), Avatar( - mxContent: remoteUser!.avatarUrl, - name: remoteUser!.displayName.toString(), + mxContent: widget + .callStateProxy.call!.remoteUser!.avatarUrl, + name: widget.callStateProxy.call!.remoteUser! + .displayName + .toString(), size: 96, fontSize: 16, client: widget.callStateProxy.client, @@ -175,7 +177,9 @@ class _CallOverlayState extends State { height: 24.0, ), Text( - remoteUser!.displayName.toString(), + widget.callStateProxy.call!.remoteUser! + .displayName + .toString(), style: Theme.of(context) .textTheme .bodyLarge! @@ -187,7 +191,9 @@ class _CallOverlayState extends State { height: 4.0, ), Text( - remoteUser!.id.domain.toString(), + widget + .callStateProxy.call!.remoteUser!.id.domain + .toString(), ), const SizedBox( height: 24.0, diff --git a/lib/utils/voip/incoming_call.dart b/lib/utils/voip/incoming_call.dart index 5a28289707..23fd7affe7 100644 --- a/lib/utils/voip/incoming_call.dart +++ b/lib/utils/voip/incoming_call.dart @@ -130,7 +130,7 @@ class IncomingCallManager { final callKeeper = CallKeeper(this, call); final l10n = await WidgetsBinding.instance.platformDispatcher.loadL10n(); addCall(call.callUUID, callKeeper); - final remoteUser = await call.room.requestUser(call.inviteeUserId!); + final remoteUser = await call.room.requestUser(call.remoteUserId!); final avatarMxc = await call.client.getAvatarUrl(remoteUser?.id ?? ''); final avatarUrl = avatarMxc?.getThumbnail( call.client, @@ -161,7 +161,7 @@ class IncomingCallManager { Future showMissedCallNotification(CallSession call) async { final l10n = await WidgetsBinding.instance.platformDispatcher.loadL10n(); - final remoteUser = await call.room.requestUser(call.inviteeUserId!); + final remoteUser = await call.room.requestUser(call.remoteUserId!); final avatarMxc = await call.client.getAvatarUrl(remoteUser?.id ?? ''); final avatarUrl = avatarMxc?.getThumbnail( call.client, diff --git a/lib/widgets/fluffy_chat_app.dart b/lib/widgets/fluffy_chat_app.dart index 4cce23955a..22130a586a 100644 --- a/lib/widgets/fluffy_chat_app.dart +++ b/lib/widgets/fluffy_chat_app.dart @@ -43,6 +43,8 @@ class FluffyChatApp extends StatelessWidget { static final appGlobalKey = GlobalKey(); + static final appState = AppState(); + @override Widget build(BuildContext context) { return ThemeBuilder( @@ -56,27 +58,29 @@ class FluffyChatApp extends StatelessWidget { localizationsDelegates: L10n.localizationsDelegates, supportedLocales: L10n.supportedLocales, routerConfig: router, - builder: (context, child) => ChangeNotifierProvider.value( - key: ValueKey(themeMode), - value: AppState(), - child: AppLockWidget( - pincode: pincode, - clients: clients, - // Need a navigator above the Matrix widget for - // displaying dialogs - child: Navigator( - onGenerateRoute: (_) => MaterialPageRoute( - builder: (_) => Matrix( - key: appGlobalKey, - clients: clients, - voipPlugins: voipPlugins, - store: store, - child: testWidget ?? child, + builder: (context, child) { + return ChangeNotifierProvider.value( + key: ValueKey(themeMode), + value: appState, + child: AppLockWidget( + pincode: pincode, + clients: clients, + // Need a navigator above the Matrix widget for + // displaying dialogs + child: Navigator( + onGenerateRoute: (_) => MaterialPageRoute( + builder: (_) => Matrix( + key: appGlobalKey, + clients: clients, + voipPlugins: voipPlugins, + store: store, + child: testWidget ?? child, + ), ), ), ), - ), - ), + ); + }, ), ); } diff --git a/lib/widgets/layouts/two_column_layout.dart b/lib/widgets/layouts/two_column_layout.dart index a6f4c8bdf6..d7f660e472 100644 --- a/lib/widgets/layouts/two_column_layout.dart +++ b/lib/widgets/layouts/two_column_layout.dart @@ -1,4 +1,9 @@ +import 'package:fluffychat/pages/global_banner_scaffold.dart'; +import 'package:fluffychat/utils/app_state.dart'; +import 'package:fluffychat/widgets/matrix.dart'; import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; class TwoColumnLayout extends StatelessWidget { final Widget mainView; @@ -15,21 +20,56 @@ class TwoColumnLayout extends StatelessWidget { Widget build(BuildContext context) { return ScaffoldMessenger( child: Scaffold( - body: Row( + body: Column( children: [ - Container( - clipBehavior: Clip.antiAlias, - decoration: const BoxDecoration(), - width: 360.0 + (displayNavigationRail ? 64 : 0), - child: mainView, - ), - Container( - width: 1.0, - color: Theme.of(context).dividerColor, + Selector( + selector: (_, state) => state.globalBanner, + builder: (context, banner, _) { + final showBanner = !GlobalBannerScaffold.ignoreBannerRoutes.any( + (route) => GoRouter.of(context) + .routerDelegate + .currentConfiguration + .uri + .toString() + .contains(route), + ) && + Matrix.of(context).client.isLogged(); + return AnimatedSize( + duration: const Duration(milliseconds: 200), + curve: Curves.easeInOut, + child: Column( + children: [ + if (showBanner && banner != null) + Padding( + padding: const EdgeInsets.only( + top: 8.0, + ), + child: banner, + ), + ], + ), + ); + }, ), Expanded( - child: ClipRRect( - child: sideView, + child: Row( + children: [ + Container( + clipBehavior: Clip.antiAlias, + decoration: const BoxDecoration(), + width: 360.0 + (displayNavigationRail ? 64 : 0), + child: mainView, + ), + Container( + width: 1.0, + color: Theme.of(context).dividerColor, + ), + Expanded( + child: ClipRRect( + child: sideView, + ), + ), + ], ), ), ], diff --git a/lib/widgets/matrix.dart b/lib/widgets/matrix.dart index 62bf604d95..1a56d55231 100644 --- a/lib/widgets/matrix.dart +++ b/lib/widgets/matrix.dart @@ -1,6 +1,7 @@ import 'dart:async'; import 'dart:convert'; +import 'package:fluffychat/pages/global_banner_scaffold.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; @@ -478,7 +479,7 @@ class MatrixState extends State with WidgetsBindingObserver { Widget build(BuildContext context) { return Provider( create: (_) => this, - child: widget.child, + child: GlobalBannerScaffold(child: widget.child ?? Container()), ); } } diff --git a/pubspec.lock b/pubspec.lock index ea687c0ba5..d24c33b6f0 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1218,8 +1218,8 @@ packages: description: path: "." ref: "td/fosdemDemoFork" - resolved-ref: "7f76ad2f2b6d4bf23a8aaaf42c429791bf9a904b" - url: "git@github.com:famedly/matrix-dart-sdk.git" + resolved-ref: ab629bb44715ed3a476b0a2409f43731741712ce + url: "https://github.com/famedly/matrix-dart-sdk.git" source: git version: "0.25.6" matrix_api_lite: diff --git a/pubspec.yaml b/pubspec.yaml index 762b394617..ddd76564f3 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -168,7 +168,7 @@ dependency_overrides: matrix: # path: ../matrix-dart-sdk git: - url: git@github.com:famedly/matrix-dart-sdk.git + url: https://github.com/famedly/matrix-dart-sdk.git ref: td/fosdemDemoFork uuid: ^4.3.3 # blocked upgrade of package_info_plus for null safety From 460027d5f2fd80e48a123f9dd3e35a137cd01b66 Mon Sep 17 00:00:00 2001 From: td Date: Wed, 31 Jan 2024 18:59:12 +0100 Subject: [PATCH 06/29] fix: call redirection if current call is null --- lib/config/routes.dart | 14 ++++++++++++-- lib/widgets/layouts/two_column_layout.dart | 8 +++++--- lib/widgets/matrix.dart | 2 +- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/lib/config/routes.dart b/lib/config/routes.dart index 6f89cd8d8e..4bfa9c8601 100644 --- a/lib/config/routes.dart +++ b/lib/config/routes.dart @@ -4,6 +4,7 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; +import 'package:matrix/matrix.dart'; import 'package:fluffychat/config/themes.dart'; import 'package:fluffychat/pages/archive/archive.dart'; @@ -85,6 +86,17 @@ abstract class AppRoutes { ), ), GoRoute( + redirect: (context, state) { + if (VoipPlugin.currentCallProxy == null) { + final parts = state.uri.path.split('/'); + final redirectPath = '/${parts[1]}/${parts[2]}'; + Logs().w( + '[GoRouter] voip currentCallProxy was null, redirecting to $redirectPath', + ); + return redirectPath; + } + return null; + }, path: '/rooms/:roomid/call', pageBuilder: (context, state) => defaultPageBuilder( context, @@ -93,8 +105,6 @@ abstract class AppRoutes { : Calling( voipPlugin: Matrix.of(context).voipPlugin, proxy: VoipPlugin.currentCallProxy!, - // remoteUserInCall: - // Provider.of(context).remoteUserInCall, ), ), ), diff --git a/lib/widgets/layouts/two_column_layout.dart b/lib/widgets/layouts/two_column_layout.dart index d7f660e472..13355e5454 100644 --- a/lib/widgets/layouts/two_column_layout.dart +++ b/lib/widgets/layouts/two_column_layout.dart @@ -1,10 +1,12 @@ -import 'package:fluffychat/pages/global_banner_scaffold.dart'; -import 'package:fluffychat/utils/app_state.dart'; -import 'package:fluffychat/widgets/matrix.dart'; import 'package:flutter/material.dart'; + import 'package:go_router/go_router.dart'; import 'package:provider/provider.dart'; +import 'package:fluffychat/pages/global_banner_scaffold.dart'; +import 'package:fluffychat/utils/app_state.dart'; +import 'package:fluffychat/widgets/matrix.dart'; + class TwoColumnLayout extends StatelessWidget { final Widget mainView; final Widget sideView; diff --git a/lib/widgets/matrix.dart b/lib/widgets/matrix.dart index 1a56d55231..546b701401 100644 --- a/lib/widgets/matrix.dart +++ b/lib/widgets/matrix.dart @@ -1,7 +1,6 @@ import 'dart:async'; import 'dart:convert'; -import 'package:fluffychat/pages/global_banner_scaffold.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; @@ -19,6 +18,7 @@ import 'package:shared_preferences/shared_preferences.dart'; import 'package:universal_html/html.dart' as html; import 'package:url_launcher/url_launcher_string.dart'; +import 'package:fluffychat/pages/global_banner_scaffold.dart'; import 'package:fluffychat/utils/client_manager.dart'; import 'package:fluffychat/utils/init_with_restore.dart'; import 'package:fluffychat/utils/localized_exception_extension.dart'; From 62d018dd023a3bdd01bd660b6af9e84ee469ef52 Mon Sep 17 00:00:00 2001 From: td Date: Wed, 31 Jan 2024 19:02:17 +0100 Subject: [PATCH 07/29] chore: fix ios builds? --- ios/Podfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/Podfile b/ios/Podfile index a069cc7946..3bc280d30a 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -platform :ios, '12.0' +platform :ios, '12.1' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' From ae27568ddbcc37850008cf8fb4406e3cf2b422a2 Mon Sep 17 00:00:00 2001 From: td Date: Wed, 31 Jan 2024 19:04:19 +0100 Subject: [PATCH 08/29] chore: make sure web is setup before analyzing --- .github/workflows/integrate.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/integrate.yaml b/.github/workflows/integrate.yaml index cacb3b53f4..e25fb018b6 100644 --- a/.github/workflows/integrate.yaml +++ b/.github/workflows/integrate.yaml @@ -14,6 +14,7 @@ jobs: with: flutter-version: ${{ env.FLUTTER_VERSION }} cache: true + - run: ./scripts/prepare-web.sh - run: flutter pub get - name: Check formatting run: dart format lib/ test/ --set-exit-if-changed From 1d9a9c1bc0068558c4f3314f7ca9ae702b696509 Mon Sep 17 00:00:00 2001 From: td Date: Wed, 31 Jan 2024 19:10:34 +0100 Subject: [PATCH 09/29] chore: skip analyze, fix later --- .github/workflows/integrate.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/integrate.yaml b/.github/workflows/integrate.yaml index e25fb018b6..c2c43eb6c7 100644 --- a/.github/workflows/integrate.yaml +++ b/.github/workflows/integrate.yaml @@ -23,7 +23,7 @@ jobs: - run: flutter analyze - name: Apply google services patch run: git apply ./scripts/enable-android-google-services.patch - - run: flutter analyze + # - run: flutter analyze - run: flutter test build_debug_apk: From ca525fc307fdd032635f1e19718fdf29b1c7f93d Mon Sep 17 00:00:00 2001 From: td Date: Wed, 31 Jan 2024 19:22:24 +0100 Subject: [PATCH 10/29] chore: gh pages --- .github/workflows/integrate.yaml | 43 ++++++++++++++++++++++++++++++-- 1 file changed, 41 insertions(+), 2 deletions(-) diff --git a/.github/workflows/integrate.yaml b/.github/workflows/integrate.yaml index c2c43eb6c7..ef7c749c10 100644 --- a/.github/workflows/integrate.yaml +++ b/.github/workflows/integrate.yaml @@ -42,7 +42,7 @@ jobs: - run: flutter pub get - run: flutter build apk --debug - build_debug_web: + build_web: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 @@ -51,10 +51,49 @@ jobs: with: flutter-version: ${{ env.FLUTTER_VERSION }} cache: true + - name: Install dependencies + run: sudo apt-get update && sudo apt-get install nodejs -y + - name: Remove Emoji Font + run: | + rm -rf fonts/NotoEmoji + yq -i 'del( .flutter.fonts[] | select(.family == "NotoEmoji") )' pubspec.yaml - run: flutter pub get - name: Prepare web run: ./scripts/prepare-web.sh - - run: flutter build web + - name: Build Release Web + run: flutter build web --dart-define=FLUTTER_WEB_CANVASKIT_URL=canvaskit/ --release --source-maps --base-href "/" + # - name: Create archive + # run: tar -czf fluffychat-web.tar.gz build/web/ + - name: Upload Web Build + uses: actions/upload-artifact@v4 + with: + name: web + path: build/web/ + + + deploy_github_pages: + needs: build_web + permissions: + pages: write + id-token: write + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + steps: + - uses: actions/download-artifact@v4 + with: + name: web + path: . + - run: ls -la + - uses: actions/configure-pages@v4 + - uses: actions/upload-pages-artifact@v2 + with: + path: . + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v2 + build_debug_linux: runs-on: ubuntu-latest From afb0f60be34873ced76a1e1fa89778c2465a7a3c Mon Sep 17 00:00:00 2001 From: td Date: Wed, 31 Jan 2024 19:27:06 +0100 Subject: [PATCH 11/29] chore: bring back analyze --- .github/workflows/integrate.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/integrate.yaml b/.github/workflows/integrate.yaml index ef7c749c10..cadb63651d 100644 --- a/.github/workflows/integrate.yaml +++ b/.github/workflows/integrate.yaml @@ -23,7 +23,7 @@ jobs: - run: flutter analyze - name: Apply google services patch run: git apply ./scripts/enable-android-google-services.patch - # - run: flutter analyze + - run: flutter analyze - run: flutter test build_debug_apk: From bb7c2f69a272671a242c4684c26b95a42f92f2eb Mon Sep 17 00:00:00 2001 From: td Date: Wed, 31 Jan 2024 19:28:46 +0100 Subject: [PATCH 12/29] chore: fix base href --- .github/workflows/integrate.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/integrate.yaml b/.github/workflows/integrate.yaml index cadb63651d..17baf5f1e6 100644 --- a/.github/workflows/integrate.yaml +++ b/.github/workflows/integrate.yaml @@ -61,7 +61,7 @@ jobs: - name: Prepare web run: ./scripts/prepare-web.sh - name: Build Release Web - run: flutter build web --dart-define=FLUTTER_WEB_CANVASKIT_URL=canvaskit/ --release --source-maps --base-href "/" + run: flutter build web --dart-define=FLUTTER_WEB_CANVASKIT_URL=canvaskit/ --release --source-maps --base-href "/fluffychat/" # - name: Create archive # run: tar -czf fluffychat-web.tar.gz build/web/ - name: Upload Web Build From f33fbc7824793d8a30eea132b1d34403bbd1557a Mon Sep 17 00:00:00 2001 From: td Date: Wed, 31 Jan 2024 19:38:30 +0100 Subject: [PATCH 13/29] chore: fix base href --- .github/workflows/integrate.yaml | 2 +- web/index.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/integrate.yaml b/.github/workflows/integrate.yaml index 17baf5f1e6..cda849f728 100644 --- a/.github/workflows/integrate.yaml +++ b/.github/workflows/integrate.yaml @@ -61,7 +61,7 @@ jobs: - name: Prepare web run: ./scripts/prepare-web.sh - name: Build Release Web - run: flutter build web --dart-define=FLUTTER_WEB_CANVASKIT_URL=canvaskit/ --release --source-maps --base-href "/fluffychat/" + run: flutter build web --dart-define=FLUTTER_WEB_CANVASKIT_URL=canvaskit/ --release --source-maps # - name: Create archive # run: tar -czf fluffychat-web.tar.gz build/web/ - name: Upload Web Build diff --git a/web/index.html b/web/index.html index 3a3fdc773a..4b43c6a8db 100644 --- a/web/index.html +++ b/web/index.html @@ -15,7 +15,7 @@ This is a placeholder for base href that will be replaced by the value of the `--base-href` argument provided to `flutter build`. --> - + From 0c752215a31a05536214981737f7915ad59821b9 Mon Sep 17 00:00:00 2001 From: td Date: Wed, 31 Jan 2024 19:44:46 +0100 Subject: [PATCH 14/29] chore: prepare-web.sh --- pubspec.yaml | 2 - scripts/prepare-web.sh | 38 ++++++-- web/Imaging.js | 202 +++++++++++++++++++++++++++++++++++++++++ web/Imaging.wasm | Bin 0 -> 68967 bytes web/index.html | 3 +- web/olm.js | 145 +++++++++++++++++++++++++++++ web/olm.wasm | Bin 0 -> 149747 bytes web/olm_legacy.js | 158 ++++++++++++++++++++++++++++++++ 8 files changed, 538 insertions(+), 10 deletions(-) create mode 100644 web/Imaging.js create mode 100755 web/Imaging.wasm create mode 100644 web/olm.js create mode 100755 web/olm.wasm create mode 100644 web/olm_legacy.js diff --git a/pubspec.yaml b/pubspec.yaml index ddd76564f3..8009fa5fa6 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -121,8 +121,6 @@ flutter: assets: - assets/ - assets/sounds/ - - assets/js/ - - assets/js/package/ fonts: - family: Roboto diff --git a/scripts/prepare-web.sh b/scripts/prepare-web.sh index 66690388ce..8fa8c9b300 100755 --- a/scripts/prepare-web.sh +++ b/scripts/prepare-web.sh @@ -1,14 +1,38 @@ #!/bin/sh -ve -rm -rf assets/js/package +rm -r assets/js || true +mkdir assets/js +cd web/ +# curl -L $(curl -s 'https://api.github.com/repos/famedly/olm/releases' | jq -r '.[0] | .assets | .[0] | .browser_download_url') > olm.zip +curl -L 'https://github.com/famedly/olm/releases/download/v1.3.2/olm.zip' > olm.zip # make sure to sync version with pubspec.yaml +unzip olm.zip +rm olm.zip -OLM_VERSION=$(cat pubspec.yaml | yq .dependencies.flutter_olm) -DOWNLOAD_PATH="https://github.com/famedly/olm/releases/download/v$OLM_VERSION/olm.zip" +# extract olm version and encode it in the files to cache bust +# The first line is a link to source code including tag. +# We extract the version number from the tag by only printing the line matching the sed expression (-n). +# We only print the first capture group, which is 3 digit groups separated by dots. +# macOS sed does not have the + quantifier, so for the first group we emulate it by matching the first digit explicitly. +olm_version=$(sed -n 's,// @source: .*\([[:digit:]][[:digit:]]*\.[[:digit:]]*\.[[:digit:]]*\),\1,p' javascript/olm.js) +sed -i'.bak' "s/olm.js.*\"/olm.js?v=${olm_version}\"/" index.html +sed -i'.bak' "s/olm.wasm/olm.wasm?v=${olm_version}/" javascript/olm.js +rm index.html.bak +rm javascript/olm.js.bak -cd assets/js/ && curl -L $DOWNLOAD_PATH > olm.zip && cd ../../ -cd assets/js/ && unzip olm.zip && cd ../../ -cd assets/js/ && rm olm.zip && cd ../../ -cd assets/js/ && mv javascript package && cd ../../ +mv javascript/* . +rmdir javascript +# curl -L $(curl -s 'https://api.github.com/repos/famedly/dart_native_imaging/releases' | jq -r '.[0] | .assets | .[0] | .browser_download_url') > native_imaging.zip +curl -L 'https://github.com/famedly/dart_native_imaging/releases/download/v0.1.1/native_imaging.zip' > native_imaging.zip # make sure to sync version with pubspec.yaml +unzip native_imaging.zip +mv js/* . +rmdir js +rm native_imaging.zip + + +cd .. +flutter pub get +dart compile js ./web/worker.dart -o ./web/worker.js -m +dart compile js ./web/native_executor.dart -o ./web/native_executor.js -m # e2ee worker for livekit. cd web diff --git a/web/Imaging.js b/web/Imaging.js new file mode 100644 index 0000000000..54e7a0fc2f --- /dev/null +++ b/web/Imaging.js @@ -0,0 +1,202 @@ +var Imaging = (function() { + +var Module = (() => { + var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined; + if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename; + return ( +function(moduleArg = {}) { + +var b=moduleArg,f,k;b.ready=new Promise((a,c)=>{f=a;k=c});var l=Object.assign({},b),n="object"==typeof window,p="function"==typeof importScripts,q="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,r="",t,u,x; +if(q){var fs=require("fs"),y=require("path");r=p?y.dirname(r)+"/":__dirname+"/";t=(a,c)=>{a=a.startsWith("file://")?new URL(a):y.normalize(a);return fs.readFileSync(a,c?void 0:"utf8")};x=a=>{a=t(a,!0);a.buffer||(a=new Uint8Array(a));return a};u=(a,c,d,e=!0)=>{a=a.startsWith("file://")?new URL(a):y.normalize(a);fs.readFile(a,e?void 0:"utf8",(g,h)=>{g?d(g):c(e?h.buffer:h)})};process.argv.slice(2);b.inspect=()=>"[Emscripten Module object]"}else if(n||p)p?r=self.location.href:"undefined"!=typeof document&& +document.currentScript&&(r=document.currentScript.src),_scriptDir&&(r=_scriptDir),0!==r.indexOf("blob:")?r=r.substr(0,r.replace(/[?#].*/,"").lastIndexOf("/")+1):r="",t=a=>{var c=new XMLHttpRequest;c.open("GET",a,!1);c.send(null);return c.responseText},p&&(x=a=>{var c=new XMLHttpRequest;c.open("GET",a,!1);c.responseType="arraybuffer";c.send(null);return new Uint8Array(c.response)}),u=(a,c,d)=>{var e=new XMLHttpRequest;e.open("GET",a,!0);e.responseType="arraybuffer";e.onload=()=>{200==e.status||0== +e.status&&e.response?c(e.response):d()};e.onerror=d;e.send(null)};var aa=b.print||console.log.bind(console),z=b.printErr||console.error.bind(console);Object.assign(b,l);l=null;var A;b.wasmBinary&&(A=b.wasmBinary);var noExitRuntime=b.noExitRuntime||!0;"object"!=typeof WebAssembly&&B("no native wasm support detected");var D,E=!1,F,G; +function H(){var a=D.buffer;b.HEAP8=new Int8Array(a);b.HEAP16=new Int16Array(a);b.HEAPU8=F=new Uint8Array(a);b.HEAPU16=new Uint16Array(a);b.HEAP32=new Int32Array(a);b.HEAPU32=G=new Uint32Array(a);b.HEAPF32=new Float32Array(a);b.HEAPF64=new Float64Array(a)}var J=[],K=[],L=[];function ba(){var a=b.preRun.shift();J.unshift(a)}var M=0,N=null,O=null; +function B(a){if(b.onAbort)b.onAbort(a);a="Aborted("+a+")";z(a);E=!0;a=new WebAssembly.RuntimeError(a+". Build with -sASSERTIONS for more info.");k(a);throw a;}function P(a){return a.startsWith("data:application/octet-stream;base64,")}var Q;Q="Imaging.wasm";if(!P(Q)){var R=Q;Q=b.locateFile?b.locateFile(R,r):r+R}function S(a){if(a==Q&&A)return new Uint8Array(A);if(x)return x(a);throw"both async and sync fetching of the wasm failed";} +function ca(a){if(!A&&(n||p)){if("function"==typeof fetch&&!a.startsWith("file://"))return fetch(a,{credentials:"same-origin"}).then(c=>{if(!c.ok)throw"failed to load wasm binary file at '"+a+"'";return c.arrayBuffer()}).catch(()=>S(a));if(u)return new Promise((c,d)=>{u(a,e=>c(new Uint8Array(e)),d)})}return Promise.resolve().then(()=>S(a))}function T(a,c,d){return ca(a).then(e=>WebAssembly.instantiate(e,c)).then(e=>e).then(d,e=>{z(`failed to asynchronously prepare wasm: ${e}`);B(e)})} +function da(a,c){var d=Q;return A||"function"!=typeof WebAssembly.instantiateStreaming||P(d)||d.startsWith("file://")||q||"function"!=typeof fetch?T(d,a,c):fetch(d,{credentials:"same-origin"}).then(e=>WebAssembly.instantiateStreaming(e,a).then(c,function(g){z(`wasm streaming compile failed: ${g}`);z("falling back to ArrayBuffer instantiation");return T(d,a,c)}))} +var U=a=>{for(;0{var e=c+d;for(d=c;a[d]&&!(d>=e);)++d;if(16g?e+=String.fromCharCode(g):(g-=65536,e+=String.fromCharCode(55296|g>>10,56320|g&1023))}}else e+= +String.fromCharCode(g)}return e},ea=[null,[],[]],fa={e:(a,c,d)=>F.copyWithin(a,c,c+d),c:a=>{var c=F.length;a>>>=0;if(2147483648=d;d*=2){var e=c*(1+.2/d);e=Math.min(e,a+100663296);var g=Math;e=Math.max(a,e);a:{g=(g.min.call(g,2147483648,e+(65536-e%65536)%65536)-D.buffer.byteLength+65535)/65536;try{D.grow(g);H();var h=1;break a}catch(m){}h=void 0}if(h)return!0}return!1},d:()=>52,b:function(){return 70},a:(a,c,d,e)=>{for(var g=0,h=0;h>2],C=G[c+4>>2];c+=8;for(var v= +0;v>2]=g;return 0}},X=function(){function a(d){X=d.exports;D=X.f;H();K.unshift(X.g);M--;b.monitorRunDependencies&&b.monitorRunDependencies(M);0==M&&(null!==N&&(clearInterval(N),N=null),O&&(d=O,O=null,d()));return X}var c={a:fa};M++;b.monitorRunDependencies&&b.monitorRunDependencies(M);if(b.instantiateWasm)try{return b.instantiateWasm(c,a)}catch(d){z(`Module.instantiateWasm callback failed with error: ${d}`), +k(d)}da(c,function(d){a(d.instance)}).catch(k);return{}}();b._ImagingBlend=(a,c,d)=>(b._ImagingBlend=X.h)(a,c,d);b._ImagingBoxBlur=(a,c,d,e)=>(b._ImagingBoxBlur=X.i)(a,c,d,e);b._ImagingGaussianBlur=(a,c,d,e)=>(b._ImagingGaussianBlur=X.j)(a,c,d,e);b._ImagingCopy=a=>(b._ImagingCopy=X.k)(a);b._ImagingCopy2=(a,c)=>(b._ImagingCopy2=X.l)(a,c);b._ImagingSectionEnter=a=>(b._ImagingSectionEnter=X.m)(a);b._ImagingSectionLeave=a=>(b._ImagingSectionLeave=X.n)(a); +b._imageFromRGBA=(a,c,d)=>(b._imageFromRGBA=X.o)(a,c,d);b._imageMode=a=>(b._imageMode=X.p)(a);b._imageWidth=a=>(b._imageWidth=X.q)(a);b._imageHeight=a=>(b._imageHeight=X.r)(a);b._imageLinesize=a=>(b._imageLinesize=X.s)(a);b._imageBlock=a=>(b._imageBlock=X.t)(a);b._blurHashForImage=(a,c,d)=>(b._blurHashForImage=X.u)(a,c,d);b._ImagingFlipLeftRight=(a,c)=>(b._ImagingFlipLeftRight=X.v)(a,c);b._ImagingFlipTopBottom=(a,c)=>(b._ImagingFlipTopBottom=X.w)(a,c); +b._ImagingRotate90=(a,c)=>(b._ImagingRotate90=X.x)(a,c);b._ImagingTranspose=(a,c)=>(b._ImagingTranspose=X.y)(a,c);b._ImagingTransverse=(a,c)=>(b._ImagingTransverse=X.z)(a,c);b._ImagingRotate180=(a,c)=>(b._ImagingRotate180=X.A)(a,c);b._ImagingRotate270=(a,c)=>(b._ImagingRotate270=X.B)(a,c);b._ImagingTransform=(a,c,d,e,g,h,m,C,v,w)=>(b._ImagingTransform=X.C)(a,c,d,e,g,h,m,C,v,w);b._ImagingPaletteNew=a=>(b._ImagingPaletteNew=X.D)(a);b._ImagingPaletteNewBrowser=()=>(b._ImagingPaletteNewBrowser=X.E)(); +b._ImagingPaletteDuplicate=a=>(b._ImagingPaletteDuplicate=X.F)(a);b._ImagingPaletteDelete=a=>(b._ImagingPaletteDelete=X.G)(a);b._ImagingPaletteCacheUpdate=(a,c,d,e)=>(b._ImagingPaletteCacheUpdate=X.H)(a,c,d,e);b._ImagingPaletteCachePrepare=a=>(b._ImagingPaletteCachePrepare=X.I)(a);b._ImagingPaletteCacheDelete=a=>(b._ImagingPaletteCacheDelete=X.J)(a);b._ImagingResample=(a,c,d,e,g)=>(b._ImagingResample=X.K)(a,c,d,e,g); +b._ImagingNewPrologueSubtype=(a,c,d,e)=>(b._ImagingNewPrologueSubtype=X.L)(a,c,d,e);b._ImagingNewPrologue=(a,c,d)=>(b._ImagingNewPrologue=X.M)(a,c,d);b._ImagingDelete=a=>(b._ImagingDelete=X.N)(a);b._ImagingMemorySetBlocksMax=(a,c)=>(b._ImagingMemorySetBlocksMax=X.O)(a,c);b._ImagingMemoryClearCache=(a,c)=>(b._ImagingMemoryClearCache=X.P)(a,c);b._ImagingNew=(a,c,d)=>(b._ImagingNew=X.Q)(a,c,d);b._ImagingNewDirty=(a,c,d)=>(b._ImagingNewDirty=X.R)(a,c,d); +b._ImagingNewBlock=(a,c,d)=>(b._ImagingNewBlock=X.S)(a,c,d);b._ImagingNew2Dirty=(a,c,d)=>(b._ImagingNew2Dirty=X.T)(a,c,d);b._ImagingCopyPalette=(a,c)=>(b._ImagingCopyPalette=X.U)(a,c);b._malloc=a=>(b._malloc=X.V)(a);var Y=()=>(Y=X.W)(),ha=a=>(ha=X.X)(a),ia=a=>(ia=X.Y)(a);b.stackAlloc=ia;b.stackSave=Y;b.stackRestore=ha;b.UTF8ToString=(a,c)=>a?W(F,a,c):"";var Z;O=function ja(){Z||ka();Z||(O=ja)}; +function ka(){function a(){if(!Z&&(Z=!0,b.calledRun=!0,!E)){U(K);f(b);if(b.onRuntimeInitialized)b.onRuntimeInitialized();if(b.postRun)for("function"==typeof b.postRun&&(b.postRun=[b.postRun]);b.postRun.length;){var c=b.postRun.shift();L.unshift(c)}U(L)}}if(!(0 Module); +async function single_init() { +var m = await Module(); + +// Copyright (c) 2020 Famedly GmbH +// SPDX-License-Identifier: AGPL-3.0-or-later + +this.Image = class Image { + constructor(inst) { + this._inst = inst; + } + + static fromRGBA(width, height, data) { + const mem = m._malloc(width * height * 4); + new Uint8ClampedArray(m.HEAPU8.buffer, mem, width * height * 4).set(data); + return new Image(m._imageFromRGBA(width, height, mem)); + } + + free() { + m._ImagingDelete(this._inst); + this._inst = null; + } + + get _mode() { + return m._imageMode(this._inst); + } + + get mode() { + return m.UTF8ToString(this._mode); + } + + get width() { + return m._imageWidth(this._inst); + } + + get height() { + return m._imageHeight(this._inst); + } + + get linesize() { + return m._imageLinesize(this._inst); + } + + get block() { + return new Uint8ClampedArray(m.HEAPU8.buffer, m._imageBlock(this._inst), this.height * this.linesize); + } + + copy() { + return new Image(m._ImagingCopy(this._inst)); + } + + blend(other, alpha) { + return new Image(m._ImagingBlend(this._inst, other._inst, alpha)); + } + + gaussianBlur(radius, passes) { + const out = m._ImagingNewDirty(this._mode, this.width, this.height); + m._ImagingGaussianBlur(out, this._inst, radius, passes); + return new Image(out); + } + + rotate90() { + const out = m._ImagingNewDirty(this._mode, this.height, this.width); + m._ImagingRotate90(out, this._inst); + return new Image(out); + } + + rotate180() { + const out = m._ImagingNewDirty(this._mode, this.width, this.height); + m._ImagingRotate180(out, this._inst); + return new Image(out); + } + + rotate270() { + const out = m._ImagingNewDirty(this._mode, this.height, this.width); + m._ImagingRotate270(out, this._inst); + return new Image(out); + } + + flipLeftRight() { + const out = m._ImagingNewDirty(this._mode, this.width, this.height); + m._ImagingFlipLeftRight(out, this._inst); + return new Image(out); + } + + flipTopBottom() { + const out = m._ImagingNewDirty(this._mode, this.width, this.height); + m._ImagingFlipTopBottom(out, this._inst); + return new Image(out); + } + + transpose() { + const out = m._ImagingNewDirty(this._mode, this.height, this.width); + m._ImagingTranspose(out, this._inst); + return new Image(out); + } + + transverse() { + const out = m._ImagingNewDirty(this._mode, this.height, this.width); + m._ImagingTransverse(out, this._inst); + return new Image(out); + } + + resample(width, height, mode) { + const modeidx = ["nearest", "lanczos", "bilinear", "bicubic", "box", "hamming"].indexOf(mode.toString().split(".").slice(-1)[0]); + const sp = m.stackSave(); + try { + const box = m.stackAlloc(4 * 4); + m.HEAPF32.set([0, 0, this.width, this.height], box / 4); + return new Image(m._ImagingResample(this._inst, width, height, modeidx, box)); + } finally { + m.stackRestore(sp); + } + } + + toBlurhash(xComponents, yComponents) { + return m.UTF8ToString(m._blurHashForImage(this._inst, xComponents, yComponents)); + } + + static async loadEncodedPromise(bytes) { + var url = URL.createObjectURL(new Blob([bytes])); + try { + var img = new window.Image(); + await new Promise(function(resolve, reject) { + img.onload = resolve; + img.onerror = reject; + img.src = url; + }); + var canvas = document.createElement("canvas"); + canvas.width = img.naturalWidth; + canvas.height = img.naturalHeight; + var ctx = canvas.getContext("2d"); + ctx.drawImage(img, 0, 0); + var data = ctx.getImageData(0, 0, canvas.width, canvas.height); + return Image(data.width, data.height, data.data); + } finally { + URL.revokeObjectURL(url); + } + } + + async toJpegPromise(quality) { + const c = document.createElement("canvas"); + c.width = this.width; + c.height = this.height; + const im = new ImageData(this.block, c.width, c.height); + const ctx = c.getContext("2d"); + ctx.putImageData(im, 0, 0); + const blob = await new Promise(function(resolve, reject) { + c.toBlob(resolve, "image/jpeg", {quality: quality / 100}); + }); + const arraybuf = await blob.arrayBuffer(); + return new Uint8Array(arraybuf); + } +} + +} + +var prom; + +return {init() { + if (!prom) prom = single_init.call(this); + return prom; +}}; + +})(); diff --git a/web/Imaging.wasm b/web/Imaging.wasm new file mode 100755 index 0000000000000000000000000000000000000000..856e2ad6f8d174fedfe91d5e41394074a0ec439d GIT binary patch literal 68967 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 - + + diff --git a/web/olm.js b/web/olm.js new file mode 100644 index 0000000000..66fd6625ad --- /dev/null +++ b/web/olm.js @@ -0,0 +1,145 @@ +// @license magnet:?xt=urn:btih:8e4f440f4c65981c5bf93c76d35135ba5064d8b7&dn=apache-2.0.txt Apache-2.0 +// @source: https://gitlab.matrix.org/matrix-org/olm/-/tree/3.2.15 + +var Olm = (function() { +var olm_exports = {}; +var onInitSuccess; +var onInitFail; + +var Module = (() => { + var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined; + if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename; + return ( +function(moduleArg = {}) { + +var b=moduleArg,aa,ba;b.ready=new Promise((a,c)=>{aa=a;ba=c});var f;if("undefined"!==typeof window)f=function(a){window.crypto.getRandomValues(a)};else if(module.exports){var ca=require("crypto");f=function(a){var c=ca.randomBytes(a.length);a.set(c)}}else throw Error("Cannot find global to attach library to");if("undefined"!==typeof OLM_OPTIONS)for(var da in OLM_OPTIONS)OLM_OPTIONS.hasOwnProperty(da)&&(b[da]=OLM_OPTIONS[da]); +b.onRuntimeInitialized=function(){k=b._olm_error();olm_exports.PRIVATE_KEY_LENGTH=b._olm_pk_private_key_length();onInitSuccess&&onInitSuccess()};b.onAbort=function(a){onInitFail&&onInitFail(a)};var ea=Object.assign({},b),fa="object"==typeof window,l="function"==typeof importScripts,ha="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,n="",ia,ja,ka; +if(ha){var fs=require("fs"),la=require("path");n=l?la.dirname(n)+"/":__dirname+"/";ia=(a,c)=>{a=ma(a)?new URL(a):la.normalize(a);return fs.readFileSync(a,c?void 0:"utf8")};ka=a=>{a=ia(a,!0);a.buffer||(a=new Uint8Array(a));return a};ja=(a,c,d,e=!0)=>{a=ma(a)?new URL(a):la.normalize(a);fs.readFile(a,e?void 0:"utf8",(g,h)=>{g?d(g):c(e?h.buffer:h)})};process.argv.slice(2);b.inspect=()=>"[Emscripten Module object]"}else if(fa||l)l?n=self.location.href:"undefined"!=typeof document&&document.currentScript&& +(n=document.currentScript.src),_scriptDir&&(n=_scriptDir),0!==n.indexOf("blob:")?n=n.substr(0,n.replace(/[?#].*/,"").lastIndexOf("/")+1):n="",ia=a=>{var c=new XMLHttpRequest;c.open("GET",a,!1);c.send(null);return c.responseText},l&&(ka=a=>{var c=new XMLHttpRequest;c.open("GET",a,!1);c.responseType="arraybuffer";c.send(null);return new Uint8Array(c.response)}),ja=(a,c,d)=>{var e=new XMLHttpRequest;e.open("GET",a,!0);e.responseType="arraybuffer";e.onload=()=>{200==e.status||0==e.status&&e.response? +c(e.response):d()};e.onerror=d;e.send(null)};b.print||console.log.bind(console);var p=b.printErr||console.error.bind(console);Object.assign(b,ea);ea=null;var na;b.wasmBinary&&(na=b.wasmBinary);"object"!=typeof WebAssembly&&q("no native wasm support detected");var oa,pa=!1,r,t,qa,ra,sa,ta,ua; +function va(){var a=oa.buffer;b.HEAP8=r=new Int8Array(a);b.HEAP16=qa=new Int16Array(a);b.HEAPU8=t=new Uint8Array(a);b.HEAPU16=new Uint16Array(a);b.HEAP32=ra=new Int32Array(a);b.HEAPU32=sa=new Uint32Array(a);b.HEAPF32=ta=new Float32Array(a);b.HEAPF64=ua=new Float64Array(a)}var wa=[],xa=[],za=[];function Aa(){var a=b.preRun.shift();wa.unshift(a)}var u=0,Ba=null,Ca=null; +function q(a){if(b.onAbort)b.onAbort(a);a="Aborted("+a+")";p(a);pa=!0;a=new WebAssembly.RuntimeError(a+". Build with -sASSERTIONS for more info.");ba(a);throw a;}var Da=a=>a.startsWith("data:application/octet-stream;base64,"),ma=a=>a.startsWith("file://"),w;w="olm.wasm?v=3.2.15";if(!Da(w)){var Ea=w;w=b.locateFile?b.locateFile(Ea,n):n+Ea}function Fa(a){if(a==w&&na)return new Uint8Array(na);if(ka)return ka(a);throw"both async and sync fetching of the wasm failed";} +function Ga(a){if(!na&&(fa||l)){if("function"==typeof fetch&&!ma(a))return fetch(a,{credentials:"same-origin"}).then(c=>{if(!c.ok)throw"failed to load wasm binary file at '"+a+"'";return c.arrayBuffer()}).catch(()=>Fa(a));if(ja)return new Promise((c,d)=>{ja(a,e=>c(new Uint8Array(e)),d)})}return Promise.resolve().then(()=>Fa(a))}function Ha(a,c,d){return Ga(a).then(e=>WebAssembly.instantiate(e,c)).then(e=>e).then(d,e=>{p(`failed to asynchronously prepare wasm: ${e}`);q(e)})} +function Ia(a,c){var d=w;return na||"function"!=typeof WebAssembly.instantiateStreaming||Da(d)||ma(d)||ha||"function"!=typeof fetch?Ha(d,a,c):fetch(d,{credentials:"same-origin"}).then(e=>WebAssembly.instantiateStreaming(e,a).then(c,function(g){p(`wasm streaming compile failed: ${g}`);p("falling back to ArrayBuffer instantiation");return Ha(d,a,c)}))}var Ja=a=>{for(;0>0];case "i8":return r[a>>0];case "i16":return qa[a>>1];case "i32":return ra[a>>2];case "i64":q("to do getValue(i64) use WASM_BIGINT");case "float":return ta[a>>2];case "double":return ua[a>>3];case "*":return sa[a>>2];default:q(`invalid type for getValue: ${c}`)}} +function x(a){var c="i8";c.endsWith("*")&&(c="*");switch(c){case "i1":r[a>>0]=0;break;case "i8":r[a>>0]=0;break;case "i16":qa[a>>1]=0;break;case "i32":ra[a>>2]=0;break;case "i64":q("to do setValue(i64) use WASM_BIGINT");case "float":ta[a>>2]=0;break;case "double":ua[a>>3]=0;break;case "*":sa[a>>2]=0;break;default:q(`invalid type for setValue: ${c}`)}} +var La=(a,c,d)=>{for(var e=0;e>0]=a.charCodeAt(e);d||(r[c>>0]=0)},z=a=>{for(var c=0,d=0;d=e?c++:2047>=e?c+=2:55296<=e&&57343>=e?(c+=4,++d):c+=3}return c},A=(a,c,d,e)=>{if(!(0=m){var v=a.charCodeAt(++h);m=65536+((m&1023)<<10)|v&1023}if(127>=m){if(d>=e)break;c[d++]=m}else{if(2047>=m){if(d+1>=e)break;c[d++]=192|m>>6}else{if(65535>=m){if(d+2>=e)break; +c[d++]=224|m>>12}else{if(d+3>=e)break;c[d++]=240|m>>18;c[d++]=128|m>>12&63}c[d++]=128|m>>6&63}c[d++]=128|m&63}}c[d]=0;return d-g};function Ma(a,c,d){d=Array(0{var d=t,e=a+c;for(c=a;d[c]&&!(c>=e);)++c;if(16g?e+=String.fromCharCode(g):(g-=65536,e+=String.fromCharCode(55296|g>>10,56320|g&1023))}}else e+=String.fromCharCode(g)}return e}, +Oa={b:(a,c,d)=>t.copyWithin(a,c,c+d),a:a=>{var c=t.length;a>>>=0;if(2147483648=d;d*=2){var e=c*(1+.2/d);e=Math.min(e,a+100663296);var g=Math;e=Math.max(a,e);a:{g=(g.min.call(g,2147483648,e+(65536-e%65536)%65536)-oa.buffer.byteLength+65535)/65536;try{oa.grow(g);va();var h=1;break a}catch(m){}h=void 0}if(h)return!0}return!1}},C=function(){function a(d){C=d.exports;oa=C.c;va();xa.unshift(C.d);u--;b.monitorRunDependencies&&b.monitorRunDependencies(u);0==u&&(null!==Ba&&(clearInterval(Ba), +Ba=null),Ca&&(d=Ca,Ca=null,d()));return C}var c={a:Oa};u++;b.monitorRunDependencies&&b.monitorRunDependencies(u);if(b.instantiateWasm)try{return b.instantiateWasm(c,a)}catch(d){p(`Module.instantiateWasm callback failed with error: ${d}`),ba(d)}Ia(c,function(d){a(d.instance)}).catch(ba);return{}}();b._olm_get_library_version=(a,c,d)=>(b._olm_get_library_version=C.f)(a,c,d);b._olm_error=()=>(b._olm_error=C.g)();b._olm_account_last_error=a=>(b._olm_account_last_error=C.h)(a); +b.__olm_error_to_string=a=>(b.__olm_error_to_string=C.i)(a);b._olm_account_last_error_code=a=>(b._olm_account_last_error_code=C.j)(a);b._olm_session_last_error=a=>(b._olm_session_last_error=C.k)(a);b._olm_session_last_error_code=a=>(b._olm_session_last_error_code=C.l)(a);b._olm_utility_last_error=a=>(b._olm_utility_last_error=C.m)(a);b._olm_utility_last_error_code=a=>(b._olm_utility_last_error_code=C.n)(a);b._olm_account_size=()=>(b._olm_account_size=C.o)(); +b._olm_session_size=()=>(b._olm_session_size=C.p)();b._olm_utility_size=()=>(b._olm_utility_size=C.q)();b._olm_account=a=>(b._olm_account=C.r)(a);b._olm_session=a=>(b._olm_session=C.s)(a);b._olm_utility=a=>(b._olm_utility=C.t)(a);b._olm_clear_account=a=>(b._olm_clear_account=C.u)(a);b._olm_clear_session=a=>(b._olm_clear_session=C.v)(a);b._olm_clear_utility=a=>(b._olm_clear_utility=C.w)(a);b._olm_pickle_account_length=a=>(b._olm_pickle_account_length=C.x)(a); +b._olm_pickle_session_length=a=>(b._olm_pickle_session_length=C.y)(a);b._olm_pickle_account=(a,c,d,e,g)=>(b._olm_pickle_account=C.z)(a,c,d,e,g);b._olm_pickle_session=(a,c,d,e,g)=>(b._olm_pickle_session=C.A)(a,c,d,e,g);b._olm_unpickle_account=(a,c,d,e,g)=>(b._olm_unpickle_account=C.B)(a,c,d,e,g);b._olm_unpickle_session=(a,c,d,e,g)=>(b._olm_unpickle_session=C.C)(a,c,d,e,g);b._olm_create_account_random_length=a=>(b._olm_create_account_random_length=C.D)(a); +b._olm_create_account=(a,c,d)=>(b._olm_create_account=C.E)(a,c,d);b._olm_account_identity_keys_length=a=>(b._olm_account_identity_keys_length=C.F)(a);b._olm_account_identity_keys=(a,c,d)=>(b._olm_account_identity_keys=C.G)(a,c,d);b._olm_account_signature_length=a=>(b._olm_account_signature_length=C.H)(a);b._olm_account_sign=(a,c,d,e,g)=>(b._olm_account_sign=C.I)(a,c,d,e,g);b._olm_account_one_time_keys_length=a=>(b._olm_account_one_time_keys_length=C.J)(a); +b._olm_account_one_time_keys=(a,c,d)=>(b._olm_account_one_time_keys=C.K)(a,c,d);b._olm_account_mark_keys_as_published=a=>(b._olm_account_mark_keys_as_published=C.L)(a);b._olm_account_max_number_of_one_time_keys=a=>(b._olm_account_max_number_of_one_time_keys=C.M)(a);b._olm_account_generate_one_time_keys_random_length=(a,c)=>(b._olm_account_generate_one_time_keys_random_length=C.N)(a,c);b._olm_account_generate_one_time_keys=(a,c,d,e)=>(b._olm_account_generate_one_time_keys=C.O)(a,c,d,e); +b._olm_account_generate_fallback_key_random_length=a=>(b._olm_account_generate_fallback_key_random_length=C.P)(a);b._olm_account_generate_fallback_key=(a,c,d)=>(b._olm_account_generate_fallback_key=C.Q)(a,c,d);b._olm_account_fallback_key_length=a=>(b._olm_account_fallback_key_length=C.R)(a);b._olm_account_fallback_key=(a,c,d)=>(b._olm_account_fallback_key=C.S)(a,c,d);b._olm_account_unpublished_fallback_key_length=a=>(b._olm_account_unpublished_fallback_key_length=C.T)(a); +b._olm_account_unpublished_fallback_key=(a,c,d)=>(b._olm_account_unpublished_fallback_key=C.U)(a,c,d);b._olm_account_forget_old_fallback_key=a=>(b._olm_account_forget_old_fallback_key=C.V)(a);b._olm_create_outbound_session_random_length=a=>(b._olm_create_outbound_session_random_length=C.W)(a);b._olm_create_outbound_session=(a,c,d,e,g,h,m,v)=>(b._olm_create_outbound_session=C.X)(a,c,d,e,g,h,m,v);b._olm_create_inbound_session=(a,c,d,e)=>(b._olm_create_inbound_session=C.Y)(a,c,d,e); +b._olm_create_inbound_session_from=(a,c,d,e,g,h)=>(b._olm_create_inbound_session_from=C.Z)(a,c,d,e,g,h);b._olm_session_id_length=a=>(b._olm_session_id_length=C._)(a);b._olm_session_id=(a,c,d)=>(b._olm_session_id=C.$)(a,c,d);b._olm_session_has_received_message=a=>(b._olm_session_has_received_message=C.aa)(a);b._olm_session_describe=(a,c,d)=>(b._olm_session_describe=C.ba)(a,c,d);b._olm_matches_inbound_session=(a,c,d)=>(b._olm_matches_inbound_session=C.ca)(a,c,d); +b._olm_matches_inbound_session_from=(a,c,d,e,g)=>(b._olm_matches_inbound_session_from=C.da)(a,c,d,e,g);b._olm_remove_one_time_keys=(a,c)=>(b._olm_remove_one_time_keys=C.ea)(a,c);b._olm_encrypt_message_type=a=>(b._olm_encrypt_message_type=C.fa)(a);b._olm_encrypt_random_length=a=>(b._olm_encrypt_random_length=C.ga)(a);b._olm_encrypt_message_length=(a,c)=>(b._olm_encrypt_message_length=C.ha)(a,c);b._olm_encrypt=(a,c,d,e,g,h,m)=>(b._olm_encrypt=C.ia)(a,c,d,e,g,h,m); +b._olm_decrypt_max_plaintext_length=(a,c,d,e)=>(b._olm_decrypt_max_plaintext_length=C.ja)(a,c,d,e);b._olm_decrypt=(a,c,d,e,g,h)=>(b._olm_decrypt=C.ka)(a,c,d,e,g,h);b._olm_sha256_length=a=>(b._olm_sha256_length=C.la)(a);b._olm_sha256=(a,c,d,e,g)=>(b._olm_sha256=C.ma)(a,c,d,e,g);b._olm_ed25519_verify=(a,c,d,e,g,h,m)=>(b._olm_ed25519_verify=C.na)(a,c,d,e,g,h,m);b._olm_pk_encryption_last_error=a=>(b._olm_pk_encryption_last_error=C.oa)(a); +b._olm_pk_encryption_last_error_code=a=>(b._olm_pk_encryption_last_error_code=C.pa)(a);b._olm_pk_encryption_size=()=>(b._olm_pk_encryption_size=C.qa)();b._olm_pk_encryption=a=>(b._olm_pk_encryption=C.ra)(a);b._olm_clear_pk_encryption=a=>(b._olm_clear_pk_encryption=C.sa)(a);b._olm_pk_encryption_set_recipient_key=(a,c,d)=>(b._olm_pk_encryption_set_recipient_key=C.ta)(a,c,d);b._olm_pk_key_length=()=>(b._olm_pk_key_length=C.ua)(); +b._olm_pk_ciphertext_length=(a,c)=>(b._olm_pk_ciphertext_length=C.va)(a,c);b._olm_pk_mac_length=a=>(b._olm_pk_mac_length=C.wa)(a);b._olm_pk_encrypt_random_length=a=>(b._olm_pk_encrypt_random_length=C.xa)(a);b._olm_pk_encrypt=(a,c,d,e,g,h,m,v,J,L,y)=>(b._olm_pk_encrypt=C.ya)(a,c,d,e,g,h,m,v,J,L,y);b._olm_pk_decryption_last_error=a=>(b._olm_pk_decryption_last_error=C.za)(a);b._olm_pk_decryption_last_error_code=a=>(b._olm_pk_decryption_last_error_code=C.Aa)(a); +b._olm_pk_decryption_size=()=>(b._olm_pk_decryption_size=C.Ba)();b._olm_pk_decryption=a=>(b._olm_pk_decryption=C.Ca)(a);b._olm_clear_pk_decryption=a=>(b._olm_clear_pk_decryption=C.Da)(a);b._olm_pk_private_key_length=()=>(b._olm_pk_private_key_length=C.Ea)();b._olm_pk_generate_key_random_length=()=>(b._olm_pk_generate_key_random_length=C.Fa)();b._olm_pk_key_from_private=(a,c,d,e,g)=>(b._olm_pk_key_from_private=C.Ga)(a,c,d,e,g); +b._olm_pk_generate_key=(a,c,d,e,g)=>(b._olm_pk_generate_key=C.Ha)(a,c,d,e,g);b._olm_pickle_pk_decryption_length=a=>(b._olm_pickle_pk_decryption_length=C.Ia)(a);b._olm_pickle_pk_decryption=(a,c,d,e,g)=>(b._olm_pickle_pk_decryption=C.Ja)(a,c,d,e,g);b._olm_unpickle_pk_decryption=(a,c,d,e,g,h,m)=>(b._olm_unpickle_pk_decryption=C.Ka)(a,c,d,e,g,h,m);b._olm_pk_max_plaintext_length=(a,c)=>(b._olm_pk_max_plaintext_length=C.La)(a,c); +b._olm_pk_decrypt=(a,c,d,e,g,h,m,v,J)=>(b._olm_pk_decrypt=C.Ma)(a,c,d,e,g,h,m,v,J);b._olm_pk_get_private_key=(a,c,d)=>(b._olm_pk_get_private_key=C.Na)(a,c,d);b._olm_pk_signing_size=()=>(b._olm_pk_signing_size=C.Oa)();b._olm_pk_signing=a=>(b._olm_pk_signing=C.Pa)(a);b._olm_pk_signing_last_error=a=>(b._olm_pk_signing_last_error=C.Qa)(a);b._olm_pk_signing_last_error_code=a=>(b._olm_pk_signing_last_error_code=C.Ra)(a);b._olm_clear_pk_signing=a=>(b._olm_clear_pk_signing=C.Sa)(a); +b._olm_pk_signing_seed_length=()=>(b._olm_pk_signing_seed_length=C.Ta)();b._olm_pk_signing_public_key_length=()=>(b._olm_pk_signing_public_key_length=C.Ua)();b._olm_pk_signing_key_from_seed=(a,c,d,e,g)=>(b._olm_pk_signing_key_from_seed=C.Va)(a,c,d,e,g);b._olm_pk_signature_length=()=>(b._olm_pk_signature_length=C.Wa)();b._olm_pk_sign=(a,c,d,e,g)=>(b._olm_pk_sign=C.Xa)(a,c,d,e,g);b._olm_inbound_group_session_size=()=>(b._olm_inbound_group_session_size=C.Ya)(); +b._olm_inbound_group_session=a=>(b._olm_inbound_group_session=C.Za)(a);b._olm_clear_inbound_group_session=a=>(b._olm_clear_inbound_group_session=C._a)(a);b._olm_inbound_group_session_last_error=a=>(b._olm_inbound_group_session_last_error=C.$a)(a);b._olm_inbound_group_session_last_error_code=a=>(b._olm_inbound_group_session_last_error_code=C.ab)(a);b._olm_init_inbound_group_session=(a,c,d)=>(b._olm_init_inbound_group_session=C.bb)(a,c,d); +b._olm_import_inbound_group_session=(a,c,d)=>(b._olm_import_inbound_group_session=C.cb)(a,c,d);b._olm_pickle_inbound_group_session_length=a=>(b._olm_pickle_inbound_group_session_length=C.db)(a);b._olm_pickle_inbound_group_session=(a,c,d,e,g)=>(b._olm_pickle_inbound_group_session=C.eb)(a,c,d,e,g);b._olm_unpickle_inbound_group_session=(a,c,d,e,g)=>(b._olm_unpickle_inbound_group_session=C.fb)(a,c,d,e,g); +b._olm_group_decrypt_max_plaintext_length=(a,c,d)=>(b._olm_group_decrypt_max_plaintext_length=C.gb)(a,c,d);b._olm_group_decrypt=(a,c,d,e,g,h)=>(b._olm_group_decrypt=C.hb)(a,c,d,e,g,h);b._olm_inbound_group_session_id_length=a=>(b._olm_inbound_group_session_id_length=C.ib)(a);b._olm_inbound_group_session_id=(a,c,d)=>(b._olm_inbound_group_session_id=C.jb)(a,c,d);b._olm_inbound_group_session_first_known_index=a=>(b._olm_inbound_group_session_first_known_index=C.kb)(a); +b._olm_inbound_group_session_is_verified=a=>(b._olm_inbound_group_session_is_verified=C.lb)(a);b._olm_export_inbound_group_session_length=a=>(b._olm_export_inbound_group_session_length=C.mb)(a);b._olm_export_inbound_group_session=(a,c,d,e)=>(b._olm_export_inbound_group_session=C.nb)(a,c,d,e);b._olm_outbound_group_session_size=()=>(b._olm_outbound_group_session_size=C.ob)();b._olm_outbound_group_session=a=>(b._olm_outbound_group_session=C.pb)(a); +b._olm_clear_outbound_group_session=a=>(b._olm_clear_outbound_group_session=C.qb)(a);b._olm_outbound_group_session_last_error=a=>(b._olm_outbound_group_session_last_error=C.rb)(a);b._olm_outbound_group_session_last_error_code=a=>(b._olm_outbound_group_session_last_error_code=C.sb)(a);b._olm_pickle_outbound_group_session_length=a=>(b._olm_pickle_outbound_group_session_length=C.tb)(a);b._olm_pickle_outbound_group_session=(a,c,d,e,g)=>(b._olm_pickle_outbound_group_session=C.ub)(a,c,d,e,g); +b._olm_unpickle_outbound_group_session=(a,c,d,e,g)=>(b._olm_unpickle_outbound_group_session=C.vb)(a,c,d,e,g);b._olm_init_outbound_group_session_random_length=a=>(b._olm_init_outbound_group_session_random_length=C.wb)(a);b._olm_init_outbound_group_session=(a,c,d)=>(b._olm_init_outbound_group_session=C.xb)(a,c,d);b._olm_group_encrypt_message_length=(a,c)=>(b._olm_group_encrypt_message_length=C.yb)(a,c);b._olm_group_encrypt=(a,c,d,e,g)=>(b._olm_group_encrypt=C.zb)(a,c,d,e,g); +b._olm_outbound_group_session_id_length=a=>(b._olm_outbound_group_session_id_length=C.Ab)(a);b._olm_outbound_group_session_id=(a,c,d)=>(b._olm_outbound_group_session_id=C.Bb)(a,c,d);b._olm_outbound_group_session_message_index=a=>(b._olm_outbound_group_session_message_index=C.Cb)(a);b._olm_outbound_group_session_key_length=a=>(b._olm_outbound_group_session_key_length=C.Db)(a);b._olm_outbound_group_session_key=(a,c,d)=>(b._olm_outbound_group_session_key=C.Eb)(a,c,d); +b._olm_sas_last_error=a=>(b._olm_sas_last_error=C.Fb)(a);b._olm_sas_last_error_code=a=>(b._olm_sas_last_error_code=C.Gb)(a);b._olm_sas_size=()=>(b._olm_sas_size=C.Hb)();b._olm_sas=a=>(b._olm_sas=C.Ib)(a);b._olm_clear_sas=a=>(b._olm_clear_sas=C.Jb)(a);b._olm_create_sas_random_length=a=>(b._olm_create_sas_random_length=C.Kb)(a);b._olm_create_sas=(a,c,d)=>(b._olm_create_sas=C.Lb)(a,c,d);b._olm_sas_pubkey_length=a=>(b._olm_sas_pubkey_length=C.Mb)(a); +b._olm_sas_get_pubkey=(a,c,d)=>(b._olm_sas_get_pubkey=C.Nb)(a,c,d);b._olm_sas_set_their_key=(a,c,d)=>(b._olm_sas_set_their_key=C.Ob)(a,c,d);b._olm_sas_is_their_key_set=a=>(b._olm_sas_is_their_key_set=C.Pb)(a);b._olm_sas_generate_bytes=(a,c,d,e,g)=>(b._olm_sas_generate_bytes=C.Qb)(a,c,d,e,g);b._olm_sas_mac_length=a=>(b._olm_sas_mac_length=C.Rb)(a);b._olm_sas_calculate_mac_fixed_base64=(a,c,d,e,g,h,m)=>(b._olm_sas_calculate_mac_fixed_base64=C.Sb)(a,c,d,e,g,h,m); +b._olm_sas_calculate_mac=(a,c,d,e,g,h,m)=>(b._olm_sas_calculate_mac=C.Tb)(a,c,d,e,g,h,m);b._olm_sas_calculate_mac_long_kdf=(a,c,d,e,g,h,m)=>(b._olm_sas_calculate_mac_long_kdf=C.Ub)(a,c,d,e,g,h,m);b._malloc=a=>(b._malloc=C.Vb)(a);b._free=a=>(b._free=C.Wb)(a);var Pa=()=>(Pa=C.Xb)(),Qa=a=>(Qa=C.Yb)(a),Ra=a=>(Ra=C.Zb)(a);b.UTF8ToString=(a,c)=>a?B(a,c):"";b.stringToUTF8=(a,c,d)=>A(a,t,c,d);b.intArrayFromString=Ma;b.ALLOC_STACK=1;b.writeAsciiToMemory=La;var Sa;Ca=function Ta(){Sa||Ua();Sa||(Ca=Ta)}; +function Ua(){function a(){if(!Sa&&(Sa=!0,b.calledRun=!0,!pa)){Ja(xa);aa(b);if(b.onRuntimeInitialized)b.onRuntimeInitialized();if(b.postRun)for("function"==typeof b.postRun&&(b.postRun=[b.postRun]);b.postRun.length;){var c=b.postRun.shift();za.unshift(c)}Ja(za)}}if(!(0 Module); +var olmInitPromise; + +olm_exports['init'] = function(opts) { + if (olmInitPromise) return olmInitPromise; + + if (opts) OLM_OPTIONS = opts; + + olmInitPromise = new Promise(function(resolve, reject) { + onInitSuccess = function() { + resolve(); + }; + onInitFail = function(err) { + reject(err); + }; + Module(); + }); + return olmInitPromise; +}; + +return olm_exports; + +})(); + +if (typeof(window) !== 'undefined') { + // We've been imported directly into a browser. Define the global 'Olm' object. + // (we do this even if module.exports was defined, because it's useful to have + // Olm in the global scope for browserified and webpacked apps.) + window["Olm"] = Olm; +} + +if (typeof module === 'object') { + // Emscripten sets the module exports to be its module + // with wrapped c functions. Clobber it with our higher + // level wrapper class. + module.exports = Olm; +} + +// @license-end diff --git a/web/olm.wasm b/web/olm.wasm new file mode 100755 index 0000000000000000000000000000000000000000..87fb47c92a6d7bca582f39aa228ffec8c38ecdd1 GIT binary patch literal 149747 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 { + var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined; + if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename; + return ( +function(moduleArg = {}) { + +var c=moduleArg,aa,ba;c.ready=new Promise((a,b)=>{aa=a;ba=b});var f;if("undefined"!==typeof window)f=function(a){window.crypto.getRandomValues(a)};else if(module.exports){var ca=require("crypto");f=function(a){var b=ca.randomBytes(a.length);a.set(b)}}else throw Error("Cannot find global to attach library to");if("undefined"!==typeof OLM_OPTIONS)for(var da in OLM_OPTIONS)OLM_OPTIONS.hasOwnProperty(da)&&(c[da]=OLM_OPTIONS[da]); +c.onRuntimeInitialized=function(){k=c._olm_error();olm_exports.PRIVATE_KEY_LENGTH=c._olm_pk_private_key_length();onInitSuccess&&onInitSuccess()};c.onAbort=function(a){onInitFail&&onInitFail(a)};var ea=Object.assign({},c),fa="object"==typeof window,ha="function"==typeof importScripts,ia="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,l="",ja,ka,la; +if(ia){var fs=require("fs"),ma=require("path");l=ha?ma.dirname(l)+"/":__dirname+"/";ja=(a,b)=>{a=na(a)?new URL(a):ma.normalize(a);return fs.readFileSync(a,b?void 0:"utf8")};la=a=>{a=ja(a,!0);a.buffer||(a=new Uint8Array(a));return a};ka=(a,b,d,e=!0)=>{a=na(a)?new URL(a):ma.normalize(a);fs.readFile(a,e?void 0:"utf8",(g,h)=>{g?d(g):b(e?h.buffer:h)})};process.argv.slice(2);c.inspect=()=>"[Emscripten Module object]"}else if(fa||ha)ha?l=self.location.href:"undefined"!=typeof document&&document.currentScript&& +(l=document.currentScript.src),_scriptDir&&(l=_scriptDir),0!==l.indexOf("blob:")?l=l.substr(0,l.replace(/[?#].*/,"").lastIndexOf("/")+1):l="",ja=a=>{var b=new XMLHttpRequest;b.open("GET",a,!1);b.send(null);return b.responseText},ha&&(la=a=>{var b=new XMLHttpRequest;b.open("GET",a,!1);b.responseType="arraybuffer";b.send(null);return new Uint8Array(b.response)}),ka=(a,b,d)=>{var e=new XMLHttpRequest;e.open("GET",a,!0);e.responseType="arraybuffer";e.onload=()=>{200==e.status||0==e.status&&e.response? +b(e.response):d()};e.onerror=d;e.send(null)};c.print||console.log.bind(console);var oa=c.printErr||console.error.bind(console);Object.assign(c,ea);ea=null;var n;c.wasmBinary&&(n=c.wasmBinary);function pa(){this.buffer=new ArrayBuffer(qa/65536*65536)}function ra(a){this.exports=( +// EMSCRIPTEN_START_ASM +function instantiate(ha){function c(d){d.set=function(a,b){this[a]=b};d.get=function(a){return this[a]};return d}var e;var f=new Uint8Array(123);for(var a=25;a>=0;--a){f[48+a]=52+a;f[65+a]=a;f[97+a]=26+a}f[43]=62;f[47]=63;function l(m,n,o){var g,h,a=0,i=n,j=o.length,k=n+(j*3>>2)-(o[j-2]=="=")-(o[j-1]=="=");for(;a>4;if(i>2;if(i>2]=H[b+24|0]|H[b+25|0]<<8|(H[b+26|0]<<16|H[b+27|0]<<24);G[g+28>>2]=d;d=H[b+20|0]|H[b+21|0]<<8|(H[b+22|0]<<16|H[b+23|0]<<24);G[g+16>>2]=H[b+16|0]|H[b+17|0]<<8|(H[b+18|0]<<16|H[b+19|0]<<24);G[g+20>>2]=d;e=H[b+4|0]|H[b+5|0]<<8|(H[b+6|0]<<16|H[b+7|0]<<24);d=H[b|0]|H[b+1|0]<<8|(H[b+2|0]<<16|H[b+3|0]<<24);G[g>>2]=d;G[g+4>>2]=e;e=H[b+12|0]|H[b+13|0]<<8|(H[b+14|0]<<16|H[b+15|0]<<24);G[g+8>>2]=H[b+8|0]|H[b+9|0]<<8|(H[b+10|0]<<16|H[b+11|0]<<24);G[g+12>>2]=e;E[g|0]=d&248;E[g+31|0]=H[g+31|0]&63|64;b=H[c+3|0];d=b<<24&50331648;b=H[c+2|0];e=b>>>16|0;G[g+112>>2]=d|(H[c|0]|H[c+1|0]<<8|b<<16);G[g+116>>2]=e;G[g+120>>2]=(H[c+3|0]|H[c+4|0]<<8|(H[c+5|0]<<16|H[c+6|0]<<24))>>>2&33554431;G[g+124>>2]=0;G[g+128>>2]=(H[c+6|0]|H[c+7|0]<<8|(H[c+8|0]<<16|H[c+9|0]<<24))>>>3&67108863;G[g+132>>2]=0;G[g+136>>2]=(H[c+9|0]|H[c+10|0]<<8|(H[c+11|0]<<16|H[c+12|0]<<24))>>>5&33554431;G[g+140>>2]=0;G[g+144>>2]=(H[c+12|0]|H[c+13|0]<<8|(H[c+14|0]<<16|H[c+15|0]<<24))>>>6;G[g+148>>2]=0;b=H[c+19|0];d=b<<24&16777216;b=H[c+18|0];e=b>>>16|0;G[g+152>>2]=d|(H[c+16|0]|H[c+17|0]<<8|b<<16);G[g+156>>2]=e;G[g+160>>2]=(H[c+19|0]|H[c+20|0]<<8|(H[c+21|0]<<16|H[c+22|0]<<24))>>>1&67108863;G[g+164>>2]=0;G[g+168>>2]=(H[c+22|0]|H[c+23|0]<<8|(H[c+24|0]<<16|H[c+25|0]<<24))>>>3&33554431;G[g+172>>2]=0;G[g+176>>2]=(H[c+25|0]|H[c+26|0]<<8|(H[c+27|0]<<16|H[c+28|0]<<24))>>>4&67108863;G[g+180>>2]=0;G[g+184>>2]=(H[c+28|0]|H[c+29|0]<<8|(H[c+30|0]<<16|H[c+31|0]<<24))>>>6&33554431;G[g+188>>2]=0;k=g+1152|0;ta(k,0,152);G[g+1152>>2]=1;G[g+1156>>2]=0;c=g+992|0;ta(c,0,152);G[g+992>>2]=1;G[g+996>>2]=0;b=g+832|0;ta(b,0,152);i=g+672|0;ta(i,0,152);l=g+512|0;ta(l,0,152);G[g+512>>2]=1;G[g+516>>2]=0;t=g+352|0;ta(t,0,152);P=g+192|0;ta(P,0,152);G[g+192>>2]=1;G[g+196>>2]=0;ta(g+1392|0,0,72);p=g+1312|0;ma(p,g+112|0,80);Oa=g+2512|0;while(1){va=H[(g-ua|0)+31|0];xa=0;while(1){fa=i;F=va<<24>>24>>7;i=p;d=G[i>>2];e=G[c>>2];f=F&(d^e);h=c;e=e^f;G[c>>2]=e;G[c+4>>2]=e>>31;d=d^f;G[i>>2]=d;G[i+4>>2]=d>>31;d=G[i+8>>2];e=G[c+8>>2];f=F&(d^e);e=e^f;G[c+8>>2]=e;G[c+12>>2]=e>>31;d=d^f;G[i+8>>2]=d;G[i+12>>2]=d>>31;d=G[i+16>>2];e=G[c+16>>2];f=F&(d^e);e=e^f;G[c+16>>2]=e;G[c+20>>2]=e>>31;d=d^f;G[i+16>>2]=d;G[i+20>>2]=d>>31;d=G[i+24>>2];e=G[c+24>>2];f=F&(d^e);e=e^f;G[c+24>>2]=e;G[c+28>>2]=e>>31;d=d^f;G[i+24>>2]=d;G[i+28>>2]=d>>31;d=G[i+32>>2];e=G[c+32>>2];f=F&(d^e);e=e^f;G[c+32>>2]=e;G[c+36>>2]=e>>31;d=d^f;G[i+32>>2]=d;G[i+36>>2]=d>>31;d=G[i+40>>2];e=G[c+40>>2];f=F&(d^e);e=e^f;G[c+40>>2]=e;G[c+44>>2]=e>>31;d=d^f;G[i+40>>2]=d;G[i+44>>2]=d>>31;d=G[i+48>>2];e=G[c+48>>2];f=F&(d^e);e=e^f;G[c+48>>2]=e;G[c+52>>2]=e>>31;d=d^f;G[i+48>>2]=d;G[i+52>>2]=d>>31;d=G[i+56>>2];e=G[c+56>>2];f=F&(d^e);e=e^f;G[c+56>>2]=e;G[c+60>>2]=e>>31;d=d^f;G[i+56>>2]=d;G[i+60>>2]=d>>31;d=G[i+64>>2];e=G[c+64>>2];f=F&(d^e);e=e^f;G[c+64>>2]=e;G[c+68>>2]=e>>31;d=d^f;G[i+64>>2]=d;G[i+68>>2]=d>>31;d=G[i+72>>2];e=G[c+72>>2];f=F&(d^e);e=e^f;G[c+72>>2]=e;G[c+76>>2]=e>>31;d=d^f;G[i+72>>2]=d;G[i+76>>2]=d>>31;j=k;d=G[j>>2];e=G[b>>2];f=F&(d^e);w=b;e=e^f;G[b>>2]=e;G[b+4>>2]=e>>31;d=d^f;G[j>>2]=d;G[j+4>>2]=d>>31;d=G[j+8>>2];e=G[b+8>>2];f=F&(d^e);e=e^f;G[b+8>>2]=e;G[b+12>>2]=e>>31;d=d^f;G[j+8>>2]=d;G[j+12>>2]=d>>31;d=G[j+16>>2];e=G[b+16>>2];f=F&(d^e);e=e^f;G[b+16>>2]=e;G[b+20>>2]=e>>31;d=d^f;G[j+16>>2]=d;G[j+20>>2]=d>>31;d=G[j+24>>2];e=G[b+24>>2];f=F&(d^e);e=e^f;G[b+24>>2]=e;G[b+28>>2]=e>>31;d=d^f;G[j+24>>2]=d;G[j+28>>2]=d>>31;d=G[j+32>>2];e=G[b+32>>2];f=F&(d^e);e=e^f;G[b+32>>2]=e;G[b+36>>2]=e>>31;d=d^f;G[j+32>>2]=d;G[j+36>>2]=d>>31;d=G[j+40>>2];k=G[b+40>>2];B=F&(d^k);d=d^B;G[j+40>>2]=d;G[j+44>>2]=d>>31;d=G[j+48>>2];p=G[b+48>>2];K=F&(d^p);d=d^K;G[j+48>>2]=d;G[j+52>>2]=d>>31;d=G[j+56>>2];I=G[b+56>>2];J=F&(d^I);d=d^J;G[j+56>>2]=d;G[j+60>>2]=d>>31;d=G[j+64>>2];q=G[b+64>>2];L=F&(d^q);d=d^L;G[j+64>>2]=d;G[j+68>>2]=d>>31;d=G[j+72>>2];r=G[b+72>>2];Q=F&(d^r);d=d^Q;G[j+72>>2]=d;G[j+76>>2]=d>>31;C=G[b+4>>2];W=G[c+4>>2];f=C+W|0;v=G[b>>2];m=G[c>>2];d=v+m|0;G[c>>2]=d;G[c+4>>2]=d>>>0>>0?f+1|0:f;S=G[b+12>>2];O=G[c+12>>2];f=S+O|0;z=G[b+8>>2];s=G[c+8>>2];b=z+s|0;G[c+8>>2]=b;G[c+12>>2]=b>>>0>>0?f+1|0:f;_=G[w+20>>2];R=G[c+20>>2];d=_+R|0;u=G[w+16>>2];n=G[c+16>>2];b=u+n|0;G[c+16>>2]=b;G[c+20>>2]=b>>>0>>0?d+1|0:d;X=G[w+28>>2];U=G[c+28>>2];e=X+U|0;A=G[w+24>>2];x=G[c+24>>2];b=A+x|0;G[c+24>>2]=b;G[c+28>>2]=b>>>0>>0?e+1|0:e;o=G[w+32>>2];N=G[w+36>>2];D=G[c+40>>2];b=k^B;c=D+b|0;T=G[h+44>>2];V=b>>31;d=T+V|0;G[h+40>>2]=c;G[h+44>>2]=b>>>0>c>>>0?d+1|0:d;B=G[h+48>>2];c=p^K;d=B+c|0;$=G[h+52>>2];y=c>>31;f=$+y|0;G[h+48>>2]=d;G[h+52>>2]=c>>>0>d>>>0?f+1|0:f;e=I^J;J=G[h+60>>2];aa=e>>31;f=J+aa|0;I=G[h+56>>2];d=e+I|0;f=d>>>0>>0?f+1|0:f;G[h+56>>2]=d;G[h+60>>2]=f;k=q^L;q=G[h+64>>2];f=k+q|0;L=G[h+68>>2];ba=k>>31;d=L+ba|0;G[h+64>>2]=f;G[h+68>>2]=f>>>0>>0?d+1|0:d;f=r^Q;r=G[h+72>>2];d=f;p=r+d|0;Q=G[h+76>>2];ca=d>>31;f=Q+ca|0;G[h+72>>2]=p;G[h+76>>2]=d>>>0>p>>>0?f+1|0:f;da=G[h+36>>2];f=da+N|0;p=G[h+32>>2];K=p+o|0;G[h+32>>2]=K;G[h+36>>2]=p>>>0>K>>>0?f+1|0:f;G[w+72>>2]=r-d;G[w+76>>2]=Q-((d>>>0>r>>>0)+ca|0);G[w+64>>2]=q-k;G[w+68>>2]=L-((k>>>0>q>>>0)+ba|0);G[w+56>>2]=I-e;G[w+60>>2]=J-((e>>>0>I>>>0)+aa|0);G[w+48>>2]=B-c;G[w+52>>2]=$-((c>>>0>B>>>0)+y|0);G[w+40>>2]=D-b;G[w+44>>2]=T-((b>>>0>D>>>0)+V|0);G[w+32>>2]=p-o;G[w+36>>2]=da-((o>>>0>p>>>0)+N|0);G[w+24>>2]=x-A;G[w+28>>2]=U-((x>>>0>>0)+X|0);G[w+16>>2]=n-u;G[w+20>>2]=R-((n>>>0>>0)+_|0);G[w+8>>2]=s-z;G[w+12>>2]=O-((s>>>0>>0)+S|0);G[w>>2]=m-v;G[w+4>>2]=W-((m>>>0>>0)+C|0);J=G[j+4>>2];L=G[i+4>>2];d=J+L|0;p=G[j>>2];b=G[i>>2];c=p+b|0;G[i>>2]=c;G[i+4>>2]=b>>>0>c>>>0?d+1|0:d;Q=G[j+12>>2];N=G[i+12>>2];f=Q+N|0;v=G[j+8>>2];c=G[i+8>>2];d=v+c|0;G[i+8>>2]=d;G[i+12>>2]=c>>>0>d>>>0?f+1|0:f;C=G[j+20>>2];W=G[i+20>>2];e=C+W|0;z=G[j+16>>2];k=G[i+16>>2];d=z+k|0;G[i+16>>2]=d;G[i+20>>2]=d>>>0>>0?e+1|0:e;S=G[j+28>>2];O=G[i+28>>2];d=S+O|0;u=G[j+24>>2];m=G[i+24>>2];e=u+m|0;G[i+24>>2]=e;G[i+28>>2]=e>>>0>>0?d+1|0:d;_=G[j+36>>2];R=G[i+36>>2];f=_+R|0;A=G[j+32>>2];s=G[i+32>>2];d=A+s|0;G[i+32>>2]=d;G[i+36>>2]=d>>>0>>0?f+1|0:f;X=G[j+44>>2];U=G[i+44>>2];d=X+U|0;D=G[j+40>>2];n=G[i+40>>2];e=D+n|0;G[i+40>>2]=e;G[i+44>>2]=e>>>0>>0?d+1|0:d;T=G[j+52>>2];V=G[i+52>>2];f=T+V|0;B=G[j+48>>2];x=G[i+48>>2];d=B+x|0;G[i+48>>2]=d;G[i+52>>2]=d>>>0>>0?f+1|0:f;$=G[j+60>>2];y=G[i+60>>2];e=$+y|0;I=G[j+56>>2];o=G[i+56>>2];d=I+o|0;G[i+56>>2]=d;G[i+60>>2]=d>>>0>>0?e+1|0:e;aa=G[j+68>>2];ba=G[i+68>>2];d=aa+ba|0;q=G[j+64>>2];e=G[i+64>>2];f=q+e|0;G[i+64>>2]=f;G[i+68>>2]=e>>>0>f>>>0?d+1|0:d;ca=G[j+76>>2];da=G[i+76>>2];f=ca+da|0;r=G[j+72>>2];d=G[i+72>>2];K=r+d|0;G[i+72>>2]=K;G[i+76>>2]=d>>>0>K>>>0?f+1|0:f;G[j+72>>2]=d-r;G[j+76>>2]=da-((d>>>0>>0)+ca|0);G[j+64>>2]=e-q;G[j+68>>2]=ba-((e>>>0>>0)+aa|0);G[j+56>>2]=o-I;G[j+60>>2]=y-((o>>>0>>0)+$|0);G[j+48>>2]=x-B;G[j+52>>2]=V-((x>>>0>>0)+T|0);G[j+40>>2]=n-D;G[j+44>>2]=U-((n>>>0>>0)+X|0);G[j+32>>2]=s-A;G[j+36>>2]=R-((s>>>0>>0)+_|0);G[j+24>>2]=m-u;G[j+28>>2]=O-((m>>>0>>0)+S|0);G[j+16>>2]=k-z;G[j+20>>2]=W-((k>>>0>>0)+C|0);G[j+8>>2]=c-v;G[j+12>>2]=N-((c>>>0>>0)+Q|0);G[j>>2]=b-p;G[j+4>>2]=L-((b>>>0

>>0)+J|0);qa=g+1952|0;wa(qa,i,w);ha=g+1792|0;wa(ha,h,j);aa=G[g+2024>>2];ba=G[g+2028>>2];m=G[g+2016>>2];Pa=G[g+2020>>2];s=G[g+2096>>2];Ca=G[g+2100>>2];n=G[g+2008>>2];Qa=G[g+2012>>2];x=G[g+2088>>2];Da=G[g+2092>>2];o=G[g+2e3>>2];Ra=G[g+2004>>2];p=G[g+2080>>2];Ea=G[g+2084>>2];v=G[g+1992>>2];Sa=G[g+1996>>2];z=G[g+2072>>2];Fa=G[g+2076>>2];u=G[g+1984>>2];Ta=G[g+1988>>2];A=G[g+2064>>2];Ga=G[g+2068>>2];D=G[g+1976>>2];Ua=G[g+1980>>2];B=G[g+2056>>2];Ha=G[g+2060>>2];k=G[g+1968>>2];ya=G[g+1972>>2];I=G[g+2048>>2];ia=G[g+2052>>2];q=G[g+1960>>2];Aa=G[g+1964>>2];r=G[g+2040>>2];ka=G[g+2044>>2];K=G[g+1952>>2];Va=G[g+1956>>2];J=G[g+2032>>2];la=G[g+2036>>2];G[g+2032>>2]=0;G[g+2036>>2]=0;ca=G[g+1864>>2];da=G[g+1868>>2];L=G[g+1856>>2];Wa=G[g+1860>>2];Q=G[g+1936>>2];Ia=G[g+1940>>2];N=G[g+1848>>2];Xa=G[g+1852>>2];C=G[g+1928>>2];Ja=G[g+1932>>2];W=G[g+1840>>2];Ya=G[g+1844>>2];S=G[g+1920>>2];Ka=G[g+1924>>2];O=G[g+1832>>2];Za=G[g+1836>>2];_=G[g+1912>>2];La=G[g+1916>>2];R=G[g+1824>>2];_a=G[g+1828>>2];X=G[g+1904>>2];Ma=G[g+1908>>2];U=G[g+1816>>2];$a=G[g+1820>>2];T=G[g+1896>>2];Na=G[g+1900>>2];f=G[g+1808>>2];d=G[g+1812>>2];e=G[g+1888>>2];y=G[g+1892>>2];b=G[g+1800>>2];na=G[g+1804>>2];c=G[g+1880>>2];ea=G[g+1884>>2];V=G[g+1792>>2];oa=G[g+1796>>2];$=G[g+1872>>2];pa=G[g+1876>>2];G[g+1872>>2]=0;G[g+1876>>2]=0;d=d+y|0;ga=f;f=e+f|0;d=ga>>>0>f>>>0?d+1|0:d;y=we(e,y,18,0);e=y+f|0;f=Z+d|0;ga=e;y=e>>>0>>0?f+1|0:f;e=ea+na|0;d=b;b=b+c|0;e=d>>>0>b>>>0?e+1|0:e;c=we(c,ea,18,0);b=c+b|0;d=Z+e|0;ra=b;c=b>>>0>>0?d+1|0:d;f=pa+oa|0;b=V+$|0;f=b>>>0>>0?f+1|0:f;e=we($,pa,18,0);b=e+b|0;d=Z+f|0;V=b;d=b>>>0>>0?d+1|0:d;ea=d;e=d>>31>>>6|0;b=b+e|0;f=e>>>0>b>>>0?d+1|0:d;pa=b;na=f;d=f>>26;f=(f&67108863)<<6|b>>>26;b=f+ra|0;e=c+d|0;$=b;e=b>>>0>>0?e+1|0:e;oa=e;f=e;c=e>>31>>>7|0;b=b+c|0;if(c>>>0>b>>>0){f=e+1|0}ra=b;Ba=f;c=(f&33554431)<<7|b>>>25;b=c+ga|0;d=(f>>25)+y|0;d=b>>>0>>0?d+1|0:d;f=d;c=d>>31>>>6|0;e=b+c|0;d=c>>>0>e>>>0?d+1|0:d;ga=e;c=d;e=e&-67108864;y=b-e|0;b=f-((b>>>0>>0)+d|0)|0;sa=b;e=ia+ya|0;b=k+I|0;e=b>>>0>>0?e+1|0:e;d=we(I,ia,18,0);b=d+b|0;f=Z+e|0;ab=b;k=b>>>0>>0?f+1|0:f;d=ka+Aa|0;b=q+r|0;d=b>>>0>>0?d+1|0:d;e=we(r,ka,18,0);b=e+b|0;d=Z+d|0;d=b>>>0>>0?d+1|0:d;r=b;f=la+Va|0;b=J+K|0;f=b>>>0>>0?f+1|0:f;I=we(J,la,18,0);b=I+b|0;e=Z+f|0;e=b>>>0>>0?e+1|0:e;I=b;K=e;f=e;q=e>>31>>>6|0;b=b+q|0;if(q>>>0>b>>>0){f=e+1|0}J=b;ia=f;e=f>>26;f=(f&67108863)<<6|b>>>26;b=f+r|0;d=d+e|0;q=b;d=b>>>0>>0?d+1|0:d;ka=d;e=d>>31>>>7|0;b=b+e|0;f=e>>>0>b>>>0?d+1|0:d;la=b;ya=f;e=(f&33554431)<<7|b>>>25;b=e+ab|0;d=(f>>25)+k|0;d=b>>>0>>0?d+1|0:d;f=d;e=d;k=d>>31>>>6|0;d=b+k|0;e=k>>>0>d>>>0?e+1|0:e;Aa=d;k=e;d=d&-67108864;r=b-d|0;e=f-((b>>>0>>0)+e|0)|0;d=e+sa|0;b=r;f=b+y|0;d=b>>>0>f>>>0?d+1|0:d;G[g+1968>>2]=f;G[g+1972>>2]=d;G[g+1808>>2]=b-y;G[g+1812>>2]=e-((b>>>0>>0)+sa|0);e=Na+$a|0;b=T+U|0;e=b>>>0>>0?e+1|0:e;f=we(T,Na,18,0);b=f+b|0;d=Z+e|0;d=b>>>0>>0?d+1|0:d;f=c>>26;c=(c&67108863)<<6|ga>>>26;b=c+b|0;f=d+f|0;f=b>>>0>>0?f+1|0:f;d=f;c=d>>31>>>7|0;e=b+c|0;d=c>>>0>e>>>0?d+1|0:d;U=e;c=d;e=e&-33554432;r=b-e|0;b=f-((b>>>0>>0)+d|0)|0;T=b;f=Ha+Ua|0;b=B+D|0;f=b>>>0>>0?f+1|0:f;e=we(B,Ha,18,0);b=e+b|0;d=Z+f|0;d=b>>>0>>0?d+1|0:d;f=(k&67108863)<<6|Aa>>>26;b=f+b|0;d=(k>>26)+d|0;d=b>>>0>>0?d+1|0:d;e=d;k=d>>31>>>7|0;d=b+k|0;f=k>>>0>d>>>0?e+1|0:e;B=d;k=f;D=d&-33554432;d=b-D|0;f=e-((b>>>0>>0)+f|0)|0;e=f+T|0;b=d;d=d+r|0;e=b>>>0>d>>>0?e+1|0:e;G[g+1976>>2]=d;G[g+1980>>2]=e;G[g+1816>>2]=b-r;G[g+1820>>2]=f-((b>>>0>>0)+T|0);f=Ma+_a|0;b=R+X|0;f=b>>>0>>0?f+1|0:f;e=we(X,Ma,18,0);b=e+b|0;d=Z+f|0;e=b>>>0>>0?d+1|0:d;d=c>>25;c=(c&33554431)<<7|U>>>25;b=c+b|0;f=d+e|0;f=b>>>0>>0?f+1|0:f;e=f;c=e>>31>>>6|0;d=b+c|0;e=c>>>0>d>>>0?e+1|0:e;r=d;c=e;d=d&-67108864;D=b-d|0;b=f-((b>>>0>>0)+e|0)|0;R=b;d=Ga+Ta|0;b=u+A|0;d=b>>>0>>0?d+1|0:d;e=we(A,Ga,18,0);b=e+b|0;d=Z+d|0;d=b>>>0>>0?d+1|0:d;f=k>>25;k=(k&33554431)<<7|B>>>25;b=k+b|0;e=d+f|0;e=b>>>0>>0?e+1|0:e;d=e>>31>>>6|0;f=d;d=b+d|0;f=f>>>0>d>>>0?e+1|0:e;A=d;k=f;u=d&-67108864;d=b-u|0;e=e-((b>>>0>>0)+f|0)|0;f=e+R|0;b=d;d=d+D|0;f=b>>>0>d>>>0?f+1|0:f;G[g+1984>>2]=d;G[g+1988>>2]=f;G[g+1824>>2]=b-D;G[g+1828>>2]=e-((b>>>0>>0)+R|0);f=La+Za|0;b=O+_|0;f=b>>>0>>0?f+1|0:f;d=we(_,La,18,0);b=d+b|0;e=Z+f|0;e=b>>>0>>0?e+1|0:e;d=c>>26;c=(c&67108863)<<6|r>>>26;b=c+b|0;d=d+e|0;d=b>>>0>>0?d+1|0:d;e=d;c=d>>31>>>7|0;d=b+c|0;f=c>>>0>d>>>0?e+1|0:e;D=d;c=f;d=d&-33554432;u=b-d|0;b=e-((b>>>0>>0)+f|0)|0;B=b;d=Fa+Sa|0;b=v+z|0;d=b>>>0>>0?d+1|0:d;f=we(z,Fa,18,0);b=f+b|0;e=Z+d|0;e=b>>>0>>0?e+1|0:e;d=(k&67108863)<<6|A>>>26;b=d+b|0;f=(k>>26)+e|0;f=b>>>0>>0?f+1|0:f;d=f;e=d>>31>>>7|0;k=e;e=b+e|0;d=k>>>0>e>>>0?d+1|0:d;z=e;k=d;v=e&-33554432;e=b-v|0;d=f-((b>>>0>>0)+d|0)|0;f=d+B|0;b=e;e=e+u|0;f=b>>>0>e>>>0?f+1|0:f;G[g+1992>>2]=e;G[g+1996>>2]=f;G[g+1832>>2]=b-u;G[g+1836>>2]=d-((b>>>0>>0)+B|0);d=Ka+Ya|0;b=S+W|0;d=b>>>0>>0?d+1|0:d;e=we(S,Ka,18,0);b=e+b|0;f=Z+d|0;f=b>>>0>>0?f+1|0:f;e=c>>25;c=(c&33554431)<<7|D>>>25;b=c+b|0;d=e+f|0;d=b>>>0>>0?d+1|0:d;e=d;c=d>>31>>>6|0;d=b+c|0;f=c>>>0>d>>>0?e+1|0:e;u=d;c=f;d=d&-67108864;v=b-d|0;b=e-((b>>>0>>0)+f|0)|0;A=b;e=Ea+Ra|0;b=o+p|0;e=b>>>0>>0?e+1|0:e;d=we(p,Ea,18,0);b=d+b|0;f=Z+e|0;f=b>>>0>>0?f+1|0:f;e=(k&33554431)<<7|z>>>25;b=e+b|0;f=(k>>25)+f|0;f=b>>>0>>0?f+1|0:f;d=f;e=d>>31>>>6|0;k=e;e=b+e|0;d=k>>>0>e>>>0?d+1|0:d;p=e;k=d;o=e&-67108864;e=b-o|0;f=f-((b>>>0>>0)+d|0)|0;d=f+A|0;b=e;e=e+v|0;d=b>>>0>e>>>0?d+1|0:d;G[g+2e3>>2]=e;G[g+2004>>2]=d;G[g+1840>>2]=b-v;G[g+1844>>2]=f-((b>>>0>>0)+A|0);d=Ja+Xa|0;b=C+N|0;d=b>>>0>>0?d+1|0:d;e=we(C,Ja,18,0);b=e+b|0;f=Z+d|0;d=b>>>0>>0?f+1|0:f;f=c>>26;c=(c&67108863)<<6|u>>>26;b=c+b|0;e=d+f|0;e=b>>>0>>0?e+1|0:e;f=e;d=e;c=d>>31>>>7|0;e=b+c|0;if(c>>>0>e>>>0){d=d+1|0}v=e;c=d;e=e&-33554432;o=b-e|0;b=f-((b>>>0>>0)+d|0)|0;z=b;f=Da+Qa|0;b=n+x|0;f=b>>>0>>0?f+1|0:f;d=we(x,Da,18,0);b=d+b|0;f=Z+f|0;f=b>>>0>>0?f+1|0:f;e=(k&67108863)<<6|p>>>26;b=e+b|0;d=(k>>26)+f|0;d=b>>>0>>0?d+1|0:d;f=d;e=d;k=d>>31>>>7|0;d=b+k|0;e=k>>>0>d>>>0?e+1|0:e;x=d;k=e;d=d&-33554432;n=b-d|0;e=f-((b>>>0>>0)+e|0)|0;d=e+z|0;b=n;f=b+o|0;d=b>>>0>f>>>0?d+1|0:d;G[g+2008>>2]=f;G[g+2012>>2]=d;G[g+1848>>2]=b-o;G[g+1852>>2]=e-((b>>>0>>0)+z|0);e=Ia+Wa|0;b=L+Q|0;e=b>>>0>>0?e+1|0:e;f=we(Q,Ia,18,0);b=f+b|0;d=Z+e|0;d=b>>>0>>0?d+1|0:d;f=c>>25;c=(c&33554431)<<7|v>>>25;b=c+b|0;f=d+f|0;f=b>>>0>>0?f+1|0:f;d=f;c=d>>31>>>6|0;e=b+c|0;d=c>>>0>e>>>0?d+1|0:d;o=e;c=d;e=e&-67108864;n=b-e|0;b=f-((b>>>0>>0)+d|0)|0;p=b;f=Ca+Pa|0;b=m+s|0;f=b>>>0>>0?f+1|0:f;e=we(s,Ca,18,0);b=e+b|0;d=Z+f|0;d=b>>>0>>0?d+1|0:d;f=(k&33554431)<<7|x>>>25;b=f+b|0;d=(k>>25)+d|0;d=b>>>0>>0?d+1|0:d;e=d;k=d>>31>>>6|0;d=b+k|0;f=k>>>0>d>>>0?e+1|0:e;m=d;k=f;s=d&-67108864;d=b-s|0;f=e-((b>>>0>>0)+f|0)|0;e=f+p|0;b=d;d=d+n|0;e=b>>>0>d>>>0?e+1|0:e;G[g+2016>>2]=d;G[g+2020>>2]=e;G[g+1856>>2]=b-n;G[g+1860>>2]=f-((b>>>0>>0)+p|0);f=c>>26;c=(c&67108863)<<6|o>>>26;b=c+ca|0;f=f+da|0;f=b>>>0>>0?f+1|0:f;d=f;c=d>>31>>>7|0;e=b+c|0;d=c>>>0>e>>>0?d+1|0:d;s=e;c=d;n=e&-33554432;e=b-n|0;b=f-((b>>>0>>0)+d|0)|0;n=b;d=k>>26;k=(k&67108863)<<6|m>>>26;b=k+aa|0;f=d+ba|0;f=b>>>0>>0?f+1|0:f;m=f;d=f;f=d>>31>>>7|0;k=f;f=b+f|0;if(k>>>0>f>>>0){d=d+1|0}x=f;k=d;o=f&-33554432;f=b-o|0;m=m-((b>>>0>>0)+d|0)|0;d=m+n|0;b=f;f=b+e|0;d=b>>>0>f>>>0?d+1|0:d;G[g+2024>>2]=f;G[g+2028>>2]=d;G[g+1864>>2]=b-e;G[g+1868>>2]=m-((b>>>0>>0)+n|0);b=ra&-33554432;m=$-b|0;p=oa-((b>>>0>$>>>0)+Ba|0)|0;e=c>>25;b=(c&33554431)<<7|s>>>25;d=pa&-67108864;c=V-d|0;d=(ea-((d>>>0>V>>>0)+na|0)|0)+e|0;f=c;c=b+c|0;d=f>>>0>c>>>0?d+1|0:d;f=c;c=we(b,e,18,0);b=f+c|0;d=Z+d|0;d=b>>>0>>0?d+1|0:d;c=b;s=d;f=d>>31>>>6|0;b=b+f|0;e=f>>>0>b>>>0?d+1|0:d;n=b;o=e;d=e>>26;e=(e&67108863)<<6|b>>>26;b=e+m|0;f=d+p|0;m=b;p=b>>>0>>0?f+1|0:f;b=la&-33554432;u=q-b|0;A=ka-((b>>>0>q>>>0)+ya|0)|0;d=J&-67108864;e=I-d|0;f=k>>25;d=f+(K-((d>>>0>I>>>0)+ia|0)|0)|0;r=e;b=(k&33554431)<<7|x>>>25;e=b+e|0;d=r>>>0>e>>>0?d+1|0:d;k=e;e=we(b,f,18,0);b=k+e|0;d=Z+d|0;k=b;d=b>>>0>>0?d+1|0:d;x=d;e=d>>31>>>6|0;b=b+e|0;f=e>>>0>b>>>0?d+1|0:d;v=b;z=f;d=f>>26;f=(f&67108863)<<6|b>>>26;b=f+u|0;e=d+A|0;e=b>>>0>>0?e+1|0:e;f=b;u=e;d=e+p|0;b=b+m|0;d=f>>>0>b>>>0?d+1|0:d;G[g+1960>>2]=b;G[g+1964>>2]=d;e=n&-67108864;d=c-e|0;n=v&-67108864;b=k-n|0;s=s-((c>>>0>>0)+o|0)|0;k=x-((k>>>0>>0)+z|0)|0;e=s+k|0;c=d;d=d+b|0;e=d>>>0>>0?e+1|0:e;G[g+1952>>2]=d;G[g+1956>>2]=e;G[g+1800>>2]=f-m;G[g+1804>>2]=u-((f>>>0>>0)+p|0);G[g+1792>>2]=b-c;G[g+1796>>2]=k-((b>>>0>>0)+s|0);aa=g+1472|0;ja(aa,qa);ba=g+1632|0;ja(ba,ha);wa(ha,ba,g+112|0);c=G[g+1856>>2];R=G[g+1860>>2];k=G[g+1936>>2];N=G[g+1940>>2];m=G[g+1848>>2];X=G[g+1852>>2];s=G[g+1928>>2];C=G[g+1932>>2];n=G[g+1840>>2];U=G[g+1844>>2];x=G[g+1920>>2];W=G[g+1924>>2];o=G[g+1832>>2];T=G[g+1836>>2];p=G[g+1912>>2];S=G[g+1916>>2];v=G[g+1824>>2];V=G[g+1828>>2];z=G[g+1904>>2];O=G[g+1908>>2];u=G[g+1816>>2];$=G[g+1820>>2];A=G[g+1896>>2];_=G[g+1900>>2];f=G[g+1808>>2];d=G[g+1812>>2];e=G[g+1888>>2];q=G[g+1892>>2];b=G[g+1800>>2];J=G[g+1804>>2];D=G[g+1880>>2];r=G[g+1884>>2];B=G[g+1792>>2];L=G[g+1796>>2];I=G[g+1872>>2];K=G[g+1876>>2];G[g+1872>>2]=0;G[g+1876>>2]=0;d=d+q|0;Q=f;f=e+f|0;d=Q>>>0>f>>>0?d+1|0:d;q=we(e,q,18,0);e=q+f|0;f=Z+d|0;y=e;q=e>>>0>>0?f+1|0:f;e=r+J|0;d=b;b=b+D|0;e=d>>>0>b>>>0?e+1|0:e;f=we(D,r,18,0);b=f+b|0;d=Z+e|0;J=b;e=b>>>0>>0?d+1|0:d;f=K+L|0;b=B+I|0;f=b>>>0>>0?f+1|0:f;D=we(I,K,18,0);b=D+b|0;d=Z+f|0;d=b>>>0>>0?d+1|0:d;D=b;I=d;B=d>>31>>>6|0;b=b+B|0;f=B>>>0>b>>>0?d+1|0:d;r=b;K=f;d=f>>26;f=(f&67108863)<<6|b>>>26;b=f+J|0;e=d+e|0;B=b;e=b>>>0>>0?e+1|0:e;J=e;f=e;d=e>>31>>>7|0;b=b+d|0;if(d>>>0>b>>>0){f=e+1|0}L=b;Q=f;e=f>>25;f=(f&33554431)<<7|b>>>25;b=f+y|0;d=e+q|0;d=b>>>0>>0?d+1|0:d;f=d;e=d>>31>>>6|0;q=e;e=b+e|0;d=q>>>0>e>>>0?d+1|0:d;q=e;e=e&-67108864;G[g+1808>>2]=b-e;G[g+1812>>2]=f-((b>>>0>>0)+d|0);e=_+$|0;b=u+A|0;e=b>>>0>>0?e+1|0:e;u=we(A,_,18,0);b=u+b|0;f=Z+e|0;e=b>>>0>>0?f+1|0:f;u=(d&67108863)<<6|q>>>26;b=u+b|0;d=(d>>26)+e|0;d=b>>>0>>0?d+1|0:d;f=d;e=d>>31>>>7|0;q=e;e=b+e|0;d=q>>>0>e>>>0?d+1|0:d;u=e;e=e&-33554432;G[g+1816>>2]=b-e;G[g+1820>>2]=f-((b>>>0>>0)+d|0);f=O+V|0;b=v+z|0;f=b>>>0>>0?f+1|0:f;e=we(z,O,18,0);b=e+b|0;f=Z+f|0;f=b>>>0>>0?f+1|0:f;v=(d&33554431)<<7|u>>>25;b=v+b|0;d=(d>>25)+f|0;d=b>>>0>>0?d+1|0:d;f=d;e=d>>31>>>6|0;q=e;e=b+e|0;d=q>>>0>e>>>0?d+1|0:d;v=e;e=e&-67108864;G[g+1824>>2]=b-e;G[g+1828>>2]=f-((b>>>0>>0)+d|0);e=T+S|0;b=o+p|0;e=b>>>0>>0?e+1|0:e;o=we(p,S,18,0);b=o+b|0;f=Z+e|0;e=b>>>0>>0?f+1|0:f;o=(d&67108863)<<6|v>>>26;b=o+b|0;d=(d>>26)+e|0;d=b>>>0>>0?d+1|0:d;f=d;e=d>>31>>>7|0;o=e;e=b+e|0;d=o>>>0>e>>>0?d+1|0:d;o=e;e=e&-33554432;G[g+1832>>2]=b-e;G[g+1836>>2]=f-((b>>>0>>0)+d|0);f=U+W|0;b=n+x|0;f=b>>>0>>0?f+1|0:f;e=we(x,W,18,0);b=e+b|0;f=Z+f|0;f=b>>>0>>0?f+1|0:f;n=(d&33554431)<<7|o>>>25;b=n+b|0;d=(d>>25)+f|0;d=b>>>0>>0?d+1|0:d;f=d;e=d>>31>>>6|0;n=e;e=b+e|0;d=n>>>0>e>>>0?d+1|0:d;n=e;e=e&-67108864;G[g+1840>>2]=b-e;G[g+1844>>2]=f-((b>>>0>>0)+d|0);e=C+X|0;b=m+s|0;e=b>>>0>>0?e+1|0:e;m=we(s,C,18,0);b=m+b|0;f=Z+e|0;e=b>>>0>>0?f+1|0:f;m=(d&67108863)<<6|n>>>26;b=m+b|0;d=(d>>26)+e|0;d=b>>>0>>0?d+1|0:d;f=d;e=d>>31>>>7|0;m=e;e=b+e|0;d=m>>>0>e>>>0?d+1|0:d;m=e;e=e&-33554432;G[g+1848>>2]=b-e;G[g+1852>>2]=f-((b>>>0>>0)+d|0);f=R+N|0;b=c+k|0;f=b>>>0>>0?f+1|0:f;c=we(k,N,18,0);b=c+b|0;f=Z+f|0;f=b>>>0>>0?f+1|0:f;c=(d&33554431)<<7|m>>>25;b=c+b|0;d=(d>>25)+f|0;d=b>>>0>>0?d+1|0:d;e=d;c=d>>31>>>6|0;f=c;c=b+c|0;d=f>>>0>c>>>0?d+1|0:d;f=c&-67108864;G[g+1856>>2]=b-f;G[g+1860>>2]=e-((b>>>0>>0)+d|0);c=(d&67108863)<<6|c>>>26;b=c+G[g+1864>>2]|0;e=G[g+1868>>2]+(d>>26)|0;e=b>>>0>>0?e+1|0:e;c=e>>31>>>7|0;d=c;c=b+c|0;f=d>>>0>c>>>0?e+1|0:e;d=c&-33554432;G[g+1864>>2]=b-d;G[g+1868>>2]=e-((b>>>0>>0)+f|0);b=L&-33554432;k=B-b|0;m=J-((b>>>0>B>>>0)+Q|0)|0;b=(f&33554431)<<7|c>>>25;e=r&-67108864;c=D-e|0;d=f>>25;e=d+(I-((e>>>0>D>>>0)+K|0)|0)|0;f=c;c=b+c|0;e=f>>>0>c>>>0?e+1|0:e;f=c;c=we(b,d,18,0);b=f+c|0;f=Z+e|0;f=b>>>0>>0?f+1|0:f;e=f;d=e;c=d>>31>>>6|0;f=c;c=b+c|0;if(f>>>0>c>>>0){d=d+1|0}s=(d&67108863)<<6|c>>>26;k=s+k|0;f=(d>>26)+m|0;G[g+1800>>2]=k;G[g+1804>>2]=k>>>0>>0?f+1|0:f;c=c&-67108864;G[g+1792>>2]=b-c;G[g+1796>>2]=e-((b>>>0>>0)+d|0);p=ma(fa,aa,80);k=l;y=ma(k,ha,80);ca=g+2272|0;ja(ca,h);fa=g+2112|0;ja(fa,w);c=t;wa(c,ca,fa);l=G[c+64>>2];X=G[c+68>>2];t=G[c+144>>2];C=G[c+148>>2];m=G[c+56>>2];U=G[c+60>>2];s=G[c+136>>2];W=G[c+140>>2];n=G[c+48>>2];T=G[c+52>>2];x=G[c+128>>2];S=G[c+132>>2];o=G[c+40>>2];V=G[c+44>>2];v=G[c+120>>2];O=G[c+124>>2];z=G[c+32>>2];$=G[c+36>>2];u=G[c+112>>2];_=G[c+116>>2];A=G[c+24>>2];da=G[c+28>>2];D=G[c+104>>2];R=G[c+108>>2];q=G[c+16>>2];d=G[c+20>>2];f=G[c+96>>2];r=G[c+100>>2];b=G[c+8>>2];L=G[c+12>>2];e=G[c+88>>2];K=G[c+92>>2];B=G[c>>2];Q=G[c+4>>2];I=G[c+80>>2];J=G[c+84>>2];G[c+80>>2]=0;G[c+84>>2]=0;d=d+r|0;N=q;q=f+q|0;d=N>>>0>q>>>0?d+1|0:d;r=we(f,r,18,0);q=r+q|0;f=Z+d|0;ea=q;q=q>>>0>>0?f+1|0:f;f=K+L|0;d=b;b=b+e|0;f=d>>>0>b>>>0?f+1|0:f;e=we(e,K,18,0);b=e+b|0;d=Z+f|0;N=b;r=b>>>0>>0?d+1|0:d;e=J+Q|0;b=B+I|0;e=b>>>0>>0?e+1|0:e;f=we(I,J,18,0);b=f+b|0;d=Z+e|0;B=b;d=b>>>0>>0?d+1|0:d;K=d;e=d>>31>>>6|0;b=b+e|0;f=e>>>0>b>>>0?d+1|0:d;J=b;L=f;e=(f&67108863)<<6|b>>>26;b=e+N|0;f=(f>>26)+r|0;I=b;f=b>>>0>>0?f+1|0:f;r=f;e=f;d=e>>31>>>7|0;b=b+d|0;e=d>>>0>b>>>0?e+1|0:e;Q=b;N=e;f=e>>25;e=(e&33554431)<<7|b>>>25;b=e+ea|0;d=f+q|0;d=b>>>0>>0?d+1|0:d;f=d;e=d>>31>>>6|0;q=e;e=b+e|0;d=q>>>0>e>>>0?d+1|0:d;q=e;e=e&-67108864;G[c+16>>2]=b-e;G[c+20>>2]=f-((b>>>0>>0)+d|0);f=R+da|0;b=A+D|0;f=b>>>0>>0?f+1|0:f;A=we(D,R,18,0);b=A+b|0;e=Z+f|0;e=b>>>0>>0?e+1|0:e;A=(d&67108863)<<6|q>>>26;b=A+b|0;d=(d>>26)+e|0;d=b>>>0>>0?d+1|0:d;f=d;e=d>>31>>>7|0;q=e;e=b+e|0;d=q>>>0>e>>>0?d+1|0:d;A=e;e=e&-33554432;G[c+24>>2]=b-e;G[c+28>>2]=f-((b>>>0>>0)+d|0);f=_+$|0;b=u+z|0;f=b>>>0>>0?f+1|0:f;z=we(u,_,18,0);b=z+b|0;e=Z+f|0;e=b>>>0>>0?e+1|0:e;z=(d&33554431)<<7|A>>>25;b=z+b|0;d=(d>>25)+e|0;d=b>>>0>>0?d+1|0:d;f=d;e=d>>31>>>6|0;q=e;e=b+e|0;d=q>>>0>e>>>0?d+1|0:d;z=e;e=e&-67108864;G[c+32>>2]=b-e;G[c+36>>2]=f-((b>>>0>>0)+d|0);f=O+V|0;b=o+v|0;f=b>>>0>>0?f+1|0:f;o=we(v,O,18,0);b=o+b|0;e=Z+f|0;e=b>>>0>>0?e+1|0:e;o=(d&67108863)<<6|z>>>26;b=o+b|0;d=(d>>26)+e|0;d=b>>>0>>0?d+1|0:d;f=d;e=d>>31>>>7|0;o=e;e=b+e|0;d=o>>>0>e>>>0?d+1|0:d;o=e;e=e&-33554432;G[c+40>>2]=b-e;G[c+44>>2]=f-((b>>>0>>0)+d|0);f=T+S|0;b=n+x|0;f=b>>>0>>0?f+1|0:f;n=we(x,S,18,0);b=n+b|0;e=Z+f|0;e=b>>>0>>0?e+1|0:e;n=(d&33554431)<<7|o>>>25;b=n+b|0;d=(d>>25)+e|0;d=b>>>0>>0?d+1|0:d;f=d;e=d>>31>>>6|0;n=e;e=b+e|0;d=n>>>0>e>>>0?d+1|0:d;n=e;e=e&-67108864;G[c+48>>2]=b-e;G[c+52>>2]=f-((b>>>0>>0)+d|0);f=U+W|0;b=m+s|0;f=b>>>0>>0?f+1|0:f;m=we(s,W,18,0);b=m+b|0;e=Z+f|0;e=b>>>0>>0?e+1|0:e;m=(d&67108863)<<6|n>>>26;b=m+b|0;d=(d>>26)+e|0;d=b>>>0>>0?d+1|0:d;f=d;e=d>>31>>>7|0;m=e;e=b+e|0;d=m>>>0>e>>>0?d+1|0:d;m=e;e=e&-33554432;G[c+56>>2]=b-e;G[c+60>>2]=f-((b>>>0>>0)+d|0);f=C+X|0;b=l+t|0;f=b>>>0>>0?f+1|0:f;l=we(t,C,18,0);b=l+b|0;e=Z+f|0;e=b>>>0>>0?e+1|0:e;l=(d&33554431)<<7|m>>>25;b=l+b|0;d=(d>>25)+e|0;d=b>>>0>>0?d+1|0:d;f=d;e=d>>31>>>6|0;l=e;e=b+e|0;d=l>>>0>e>>>0?d+1|0:d;l=e&-67108864;G[c+64>>2]=b-l;G[c+68>>2]=f-((b>>>0>>0)+d|0);f=d>>26;d=(d&67108863)<<6|e>>>26;b=d+G[c+72>>2]|0;f=f+G[c+76>>2]|0;f=b>>>0>>0?f+1|0:f;e=f;d=e>>31>>>7|0;l=d;d=b+d|0;e=l>>>0>d>>>0?e+1|0:e;l=d&-33554432;G[c+72>>2]=b-l;G[c+76>>2]=f-((b>>>0>>0)+e|0);b=Q&-33554432;m=I-b|0;s=r-((b>>>0>I>>>0)+N|0)|0;b=d;d=e>>25;b=(e&33554431)<<7|b>>>25;f=J&-67108864;e=B-f|0;f=(K-((f>>>0>B>>>0)+L|0)|0)+d|0;l=e;e=b+e|0;f=l>>>0>e>>>0?f+1|0:f;d=we(b,d,18,0);b=d+e|0;f=Z+f|0;f=b>>>0>>0?f+1|0:f;l=f;d=f;e=d>>31>>>6|0;f=e;e=b+e|0;if(f>>>0>e>>>0){d=d+1|0}t=e;n=(d&67108863)<<6|e>>>26;m=n+m|0;e=(d>>26)+s|0;G[c+8>>2]=m;G[c+12>>2]=m>>>0>>0?e+1|0:e;e=t&-67108864;G[c>>2]=b-e;G[c+4>>2]=l-((b>>>0>>0)+d|0);l=G[g+2312>>2];d=G[g+2152>>2];b=l-d|0;A=G[g+2316>>2];d=A-(G[g+2156>>2]+(d>>>0>l>>>0)|0)|0;da=d;D=b;G[g+2152>>2]=b;G[g+2156>>2]=d;t=G[g+2304>>2];d=G[g+2144>>2];b=t-d|0;B=G[g+2308>>2];d=B-(G[g+2148>>2]+(d>>>0>t>>>0)|0)|0;ea=d;I=b;G[g+2144>>2]=b;G[g+2148>>2]=d;m=G[g+2296>>2];d=G[g+2136>>2];b=m-d|0;q=G[g+2300>>2];d=q-(G[g+2140>>2]+(d>>>0>m>>>0)|0)|0;pa=d;r=b;G[g+2136>>2]=b;G[g+2140>>2]=d;b=G[g+2288>>2];e=G[g+2128>>2];f=b-e|0;d=G[g+2292>>2];u=d-(G[g+2132>>2]+(b>>>0>>0)|0)|0;G[g+2128>>2]=f;G[g+2132>>2]=u;v=G[g+2280>>2];e=G[g+2120>>2];R=v-e|0;na=G[g+2284>>2];X=na-(G[g+2124>>2]+(e>>>0>v>>>0)|0)|0;G[g+2120>>2]=R;G[g+2124>>2]=X;z=G[g+2272>>2];e=G[g+2112>>2];U=z-e|0;oa=G[g+2276>>2];T=oa-(G[g+2116>>2]+(e>>>0>z>>>0)|0)|0;G[g+2112>>2]=U;G[g+2116>>2]=T;s=G[g+2320>>2];n=G[g+2160>>2];e=s-n|0;K=G[g+2324>>2];n=K-(G[g+2164>>2]+(n>>>0>s>>>0)|0)|0;ra=n;J=e;G[g+2160>>2]=e;G[g+2164>>2]=n;n=G[g+2328>>2];x=G[g+2168>>2];e=n-x|0;L=G[g+2332>>2];x=L-(G[g+2172>>2]+(n>>>0>>0)|0)|0;Ba=x;Q=e;G[g+2168>>2]=e;G[g+2172>>2]=x;x=G[g+2336>>2];o=G[g+2176>>2];e=x-o|0;N=G[g+2340>>2];o=N-(G[g+2180>>2]+(o>>>0>x>>>0)|0)|0;ga=o;C=e;G[g+2176>>2]=e;G[g+2180>>2]=o;o=G[g+2344>>2];S=G[g+2184>>2];e=o-S|0;W=G[g+2348>>2];O=W-(G[g+2188>>2]+(o>>>0>>0)|0)|0;sa=O;S=e;G[g+2184>>2]=e;G[g+2188>>2]=O;ta(Oa,0,72);O=b;_=d;ia=we(f,u,121665,0);ka=Z;e=we(R,X,121665,0);V=Z;u=we(U,T,121665,0);d=Z;la=d;b=d>>31>>>6|0;f=b;b=b+u|0;d=f>>>0>b>>>0?d+1|0:d;R=b;X=d;f=d>>26;d=(d&67108863)<<6|b>>>26;b=d+e|0;f=f+V|0;U=b;f=b>>>0>>0?f+1|0:f;T=f;d=f;e=d>>31>>>7|0;b=b+e|0;if(e>>>0>b>>>0){d=d+1|0}V=b;$=d;f=d>>25;d=(d&33554431)<<7|b>>>25;b=d+ia|0;e=f+ka|0;d=b>>>0>>0?e+1|0:e;f=d+_|0;e=b+O|0;f=e>>>0>>0?f+1|0:f;O=d>>31>>>6|0;b=b+O|0;d=O>>>0>b>>>0?d+1|0:d;O=b&-67108864;G[g+2448>>2]=e-O;G[g+2452>>2]=f-((e>>>0>>0)+d|0);e=d;d=d>>26;f=(e&67108863)<<6|b>>>26;b=we(r,pa,121665,0)+f|0;e=d+Z|0;e=b>>>0>>0?e+1|0:e;f=e+q|0;d=b+m|0;f=d>>>0>>0?f+1|0:f;m=d;d=f;f=e;e=e>>31>>>7|0;b=b+e|0;if(e>>>0>b>>>0){f=f+1|0}e=b&-33554432;G[g+2456>>2]=m-e;G[g+2460>>2]=d-((e>>>0>m>>>0)+f|0);d=f;f=d>>25;d=(d&33554431)<<7|b>>>25;b=we(I,ea,121665,0)+d|0;e=f+Z|0;e=b>>>0>>0?e+1|0:e;d=e+B|0;f=b+t|0;d=f>>>0>>0?d+1|0:d;t=f;f=e;e=e>>31>>>6|0;b=b+e|0;if(e>>>0>b>>>0){f=f+1|0}e=b&-67108864;G[g+2464>>2]=t-e;G[g+2468>>2]=d-((e>>>0>t>>>0)+f|0);d=f;f=d>>26;d=(d&67108863)<<6|b>>>26;b=we(D,da,121665,0)+d|0;e=f+Z|0;d=b>>>0>>0?e+1|0:e;f=d+A|0;e=b+l|0;f=e>>>0>>0?f+1|0:f;l=d>>31>>>7|0;b=b+l|0;d=l>>>0>b>>>0?d+1|0:d;l=b&-33554432;G[g+2472>>2]=e-l;G[g+2476>>2]=f-((e>>>0>>0)+d|0);e=d;d=d>>25;f=(e&33554431)<<7|b>>>25;b=we(J,ra,121665,0)+f|0;e=d+Z|0;e=b>>>0>>0?e+1|0:e;f=e+K|0;d=b+s|0;f=d>>>0>>0?f+1|0:f;l=d;d=f;f=e;e=e>>31>>>6|0;b=b+e|0;if(e>>>0>b>>>0){f=f+1|0}e=b&-67108864;G[g+2480>>2]=l-e;G[g+2484>>2]=d-((e>>>0>l>>>0)+f|0);d=f;f=d>>26;d=(d&67108863)<<6|b>>>26;b=we(Q,Ba,121665,0)+d|0;e=f+Z|0;e=b>>>0>>0?e+1|0:e;d=e+L|0;f=b+n|0;d=f>>>0>>0?d+1|0:d;l=f;f=e;e=e>>31>>>7|0;b=b+e|0;if(e>>>0>b>>>0){f=f+1|0}e=b&-33554432;G[g+2488>>2]=l-e;G[g+2492>>2]=d-((e>>>0>l>>>0)+f|0);d=f;f=d>>25;d=(d&33554431)<<7|b>>>25;b=we(C,ga,121665,0)+d|0;e=f+Z|0;d=b>>>0>>0?e+1|0:e;f=d+N|0;e=b+x|0;f=e>>>0>>0?f+1|0:f;l=d>>31>>>6|0;b=b+l|0;d=l>>>0>b>>>0?d+1|0:d;l=b&-67108864;G[g+2496>>2]=e-l;G[g+2500>>2]=f-((e>>>0>>0)+d|0);e=d;d=d>>26;f=(e&67108863)<<6|b>>>26;b=we(S,sa,121665,0)+f|0;e=d+Z|0;e=b>>>0>>0?e+1|0:e;f=e+W|0;d=b+o|0;f=d>>>0>>0?f+1|0:f;l=d;d=f;f=e;e=e>>31>>>7|0;b=b+e|0;if(e>>>0>b>>>0){f=f+1|0}e=b&-33554432;G[g+2504>>2]=l-e;G[g+2508>>2]=d-((e>>>0>l>>>0)+f|0);e=T+na|0;d=v+U|0;e=d>>>0>>0?e+1|0:e;l=V&-33554432;m=d-l|0;s=e-((d>>>0>>0)+$|0)|0;e=f>>25;b=(f&33554431)<<7|b>>>25;d=R&-67108864;f=u-d|0;d=(la-((d>>>0>u>>>0)+X|0)|0)+e|0;l=f;f=b+f|0;d=l>>>0>f>>>0?d+1|0:d;e=we(b,e,18,0);b=e+f|0;d=Z+d|0;l=b;d=b>>>0>>0?d+1|0:d;f=d>>31>>>6|0;b=b+f|0;e=f>>>0>b>>>0?d+1|0:d;n=(e&67108863)<<6|b>>>26;m=n+m|0;f=(e>>26)+s|0;G[g+2440>>2]=m;G[g+2444>>2]=m>>>0>>0?f+1|0:f;d=d+oa|0;f=l+z|0;d=f>>>0>>0?d+1|0:d;b=b&-67108864;G[g+2432>>2]=f-b;G[g+2436>>2]=d-((b>>>0>f>>>0)+e|0);b=P;C=g+2432|0;wa(b,fa,C);l=G[b+64>>2];U=G[b+68>>2];t=G[b+144>>2];W=G[b+148>>2];P=G[b+56>>2];T=G[b+60>>2];m=G[b+136>>2];S=G[b+140>>2];s=G[b+48>>2];V=G[b+52>>2];n=G[b+128>>2];O=G[b+132>>2];x=G[b+40>>2];$=G[b+44>>2];o=G[b+120>>2];_=G[b+124>>2];v=G[b+32>>2];da=G[b+36>>2];z=G[b+112>>2];R=G[b+116>>2];u=G[b+24>>2];ea=G[b+28>>2];A=G[b+104>>2];X=G[b+108>>2];f=G[b+16>>2];e=G[b+20>>2];d=G[b+96>>2];r=G[b+100>>2];D=G[b+8>>2];L=G[b+12>>2];B=G[b+88>>2];K=G[b+92>>2];I=G[b>>2];Q=G[b+4>>2];q=G[b+80>>2];J=G[b+84>>2];G[b+80>>2]=0;G[b+84>>2]=0;e=e+r|0;N=f;f=d+f|0;e=N>>>0>f>>>0?e+1|0:e;r=we(d,r,18,0);d=r+f|0;f=Z+e|0;N=d;r=d>>>0>>0?f+1|0:f;d=K+L|0;e=B+D|0;d=e>>>0>>0?d+1|0:d;f=we(B,K,18,0);e=f+e|0;d=Z+d|0;L=e;B=e>>>0>>0?d+1|0:d;f=J+Q|0;d=q+I|0;f=d>>>0>>0?f+1|0:f;D=we(q,J,18,0);d=D+d|0;e=Z+f|0;e=d>>>0>>0?e+1|0:e;D=d;I=e;f=e;q=e>>31>>>6|0;d=d+q|0;if(q>>>0>d>>>0){f=e+1|0}q=d;K=f;e=f>>26;J=(f&67108863)<<6|d>>>26;f=J+L|0;d=e+B|0;B=f;d=f>>>0>>0?d+1|0:d;J=d;e=f;L=d>>31>>>7|0;e=e+L|0;f=L>>>0>e>>>0?d+1|0:d;L=e;Q=f;d=f>>25;f=(f&33554431)<<7|e>>>25;e=f+N|0;d=d+r|0;d=e>>>0>>0?d+1|0:d;r=d;f=e;e=d;N=d>>31>>>6|0;d=f+N|0;e=N>>>0>d>>>0?e+1|0:e;N=d;d=d&-67108864;G[b+16>>2]=f-d;G[b+20>>2]=r-((d>>>0>f>>>0)+e|0);d=X+ea|0;f=u+A|0;d=f>>>0>>0?d+1|0:d;u=we(A,X,18,0);A=u+f|0;f=Z+d|0;u=u>>>0>A>>>0?f+1|0:f;d=A;A=(e&67108863)<<6|N>>>26;d=d+A|0;e=(e>>26)+u|0;e=d>>>0>>0?e+1|0:e;u=e;f=d;d=e;e=d>>31>>>7|0;r=e;e=e+f|0;if(r>>>0>e>>>0){d=d+1|0}A=e;e=e&-33554432;G[b+24>>2]=f-e;G[b+28>>2]=u-((e>>>0>f>>>0)+d|0);f=R+da|0;e=v+z|0;f=e>>>0>>0?f+1|0:f;r=e;e=we(z,R,18,0);v=r+e|0;f=Z+f|0;f=e>>>0>v>>>0?f+1|0:f;e=d;d=d>>25;r=v;v=(e&33554431)<<7|A>>>25;e=r+v|0;d=d+f|0;d=e>>>0>>0?d+1|0:d;v=d;f=e;e=d;z=d>>31>>>6|0;d=f+z|0;e=z>>>0>d>>>0?e+1|0:e;z=d;d=d&-67108864;G[b+32>>2]=f-d;G[b+36>>2]=v-((d>>>0>f>>>0)+e|0);d=_+$|0;f=o+x|0;d=f>>>0>>0?d+1|0:d;x=we(o,_,18,0);o=x+f|0;f=Z+d|0;x=o>>>0>>0?f+1|0:f;d=o;o=(e&67108863)<<6|z>>>26;d=d+o|0;e=(e>>26)+x|0;e=d>>>0>>0?e+1|0:e;x=e;f=d;d=e;e=d>>31>>>7|0;o=e;e=e+f|0;if(o>>>0>e>>>0){d=d+1|0}o=e;e=e&-33554432;G[b+40>>2]=f-e;G[b+44>>2]=x-((e>>>0>f>>>0)+d|0);f=O+V|0;e=n+s|0;f=e>>>0>>0?f+1|0:f;r=e;e=we(n,O,18,0);s=r+e|0;f=Z+f|0;f=e>>>0>s>>>0?f+1|0:f;e=d;d=d>>25;n=s;s=(e&33554431)<<7|o>>>25;e=n+s|0;d=d+f|0;d=e>>>0>>0?d+1|0:d;s=d;f=e;e=d;n=d>>31>>>6|0;d=f+n|0;e=n>>>0>d>>>0?e+1|0:e;n=d;d=d&-67108864;G[b+48>>2]=f-d;G[b+52>>2]=s-((d>>>0>f>>>0)+e|0);d=T+S|0;f=m+P|0;d=f>>>0

>>0?d+1|0:d;P=we(m,S,18,0);m=P+f|0;f=Z+d|0;P=m>>>0

>>0?f+1|0:f;d=m;m=(e&67108863)<<6|n>>>26;d=d+m|0;e=(e>>26)+P|0;e=d>>>0>>0?e+1|0:e;P=e;f=d;d=e;e=d>>31>>>7|0;m=e;e=e+f|0;if(m>>>0>e>>>0){d=d+1|0}m=e;e=e&-33554432;G[b+56>>2]=f-e;G[b+60>>2]=P-((e>>>0>f>>>0)+d|0);f=U+W|0;e=l+t|0;f=e>>>0>>0?f+1|0:f;l=e;e=we(t,W,18,0);l=l+e|0;f=Z+f|0;f=e>>>0>l>>>0?f+1|0:f;e=d;d=d>>25;n=l;l=(e&33554431)<<7|m>>>25;e=n+l|0;d=d+f|0;d=e>>>0>>0?d+1|0:d;l=d;f=e;e=d;t=d>>31>>>6|0;d=f+t|0;e=t>>>0>d>>>0?e+1|0:e;t=d&-67108864;G[b+64>>2]=f-t;G[b+68>>2]=l-((f>>>0>>0)+e|0);f=e>>26;t=(e&67108863)<<6|d>>>26;e=t+G[b+72>>2]|0;d=f+G[b+76>>2]|0;d=e>>>0>>0?d+1|0:d;l=d;f=d;t=d>>31>>>7|0;d=e+t|0;f=t>>>0>d>>>0?f+1|0:f;t=d&-33554432;G[b+72>>2]=e-t;G[b+76>>2]=l-((e>>>0>>0)+f|0);e=L&-33554432;P=B-e|0;m=J-((e>>>0>B>>>0)+Q|0)|0;e=d;d=f>>25;f=(f&33554431)<<7|e>>>25;t=q&-67108864;l=D-t|0;e=d;d=d+(I-((t>>>0>D>>>0)+K|0)|0)|0;n=l;l=f+l|0;d=n>>>0>l>>>0?d+1|0:d;n=l;l=we(f,e,18,0);e=n+l|0;f=Z+d|0;f=e>>>0>>0?f+1|0:f;t=f;d=f;f=d>>31>>>6|0;l=e+f|0;if(f>>>0>l>>>0){d=d+1|0}s=(d&67108863)<<6|l>>>26;P=s+P|0;f=(d>>26)+m|0;G[b+8>>2]=P;G[b+12>>2]=s>>>0>P>>>0?f+1|0:f;f=l&-67108864;G[b>>2]=e-f;G[b+4>>2]=t-((e>>>0>>0)+d|0);d=G[p>>2];e=G[c>>2];f=F&(d^e);e=e^f;G[c>>2]=e;G[c+4>>2]=e>>31;d=d^f;G[p>>2]=d;G[p+4>>2]=d>>31;d=G[p+8>>2];e=G[c+8>>2];f=F&(d^e);e=e^f;G[c+8>>2]=e;G[c+12>>2]=e>>31;d=d^f;G[p+8>>2]=d;G[p+12>>2]=d>>31;d=G[p+16>>2];e=G[c+16>>2];f=F&(d^e);e=e^f;G[c+16>>2]=e;G[c+20>>2]=e>>31;d=d^f;G[p+16>>2]=d;G[p+20>>2]=d>>31;d=G[p+24>>2];e=G[c+24>>2];f=F&(d^e);e=e^f;G[c+24>>2]=e;G[c+28>>2]=e>>31;d=d^f;G[p+24>>2]=d;G[p+28>>2]=d>>31;d=G[p+32>>2];e=G[c+32>>2];f=F&(d^e);e=e^f;G[c+32>>2]=e;G[c+36>>2]=e>>31;d=d^f;G[p+32>>2]=d;G[p+36>>2]=d>>31;d=G[p+40>>2];e=G[c+40>>2];f=F&(d^e);e=e^f;G[c+40>>2]=e;G[c+44>>2]=e>>31;d=d^f;G[p+40>>2]=d;G[p+44>>2]=d>>31;d=G[p+48>>2];e=G[c+48>>2];f=F&(d^e);e=e^f;G[c+48>>2]=e;G[c+52>>2]=e>>31;d=d^f;G[p+48>>2]=d;G[p+52>>2]=d>>31;d=G[p+56>>2];e=G[c+56>>2];f=F&(d^e);e=e^f;G[c+56>>2]=e;G[c+60>>2]=e>>31;d=d^f;G[p+56>>2]=d;G[p+60>>2]=d>>31;d=G[p+64>>2];e=G[c+64>>2];f=F&(d^e);e=e^f;G[c+64>>2]=e;G[c+68>>2]=e>>31;d=d^f;G[p+64>>2]=d;G[p+68>>2]=d>>31;d=G[p+72>>2];e=G[c+72>>2];f=F&(d^e);e=e^f;G[c+72>>2]=e;G[c+76>>2]=e>>31;d=d^f;G[p+72>>2]=d;G[p+76>>2]=d>>31;d=G[y>>2];e=G[b>>2];f=F&(d^e);e=e^f;G[b>>2]=e;G[b+4>>2]=e>>31;d=d^f;G[y>>2]=d;G[y+4>>2]=d>>31;d=G[y+8>>2];e=G[b+8>>2];f=F&(d^e);e=e^f;G[b+8>>2]=e;G[b+12>>2]=e>>31;d=d^f;G[y+8>>2]=d;G[y+12>>2]=d>>31;d=G[y+16>>2];e=G[b+16>>2];f=F&(d^e);e=e^f;G[b+16>>2]=e;G[b+20>>2]=e>>31;d=d^f;G[y+16>>2]=d;G[y+20>>2]=d>>31;d=G[y+24>>2];e=G[b+24>>2];f=F&(d^e);e=e^f;G[b+24>>2]=e;G[b+28>>2]=e>>31;d=d^f;G[y+24>>2]=d;G[y+28>>2]=d>>31;d=G[y+32>>2];e=G[b+32>>2];f=F&(d^e);e=e^f;G[b+32>>2]=e;G[b+36>>2]=e>>31;d=d^f;G[y+32>>2]=d;G[y+36>>2]=d>>31;d=G[y+40>>2];e=G[b+40>>2];f=F&(d^e);e=e^f;G[b+40>>2]=e;G[b+44>>2]=e>>31;d=d^f;G[y+40>>2]=d;G[y+44>>2]=d>>31;d=G[y+48>>2];e=G[b+48>>2];f=F&(d^e);e=e^f;G[b+48>>2]=e;G[b+52>>2]=e>>31;d=d^f;G[y+48>>2]=d;G[y+52>>2]=d>>31;d=G[y+56>>2];e=G[b+56>>2];f=F&(d^e);e=e^f;G[b+56>>2]=e;G[b+60>>2]=e>>31;d=d^f;G[y+56>>2]=d;G[y+60>>2]=d>>31;d=G[y+64>>2];e=G[b+64>>2];f=F&(d^e);e=e^f;G[b+64>>2]=e;G[b+68>>2]=e>>31;d=d^f;G[y+64>>2]=d;G[y+68>>2]=d>>31;d=G[y+72>>2];e=G[b+72>>2];f=F&(d^e);e=e^f;G[b+72>>2]=e;G[b+76>>2]=e>>31;d=d^f;G[y+72>>2]=d;G[y+76>>2]=d>>31;va=va<<1;P=w;t=h;l=j;xa=xa+1|0;if((xa|0)!=8){continue}break}ua=ua+1|0;if((ua|0)!=32){continue}break}ma(g+32|0,c,80);ma(ca,b,80);ja(fa,ca);i=g+672|0;ja(i,fa);c=g+832|0;ja(c,i);wa(C,c,ca);b=G[g+2576>>2];f=G[g+2496>>2];d=b+f|0;h=G[g+2580>>2];e=h+G[g+2500>>2]|0;e=d>>>0>>0?e+1|0:e;f=d;d=we(b,h,18,0);b=f+d|0;f=Z+e|0;G[g+2496>>2]=b;G[g+2500>>2]=b>>>0>>0?f+1|0:f;b=G[g+2568>>2];f=G[g+2488>>2];e=b+f|0;h=G[g+2572>>2];d=h+G[g+2492>>2]|0;d=e>>>0>>0?d+1|0:d;f=e;e=we(b,h,18,0);b=f+e|0;f=Z+d|0;G[g+2488>>2]=b;G[g+2492>>2]=b>>>0>>0?f+1|0:f;b=G[g+2560>>2];f=G[g+2480>>2];e=b+f|0;h=G[g+2564>>2];d=h+G[g+2484>>2]|0;d=e>>>0>>0?d+1|0:d;f=we(b,h,18,0);b=f+e|0;e=Z+d|0;G[g+2480>>2]=b;G[g+2484>>2]=b>>>0>>0?e+1|0:e;b=G[g+2552>>2];e=G[g+2472>>2];d=b+e|0;h=G[g+2556>>2];f=h+G[g+2476>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,h,18,0);b=e+d|0;d=Z+f|0;G[g+2472>>2]=b;G[g+2476>>2]=b>>>0>>0?d+1|0:d;b=G[g+2544>>2];e=G[g+2464>>2];d=b+e|0;h=G[g+2548>>2];f=h+G[g+2468>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,h,18,0);b=e+d|0;d=Z+f|0;G[g+2464>>2]=b;G[g+2468>>2]=b>>>0>>0?d+1|0:d;b=G[g+2536>>2];f=G[g+2456>>2];d=b+f|0;h=G[g+2540>>2];e=h+G[g+2460>>2]|0;e=d>>>0>>0?e+1|0:e;f=d;d=we(b,h,18,0);b=f+d|0;f=Z+e|0;G[g+2456>>2]=b;G[g+2460>>2]=b>>>0>>0?f+1|0:f;b=G[g+2528>>2];f=G[g+2448>>2];e=b+f|0;h=G[g+2532>>2];d=h+G[g+2452>>2]|0;d=e>>>0>>0?d+1|0:d;f=e;e=we(b,h,18,0);b=f+e|0;f=Z+d|0;G[g+2448>>2]=b;G[g+2452>>2]=b>>>0>>0?f+1|0:f;b=G[g+2520>>2];f=G[g+2440>>2];e=b+f|0;h=G[g+2524>>2];d=h+G[g+2444>>2]|0;d=e>>>0>>0?d+1|0:d;f=we(b,h,18,0);b=f+e|0;e=Z+d|0;G[g+2440>>2]=b;G[g+2444>>2]=b>>>0>>0?e+1|0:e;b=G[g+2512>>2];e=G[g+2432>>2];d=b+e|0;h=G[g+2516>>2];f=h+G[g+2436>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,h,18,0);b=e+d|0;d=Z+f|0;G[g+2432>>2]=b;G[g+2436>>2]=b>>>0>>0?d+1|0:d;za(C);ma(qa,C,80);wa(C,qa,fa);b=G[g+2576>>2];e=G[g+2496>>2];d=b+e|0;h=G[g+2580>>2];f=h+G[g+2500>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,h,18,0);b=e+d|0;d=Z+f|0;G[g+2496>>2]=b;G[g+2500>>2]=b>>>0>>0?d+1|0:d;b=G[g+2568>>2];f=G[g+2488>>2];d=b+f|0;h=G[g+2572>>2];e=h+G[g+2492>>2]|0;e=d>>>0>>0?e+1|0:e;f=d;d=we(b,h,18,0);b=f+d|0;f=Z+e|0;G[g+2488>>2]=b;G[g+2492>>2]=b>>>0>>0?f+1|0:f;b=G[g+2560>>2];f=G[g+2480>>2];e=b+f|0;h=G[g+2564>>2];d=h+G[g+2484>>2]|0;d=e>>>0>>0?d+1|0:d;f=e;e=we(b,h,18,0);b=f+e|0;f=Z+d|0;G[g+2480>>2]=b;G[g+2484>>2]=b>>>0>>0?f+1|0:f;b=G[g+2552>>2];f=G[g+2472>>2];e=b+f|0;h=G[g+2556>>2];d=h+G[g+2476>>2]|0;d=e>>>0>>0?d+1|0:d;f=we(b,h,18,0);b=f+e|0;e=Z+d|0;G[g+2472>>2]=b;G[g+2476>>2]=b>>>0>>0?e+1|0:e;b=G[g+2544>>2];e=G[g+2464>>2];d=b+e|0;h=G[g+2548>>2];f=h+G[g+2468>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,h,18,0);b=e+d|0;d=Z+f|0;G[g+2464>>2]=b;G[g+2468>>2]=b>>>0>>0?d+1|0:d;b=G[g+2536>>2];e=G[g+2456>>2];d=b+e|0;h=G[g+2540>>2];f=h+G[g+2460>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,h,18,0);b=e+d|0;d=Z+f|0;G[g+2456>>2]=b;G[g+2460>>2]=b>>>0>>0?d+1|0:d;b=G[g+2528>>2];f=G[g+2448>>2];d=b+f|0;h=G[g+2532>>2];e=h+G[g+2452>>2]|0;e=d>>>0>>0?e+1|0:e;f=d;d=we(b,h,18,0);b=f+d|0;f=Z+e|0;G[g+2448>>2]=b;G[g+2452>>2]=b>>>0>>0?f+1|0:f;b=G[g+2520>>2];f=G[g+2440>>2];e=b+f|0;h=G[g+2524>>2];d=h+G[g+2444>>2]|0;d=e>>>0>>0?d+1|0:d;f=e;e=we(b,h,18,0);b=f+e|0;f=Z+d|0;G[g+2440>>2]=b;G[g+2444>>2]=b>>>0>>0?f+1|0:f;b=G[g+2512>>2];f=G[g+2432>>2];e=b+f|0;h=G[g+2516>>2];d=h+G[g+2436>>2]|0;d=e>>>0>>0?d+1|0:d;f=we(b,h,18,0);b=f+e|0;e=Z+d|0;G[g+2432>>2]=b;G[g+2436>>2]=b>>>0>>0?e+1|0:e;za(C);ma(ha,C,80);ja(c,ha);wa(C,c,qa);b=G[g+2576>>2];e=G[g+2496>>2];d=b+e|0;h=G[g+2580>>2];f=h+G[g+2500>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,h,18,0);b=e+d|0;d=Z+f|0;G[g+2496>>2]=b;G[g+2500>>2]=b>>>0>>0?d+1|0:d;b=G[g+2568>>2];e=G[g+2488>>2];d=b+e|0;h=G[g+2572>>2];f=h+G[g+2492>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,h,18,0);b=e+d|0;d=Z+f|0;G[g+2488>>2]=b;G[g+2492>>2]=b>>>0>>0?d+1|0:d;b=G[g+2560>>2];f=G[g+2480>>2];d=b+f|0;h=G[g+2564>>2];e=h+G[g+2484>>2]|0;e=d>>>0>>0?e+1|0:e;f=d;d=we(b,h,18,0);b=f+d|0;f=Z+e|0;G[g+2480>>2]=b;G[g+2484>>2]=b>>>0>>0?f+1|0:f;b=G[g+2552>>2];f=G[g+2472>>2];e=b+f|0;h=G[g+2556>>2];d=h+G[g+2476>>2]|0;d=e>>>0>>0?d+1|0:d;f=e;e=we(b,h,18,0);b=f+e|0;f=Z+d|0;G[g+2472>>2]=b;G[g+2476>>2]=b>>>0>>0?f+1|0:f;b=G[g+2544>>2];f=G[g+2464>>2];e=b+f|0;h=G[g+2548>>2];d=h+G[g+2468>>2]|0;d=e>>>0>>0?d+1|0:d;f=we(b,h,18,0);b=f+e|0;e=Z+d|0;G[g+2464>>2]=b;G[g+2468>>2]=b>>>0>>0?e+1|0:e;b=G[g+2536>>2];e=G[g+2456>>2];d=b+e|0;h=G[g+2540>>2];f=h+G[g+2460>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,h,18,0);b=e+d|0;d=Z+f|0;G[g+2456>>2]=b;G[g+2460>>2]=b>>>0>>0?d+1|0:d;b=G[g+2528>>2];e=G[g+2448>>2];d=b+e|0;h=G[g+2532>>2];f=h+G[g+2452>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,h,18,0);b=e+d|0;d=Z+f|0;G[g+2448>>2]=b;G[g+2452>>2]=b>>>0>>0?d+1|0:d;b=G[g+2520>>2];f=G[g+2440>>2];d=b+f|0;h=G[g+2524>>2];e=h+G[g+2444>>2]|0;e=d>>>0>>0?e+1|0:e;f=d;d=we(b,h,18,0);b=f+d|0;f=Z+e|0;G[g+2440>>2]=b;G[g+2444>>2]=b>>>0>>0?f+1|0:f;b=G[g+2512>>2];f=G[g+2432>>2];e=b+f|0;h=G[g+2516>>2];d=h+G[g+2436>>2]|0;d=e>>>0>>0?d+1|0:d;f=e;e=we(b,h,18,0);b=f+e|0;f=Z+d|0;G[g+2432>>2]=b;G[g+2436>>2]=b>>>0>>0?f+1|0:f;za(C);ma(ba,C,80);ja(c,ba);ja(i,c);ja(c,i);ja(i,c);ja(c,i);wa(C,c,ba);b=G[g+2576>>2];f=G[g+2496>>2];e=b+f|0;h=G[g+2580>>2];d=h+G[g+2500>>2]|0;d=e>>>0>>0?d+1|0:d;f=we(b,h,18,0);b=f+e|0;e=Z+d|0;G[g+2496>>2]=b;G[g+2500>>2]=b>>>0>>0?e+1|0:e;b=G[g+2568>>2];e=G[g+2488>>2];d=b+e|0;h=G[g+2572>>2];f=h+G[g+2492>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,h,18,0);b=e+d|0;d=Z+f|0;G[g+2488>>2]=b;G[g+2492>>2]=b>>>0>>0?d+1|0:d;b=G[g+2560>>2];e=G[g+2480>>2];d=b+e|0;h=G[g+2564>>2];f=h+G[g+2484>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,h,18,0);b=e+d|0;d=Z+f|0;G[g+2480>>2]=b;G[g+2484>>2]=b>>>0>>0?d+1|0:d;b=G[g+2552>>2];f=G[g+2472>>2];d=b+f|0;h=G[g+2556>>2];e=h+G[g+2476>>2]|0;e=d>>>0>>0?e+1|0:e;f=d;d=we(b,h,18,0);b=f+d|0;f=Z+e|0;G[g+2472>>2]=b;G[g+2476>>2]=b>>>0>>0?f+1|0:f;b=G[g+2544>>2];f=G[g+2464>>2];e=b+f|0;h=G[g+2548>>2];d=h+G[g+2468>>2]|0;d=e>>>0>>0?d+1|0:d;f=e;e=we(b,h,18,0);b=f+e|0;f=Z+d|0;G[g+2464>>2]=b;G[g+2468>>2]=b>>>0>>0?f+1|0:f;b=G[g+2536>>2];f=G[g+2456>>2];e=b+f|0;h=G[g+2540>>2];d=h+G[g+2460>>2]|0;d=e>>>0>>0?d+1|0:d;f=we(b,h,18,0);b=f+e|0;e=Z+d|0;G[g+2456>>2]=b;G[g+2460>>2]=b>>>0>>0?e+1|0:e;b=G[g+2528>>2];e=G[g+2448>>2];d=b+e|0;h=G[g+2532>>2];f=h+G[g+2452>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,h,18,0);b=e+d|0;d=Z+f|0;G[g+2448>>2]=b;G[g+2452>>2]=b>>>0>>0?d+1|0:d;b=G[g+2520>>2];e=G[g+2440>>2];d=b+e|0;h=G[g+2524>>2];f=h+G[g+2444>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,h,18,0);b=e+d|0;d=Z+f|0;G[g+2440>>2]=b;G[g+2444>>2]=b>>>0>>0?d+1|0:d;b=G[g+2512>>2];f=G[g+2432>>2];d=b+f|0;h=G[g+2516>>2];e=h+G[g+2436>>2]|0;e=d>>>0>>0?e+1|0:e;f=d;d=we(b,h,18,0);b=f+d|0;f=Z+e|0;G[g+2432>>2]=b;G[g+2436>>2]=b>>>0>>0?f+1|0:f;za(C);ma(aa,C,80);ja(c,aa);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);wa(C,i,aa);b=G[g+2576>>2];f=G[g+2496>>2];e=b+f|0;h=G[g+2580>>2];d=h+G[g+2500>>2]|0;d=e>>>0>>0?d+1|0:d;f=e;e=we(b,h,18,0);b=f+e|0;f=Z+d|0;G[g+2496>>2]=b;G[g+2500>>2]=b>>>0>>0?f+1|0:f;b=G[g+2568>>2];f=G[g+2488>>2];e=b+f|0;h=G[g+2572>>2];d=h+G[g+2492>>2]|0;d=e>>>0>>0?d+1|0:d;f=we(b,h,18,0);b=f+e|0;e=Z+d|0;G[g+2488>>2]=b;G[g+2492>>2]=b>>>0>>0?e+1|0:e;b=G[g+2560>>2];e=G[g+2480>>2];d=b+e|0;h=G[g+2564>>2];f=h+G[g+2484>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,h,18,0);b=e+d|0;d=Z+f|0;G[g+2480>>2]=b;G[g+2484>>2]=b>>>0>>0?d+1|0:d;b=G[g+2552>>2];e=G[g+2472>>2];d=b+e|0;h=G[g+2556>>2];f=h+G[g+2476>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,h,18,0);b=e+d|0;d=Z+f|0;G[g+2472>>2]=b;G[g+2476>>2]=b>>>0>>0?d+1|0:d;b=G[g+2544>>2];f=G[g+2464>>2];d=b+f|0;h=G[g+2548>>2];e=h+G[g+2468>>2]|0;e=d>>>0>>0?e+1|0:e;f=d;d=we(b,h,18,0);b=f+d|0;f=Z+e|0;G[g+2464>>2]=b;G[g+2468>>2]=b>>>0>>0?f+1|0:f;b=G[g+2536>>2];f=G[g+2456>>2];e=b+f|0;h=G[g+2540>>2];d=h+G[g+2460>>2]|0;d=e>>>0>>0?d+1|0:d;f=e;e=we(b,h,18,0);b=f+e|0;f=Z+d|0;G[g+2456>>2]=b;G[g+2460>>2]=b>>>0>>0?f+1|0:f;b=G[g+2528>>2];f=G[g+2448>>2];e=b+f|0;h=G[g+2532>>2];d=h+G[g+2452>>2]|0;d=e>>>0>>0?d+1|0:d;f=we(b,h,18,0);b=f+e|0;e=Z+d|0;G[g+2448>>2]=b;G[g+2452>>2]=b>>>0>>0?e+1|0:e;b=G[g+2520>>2];e=G[g+2440>>2];d=b+e|0;h=G[g+2524>>2];f=h+G[g+2444>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,h,18,0);b=e+d|0;d=Z+f|0;G[g+2440>>2]=b;G[g+2444>>2]=b>>>0>>0?d+1|0:d;b=G[g+2512>>2];e=G[g+2432>>2];d=b+e|0;h=G[g+2516>>2];f=h+G[g+2436>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,h,18,0);b=e+d|0;d=Z+f|0;G[g+2432>>2]=b;G[g+2436>>2]=b>>>0>>0?d+1|0:d;za(C);b=g+1312|0;ma(b,C,80);ja(c,b);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);wa(C,i,b);b=G[g+2576>>2];f=G[g+2496>>2];d=b+f|0;h=G[g+2580>>2];e=h+G[g+2500>>2]|0;e=d>>>0>>0?e+1|0:e;f=d;d=we(b,h,18,0);b=f+d|0;f=Z+e|0;G[g+2496>>2]=b;G[g+2500>>2]=b>>>0>>0?f+1|0:f;b=G[g+2568>>2];f=G[g+2488>>2];e=b+f|0;h=G[g+2572>>2];d=h+G[g+2492>>2]|0;d=e>>>0>>0?d+1|0:d;f=e;e=we(b,h,18,0);b=f+e|0;f=Z+d|0;G[g+2488>>2]=b;G[g+2492>>2]=b>>>0>>0?f+1|0:f;b=G[g+2560>>2];f=G[g+2480>>2];e=b+f|0;h=G[g+2564>>2];d=h+G[g+2484>>2]|0;d=e>>>0>>0?d+1|0:d;f=we(b,h,18,0);b=f+e|0;e=Z+d|0;G[g+2480>>2]=b;G[g+2484>>2]=b>>>0>>0?e+1|0:e;b=G[g+2552>>2];e=G[g+2472>>2];d=b+e|0;h=G[g+2556>>2];f=h+G[g+2476>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,h,18,0);b=e+d|0;d=Z+f|0;G[g+2472>>2]=b;G[g+2476>>2]=b>>>0>>0?d+1|0:d;b=G[g+2544>>2];e=G[g+2464>>2];d=b+e|0;h=G[g+2548>>2];f=h+G[g+2468>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,h,18,0);b=e+d|0;d=Z+f|0;G[g+2464>>2]=b;G[g+2468>>2]=b>>>0>>0?d+1|0:d;b=G[g+2536>>2];f=G[g+2456>>2];d=b+f|0;h=G[g+2540>>2];e=h+G[g+2460>>2]|0;e=d>>>0>>0?e+1|0:e;f=d;d=we(b,h,18,0);b=f+d|0;f=Z+e|0;G[g+2456>>2]=b;G[g+2460>>2]=b>>>0>>0?f+1|0:f;b=G[g+2528>>2];f=G[g+2448>>2];e=b+f|0;h=G[g+2532>>2];d=h+G[g+2452>>2]|0;d=e>>>0>>0?d+1|0:d;f=e;e=we(b,h,18,0);b=f+e|0;f=Z+d|0;G[g+2448>>2]=b;G[g+2452>>2]=b>>>0>>0?f+1|0:f;b=G[g+2520>>2];f=G[g+2440>>2];e=b+f|0;h=G[g+2524>>2];d=h+G[g+2444>>2]|0;d=e>>>0>>0?d+1|0:d;f=we(b,h,18,0);b=f+e|0;e=Z+d|0;G[g+2440>>2]=b;G[g+2444>>2]=b>>>0>>0?e+1|0:e;b=G[g+2512>>2];e=G[g+2432>>2];d=b+e|0;h=G[g+2516>>2];f=h+G[g+2436>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,h,18,0);b=e+d|0;d=Z+f|0;G[g+2432>>2]=b;G[g+2436>>2]=b>>>0>>0?d+1|0:d;za(C);ma(c,C,80);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);wa(C,c,aa);b=G[g+2576>>2];e=G[g+2496>>2];d=b+e|0;h=G[g+2580>>2];f=h+G[g+2500>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,h,18,0);b=e+d|0;d=Z+f|0;G[g+2496>>2]=b;G[g+2500>>2]=b>>>0>>0?d+1|0:d;b=G[g+2568>>2];f=G[g+2488>>2];d=b+f|0;h=G[g+2572>>2];e=h+G[g+2492>>2]|0;e=d>>>0>>0?e+1|0:e;f=d;d=we(b,h,18,0);b=f+d|0;f=Z+e|0;G[g+2488>>2]=b;G[g+2492>>2]=b>>>0>>0?f+1|0:f;b=G[g+2560>>2];f=G[g+2480>>2];e=b+f|0;h=G[g+2564>>2];d=h+G[g+2484>>2]|0;d=e>>>0>>0?d+1|0:d;f=e;e=we(b,h,18,0);b=f+e|0;f=Z+d|0;G[g+2480>>2]=b;G[g+2484>>2]=b>>>0>>0?f+1|0:f;b=G[g+2552>>2];f=G[g+2472>>2];e=b+f|0;h=G[g+2556>>2];d=h+G[g+2476>>2]|0;d=e>>>0>>0?d+1|0:d;f=we(b,h,18,0);b=f+e|0;e=Z+d|0;G[g+2472>>2]=b;G[g+2476>>2]=b>>>0>>0?e+1|0:e;b=G[g+2544>>2];e=G[g+2464>>2];d=b+e|0;h=G[g+2548>>2];f=h+G[g+2468>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,h,18,0);b=e+d|0;d=Z+f|0;G[g+2464>>2]=b;G[g+2468>>2]=b>>>0>>0?d+1|0:d;b=G[g+2536>>2];e=G[g+2456>>2];d=b+e|0;h=G[g+2540>>2];f=h+G[g+2460>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,h,18,0);b=e+d|0;d=Z+f|0;G[g+2456>>2]=b;G[g+2460>>2]=b>>>0>>0?d+1|0:d;b=G[g+2528>>2];f=G[g+2448>>2];d=b+f|0;h=G[g+2532>>2];e=h+G[g+2452>>2]|0;e=d>>>0>>0?e+1|0:e;f=d;d=we(b,h,18,0);b=f+d|0;f=Z+e|0;G[g+2448>>2]=b;G[g+2452>>2]=b>>>0>>0?f+1|0:f;b=G[g+2520>>2];f=G[g+2440>>2];e=b+f|0;h=G[g+2524>>2];d=h+G[g+2444>>2]|0;d=e>>>0>>0?d+1|0:d;f=e;e=we(b,h,18,0);b=f+e|0;f=Z+d|0;G[g+2440>>2]=b;G[g+2444>>2]=b>>>0>>0?f+1|0:f;b=G[g+2512>>2];f=G[g+2432>>2];e=b+f|0;h=G[g+2516>>2];d=h+G[g+2436>>2]|0;d=e>>>0>>0?d+1|0:d;f=we(b,h,18,0);b=f+e|0;e=Z+d|0;G[g+2432>>2]=b;G[g+2436>>2]=b>>>0>>0?e+1|0:e;za(C);b=g+1152|0;ma(b,C,80);ja(c,b);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);wa(C,i,b);b=G[g+2576>>2];e=G[g+2496>>2];d=b+e|0;h=G[g+2580>>2];f=h+G[g+2500>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,h,18,0);b=e+d|0;d=Z+f|0;G[g+2496>>2]=b;G[g+2500>>2]=b>>>0>>0?d+1|0:d;b=G[g+2568>>2];e=G[g+2488>>2];d=b+e|0;h=G[g+2572>>2];f=h+G[g+2492>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,h,18,0);b=e+d|0;d=Z+f|0;G[g+2488>>2]=b;G[g+2492>>2]=b>>>0>>0?d+1|0:d;b=G[g+2560>>2];f=G[g+2480>>2];d=b+f|0;h=G[g+2564>>2];e=h+G[g+2484>>2]|0;e=d>>>0>>0?e+1|0:e;f=d;d=we(b,h,18,0);b=f+d|0;f=Z+e|0;G[g+2480>>2]=b;G[g+2484>>2]=b>>>0>>0?f+1|0:f;b=G[g+2552>>2];f=G[g+2472>>2];e=b+f|0;h=G[g+2556>>2];d=h+G[g+2476>>2]|0;d=e>>>0>>0?d+1|0:d;f=e;e=we(b,h,18,0);b=f+e|0;f=Z+d|0;G[g+2472>>2]=b;G[g+2476>>2]=b>>>0>>0?f+1|0:f;b=G[g+2544>>2];f=G[g+2464>>2];e=b+f|0;h=G[g+2548>>2];d=h+G[g+2468>>2]|0;d=e>>>0>>0?d+1|0:d;f=we(b,h,18,0);b=f+e|0;e=Z+d|0;G[g+2464>>2]=b;G[g+2468>>2]=b>>>0>>0?e+1|0:e;b=G[g+2536>>2];e=G[g+2456>>2];d=b+e|0;h=G[g+2540>>2];f=h+G[g+2460>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,h,18,0);b=e+d|0;d=Z+f|0;G[g+2456>>2]=b;G[g+2460>>2]=b>>>0>>0?d+1|0:d;b=G[g+2528>>2];e=G[g+2448>>2];d=b+e|0;h=G[g+2532>>2];f=h+G[g+2452>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,h,18,0);b=e+d|0;d=Z+f|0;G[g+2448>>2]=b;G[g+2452>>2]=b>>>0>>0?d+1|0:d;b=G[g+2520>>2];f=G[g+2440>>2];d=b+f|0;h=G[g+2524>>2];e=h+G[g+2444>>2]|0;e=d>>>0>>0?e+1|0:e;f=d;d=we(b,h,18,0);b=f+d|0;f=Z+e|0;G[g+2440>>2]=b;G[g+2444>>2]=b>>>0>>0?f+1|0:f;b=G[g+2512>>2];f=G[g+2432>>2];e=b+f|0;h=G[g+2516>>2];d=h+G[g+2436>>2]|0;d=e>>>0>>0?d+1|0:d;f=e;e=we(b,h,18,0);b=f+e|0;f=Z+d|0;G[g+2432>>2]=b;G[g+2436>>2]=b>>>0>>0?f+1|0:f;za(C);b=g+992|0;ma(b,C,80);ja(i,b);ja(c,i);c=2;while(1){b=c>>>0<98;i=g+672|0;h=g+832|0;ja(i,h);ja(h,i);c=c+2|0;if(b){continue}break}c=g+2432|0;wa(c,h,g+992|0);b=G[g+2576>>2];f=G[g+2496>>2];e=b+f|0;j=G[g+2580>>2];d=j+G[g+2500>>2]|0;d=e>>>0>>0?d+1|0:d;f=we(b,j,18,0);b=f+e|0;e=Z+d|0;G[g+2496>>2]=b;G[g+2500>>2]=b>>>0>>0?e+1|0:e;b=G[g+2568>>2];e=G[g+2488>>2];d=b+e|0;j=G[g+2572>>2];f=j+G[g+2492>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,j,18,0);b=e+d|0;d=Z+f|0;G[g+2488>>2]=b;G[g+2492>>2]=b>>>0>>0?d+1|0:d;b=G[g+2560>>2];e=G[g+2480>>2];d=b+e|0;j=G[g+2564>>2];f=j+G[g+2484>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,j,18,0);b=e+d|0;d=Z+f|0;G[g+2480>>2]=b;G[g+2484>>2]=b>>>0>>0?d+1|0:d;b=G[g+2552>>2];f=G[g+2472>>2];d=b+f|0;j=G[g+2556>>2];e=j+G[g+2476>>2]|0;e=d>>>0>>0?e+1|0:e;f=d;d=we(b,j,18,0);b=f+d|0;f=Z+e|0;G[g+2472>>2]=b;G[g+2476>>2]=b>>>0>>0?f+1|0:f;b=G[g+2544>>2];f=G[g+2464>>2];e=b+f|0;j=G[g+2548>>2];d=j+G[g+2468>>2]|0;d=e>>>0>>0?d+1|0:d;f=e;e=we(b,j,18,0);b=f+e|0;f=Z+d|0;G[g+2464>>2]=b;G[g+2468>>2]=b>>>0>>0?f+1|0:f;b=G[g+2536>>2];f=G[g+2456>>2];e=b+f|0;j=G[g+2540>>2];d=j+G[g+2460>>2]|0;d=e>>>0>>0?d+1|0:d;f=we(b,j,18,0);b=f+e|0;e=Z+d|0;G[g+2456>>2]=b;G[g+2460>>2]=b>>>0>>0?e+1|0:e;b=G[g+2528>>2];e=G[g+2448>>2];d=b+e|0;j=G[g+2532>>2];f=j+G[g+2452>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,j,18,0);b=e+d|0;d=Z+f|0;G[g+2448>>2]=b;G[g+2452>>2]=b>>>0>>0?d+1|0:d;b=G[g+2520>>2];e=G[g+2440>>2];d=b+e|0;j=G[g+2524>>2];f=j+G[g+2444>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,j,18,0);b=e+d|0;d=Z+f|0;G[g+2440>>2]=b;G[g+2444>>2]=b>>>0>>0?d+1|0:d;b=G[g+2512>>2];f=G[g+2432>>2];d=b+f|0;j=G[g+2516>>2];e=j+G[g+2436>>2]|0;e=d>>>0>>0?e+1|0:e;f=d;d=we(b,j,18,0);b=f+d|0;f=Z+e|0;G[g+2432>>2]=b;G[g+2436>>2]=b>>>0>>0?f+1|0:f;za(c);ma(i,c,80);ja(h,i);ja(i,h);ja(h,i);ja(i,h);ja(h,i);ja(i,h);ja(h,i);ja(i,h);ja(h,i);ja(i,h);ja(h,i);ja(i,h);ja(h,i);ja(i,h);ja(h,i);ja(i,h);ja(h,i);ja(i,h);ja(h,i);ja(i,h);ja(h,i);ja(i,h);ja(h,i);ja(i,h);ja(h,i);ja(i,h);ja(h,i);ja(i,h);ja(h,i);ja(i,h);ja(h,i);ja(i,h);ja(h,i);ja(i,h);ja(h,i);ja(i,h);ja(h,i);ja(i,h);ja(h,i);ja(i,h);ja(h,i);ja(i,h);ja(h,i);ja(i,h);ja(h,i);ja(i,h);ja(h,i);ja(i,h);ja(h,i);ja(i,h);wa(c,i,g+1152|0);b=G[g+2576>>2];f=G[g+2496>>2];e=b+f|0;j=G[g+2580>>2];d=j+G[g+2500>>2]|0;d=e>>>0>>0?d+1|0:d;f=e;e=we(b,j,18,0);b=f+e|0;f=Z+d|0;G[g+2496>>2]=b;G[g+2500>>2]=b>>>0>>0?f+1|0:f;b=G[g+2568>>2];f=G[g+2488>>2];e=b+f|0;j=G[g+2572>>2];d=j+G[g+2492>>2]|0;d=e>>>0>>0?d+1|0:d;f=we(b,j,18,0);b=f+e|0;e=Z+d|0;G[g+2488>>2]=b;G[g+2492>>2]=b>>>0>>0?e+1|0:e;b=G[g+2560>>2];e=G[g+2480>>2];d=b+e|0;j=G[g+2564>>2];f=j+G[g+2484>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,j,18,0);b=e+d|0;d=Z+f|0;G[g+2480>>2]=b;G[g+2484>>2]=b>>>0>>0?d+1|0:d;b=G[g+2552>>2];e=G[g+2472>>2];d=b+e|0;j=G[g+2556>>2];f=j+G[g+2476>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,j,18,0);b=e+d|0;d=Z+f|0;G[g+2472>>2]=b;G[g+2476>>2]=b>>>0>>0?d+1|0:d;b=G[g+2544>>2];f=G[g+2464>>2];d=b+f|0;j=G[g+2548>>2];e=j+G[g+2468>>2]|0;e=d>>>0>>0?e+1|0:e;f=d;d=we(b,j,18,0);b=f+d|0;f=Z+e|0;G[g+2464>>2]=b;G[g+2468>>2]=b>>>0>>0?f+1|0:f;b=G[g+2536>>2];f=G[g+2456>>2];e=b+f|0;j=G[g+2540>>2];d=j+G[g+2460>>2]|0;d=e>>>0>>0?d+1|0:d;f=e;e=we(b,j,18,0);b=f+e|0;f=Z+d|0;G[g+2456>>2]=b;G[g+2460>>2]=b>>>0>>0?f+1|0:f;b=G[g+2528>>2];f=G[g+2448>>2];e=b+f|0;j=G[g+2532>>2];d=j+G[g+2452>>2]|0;d=e>>>0>>0?d+1|0:d;f=we(b,j,18,0);b=f+e|0;e=Z+d|0;G[g+2448>>2]=b;G[g+2452>>2]=b>>>0>>0?e+1|0:e;b=G[g+2520>>2];e=G[g+2440>>2];d=b+e|0;j=G[g+2524>>2];f=j+G[g+2444>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,j,18,0);b=e+d|0;d=Z+f|0;G[g+2440>>2]=b;G[g+2444>>2]=b>>>0>>0?d+1|0:d;b=G[g+2512>>2];e=G[g+2432>>2];d=b+e|0;j=G[g+2516>>2];f=j+G[g+2436>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,j,18,0);b=e+d|0;d=Z+f|0;G[g+2432>>2]=b;G[g+2436>>2]=b>>>0>>0?d+1|0:d;za(c);ma(h,c,80);ja(i,h);ja(h,i);ja(i,h);ja(h,i);ja(i,h);wa(c,i,g+1792|0);b=G[g+2576>>2];f=G[g+2496>>2];d=b+f|0;i=G[g+2580>>2];e=i+G[g+2500>>2]|0;e=d>>>0>>0?e+1|0:e;f=d;d=we(b,i,18,0);b=f+d|0;f=Z+e|0;G[g+2496>>2]=b;G[g+2500>>2]=b>>>0>>0?f+1|0:f;b=G[g+2568>>2];f=G[g+2488>>2];e=b+f|0;i=G[g+2572>>2];d=i+G[g+2492>>2]|0;d=e>>>0>>0?d+1|0:d;f=e;e=we(b,i,18,0);b=f+e|0;f=Z+d|0;G[g+2488>>2]=b;G[g+2492>>2]=b>>>0>>0?f+1|0:f;b=G[g+2560>>2];f=G[g+2480>>2];e=b+f|0;i=G[g+2564>>2];d=i+G[g+2484>>2]|0;d=e>>>0>>0?d+1|0:d;f=we(b,i,18,0);b=f+e|0;e=Z+d|0;G[g+2480>>2]=b;G[g+2484>>2]=b>>>0>>0?e+1|0:e;b=G[g+2552>>2];e=G[g+2472>>2];d=b+e|0;i=G[g+2556>>2];f=i+G[g+2476>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,i,18,0);b=e+d|0;d=Z+f|0;G[g+2472>>2]=b;G[g+2476>>2]=b>>>0>>0?d+1|0:d;b=G[g+2544>>2];e=G[g+2464>>2];d=b+e|0;i=G[g+2548>>2];f=i+G[g+2468>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,i,18,0);b=e+d|0;d=Z+f|0;G[g+2464>>2]=b;G[g+2468>>2]=b>>>0>>0?d+1|0:d;b=G[g+2536>>2];f=G[g+2456>>2];d=b+f|0;i=G[g+2540>>2];e=i+G[g+2460>>2]|0;e=d>>>0>>0?e+1|0:e;f=d;d=we(b,i,18,0);b=f+d|0;f=Z+e|0;G[g+2456>>2]=b;G[g+2460>>2]=b>>>0>>0?f+1|0:f;b=G[g+2528>>2];f=G[g+2448>>2];e=b+f|0;i=G[g+2532>>2];d=i+G[g+2452>>2]|0;d=e>>>0>>0?d+1|0:d;f=e;e=we(b,i,18,0);b=f+e|0;f=Z+d|0;G[g+2448>>2]=b;G[g+2452>>2]=b>>>0>>0?f+1|0:f;b=G[g+2520>>2];f=G[g+2440>>2];e=b+f|0;i=G[g+2524>>2];d=i+G[g+2444>>2]|0;d=e>>>0>>0?d+1|0:d;f=we(b,i,18,0);b=f+e|0;e=Z+d|0;G[g+2440>>2]=b;G[g+2444>>2]=b>>>0>>0?e+1|0:e;b=G[g+2512>>2];e=G[g+2432>>2];d=b+e|0;i=G[g+2516>>2];f=i+G[g+2436>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,i,18,0);b=e+d|0;d=Z+f|0;G[g+2432>>2]=b;G[g+2436>>2]=b>>>0>>0?d+1|0:d;za(c);b=g+512|0;ma(b,c,80);wa(c,g+32|0,b);b=G[g+2576>>2];e=G[g+2496>>2];d=b+e|0;i=G[g+2580>>2];f=i+G[g+2500>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,i,18,0);b=e+d|0;d=Z+f|0;G[g+2496>>2]=b;G[g+2500>>2]=b>>>0>>0?d+1|0:d;b=G[g+2568>>2];f=G[g+2488>>2];d=b+f|0;i=G[g+2572>>2];e=i+G[g+2492>>2]|0;e=d>>>0>>0?e+1|0:e;f=d;d=we(b,i,18,0);b=f+d|0;f=Z+e|0;G[g+2488>>2]=b;G[g+2492>>2]=b>>>0>>0?f+1|0:f;b=G[g+2560>>2];f=G[g+2480>>2];e=b+f|0;i=G[g+2564>>2];d=i+G[g+2484>>2]|0;d=e>>>0>>0?d+1|0:d;f=e;e=we(b,i,18,0);b=f+e|0;f=Z+d|0;G[g+2480>>2]=b;G[g+2484>>2]=b>>>0>>0?f+1|0:f;b=G[g+2552>>2];f=G[g+2472>>2];e=b+f|0;i=G[g+2556>>2];d=i+G[g+2476>>2]|0;d=e>>>0>>0?d+1|0:d;f=we(b,i,18,0);b=f+e|0;e=Z+d|0;G[g+2472>>2]=b;G[g+2476>>2]=b>>>0>>0?e+1|0:e;b=G[g+2544>>2];e=G[g+2464>>2];d=b+e|0;i=G[g+2548>>2];f=i+G[g+2468>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,i,18,0);b=e+d|0;d=Z+f|0;G[g+2464>>2]=b;G[g+2468>>2]=b>>>0>>0?d+1|0:d;b=G[g+2536>>2];e=G[g+2456>>2];d=b+e|0;i=G[g+2540>>2];f=i+G[g+2460>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,i,18,0);b=e+d|0;d=Z+f|0;G[g+2456>>2]=b;G[g+2460>>2]=b>>>0>>0?d+1|0:d;b=G[g+2528>>2];f=G[g+2448>>2];d=b+f|0;i=G[g+2532>>2];e=i+G[g+2452>>2]|0;e=d>>>0>>0?e+1|0:e;f=d;d=we(b,i,18,0);b=f+d|0;f=Z+e|0;G[g+2448>>2]=b;G[g+2452>>2]=b>>>0>>0?f+1|0:f;b=G[g+2520>>2];f=G[g+2440>>2];e=b+f|0;i=G[g+2524>>2];d=i+G[g+2444>>2]|0;d=e>>>0>>0?d+1|0:d;f=e;e=we(b,i,18,0);b=f+e|0;f=Z+d|0;G[g+2440>>2]=b;G[g+2444>>2]=b>>>0>>0?f+1|0:f;b=G[g+2512>>2];f=G[g+2432>>2];e=b+f|0;i=G[g+2516>>2];d=i+G[g+2436>>2]|0;d=e>>>0>>0?d+1|0:d;f=we(b,i,18,0);b=f+e|0;e=Z+d|0;G[g+2432>>2]=b;G[g+2436>>2]=b>>>0>>0?e+1|0:e;za(c);ma(g+2272|0,c,80);b=G[g+2272>>2];k=b>>31&b;c=G[g+2280>>2]+(k>>26)|0;t=c>>31&c;d=G[g+2288>>2]+(t>>25)|0;P=d>>31&d;e=G[g+2296>>2]+(P>>26)|0;m=e>>31&e;f=G[g+2304>>2]+(m>>25)|0;s=f>>31&f;i=G[g+2312>>2]+(s>>26)|0;n=i>>31&i;h=G[g+2320>>2]+(n>>25)|0;x=h>>31&h;j=G[g+2328>>2]+(x>>26)|0;o=j>>31&j;w=G[g+2336>>2]+(o>>25)|0;p=w>>31&w;l=G[g+2344>>2]+(p>>26)|0;v=l>>31&l;b=M(v>>25,19)+(b-(k&-67108864)|0)|0;z=b>>31&b;c=(z>>26)+(c-(t&-33554432)|0)|0;k=c>>31&c;r=c-(k&-33554432)|0;q=l-(v&-33554432)|0;c=(d-(P&-67108864)|0)+(k>>25)|0;l=c>>31&c;d=(e-(m&-33554432)|0)+(l>>26)|0;k=d>>31&d;e=(f-(s&-67108864)|0)+(k>>25)|0;t=e>>31&e;f=(i-(n&-33554432)|0)+(t>>26)|0;P=f>>31&f;i=(h-(x&-67108864)|0)+(P>>25)|0;m=i>>31&i;h=(j-(o&-33554432)|0)+(m>>26)|0;s=h>>31&h;j=(w-(p&-67108864)|0)+(s>>25)|0;n=j>>31&j;w=q+(n>>26)|0;x=w>>31&w;b=(b-(z&-67108864)|0)+M(x>>25,19)|0;o=b>>31&b;o=(r+(o>>26)|0)+(b-(o&-67108864)>>26)|0;c=(o>>25)+(c-(l&-67108864)|0)|0;l=(c>>26)+(d-(k&-33554432)|0)|0;k=(l>>25)+(e-(t&-67108864)|0)|0;t=(k>>26)+(f-(P&-33554432)|0)|0;P=(t>>25)+(i-(m&-67108864)|0)|0;h=(P>>26)+(h-(s&-33554432)|0)|0;j=(h>>25)+(j-(n&-67108864)|0)|0;w=(j>>26)+(w-(x&-33554432)|0)|0;m=M(w>>25,19)+(b&67108863)|0;d=(m>>26)+(o&33554431)|0;e=(d>>25)+(c&67108863)|0;f=(e>>26)+(l&33554431)|0;i=(f>>25)+(k&67108863)|0;b=(i>>26)+(t&33554431)|0;c=w&33554431;l=j&67108863;k=h&33554431;h=(P&67108863)+(b>>25)|0;j=k+(h>>26)|0;w=l+(j>>25)|0;c=c+(w>>26)|0;l=b&33554431;b=(c|-33554432)&(c&w)<<16&(w|-67108864)&((j|-33554432)&j<<16)&((h|-67108864)&h<<16)&((b|-33554432)&b<<16)&((i|-67108864)&i<<16)&((f|-33554432)&f<<16)&((e|-67108864)&e<<16)&((d|-33554432)&d<<16);b=b<<8&b;b=b<<4&b;b=b<<2&b;k=M(c>>25,19)+(m&67108863)|0;t=(b<<1&b)<0&(k|0)>67108844;b=t?33554431:0;l=l-b|0;E[a+16|0]=l;k=k+(t?-67108845:0)|0;E[a|0]=k;c=(c&33554431)-b|0;E[a+31|0]=c>>>18;E[a+30|0]=c>>>10;E[a+29|0]=c>>>2;m=w&67108863;w=t?67108863:0;t=m-w|0;E[a+27|0]=t>>>12;E[a+26|0]=t>>>4;j=(j&33554431)-b|0;E[a+24|0]=j>>>13;E[a+23|0]=j>>>5;h=(h&67108863)-w|0;E[a+21|0]=h>>>15;E[a+20|0]=h>>>7;E[a+18|0]=l>>>16;E[a+17|0]=l>>>8;i=i-w|0;E[a+15|0]=i>>>18;E[a+14|0]=i>>>10;E[a+13|0]=i>>>2;f=(f&33554431)-b|0;E[a+11|0]=f>>>11;E[a+10|0]=f>>>3;e=(e&67108863)-w|0;E[a+8|0]=e>>>13;E[a+7|0]=e>>>5;b=(d&33554431)-b|0;E[a+5|0]=b>>>14;E[a+4|0]=b>>>6;E[a+2|0]=k>>>16;E[a+1|0]=k>>>8;E[a+28|0]=c<<6|t>>>20;E[a+25|0]=t<<4|j>>>21;E[a+22|0]=j<<3|h>>>23;E[a+19|0]=h<<1|l>>>24;E[a+12|0]=i<<6|f>>>19;E[a+9|0]=f<<5|e>>>21;E[a+6|0]=e<<3|b>>>22;E[a+3|0]=b<<2|k>>>24;Y=g+2592|0}function eb(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,F=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0;g=Y-624|0;Y=g;G[g+352>>2]=327033209;G[g+356>>2]=1541459225;G[g+344>>2]=-79577749;G[g+348>>2]=528734635;G[g+336>>2]=725511199;G[g+340>>2]=-1694144372;G[g+328>>2]=-1377402159;G[g+332>>2]=1359893119;k=32;G[g+320>>2]=1595750129;G[g+324>>2]=-1521486534;G[g+312>>2]=-23791573;G[g+316>>2]=1013904242;G[g+304>>2]=-2067093701;G[g+308>>2]=-1150833019;G[g+360>>2]=0;G[g+296>>2]=-205731576;G[g+300>>2]=1779033703;G[g+288>>2]=0;G[g+292>>2]=0;o=a+32|0;i=o+32|0;l=g+364|0;while(1){f=G[g+360>>2];a:{if(!(f|k>>>0<128)){ya(g+288|0,i);e=G[g+292>>2];f=G[g+288>>2]+1024|0;e=f>>>0<1024?e+1|0:e;G[g+288>>2]=f;G[g+292>>2]=e;k=k-128|0;i=i+128|0;break a}s=128;e=128-f|0;m=e>>>0>k>>>0?k:e;if((f|0)!=128){e=m>>>0<=1?1:m;h=e&3;s=0;n=0;if(m>>>0>=4){f=e&-4;p=0;while(1){E[(G[g+360>>2]+n|0)+l|0]=H[i+n|0];e=n|1;E[(e+G[g+360>>2]|0)+l|0]=H[e+i|0];e=n|2;E[(e+G[g+360>>2]|0)+l|0]=H[e+i|0];e=n|3;E[(e+G[g+360>>2]|0)+l|0]=H[e+i|0];n=n+4|0;p=p+4|0;if((f|0)!=(p|0)){continue}break}}if(h){while(1){E[((G[g+360>>2]+n|0)+g|0)+364|0]=H[i+n|0];n=n+1|0;s=s+1|0;if((h|0)!=(s|0)){continue}break}}s=G[g+360>>2]}k=k-m|0;i=i+m|0;e=m+s|0;G[g+360>>2]=e;if((e|0)!=128){break a}ya(g+288|0,l);G[g+360>>2]=0;f=G[g+292>>2];e=G[g+288>>2]+1024|0;f=e>>>0<1024?f+1|0:f;G[g+288>>2]=e;G[g+292>>2]=f}if(k){continue}break}e=g+288|0;nb(e,b,c);f=e;e=g+160|0;gb(f,e);pb(e);Sb(g,e);i=g+224|0;qb(i,g+80|0);f=g+544|0;ka(f,g,i);e=g+496|0;ka(e,g+40|0,i);Ja(d,e);Ja(g+592|0,f);E[d+31|0]=H[d+31|0]^H[g+592|0]<<7;G[g+360>>2]=0;G[g+352>>2]=327033209;G[g+356>>2]=1541459225;G[g+344>>2]=-79577749;G[g+348>>2]=528734635;G[g+336>>2]=725511199;G[g+340>>2]=-1694144372;G[g+328>>2]=-1377402159;G[g+332>>2]=1359893119;G[g+320>>2]=1595750129;G[g+324>>2]=-1521486534;G[g+312>>2]=-23791573;G[g+316>>2]=1013904242;G[g+304>>2]=-2067093701;G[g+308>>2]=-1150833019;G[g+296>>2]=-205731576;G[g+300>>2]=1779033703;G[g+288>>2]=0;G[g+292>>2]=0;k=32;i=d;while(1){f=G[g+360>>2];b:{if(!(f|k>>>0<128)){ya(g+288|0,i);e=G[g+292>>2];f=G[g+288>>2]+1024|0;e=f>>>0<1024?e+1|0:e;G[g+288>>2]=f;G[g+292>>2]=e;k=k-128|0;i=i+128|0;break b}s=128;e=128-f|0;r=e>>>0>k>>>0?k:e;if((f|0)!=128){e=r>>>0<=1?1:r;m=e&3;p=0;n=0;if(r>>>0>=4){f=e&-4;h=0;while(1){s=g+364|0;E[s+(G[g+360>>2]+n|0)|0]=H[i+n|0];e=n|1;E[s+(e+G[g+360>>2]|0)|0]=H[e+i|0];e=n|2;E[s+(e+G[g+360>>2]|0)|0]=H[e+i|0];e=n|3;E[s+(e+G[g+360>>2]|0)|0]=H[e+i|0];n=n+4|0;h=h+4|0;if((f|0)!=(h|0)){continue}break}}if(m){while(1){E[((G[g+360>>2]+n|0)+g|0)+364|0]=H[i+n|0];n=n+1|0;p=p+1|0;if((m|0)!=(p|0)){continue}break}}s=G[g+360>>2]}k=k-r|0;i=i+r|0;e=r+s|0;G[g+360>>2]=e;if((e|0)!=128){break b}ya(g+288|0,l);G[g+360>>2]=0;e=G[g+292>>2];f=G[g+288>>2]+1024|0;e=f>>>0<1024?e+1|0:e;G[g+288>>2]=f;G[g+292>>2]=e}if(k){continue}break}c:{if(!a){break c}n=G[g+360>>2];if(n>>>0>128){break c}k=32;while(1){d:{if(!(k>>>0<128|n)){ya(g+288|0,a);f=G[g+292>>2];e=G[g+288>>2]+1024|0;f=e>>>0<1024?f+1|0:f;G[g+288>>2]=e;G[g+292>>2]=f;k=k-128|0;a=a+128|0;break d}i=128;e=128-n|0;m=e>>>0>k>>>0?k:e;if((n|0)!=128){e=m>>>0<=1?1:m;i=e&3;s=0;n=0;if(m>>>0>=4){f=e&-4;p=0;while(1){h=g+364|0;E[h+(G[g+360>>2]+n|0)|0]=H[a+n|0];e=n|1;E[h+(e+G[g+360>>2]|0)|0]=H[a+e|0];e=n|2;E[h+(e+G[g+360>>2]|0)|0]=H[a+e|0];e=n|3;E[h+(e+G[g+360>>2]|0)|0]=H[a+e|0];n=n+4|0;p=p+4|0;if((f|0)!=(p|0)){continue}break}}if(i){while(1){E[((G[g+360>>2]+n|0)+g|0)+364|0]=H[a+n|0];n=n+1|0;s=s+1|0;if((i|0)!=(s|0)){continue}break}}i=G[g+360>>2]}k=k-m|0;a=a+m|0;e=i+m|0;G[g+360>>2]=e;if((e|0)!=128){break d}ya(g+288|0,l);G[g+360>>2]=0;e=G[g+292>>2];f=G[g+288>>2]+1024|0;e=f>>>0<1024?e+1|0:e;G[g+288>>2]=f;G[g+292>>2]=e}if(!k){break c}n=G[g+360>>2];continue}}a=g+288|0;nb(a,b,c);q=g+224|0;gb(a,q);pb(q);b=H[o+23|0];M=b<<16&2031616|(H[o+21|0]|H[o+22|0]<<8);N=(H[q+28|0]|H[q+29|0]<<8|(H[q+30|0]<<16|H[q+31|0]<<24))>>>7|0;i=we(M,0,N,0);f=Z;a=H[q+27|0];e=a>>>24|0;h=H[q+23|0]|H[q+24|0]<<8|(H[q+25|0]<<16|H[q+26|0]<<24);c=a<<8|h>>>24;b=H[q+28|0];a=b>>>16|0;b=c|b<<16;e=a|e;O=((e&3)<<30|b>>>2)&2097151;c=H[o+23|0]|H[o+24|0]<<8|(H[o+25|0]<<16|H[o+26|0]<<24);P=c>>>5&2097151;a=we(O,0,P,0);i=a+i|0;e=Z+f|0;e=a>>>0>i>>>0?e+1|0:e;b=H[q+23|0];Q=b<<16&2031616|(H[q+21|0]|H[q+22|0]<<8);R=(H[o+28|0]|H[o+29|0]<<8|(H[o+30|0]<<16|H[o+31|0]<<24))>>>7|0;a=we(Q,0,R,0);b=a+i|0;f=Z+e|0;i=b;b=a>>>0>b>>>0?f+1|0:f;a=H[o+27|0];f=a>>>24|0;c=a<<8|c>>>24;a=H[o+28|0];e=a>>>16|0;c=c|a<<16;e=e|f;S=((e&3)<<30|c>>>2)&2097151;T=h>>>5&2097151;a=we(S,0,T,0);c=a+i|0;e=Z+b|0;r=c;c=a>>>0>c>>>0?e+1|0:e;h=we(P,0,T,0);i=Z;a=H[o+19|0];e=a>>>24|0;z=H[o+15|0]|H[o+16|0]<<8|(H[o+17|0]<<16|H[o+18|0]<<24);f=a<<8|z>>>24;b=e;a=H[o+20|0];e=a>>>16|0;a=a<<16;e=b|e;b=a|f;U=(e&7)<<29|b>>>3;s=e>>>3|0;b=we(U,s,N,0);e=b+h|0;a=Z+i|0;a=b>>>0>e>>>0?a+1|0:a;b=we(M,j,O,j);e=b+e|0;f=Z+a|0;h=e;b=b>>>0>e>>>0?f+1|0:f;a=H[q+19|0];f=a>>>24|0;x=H[q+15|0]|H[q+16|0]<<8|(H[q+17|0]<<16|H[q+18|0]<<24);i=a<<8|x>>>24;e=H[q+20|0];a=e>>>16|0;e=i|e<<16;f=a|f;a=f>>>3|0;V=(f&7)<<29|e>>>3;oa=a;a=we(V,a,R,0);f=a+h|0;e=Z+b|0;e=a>>>0>f>>>0?e+1|0:e;a=we(Q,j,S,j);p=a+f|0;e=Z+e|0;e=a>>>0>p>>>0?e+1|0:e;l=e;a=e-((p>>>0<4293918720)-1|0)|0;u=a;e=a>>>21|0;m=p- -1048576|0;a=(a&2097151)<<11|m>>>21;r=a+r|0;f=c+e|0;f=a>>>0>r>>>0?f+1|0:f;h=f;a=f-((r>>>0<4293918720)-1|0)|0;w=a;i=r- -1048576|0;k=(a&2097151)<<11|i>>>21;b=a>>>21|0;a=we(R,0,T,0);c=Z;f=a;a=we(N,0,P,0);f=f+a|0;e=Z+c|0;c=we(O,j,S,j);v=c+f|0;a=Z+(a>>>0>f>>>0?e+1|0:e)|0;a=c>>>0>v>>>0?a+1|0:a;c=v- -1048576|0;e=c&-2097152;n=v-e|0;f=a-((v>>>0<4293918720)-1|0)|0;e=(a-((f&131071)+(e>>>0>v>>>0)|0)|0)+b|0;a=k+n|0;e=a>>>0>>0?e+1|0:e;Aa=e;Ba=a;n=we(a,e,470296,0);k=Z;b=we(N,0,S,j);a=Z;e=b;b=we(O,j,R,0);e=e+b|0;a=Z+a|0;b=b>>>0>e>>>0?a+1|0:a;c=(f&2097151)<<11|c>>>21;e=c+e|0;f=(f>>>21|0)+b|0;f=c>>>0>e>>>0?f+1|0:f;c=f-((e>>>0<4293918720)-1|0)|0;F=c;D=e- -1048576|0;b=D&-2097152;a=e-b|0;f=f-((c&131071)+(b>>>0>e>>>0)|0)|0;Ca=f;c=i&-2097152;b=r-c|0;Da=b;e=h-((c>>>0>r>>>0)+w|0)|0;Ea=e;Fa=a;c=we(a,f,666643,0);f=c+n|0;a=Z+k|0;a=c>>>0>f>>>0?a+1|0:a;b=we(b,e,654183,0);c=b+f|0;e=Z+a|0;A=c;r=b>>>0>c>>>0?e+1|0:e;a=m&-2097152;t=p-a|0;v=l-((a>>>0>p>>>0)+u|0)|0;b=we(O,j,U,s);c=Z;a=b;W=z>>>6&2097151;b=we(W,0,N,0);e=a+b|0;a=Z+c|0;a=b>>>0>e>>>0?a+1|0:a;b=we(P,0,Q,j);c=b+e|0;f=Z+a|0;f=b>>>0>c>>>0?f+1|0:f;a=we(M,j,T,0);b=a+c|0;e=Z+f|0;e=a>>>0>b>>>0?e+1|0:e;a=b;X=x>>>6&2097151;b=we(R,0,X,0);c=a+b|0;a=Z+e|0;a=b>>>0>c>>>0?a+1|0:a;b=we(S,j,V,oa);c=b+c|0;e=Z+a|0;l=c;i=b>>>0>c>>>0?e+1|0:e;a=H[o+14|0];e=a>>>24|0;x=H[o+10|0]|H[o+11|0]<<8|(H[o+12|0]<<16|H[o+13|0]<<24);c=a<<8|x>>>24;b=H[o+15|0];a=b>>>16|0;b=b<<16;e=a|e;a=b|c;_=((e&1)<<31|a>>>1)&2097151;b=we(_,0,N,0);a=Z;c=b;b=we(O,j,W,0);c=c+b|0;a=Z+a|0;a=b>>>0>c>>>0?a+1|0:a;b=we(T,0,U,s);c=b+c|0;f=Z+a|0;f=b>>>0>c>>>0?f+1|0:f;a=we(P,0,V,oa);b=a+c|0;e=Z+f|0;e=a>>>0>b>>>0?e+1|0:e;a=we(M,j,Q,j);b=a+b|0;e=Z+e|0;h=b;c=a>>>0>b>>>0?e+1|0:e;a=H[q+14|0];e=a>>>24|0;u=H[q+10|0]|H[q+11|0]<<8|(H[q+12|0]<<16|H[q+13|0]<<24);f=a<<8|u>>>24;b=e;a=H[q+15|0];e=a>>>16|0;a=a<<16|f;b=b|e;$=((b&1)<<31|a>>>1)&2097151;b=we($,0,R,0);e=b+h|0;a=Z+c|0;a=b>>>0>e>>>0?a+1|0:a;b=we(S,j,X,0);m=b+e|0;a=Z+a|0;a=b>>>0>m>>>0?a+1|0:a;h=a;b=a-((m>>>0<4293918720)-1|0)|0;I=b;a=b>>>21|0;n=m- -1048576|0;b=(b&2097151)<<11|n>>>21;w=b+l|0;f=a+i|0;f=b>>>0>w>>>0?f+1|0:f;k=f;b=f-((w>>>0<4293918720)-1|0)|0;y=b;a=b>>>21|0;p=w- -1048576|0;c=(b&2097151)<<11|p>>>21;b=c+t|0;a=a+v|0;a=b>>>0>>0?a+1|0:a;Ga=a;Ha=b;a=we(b,a,-997805,-1);b=a+A|0;e=Z+r|0;t=b;r=a>>>0>b>>>0?e+1|0:e;K=H[g+183|0]|H[g+184|0]<<8|(H[g+185|0]<<16|H[g+186|0]<<24);v=K>>>5&2097151;a=H[o+2|0];aa=a<<16&2031616|(H[o|0]|H[o+1|0]<<8);c=we(aa,0,T,0);b=Z;l=H[o+2|0]|H[o+3|0]<<8|(H[o+4|0]<<16|H[o+5|0]<<24);ba=l>>>5&2097151;a=we(Q,j,ba,0);c=a+c|0;f=Z+b|0;f=a>>>0>c>>>0?f+1|0:f;ca=(H[o+7|0]|H[o+8|0]<<8|(H[o+9|0]<<16|H[o+10|0]<<24))>>>7&2097151;a=we(ca,0,X,0);b=a+c|0;e=Z+f|0;e=a>>>0>b>>>0?e+1|0:e;a=b;da=x>>>4&2097151;b=we($,j,da,0);c=a+b|0;a=Z+e|0;i=c;c=b>>>0>c>>>0?a+1|0:a;b=H[o+6|0];a=b>>>24|0;f=b<<8|l>>>24;b=a;a=H[o+7|0];e=a>>>16|0;a=a<<16|f;b=b|e;ea=((b&3)<<30|a>>>2)&2097151;b=we(ea,0,V,oa);e=b+i|0;a=Z+c|0;a=b>>>0>e>>>0?a+1|0:a;fa=(H[q+7|0]|H[q+8|0]<<8|(H[q+9|0]<<16|H[q+10|0]<<24))>>>7&2097151;b=we(W,0,fa,0);c=b+e|0;f=Z+a|0;f=b>>>0>c>>>0?f+1|0:f;C=u>>>4&2097151;b=we(_,j,C,0);c=b+c|0;a=Z+f|0;e=b>>>0>c>>>0?a+1|0:a;b=H[q+6|0];a=b>>>24|0;l=H[q+2|0]|H[q+3|0]<<8|(H[q+4|0]<<16|H[q+5|0]<<24);i=b<<8|l>>>24;b=a;a=H[q+7|0];f=a>>>16|0;a=a<<16|i;b=b|f;ga=((b&3)<<30|a>>>2)&2097151;a=we(U,s,ga,0);b=a+c|0;e=Z+e|0;e=a>>>0>b>>>0?e+1|0:e;a=H[q+2|0];c=b;ha=a<<16&2031616|(H[q|0]|H[q+1|0]<<8);b=we(ha,0,P,0);c=c+b|0;a=Z+e|0;a=b>>>0>c>>>0?a+1|0:a;ia=l>>>5&2097151;b=we(M,j,ia,0);c=b+c|0;a=Z+a|0;a=b>>>0>c>>>0?a+1|0:a;b=c+v|0;e=b>>>0>>0?a+1|0:a;u=b;i=e;c=H[g+181|0]|H[g+182|0]<<8;a=we(Q,j,aa,j);b=Z;f=a;a=we(V,oa,ba,0);e=f+a|0;f=Z+b|0;f=a>>>0>e>>>0?f+1|0:f;a=we($,j,ca,0);b=a+e|0;e=Z+f|0;e=a>>>0>b>>>0?e+1|0:e;a=we(da,0,C,0);b=a+b|0;e=Z+e|0;e=a>>>0>b>>>0?e+1|0:e;a=b;b=we(X,0,ea,j);f=a+b|0;a=Z+e|0;a=b>>>0>f>>>0?a+1|0:a;b=we(W,0,ga,j);e=b+f|0;a=Z+a|0;a=b>>>0>e>>>0?a+1|0:a;b=we(_,j,fa,0);e=b+e|0;f=Z+a|0;f=b>>>0>e>>>0?f+1|0:f;a=we(U,s,ia,0);b=a+e|0;e=Z+f|0;e=a>>>0>b>>>0?e+1|0:e;a=we(M,j,ha,j);b=a+b|0;e=Z+e|0;a=a>>>0>b>>>0?e+1|0:e;c=b+c|0;b=c>>>0>>0?a+1|0:a;a=H[g+183|0];e=a<<16&2031616;c=e+c|0;a=b;a=c>>>0>>0?a+1|0:a;b=a;a=a-((c>>>0<4293918720)-1|0)|0;z=a;e=a>>>21|0;l=c- -1048576|0;a=(a&2097151)<<11|l>>>21;f=a+u|0;e=e+i|0;e=a>>>0>f>>>0?e+1|0:e;a=e+r|0;i=f+t|0;a=i>>>0>>0?a+1|0:a;A=f- -1048576|0;f=e-((f>>>0<4293918720)-1|0)|0;o=f;e=A&-2097152;B=i-e|0;q=a-((e>>>0>i>>>0)+f|0)|0;r=c;i=b;a=we(Da,Ea,470296,0);b=Z;c=a;a=we(Ba,Aa,666643,0);c=c+a|0;e=Z+b|0;e=a>>>0>c>>>0?e+1|0:e;b=we(Ha,Ga,654183,0);c=b+c|0;a=Z+e|0;x=c;c=b>>>0>c>>>0?a+1|0:a;b=we(V,oa,aa,j);a=Z;f=b;b=we(X,0,ba,0);e=f+b|0;a=Z+a|0;a=b>>>0>e>>>0?a+1|0:a;b=we(ca,0,C,0);f=b+e|0;e=Z+a|0;e=b>>>0>f>>>0?e+1|0:e;a=we(da,0,fa,0);b=a+f|0;f=Z+e|0;f=a>>>0>b>>>0?f+1|0:f;a=we($,j,ea,j);b=a+b|0;e=Z+f|0;e=a>>>0>b>>>0?e+1|0:e;a=b;b=we(W,0,ia,0);f=a+b|0;a=Z+e|0;a=b>>>0>f>>>0?a+1|0:a;b=we(_,j,ga,j);e=b+f|0;a=Z+a|0;a=b>>>0>e>>>0?a+1|0:a;b=we(U,s,ha,j);f=b+e|0;e=Z+a|0;v=f;b=b>>>0>f>>>0?e+1|0:e;a=H[g+179|0];e=a>>>24|0;t=H[g+175|0]|H[g+176|0]<<8|(H[g+177|0]<<16|H[g+178|0]<<24);u=a<<8|t>>>24;f=H[g+180|0];a=f>>>16|0;f=f<<16;J=a|e;e=f|u;f=(J>>>3|0)+b|0;e=(J&7)<<29|e>>>3;u=e+v|0;v=u;b=e>>>0>u>>>0?f+1|0:f;u=t>>>6&2097151;a=we(X,0,aa,j);e=Z;f=a;a=we($,j,ba,0);f=f+a|0;e=Z+e|0;e=a>>>0>f>>>0?e+1|0:e;a=f;f=we(ca,0,fa,0);t=a+f|0;a=Z+e|0;a=f>>>0>t>>>0?a+1|0:a;f=we(da,0,ga,j);t=f+t|0;e=Z+a|0;e=f>>>0>t>>>0?e+1|0:e;f=we(ea,j,C,0);t=f+t|0;a=Z+e|0;a=f>>>0>t>>>0?a+1|0:a;e=we(W,0,ha,j);t=e+t|0;f=Z+a|0;f=e>>>0>t>>>0?f+1|0:f;a=we(_,j,ia,0);t=a+t|0;e=Z+f|0;a=a>>>0>t>>>0?e+1|0:e;ja=t+u|0;a=ja>>>0>>0?a+1|0:a;sa=a;a=a-((ja>>>0<4293918720)-1|0)|0;Qa=a;qa=ja- -1048576|0;f=(a&2097151)<<11|qa>>>21;L=f+v|0;a=(a>>>21|0)+b|0;a=f>>>0>L>>>0?a+1|0:a;ta=a;a=a-((L>>>0<4293918720)-1|0)|0;Ra=a;la=L- -1048576|0;b=(a&2097151)<<11|la>>>21;f=b+x|0;a=(a>>>21|0)+c|0;e=(b>>>0>f>>>0?a+1|0:a)+i|0;b=f+r|0;e=b>>>0>>0?e+1|0:e;a=l&-2097152;i=b-a|0;a=e-((a>>>0>b>>>0)+z|0)|0;z=a;a=a-((i>>>0<4293918720)-1|0)|0;Sa=a;ra=i- -1048576|0;b=(a&2097151)<<11|ra>>>21;c=b+B|0;a=(a>>21)+q|0;a=b>>>0>c>>>0?a+1|0:a;b=a;a=a-((c>>>0<4293918720)-1|0)|0;Ia=a;x=c- -1048576|0;pa=(a&2097151)<<11|x>>>21;r=a>>21;a=p&-2097152;J=w-a|0;y=k-((a>>>0>w>>>0)+y|0)|0;a=we(N,0,R,0);e=Z;ma=e;B=a;t=a- -1048576|0;e=e-((a>>>0<4293918720)-1|0)|0;na=e;a=e>>>21|0;Ka=a;za=(e&2097151)<<11|t>>>21;a=we(za,a,-683901,-1);f=a+m|0;e=Z+h|0;e=a>>>0>f>>>0?e+1|0:e;a=n&-2097152;p=f-a|0;l=e-((a>>>0>f>>>0)+I|0)|0;e=we(T,0,W,0);a=Z;f=e;e=we(N,0,da,0);f=f+e|0;a=Z+a|0;a=e>>>0>f>>>0?a+1|0:a;e=we(O,j,_,j);f=e+f|0;a=Z+a|0;a=e>>>0>f>>>0?a+1|0:a;e=f;f=we(Q,j,U,s);h=e+f|0;e=Z+a|0;e=f>>>0>h>>>0?e+1|0:e;a=we(P,0,X,0);h=a+h|0;f=Z+e|0;f=a>>>0>h>>>0?f+1|0:f;a=we(M,j,V,oa);h=a+h|0;e=Z+f|0;e=a>>>0>h>>>0?e+1|0:e;f=we(R,0,C,0);h=f+h|0;a=Z+e|0;a=f>>>0>h>>>0?a+1|0:a;e=we(S,j,$,j);f=e+h|0;a=Z+a|0;m=f;h=e>>>0>f>>>0?a+1|0:a;a=we(O,j,da,0);e=Z;f=a;a=we(N,0,ca,0);f=f+a|0;e=Z+e|0;e=a>>>0>f>>>0?e+1|0:e;a=we(Q,j,W,0);k=a+f|0;f=Z+e|0;f=a>>>0>k>>>0?f+1|0:f;a=we(T,0,_,j);k=a+k|0;e=Z+f|0;e=a>>>0>k>>>0?e+1|0:e;f=we(U,s,V,oa);k=f+k|0;a=Z+e|0;a=f>>>0>k>>>0?a+1|0:a;e=we(P,0,$,j);f=e+k|0;a=Z+a|0;a=e>>>0>f>>>0?a+1|0:a;e=f;f=we(M,j,X,0);k=e+f|0;e=Z+a|0;e=f>>>0>k>>>0?e+1|0:e;a=we(R,0,fa,0);k=a+k|0;f=Z+e|0;f=a>>>0>k>>>0?f+1|0:f;a=we(S,j,C,0);v=a+k|0;e=Z+f|0;e=a>>>0>v>>>0?e+1|0:e;u=e;a=e-((v>>>0<4293918720)-1|0)|0;va=a;w=v- -1048576|0;e=(a&2097151)<<11|w>>>21;I=e+m|0;a=(a>>>21|0)+h|0;a=e>>>0>I>>>0?a+1|0:a;n=a;a=a-((I>>>0<4293918720)-1|0)|0;wa=a;f=a>>>21|0;k=I- -1048576|0;a=(a&2097151)<<11|k>>>21;q=a+p|0;e=f+l|0;e=a>>>0>q>>>0?e+1|0:e;p=e;a=e-((q>>>0<4293918720)-1|0)|0;ua=a;l=q- -1048576|0;h=(a&2097151)<<11|l>>>21;e=h+J|0;a=(a>>21)+y|0;a=e>>>0>>0?a+1|0:a;La=a;Ma=e;a=we(e,a,-683901,-1);f=a+pa|0;e=Z+r|0;pa=f;r=a>>>0>f>>>0?e+1|0:e;a=we(O,j,aa,j);e=Z;f=a;a=we(T,0,ba,0);f=f+a|0;e=Z+e|0;e=a>>>0>f>>>0?e+1|0:e;a=f;f=we(V,oa,ca,0);h=a+f|0;a=Z+e|0;a=f>>>0>h>>>0?a+1|0:a;e=we(X,0,da,0);h=e+h|0;f=Z+a|0;f=e>>>0>h>>>0?f+1|0:f;e=we(Q,j,ea,j);h=e+h|0;a=Z+f|0;a=e>>>0>h>>>0?a+1|0:a;f=we(W,0,C,0);h=f+h|0;e=Z+a|0;e=f>>>0>h>>>0?e+1|0:e;a=we(_,j,$,j);f=a+h|0;e=Z+e|0;e=a>>>0>f>>>0?e+1|0:e;a=f;f=we(U,s,fa,0);h=a+f|0;a=Z+e|0;a=f>>>0>h>>>0?a+1|0:a;e=we(P,0,ia,0);h=e+h|0;f=Z+a|0;f=e>>>0>h>>>0?f+1|0:f;e=we(M,j,ga,j);h=e+h|0;a=Z+f|0;a=e>>>0>h>>>0?a+1|0:a;f=we(S,j,ha,j);h=f+h|0;e=Z+a|0;y=h;f=f>>>0>h>>>0?e+1|0:e;a=H[g+187|0];e=a>>>24|0;m=a<<8|K>>>24;h=H[g+188|0];a=h>>>16|0;h=h<<16;e=a|e;a=h|m;h=((e&3)<<30|a>>>2)&2097151;a=h+y|0;e=f;m=a;h=a>>>0>>0?e+1|0:e;J=we(Fa,Ca,470296,0);y=Z;f=(F&2097151)<<11|D>>>21;e=t&-2097152;a=f+(B-e|0)|0;e=ma-((na&524287)+(e>>>0>B>>>0)|0)+(F>>>21)|0;e=a>>>0>>0?e+1|0:e;Na=e;Oa=a;e=we(a,e,666643,0);f=e+J|0;a=Z+y|0;a=e>>>0>f>>>0?a+1|0:a;e=we(Ba,Aa,654183,0);t=e+f|0;f=Z+a|0;f=e>>>0>t>>>0?f+1|0:f;e=we(Da,Ea,-997805,-1);t=e+t|0;a=Z+f|0;a=e>>>0>t>>>0?a+1|0:a;f=we(Ha,Ga,136657,0);t=f+t|0;e=Z+a|0;a=(o&2097151)<<11|A>>>21;A=a+t|0;e=(o>>>21|0)+(f>>>0>t>>>0?e+1|0:e)|0;ma=m- -1048576|0;t=h-((m>>>0<4293918720)-1|0)|0;na=t;a=(a>>>0>A>>>0?e+1|0:e)+h|0;h=m+A|0;a=h>>>0>>0?a+1|0:a;f=ma&-2097152;e=h-f|0;a=a-((f>>>0>h>>>0)+t|0)|0;f=a+r|0;m=e+pa|0;f=m>>>0>>0?f+1|0:f;h=a-((e>>>0<4293918720)-1|0)|0;J=h;y=e- -1048576|0;e=y&-2097152;a=m-e|0;B=f-((e>>>0>m>>>0)+h|0)|0;K=a;m=c;h=b;a=l&-2097152;xa=q-a|0;t=p-((a>>>0>q>>>0)+ua|0)|0;a=we(Oa,Na,-683901,-1);b=Z;c=a;a=we(za,Ka,136657,0);c=c+a|0;f=Z+b|0;e=n+(a>>>0>c>>>0?f+1|0:f)|0;b=c+I|0;e=b>>>0>>0?e+1|0:e;a=k&-2097152;n=b-a|0;k=e-((a>>>0>b>>>0)+wa|0)|0;b=we(za,Ka,-997805,-1);c=b+v|0;a=Z+u|0;a=b>>>0>c>>>0?a+1|0:a;b=we(Oa,Na,136657,0);c=b+c|0;f=Z+a|0;f=b>>>0>c>>>0?f+1|0:f;a=we(Fa,Ca,-683901,-1);b=a+c|0;e=Z+f|0;e=a>>>0>b>>>0?e+1|0:e;a=w&-2097152;p=b-a|0;l=e-((a>>>0>b>>>0)+va|0)|0;b=we(T,0,da,0);a=Z;c=b;b=we(O,j,ca,0);c=c+b|0;a=Z+a|0;a=b>>>0>c>>>0?a+1|0:a;b=we(N,0,ea,j);c=b+c|0;f=Z+a|0;f=b>>>0>c>>>0?f+1|0:f;a=we(V,oa,W,0);b=a+c|0;e=Z+f|0;e=a>>>0>b>>>0?e+1|0:e;a=b;b=we(Q,j,_,j);c=a+b|0;a=Z+e|0;a=b>>>0>c>>>0?a+1|0:a;b=we(U,s,X,0);c=b+c|0;e=Z+a|0;e=b>>>0>c>>>0?e+1|0:e;b=we(P,0,C,0);c=b+c|0;a=Z+e|0;a=b>>>0>c>>>0?a+1|0:a;b=we(M,j,$,j);c=b+c|0;f=Z+a|0;f=b>>>0>c>>>0?f+1|0:f;a=we(R,0,ga,j);b=a+c|0;e=Z+f|0;e=a>>>0>b>>>0?e+1|0:e;a=b;b=we(S,j,fa,0);c=a+b|0;a=Z+e|0;r=c;b=b>>>0>c>>>0?a+1|0:a;a=we(T,0,ca,0);c=Z;f=a;a=we(N,0,ba,0);f=f+a|0;e=Z+c|0;e=a>>>0>f>>>0?e+1|0:e;c=we(Q,j,da,0);f=c+f|0;a=Z+e|0;a=c>>>0>f>>>0?a+1|0:a;c=we(O,j,ea,j);e=c+f|0;f=Z+a|0;f=c>>>0>e>>>0?f+1|0:f;a=we(W,0,X,0);c=a+e|0;e=Z+f|0;e=a>>>0>c>>>0?e+1|0:e;a=c;c=we(V,oa,_,j);f=a+c|0;a=Z+e|0;a=c>>>0>f>>>0?a+1|0:a;c=we(U,s,$,j);f=c+f|0;e=Z+a|0;e=c>>>0>f>>>0?e+1|0:e;c=we(P,0,fa,0);f=c+f|0;a=Z+e|0;a=c>>>0>f>>>0?a+1|0:a;c=we(M,j,C,0);e=c+f|0;f=Z+a|0;f=c>>>0>e>>>0?f+1|0:f;a=we(R,0,ia,0);c=a+e|0;e=Z+f|0;e=a>>>0>c>>>0?e+1|0:e;a=c;c=we(S,j,ga,j);ua=a+c|0;a=Z+e|0;a=c>>>0>ua>>>0?a+1|0:a;q=a;a=a-((ua>>>0<4293918720)-1|0)|0;Va=a;F=ua- -1048576|0;c=(a&2097151)<<11|F>>>21;pa=c+r|0;a=(a>>>21|0)+b|0;a=c>>>0>pa>>>0?a+1|0:a;D=a;a=a-((pa>>>0<4293918720)-1|0)|0;Wa=a;o=pa- -1048576|0;b=(a&2097151)<<11|o>>>21;I=b+p|0;a=(a>>>21|0)+l|0;a=b>>>0>I>>>0?a+1|0:a;A=a;a=a-((I>>>0<4293918720)-1|0)|0;Xa=a;u=I- -1048576|0;b=(a&2097151)<<11|u>>>21;l=b+n|0;a=(a>>21)+k|0;a=b>>>0>l>>>0?a+1|0:a;c=a;a=a-((l>>>0<4293918720)-1|0)|0;p=a;b=l- -1048576|0;r=(a&2097151)<<11|b>>>21;f=r+xa|0;a=(a>>21)+t|0;a=f>>>0>>0?a+1|0:a;va=a;wa=f;a=we(f,a,-683901,-1);e=Z;f=a;a=we(Ma,La,136657,0);f=f+a|0;e=Z+e|0;a=(a>>>0>f>>>0?e+1|0:e)+h|0;e=f;f=f+m|0;a=e>>>0>f>>>0?a+1|0:a;e=x&-2097152;Ta=f-e|0;Ua=a-((e>>>0>f>>>0)+Ia|0)|0;r=i;m=z;f=we(wa,va,136657,0);e=Z;b=b&-2097152;a=l-b|0;xa=a;c=c-((b>>>0>l>>>0)+p|0)|0;Pa=c;b=we(Ma,La,-997805,-1);f=b+f|0;e=Z+e|0;e=b>>>0>f>>>0?e+1|0:e;b=we(a,c,-683901,-1);c=b+f|0;a=Z+e|0;Ia=c;h=b>>>0>c>>>0?a+1|0:a;a=we(Ha,Ga,470296,0);b=Z;c=a;a=we(Da,Ea,666643,0);c=c+a|0;f=Z+b|0;e=ta+(a>>>0>c>>>0?f+1|0:f)|0;a=c+L|0;e=a>>>0>>0?e+1|0:e;t=a;c=e;b=we(Ha,Ga,666643,0);e=b+ja|0;a=Z+sa|0;a=b>>>0>e>>>0?a+1|0:a;b=qa&-2097152;k=e-b|0;v=a-((b>>>0>e>>>0)+Qa|0)|0;b=we($,j,aa,j);a=Z;f=b;b=we(ba,0,C,0);e=f+b|0;a=Z+a|0;a=b>>>0>e>>>0?a+1|0:a;b=we(ca,0,ga,j);f=b+e|0;e=Z+a|0;e=b>>>0>f>>>0?e+1|0:e;b=we(da,0,ia,0);f=b+f|0;a=Z+e|0;a=b>>>0>f>>>0?a+1|0:a;b=we(ea,j,fa,0);e=b+f|0;f=Z+a|0;f=b>>>0>e>>>0?f+1|0:f;a=we(_,j,ha,j);b=a+e|0;e=Z+f|0;l=b;b=a>>>0>b>>>0?e+1|0:e;a=H[g+174|0];e=a>>>24|0;p=H[g+170|0]|H[g+171|0]<<8|(H[g+172|0]<<16|H[g+173|0]<<24);i=a<<8|p>>>24;a=H[g+175|0];f=a>>>16|0;a=i|a<<16;e=e|f;e=((e&1)<<31|a>>>1)&2097151;f=e+l|0;a=b;l=f;b=e>>>0>f>>>0?a+1|0:a;i=p>>>4&2097151;a=we(aa,j,C,0);e=Z;f=a;a=we(ba,0,fa,0);f=f+a|0;e=Z+e|0;e=a>>>0>f>>>0?e+1|0:e;a=we(ca,0,ia,0);f=a+f|0;e=Z+e|0;e=a>>>0>f>>>0?e+1|0:e;a=f;f=we(da,0,ha,j);p=a+f|0;a=Z+e|0;a=f>>>0>p>>>0?a+1|0:a;e=we(ea,j,ga,j);p=e+p|0;f=Z+a|0;f=e>>>0>p>>>0?f+1|0:f;a=f;qa=i+p|0;a=qa>>>0

>>0?a+1|0:a;z=a;a=a-((qa>>>0<4293918720)-1|0)|0;Ya=a;f=a>>>21|0;x=qa- -1048576|0;a=(a&2097151)<<11|x>>>21;ta=a+l|0;e=b+f|0;e=a>>>0>ta>>>0?e+1|0:e;w=e;a=e-((ta>>>0<4293918720)-1|0)|0;Za=a;n=ta- -1048576|0;b=(a&2097151)<<11|n>>>21;k=b+k|0;a=(a>>>21|0)+v|0;a=b>>>0>k>>>0?a+1|0:a;p=a;a=a-((k>>>0<4293918720)-1|0)|0;_a=a;f=a>>21;l=k- -1048576|0;a=(a&2097151)<<11|l>>>21;i=a+t|0;e=c+f|0;e=a>>>0>i>>>0?e+1|0:e;b=la&-2097152;a=i-b|0;b=e-((b>>>0>i>>>0)+Ra|0)|0;Qa=b;la=a;i=a- -1048576|0;a=b-((a>>>0<4293918720)-1|0)|0;Ra=a;e=a>>21;a=(a&2097151)<<11|i>>>21;b=a+Ia|0;f=e+h|0;e=(a>>>0>b>>>0?f+1|0:f)+m|0;c=b+r|0;e=c>>>0>>0?e+1|0:e;b=ra&-2097152;a=c-b|0;b=e-((b>>>0>c>>>0)+Sa|0)|0;ja=b;m=a;c=a- -1048576|0;a=b-((a>>>0<4293918720)-1|0)|0;sa=a;e=a>>21;a=(a&2097151)<<11|c>>>21;h=a+Ta|0;f=e+Ua|0;f=a>>>0>h>>>0?f+1|0:f;a=f-((h>>>0<4293918720)-1|0)|0;ra=a;t=K- -1048576|0;v=B-((K>>>0<4293918720)-1|0)|0;b=h- -1048576|0;r=(a&2097151)<<11|b>>>21;K=r+K|0;a=(a>>21)+B|0;e=t&-2097152;Sa=K-e|0;Ta=(r>>>0>K>>>0?a+1|0:a)-((e>>>0>K>>>0)+v|0)|0;a=b&-2097152;Ua=h-a|0;Ia=f-((a>>>0>h>>>0)+ra|0)|0;a=c&-2097152;L=m-a|0;K=ja-((a>>>0>m>>>0)+sa|0)|0;a=we(wa,va,-997805,-1);b=Z;c=a;a=we(Ma,La,654183,0);c=c+a|0;e=Z+b|0;e=a>>>0>c>>>0?e+1|0:e;b=we(xa,Pa,136657,0);c=b+c|0;a=Z+e|0;e=Qa+(b>>>0>c>>>0?a+1|0:a)|0;b=c+la|0;e=b>>>0>>0?e+1|0:e;a=i&-2097152;ja=b-a|0;sa=e-((a>>>0>b>>>0)+Ra|0)|0;a=u&-2097152;la=I-a|0;B=A-((a>>>0>I>>>0)+Xa|0)|0;b=we(Oa,Na,-997805,-1);a=Z;c=b;b=we(za,Ka,654183,0);c=c+b|0;a=Z+a|0;a=b>>>0>c>>>0?a+1|0:a;b=we(Fa,Ca,136657,0);c=b+c|0;e=Z+a|0;e=b>>>0>c>>>0?e+1|0:e;a=we(Ba,Aa,-683901,-1);b=a+c|0;f=Z+e|0;e=D+(a>>>0>b>>>0?f+1|0:f)|0;b=b+pa|0;e=b>>>0>>0?e+1|0:e;a=o&-2097152;u=b-a|0;A=e-((a>>>0>b>>>0)+Wa|0)|0;b=we(Oa,Na,654183,0);a=Z;c=b;b=we(za,Ka,470296,0);c=c+b|0;a=Z+a|0;a=b>>>0>c>>>0?a+1|0:a;b=we(Fa,Ca,-997805,-1);c=b+c|0;f=Z+a|0;e=q+(b>>>0>c>>>0?f+1|0:f)|0;a=c+ua|0;e=a>>>0>>0?e+1|0:e;b=a;a=we(Ba,Aa,136657,0);b=b+a|0;e=Z+e|0;e=a>>>0>b>>>0?e+1|0:e;a=b;b=we(Da,Ea,-683901,-1);c=a+b|0;a=Z+e|0;a=b>>>0>c>>>0?a+1|0:a;b=F&-2097152;h=c-b|0;i=a-((b>>>0>c>>>0)+Va|0)|0;c=(H[g+188|0]|H[g+189|0]<<8|(H[g+190|0]<<16|H[g+191|0]<<24))>>>7|0;a=we(N,0,aa,j);b=Z;f=a;a=we(O,j,ba,0);e=f+a|0;f=Z+b|0;f=a>>>0>e>>>0?f+1|0:f;a=we(Q,j,ca,0);b=a+e|0;e=Z+f|0;e=a>>>0>b>>>0?e+1|0:e;a=b;b=we(V,oa,da,0);f=a+b|0;a=Z+e|0;a=b>>>0>f>>>0?a+1|0:a;b=we(T,0,ea,j);f=b+f|0;e=Z+a|0;e=b>>>0>f>>>0?e+1|0:e;b=we(W,0,$,j);f=b+f|0;a=Z+e|0;a=b>>>0>f>>>0?a+1|0:a;b=we(X,0,_,j);e=b+f|0;f=Z+a|0;f=b>>>0>e>>>0?f+1|0:f;a=we(U,s,C,0);b=a+e|0;e=Z+f|0;e=a>>>0>b>>>0?e+1|0:e;a=b;b=we(P,0,ga,j);f=a+b|0;a=Z+e|0;a=b>>>0>f>>>0?a+1|0:a;b=we(M,j,fa,0);f=b+f|0;e=Z+a|0;e=b>>>0>f>>>0?e+1|0:e;b=we(R,0,ha,j);f=b+f|0;a=Z+e|0;a=b>>>0>f>>>0?a+1|0:a;b=we(S,j,ia,0);m=b+f|0;f=Z+a|0;f=b>>>0>m>>>0?f+1|0:f;e=f;a=c+m|0;e=a>>>0>>0?e+1|0:e;b=(na&2097151)<<11|ma>>>21;D=b+a|0;a=(na>>>21|0)+e|0;a=b>>>0>D>>>0?a+1|0:a;r=a;b=a-((D>>>0<4293918720)-1|0)|0;ra=b;a=b>>>21|0;s=D- -1048576|0;b=(b&2097151)<<11|s>>>21;o=b+h|0;f=a+i|0;f=b>>>0>o>>>0?f+1|0:f;m=f;b=f-((o>>>0<4293918720)-1|0)|0;ma=b;a=b>>21;h=o- -1048576|0;b=(b&2097151)<<11|h>>>21;u=b+u|0;a=a+A|0;a=b>>>0>u>>>0?a+1|0:a;i=a;b=a-((u>>>0<4293918720)-1|0)|0;F=b;a=b>>21;c=u- -1048576|0;e=(b&2097151)<<11|c>>>21;b=e+la|0;f=a+B|0;f=b>>>0>>0?f+1|0:f;na=f;B=b;a=we(b,f,-683901,-1);b=a+ja|0;e=Z+sa|0;A=b;b=a>>>0>b>>>0?e+1|0:e;e=we(Ma,La,470296,0);k=e+k|0;a=Z+p|0;a=e>>>0>k>>>0?a+1|0:a;e=we(wa,va,654183,0);f=l&-2097152;l=e+(k-f|0)|0;a=Z+(a-((f>>>0>k>>>0)+_a|0)|0)|0;a=e>>>0>l>>>0?a+1|0:a;f=we(xa,Pa,-997805,-1);l=f+l|0;e=Z+a|0;e=f>>>0>l>>>0?e+1|0:e;a=c&-2097152;c=u-a|0;q=c;i=i-((a>>>0>u>>>0)+F|0)|0;C=i;f=we(B,na,136657,0);l=f+l|0;a=Z+e|0;c=we(c,i,-683901,-1);p=c+l|0;e=Z+(f>>>0>l>>>0?a+1|0:a)|0;e=c>>>0>p>>>0?e+1|0:e;i=e;a=e-((p>>>0<4293918720)-1|0)|0;F=a;c=p- -1048576|0;e=(a&2097151)<<11|c>>>21;l=e+A|0;a=(a>>21)+b|0;a=e>>>0>l>>>0?a+1|0:a;e=a-((l>>>0<4293918720)-1|0)|0;u=e;b=l- -1048576|0;k=(e&2097151)<<11|b>>>21;A=k+L|0;e=(e>>21)+K|0;K=A;A=k>>>0>A>>>0?e+1|0:e;b=b&-2097152;ua=l-b|0;pa=a-((b>>>0>l>>>0)+u|0)|0;a=c&-2097152;ja=p-a|0;sa=i-((a>>>0>p>>>0)+F|0)|0;a=we(Ma,La,666643,0);f=w+Z|0;e=a+ta|0;f=e>>>0>>0?f+1|0:f;a=we(wa,va,470296,0);b=n&-2097152;c=a+(e-b|0)|0;e=Z+(f-((b>>>0>e>>>0)+Za|0)|0)|0;e=a>>>0>c>>>0?e+1|0:e;b=we(xa,Pa,654183,0);c=b+c|0;a=Z+e|0;l=c;b=b>>>0>c>>>0?a+1|0:a;a=h&-2097152;h=o-a|0;i=m-((a>>>0>o>>>0)+ma|0)|0;a=we(Oa,Na,470296,0);c=Z;f=a;a=we(za,Ka,666643,0);f=f+a|0;e=Z+c|0;e=a>>>0>f>>>0?e+1|0:e;a=we(Fa,Ca,654183,0);c=a+f|0;e=Z+e|0;e=a>>>0>c>>>0?e+1|0:e;a=c;c=we(Ba,Aa,-997805,-1);f=a+c|0;a=Z+e|0;a=c>>>0>f>>>0?a+1|0:a;c=we(Da,Ea,136657,0);e=c+f|0;a=Z+a|0;a=c>>>0>e>>>0?a+1|0:a;c=we(Ha,Ga,-683901,-1);m=c+e|0;f=Z+a|0;e=r+(c>>>0>m>>>0?f+1|0:f)|0;f=m+D|0;e=f>>>0>>0?e+1|0:e;c=(J&2097151)<<11|y>>>21;a=s&-2097152;o=c+(f-a|0)|0;a=(e-((a>>>0>f>>>0)+ra|0)|0)+(J>>21)|0;a=c>>>0>o>>>0?a+1|0:a;u=a;a=a-((o>>>0<4293918720)-1|0)|0;ma=a;n=o- -1048576|0;f=(a&2097151)<<11|n>>>21;c=f+h|0;a=(a>>21)+i|0;a=c>>>0>>0?a+1|0:a;F=a;D=c;a=we(c,a,-683901,-1);c=a+l|0;e=Z+b|0;e=a>>>0>c>>>0?e+1|0:e;b=we(B,na,-997805,-1);c=b+c|0;a=Z+e|0;a=b>>>0>c>>>0?a+1|0:a;b=we(q,C,136657,0);c=b+c|0;f=Z+a|0;y=c;m=b>>>0>c>>>0?f+1|0:f;a=x&-2097152;l=qa-a|0;r=z-((a>>>0>qa>>>0)+Ya|0)|0;b=we(aa,j,fa,0);a=Z;c=b;b=we(ba,0,ga,j);c=c+b|0;a=Z+a|0;a=b>>>0>c>>>0?a+1|0:a;b=we(ca,0,ha,j);c=b+c|0;a=Z+a|0;a=b>>>0>c>>>0?a+1|0:a;b=we(ea,j,ia,0);c=b+c|0;f=Z+a|0;e=b>>>0>c>>>0?f+1|0:f;a=(H[g+167|0]|H[g+168|0]<<8|(H[g+169|0]<<16|H[g+170|0]<<24))>>>7&2097151;b=a+c|0;s=b;h=a>>>0>b>>>0?e+1|0:e;a=we(aa,j,ga,j);b=Z;c=a;a=we(ba,0,ia,0);c=c+a|0;e=Z+b|0;e=a>>>0>c>>>0?e+1|0:e;b=we(ea,j,ha,j);c=b+c|0;a=Z+e|0;i=c;c=b>>>0>c>>>0?a+1|0:a;b=H[g+166|0];a=b>>>24|0;la=H[g+162|0]|H[g+163|0]<<8|(H[g+164|0]<<16|H[g+165|0]<<24);f=b<<8|la>>>24;b=a;a=H[g+167|0];e=a>>>16|0;a=a<<16|f;b=b|e;a=((b&3)<<30|a>>>2)&2097151;i=a+i|0;f=c;f=a>>>0>i>>>0?f+1|0:f;c=f;a=f-((i>>>0<4293918720)-1|0)|0;I=a;w=i- -1048576|0;b=(a&2097151)<<11|w>>>21;z=b+s|0;a=(a>>>21|0)+h|0;a=b>>>0>z>>>0?a+1|0:a;k=a;a=a-((z>>>0<4293918720)-1|0)|0;ra=a;e=a>>>21|0;p=z- -1048576|0;a=(a&2097151)<<11|p>>>21;b=a+l|0;f=e+r|0;f=a>>>0>b>>>0?f+1|0:f;a=b;b=we(wa,va,666643,0);e=a+b|0;a=Z+f|0;a=b>>>0>e>>>0?a+1|0:a;b=we(xa,Pa,470296,0);e=b+e|0;a=Z+a|0;a=b>>>0>e>>>0?a+1|0:a;b=we(D,F,136657,0);f=b+e|0;e=Z+a|0;e=b>>>0>f>>>0?e+1|0:e;a=we(B,na,654183,0);b=a+f|0;e=Z+e|0;e=a>>>0>b>>>0?e+1|0:e;a=we(q,C,-997805,-1);l=a+b|0;f=Z+e|0;f=a>>>0>l>>>0?f+1|0:f;r=f;a=f-((l>>>0<4293918720)-1|0)|0;J=a;s=l- -1048576|0;f=(a&2097151)<<11|s>>>21;b=f+y|0;a=(a>>21)+m|0;a=b>>>0>>0?a+1|0:a;f=a-((b>>>0<4293918720)-1|0)|0;y=f;m=b- -1048576|0;h=(f&2097151)<<11|m>>>21;x=h+ja|0;f=(f>>21)+sa|0;ja=x;x=h>>>0>x>>>0?f+1|0:f;h=b;e=a;a=n&-2097152;n=(v&2097151)<<11|t>>>21;b=(o-a|0)+n|0;a=(u-((a>>>0>o>>>0)+ma|0)|0)+(v>>21)|0;a=b>>>0>>0?a+1|0:a;t=a;a=a-((b>>>0<4293918720)-1|0)|0;sa=a;f=a>>21;o=f;v=b- -1048576|0;L=(a&2097151)<<11|v>>>21;a=we(L,f,-683901,-1);f=a+h|0;e=Z+e|0;e=a>>>0>f>>>0?e+1|0:e;a=m&-2097152;qa=f-a|0;ta=e-((a>>>0>f>>>0)+y|0)|0;e=we(L,o,136657,0);f=e+l|0;a=Z+r|0;a=e>>>0>f>>>0?a+1|0:a;e=s&-2097152;ma=f-e|0;J=a-((e>>>0>f>>>0)+J|0)|0;e=we(xa,Pa,666643,0);f=p&-2097152;h=e+(z-f|0)|0;a=Z+(k-((f>>>0>z>>>0)+ra|0)|0)|0;a=e>>>0>h>>>0?a+1|0:a;f=we(D,F,-997805,-1);h=f+h|0;e=Z+a|0;e=f>>>0>h>>>0?e+1|0:e;a=we(B,na,470296,0);h=a+h|0;f=Z+e|0;f=a>>>0>h>>>0?f+1|0:f;e=we(q,C,654183,0);h=e+h|0;a=Z+f|0;y=h;r=e>>>0>h>>>0?a+1|0:a;f=c;h=la>>>5&2097151;a=we(aa,j,ia,0);c=Z;e=a;a=we(ba,0,ha,j);m=e+a|0;e=Z+c|0;a=a>>>0>m>>>0?e+1|0:e;c=h+m|0;a=c>>>0>>0?a+1|0:a;m=c;c=a;e=we(aa,j,ha,j);a=H[g+162|0];a=a<<16&2031616|(H[g+160|0]|H[g+161|0]<<8);z=e+a|0;e=Z;e=a>>>0>z>>>0?e+1|0:e;n=e;e=e-((z>>>0<4293918720)-1|0)|0;la=e;a=e>>>21|0;k=z- -1048576|0;e=(e&2097151)<<11|k>>>21;u=e+m|0;a=a+c|0;a=e>>>0>u>>>0?a+1|0:a;p=a;c=a-((u>>>0<4293918720)-1|0)|0;ra=c;a=c>>>21|0;l=u- -1048576|0;c=(c&2097151)<<11|l>>>21;h=c+i|0;e=a+f|0;e=c>>>0>h>>>0?e+1|0:e;c=we(D,F,654183,0);f=w&-2097152;i=c+(h-f|0)|0;a=Z+(e-((f>>>0>h>>>0)+I|0)|0)|0;a=c>>>0>i>>>0?a+1|0:a;c=we(B,na,666643,0);e=c+i|0;a=Z+a|0;a=c>>>0>e>>>0?a+1|0:a;c=we(q,C,470296,0);s=c+e|0;e=Z+a|0;e=c>>>0>s>>>0?e+1|0:e;m=e;c=e-((s>>>0<4293918720)-1|0)|0;B=c;a=c>>21;h=s- -1048576|0;c=(c&2097151)<<11|h>>>21;i=c+y|0;f=a+r|0;f=c>>>0>i>>>0?f+1|0:f;e=f-((i>>>0<4293918720)-1|0)|0;w=e;c=i- -1048576|0;r=(e&2097151)<<11|c>>>21;y=r+ma|0;e=(e>>21)+J|0;ma=y;r=r>>>0>y>>>0?e+1|0:e;a=we(L,o,-997805,-1);i=a+i|0;e=Z+f|0;e=a>>>0>i>>>0?e+1|0:e;a=c&-2097152;na=i-a|0;J=e-((a>>>0>i>>>0)+w|0)|0;c=we(L,o,654183,0);e=c+s|0;a=Z+m|0;a=c>>>0>e>>>0?a+1|0:a;c=h&-2097152;y=e-c|0;B=a-((c>>>0>e>>>0)+B|0)|0;a=we(D,F,470296,0);c=l&-2097152;e=a+(u-c|0)|0;f=Z+(p-((c>>>0>u>>>0)+ra|0)|0)|0;f=a>>>0>e>>>0?f+1|0:f;c=we(q,C,666643,0);e=c+e|0;a=Z+f|0;i=e;c=c>>>0>e>>>0?a+1|0:a;e=we(D,F,666643,0);f=k&-2097152;l=e+(z-f|0)|0;a=Z+(n-((la&4095)+(f>>>0>z>>>0)|0)|0)|0;a=e>>>0>l>>>0?a+1|0:a;s=a;a=a-((l>>>0<4293918720)-1|0)|0;w=a;m=l- -1048576|0;f=(a&2097151)<<11|m>>>21;h=f+i|0;a=(a>>21)+c|0;a=f>>>0>h>>>0?a+1|0:a;f=a;a=a-((h>>>0<4293918720)-1|0)|0;n=a;c=h- -1048576|0;i=(a&2097151)<<11|c>>>21;p=i+y|0;a=(a>>21)+B|0;k=p;i=i>>>0>k>>>0?a+1|0:a;a=we(L,o,470296,0);e=a+h|0;f=Z+f|0;f=a>>>0>e>>>0?f+1|0:f;a=c&-2097152;p=e-a|0;h=f-((a>>>0>e>>>0)+n|0)|0;e=we(L,o,666643,0);f=m&-2097152;c=e+(l-f|0)|0;a=Z+(s-((f>>>0>l>>>0)+w|0)|0)|0;a=c>>>0>>0?a+1|0:a;f=a>>21;a=(a&2097151)<<11|c>>>21;u=a+p|0;e=f+h|0;e=a>>>0>u>>>0?e+1|0:e;a=e>>21;e=(e&2097151)<<11|u>>>21;w=e+k|0;a=a+i|0;a=e>>>0>w>>>0?a+1|0:a;e=a>>21;a=(a&2097151)<<11|w>>>21;i=a+na|0;e=e+J|0;e=a>>>0>i>>>0?e+1|0:e;a=e>>21;e=(e&2097151)<<11|i>>>21;n=e+ma|0;f=a+r|0;f=e>>>0>n>>>0?f+1|0:f;e=f>>21;f=(f&2097151)<<11|n>>>21;k=f+qa|0;a=e+ta|0;a=f>>>0>k>>>0?a+1|0:a;f=a>>21;a=(a&2097151)<<11|k>>>21;p=a+ja|0;e=f+x|0;e=a>>>0>p>>>0?e+1|0:e;a=e>>21;e=(e&2097151)<<11|p>>>21;l=e+ua|0;a=a+pa|0;a=e>>>0>l>>>0?a+1|0:a;e=a>>21;a=(a&2097151)<<11|l>>>21;r=a+K|0;e=e+A|0;e=a>>>0>r>>>0?e+1|0:e;a=e>>21;e=(e&2097151)<<11|r>>>21;s=e+Ua|0;f=a+Ia|0;f=e>>>0>s>>>0?f+1|0:f;e=f>>21;f=(f&2097151)<<11|s>>>21;m=f+Sa|0;a=e+Ta|0;e=v&-2097152;v=b-e|0;a=f>>>0>m>>>0?a+1|0:a;h=v+((a&2097151)<<11|m>>>21)|0;a=(t-((b>>>0>>0)+sa|0)|0)+(a>>21)|0;a=h>>>0>>0?a+1|0:a;x=(a&2097151)<<11|h>>>21;e=a>>21;t=e;b=c&2097151;v=we(x,e,666643,0)+b|0;a=Z;a=b>>>0>v>>>0?a+1|0:a;c=a;E[d+32|0]=v;E[d+33|0]=(a&255)<<24|v>>>8;a=u&2097151;b=we(x,e,470296,0)+a|0;f=Z;f=a>>>0>b>>>0?f+1|0:f;a=b;b=(c&2097151)<<11|v>>>21;u=a+b|0;a=(c>>21)+f|0;a=b>>>0>u>>>0?a+1|0:a;E[d+36|0]=(a&2047)<<21|u>>>11;b=a;f=u;E[d+35|0]=(a&7)<<29|f>>>3;E[d+34|0]=((c&65535)<<16|v>>>16)&31|f<<5;c=w&2097151;e=we(x,e,654183,0)+c|0;a=Z;c=c>>>0>e>>>0?a+1|0:a;a=b>>21;w=(b&2097151)<<11|f>>>21;b=w+e|0;e=a+c|0;e=b>>>0>>0?e+1|0:e;a=e;E[d+38|0]=(a&63)<<26|b>>>6;e=0;E[d+37|0]=e<<13|(f&1572864)>>>19|b<<2;c=i&2097151;f=we(x,t,-997805,-1)+c|0;e=Z;e=c>>>0>f>>>0?e+1|0:e;c=a;a=a>>21;c=(c&2097151)<<11|b>>>21;i=c+f|0;f=a+e|0;f=c>>>0>i>>>0?f+1|0:f;E[d+41|0]=(f&511)<<23|i>>>9;E[d+40|0]=(f&1)<<31|i>>>1;c=0;E[d+39|0]=c<<18|(b&2080768)>>>14|i<<7;b=n&2097151;c=we(x,t,136657,0)+b|0;a=Z;a=b>>>0>c>>>0?a+1|0:a;b=f;f=f>>21;b=(b&2097151)<<11|i>>>21;c=b+c|0;e=a+f|0;e=b>>>0>c>>>0?e+1|0:e;E[d+44|0]=(e&4095)<<20|c>>>12;E[d+43|0]=(e&15)<<28|c>>>4;b=0;E[d+42|0]=b<<15|(i&1966080)>>>17|c<<4;b=k&2097151;f=we(x,t,-683901,-1)+b|0;a=Z;a=b>>>0>f>>>0?a+1|0:a;b=e;e=e>>21;i=f;f=(b&2097151)<<11|c>>>21;b=i+f|0;e=a+e|0;e=b>>>0>>0?e+1|0:e;E[d+46|0]=(e&127)<<25|b>>>7;f=0;E[d+45|0]=f<<12|(c&1048576)>>>20|b<<1;a=e>>21;e=(e&2097151)<<11|b>>>21;c=e+(p&2097151)|0;f=c>>>0>>0?a+1|0:a;E[d+49|0]=(f&1023)<<22|c>>>10;E[d+48|0]=(f&3)<<30|c>>>2;e=0;E[d+47|0]=e<<17|(b&2064384)>>>15|c<<6;e=(f&2097151)<<11|c>>>21;b=e+(l&2097151)|0;a=f>>21;a=b>>>0>>0?a+1|0:a;E[d+52|0]=(a&8191)<<19|b>>>13;E[d+51|0]=(a&31)<<27|b>>>5;i=(a&2097151)<<11|b>>>21;f=i+(r&2097151)|0;e=a>>21;e=f>>>0>>0?e+1|0:e;i=f;E[d+53|0]=f;f=0;E[d+50|0]=f<<14|(c&1835008)>>>18|b<<3;E[d+54|0]=(e&255)<<24|i>>>8;b=(e&2097151)<<11|i>>>21;c=b+(s&2097151)|0;f=e>>21;f=b>>>0>c>>>0?f+1|0:f;E[d+57|0]=(f&2047)<<21|c>>>11;E[d+56|0]=(f&7)<<29|c>>>3;E[d+55|0]=((e&65535)<<16|i>>>16)&31|c<<5;e=(f&2097151)<<11|c>>>21;b=e+(m&2097151)|0;a=f>>21;a=b>>>0>>0?a+1|0:a;E[d+59|0]=(a&63)<<26|b>>>6;e=0;E[d+58|0]=e<<13|(c&1572864)>>>19|b<<2;e=a>>21;c=(a&2097151)<<11|b>>>21;a=c+(h&2097151)|0;e=a>>>0>>0?e+1|0:e;E[d+63|0]=(e&131071)<<15|a>>>17;E[d+62|0]=(e&511)<<23|a>>>9;E[d+61|0]=(e&1)<<31|a>>>1;c=0;E[d+60|0]=c<<18|(b&2080768)>>>14|a<<7;Y=g+624|0}function jb(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,F=0,I=0,J=0,K=0,L=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0;m=Y-768|0;Y=m;a:{if(H[d+63|0]>31){break a}k=Y-272|0;Y=k;S=H[a|0]|H[a+1|0]<<8|(H[a+2|0]<<16|H[a+3|0]<<24);W=H[a+31|0];V=H[a+30|0];U=H[a+29|0];O=H[a+6|0];N=H[a+5|0];n=H[a+4|0];x=H[a+9|0];J=H[a+8|0];A=H[a+7|0];B=H[a+12|0];v=H[a+11|0];w=H[a+10|0];C=H[a+15|0];D=H[a+14|0];F=H[a+13|0];u=H[a+28|0];p=H[a+27|0];s=H[a+26|0];q=H[a+25|0];e=H[a+24|0];j=H[a+23|0];r=m+128|0;Q=r+40|0;g=Q;i=H[a+21|0];f=i>>>17|0;l=i<<15;i=f;h=l;l=H[a+20|0];f=l>>>25|0;l=h|l<<7;K=f|i;f=H[a+22|0];i=f>>>9|0;l=f<<23|l;T=i|K;f=0;R=H[a+16|0]|H[a+17|0]<<8|(H[a+18|0]<<16|H[a+19|0]<<24);P=R+16777216|0;f=P>>>0<16777216?1:f;K=(f&33554431)<<7|P>>>25;l=K+l|0;f=(f>>>25|0)+T|0;f=l>>>0>>0?f+1|0:f;i=l;K=i+33554432|0;l=K>>>0<33554432?f+1|0:f;G[g+24>>2]=i-(K&-67108864);i=j>>>27|0;j=e<<13|j<<5;i=i|e>>>19|q>>>11;e=q<<21|j;l=(l&67108863)<<6|K>>>26;j=e+l|0;l=j;f=i;j=e+16777216|0;i=j>>>0<16777216?f+1|0:f;G[g+28>>2]=l-(j&1040187392);q=p<<12|s<<4;e=p>>>20|s>>>28;j=(i&33554431)<<7|j>>>25;l=j+(u<<20|q)|0;i=(u>>>12|e)+(i>>>25|0)|0;f=j>>>0>l>>>0?i+1|0:i;p=l+33554432|0;j=p>>>0<33554432?f+1|0:f;G[g+32>>2]=l-(p&-67108864);u=R-(P&-33554432)|0;q=D<<10|F<<2|C<<18;e=D>>>22|F>>>30|C>>>14;i=v>>>21|w>>>29|B>>>13;v=v<<11|w<<3|B<<19;s=v+16777216|0;i=s>>>0<16777216?i+1|0:i;f=i>>>25|0;i=(i&33554431)<<7|s>>>25;l=i+q|0;f=e+f|0;f=i>>>0>l>>>0?f+1|0:f;i=l+33554432|0;f=i>>>0<33554432?f+1|0:f;e=((f&67108863)<<6|i>>>26)+u|0;G[g+20>>2]=e;G[g+16>>2]=l-(i&-67108864);e=J<<13|A<<5|x<<21;u=J>>>19|A>>>27|x>>>11;l=N<<14|n<<6;f=N>>>18|n>>>26|O>>>10;i=e;w=O<<22|l;q=w+16777216|0;f=q>>>0<16777216?f+1|0:f;e=(f&33554431)<<7|q>>>25;l=i+e|0;f=(f>>>25|0)+u|0;f=e>>>0>l>>>0?f+1|0:f;i=l;e=i+33554432|0;l=e>>>0<33554432?f+1|0:f;G[g+8>>2]=i-(e&-67108864);i=V>>>22|U>>>30;u=W<<18&33292288|(V<<10|U<<2);j=(j&67108863)<<6|p>>>26;p=u+j|0;f=i;j=u+16777216|0;i=j>>>0<16777216?f+1|0:f;G[g+36>>2]=p-(j&33554432);l=v+((l&67108863)<<6|e>>>26)|0;G[g+12>>2]=l-(s&234881024);e=w-(q&2113929216)|0;i=we((i&33554431)<<7|j>>>25,i>>>25|0,19,0);l=i+S|0;f=Z;f=i>>>0>l>>>0?f+1|0:f;j=l+33554432|0;i=j>>>0<33554432?f+1|0:f;f=j;j=((i&67108863)<<6|f>>>26)+e|0;G[g+4>>2]=j;G[g>>2]=l-(f&-67108864);G[r+84>>2]=0;G[r+88>>2]=0;G[r+80>>2]=1;G[r+92>>2]=0;G[r+96>>2]=0;G[r+100>>2]=0;G[r+104>>2]=0;G[r+108>>2]=0;G[r+112>>2]=0;G[r+116>>2]=0;f=k+192|0;ia(f,g);l=k+144|0;ka(l,f,1936);O=-1;N=G[k+192>>2]-1|0;G[k+192>>2]=N;G[k+144>>2]=G[k+144>>2]+1;n=G[k+196>>2];x=G[k+200>>2];J=G[k+204>>2];A=G[k+208>>2];B=G[k+212>>2];v=G[k+216>>2];w=G[k+220>>2];C=G[k+224>>2];D=G[k+228>>2];i=k+96|0;ia(i,l);ka(i,i,l);ia(r,i);ka(r,r,l);ka(r,r,f);j=Y-144|0;Y=j;g=j+96|0;ia(g,r);e=j+48|0;ia(e,g);ia(e,e);ka(e,r,e);ka(g,g,e);ia(g,g);ka(g,e,g);ia(e,g);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ka(g,e,g);ia(e,g);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ka(e,e,g);ia(j,e);ia(j,j);ia(j,j);ia(j,j);ia(j,j);ia(j,j);ia(j,j);ia(j,j);ia(j,j);ia(j,j);ia(j,j);ia(j,j);ia(j,j);ia(j,j);ia(j,j);ia(j,j);ia(j,j);ia(j,j);ia(j,j);ia(j,j);ka(e,j,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ka(g,e,g);ia(e,g);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ka(e,e,g);ia(j,e);g=1;while(1){ia(j,j);g=g+1|0;if((g|0)!=100){continue}break}e=j+48|0;ka(e,j,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);g=j+96|0;ka(g,e,g);ia(g,g);ia(g,g);ka(r,g,r);Y=j+144|0;ka(r,r,i);ka(r,r,f);g=k+48|0;ia(g,r);ka(g,g,l);F=G[k+84>>2];G[k+36>>2]=F-D;u=G[k+80>>2];G[k+32>>2]=u-C;p=G[k+76>>2];G[k+28>>2]=p-w;s=G[k+72>>2];G[k+24>>2]=s-v;q=G[k+68>>2];G[k+20>>2]=q-B;e=G[k+64>>2];G[k+16>>2]=e-A;j=G[k+60>>2];G[k+12>>2]=j-J;l=G[k+56>>2];G[k+8>>2]=l-x;i=G[k+52>>2];G[k+4>>2]=i-n;f=G[k+48>>2];G[k>>2]=f-N;g=k+240|0;Ja(g,k);b:{if(H[k+271|0]|(H[k+270|0]|(H[k+269|0]|(H[k+268|0]|(H[k+267|0]|(H[k+266|0]|(H[k+265|0]|(H[k+264|0]|(H[k+263|0]|(H[k+262|0]|(H[k+261|0]|(H[k+260|0]|(H[k+259|0]|(H[k+258|0]|(H[k+257|0]|(H[k+256|0]|(H[k+255|0]|(H[k+254|0]|(H[k+253|0]|(H[k+252|0]|(H[k+251|0]|(H[k+250|0]|(H[k+249|0]|(H[k+248|0]|(H[k+247|0]|(H[k+246|0]|(H[k+245|0]|(H[k+244|0]|(H[k+243|0]|(H[k+242|0]|(H[k+241|0]|H[k+240|0]))))))))))))))))))))))))))))))){G[k+36>>2]=D+F;G[k+32>>2]=u+C;G[k+28>>2]=p+w;G[k+24>>2]=s+v;G[k+20>>2]=q+B;G[k+16>>2]=e+A;G[k+12>>2]=j+J;G[k+8>>2]=l+x;G[k+4>>2]=i+n;G[k>>2]=f+N;Ja(g,k);if(H[k+271|0]|(H[k+270|0]|(H[k+269|0]|(H[k+268|0]|(H[k+267|0]|(H[k+266|0]|(H[k+265|0]|(H[k+264|0]|(H[k+263|0]|(H[k+262|0]|(H[k+261|0]|(H[k+260|0]|(H[k+259|0]|(H[k+258|0]|(H[k+257|0]|(H[k+256|0]|(H[k+255|0]|(H[k+254|0]|(H[k+253|0]|(H[k+252|0]|(H[k+251|0]|(H[k+250|0]|(H[k+249|0]|(H[k+248|0]|(H[k+247|0]|(H[k+246|0]|(H[k+245|0]|(H[k+244|0]|(H[k+243|0]|(H[k+242|0]|(H[k+241|0]|H[k+240|0]))))))))))))))))))))))))))))))){break b}ka(r,r,1984)}Ja(k+240|0,r);if((E[k+240|0]&1)==(H[a+31|0]>>>7|0)){G[r+36>>2]=0-G[r+36>>2];G[r+32>>2]=0-G[r+32>>2];G[r+28>>2]=0-G[r+28>>2];G[r+24>>2]=0-G[r+24>>2];G[r+20>>2]=0-G[r+20>>2];G[r+16>>2]=0-G[r+16>>2];G[r+12>>2]=0-G[r+12>>2];G[r+8>>2]=0-G[r+8>>2];G[r+4>>2]=0-G[r+4>>2];G[r>>2]=0-G[r>>2]}ka(r+120|0,r,Q);O=0}Y=k+272|0;if(O){break a}G[m+352>>2]=327033209;G[m+356>>2]=1541459225;G[m+344>>2]=-79577749;G[m+348>>2]=528734635;G[m+336>>2]=725511199;G[m+340>>2]=-1694144372;G[m+328>>2]=-1377402159;G[m+332>>2]=1359893119;p=32;G[m+320>>2]=1595750129;G[m+324>>2]=-1521486534;G[m+312>>2]=-23791573;G[m+316>>2]=1013904242;G[m+304>>2]=-2067093701;G[m+308>>2]=-1150833019;G[m+296>>2]=-205731576;G[m+300>>2]=1779033703;G[m+288>>2]=0;G[m+292>>2]=0;G[m+360>>2]=0;q=m+364|0;g=d;while(1){i=G[m+360>>2];c:{if(!(i|p>>>0<128)){ya(m+288|0,g);f=G[m+292>>2];i=G[m+288>>2]+1024|0;f=i>>>0<1024?f+1|0:f;G[m+288>>2]=i;G[m+292>>2]=f;p=p-128|0;g=g+128|0;break c}s=128;f=128-i|0;e=f>>>0>p>>>0?p:f;if((i|0)!=128){f=e>>>0<=1?1:e;l=f&3;s=0;t=0;if(e>>>0>=4){i=f&-4;j=0;while(1){E[q+(G[m+360>>2]+t|0)|0]=H[g+t|0];f=t|1;E[q+(f+G[m+360>>2]|0)|0]=H[f+g|0];f=t|2;E[q+(f+G[m+360>>2]|0)|0]=H[f+g|0];f=t|3;E[q+(f+G[m+360>>2]|0)|0]=H[f+g|0];t=t+4|0;j=j+4|0;if((i|0)!=(j|0)){continue}break}}if(l){while(1){E[((G[m+360>>2]+t|0)+m|0)+364|0]=H[g+t|0];t=t+1|0;s=s+1|0;if((l|0)!=(s|0)){continue}break}}s=G[m+360>>2]}p=p-e|0;g=e+g|0;f=e+s|0;G[m+360>>2]=f;if((f|0)!=128){break c}ya(m+288|0,q);G[m+360>>2]=0;f=G[m+292>>2];i=G[m+288>>2]+1024|0;f=i>>>0<1024?f+1|0:f;G[m+288>>2]=i;G[m+292>>2]=f}if(p){continue}break}d:{if(!a){break d}t=G[m+360>>2];if(t>>>0>128){break d}p=32;while(1){e:{if(!(p>>>0<128|t)){ya(m+288|0,a);f=G[m+292>>2];g=G[m+288>>2]+1024|0;f=g>>>0<1024?f+1|0:f;G[m+288>>2]=g;G[m+292>>2]=f;p=p-128|0;a=a+128|0;break e}g=128;f=128-t|0;e=f>>>0>p>>>0?p:f;if((t|0)!=128){g=e>>>0<=1?1:e;i=g&3;s=0;t=0;if(e>>>0>=4){f=g&-4;j=0;while(1){l=m+364|0;E[l+(G[m+360>>2]+t|0)|0]=H[a+t|0];g=t|1;E[l+(g+G[m+360>>2]|0)|0]=H[a+g|0];g=t|2;E[l+(g+G[m+360>>2]|0)|0]=H[a+g|0];g=t|3;E[l+(g+G[m+360>>2]|0)|0]=H[a+g|0];t=t+4|0;j=j+4|0;if((f|0)!=(j|0)){continue}break}}if(i){while(1){E[((G[m+360>>2]+t|0)+m|0)+364|0]=H[a+t|0];t=t+1|0;s=s+1|0;if((i|0)!=(s|0)){continue}break}}g=G[m+360>>2]}p=p-e|0;a=a+e|0;g=e+g|0;G[m+360>>2]=g;if((g|0)!=128){break e}ya(m+288|0,q);G[m+360>>2]=0;f=G[m+292>>2];g=G[m+288>>2]+1024|0;f=g>>>0<1024?f+1|0:f;G[m+288>>2]=g;G[m+292>>2]=f}if(!p){break d}t=G[m+360>>2];continue}}a=m+288|0;nb(a,b,c);i=m+528|0;gb(a,i);pb(i);c=m+8|0;p=m+128|0;e=d+32|0;b=0;a=0;o=Y-2272|0;Y=o;while(1){g=o+2016|0;f=i+(b>>>3|0)|0;E[g+b|0]=H[f|0]>>>(b&6)&1;l=g;g=b|1;E[l+g|0]=H[f|0]>>>(g&7)&1;b=b+2|0;if((b|0)!=256){continue}break}while(1){g=a;a=g+1|0;f:{if(g>>>0>254){break f}b=o+2016|0;q=b+g|0;if(!H[q|0]){break f}l=a+b|0;b=E[l|0];g:{if(!b){break g}i=b<<1;f=E[q|0];b=i+f|0;if((b|0)<=15){E[q|0]=b;E[l|0]=0;break g}b=f-i|0;if((b|0)<-15){break f}E[q|0]=b;b=a;while(1){f=(o+2016|0)+b|0;if(!H[f|0]){E[f|0]=1;break g}E[f|0]=0;f=b>>>0<255;b=b+1|0;if(f){continue}break}}if(g>>>0>253){break f}b=g+2|0;j=b+(o+2016|0)|0;f=E[j|0];h:{if(!f){break h}l=f<<2;i=E[q|0];f=l+i|0;if((f|0)>=16){f=i-l|0;if((f|0)<-15){break f}E[q|0]=f;while(1){f=(o+2016|0)+b|0;if(H[f|0]){E[f|0]=0;f=b>>>0<255;b=b+1|0;if(f){continue}break h}break}E[f|0]=1;break h}E[q|0]=f;E[j|0]=0}if(g>>>0>252){break f}b=g+3|0;j=b+(o+2016|0)|0;f=E[j|0];i:{if(!f){break i}l=f<<3;i=E[q|0];f=l+i|0;if((f|0)>=16){f=i-l|0;if((f|0)<-15){break f}E[q|0]=f;while(1){f=(o+2016|0)+b|0;if(H[f|0]){E[f|0]=0;f=b>>>0<255;b=b+1|0;if(f){continue}break i}break}E[f|0]=1;break i}E[q|0]=f;E[j|0]=0}if(g>>>0>251){break f}b=g+4|0;j=b+(o+2016|0)|0;f=E[j|0];j:{if(!f){break j}l=f<<4;i=E[q|0];f=l+i|0;if((f|0)>=16){f=i-l|0;if((f|0)<-15){break f}E[q|0]=f;while(1){f=(o+2016|0)+b|0;if(H[f|0]){E[f|0]=0;f=b>>>0<255;b=b+1|0;if(f){continue}break j}break}E[f|0]=1;break j}E[q|0]=f;E[j|0]=0}if(g>>>0>250){break f}b=g+5|0;j=b+(o+2016|0)|0;f=E[j|0];k:{if(!f){break k}l=f<<5;i=E[q|0];f=l+i|0;if((f|0)>=16){f=i-l|0;if((f|0)<-15){break f}E[q|0]=f;while(1){f=(o+2016|0)+b|0;if(H[f|0]){E[f|0]=0;f=b>>>0<255;b=b+1|0;if(f){continue}break k}break}E[f|0]=1;break k}E[q|0]=f;E[j|0]=0}if(g>>>0>249){break f}b=g+6|0;l=b+(o+2016|0)|0;g=E[l|0];if(!g){break f}i=g<<6;f=E[q|0];g=i+f|0;if((g|0)>=16){g=f-i|0;if((g|0)<-15){break f}E[q|0]=g;while(1){g=(o+2016|0)+b|0;if(H[g|0]){E[g|0]=0;g=b>>>0<255;b=b+1|0;if(g){continue}break f}break}E[g|0]=1;break f}E[q|0]=g;E[l|0]=0}if((a|0)!=256){continue}break}b=0;while(1){a=o+1760|0;g=e+(b>>>3|0)|0;E[a+b|0]=H[g|0]>>>(b&6)&1;i=a;a=b|1;E[i+a|0]=H[g|0]>>>(a&7)&1;b=b+2|0;if((b|0)!=256){continue}break}a=0;while(1){g=a;a=g+1|0;l:{if(g>>>0>254){break l}b=o+1760|0;e=b+g|0;if(!H[e|0]){break l}l=a+b|0;b=E[l|0];m:{if(!b){break m}i=b<<1;f=E[e|0];b=i+f|0;if((b|0)<=15){E[e|0]=b;E[l|0]=0;break m}b=f-i|0;if((b|0)<-15){break l}E[e|0]=b;b=a;while(1){f=(o+1760|0)+b|0;if(!H[f|0]){E[f|0]=1;break m}E[f|0]=0;f=b>>>0<255;b=b+1|0;if(f){continue}break}}if(g>>>0>253){break l}b=g+2|0;j=b+(o+1760|0)|0;f=E[j|0];n:{if(!f){break n}l=f<<2;i=E[e|0];f=l+i|0;if((f|0)>=16){f=i-l|0;if((f|0)<-15){break l}E[e|0]=f;while(1){f=(o+1760|0)+b|0;if(H[f|0]){E[f|0]=0;f=b>>>0<255;b=b+1|0;if(f){continue}break n}break}E[f|0]=1;break n}E[e|0]=f;E[j|0]=0}if(g>>>0>252){break l}b=g+3|0;j=b+(o+1760|0)|0;f=E[j|0];o:{if(!f){break o}l=f<<3;i=E[e|0];f=l+i|0;if((f|0)>=16){f=i-l|0;if((f|0)<-15){break l}E[e|0]=f;while(1){f=(o+1760|0)+b|0;if(H[f|0]){E[f|0]=0;f=b>>>0<255;b=b+1|0;if(f){continue}break o}break}E[f|0]=1;break o}E[e|0]=f;E[j|0]=0}if(g>>>0>251){break l}b=g+4|0;j=b+(o+1760|0)|0;f=E[j|0];p:{if(!f){break p}l=f<<4;i=E[e|0];f=l+i|0;if((f|0)>=16){f=i-l|0;if((f|0)<-15){break l}E[e|0]=f;while(1){f=(o+1760|0)+b|0;if(H[f|0]){E[f|0]=0;f=b>>>0<255;b=b+1|0;if(f){continue}break p}break}E[f|0]=1;break p}E[e|0]=f;E[j|0]=0}if(g>>>0>250){break l}b=g+5|0;j=b+(o+1760|0)|0;f=E[j|0];q:{if(!f){break q}l=f<<5;i=E[e|0];f=l+i|0;if((f|0)>=16){f=i-l|0;if((f|0)<-15){break l}E[e|0]=f;while(1){f=(o+1760|0)+b|0;if(H[f|0]){E[f|0]=0;f=b>>>0<255;b=b+1|0;if(f){continue}break q}break}E[f|0]=1;break q}E[e|0]=f;E[j|0]=0}if(g>>>0>249){break l}b=g+6|0;l=b+(o+1760|0)|0;g=E[l|0];if(!g){break l}i=g<<6;f=E[e|0];g=i+f|0;if((g|0)>=16){g=f-i|0;if((g|0)<-15){break l}E[e|0]=g;while(1){g=(o+1760|0)+b|0;if(H[g|0]){E[g|0]=0;g=b>>>0<255;b=b+1|0;if(g){continue}break l}break}E[g|0]=1;break l}E[e|0]=g;E[l|0]=0}if((a|0)!=256){continue}break}s=o+480|0;Ka(s,p);q=G[p>>2];e=G[p+4>>2];j=G[p+8>>2];l=G[p+12>>2];i=G[p+16>>2];f=G[p+20>>2];g=G[p+24>>2];b=G[p+28>>2];a=G[p+36>>2];G[o+192>>2]=G[p+32>>2];G[o+196>>2]=a;G[o+184>>2]=g;G[o+188>>2]=b;G[o+176>>2]=i;G[o+180>>2]=f;G[o+168>>2]=j;G[o+172>>2]=l;G[o+160>>2]=q;G[o+164>>2]=e;q=G[p+48>>2];e=G[p+52>>2];j=G[p+56>>2];l=G[p+60>>2];a=p- -64|0;i=G[a>>2];f=G[a+4>>2];g=G[p+40>>2];b=G[p+44>>2];a=G[p+76>>2];G[o+232>>2]=G[p+72>>2];G[o+236>>2]=a;G[o+224>>2]=i;G[o+228>>2]=f;G[o+216>>2]=j;G[o+220>>2]=l;G[o+208>>2]=q;G[o+212>>2]=e;G[o+200>>2]=g;G[o+204>>2]=b;q=G[p+88>>2];e=G[p+92>>2];j=G[p+96>>2];l=G[p+100>>2];i=G[p+104>>2];f=G[p+108>>2];g=G[p+80>>2];b=G[p+84>>2];a=G[p+116>>2];G[o+272>>2]=G[p+112>>2];G[o+276>>2]=a;G[o+264>>2]=i;G[o+268>>2]=f;G[o+256>>2]=j;G[o+260>>2]=l;G[o+248>>2]=q;G[o+252>>2]=e;G[o+240>>2]=g;G[o+244>>2]=b;g=o+320|0;b=o+160|0;Va(g,b);y=o+440|0;ka(o,g,y);I=o+360|0;z=o+400|0;ka(o+40|0,I,z);ka(o+80|0,z,y);ka(o+120|0,g,I);La(g,o,s);ka(b,g,y);L=o+200|0;ka(L,I,z);k=o+240|0;ka(k,z,y);r=o+280|0;ka(r,g,I);a=o+640|0;Ka(a,b);La(g,o,a);ka(b,g,y);ka(L,I,z);ka(k,z,y);ka(r,g,I);a=o+800|0;Ka(a,b);La(g,o,a);ka(b,g,y);ka(L,I,z);ka(k,z,y);ka(r,g,I);a=o+960|0;Ka(a,b);La(g,o,a);ka(b,g,y);ka(L,I,z);ka(k,z,y);ka(r,g,I);a=o+1120|0;Ka(a,b);La(g,o,a);ka(b,g,y);ka(L,I,z);ka(k,z,y);ka(r,g,I);a=o+1280|0;Ka(a,b);La(g,o,a);ka(b,g,y);ka(L,I,z);ka(k,z,y);ka(r,g,I);a=o+1440|0;Ka(a,b);La(g,o,a);ka(b,g,y);ka(L,I,z);ka(k,z,y);ka(r,g,I);Ka(o+1600|0,b);G[c+32>>2]=0;G[c+36>>2]=0;G[c+24>>2]=0;G[c+28>>2]=0;G[c+16>>2]=0;G[c+20>>2]=0;G[c+8>>2]=0;G[c+12>>2]=0;G[c>>2]=0;G[c+4>>2]=0;G[c+44>>2]=0;G[c+48>>2]=0;G[c+40>>2]=1;G[c+52>>2]=0;G[c+56>>2]=0;G[c+60>>2]=0;G[c+64>>2]=0;G[c+68>>2]=0;G[c+72>>2]=0;G[c+84>>2]=0;G[c+88>>2]=0;G[c+76>>2]=0;G[c+80>>2]=1;G[c+92>>2]=0;G[c+96>>2]=0;G[c+100>>2]=0;G[c+104>>2]=0;G[c+108>>2]=0;G[c+112>>2]=0;G[c+116>>2]=0;W=c+80|0;V=c+40|0;a=255;while(1){r:{s:{b=o+2016|0;t:{if(H[b+a|0]){break t}g=o+1760|0;if(H[g+a|0]){break t}i=b;b=a-1|0;if(!(H[i+b|0]|H[b+g|0])){break s}a=b}if((a|0)<0){break r}while(1){g=o+320|0;Va(g,c);b=a;x=E[b+(o+2016|0)|0];u:{if((x|0)>0){a=o+160|0;ka(a,g,y);ka(L,I,z);ka(k,z,y);ka(r,g,I);La(g,a,(o+480|0)+M((x&254)>>>1|0,160)|0);break u}if((x|0)>=0){break u}n=o+160|0;h=o+320|0;ka(n,h,y);ka(L,I,z);ka(k,z,y);ka(r,h,I);A=G[n+44>>2];B=G[n+48>>2];v=G[n+52>>2];w=G[n+56>>2];C=G[n+60>>2];J=n- -64|0;D=G[J>>2];F=G[n+68>>2];u=G[n+72>>2];p=G[n+76>>2];s=G[n+4>>2];q=G[n+8>>2];e=G[n+12>>2];j=G[n+16>>2];l=G[n+20>>2];i=G[n+24>>2];f=G[n+28>>2];g=G[n+32>>2];a=G[n+36>>2];G[h>>2]=G[n>>2]+G[n+40>>2];G[h+36>>2]=a+p;G[h+32>>2]=g+u;G[h+28>>2]=f+F;G[h+24>>2]=i+D;G[h+20>>2]=l+C;G[h+16>>2]=j+w;G[h+12>>2]=e+v;G[h+8>>2]=q+B;G[h+4>>2]=s+A;A=G[n+44>>2];B=G[n+48>>2];v=G[n+52>>2];w=G[n+56>>2];C=G[n+60>>2];D=G[J>>2];F=G[n+68>>2];u=G[n+72>>2];p=G[n>>2];s=G[n+40>>2];q=G[n+4>>2];e=G[n+8>>2];j=G[n+12>>2];l=G[n+16>>2];i=G[n+20>>2];f=G[n+24>>2];g=G[n+28>>2];a=G[n+32>>2];G[h+76>>2]=G[n+76>>2]-G[n+36>>2];G[h+72>>2]=u-a;G[h+68>>2]=F-g;t=h- -64|0;G[t>>2]=D-f;G[h+60>>2]=C-i;G[h+56>>2]=w-l;G[h+52>>2]=v-j;G[h+48>>2]=B-e;G[h+44>>2]=A-q;G[h+40>>2]=s-p;g=(o+480|0)+M((0-x&254)>>>1|0,160)|0;ka(h+80|0,h,g+40|0);a=h+40|0;ka(a,a,g);ka(h+120|0,g+120|0,n+120|0);ka(h,n+80|0,g+80|0);Q=G[h+44>>2];T=G[h+84>>2];S=G[h+48>>2];R=G[h+88>>2];P=G[h+52>>2];K=G[h+92>>2];x=G[h+56>>2];J=G[h+96>>2];A=G[h+60>>2];B=G[h+100>>2];v=G[t>>2];w=G[h+104>>2];C=G[h+68>>2];D=G[h+108>>2];F=G[h+72>>2];u=G[h+112>>2];U=G[h>>2];O=G[h+4>>2];N=G[h+8>>2];n=G[h+12>>2];q=G[h+16>>2];e=G[h+20>>2];j=G[h+24>>2];l=G[h+28>>2];i=G[h+32>>2];f=G[h+36>>2];p=G[h+40>>2];s=G[h+80>>2];g=G[h+76>>2];a=G[h+116>>2];G[h+76>>2]=g+a;G[h+72>>2]=u+F;G[h+68>>2]=C+D;G[t>>2]=v+w;G[h+60>>2]=A+B;G[h+56>>2]=x+J;G[h+52>>2]=K+P;G[h+48>>2]=S+R;G[h+44>>2]=Q+T;G[h+40>>2]=p+s;G[h+36>>2]=a-g;G[h+32>>2]=u-F;G[h+28>>2]=D-C;G[h+24>>2]=w-v;G[h+20>>2]=B-A;G[h+16>>2]=J-x;G[h+12>>2]=K-P;G[h+8>>2]=R-S;G[h+4>>2]=T-Q;G[h>>2]=s-p;x=G[h+156>>2];J=f<<1;G[h+156>>2]=x+J;A=G[h+152>>2];B=i<<1;G[h+152>>2]=A+B;v=G[h+148>>2];w=l<<1;G[h+148>>2]=v+w;C=G[h+144>>2];D=j<<1;G[h+144>>2]=C+D;F=G[h+140>>2];u=e<<1;G[h+140>>2]=F+u;p=G[h+136>>2];s=q<<1;G[h+136>>2]=p+s;q=G[h+132>>2];e=n<<1;G[h+132>>2]=q+e;j=G[h+128>>2];l=N<<1;G[h+128>>2]=j+l;i=G[h+124>>2];f=O<<1;G[h+124>>2]=i+f;g=G[h+120>>2];a=U<<1;G[h+120>>2]=g+a;G[h+112>>2]=B-A;G[h+108>>2]=w-v;G[h+104>>2]=D-C;G[h+100>>2]=u-F;G[h+96>>2]=s-p;G[h+92>>2]=e-q;G[h+88>>2]=l-j;G[h+84>>2]=f-i;G[h+80>>2]=a-g;G[h+116>>2]=J-x}x=E[b+(o+1760|0)|0];v:{if((x|0)>0){a=o+160|0;g=o+320|0;ka(a,g,y);ka(L,I,z);ka(k,z,y);ka(r,g,I);ob(g,a,M((x&254)>>>1|0,120)+5680|0);break v}if((x|0)>=0){break v}n=o+160|0;h=o+320|0;ka(n,h,y);ka(L,I,z);ka(k,z,y);ka(r,h,I);A=G[n+44>>2];B=G[n+48>>2];v=G[n+52>>2];w=G[n+56>>2];C=G[n+60>>2];J=n- -64|0;D=G[J>>2];F=G[n+68>>2];u=G[n+72>>2];p=G[n+76>>2];s=G[n+4>>2];q=G[n+8>>2];e=G[n+12>>2];j=G[n+16>>2];l=G[n+20>>2];i=G[n+24>>2];f=G[n+28>>2];g=G[n+32>>2];a=G[n+36>>2];G[h>>2]=G[n>>2]+G[n+40>>2];G[h+36>>2]=a+p;G[h+32>>2]=g+u;G[h+28>>2]=f+F;G[h+24>>2]=i+D;G[h+20>>2]=l+C;G[h+16>>2]=j+w;G[h+12>>2]=e+v;G[h+8>>2]=q+B;G[h+4>>2]=s+A;A=G[n+44>>2];B=G[n+48>>2];v=G[n+52>>2];w=G[n+56>>2];C=G[n+60>>2];D=G[J>>2];F=G[n+68>>2];u=G[n+72>>2];p=G[n>>2];s=G[n+40>>2];q=G[n+4>>2];e=G[n+8>>2];j=G[n+12>>2];l=G[n+16>>2];i=G[n+20>>2];f=G[n+24>>2];g=G[n+28>>2];a=G[n+32>>2];G[h+76>>2]=G[n+76>>2]-G[n+36>>2];G[h+72>>2]=u-a;G[h+68>>2]=F-g;t=h- -64|0;G[t>>2]=D-f;G[h+60>>2]=C-i;G[h+56>>2]=w-l;G[h+52>>2]=v-j;G[h+48>>2]=B-e;G[h+44>>2]=A-q;G[h+40>>2]=s-p;g=M((0-x&254)>>>1|0,120)+5680|0;ka(h+80|0,h,g+40|0);a=h+40|0;ka(a,a,g);ka(h+120|0,g+80|0,n+120|0);U=G[n+84>>2];O=G[n+88>>2];N=G[n+92>>2];q=G[n+96>>2];e=G[n+100>>2];j=G[n+104>>2];l=G[n+108>>2];i=G[n+112>>2];f=G[n+116>>2];Q=G[h+44>>2];T=G[h+84>>2];S=G[h+48>>2];R=G[h+88>>2];P=G[h+52>>2];K=G[h+92>>2];x=G[h+56>>2];J=G[h+96>>2];A=G[h+60>>2];B=G[h+100>>2];v=G[t>>2];w=G[h+104>>2];C=G[h+68>>2];D=G[h+108>>2];F=G[h+72>>2];u=G[h+112>>2];n=G[n+80>>2];p=G[h+40>>2];s=G[h+80>>2];g=G[h+76>>2];a=G[h+116>>2];G[h+76>>2]=g+a;G[h+72>>2]=u+F;G[h+68>>2]=C+D;G[t>>2]=v+w;G[h+60>>2]=A+B;G[h+56>>2]=x+J;G[h+52>>2]=K+P;G[h+48>>2]=S+R;G[h+44>>2]=Q+T;G[h+40>>2]=p+s;G[h+36>>2]=a-g;G[h+32>>2]=u-F;G[h+28>>2]=D-C;G[h+24>>2]=w-v;G[h+20>>2]=B-A;G[h+16>>2]=J-x;G[h+12>>2]=K-P;G[h+8>>2]=R-S;G[h+4>>2]=T-Q;G[h>>2]=s-p;x=G[h+156>>2];J=f<<1;G[h+156>>2]=x+J;A=G[h+152>>2];B=i<<1;G[h+152>>2]=A+B;v=G[h+148>>2];w=l<<1;G[h+148>>2]=v+w;C=G[h+144>>2];D=j<<1;G[h+144>>2]=C+D;F=G[h+140>>2];u=e<<1;G[h+140>>2]=F+u;p=G[h+136>>2];s=q<<1;G[h+136>>2]=p+s;q=G[h+132>>2];e=N<<1;G[h+132>>2]=q+e;j=G[h+128>>2];l=O<<1;G[h+128>>2]=j+l;i=G[h+124>>2];f=U<<1;G[h+124>>2]=i+f;g=G[h+120>>2];a=n<<1;G[h+120>>2]=g+a;G[h+112>>2]=B-A;G[h+108>>2]=w-v;G[h+104>>2]=D-C;G[h+100>>2]=u-F;G[h+96>>2]=s-p;G[h+92>>2]=e-q;G[h+88>>2]=l-j;G[h+84>>2]=f-i;G[h+80>>2]=a-g;G[h+116>>2]=J-x}ka(c,o+320|0,y);ka(V,I,z);ka(W,z,y);a=b-1|0;if((b|0)>0){continue}break}break r}a=a-2|0;if(b){continue}}break}Y=o+2272|0;g=m+688|0;qb(g,m+88|0);b=m+640|0;ka(b,c,g);a=m+592|0;ka(a,m+48|0,g);Ja(m+496|0,a);Ja(m+736|0,b);t=H[m+496|0]==H[d|0]&H[m+497|0]==H[d+1|0]&H[m+498|0]==H[d+2|0]&H[m+499|0]==H[d+3|0]&H[m+500|0]==H[d+4|0]&H[m+501|0]==H[d+5|0]&H[m+502|0]==H[d+6|0]&H[m+503|0]==H[d+7|0]&H[m+504|0]==H[d+8|0]&H[m+505|0]==H[d+9|0]&H[m+506|0]==H[d+10|0]&H[m+507|0]==H[d+11|0]&H[m+508|0]==H[d+12|0]&H[m+509|0]==H[d+13|0]&H[m+510|0]==H[d+14|0]&H[m+511|0]==H[d+15|0]&H[m+512|0]==H[d+16|0]&H[m+513|0]==H[d+17|0]&H[m+514|0]==H[d+18|0]&H[m+515|0]==H[d+19|0]&H[m+516|0]==H[d+20|0]&H[m+517|0]==H[d+21|0]&H[m+518|0]==H[d+22|0]&H[m+519|0]==H[d+23|0]&H[m+520|0]==H[d+24|0]&H[m+521|0]==H[d+25|0]&H[m+522|0]==H[d+26|0]&H[m+523|0]==H[d+27|0]&H[m+524|0]==H[d+28|0]&H[m+525|0]==H[d+29|0]&H[m+526|0]==H[d+30|0]&H[d+31|0]==(H[m+527|0]^H[m+736|0]<<7&128)}Y=m+768|0;return(t|0)!=0}function pb(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,F=0,G=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0;m=H[a+44|0]|H[a+45|0]<<8|(H[a+46|0]<<16|H[a+47|0]<<24);e=m>>>5&2097151;w=(H[a+60|0]|H[a+61|0]<<8|(H[a+62|0]<<16|H[a+63|0]<<24))>>>3|0;d=we(w,0,-683901,-1);b=H[a+44|0];c=b<<16&2031616|(H[a+42|0]|H[a+43|0]<<8);j=d+c|0;b=Z;b=c>>>0>j>>>0?b+1|0:b;i=b;b=b-((j>>>0<4293918720)-1|0)|0;q=b;d=b>>21;c=e;g=j- -1048576|0;e=(b&2097151)<<11|g>>>21;b=c+e|0;c=d;c=b>>>0>>0?c+1|0:c;F=c;G=b;t=we(b,c,-683901,-1);k=Z;J=(H[a+49|0]|H[a+50|0]<<8|(H[a+51|0]<<16|H[a+52|0]<<24))>>>7&2097151;h=we(J,0,-997805,-1);b=H[a+27|0];d=b>>>24|0;n=H[a+23|0]|H[a+24|0]<<8|(H[a+25|0]<<16|H[a+26|0]<<24);e=b<<8|n>>>24;b=H[a+28|0];c=b>>>16|0;b=e|b<<16;c=c|d;c=((c&3)<<30|b>>>2)&2097151;d=c+h|0;b=Z;b=c>>>0>d>>>0?b+1|0:b;o=H[a+52|0]|H[a+53|0]<<8|(H[a+54|0]<<16|H[a+55|0]<<24);B=o>>>4&2097151;c=we(B,0,654183,0);d=c+d|0;b=Z+b|0;h=d;d=c>>>0>d>>>0?b+1|0:b;c=H[a+48|0];b=c>>>24|0;f=c<<8|m>>>24;c=b;e=H[a+49|0];b=e>>>16|0;e=e<<16;m=b|c;c=e|f;K=((m&3)<<30|c>>>2)&2097151;b=we(K,0,136657,0);c=b+h|0;d=Z+d|0;d=b>>>0>c>>>0?d+1|0:d;L=(H[a+57|0]|H[a+58|0]<<8|(H[a+59|0]<<16|H[a+60|0]<<24))>>>6&2097151;b=we(L,0,666643,0);e=b+c|0;c=Z+d|0;h=e;d=b>>>0>e>>>0?c+1|0:c;b=H[a+56|0];c=b>>>24|0;f=b<<8|o>>>24;e=H[a+57|0];b=e>>>16|0;e=e<<16;o=b|c;c=e|f;M=((o&1)<<31|c>>>1)&2097151;c=we(M,0,470296,0);e=c+h|0;b=Z+d|0;d=e;b=d>>>0>>0?b+1|0:b;c=b+k|0;e=d+t|0;c=d>>>0>e>>>0?c+1|0:c;r=d- -1048576|0;d=b-((d>>>0<4293918720)-1|0)|0;s=d;b=r&-2097152;k=e-b|0;t=c-((b>>>0>e>>>0)+d|0)|0;c=we(J,0,654183,0);d=c+(n>>>5&2097151)|0;b=Z;b=c>>>0>d>>>0?b+1|0:b;c=d;d=we(B,0,470296,0);e=c+d|0;c=Z+b|0;c=d>>>0>e>>>0?c+1|0:c;b=we(K,N,-997805,-1);d=b+e|0;c=Z+c|0;c=b>>>0>d>>>0?c+1|0:c;b=d;d=we(M,O,666643,0);e=b+d|0;b=Z+c|0;f=e;e=d>>>0>e>>>0?b+1|0:b;d=we(J,0,470296,0);b=H[a+23|0];b=b<<16&2031616|(H[a+21|0]|H[a+22|0]<<8);h=d+b|0;d=Z;d=b>>>0>h>>>0?d+1|0:d;c=we(B,0,666643,0);h=c+h|0;b=Z+d|0;d=we(K,N,654183,0);n=d+h|0;c=Z+(c>>>0>h>>>0?b+1|0:b)|0;c=d>>>0>n>>>0?c+1|0:c;o=c;c=c-((n>>>0<4293918720)-1|0)|0;A=c;b=c>>>21|0;h=n- -1048576|0;c=(c&2097151)<<11|h>>>21;f=c+f|0;b=b+e|0;b=c>>>0>f>>>0?b+1|0:b;d=b;c=b-((f>>>0<4293918720)-1|0)|0;l=c;b=k;e=f- -1048576|0;k=(c&2097151)<<11|e>>>21;p=b+k|0;c=(c>>21)+t|0;c=k>>>0>p>>>0?c+1|0:c;k=c-((p>>>0<4293918720)-1|0)|0;m=k;t=p- -1048576|0;b=t&-2097152;C=p-b|0;P=c-((b>>>0>p>>>0)+k|0)|0;b=we(G,F,136657,0);c=b+f|0;d=Z+d|0;d=b>>>0>c>>>0?d+1|0:d;b=e&-2097152;v=c-b|0;D=d-((b>>>0>c>>>0)+l|0)|0;b=g&-2097152;p=j-b|0;q=i-((b>>>0>j>>>0)+q|0)|0;i=we(w,0,136657,0);b=H[a+40|0];c=b>>>24|0;g=H[a+36|0]|H[a+37|0]<<8|(H[a+38|0]<<16|H[a+39|0]<<24);e=b<<8|g>>>24;b=H[a+41|0];d=b>>>16|0;b=e|b<<16;d=c|d;c=d>>>3|0;d=(d&7)<<29|b>>>3;e=d+i|0;b=c+Z|0;b=d>>>0>e>>>0?b+1|0:b;c=we(L,0,-683901,-1);d=c+e|0;b=Z+b|0;b=c>>>0>d>>>0?b+1|0:b;f=d;c=we(w,0,-997805,-1);e=c+(g>>>6&2097151)|0;d=Z;d=c>>>0>e>>>0?d+1|0:d;c=e;e=we(L,0,136657,0);g=c+e|0;c=Z+d|0;d=we(M,O,-683901,-1);x=d+g|0;c=Z+(e>>>0>g>>>0?c+1|0:c)|0;c=d>>>0>x>>>0?c+1|0:c;k=c;d=c-((x>>>0<4293918720)-1|0)|0;S=d;c=d>>21;j=x- -1048576|0;d=(d&2097151)<<11|j>>>21;l=d+f|0;b=b+c|0;b=d>>>0>l>>>0?b+1|0:b;g=b;b=b-((l>>>0<4293918720)-1|0)|0;y=b;c=b>>21;f=l- -1048576|0;d=(b&2097151)<<11|f>>>21;b=d+p|0;c=c+q|0;c=b>>>0>>0?c+1|0:c;I=c;z=b;c=we(b,c,-683901,-1);d=c+v|0;b=Z+D|0;u=d;e=c>>>0>d>>>0?b+1|0:b;b=h&-2097152;D=n-b|0;q=o-((A&4095)+(b>>>0>n>>>0)|0)|0;n=we(J,0,666643,0);c=H[a+19|0];b=c>>>24|0;o=H[a+15|0]|H[a+16|0]<<8|(H[a+17|0]<<16|H[a+18|0]<<24);h=c<<8|o>>>24;d=b;b=H[a+20|0];c=b>>>16|0;b=b<<16;d=c|d;c=b|h;c=(d&7)<<29|c>>>3;h=c+n|0;d=Z+(d>>>3|0)|0;d=c>>>0>h>>>0?d+1|0:d;b=we(K,N,470296,0);h=b+h|0;c=Z+d|0;b=b>>>0>h>>>0?c+1|0:c;d=we(K,N,666643,0);v=d+(o>>>6&2097151)|0;c=Z;c=d>>>0>v>>>0?c+1|0:c;n=c;d=c-((v>>>0<4293918720)-1|0)|0;T=d;c=d>>>21|0;i=v- -1048576|0;d=(d&2097151)<<11|i>>>21;p=d+h|0;b=b+c|0;b=d>>>0>p>>>0?b+1|0:b;o=b;b=b-((p>>>0<4293918720)-1|0)|0;U=b;c=b>>>21|0;h=p- -1048576|0;b=(b&2097151)<<11|h>>>21;d=b+D|0;c=c+q|0;c=b>>>0>d>>>0?c+1|0:c;b=d;d=we(G,F,-997805,-1);q=b+d|0;b=Z+c|0;b=d>>>0>q>>>0?b+1|0:b;d=f&-2097152;c=l-d|0;A=c;f=g-((d>>>0>l>>>0)+y|0)|0;Q=f;d=we(z,I,136657,0);g=d+q|0;b=Z+b|0;b=d>>>0>g>>>0?b+1|0:b;d=we(c,f,-683901,-1);q=d+g|0;c=Z+b|0;c=d>>>0>q>>>0?c+1|0:c;g=c;b=c-((q>>>0<4293918720)-1|0)|0;y=b;f=q- -1048576|0;c=(b&2097151)<<11|f>>>21;l=c+u|0;b=(b>>21)+e|0;b=c>>>0>l>>>0?b+1|0:b;c=b-((l>>>0<4293918720)-1|0)|0;u=c;e=l- -1048576|0;D=(c&2097151)<<11|e>>>21;C=D+C|0;c=(c>>21)+P|0;V=C;D=C>>>0>>0?c+1|0:c;c=e&-2097152;W=l-c|0;X=b-((c>>>0>l>>>0)+u|0)|0;b=f&-2097152;C=q-b|0;P=g-((b>>>0>q>>>0)+y|0)|0;b=we(G,F,654183,0);c=h&-2097152;d=b+(p-c|0)|0;c=Z+(o-((U&2147483647)+(c>>>0>p>>>0)|0)|0)|0;c=b>>>0>d>>>0?c+1|0:c;b=we(z,I,-997805,-1);d=b+d|0;c=Z+c|0;c=b>>>0>d>>>0?c+1|0:c;b=d;d=we(A,Q,136657,0);e=b+d|0;b=Z+c|0;u=e;g=d>>>0>e>>>0?b+1|0:b;b=j&-2097152;p=x-b|0;l=k-((b>>>0>x>>>0)+S|0)|0;o=we(B,0,-683901,-1);c=H[a+35|0];b=c>>>24|0;h=H[a+31|0]|H[a+32|0]<<8|(H[a+33|0]<<16|H[a+34|0]<<24);e=c<<8|h>>>24;d=b;b=H[a+36|0];c=b>>>16|0;b=b<<16|e;c=c|d;b=((c&1)<<31|b>>>1)&2097151;c=b+o|0;d=Z;d=b>>>0>c>>>0?d+1|0:d;b=we(w,0,654183,0);e=b+c|0;c=Z+d|0;c=b>>>0>e>>>0?c+1|0:c;d=we(L,0,-997805,-1);e=d+e|0;b=Z+c|0;b=d>>>0>e>>>0?b+1|0:b;c=we(M,O,136657,0);d=c+e|0;b=Z+b|0;f=d;e=c>>>0>d>>>0?b+1|0:b;b=we(J,0,-683901,-1);d=b+(h>>>4&2097151)|0;c=Z;c=b>>>0>d>>>0?c+1|0:c;b=we(B,0,136657,0);h=b+d|0;d=Z+c|0;d=b>>>0>h>>>0?d+1|0:d;b=we(w,0,470296,0);h=b+h|0;c=Z+d|0;c=b>>>0>h>>>0?c+1|0:c;d=we(L,0,654183,0);h=d+h|0;b=Z+c|0;c=we(M,O,-997805,-1);k=c+h|0;b=Z+(d>>>0>h>>>0?b+1|0:b)|0;b=c>>>0>k>>>0?b+1|0:b;o=b;c=b-((k>>>0<4293918720)-1|0)|0;Y=c;b=c>>21;h=k- -1048576|0;c=(c&2097151)<<11|h>>>21;j=c+f|0;d=b+e|0;d=c>>>0>j>>>0?d+1|0:d;c=d-((j>>>0<4293918720)-1|0)|0;q=c;b=c>>21;f=j- -1048576|0;e=(c&2097151)<<11|f>>>21;c=e+p|0;b=b+l|0;b=c>>>0>>0?b+1|0:b;y=b;e=u;u=c;b=we(c,b,-683901,-1);e=e+b|0;c=Z+g|0;l=e;e=b>>>0>e>>>0?c+1|0:c;b=we(G,F,470296,0);c=i&-2097152;g=b+(v-c|0)|0;c=Z+(n-((T&2047)+(c>>>0>v>>>0)|0)|0)|0;c=b>>>0>g>>>0?c+1|0:c;b=g;g=we(z,I,654183,0);i=b+g|0;b=Z+c|0;b=g>>>0>i>>>0?b+1|0:b;g=we(A,Q,-997805,-1);i=g+i|0;c=Z+b|0;c=g>>>0>i>>>0?c+1|0:c;b=f&-2097152;f=j-b|0;x=f;g=d-((b>>>0>j>>>0)+q|0)|0;R=g;d=we(u,y,136657,0);i=d+i|0;b=Z+c|0;b=d>>>0>i>>>0?b+1|0:b;d=we(f,g,-683901,-1);n=d+i|0;c=Z+b|0;c=d>>>0>n>>>0?c+1|0:c;g=c;b=c-((n>>>0<4293918720)-1|0)|0;q=b;f=n- -1048576|0;c=(b&2097151)<<11|f>>>21;i=c+l|0;b=(b>>21)+e|0;b=c>>>0>i>>>0?b+1|0:b;c=b-((i>>>0<4293918720)-1|0)|0;l=c;e=i- -1048576|0;j=(c&2097151)<<11|e>>>21;p=j+C|0;c=(c>>21)+P|0;S=p;p=j>>>0>p>>>0?c+1|0:c;c=e&-2097152;T=i-c|0;U=b-((c>>>0>i>>>0)+l|0)|0;b=f&-2097152;C=n-b|0;P=g-((b>>>0>n>>>0)+q|0)|0;g=we(G,F,666643,0);c=H[a+14|0];b=c>>>24|0;q=H[a+10|0]|H[a+11|0]<<8|(H[a+12|0]<<16|H[a+13|0]<<24);e=c<<8|q>>>24;d=b;b=H[a+15|0];c=b>>>16|0;b=b<<16|e;c=c|d;b=((c&1)<<31|b>>>1)&2097151;c=b+g|0;d=Z;d=b>>>0>c>>>0?d+1|0:d;b=c;c=we(z,I,470296,0);e=b+c|0;b=Z+d|0;b=c>>>0>e>>>0?b+1|0:b;c=we(A,Q,654183,0);d=c+e|0;b=Z+b|0;b=c>>>0>d>>>0?b+1|0:b;c=d;d=we(u,y,-997805,-1);e=c+d|0;c=Z+b|0;c=d>>>0>e>>>0?c+1|0:c;b=we(x,R,136657,0);d=b+e|0;c=Z+c|0;n=d;e=b>>>0>d>>>0?c+1|0:c;b=h&-2097152;h=k-b|0;g=o-((b>>>0>k>>>0)+Y|0)|0;d=we(J,0,136657,0);b=Z;c=(H[a+28|0]|H[a+29|0]<<8|(H[a+30|0]<<16|H[a+31|0]<<24))>>>7&2097151;d=c+d|0;b=c>>>0>d>>>0?b+1|0:b;c=d;d=we(B,0,-997805,-1);f=c+d|0;c=Z+b|0;c=d>>>0>f>>>0?c+1|0:c;b=we(K,N,-683901,-1);d=b+f|0;c=Z+c|0;c=b>>>0>d>>>0?c+1|0:c;b=we(w,0,666643,0);f=b+d|0;d=Z+c|0;d=b>>>0>f>>>0?d+1|0:d;c=we(L,0,470296,0);f=c+f|0;b=Z+d|0;b=c>>>0>f>>>0?b+1|0:b;c=we(M,O,654183,0);d=c+f|0;b=Z+b|0;f=(s&2097151)<<11|r>>>21;r=f+d|0;c=(s>>21)+(c>>>0>d>>>0?b+1|0:b)|0;c=f>>>0>r>>>0?c+1|0:c;j=c;b=c-((r>>>0<4293918720)-1|0)|0;l=b;i=r- -1048576|0;f=(b&2097151)<<11|i>>>21;c=f+h|0;b=(b>>21)+g|0;b=c>>>0>>0?b+1|0:b;v=b;s=c;c=we(c,b,-683901,-1);d=c+n|0;b=Z+e|0;f=d;e=c>>>0>d>>>0?b+1|0:b;b=we(z,I,666643,0);d=b+(q>>>4&2097151)|0;c=Z;c=b>>>0>d>>>0?c+1|0:c;b=we(A,Q,470296,0);d=b+d|0;c=Z+c|0;c=b>>>0>d>>>0?c+1|0:c;b=we(u,y,654183,0);g=b+d|0;d=Z+c|0;d=b>>>0>g>>>0?d+1|0:d;c=we(x,R,-997805,-1);g=c+g|0;b=Z+d|0;b=c>>>0>g>>>0?b+1|0:b;c=we(s,v,136657,0);k=c+g|0;b=Z+b|0;b=c>>>0>k>>>0?b+1|0:b;o=b;c=b-((k>>>0<4293918720)-1|0)|0;F=c;b=f;h=k- -1048576|0;f=(c&2097151)<<11|h>>>21;d=b+f|0;c=(c>>21)+e|0;c=d>>>0>>0?c+1|0:c;e=c-((d>>>0<4293918720)-1|0)|0;z=e;b=e>>21;g=d- -1048576|0;e=(e&2097151)<<11|g>>>21;f=e+C|0;b=b+P|0;G=f;n=e>>>0>f>>>0?b+1|0:b;f=d;d=c;c=i&-2097152;i=(m&2097151)<<11|t>>>21;e=(r-c|0)+i|0;c=(j-((c>>>0>r>>>0)+l|0)|0)+(m>>21)|0;c=e>>>0>>0?c+1|0:c;q=c;c=c-((e>>>0<4293918720)-1|0)|0;B=c;b=c>>21;t=b;l=e- -1048576|0;w=(c&2097151)<<11|l>>>21;b=we(w,b,-683901,-1);c=b+f|0;d=Z+d|0;d=b>>>0>c>>>0?d+1|0:d;b=g&-2097152;N=c-b|0;O=d-((b>>>0>c>>>0)+z|0)|0;b=we(w,t,136657,0);c=o+Z|0;d=b+k|0;c=d>>>0>>0?c+1|0:c;b=h&-2097152;I=d-b|0;z=c-((b>>>0>d>>>0)+F|0)|0;c=we(A,Q,666643,0);d=Z;b=(H[a+7|0]|H[a+8|0]<<8|(H[a+9|0]<<16|H[a+10|0]<<24))>>>7&2097151;c=b+c|0;d=b>>>0>c>>>0?d+1|0:d;b=we(u,y,470296,0);f=b+c|0;c=Z+d|0;c=b>>>0>f>>>0?c+1|0:c;b=we(x,R,654183,0);d=b+f|0;c=Z+c|0;c=b>>>0>d>>>0?c+1|0:c;b=d;d=we(s,v,-997805,-1);f=b+d|0;b=Z+c|0;i=f;f=d>>>0>f>>>0?b+1|0:b;o=we(u,y,666643,0);c=H[a+6|0];b=c>>>24|0;r=H[a+2|0]|H[a+3|0]<<8|(H[a+4|0]<<16|H[a+5|0]<<24);g=c<<8|r>>>24;d=b;b=H[a+7|0];c=b>>>16|0;b=b<<16|g;c=c|d;c=((c&3)<<30|b>>>2)&2097151;d=c+o|0;b=Z;b=c>>>0>d>>>0?b+1|0:b;c=we(x,R,470296,0);g=c+d|0;d=Z+b|0;d=c>>>0>g>>>0?d+1|0:d;c=we(s,v,654183,0);j=c+g|0;b=Z+d|0;b=c>>>0>j>>>0?b+1|0:b;o=b;b=b-((j>>>0<4293918720)-1|0)|0;m=b;d=b>>21;h=j- -1048576|0;b=(b&2097151)<<11|h>>>21;g=b+i|0;c=d+f|0;c=b>>>0>g>>>0?c+1|0:c;b=c-((g>>>0<4293918720)-1|0)|0;k=b;f=g- -1048576|0;i=(b&2097151)<<11|f>>>21;u=i+I|0;b=(b>>21)+z|0;z=u;i=i>>>0>u>>>0?b+1|0:b;b=we(w,t,-997805,-1);d=b+g|0;c=Z+c|0;c=b>>>0>d>>>0?c+1|0:c;b=f&-2097152;A=d-b|0;y=c-((b>>>0>d>>>0)+k|0)|0;c=we(w,t,654183,0);b=o+Z|0;d=c+j|0;b=d>>>0>>0?b+1|0:b;c=h&-2097152;u=d-c|0;m=b-((c>>>0>d>>>0)+m|0)|0;b=we(x,R,666643,0);d=b+(r>>>5&2097151)|0;c=Z;c=b>>>0>d>>>0?c+1|0:c;b=we(s,v,470296,0);d=b+d|0;c=Z+c|0;g=d;d=b>>>0>d>>>0?c+1|0:c;f=we(s,v,666643,0);b=H[a+2|0];c=b<<16&2031616|(H[a|0]|H[a+1|0]<<8);k=f+c|0;b=Z;b=c>>>0>k>>>0?b+1|0:b;o=b;b=b-((k>>>0<4293918720)-1|0)|0;v=b;h=k- -1048576|0;f=(b&2097151)<<11|h>>>21;j=f+g|0;b=(b>>21)+d|0;b=f>>>0>j>>>0?b+1|0:b;d=b;b=b-((j>>>0<4293918720)-1|0)|0;r=b;g=j- -1048576|0;f=(b&2097151)<<11|g>>>21;s=f+u|0;b=(b>>21)+m|0;m=s;f=f>>>0>m>>>0?b+1|0:b;b=we(w,t,470296,0);d=d+Z|0;c=b+j|0;d=c>>>0>>0?d+1|0:d;b=g&-2097152;j=c-b|0;g=d-((b>>>0>c>>>0)+r|0)|0;c=we(w,t,666643,0);d=h&-2097152;s=c+(k-d|0)|0;b=Z+(o-((d>>>0>k>>>0)+v|0)|0)|0;b=c>>>0>s>>>0?b+1|0:b;d=b>>21;b=(b&2097151)<<11|s>>>21;r=b+j|0;c=d+g|0;c=b>>>0>r>>>0?c+1|0:c;b=c>>21;c=(c&2097151)<<11|r>>>21;m=c+m|0;b=b+f|0;b=c>>>0>m>>>0?b+1|0:b;c=b>>21;b=(b&2097151)<<11|m>>>21;f=b+A|0;c=c+y|0;c=b>>>0>f>>>0?c+1|0:c;b=c>>21;c=(c&2097151)<<11|f>>>21;t=c+z|0;d=b+i|0;d=c>>>0>t>>>0?d+1|0:d;c=d>>21;d=(d&2097151)<<11|t>>>21;k=d+N|0;b=c+O|0;b=d>>>0>k>>>0?b+1|0:b;d=b>>21;b=(b&2097151)<<11|k>>>21;j=b+G|0;c=d+n|0;c=b>>>0>j>>>0?c+1|0:c;b=c>>21;c=(c&2097151)<<11|j>>>21;n=c+T|0;b=b+U|0;b=c>>>0>n>>>0?b+1|0:b;c=b>>21;b=(b&2097151)<<11|n>>>21;i=b+S|0;c=c+p|0;c=b>>>0>i>>>0?c+1|0:c;b=c>>21;c=(c&2097151)<<11|i>>>21;o=c+W|0;d=b+X|0;d=c>>>0>o>>>0?d+1|0:d;c=d>>21;d=(d&2097151)<<11|o>>>21;h=d+V|0;b=c+D|0;c=l&-2097152;l=e-c|0;b=d>>>0>h>>>0?b+1|0:b;g=l+((b&2097151)<<11|h>>>21)|0;b=(q-((c>>>0>e>>>0)+B|0)|0)+(b>>21)|0;b=g>>>0>>0?b+1|0:b;p=(b&2097151)<<11|g>>>21;c=b>>21;l=c;b=we(p,c,666643,0);c=s&2097151;s=b+c|0;b=Z;b=c>>>0>s>>>0?b+1|0:b;e=b;E[a|0]=s;E[a+1|0]=(b&255)<<24|s>>>8;b=r&2097151;c=we(p,l,470296,0)+b|0;d=Z;q=(e&2097151)<<11|s>>>21;r=q+c|0;b=(e>>21)+(b>>>0>c>>>0?d+1|0:d)|0;b=q>>>0>r>>>0?b+1|0:b;E[a+4|0]=(b&2047)<<21|r>>>11;c=b;d=r;E[a+3|0]=(b&7)<<29|d>>>3;E[a+2|0]=((e&65535)<<16|s>>>16)&31|d<<5;e=m&2097151;m=we(p,l,654183,0)+e|0;b=Z;e=e>>>0>m>>>0?b+1|0:b;r=(c&2097151)<<11|d>>>21;m=r+m|0;c=(c>>21)+e|0;c=m>>>0>>0?c+1|0:c;b=c;E[a+6|0]=(b&63)<<26|m>>>6;e=m;m=0;E[a+5|0]=m<<13|(d&1572864)>>>19|e<<2;d=f&2097151;f=we(p,l,-997805,-1)+d|0;c=Z;c=d>>>0>f>>>0?c+1|0:c;d=b;b=b>>21;m=(d&2097151)<<11|e>>>21;f=m+f|0;d=b+c|0;d=f>>>0>>0?d+1|0:d;E[a+9|0]=(d&511)<<23|f>>>9;E[a+8|0]=(d&1)<<31|f>>>1;c=0;E[a+7|0]=c<<18|(e&2080768)>>>14|f<<7;c=t&2097151;e=we(p,l,136657,0)+c|0;b=Z;b=c>>>0>e>>>0?b+1|0:b;c=d;d=c>>21;t=(c&2097151)<<11|f>>>21;e=t+e|0;c=b+d|0;c=e>>>0>>0?c+1|0:c;E[a+12|0]=(c&4095)<<20|e>>>12;d=e;E[a+11|0]=(c&15)<<28|d>>>4;e=0;E[a+10|0]=e<<15|(f&1966080)>>>17|d<<4;e=k&2097151;f=we(p,l,-683901,-1)+e|0;b=Z;b=e>>>0>f>>>0?b+1|0:b;e=c;c=c>>21;u=f;f=(e&2097151)<<11|d>>>21;e=u+f|0;c=b+c|0;c=e>>>0>>0?c+1|0:c;E[a+14|0]=(c&127)<<25|e>>>7;f=0;E[a+13|0]=f<<12|(d&1048576)>>>20|e<<1;b=c>>21;c=(c&2097151)<<11|e>>>21;f=c+(j&2097151)|0;d=c>>>0>f>>>0?b+1|0:b;E[a+17|0]=(d&1023)<<22|f>>>10;E[a+16|0]=(d&3)<<30|f>>>2;c=0;E[a+15|0]=c<<17|(e&2064384)>>>15|f<<6;b=d>>21;c=(d&2097151)<<11|f>>>21;d=c+(n&2097151)|0;b=c>>>0>d>>>0?b+1|0:b;E[a+20|0]=(b&8191)<<19|d>>>13;E[a+19|0]=(b&31)<<27|d>>>5;c=i&2097151;i=(b&2097151)<<11|d>>>21;e=c+i|0;c=b>>21;c=e>>>0>>0?c+1|0:c;i=e;E[a+21|0]=e;n=0;E[a+18|0]=n<<14|(f&1835008)>>>18|d<<3;E[a+22|0]=(c&255)<<24|e>>>8;f=(c&2097151)<<11|e>>>21;e=f+(o&2097151)|0;d=c>>21;d=e>>>0>>0?d+1|0:d;E[a+25|0]=(d&2047)<<21|e>>>11;E[a+24|0]=(d&7)<<29|e>>>3;E[a+23|0]=((c&65535)<<16|i>>>16)&31|e<<5;b=d>>21;c=(d&2097151)<<11|e>>>21;d=c+(h&2097151)|0;b=c>>>0>d>>>0?b+1|0:b;E[a+27|0]=(b&63)<<26|d>>>6;f=0;E[a+26|0]=f<<13|(e&1572864)>>>19|d<<2;c=b>>21;e=(b&2097151)<<11|d>>>21;b=e+(g&2097151)|0;c=b>>>0>>0?c+1|0:c;E[a+31|0]=(c&131071)<<15|b>>>17;E[a+30|0]=(c&511)<<23|b>>>9;E[a+29|0]=(c&1)<<31|b>>>1;e=0;E[a+28|0]=e<<18|(d&2080768)>>>14|b<<7}function Zd(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;k=Y-160|0;Y=k;l=-1;if(!(e>>>0<8|g>>>0>i>>>0)){i=G[a+4>>2];j=G[a+8>>2];a=k+80|0;Da(b,c,0,0,i,j,a,80);b=G[k+108>>2];G[k+24>>2]=G[k+104>>2];G[k+28>>2]=b;b=G[k+100>>2];G[k+16>>2]=G[k+96>>2];G[k+20>>2]=b;b=G[k+92>>2];G[k+8>>2]=G[k+88>>2];G[k+12>>2]=b;b=G[k+124>>2];G[k+40>>2]=G[k+120>>2];G[k+44>>2]=b;b=G[k+132>>2];G[k+48>>2]=G[k+128>>2];G[k+52>>2]=b;b=G[k+140>>2];G[k+56>>2]=G[k+136>>2];G[k+60>>2]=b;b=G[k+156>>2];G[k+72>>2]=G[k+152>>2];G[k+76>>2]=b;b=G[k+84>>2];G[k>>2]=G[k+80>>2];G[k+4>>2]=b;b=G[k+116>>2];G[k+32>>2]=G[k+112>>2];G[k+36>>2]=b;b=G[k+148>>2];G[k+64>>2]=G[k+144>>2];G[k+68>>2]=b;la(a,80);b=e-8|0;na(k+32|0,32,d,b,a);if(Na(b+d|0,a,8)){b=Y-272|0;Y=b;Mb(k,b+32|0);a=k- -64|0;c=H[a+4|0]|H[a+5|0]<<8|(H[a+6|0]<<16|H[a+7|0]<<24);G[b+16>>2]=H[a|0]|H[a+1|0]<<8|(H[a+2|0]<<16|H[a+3|0]<<24);G[b+20>>2]=c;c=H[a+12|0]|H[a+13|0]<<8|(H[a+14|0]<<16|H[a+15|0]<<24);G[b+24>>2]=H[a+8|0]|H[a+9|0]<<8|(H[a+10|0]<<16|H[a+11|0]<<24);G[b+28>>2]=c;if(g){c=0;while(1){d=c+f|0;a=H[d+4|0]|H[d+5|0]<<8|(H[d+6|0]<<16|H[d+7|0]<<24);G[b>>2]=H[d|0]|H[d+1|0]<<8|(H[d+2|0]<<16|H[d+3|0]<<24);G[b+4>>2]=a;a=H[d+12|0]|H[d+13|0]<<8|(H[d+14|0]<<16|H[d+15|0]<<24);G[b+8>>2]=H[d+8|0]|H[d+9|0]<<8|(H[d+10|0]<<16|H[d+11|0]<<24);G[b+12>>2]=a;a=Y-16|0;Y=a;n=H[d+15|0];o=H[d+14|0];p=H[d+13|0];q=H[d+12|0];s=H[d+11|0];r=H[d+10|0];t=H[d+9|0];u=H[d+8|0];m=H[d+6|0];v=H[d+5|0];w=H[d+4|0];x=H[d+3|0];y=H[d+2|0];z=H[d+1|0];A=H[d|0];e=G[b+256>>2];i=G[b+268>>2];l=G[b+264>>2];j=G[b+240>>2];B=H[d+7|0];d=G[b+260>>2];E[a+12|0]=j^H[((B^d)&255)+3392|0];E[a+8|0]=H[((r^l>>>8)&255)+3392|0]^j>>>8;E[a+4|0]=H[((p^i>>>16)&255)+3392|0]^j>>>16;E[a|0]=H[(A^e>>>24)+3392|0]^j>>>24;j=G[b+244>>2];E[a+13|0]=j^H[((l^s)&255)+3392|0];E[a+9|0]=H[((o^i>>>8)&255)+3392|0]^j>>>8;E[a+5|0]=H[((z^e>>>16)&255)+3392|0]^j>>>16;E[a+1|0]=H[(w^d>>>24)+3392|0]^j>>>24;j=G[b+248>>2];E[a+14|0]=j^H[((i^n)&255)+3392|0];E[a+10|0]=H[((y^e>>>8)&255)+3392|0]^j>>>8;E[a+6|0]=H[((v^d>>>16)&255)+3392|0]^j>>>16;E[a+2|0]=H[(u^l>>>24)+3392|0]^j>>>24;j=H[((e^x)&255)+3392|0];e=G[b+252>>2];E[a+15|0]=j^e;E[a+11|0]=H[((m^d>>>8)&255)+3392|0]^e>>>8;E[a+7|0]=H[((t^l>>>16)&255)+3392|0]^e>>>16;E[a+3|0]=H[(q^i>>>24)+3392|0]^e>>>24;Aa(a);e=H[a+3|0];i=H[a+6|0];l=H[a+9|0];j=H[a+12|0];n=H[a+2|0];o=H[a+5|0];p=H[a+8|0];q=H[a+15|0];s=H[a+1|0];r=H[a+4|0];t=H[a+11|0];u=H[a+14|0];m=H[a|0];v=H[a+7|0];w=H[a+10|0];d=G[b+224>>2];E[a+12|0]=d^H[H[a+13|0]+3392|0];E[a+8|0]=H[w+3392|0]^d>>>8;E[a+4|0]=H[v+3392|0]^d>>>16;E[a|0]=H[m+3392|0]^d>>>24;d=G[b+228>>2];E[a+13|0]=d^H[u+3392|0];E[a+9|0]=H[t+3392|0]^d>>>8;E[a+5|0]=H[r+3392|0]^d>>>16;E[a+1|0]=H[s+3392|0]^d>>>24;d=G[b+232>>2];E[a+14|0]=d^H[q+3392|0];E[a+10|0]=H[p+3392|0]^d>>>8;E[a+6|0]=H[o+3392|0]^d>>>16;E[a+2|0]=H[n+3392|0]^d>>>24;d=G[b+236>>2];E[a+15|0]=d^H[j+3392|0];E[a+11|0]=H[l+3392|0]^d>>>8;E[a+7|0]=H[i+3392|0]^d>>>16;E[a+3|0]=H[e+3392|0]^d>>>24;Aa(a);e=H[a+2|0];i=H[a+1|0];l=H[a|0];j=H[a+14|0];n=H[a+12|0];o=H[a+15|0];p=H[a+8|0];q=H[a+10|0];s=H[a+9|0];r=H[a+11|0];t=H[a+4|0];u=H[a+5|0];m=H[a+6|0];v=H[a+7|0];w=H[a+3|0];d=G[b+208>>2];E[a+12|0]=d^H[H[a+13|0]+3392|0];E[a+8|0]=H[q+3392|0]^d>>>8;E[a+4|0]=H[v+3392|0]^d>>>16;E[a|0]=H[l+3392|0]^d>>>24;d=G[b+212>>2];E[a+13|0]=d^H[j+3392|0];E[a+9|0]=H[r+3392|0]^d>>>8;E[a+5|0]=H[t+3392|0]^d>>>16;E[a+1|0]=H[i+3392|0]^d>>>24;d=G[b+216>>2];E[a+14|0]=d^H[o+3392|0];E[a+10|0]=H[p+3392|0]^d>>>8;E[a+6|0]=H[u+3392|0]^d>>>16;E[a+2|0]=H[e+3392|0]^d>>>24;d=G[b+220>>2];E[a+15|0]=d^H[n+3392|0];E[a+11|0]=H[s+3392|0]^d>>>8;E[a+7|0]=H[m+3392|0]^d>>>16;E[a+3|0]=H[w+3392|0]^d>>>24;Aa(a);e=H[a+3|0];i=H[a+6|0];l=H[a+9|0];j=H[a+12|0];n=H[a+2|0];o=H[a+5|0];p=H[a+8|0];q=H[a+15|0];s=H[a+1|0];r=H[a+4|0];t=H[a+11|0];u=H[a+14|0];m=H[a|0];v=H[a+7|0];w=H[a+10|0];d=G[b+192>>2];E[a+12|0]=d^H[H[a+13|0]+3392|0];E[a+8|0]=H[w+3392|0]^d>>>8;E[a+4|0]=H[v+3392|0]^d>>>16;E[a|0]=H[m+3392|0]^d>>>24;d=G[b+196>>2];E[a+13|0]=d^H[u+3392|0];E[a+9|0]=H[t+3392|0]^d>>>8;E[a+5|0]=H[r+3392|0]^d>>>16;E[a+1|0]=H[s+3392|0]^d>>>24;d=G[b+200>>2];E[a+14|0]=d^H[q+3392|0];E[a+10|0]=H[p+3392|0]^d>>>8;E[a+6|0]=H[o+3392|0]^d>>>16;E[a+2|0]=H[n+3392|0]^d>>>24;d=G[b+204>>2];E[a+15|0]=d^H[j+3392|0];E[a+11|0]=H[l+3392|0]^d>>>8;E[a+7|0]=H[i+3392|0]^d>>>16;E[a+3|0]=H[e+3392|0]^d>>>24;Aa(a);e=H[a+2|0];i=H[a+1|0];l=H[a|0];j=H[a+14|0];n=H[a+12|0];o=H[a+15|0];p=H[a+8|0];q=H[a+10|0];s=H[a+9|0];r=H[a+11|0];t=H[a+4|0];u=H[a+5|0];m=H[a+6|0];v=H[a+7|0];w=H[a+3|0];d=G[b+176>>2];E[a+12|0]=d^H[H[a+13|0]+3392|0];E[a+8|0]=H[q+3392|0]^d>>>8;E[a+4|0]=H[v+3392|0]^d>>>16;E[a|0]=H[l+3392|0]^d>>>24;d=G[b+180>>2];E[a+13|0]=d^H[j+3392|0];E[a+9|0]=H[r+3392|0]^d>>>8;E[a+5|0]=H[t+3392|0]^d>>>16;E[a+1|0]=H[i+3392|0]^d>>>24;d=G[b+184>>2];E[a+14|0]=d^H[o+3392|0];E[a+10|0]=H[p+3392|0]^d>>>8;E[a+6|0]=H[u+3392|0]^d>>>16;E[a+2|0]=H[e+3392|0]^d>>>24;d=G[b+188>>2];E[a+15|0]=d^H[n+3392|0];E[a+11|0]=H[s+3392|0]^d>>>8;E[a+7|0]=H[m+3392|0]^d>>>16;E[a+3|0]=H[w+3392|0]^d>>>24;Aa(a);e=H[a+3|0];i=H[a+6|0];l=H[a+9|0];j=H[a+12|0];n=H[a+2|0];o=H[a+5|0];p=H[a+8|0];q=H[a+15|0];s=H[a+1|0];r=H[a+4|0];t=H[a+11|0];u=H[a+14|0];m=H[a|0];v=H[a+7|0];w=H[a+10|0];d=G[b+160>>2];E[a+12|0]=d^H[H[a+13|0]+3392|0];E[a+8|0]=H[w+3392|0]^d>>>8;E[a+4|0]=H[v+3392|0]^d>>>16;E[a|0]=H[m+3392|0]^d>>>24;d=G[b+164>>2];E[a+13|0]=d^H[u+3392|0];E[a+9|0]=H[t+3392|0]^d>>>8;E[a+5|0]=H[r+3392|0]^d>>>16;E[a+1|0]=H[s+3392|0]^d>>>24;d=G[b+168>>2];E[a+14|0]=d^H[q+3392|0];E[a+10|0]=H[p+3392|0]^d>>>8;E[a+6|0]=H[o+3392|0]^d>>>16;E[a+2|0]=H[n+3392|0]^d>>>24;d=G[b+172>>2];E[a+15|0]=d^H[j+3392|0];E[a+11|0]=H[l+3392|0]^d>>>8;E[a+7|0]=H[i+3392|0]^d>>>16;E[a+3|0]=H[e+3392|0]^d>>>24;Aa(a);e=H[a+3|0];i=H[a+6|0];l=H[a+9|0];j=H[a+12|0];n=H[a+2|0];o=H[a+5|0];p=H[a+8|0];q=H[a+15|0];s=H[a+1|0];r=H[a+4|0];t=H[a+11|0];u=H[a+14|0];m=H[a|0];v=H[a+7|0];w=H[a+10|0];d=G[b+144>>2];E[a+12|0]=d^H[H[a+13|0]+3392|0];E[a+8|0]=H[w+3392|0]^d>>>8;E[a+4|0]=H[v+3392|0]^d>>>16;E[a|0]=H[m+3392|0]^d>>>24;d=G[b+148>>2];E[a+13|0]=d^H[u+3392|0];E[a+9|0]=H[t+3392|0]^d>>>8;E[a+5|0]=H[r+3392|0]^d>>>16;E[a+1|0]=H[s+3392|0]^d>>>24;d=G[b+152>>2];E[a+14|0]=d^H[q+3392|0];E[a+10|0]=H[p+3392|0]^d>>>8;E[a+6|0]=H[o+3392|0]^d>>>16;E[a+2|0]=H[n+3392|0]^d>>>24;d=G[b+156>>2];E[a+15|0]=d^H[j+3392|0];E[a+11|0]=H[l+3392|0]^d>>>8;E[a+7|0]=H[i+3392|0]^d>>>16;E[a+3|0]=H[e+3392|0]^d>>>24;Aa(a);e=H[a+3|0];i=H[a+6|0];l=H[a+9|0];j=H[a+12|0];n=H[a+2|0];o=H[a+5|0];p=H[a+8|0];q=H[a+15|0];s=H[a+1|0];r=H[a+4|0];t=H[a+11|0];u=H[a+14|0];m=H[a|0];v=H[a+7|0];w=H[a+10|0];d=G[b+128>>2];E[a+12|0]=d^H[H[a+13|0]+3392|0];E[a+8|0]=H[w+3392|0]^d>>>8;E[a+4|0]=H[v+3392|0]^d>>>16;E[a|0]=H[m+3392|0]^d>>>24;d=G[b+132>>2];E[a+13|0]=d^H[u+3392|0];E[a+9|0]=H[t+3392|0]^d>>>8;E[a+5|0]=H[r+3392|0]^d>>>16;E[a+1|0]=H[s+3392|0]^d>>>24;d=G[b+136>>2];E[a+14|0]=d^H[q+3392|0];E[a+10|0]=H[p+3392|0]^d>>>8;E[a+6|0]=H[o+3392|0]^d>>>16;E[a+2|0]=H[n+3392|0]^d>>>24;d=G[b+140>>2];E[a+15|0]=d^H[j+3392|0];E[a+11|0]=H[l+3392|0]^d>>>8;E[a+7|0]=H[i+3392|0]^d>>>16;E[a+3|0]=H[e+3392|0]^d>>>24;Aa(a);e=H[a+3|0];i=H[a+6|0];l=H[a+9|0];j=H[a+12|0];n=H[a+2|0];o=H[a+5|0];p=H[a+8|0];q=H[a+15|0];s=H[a+1|0];r=H[a+4|0];t=H[a+11|0];u=H[a+14|0];m=H[a|0];v=H[a+7|0];w=H[a+10|0];d=G[b+112>>2];E[a+12|0]=d^H[H[a+13|0]+3392|0];E[a+8|0]=H[w+3392|0]^d>>>8;E[a+4|0]=H[v+3392|0]^d>>>16;E[a|0]=H[m+3392|0]^d>>>24;d=G[b+116>>2];E[a+13|0]=d^H[u+3392|0];E[a+9|0]=H[t+3392|0]^d>>>8;E[a+5|0]=H[r+3392|0]^d>>>16;E[a+1|0]=H[s+3392|0]^d>>>24;d=G[b+120>>2];E[a+14|0]=d^H[q+3392|0];E[a+10|0]=H[p+3392|0]^d>>>8;E[a+6|0]=H[o+3392|0]^d>>>16;E[a+2|0]=H[n+3392|0]^d>>>24;d=G[b+124>>2];E[a+15|0]=d^H[j+3392|0];E[a+11|0]=H[l+3392|0]^d>>>8;E[a+7|0]=H[i+3392|0]^d>>>16;E[a+3|0]=H[e+3392|0]^d>>>24;Aa(a);e=H[a+3|0];i=H[a+6|0];l=H[a+9|0];j=H[a+12|0];n=H[a+2|0];o=H[a+5|0];p=H[a+8|0];q=H[a+15|0];s=H[a+1|0];r=H[a+4|0];t=H[a+11|0];u=H[a+14|0];m=H[a|0];v=H[a+7|0];w=H[a+10|0];d=G[b+96>>2];E[a+12|0]=d^H[H[a+13|0]+3392|0];E[a+8|0]=H[w+3392|0]^d>>>8;E[a+4|0]=H[v+3392|0]^d>>>16;E[a|0]=H[m+3392|0]^d>>>24;d=G[b+100>>2];E[a+13|0]=d^H[u+3392|0];E[a+9|0]=H[t+3392|0]^d>>>8;E[a+5|0]=H[r+3392|0]^d>>>16;E[a+1|0]=H[s+3392|0]^d>>>24;d=G[b+104>>2];E[a+14|0]=d^H[q+3392|0];E[a+10|0]=H[p+3392|0]^d>>>8;E[a+6|0]=H[o+3392|0]^d>>>16;E[a+2|0]=H[n+3392|0]^d>>>24;d=G[b+108>>2];E[a+15|0]=d^H[j+3392|0];E[a+11|0]=H[l+3392|0]^d>>>8;E[a+7|0]=H[i+3392|0]^d>>>16;E[a+3|0]=H[e+3392|0]^d>>>24;Aa(a);e=H[a+7|0];E[a+7|0]=H[H[a+6|0]+3392|0];i=H[H[a+2|0]+3392|0];E[a+2|0]=i;l=H[H[a+1|0]+3392|0];E[a+1|0]=l;j=H[a+9|0];n=H[a+12|0];o=H[a+5|0];p=H[a+8|0];q=H[a+15|0];s=H[a+4|0];r=H[a+11|0];t=H[a+14|0];u=H[a|0];m=H[a+10|0];d=H[a+13|0];E[a+3|0]=H[H[a+3|0]+3392|0];v=H[d+3392|0];d=G[b+80>>2];E[a+12|0]=v^d;E[a+8|0]=H[m+3392|0]^d>>>8;E[a+4|0]=H[e+3392|0]^d>>>16;E[a|0]=H[u+3392|0]^d>>>24;d=G[b+84>>2];E[a+13|0]=d^H[t+3392|0];E[a+1|0]=l^d>>>24;E[a+9|0]=H[r+3392|0]^d>>>8;E[a+5|0]=H[s+3392|0]^d>>>16;d=G[b+88>>2];E[a+14|0]=d^H[q+3392|0];E[a+2|0]=i^d>>>24;E[a+10|0]=H[p+3392|0]^d>>>8;E[a+6|0]=H[o+3392|0]^d>>>16;d=G[b+92>>2];E[a+3|0]=H[a+3|0]^d>>>24;e=H[a+7|0];E[a+15|0]=d^H[n+3392|0];E[a+11|0]=H[j+3392|0]^d>>>8;E[a+7|0]=e^d>>>16;Aa(a);e=H[a+15|0];i=H[a+12|0];E[a+15|0]=i;l=H[H[a+2|0]+3392|0];E[a+2|0]=l;j=H[H[a+1|0]+3392|0];E[a+1|0]=j;n=H[H[a|0]+3392|0];E[a|0]=n;o=H[a+9|0];p=H[a+8|0];q=H[a+4|0];s=H[a+11|0];r=H[a+14|0];t=H[a+7|0];u=H[a+10|0];d=H[a+13|0];m=H[a+5|0];v=H[a+3|0];E[a+7|0]=H[H[a+6|0]+3392|0];E[a+6|0]=H[m+3392|0];E[a+3|0]=H[v+3392|0];m=H[d+3392|0];d=G[b+64>>2];E[a+12|0]=m^d;E[a|0]=n^d>>>24;E[a+8|0]=H[u+3392|0]^d>>>8;E[a+4|0]=H[t+3392|0]^d>>>16;d=G[b+68>>2];E[a+13|0]=d^H[r+3392|0];E[a+1|0]=j^d>>>24;E[a+9|0]=H[s+3392|0]^d>>>8;E[a+5|0]=H[q+3392|0]^d>>>16;d=G[b+72>>2];E[a+2|0]=l^d>>>24;l=H[a+6|0];E[a+14|0]=d^H[e+3392|0];E[a+10|0]=H[p+3392|0]^d>>>8;E[a+6|0]=l^d>>>16;d=G[b+76>>2];E[a+3|0]=H[a+3|0]^d>>>24;e=H[a+7|0];E[a+15|0]=d^H[i+3392|0];E[a+11|0]=H[o+3392|0]^d>>>8;E[a+7|0]=e^d>>>16;Aa(a);e=H[a+15|0];i=H[a+12|0];E[a+15|0]=i;l=H[H[a+2|0]+3392|0];E[a+2|0]=l;j=H[H[a+1|0]+3392|0];E[a+1|0]=j;n=H[H[a|0]+3392|0];E[a|0]=n;o=H[a+9|0];p=H[a+8|0];q=H[a+4|0];s=H[a+11|0];r=H[a+14|0];t=H[a+7|0];u=H[a+10|0];d=H[a+13|0];m=H[a+5|0];v=H[a+3|0];E[a+7|0]=H[H[a+6|0]+3392|0];E[a+6|0]=H[m+3392|0];E[a+3|0]=H[v+3392|0];m=H[d+3392|0];d=G[b+48>>2];E[a+12|0]=m^d;E[a|0]=n^d>>>24;E[a+8|0]=H[u+3392|0]^d>>>8;E[a+4|0]=H[t+3392|0]^d>>>16;d=G[b+52>>2];E[a+13|0]=d^H[r+3392|0];E[a+1|0]=j^d>>>24;E[a+9|0]=H[s+3392|0]^d>>>8;E[a+5|0]=H[q+3392|0]^d>>>16;d=G[b+56>>2];E[a+2|0]=l^d>>>24;l=H[a+6|0];E[a+14|0]=d^H[e+3392|0];E[a+10|0]=H[p+3392|0]^d>>>8;E[a+6|0]=l^d>>>16;d=G[b+60>>2];E[a+3|0]=H[a+3|0]^d>>>24;e=H[a+7|0];E[a+15|0]=d^H[i+3392|0];E[a+11|0]=H[o+3392|0]^d>>>8;E[a+7|0]=e^d>>>16;Aa(a);n=H[a+15|0];j=H[a+12|0];E[a+15|0]=j;o=H[H[a+1|0]+3392|0];E[a+1|0]=o;p=H[H[a+2|0]+3392|0];E[a+2|0]=p;q=H[H[a+3|0]+3392|0];E[a+3|0]=q;s=H[a+7|0];r=H[H[a+6|0]+3392|0];E[a+7|0]=r;e=G[b+32>>2];i=G[b+36>>2];l=G[b+40>>2];t=H[a|0];u=H[a+10|0];m=H[a+4|0];v=H[a+11|0];w=H[a+5|0];x=H[a+8|0];y=H[a+9|0];z=H[a+13|0];A=H[a+14|0];d=c+h|0;B=H[j+3392|0];j=G[b+44>>2];E[d+15|0]=B^j;E[d+11|0]=l^H[n+3392|0];E[d+7|0]=i^H[A+3392|0];E[d+3|0]=e^H[z+3392|0];E[d+14|0]=H[y+3392|0]^j>>>8;E[d+13|0]=r^j>>>16;E[d+12|0]=q^j>>>24;E[d+10|0]=H[x+3392|0]^l>>>8;E[d+9|0]=H[w+3392|0]^l>>>16;E[d+8|0]=p^l>>>24;E[d+6|0]=H[v+3392|0]^i>>>8;E[d+5|0]=H[m+3392|0]^i>>>16;E[d+4|0]=o^i>>>24;E[d+2|0]=H[u+3392|0]^e>>>8;E[d+1|0]=H[s+3392|0]^e>>>16;E[d|0]=H[t+3392|0]^e>>>24;Y=a+16|0;E[d|0]=H[d|0]^H[b+16|0];E[d+1|0]=H[d+1|0]^H[b+17|0];E[d+2|0]=H[d+2|0]^H[b+18|0];E[d+3|0]=H[d+3|0]^H[b+19|0];E[d+4|0]=H[d+4|0]^H[b+20|0];E[d+5|0]=H[d+5|0]^H[b+21|0];E[d+6|0]=H[d+6|0]^H[b+22|0];E[d+7|0]=H[d+7|0]^H[b+23|0];E[d+8|0]=H[d+8|0]^H[b+24|0];E[d+9|0]=H[d+9|0]^H[b+25|0];E[d+10|0]=H[d+10|0]^H[b+26|0];E[d+11|0]=H[d+11|0]^H[b+27|0];E[d+12|0]=H[d+12|0]^H[b+28|0];E[d+13|0]=H[d+13|0]^H[b+29|0];E[d+14|0]=H[d+14|0]^H[b+30|0];E[d+15|0]=H[d+15|0]^H[b+31|0];a=G[b+12>>2];G[b+24>>2]=G[b+8>>2];G[b+28>>2]=a;a=G[b+4>>2];G[b+16>>2]=G[b>>2];G[b+20>>2]=a;c=c+16|0;if(g>>>0>c>>>0){continue}break}}la(b+32|0,240);la(b+16|0,16);la(b,16);Y=b+272|0;a=H[(g+h|0)-1|0];l=a>>>0>g>>>0?-1:g-a|0}la(k,80)}Y=k+160|0;return l|0}function Nb(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;d=Y-16|0;Y=d;h=H[a+14|0];i=H[a+6|0];k=H[a+5|0];s=H[a+9|0];q=H[a+13|0];m=H[a+1|0];n=H[a+10|0];j=H[a+2|0];o=H[a+3|0];l=H[a+7|0];p=H[a+15|0];r=H[a+11|0];t=H[a|0];f=G[c>>2];u=H[a+4|0];e=G[c+4>>2];v=H[a+8|0];g=G[c+8>>2];w=H[a+12|0];a=G[c+12>>2];E[d+3|0]=H[(w^a>>>24)+3072|0];E[d+2|0]=H[(v^g>>>24)+3072|0];E[d+1|0]=H[(u^e>>>24)+3072|0];E[d|0]=H[(t^f>>>24)+3072|0];E[d+15|0]=H[((g^r)&255)+3072|0];E[d+12|0]=H[((a^p)&255)+3072|0];E[d+14|0]=H[((e^l)&255)+3072|0];E[d+13|0]=H[((f^o)&255)+3072|0];E[d+10|0]=H[(j^f>>>8&255)+3072|0];E[d+8|0]=H[(n^g>>>8&255)+3072|0];E[d+7|0]=H[(m^f>>>16&255)+3072|0];E[d+6|0]=H[(q^a>>>16&255)+3072|0];E[d+5|0]=H[(s^g>>>16&255)+3072|0];E[d+4|0]=H[(k^e>>>16&255)+3072|0];E[d+11|0]=H[(i^e>>>8&255)+3072|0];E[d+9|0]=H[(h^a>>>8&255)+3072|0];Ba(d);a=G[c+16>>2];f=G[c+20>>2];e=G[c+24>>2];h=H[d+11|0];i=H[d+9|0];k=H[d+5|0];s=H[d+6|0];q=H[d+7|0];m=H[d+4|0];n=H[d+10|0];j=H[d+8|0];o=H[d+12|0];l=H[d+13|0];p=H[d+15|0];r=H[d+14|0];t=H[d|0];u=H[d+1|0];v=H[d+2|0];g=G[c+28>>2];E[d+3|0]=H[(H[d+3|0]^g>>>24)+3072|0];E[d+2|0]=H[(v^e>>>24)+3072|0];E[d+1|0]=H[(u^f>>>24)+3072|0];E[d|0]=H[(t^a>>>24)+3072|0];E[d+15|0]=H[((e^r)&255)+3072|0];E[d+12|0]=H[((g^p)&255)+3072|0];E[d+14|0]=H[((f^l)&255)+3072|0];E[d+13|0]=H[((a^o)&255)+3072|0];E[d+10|0]=H[(j^a>>>8&255)+3072|0];E[d+8|0]=H[(n^e>>>8&255)+3072|0];E[d+7|0]=H[(m^a>>>16&255)+3072|0];E[d+6|0]=H[(q^g>>>16&255)+3072|0];E[d+5|0]=H[(s^e>>>16&255)+3072|0];E[d+4|0]=H[(k^f>>>16&255)+3072|0];E[d+11|0]=H[(i^f>>>8&255)+3072|0];E[d+9|0]=H[(h^g>>>8&255)+3072|0];Ba(d);a=G[c+32>>2];f=G[c+36>>2];e=G[c+40>>2];h=H[d+11|0];i=H[d+9|0];k=H[d+5|0];s=H[d+6|0];q=H[d+7|0];m=H[d+4|0];n=H[d+10|0];j=H[d+8|0];o=H[d+12|0];l=H[d+13|0];p=H[d+15|0];r=H[d+14|0];t=H[d|0];u=H[d+1|0];v=H[d+2|0];g=G[c+44>>2];E[d+3|0]=H[(H[d+3|0]^g>>>24)+3072|0];E[d+2|0]=H[(v^e>>>24)+3072|0];E[d+1|0]=H[(u^f>>>24)+3072|0];E[d|0]=H[(t^a>>>24)+3072|0];E[d+15|0]=H[((e^r)&255)+3072|0];E[d+12|0]=H[((g^p)&255)+3072|0];E[d+14|0]=H[((f^l)&255)+3072|0];E[d+13|0]=H[((a^o)&255)+3072|0];E[d+10|0]=H[(j^a>>>8&255)+3072|0];E[d+8|0]=H[(n^e>>>8&255)+3072|0];E[d+7|0]=H[(m^a>>>16&255)+3072|0];E[d+6|0]=H[(q^g>>>16&255)+3072|0];E[d+5|0]=H[(s^e>>>16&255)+3072|0];E[d+4|0]=H[(k^f>>>16&255)+3072|0];E[d+11|0]=H[(i^f>>>8&255)+3072|0];E[d+9|0]=H[(h^g>>>8&255)+3072|0];Ba(d);a=G[c+48>>2];f=G[c+52>>2];e=G[c+56>>2];h=H[d+11|0];i=H[d+9|0];k=H[d+5|0];s=H[d+6|0];q=H[d+7|0];m=H[d+4|0];n=H[d+10|0];j=H[d+8|0];o=H[d+12|0];l=H[d+13|0];p=H[d+15|0];r=H[d+14|0];t=H[d|0];u=H[d+1|0];v=H[d+2|0];g=G[c+60>>2];E[d+3|0]=H[(H[d+3|0]^g>>>24)+3072|0];E[d+2|0]=H[(v^e>>>24)+3072|0];E[d+1|0]=H[(u^f>>>24)+3072|0];E[d|0]=H[(t^a>>>24)+3072|0];E[d+15|0]=H[((e^r)&255)+3072|0];E[d+12|0]=H[((g^p)&255)+3072|0];E[d+14|0]=H[((f^l)&255)+3072|0];E[d+13|0]=H[((a^o)&255)+3072|0];E[d+10|0]=H[(j^a>>>8&255)+3072|0];E[d+8|0]=H[(n^e>>>8&255)+3072|0];E[d+7|0]=H[(m^a>>>16&255)+3072|0];E[d+6|0]=H[(q^g>>>16&255)+3072|0];E[d+5|0]=H[(s^e>>>16&255)+3072|0];E[d+4|0]=H[(k^f>>>16&255)+3072|0];E[d+11|0]=H[(i^f>>>8&255)+3072|0];E[d+9|0]=H[(h^g>>>8&255)+3072|0];Ba(d);a=G[c+64>>2];f=G[c+68>>2];e=G[c+72>>2];h=H[d+11|0];i=H[d+9|0];k=H[d+5|0];s=H[d+6|0];q=H[d+7|0];m=H[d+4|0];n=H[d+10|0];j=H[d+8|0];o=H[d+12|0];l=H[d+13|0];p=H[d+15|0];r=H[d+14|0];t=H[d|0];u=H[d+1|0];v=H[d+2|0];g=G[c+76>>2];E[d+3|0]=H[(H[d+3|0]^g>>>24)+3072|0];E[d+2|0]=H[(v^e>>>24)+3072|0];E[d+1|0]=H[(u^f>>>24)+3072|0];E[d|0]=H[(t^a>>>24)+3072|0];E[d+15|0]=H[((e^r)&255)+3072|0];E[d+12|0]=H[((g^p)&255)+3072|0];E[d+14|0]=H[((f^l)&255)+3072|0];E[d+13|0]=H[((a^o)&255)+3072|0];E[d+10|0]=H[(j^a>>>8&255)+3072|0];E[d+8|0]=H[(n^e>>>8&255)+3072|0];E[d+7|0]=H[(m^a>>>16&255)+3072|0];E[d+6|0]=H[(q^g>>>16&255)+3072|0];E[d+5|0]=H[(s^e>>>16&255)+3072|0];E[d+4|0]=H[(k^f>>>16&255)+3072|0];E[d+11|0]=H[(i^f>>>8&255)+3072|0];E[d+9|0]=H[(h^g>>>8&255)+3072|0];Ba(d);a=G[c+80>>2];f=G[c+84>>2];e=G[c+88>>2];h=H[d+11|0];i=H[d+9|0];k=H[d+5|0];s=H[d+6|0];q=H[d+7|0];m=H[d+4|0];n=H[d+10|0];j=H[d+8|0];o=H[d+12|0];l=H[d+13|0];p=H[d+15|0];r=H[d+14|0];t=H[d|0];u=H[d+1|0];v=H[d+2|0];g=G[c+92>>2];E[d+3|0]=H[(H[d+3|0]^g>>>24)+3072|0];E[d+2|0]=H[(v^e>>>24)+3072|0];E[d+1|0]=H[(u^f>>>24)+3072|0];E[d|0]=H[(t^a>>>24)+3072|0];E[d+15|0]=H[((e^r)&255)+3072|0];E[d+12|0]=H[((g^p)&255)+3072|0];E[d+14|0]=H[((f^l)&255)+3072|0];E[d+13|0]=H[((a^o)&255)+3072|0];E[d+10|0]=H[(j^a>>>8&255)+3072|0];E[d+8|0]=H[(n^e>>>8&255)+3072|0];E[d+7|0]=H[(m^a>>>16&255)+3072|0];E[d+6|0]=H[(q^g>>>16&255)+3072|0];E[d+5|0]=H[(s^e>>>16&255)+3072|0];E[d+4|0]=H[(k^f>>>16&255)+3072|0];E[d+11|0]=H[(i^f>>>8&255)+3072|0];E[d+9|0]=H[(h^g>>>8&255)+3072|0];Ba(d);a=G[c+96>>2];f=G[c+100>>2];e=G[c+104>>2];h=H[d+11|0];i=H[d+9|0];k=H[d+5|0];s=H[d+6|0];q=H[d+7|0];m=H[d+4|0];n=H[d+10|0];j=H[d+8|0];o=H[d+12|0];l=H[d+13|0];p=H[d+15|0];r=H[d+14|0];t=H[d|0];u=H[d+1|0];v=H[d+2|0];g=G[c+108>>2];E[d+3|0]=H[(H[d+3|0]^g>>>24)+3072|0];E[d+2|0]=H[(v^e>>>24)+3072|0];E[d+1|0]=H[(u^f>>>24)+3072|0];E[d|0]=H[(t^a>>>24)+3072|0];E[d+15|0]=H[((e^r)&255)+3072|0];E[d+12|0]=H[((g^p)&255)+3072|0];E[d+14|0]=H[((f^l)&255)+3072|0];E[d+13|0]=H[((a^o)&255)+3072|0];E[d+10|0]=H[(j^a>>>8&255)+3072|0];E[d+8|0]=H[(n^e>>>8&255)+3072|0];E[d+7|0]=H[(m^a>>>16&255)+3072|0];E[d+6|0]=H[(q^g>>>16&255)+3072|0];E[d+5|0]=H[(s^e>>>16&255)+3072|0];E[d+4|0]=H[(k^f>>>16&255)+3072|0];E[d+11|0]=H[(i^f>>>8&255)+3072|0];E[d+9|0]=H[(h^g>>>8&255)+3072|0];Ba(d);a=G[c+112>>2];f=G[c+116>>2];e=G[c+120>>2];h=H[d+11|0];i=H[d+9|0];k=H[d+5|0];s=H[d+6|0];q=H[d+7|0];m=H[d+4|0];n=H[d+10|0];j=H[d+8|0];o=H[d+12|0];l=H[d+13|0];p=H[d+15|0];r=H[d+14|0];t=H[d|0];u=H[d+1|0];v=H[d+2|0];g=G[c+124>>2];E[d+3|0]=H[(H[d+3|0]^g>>>24)+3072|0];E[d+2|0]=H[(v^e>>>24)+3072|0];E[d+1|0]=H[(u^f>>>24)+3072|0];E[d|0]=H[(t^a>>>24)+3072|0];E[d+15|0]=H[((e^r)&255)+3072|0];E[d+12|0]=H[((g^p)&255)+3072|0];E[d+14|0]=H[((f^l)&255)+3072|0];E[d+13|0]=H[((a^o)&255)+3072|0];E[d+10|0]=H[(j^a>>>8&255)+3072|0];E[d+8|0]=H[(n^e>>>8&255)+3072|0];E[d+7|0]=H[(m^a>>>16&255)+3072|0];E[d+6|0]=H[(q^g>>>16&255)+3072|0];E[d+5|0]=H[(s^e>>>16&255)+3072|0];E[d+4|0]=H[(k^f>>>16&255)+3072|0];E[d+11|0]=H[(i^f>>>8&255)+3072|0];E[d+9|0]=H[(h^g>>>8&255)+3072|0];Ba(d);a=G[c+128>>2];f=G[c+132>>2];e=G[c+136>>2];h=H[d+11|0];i=H[d+9|0];k=H[d+5|0];s=H[d+6|0];q=H[d+7|0];m=H[d+4|0];n=H[d+10|0];j=H[d+8|0];o=H[d+12|0];l=H[d+13|0];p=H[d+15|0];r=H[d+14|0];t=H[d|0];u=H[d+1|0];v=H[d+2|0];g=G[c+140>>2];E[d+3|0]=H[(H[d+3|0]^g>>>24)+3072|0];E[d+2|0]=H[(v^e>>>24)+3072|0];E[d+1|0]=H[(u^f>>>24)+3072|0];E[d|0]=H[(t^a>>>24)+3072|0];E[d+15|0]=H[((e^r)&255)+3072|0];E[d+12|0]=H[((g^p)&255)+3072|0];E[d+14|0]=H[((f^l)&255)+3072|0];E[d+13|0]=H[((a^o)&255)+3072|0];E[d+10|0]=H[(j^a>>>8&255)+3072|0];E[d+8|0]=H[(n^e>>>8&255)+3072|0];E[d+7|0]=H[(m^a>>>16&255)+3072|0];E[d+6|0]=H[(q^g>>>16&255)+3072|0];E[d+5|0]=H[(s^e>>>16&255)+3072|0];E[d+4|0]=H[(k^f>>>16&255)+3072|0];E[d+11|0]=H[(i^f>>>8&255)+3072|0];E[d+9|0]=H[(h^g>>>8&255)+3072|0];Ba(d);a=G[c+156>>2];h=a^H[d+15|0];f=G[c+152>>2];i=f^H[d+14|0];e=G[c+148>>2];k=e^H[d+13|0];g=G[c+144>>2];s=g^H[d+12|0];q=H[d+11|0]^a>>>8;m=H[d+7|0]^a>>>16;a=H[d+3|0]^a>>>24;n=H[d+10|0]^f>>>8;j=H[d+6|0]^f>>>16;f=H[d+2|0]^f>>>24;o=H[d+9|0]^e>>>8;l=H[d+5|0]^e>>>16;e=H[d+1|0]^e>>>24;p=H[d+8|0]^g>>>8;r=H[d+4|0]^g>>>16;E[d|0]=H[(H[d|0]^g>>>24)+3072|0];E[d+10|0]=H[(p&255)+3072|0];E[d+8|0]=H[(n&255)+3072|0];E[d+7|0]=H[(r&255)+3072|0];E[d+6|0]=H[(m&255)+3072|0];E[d+5|0]=H[(j&255)+3072|0];E[d+4|0]=H[(l&255)+3072|0];E[d+3|0]=H[a+3072|0];E[d+2|0]=H[f+3072|0];E[d+1|0]=H[e+3072|0];E[d+15|0]=H[(i&255)+3072|0];E[d+12|0]=H[(h&255)+3072|0];E[d+11|0]=H[(o&255)+3072|0];E[d+9|0]=H[(q&255)+3072|0];E[d+14|0]=H[(k&255)+3072|0];E[d+13|0]=H[(s&255)+3072|0];Ba(d);f=G[c+160>>2];E[d+12|0]=f^H[d+12|0];E[d+8|0]=H[d+8|0]^f>>>8;e=G[c+164>>2];h=e^H[d+13|0];E[d+13|0]=h;i=H[d+9|0]^e>>>8;E[d+9|0]=i;g=G[c+168>>2];k=g^H[d+14|0];E[d+14|0]=k;a=G[c+172>>2];E[d+1|0]=H[(H[d+1|0]^e>>>24)+3072|0];E[d|0]=H[(H[d|0]^f>>>24)+3072|0];E[d+2|0]=H[(H[d+2|0]^g>>>24)+3072|0];s=H[d+5|0];q=H[d+6|0];m=H[d+4|0];n=H[d+10|0];E[d+3|0]=H[(H[d+3|0]^a>>>24)+3072|0];E[d+6|0]=H[(H[d+7|0]^a>>>16&255)+3072|0];j=H[d+11|0];o=H[d+15|0];l=H[d+12|0];p=H[d+8|0];E[d+8|0]=H[(n^g>>>8&255)+3072|0];E[d+7|0]=H[(m^f>>>16&255)+3072|0];E[d+5|0]=H[(q^g>>>16&255)+3072|0];E[d+4|0]=H[(s^e>>>16&255)+3072|0];E[d+10|0]=H[p+3072|0];E[d+15|0]=H[(k&255)+3072|0];E[d+12|0]=H[((a^o)&255)+3072|0];E[d+11|0]=H[(i&255)+3072|0];E[d+9|0]=H[(j^a>>>8&255)+3072|0];E[d+14|0]=H[(h&255)+3072|0];E[d+13|0]=H[l+3072|0];Ba(d);a=G[c+176>>2];f=G[c+180>>2];e=G[c+184>>2];h=H[d+4|0];i=H[d+5|0];k=H[d+6|0];s=H[d+7|0];q=H[d+8|0];m=H[d+9|0];n=H[d+10|0];j=H[d+11|0];o=H[d+12|0];l=H[d+13|0];p=H[d+14|0];r=H[d+15|0];t=H[d|0];u=H[d+1|0];v=H[d+2|0];g=G[c+188>>2];E[d+3|0]=H[(H[d+3|0]^g>>>24)+3072|0];E[d+2|0]=H[(v^e>>>24)+3072|0];E[d+1|0]=H[(u^f>>>24)+3072|0];E[d|0]=H[(t^a>>>24)+3072|0];r=H[((g^r)&255)+3072|0];p=H[((e^p)&255)+3072|0];l=H[((f^l)&255)+3072|0];o=H[((a^o)&255)+3072|0];j=H[(g>>>8&255^j)+3072|0];n=H[(e>>>8&255^n)+3072|0];m=H[(f>>>8&255^m)+3072|0];g=H[(g>>>16&255^s)+3072|0];e=H[(e>>>16&255^k)+3072|0];f=H[(f>>>16&255^i)+3072|0];h=H[(a>>>16&255^h)+3072|0];E[d+10|0]=H[(a>>>8&255^q)+3072|0];E[d+8|0]=n;E[d+7|0]=h;E[d+6|0]=g;E[d+5|0]=e;E[d+4|0]=f;E[d+15|0]=p;E[d+12|0]=r;E[d+11|0]=m;E[d+9|0]=j;E[d+14|0]=l;E[d+13|0]=o;Ba(d);f=G[c+192>>2];E[d+12|0]=f^H[d+12|0];E[d+8|0]=H[d+8|0]^f>>>8;e=G[c+196>>2];h=e^H[d+13|0];E[d+13|0]=h;i=H[d+9|0]^e>>>8;E[d+9|0]=i;g=G[c+200>>2];k=g^H[d+14|0];E[d+14|0]=k;a=G[c+204>>2];E[d+1|0]=H[(H[d+1|0]^e>>>24)+3072|0];E[d|0]=H[(H[d|0]^f>>>24)+3072|0];E[d+2|0]=H[(H[d+2|0]^g>>>24)+3072|0];s=H[d+5|0];q=H[d+6|0];m=H[d+4|0];n=H[d+10|0];E[d+3|0]=H[(H[d+3|0]^a>>>24)+3072|0];j=H[d+11|0];o=H[d+15|0];l=H[d+7|0];p=H[d+12|0];r=H[d+8|0];E[d+8|0]=H[(n^g>>>8&255)+3072|0];E[d+7|0]=H[(m^f>>>16&255)+3072|0];E[d+6|0]=H[(l^a>>>16&255)+3072|0];E[d+5|0]=H[(q^g>>>16&255)+3072|0];E[d+4|0]=H[(s^e>>>16&255)+3072|0];E[d+10|0]=H[r+3072|0];E[d+15|0]=H[(k&255)+3072|0];E[d+12|0]=H[((a^o)&255)+3072|0];E[d+11|0]=H[(i&255)+3072|0];E[d+9|0]=H[(j^a>>>8&255)+3072|0];E[d+14|0]=H[(h&255)+3072|0];E[d+13|0]=H[p+3072|0];Ba(d);a=G[c+208>>2];E[d+12|0]=a^H[d+12|0];E[d+8|0]=H[d+8|0]^a>>>8;f=G[c+212>>2];k=H[d+9|0]^f>>>8;E[d+9|0]=k;s=f^H[d+13|0];E[d+13|0]=s;e=G[c+216>>2];q=e^H[d+14|0];E[d+14|0]=q;m=H[d+4|0];n=H[d+5|0];j=H[d+10|0];o=H[d+6|0];h=H[d+2|0];i=H[d+1|0];l=H[d|0];p=H[d+15|0];r=H[d+11|0];t=H[d+7|0];g=G[c+220>>2];u=H[(H[d+3|0]^g>>>24)+3072|0];E[d+3|0]=u;l=H[(l^a>>>24)+3072|0];E[d|0]=l;v=H[(i^f>>>24)+3072|0];E[d+1|0]=v;w=H[(h^e>>>24)+3072|0];E[d+2|0]=w;h=G[c+232>>2];t=H[(g>>>16&255^t)+3072|0]^h>>>16;i=G[c+228>>2];r=H[(g>>>8&255^r)+3072|0]^i>>>8;o=H[(e>>>16&255^o)+3072|0]^i>>>16;j=H[(e>>>8&255^j)+3072|0];e=G[c+224>>2];j=j^e>>>8;f=H[(f>>>16&255^n)+3072|0]^e>>>16;n=H[H[d+8|0]+3072|0]^h>>>8;g=e^H[((g^p)&255)+3072|0];p=i^H[H[d+12|0]+3072|0];m=H[(a>>>16&255^m)+3072|0];k=H[(k&255)+3072|0];q=H[(q&255)+3072|0];a=G[c+236>>2];E[b+11|0]=h^H[(s&255)+3072|0];E[b+10|0]=n;E[b+9|0]=t;E[b+8|0]=w^h>>>24;E[b+7|0]=p;E[b+6|0]=r;E[b+5|0]=o;E[b+4|0]=v^i>>>24;E[b+3|0]=g;E[b+2|0]=j;E[b+1|0]=f;E[b|0]=l^e>>>24;E[b+15|0]=a^q;E[b+14|0]=k^a>>>8;E[b+13|0]=m^a>>>16;E[b+12|0]=u^a>>>24;Y=d+16|0}function wa(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;d=G[c>>2];e=d;f=d>>31;d=G[b>>2];k=a,l=we(e,f,d,d>>31),G[k>>2]=l;G[a+4>>2]=Z;d=G[c>>2];e=d;f=d>>31;d=G[b+8>>2];d=we(e,f,d,d>>31);e=Z;f=d;d=G[c+8>>2];h=d;i=d>>31;d=G[b>>2];d=we(h,i,d,d>>31);f=f+d|0;e=Z+e|0;G[a+8>>2]=f;G[a+12>>2]=d>>>0>f>>>0?e+1|0:e;d=G[c+16>>2];e=d;f=d>>31;d=G[b>>2];g=we(e,f,d,d>>31);j=Z;d=G[c+8>>2];h=d;f=d>>31;d=G[b+8>>2];d=we(h,f,(d&2147483647)<<1,d>>31);e=d+g|0;g=Z+j|0;g=d>>>0>e>>>0?g+1|0:g;d=G[c>>2];f=d;h=d>>31;d=G[b+16>>2];d=we(f,h,d,d>>31);e=d+e|0;g=Z+g|0;G[a+16>>2]=e;G[a+20>>2]=d>>>0>e>>>0?g+1|0:g;d=G[c+8>>2];e=d;f=d>>31;d=G[b+16>>2];d=we(e,f,d,d>>31);e=Z;f=d;d=G[c+16>>2];h=d;i=d>>31;d=G[b+8>>2];d=we(h,i,d,d>>31);f=f+d|0;e=Z+e|0;e=d>>>0>f>>>0?e+1|0:e;h=f;d=G[c+24>>2];f=d;i=d>>31;d=G[b>>2];f=we(f,i,d,d>>31);h=h+f|0;d=Z+e|0;d=f>>>0>h>>>0?d+1|0:d;e=G[c>>2];f=e;i=e>>31;e=G[b+24>>2];e=we(f,i,e,e>>31);f=e+h|0;g=Z+d|0;G[a+24>>2]=f;G[a+28>>2]=e>>>0>f>>>0?g+1|0:g;d=G[c+16>>2];e=d;f=d>>31;d=G[b+16>>2];h=we(e,f,d,d>>31);f=Z;d=G[c+8>>2];e=d;i=d>>31;d=G[b+24>>2];d=we(e,i,d,d>>31);e=Z;i=d;d=G[c+24>>2];g=d;j=d>>31;d=G[b+8>>2];d=we(g,j,d,d>>31);j=i+d|0;g=Z+e|0;e=j<<1;h=e+h|0;g=((d>>>0>j>>>0?g+1|0:g)<<1|j>>>31)+f|0;d=G[c+32>>2];f=d;i=d>>31;d=G[b>>2];d=we(f,i,d,d>>31);f=d+h|0;e=Z+(e>>>0>h>>>0?g+1|0:g)|0;e=d>>>0>f>>>0?e+1|0:e;d=G[c>>2];h=d;i=d>>31;d=G[b+32>>2];d=we(h,i,d,d>>31);f=d+f|0;g=Z+e|0;G[a+32>>2]=f;G[a+36>>2]=d>>>0>f>>>0?g+1|0:g;d=G[c+16>>2];e=d;f=d>>31;d=G[b+24>>2];d=we(e,f,d,d>>31);e=Z;f=d;d=G[c+24>>2];h=d;i=d>>31;d=G[b+16>>2];d=we(h,i,d,d>>31);f=f+d|0;g=Z+e|0;g=d>>>0>f>>>0?g+1|0:g;d=G[c+32>>2];e=d;h=d>>31;d=G[b+8>>2];e=we(e,h,d,d>>31);f=e+f|0;d=Z+g|0;d=e>>>0>f>>>0?d+1|0:d;e=G[c+8>>2];h=e;i=e>>31;e=G[b+32>>2];e=we(h,i,e,e>>31);f=e+f|0;g=Z+d|0;g=e>>>0>f>>>0?g+1|0:g;d=G[c+40>>2];e=d;h=d>>31;d=G[b>>2];d=we(e,h,d,d>>31);f=d+f|0;e=Z+g|0;e=d>>>0>f>>>0?e+1|0:e;d=G[c>>2];h=d;i=d>>31;d=G[b+40>>2];d=we(h,i,d,d>>31);f=d+f|0;g=Z+e|0;G[a+40>>2]=f;G[a+44>>2]=d>>>0>f>>>0?g+1|0:g;d=G[c+32>>2];e=d;f=d>>31;d=G[b+16>>2];h=we(e,f,d,d>>31);f=Z;d=G[c+40>>2];e=d;i=d>>31;d=G[b+8>>2];d=we(e,i,d,d>>31);e=Z;i=d;d=G[c+24>>2];g=d;j=d>>31;d=G[b+24>>2];d=we(g,j,d,d>>31);j=i+d|0;g=Z+e|0;g=d>>>0>j>>>0?g+1|0:g;d=G[c+8>>2];e=d;i=d>>31;d=G[b+40>>2];e=we(e,i,d,d>>31);j=e+j|0;d=Z+g|0;g=(e>>>0>j>>>0?d+1|0:d)<<1|j>>>31;d=j<<1;e=d+h|0;g=g+f|0;g=d>>>0>e>>>0?g+1|0:g;d=G[c+16>>2];f=d;h=d>>31;d=G[b+32>>2];d=we(f,h,d,d>>31);f=d+e|0;e=Z+g|0;e=d>>>0>f>>>0?e+1|0:e;d=G[c+48>>2];h=d;i=d>>31;d=G[b>>2];d=we(h,i,d,d>>31);f=d+f|0;g=Z+e|0;g=d>>>0>f>>>0?g+1|0:g;d=G[c>>2];e=d;h=d>>31;d=G[b+48>>2];e=we(e,h,d,d>>31);f=e+f|0;d=Z+g|0;G[a+48>>2]=f;G[a+52>>2]=e>>>0>f>>>0?d+1|0:d;d=G[c+24>>2];e=d;f=d>>31;d=G[b+32>>2];d=we(e,f,d,d>>31);e=Z;f=d;d=G[c+32>>2];h=d;i=d>>31;d=G[b+24>>2];d=we(h,i,d,d>>31);f=f+d|0;g=Z+e|0;g=d>>>0>f>>>0?g+1|0:g;d=G[c+40>>2];e=d;h=d>>31;d=G[b+16>>2];d=we(e,h,d,d>>31);e=d+f|0;g=Z+g|0;g=d>>>0>e>>>0?g+1|0:g;d=G[c+16>>2];f=d;h=d>>31;d=G[b+40>>2];d=we(f,h,d,d>>31);f=d+e|0;e=Z+g|0;e=d>>>0>f>>>0?e+1|0:e;d=G[c+48>>2];h=d;i=d>>31;d=G[b+8>>2];d=we(h,i,d,d>>31);f=d+f|0;g=Z+e|0;g=d>>>0>f>>>0?g+1|0:g;d=G[c+8>>2];e=d;h=d>>31;d=G[b+48>>2];e=we(e,h,d,d>>31);f=e+f|0;d=Z+g|0;d=e>>>0>f>>>0?d+1|0:d;e=G[c+56>>2];h=e;i=e>>31;e=G[b>>2];e=we(h,i,e,e>>31);f=e+f|0;g=Z+d|0;g=e>>>0>f>>>0?g+1|0:g;d=G[c>>2];e=d;h=d>>31;d=G[b+56>>2];d=we(e,h,d,d>>31);e=d+f|0;g=Z+g|0;G[a+56>>2]=e;G[a+60>>2]=d>>>0>e>>>0?g+1|0:g;d=G[c+32>>2];e=d;f=d>>31;d=G[b+32>>2];h=we(e,f,d,d>>31);f=Z;d=G[c+24>>2];e=d;i=d>>31;d=G[b+40>>2];d=we(e,i,d,d>>31);e=Z;i=d;d=G[c+40>>2];g=d;j=d>>31;d=G[b+24>>2];d=we(g,j,d,d>>31);j=i+d|0;e=Z+e|0;e=d>>>0>j>>>0?e+1|0:e;d=G[c+56>>2];i=d;g=d>>31;d=G[b+8>>2];d=we(i,g,d,d>>31);j=d+j|0;g=Z+e|0;g=d>>>0>j>>>0?g+1|0:g;d=G[c+8>>2];e=d;i=d>>31;d=G[b+56>>2];e=we(e,i,d,d>>31);j=e+j|0;d=Z+g|0;e=(e>>>0>j>>>0?d+1|0:d)<<1|j>>>31;d=j<<1;h=d+h|0;g=e+f|0;g=d>>>0>h>>>0?g+1|0:g;d=G[c+48>>2];e=d;f=d>>31;d=G[b+16>>2];d=we(e,f,d,d>>31);e=d+h|0;g=Z+g|0;g=d>>>0>e>>>0?g+1|0:g;d=G[c+16>>2];f=d;h=d>>31;d=G[b+48>>2];d=we(f,h,d,d>>31);e=d+e|0;g=Z+g|0;g=d>>>0>e>>>0?g+1|0:g;f=e;d=G[c+64>>2];e=d;h=d>>31;d=G[b>>2];e=we(e,h,d,d>>31);f=f+e|0;d=Z+g|0;d=e>>>0>f>>>0?d+1|0:d;h=f;e=G[c>>2];f=e;i=e>>31;e=G[b+64>>2];f=we(f,i,e,e>>31);h=h+f|0;e=Z+d|0;G[a+64>>2]=h;G[a+68>>2]=f>>>0>h>>>0?e+1|0:e;d=G[c+32>>2];e=d;f=d>>31;d=G[b+40>>2];d=we(e,f,d,d>>31);e=Z;f=d;d=G[c+40>>2];h=d;i=d>>31;d=G[b+32>>2];d=we(h,i,d,d>>31);f=f+d|0;g=Z+e|0;g=d>>>0>f>>>0?g+1|0:g;d=G[c+48>>2];e=d;h=d>>31;d=G[b+24>>2];d=we(e,h,d,d>>31);e=d+f|0;g=Z+g|0;g=d>>>0>e>>>0?g+1|0:g;d=G[c+24>>2];f=d;h=d>>31;d=G[b+48>>2];d=we(f,h,d,d>>31);e=d+e|0;g=Z+g|0;g=d>>>0>e>>>0?g+1|0:g;f=e;d=G[c+56>>2];e=d;h=d>>31;d=G[b+16>>2];e=we(e,h,d,d>>31);f=f+e|0;d=Z+g|0;d=e>>>0>f>>>0?d+1|0:d;h=f;e=G[c+16>>2];f=e;i=e>>31;e=G[b+56>>2];f=we(f,i,e,e>>31);h=h+f|0;e=Z+d|0;e=f>>>0>h>>>0?e+1|0:e;d=G[c+64>>2];f=d;i=d>>31;d=G[b+8>>2];d=we(f,i,d,d>>31);f=d+h|0;g=Z+e|0;g=d>>>0>f>>>0?g+1|0:g;d=G[c+8>>2];e=d;h=d>>31;d=G[b+64>>2];d=we(e,h,d,d>>31);e=d+f|0;g=Z+g|0;g=d>>>0>e>>>0?g+1|0:g;d=G[c+72>>2];f=d;h=d>>31;d=G[b>>2];d=we(f,h,d,d>>31);e=d+e|0;g=Z+g|0;g=d>>>0>e>>>0?g+1|0:g;f=e;d=G[c>>2];e=d;h=d>>31;d=G[b+72>>2];e=we(e,h,d,d>>31);f=f+e|0;d=Z+g|0;G[a+72>>2]=f;G[a+76>>2]=e>>>0>f>>>0?d+1|0:d;d=G[c+48>>2];e=d;f=d>>31;d=G[b+32>>2];h=we(e,f,d,d>>31);f=Z;d=G[c+56>>2];e=d;i=d>>31;d=G[b+24>>2];d=we(e,i,d,d>>31);e=Z;i=d;d=G[c+40>>2];g=d;j=d>>31;d=G[b+40>>2];d=we(g,j,d,d>>31);j=i+d|0;e=Z+e|0;e=d>>>0>j>>>0?e+1|0:e;d=G[c+24>>2];i=d;g=d>>31;d=G[b+56>>2];d=we(i,g,d,d>>31);j=d+j|0;g=Z+e|0;g=d>>>0>j>>>0?g+1|0:g;d=G[c+72>>2];e=d;i=d>>31;d=G[b+8>>2];d=we(e,i,d,d>>31);e=d+j|0;g=Z+g|0;g=d>>>0>e>>>0?g+1|0:g;i=e;d=G[c+8>>2];e=d;j=d>>31;d=G[b+72>>2];e=we(e,j,d,d>>31);d=i+e|0;g=Z+g|0;g=d>>>0>>0?g+1|0:g;e=d<<1;h=e+h|0;d=(g<<1|d>>>31)+f|0;d=e>>>0>h>>>0?d+1|0:d;e=G[c+32>>2];f=e;i=e>>31;e=G[b+48>>2];f=we(f,i,e,e>>31);h=f+h|0;e=Z+d|0;e=f>>>0>h>>>0?e+1|0:e;d=G[c+64>>2];f=d;i=d>>31;d=G[b+16>>2];d=we(f,i,d,d>>31);f=d+h|0;g=Z+e|0;g=d>>>0>f>>>0?g+1|0:g;d=G[c+16>>2];e=d;h=d>>31;d=G[b+64>>2];d=we(e,h,d,d>>31);e=d+f|0;g=Z+g|0;G[a+80>>2]=e;G[a+84>>2]=d>>>0>e>>>0?g+1|0:g;d=G[c+40>>2];e=d;f=d>>31;d=G[b+48>>2];d=we(e,f,d,d>>31);e=Z;f=d;d=G[c+48>>2];h=d;i=d>>31;d=G[b+40>>2];d=we(h,i,d,d>>31);f=f+d|0;g=Z+e|0;g=d>>>0>f>>>0?g+1|0:g;d=G[c+56>>2];e=d;h=d>>31;d=G[b+32>>2];e=we(e,h,d,d>>31);f=e+f|0;d=Z+g|0;d=e>>>0>f>>>0?d+1|0:d;h=f;e=G[c+32>>2];f=e;i=e>>31;e=G[b+56>>2];f=we(f,i,e,e>>31);h=h+f|0;e=Z+d|0;e=f>>>0>h>>>0?e+1|0:e;d=G[c+64>>2];f=d;i=d>>31;d=G[b+24>>2];d=we(f,i,d,d>>31);f=d+h|0;g=Z+e|0;g=d>>>0>f>>>0?g+1|0:g;d=G[c+24>>2];e=d;h=d>>31;d=G[b+64>>2];d=we(e,h,d,d>>31);e=d+f|0;g=Z+g|0;g=d>>>0>e>>>0?g+1|0:g;d=G[c+72>>2];f=d;h=d>>31;d=G[b+16>>2];d=we(f,h,d,d>>31);e=d+e|0;g=Z+g|0;g=d>>>0>e>>>0?g+1|0:g;f=e;d=G[c+16>>2];e=d;h=d>>31;d=G[b+72>>2];e=we(e,h,d,d>>31);f=f+e|0;d=Z+g|0;G[a+88>>2]=f;G[a+92>>2]=e>>>0>f>>>0?d+1|0:d;d=G[c+48>>2];e=d;f=d>>31;d=G[b+48>>2];h=we(e,f,d,d>>31);f=Z;d=G[c+40>>2];e=d;i=d>>31;d=G[b+56>>2];d=we(e,i,d,d>>31);e=Z;i=d;d=G[c+56>>2];g=d;j=d>>31;d=G[b+40>>2];d=we(g,j,d,d>>31);j=i+d|0;e=Z+e|0;e=d>>>0>j>>>0?e+1|0:e;d=G[c+72>>2];i=d;g=d>>31;d=G[b+24>>2];d=we(i,g,d,d>>31);j=d+j|0;g=Z+e|0;g=d>>>0>j>>>0?g+1|0:g;d=G[c+24>>2];e=d;i=d>>31;d=G[b+72>>2];e=we(e,i,d,d>>31);d=e+j|0;g=Z+g|0;e=(d>>>0>>0?g+1|0:g)<<1|d>>>31;d=d<<1;h=d+h|0;g=e+f|0;g=d>>>0>h>>>0?g+1|0:g;d=G[c+64>>2];e=d;f=d>>31;d=G[b+32>>2];e=we(e,f,d,d>>31);f=e+h|0;d=Z+g|0;d=e>>>0>f>>>0?d+1|0:d;e=G[c+32>>2];h=e;i=e>>31;e=G[b+64>>2];e=we(h,i,e,e>>31);f=e+f|0;g=Z+d|0;G[a+96>>2]=f;G[a+100>>2]=e>>>0>f>>>0?g+1|0:g;d=G[c+48>>2];e=d;f=d>>31;d=G[b+56>>2];d=we(e,f,d,d>>31);e=Z;f=d;d=G[c+56>>2];h=d;i=d>>31;d=G[b+48>>2];d=we(h,i,d,d>>31);f=f+d|0;g=Z+e|0;g=d>>>0>f>>>0?g+1|0:g;d=G[c+64>>2];e=d;h=d>>31;d=G[b+40>>2];d=we(e,h,d,d>>31);f=d+f|0;e=Z+g|0;e=d>>>0>f>>>0?e+1|0:e;d=G[c+40>>2];h=d;i=d>>31;d=G[b+64>>2];d=we(h,i,d,d>>31);f=d+f|0;g=Z+e|0;g=d>>>0>f>>>0?g+1|0:g;d=G[c+72>>2];e=d;h=d>>31;d=G[b+32>>2];e=we(e,h,d,d>>31);f=e+f|0;d=Z+g|0;d=e>>>0>f>>>0?d+1|0:d;e=G[c+32>>2];h=e;i=e>>31;e=G[b+72>>2];e=we(h,i,e,e>>31);f=e+f|0;g=Z+d|0;G[a+104>>2]=f;G[a+108>>2]=e>>>0>f>>>0?g+1|0:g;d=G[c+64>>2];e=d;f=d>>31;d=G[b+48>>2];h=we(e,f,d,d>>31);f=Z;d=G[c+72>>2];e=d;i=d>>31;d=G[b+40>>2];d=we(e,i,d,d>>31);e=Z;i=d;d=G[c+56>>2];g=d;j=d>>31;d=G[b+56>>2];d=we(g,j,d,d>>31);j=i+d|0;g=Z+e|0;g=d>>>0>j>>>0?g+1|0:g;d=G[c+40>>2];e=d;i=d>>31;d=G[b+72>>2];d=we(e,i,d,d>>31);j=d+j|0;e=Z+g|0;g=(d>>>0>j>>>0?e+1|0:e)<<1|j>>>31;d=j<<1;e=d+h|0;g=g+f|0;g=d>>>0>e>>>0?g+1|0:g;f=e;d=G[c+48>>2];e=d;h=d>>31;d=G[b+64>>2];e=we(e,h,d,d>>31);f=f+e|0;d=Z+g|0;G[a+112>>2]=f;G[a+116>>2]=e>>>0>f>>>0?d+1|0:d;d=G[c+56>>2];e=d;f=d>>31;d=G[b+64>>2];d=we(e,f,d,d>>31);e=Z;f=d;d=G[c+64>>2];h=d;i=d>>31;d=G[b+56>>2];d=we(h,i,d,d>>31);f=f+d|0;g=Z+e|0;g=d>>>0>f>>>0?g+1|0:g;d=G[c+72>>2];e=d;h=d>>31;d=G[b+48>>2];d=we(e,h,d,d>>31);f=d+f|0;e=Z+g|0;e=d>>>0>f>>>0?e+1|0:e;d=G[c+48>>2];h=d;i=d>>31;d=G[b+72>>2];d=we(h,i,d,d>>31);f=d+f|0;g=Z+e|0;G[a+120>>2]=f;G[a+124>>2]=d>>>0>f>>>0?g+1|0:g;d=G[c+64>>2];e=d;f=d>>31;d=G[b+64>>2];j=we(e,f,d,d>>31);h=Z;d=G[c+56>>2];e=d;f=d>>31;d=G[b+72>>2];d=we(e,f,d,d>>31);f=Z;i=d;d=G[c+72>>2];e=d;g=d>>31;d=G[b+56>>2];e=we(e,g,d,d>>31);d=i+e|0;g=Z+f|0;f=d<<1;j=f+j|0;d=((d>>>0>>0?g+1|0:g)<<1|d>>>31)+h|0;G[a+128>>2]=j;G[a+132>>2]=f>>>0>j>>>0?d+1|0:d;d=G[c+64>>2];e=d;f=d>>31;d=G[b+72>>2];d=we(e,f,d,d>>31);e=Z;f=d;d=G[c+72>>2];h=d;i=d>>31;d=G[b+64>>2];d=we(h,i,d,d>>31);f=f+d|0;g=Z+e|0;G[a+136>>2]=f;G[a+140>>2]=d>>>0>f>>>0?g+1|0:g;b=G[b+72>>2];e=b;b=0;c=G[c+72>>2];k=a,l=we(c,c>>31,(e&2147483647)<<1|b>>>31,e>>31),G[k+144>>2]=l;G[a+148>>2]=Z}function gd(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;l=Y-16|0;Y=l;a:{b:{c:{d:{e:{f:{g:{h:{i:{j:{k:{l:{m:{n:{if(a>>>0<=244){g=G[9391];h=a>>>0<11?16:a+11&-8;c=h>>>3|0;b=g>>>c|0;if(b&3){c=c+((b^-1)&1)|0;a=c<<3;b=a+37604|0;d=G[a+37612>>2];a=G[d+8>>2];o:{if((b|0)==(a|0)){m=37564,n=ye(-2,c)&g,G[m>>2]=n;break o}G[a+12>>2]=b;G[b+8>>2]=a}a=d+8|0;b=c<<3;G[d+4>>2]=b|3;b=b+d|0;G[b+4>>2]=G[b+4>>2]|1;break a}k=G[9393];if(k>>>0>=h>>>0){break n}if(b){a=2<>2];a=G[e+8>>2];p:{if((b|0)==(a|0)){g=ye(-2,d)&g;G[9391]=g;break p}G[a+12>>2]=b;G[b+8>>2]=a}G[e+4>>2]=h|3;c=e+h|0;a=d<<3;d=a-h|0;G[c+4>>2]=d|1;G[a+e>>2]=d;if(k){b=(k&-8)+37604|0;f=G[9396];a=1<<(k>>>3);q:{if(!(a&g)){G[9391]=a|g;a=b;break q}a=G[b+8>>2]}G[b+8>>2]=f;G[a+12>>2]=f;G[f+12>>2]=b;G[f+8>>2]=a}a=e+8|0;G[9396]=c;G[9393]=d;break a}j=G[9392];if(!j){break n}c=G[(ve(j)<<2)+37868>>2];f=(G[c+4>>2]&-8)-h|0;b=c;while(1){r:{a=G[b+16>>2];if(!a){a=G[b+20>>2];if(!a){break r}}b=(G[a+4>>2]&-8)-h|0;d=b>>>0>>0;f=d?b:f;c=d?a:c;b=a;continue}break}i=G[c+24>>2];d=G[c+12>>2];if((d|0)!=(c|0)){a=G[c+8>>2];G[a+12>>2]=d;G[d+8>>2]=a;break b}b=c+20|0;a=G[b>>2];if(!a){a=G[c+16>>2];if(!a){break m}b=c+16|0}while(1){e=b;d=a;b=a+20|0;a=G[b>>2];if(a){continue}b=d+16|0;a=G[d+16>>2];if(a){continue}break}G[e>>2]=0;break b}h=-1;if(a>>>0>4294967231){break n}a=a+11|0;h=a&-8;j=G[9392];if(!j){break n}f=0-h|0;g=0;s:{if(h>>>0<256){break s}g=31;if(h>>>0>16777215){break s}a=P(a>>>8|0);g=((h>>>38-a&1)-(a<<1)|0)+62|0}b=G[(g<<2)+37868>>2];t:{u:{v:{if(!b){a=0;break v}a=0;c=h<<((g|0)!=31?25-(g>>>1|0)|0:0);while(1){w:{e=(G[b+4>>2]&-8)-h|0;if(e>>>0>=f>>>0){break w}d=b;f=e;if(e){break w}f=0;a=b;break u}e=G[b+20>>2];b=G[((c>>>29&4)+b|0)+16>>2];a=e?(e|0)==(b|0)?a:e:a;c=c<<1;if(b){continue}break}}if(!(a|d)){d=0;a=2<>2]}if(!a){break t}}while(1){b=(G[a+4>>2]&-8)-h|0;c=b>>>0>>0;f=c?b:f;d=c?a:d;b=G[a+16>>2];if(b){a=b}else{a=G[a+20>>2]}if(a){continue}break}}if(!d|G[9393]-h>>>0<=f>>>0){break n}g=G[d+24>>2];c=G[d+12>>2];if((d|0)!=(c|0)){a=G[d+8>>2];G[a+12>>2]=c;G[c+8>>2]=a;break c}b=d+20|0;a=G[b>>2];if(!a){a=G[d+16>>2];if(!a){break l}b=d+16|0}while(1){e=b;c=a;b=a+20|0;a=G[b>>2];if(a){continue}b=c+16|0;a=G[c+16>>2];if(a){continue}break}G[e>>2]=0;break c}a=G[9393];if(a>>>0>=h>>>0){d=G[9396];b=a-h|0;x:{if(b>>>0>=16){c=d+h|0;G[c+4>>2]=b|1;G[a+d>>2]=b;G[d+4>>2]=h|3;break x}G[d+4>>2]=a|3;a=a+d|0;G[a+4>>2]=G[a+4>>2]|1;c=0;b=0}G[9393]=b;G[9396]=c;a=d+8|0;break a}i=G[9394];if(i>>>0>h>>>0){b=i-h|0;G[9394]=b;c=G[9397];a=c+h|0;G[9397]=a;G[a+4>>2]=b|1;G[c+4>>2]=h|3;a=c+8|0;break a}a=0;j=h+47|0;if(G[9509]){c=G[9511]}else{G[9512]=-1;G[9513]=-1;G[9510]=4096;G[9511]=4096;G[9509]=l+12&-16^1431655768;G[9514]=0;G[9502]=0;c=4096}e=j+c|0;f=0-c|0;b=e&f;if(b>>>0<=h>>>0){break a}d=G[9501];if(d){c=G[9499];g=c+b|0;if(d>>>0>>0|c>>>0>=g>>>0){break a}}y:{if(!(H[38008]&4)){z:{A:{B:{C:{d=G[9397];if(d){a=38012;while(1){c=G[a>>2];if(c>>>0<=d>>>0&d>>>0>2]>>>0){break C}a=G[a+8>>2];if(a){continue}break}}c=Ta(0);if((c|0)==-1){break z}g=b;d=G[9510];a=d-1|0;if(a&c){g=(b-c|0)+(a+c&0-d)|0}if(g>>>0<=h>>>0){break z}d=G[9501];if(d){a=G[9499];f=a+g|0;if(d>>>0>>0|a>>>0>=f>>>0){break z}}a=Ta(g);if((c|0)!=(a|0)){break B}break y}g=f&e-i;c=Ta(g);if((c|0)==(G[a>>2]+G[a+4>>2]|0)){break A}a=c}if((a|0)==-1){break z}if(h+48>>>0<=g>>>0){c=a;break y}c=G[9511];c=c+(j-g|0)&0-c;if((Ta(c)|0)==-1){break z}g=c+g|0;c=a;break y}if((c|0)!=-1){break y}}G[9502]=G[9502]|4}c=Ta(b);a=Ta(0);if((c|0)==-1|(a|0)==-1|a>>>0<=c>>>0){break i}g=a-c|0;if(g>>>0<=h+40>>>0){break i}}a=G[9499]+g|0;G[9499]=a;if(a>>>0>J[9500]){G[9500]=a}D:{e=G[9397];if(e){a=38012;while(1){d=G[a>>2];b=G[a+4>>2];if((d+b|0)==(c|0)){break D}a=G[a+8>>2];if(a){continue}break}break k}a=G[9395];if(!(a>>>0<=c>>>0?a:0)){G[9395]=c}a=0;G[9504]=g;G[9503]=c;G[9399]=-1;G[9400]=G[9509];G[9506]=0;while(1){d=a<<3;b=d+37604|0;G[d+37612>>2]=b;G[d+37616>>2]=b;a=a+1|0;if((a|0)!=32){continue}break}d=g-40|0;a=-8-c&7;b=d-a|0;G[9394]=b;a=a+c|0;G[9397]=a;G[a+4>>2]=b|1;G[(c+d|0)+4>>2]=40;G[9398]=G[9513];break j}if(G[a+12>>2]&8|(c>>>0<=e>>>0|d>>>0>e>>>0)){break k}G[a+4>>2]=b+g;a=-8-e&7;c=a+e|0;G[9397]=c;b=G[9394]+g|0;a=b-a|0;G[9394]=a;G[c+4>>2]=a|1;G[(b+e|0)+4>>2]=40;G[9398]=G[9513];break j}d=0;break b}c=0;break c}if(J[9395]>c>>>0){G[9395]=c}b=c+g|0;a=38012;E:{F:{G:{while(1){if((b|0)!=G[a>>2]){a=G[a+8>>2];if(a){continue}break G}break}if(!(H[a+12|0]&8)){break F}}a=38012;while(1){b=G[a>>2];if(b>>>0<=e>>>0){f=b+G[a+4>>2]|0;if(f>>>0>e>>>0){break E}}a=G[a+8>>2];continue}}G[a>>2]=c;G[a+4>>2]=G[a+4>>2]+g;j=(-8-c&7)+c|0;G[j+4>>2]=h|3;g=b+(-8-b&7)|0;i=h+j|0;a=g-i|0;if((e|0)==(g|0)){G[9397]=i;a=G[9394]+a|0;G[9394]=a;G[i+4>>2]=a|1;break d}if(G[9396]==(g|0)){G[9396]=i;a=G[9393]+a|0;G[9393]=a;G[i+4>>2]=a|1;G[a+i>>2]=a;break d}f=G[g+4>>2];if((f&3)!=1){break e}e=f&-8;if(f>>>0<=255){c=G[g+12>>2];b=G[g+8>>2];if((c|0)==(b|0)){m=37564,n=G[9391]&ye(-2,f>>>3|0),G[m>>2]=n;break f}G[b+12>>2]=c;G[c+8>>2]=b;break f}h=G[g+24>>2];c=G[g+12>>2];if((g|0)!=(c|0)){b=G[g+8>>2];G[b+12>>2]=c;G[c+8>>2]=b;break g}b=g+20|0;f=G[b>>2];if(!f){f=G[g+16>>2];if(!f){break h}b=g+16|0}while(1){d=b;c=f;b=c+20|0;f=G[b>>2];if(f){continue}b=c+16|0;f=G[c+16>>2];if(f){continue}break}G[d>>2]=0;break g}d=g-40|0;a=-8-c&7;b=d-a|0;G[9394]=b;a=a+c|0;G[9397]=a;G[a+4>>2]=b|1;G[(c+d|0)+4>>2]=40;G[9398]=G[9513];a=(f+(39-f&7)|0)-47|0;d=a>>>0>>0?e:a;G[d+4>>2]=27;a=G[9506];G[d+16>>2]=G[9505];G[d+20>>2]=a;a=G[9504];G[d+8>>2]=G[9503];G[d+12>>2]=a;G[9505]=d+8;G[9504]=g;G[9503]=c;G[9506]=0;a=d+24|0;while(1){G[a+4>>2]=7;b=a+8|0;a=a+4|0;if(b>>>0>>0){continue}break}if((d|0)==(e|0)){break j}G[d+4>>2]=G[d+4>>2]&-2;f=d-e|0;G[e+4>>2]=f|1;G[d>>2]=f;if(f>>>0<=255){b=(f&-8)+37604|0;c=G[9391];a=1<<(f>>>3);H:{if(!(c&a)){G[9391]=a|c;a=b;break H}a=G[b+8>>2]}G[b+8>>2]=e;G[a+12>>2]=e;G[e+12>>2]=b;G[e+8>>2]=a;break j}a=31;if(f>>>0<=16777215){a=P(f>>>8|0);a=((f>>>38-a&1)-(a<<1)|0)+62|0}G[e+28>>2]=a;G[e+16>>2]=0;G[e+20>>2]=0;b=(a<<2)+37868|0;I:{d=G[9392];c=1<>2]=e;break J}a=f<<((a|0)!=31?25-(a>>>1|0)|0:0);d=G[b>>2];while(1){b=d;if((f|0)==(G[b+4>>2]&-8)){break I}c=a>>>29|0;a=a<<1;c=(c&4)+b|0;d=G[c+16>>2];if(d){continue}break}G[c+16>>2]=e}G[e+24>>2]=b;G[e+12>>2]=e;G[e+8>>2]=e;break j}a=G[b+8>>2];G[a+12>>2]=e;G[b+8>>2]=e;G[e+24>>2]=0;G[e+12>>2]=b;G[e+8>>2]=a}a=G[9394];if(a>>>0<=h>>>0){break i}b=a-h|0;G[9394]=b;c=G[9397];a=c+h|0;G[9397]=a;G[a+4>>2]=b|1;G[c+4>>2]=h|3;a=c+8|0;break a}G[9343]=48;a=0;break a}c=0}if(!h){break f}d=G[g+28>>2];b=(d<<2)+37868|0;K:{if(G[b>>2]==(g|0)){G[b>>2]=c;if(c){break K}m=37568,n=G[9392]&ye(-2,d),G[m>>2]=n;break f}G[h+(G[h+16>>2]==(g|0)?16:20)>>2]=c;if(!c){break f}}G[c+24>>2]=h;b=G[g+16>>2];if(b){G[c+16>>2]=b;G[b+24>>2]=c}b=G[g+20>>2];if(!b){break f}G[c+20>>2]=b;G[b+24>>2]=c}a=a+e|0;g=e+g|0;f=G[g+4>>2]}G[g+4>>2]=f&-2;G[i+4>>2]=a|1;G[a+i>>2]=a;if(a>>>0<=255){b=(a&-8)+37604|0;c=G[9391];a=1<<(a>>>3);L:{if(!(c&a)){G[9391]=a|c;a=b;break L}a=G[b+8>>2]}G[b+8>>2]=i;G[a+12>>2]=i;G[i+12>>2]=b;G[i+8>>2]=a;break d}f=31;if(a>>>0<=16777215){b=P(a>>>8|0);f=((a>>>38-b&1)-(b<<1)|0)+62|0}G[i+28>>2]=f;G[i+16>>2]=0;G[i+20>>2]=0;b=(f<<2)+37868|0;M:{d=G[9392];c=1<>2]=i;break N}f=a<<((f|0)!=31?25-(f>>>1|0)|0:0);c=G[b>>2];while(1){b=c;if((G[c+4>>2]&-8)==(a|0)){break M}d=f>>>29|0;f=f<<1;d=(d&4)+c|0;c=G[d+16>>2];if(c){continue}break}G[d+16>>2]=i}G[i+24>>2]=b;G[i+12>>2]=i;G[i+8>>2]=i;break d}a=G[b+8>>2];G[a+12>>2]=i;G[b+8>>2]=i;G[i+24>>2]=0;G[i+12>>2]=b;G[i+8>>2]=a}a=j+8|0;break a}O:{if(!g){break O}b=G[d+28>>2];a=(b<<2)+37868|0;P:{if(G[a>>2]==(d|0)){G[a>>2]=c;if(c){break P}j=ye(-2,b)&j;G[9392]=j;break O}G[g+(G[g+16>>2]==(d|0)?16:20)>>2]=c;if(!c){break O}}G[c+24>>2]=g;a=G[d+16>>2];if(a){G[c+16>>2]=a;G[a+24>>2]=c}a=G[d+20>>2];if(!a){break O}G[c+20>>2]=a;G[a+24>>2]=c}Q:{if(f>>>0<=15){a=f+h|0;G[d+4>>2]=a|3;a=a+d|0;G[a+4>>2]=G[a+4>>2]|1;break Q}G[d+4>>2]=h|3;e=d+h|0;G[e+4>>2]=f|1;G[e+f>>2]=f;if(f>>>0<=255){b=(f&-8)+37604|0;c=G[9391];a=1<<(f>>>3);R:{if(!(c&a)){G[9391]=a|c;a=b;break R}a=G[b+8>>2]}G[b+8>>2]=e;G[a+12>>2]=e;G[e+12>>2]=b;G[e+8>>2]=a;break Q}a=31;if(f>>>0<=16777215){a=P(f>>>8|0);a=((f>>>38-a&1)-(a<<1)|0)+62|0}G[e+28>>2]=a;G[e+16>>2]=0;G[e+20>>2]=0;b=(a<<2)+37868|0;S:{c=1<>2]=e;break T}a=f<<((a|0)!=31?25-(a>>>1|0)|0:0);h=G[b>>2];while(1){b=h;if((G[b+4>>2]&-8)==(f|0)){break S}c=a>>>29|0;a=a<<1;c=(c&4)+b|0;h=G[c+16>>2];if(h){continue}break}G[c+16>>2]=e}G[e+24>>2]=b;G[e+12>>2]=e;G[e+8>>2]=e;break Q}a=G[b+8>>2];G[a+12>>2]=e;G[b+8>>2]=e;G[e+24>>2]=0;G[e+12>>2]=b;G[e+8>>2]=a}a=d+8|0;break a}U:{if(!i){break U}b=G[c+28>>2];a=(b<<2)+37868|0;V:{if(G[a>>2]==(c|0)){G[a>>2]=d;if(d){break V}m=37568,n=ye(-2,b)&j,G[m>>2]=n;break U}G[i+(G[i+16>>2]==(c|0)?16:20)>>2]=d;if(!d){break U}}G[d+24>>2]=i;a=G[c+16>>2];if(a){G[d+16>>2]=a;G[a+24>>2]=d}a=G[c+20>>2];if(!a){break U}G[d+20>>2]=a;G[a+24>>2]=d}W:{if(f>>>0<=15){a=f+h|0;G[c+4>>2]=a|3;a=a+c|0;G[a+4>>2]=G[a+4>>2]|1;break W}G[c+4>>2]=h|3;d=c+h|0;G[d+4>>2]=f|1;G[d+f>>2]=f;if(k){b=(k&-8)+37604|0;e=G[9396];a=1<<(k>>>3);X:{if(!(a&g)){G[9391]=a|g;a=b;break X}a=G[b+8>>2]}G[b+8>>2]=e;G[a+12>>2]=e;G[e+12>>2]=b;G[e+8>>2]=a}G[9396]=d;G[9393]=f}a=c+8|0}Y=l+16|0;return a|0}function ka(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,H=0,I=0,J=0,K=0,L=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0;s=G[c+4>>2];C=s>>31;K=G[b+20>>2];D=K<<1;ba=D>>31;d=we(s,C,D,ba);f=Z;r=G[c>>2];v=r>>31;t=G[b+24>>2];w=t>>31;p=we(r,v,t,w);e=p+d|0;d=Z+f|0;d=e>>>0

>>0?d+1|0:d;x=G[c+8>>2];H=x>>31;p=G[b+16>>2];y=p>>31;l=we(x,H,p,y);e=l+e|0;f=Z+d|0;f=e>>>0>>0?f+1|0:f;E=G[c+12>>2];L=E>>31;N=G[b+12>>2];U=N<<1;ca=U>>31;l=we(E,L,U,ca);d=l+e|0;e=Z+f|0;e=d>>>0>>0?e+1|0:e;I=G[c+16>>2];V=I>>31;l=G[b+8>>2];z=l>>31;q=we(I,V,l,z);f=q+d|0;d=Z+e|0;d=f>>>0>>0?d+1|0:d;e=f;O=G[c+20>>2];da=O>>31;P=G[b+4>>2];W=P<<1;ea=W>>31;f=we(O,da,W,ea);e=e+f|0;d=Z+d|0;d=e>>>0>>0?d+1|0:d;j=G[c+24>>2];ta=j;pa=j>>31;q=G[b>>2];A=q>>31;m=we(j,pa,q,A);f=m+e|0;e=Z+d|0;e=f>>>0>>0?e+1|0:e;fa=G[c+28>>2];o=M(fa,19);Q=o>>31;R=G[b+36>>2];X=R<<1;ga=X>>31;m=we(o,Q,X,ga);d=m+f|0;f=Z+e|0;f=d>>>0>>0?f+1|0:f;qa=G[c+32>>2];g=M(qa,19);J=g>>31;m=G[b+32>>2];B=m>>31;k=we(g,J,m,B);e=k+d|0;d=Z+f|0;d=e>>>0>>0?d+1|0:d;ua=G[c+36>>2];k=M(ua,19);F=k>>31;S=G[b+28>>2];Y=S<<1;ha=Y>>31;c=we(k,F,Y,ha);b=c+e|0;d=Z+d|0;h=b;c=b>>>0>>0?d+1|0:d;b=we(p,y,s,C);d=Z;ia=K>>31;e=we(r,v,K,ia);b=e+b|0;f=Z+d|0;f=b>>>0>>0?f+1|0:f;ja=N>>31;d=we(x,H,N,ja);b=d+b|0;e=Z+f|0;e=b>>>0>>0?e+1|0:e;f=we(l,z,E,L);b=f+b|0;d=Z+e|0;d=b>>>0>>0?d+1|0:d;ka=P>>31;e=we(I,V,P,ka);b=e+b|0;d=Z+d|0;d=b>>>0>>0?d+1|0:d;e=we(q,A,O,da);b=e+b|0;d=Z+d|0;d=b>>>0>>0?d+1|0:d;j=M(j,19);_=j>>31;la=R>>31;e=we(j,_,R,la);b=e+b|0;f=Z+d|0;f=b>>>0>>0?f+1|0:f;d=we(m,B,o,Q);b=d+b|0;e=Z+f|0;e=b>>>0>>0?e+1|0:e;ma=S>>31;f=we(g,J,S,ma);b=f+b|0;d=Z+e|0;d=b>>>0>>0?d+1|0:d;e=we(k,F,t,w);b=e+b|0;d=Z+d|0;va=b;T=b>>>0>>0?d+1|0:d;b=we(s,C,U,ca);d=Z;e=we(r,v,p,y);b=e+b|0;d=Z+d|0;d=b>>>0>>0?d+1|0:d;e=we(l,z,x,H);b=e+b|0;f=Z+d|0;f=b>>>0>>0?f+1|0:f;d=we(E,L,W,ea);b=d+b|0;e=Z+f|0;e=b>>>0>>0?e+1|0:e;f=we(q,A,I,V);b=f+b|0;d=Z+e|0;d=b>>>0>>0?d+1|0:d;$=M(O,19);na=$>>31;e=we($,na,X,ga);b=e+b|0;d=Z+d|0;d=b>>>0>>0?d+1|0:d;e=we(m,B,j,_);b=e+b|0;d=Z+d|0;d=b>>>0>>0?d+1|0:d;e=we(o,Q,Y,ha);b=e+b|0;f=Z+d|0;f=b>>>0>>0?f+1|0:f;d=we(g,J,t,w);b=d+b|0;e=Z+f|0;e=b>>>0>>0?e+1|0:e;f=we(k,F,D,ba);b=f+b|0;d=Z+e|0;ya=b;d=b>>>0>>0?d+1|0:d;za=d;b=b+33554432|0;d=b>>>0<33554432?d+1|0:d;Aa=b;Ba=d;f=(d&67108863)<<6|b>>>26;b=f+va|0;d=(d>>26)+T|0;va=b;d=b>>>0>>0?d+1|0:d;b=b+16777216|0;f=b>>>0<16777216?d+1|0:d;Ca=b;e=f>>25;f=(f&33554431)<<7|b>>>25;b=f+h|0;d=c+e|0;d=b>>>0>>0?d+1|0:d;e=b;c=e+33554432|0;d=c>>>0<33554432?d+1|0:d;aa=c;b=d;G[a+24>>2]=e-(c&-67108864);c=we(s,C,W,ea);d=Z;e=we(r,v,l,z);c=e+c|0;f=Z+d|0;f=c>>>0>>0?f+1|0:f;d=c;c=we(q,A,x,H);e=d+c|0;d=Z+f|0;d=c>>>0>e>>>0?d+1|0:d;c=M(E,19);oa=c>>31;f=we(c,oa,X,ga);e=f+e|0;d=Z+d|0;d=e>>>0>>0?d+1|0:d;T=M(I,19);ra=T>>31;h=we(m,B,T,ra);f=h+e|0;e=Z+d|0;e=f>>>0>>0?e+1|0:e;h=we(Y,ha,$,na);f=h+f|0;d=Z+e|0;d=f>>>0>>0?d+1|0:d;h=we(t,w,j,_);e=h+f|0;f=Z+d|0;f=e>>>0>>0?f+1|0:f;h=we(o,Q,D,ba);e=h+e|0;d=Z+f|0;d=e>>>0>>0?d+1|0:d;f=we(g,J,p,y);e=f+e|0;d=Z+d|0;d=e>>>0>>0?d+1|0:d;h=we(k,F,U,ca);f=h+e|0;e=Z+d|0;n=f;wa=f>>>0>>0?e+1|0:e;d=we(q,A,s,C);e=Z;h=we(r,v,P,ka);f=h+d|0;d=Z+e|0;d=f>>>0>>0?d+1|0:d;e=M(x,19);h=e;sa=e>>31;i=we(e,sa,R,la);e=i+f|0;f=Z+d|0;f=e>>>0>>0?f+1|0:f;i=we(m,B,c,oa);e=i+e|0;d=Z+f|0;d=e>>>0>>0?d+1|0:d;f=we(T,ra,S,ma);e=f+e|0;d=Z+d|0;d=e>>>0>>0?d+1|0:d;i=we(t,w,$,na);f=i+e|0;e=Z+d|0;e=f>>>0>>0?e+1|0:e;i=we(j,_,K,ia);f=i+f|0;d=Z+e|0;d=f>>>0>>0?d+1|0:d;i=we(p,y,o,Q);e=i+f|0;f=Z+d|0;f=e>>>0>>0?f+1|0:f;i=we(g,J,N,ja);e=i+e|0;d=Z+f|0;d=e>>>0>>0?d+1|0:d;f=we(k,F,l,z);e=f+e|0;d=Z+d|0;xa=e;i=e>>>0>>0?d+1|0:d;d=M(s,19);d=we(d,d>>31,X,ga);e=Z;f=we(r,v,q,A);d=f+d|0;e=Z+e|0;e=d>>>0>>0?e+1|0:e;h=we(m,B,h,sa);f=h+d|0;d=Z+e|0;e=we(c,oa,Y,ha);c=e+f|0;f=Z+(f>>>0>>0?d+1|0:d)|0;f=c>>>0>>0?f+1|0:f;e=we(t,w,T,ra);c=e+c|0;d=Z+f|0;d=c>>>0>>0?d+1|0:d;e=we(D,ba,$,na);c=e+c|0;d=Z+d|0;d=c>>>0>>0?d+1|0:d;f=we(p,y,j,_);c=f+c|0;e=Z+d|0;e=c>>>0>>0?e+1|0:e;f=we(o,Q,U,ca);c=f+c|0;d=Z+e|0;d=c>>>0>>0?d+1|0:d;e=we(g,J,l,z);c=e+c|0;f=Z+d|0;f=c>>>0>>0?f+1|0:f;e=we(k,F,W,ea);c=e+c|0;d=Z+f|0;h=c;d=c>>>0>>0?d+1|0:d;oa=d;c=c+33554432|0;d=c>>>0<33554432?d+1|0:d;sa=c;Da=d;f=d>>26;d=(d&67108863)<<6|c>>>26;c=d+xa|0;e=f+i|0;i=c;d=c>>>0>>0?e+1|0:e;c=c+16777216|0;d=c>>>0<16777216?d+1|0:d;xa=c;e=(d&33554431)<<7|c>>>25;c=e+n|0;d=(d>>25)+wa|0;d=c>>>0>>0?d+1|0:d;f=c;e=f+33554432|0;d=e>>>0<33554432?d+1|0:d;wa=e;c=d;G[a+8>>2]=f-(e&-67108864);d=we(t,w,s,C);f=Z;n=we(r,v,S,ma);e=n+d|0;d=Z+f|0;d=e>>>0>>0?d+1|0:d;f=we(x,H,K,ia);e=f+e|0;d=Z+d|0;d=e>>>0>>0?d+1|0:d;f=we(p,y,E,L);e=f+e|0;d=Z+d|0;d=e>>>0>>0?d+1|0:d;n=we(I,V,N,ja);e=n+e|0;f=Z+d|0;f=e>>>0>>0?f+1|0:f;n=we(l,z,O,da);d=n+e|0;e=Z+f|0;e=d>>>0>>0?e+1|0:e;n=we(P,ka,ta,pa);f=n+d|0;d=Z+e|0;d=f>>>0>>0?d+1|0:d;e=f;n=fa>>31;f=we(q,A,fa,n);e=e+f|0;d=Z+d|0;d=e>>>0>>0?d+1|0:d;f=we(g,J,R,la);e=f+e|0;d=Z+d|0;d=e>>>0>>0?d+1|0:d;u=we(k,F,m,B);e=u+e|0;f=Z+d|0;d=b>>26;aa=(b&67108863)<<6|aa>>>26;b=aa+e|0;e=d+(e>>>0>>0?f+1|0:f)|0;f=b;d=f>>>0>>0?e+1|0:e;e=f+16777216|0;d=e>>>0<16777216?d+1|0:d;aa=e;b=d;G[a+28>>2]=f-(e&-33554432);d=we(l,z,s,C);e=Z;u=we(r,v,N,ja);d=u+d|0;f=Z+e|0;f=d>>>0>>0?f+1|0:f;u=we(x,H,P,ka);d=u+d|0;e=Z+f|0;e=d>>>0>>0?e+1|0:e;u=we(q,A,E,L);f=u+d|0;d=Z+e|0;d=f>>>0>>0?d+1|0:d;e=f;f=we(T,ra,R,la);e=e+f|0;d=Z+d|0;d=e>>>0>>0?d+1|0:d;f=we(m,B,$,na);e=f+e|0;d=Z+d|0;d=e>>>0>>0?d+1|0:d;j=we(j,_,S,ma);e=j+e|0;f=Z+d|0;o=we(t,w,o,Q);d=o+e|0;e=Z+(e>>>0>>0?f+1|0:f)|0;g=we(g,J,K,ia);f=g+d|0;d=Z+(d>>>0>>0?e+1|0:e)|0;d=f>>>0>>0?d+1|0:d;e=f;f=we(k,F,p,y);e=e+f|0;d=Z+d|0;d=e>>>0>>0?d+1|0:d;g=e;e=c>>26;f=(c&67108863)<<6|wa>>>26;c=g+f|0;d=d+e|0;g=c;d=c>>>0>>0?d+1|0:d;e=c+16777216|0;f=e>>>0<16777216?d+1|0:d;o=e;c=f;G[a+12>>2]=g-(e&-33554432);d=we(s,C,Y,ha);f=Z;g=we(r,v,m,B);e=g+d|0;d=Z+f|0;d=e>>>0>>0?d+1|0:d;f=we(t,w,x,H);e=f+e|0;d=Z+d|0;d=e>>>0>>0?d+1|0:d;g=we(E,L,D,ba);e=g+e|0;f=Z+d|0;f=e>>>0>>0?f+1|0:f;g=we(p,y,I,V);d=g+e|0;e=Z+f|0;e=d>>>0>>0?e+1|0:e;g=we(U,ca,O,da);f=g+d|0;d=Z+e|0;d=f>>>0>>0?d+1|0:d;e=f;f=we(l,z,ta,pa);e=e+f|0;d=Z+d|0;d=e>>>0>>0?d+1|0:d;f=we(fa,n,W,ea);e=f+e|0;d=Z+d|0;d=e>>>0>>0?d+1|0:d;g=qa;j=g>>31;D=we(q,A,g,j);e=D+e|0;f=Z+d|0;k=we(k,F,X,ga);d=k+e|0;e=Z+(e>>>0>>0?f+1|0:f)|0;e=d>>>0>>0?e+1|0:e;qa=d;d=b>>25;f=(b&33554431)<<7|aa>>>25;b=qa+f|0;d=d+e|0;d=b>>>0>>0?d+1|0:d;f=b;e=f+33554432|0;d=e>>>0<33554432?d+1|0:d;k=e;b=d;G[a+32>>2]=f-(e&-67108864);f=va-(Ca&-33554432)|0;e=c>>25;o=(c&33554431)<<7|o>>>25;d=Aa&-67108864;c=o+(ya-d|0)|0;d=e+(za-((d>>>0>ya>>>0)+Ba|0)|0)|0;d=c>>>0>>0?d+1|0:d;e=c;c=e+33554432|0;d=c>>>0<33554432?d+1|0:d;d=((d&67108863)<<6|c>>>26)+f|0;G[a+20>>2]=d;G[a+16>>2]=e-(c&-67108864);c=we(m,B,s,C);d=Z;e=we(r,v,R,la);c=e+c|0;d=Z+d|0;d=c>>>0>>0?d+1|0:d;f=we(x,H,S,ma);c=f+c|0;e=Z+d|0;e=c>>>0>>0?e+1|0:e;d=we(t,w,E,L);c=d+c|0;f=Z+e|0;f=c>>>0>>0?f+1|0:f;e=we(I,V,K,ia);c=e+c|0;d=Z+f|0;d=c>>>0>>0?d+1|0:d;e=we(p,y,O,da);c=e+c|0;d=Z+d|0;d=c>>>0>>0?d+1|0:d;e=we(N,ja,ta,pa);c=e+c|0;d=Z+d|0;d=c>>>0>>0?d+1|0:d;f=we(l,z,fa,n);c=f+c|0;e=Z+d|0;e=c>>>0>>0?e+1|0:e;d=we(g,j,P,ka);c=d+c|0;f=Z+e|0;f=c>>>0>>0?f+1|0:f;e=we(q,A,ua,ua>>31);c=e+c|0;d=Z+f|0;d=c>>>0>>0?d+1|0:d;e=b>>26;f=c;c=(b&67108863)<<6|k>>>26;b=f+c|0;d=d+e|0;d=b>>>0>>0?d+1|0:d;c=b;b=c+16777216|0;d=b>>>0<16777216?d+1|0:d;G[a+36>>2]=c-(b&-33554432);f=i-(xa&-33554432)|0;c=sa&-67108864;e=h-c|0;r=oa-((c>>>0>h>>>0)+Da|0)|0;c=d;d=d>>25;c=we((c&33554431)<<7|b>>>25,d,19,0);b=c+e|0;e=Z+r|0;d=b>>>0>>0?e+1|0:e;c=b;b=c+33554432|0;d=b>>>0<33554432?d+1|0:d;d=((d&67108863)<<6|b>>>26)+f|0;G[a+4>>2]=d;G[a>>2]=c-(b&-67108864)}function Va(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,H=0,I=0,J=0,K=0,L=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ja=0,ka=0,la=0;y=Y-48|0;Y=y;ia(a,b);ia(a+80|0,b+40|0);C=G[b+92>>2];o=C<<1;I=o>>31;f=G[b+84>>2];i=f<<1;E=i>>31;c=we(o,I,i,E);e=Z;r=G[b+88>>2];J=r;t=r>>31;m=we(r,t,r,t);d=m+c|0;c=Z+e|0;c=d>>>0>>0?c+1|0:c;g=G[b+96>>2];K=g>>31;l=G[b+80>>2];m=l<<1;F=m>>31;e=we(g,K,m,F);d=e+d|0;c=Z+c|0;c=d>>>0>>0?c+1|0:c;B=G[b+108>>2];n=M(B,38);S=n>>31;aa=B>>31;e=we(n,S,B,aa);d=e+d|0;c=Z+c|0;c=d>>>0>>0?c+1|0:c;e=d;z=G[b+112>>2];h=M(z,19);L=h>>31;u=G[b+104>>2];d=u<<1;k=we(h,L,d,d>>31);e=e+k|0;d=Z+c|0;d=e>>>0>>0?d+1|0:d;T=G[b+116>>2];k=M(T,38);H=k>>31;x=G[b+100>>2];v=x<<1;P=v>>31;c=we(k,H,v,P);e=c+e|0;d=Z+d|0;c=(c>>>0>e>>>0?d+1|0:d)<<1|e>>>31;U=c;ba=e<<1;e=ba+33554432|0;c=e>>>0<33554432?c+1|0:c;V=e;W=c;j=(c&67108863)<<6|e>>>26;w=c>>26;c=we(i,E,g,K);e=Z;r=r<<1;Q=r>>31;ca=C>>31;A=we(r,Q,C,ca);d=A+c|0;c=Z+e|0;c=d>>>0>>0?c+1|0:c;X=x>>31;A=we(x,X,m,F);e=A+d|0;d=Z+c|0;d=e>>>0>>0?d+1|0:d;A=B<<1;da=A>>31;N=we(h,L,A,da);e=N+e|0;c=Z+d|0;c=e>>>0>>0?c+1|0:c;O=u>>31;d=we(k,H,u,O);e=d+e|0;c=Z+c|0;d=(d>>>0>e>>>0?c+1|0:c)<<1|e>>>31;c=e<<1;e=c+j|0;d=d+w|0;N=e;d=c>>>0>e>>>0?d+1|0:d;c=d;e=e+16777216|0;c=e>>>0<16777216?c+1|0:c;_=e;j=(c&33554431)<<7|e>>>25;w=c>>25;c=we(o,I,C,ca);e=Z;s=we(g,K,r,Q);d=s+c|0;c=Z+e|0;c=d>>>0>>0?c+1|0:c;e=we(i,E,v,P);d=e+d|0;c=Z+c|0;c=d>>>0>>0?c+1|0:c;s=we(m,F,u,O);e=s+d|0;d=Z+c|0;d=e>>>0>>0?d+1|0:d;$=z>>31;s=we(h,L,z,$);e=s+e|0;c=Z+d|0;c=e>>>0>>0?c+1|0:c;s=we(k,H,A,da);e=s+e|0;d=Z+c|0;d=(e>>>0>>0?d+1|0:d)<<1|e>>>31;c=j;j=e<<1;e=c+j|0;c=d+w|0;c=e>>>0>>0?c+1|0:c;w=e;d=e+33554432|0;c=d>>>0<33554432?c+1|0:c;s=d;e=c;G[a+144>>2]=w-(d&-67108864);c=M(x,38);w=we(c,c>>31,x,X);j=Z;c=l;d=c>>31;l=we(c,d,c,d);c=l+w|0;d=Z+j|0;d=c>>>0>>0?d+1|0:d;l=M(u,19);ea=l>>31;w=g<<1;fa=w>>31;D=we(l,ea,w,fa);j=D+c|0;c=Z+d|0;c=j>>>0>>0?c+1|0:c;d=j;j=we(o,I,n,S);d=d+j|0;c=Z+c|0;c=d>>>0>>0?c+1|0:c;D=we(h,L,r,Q);j=D+d|0;d=Z+c|0;d=j>>>0>>0?d+1|0:d;D=we(i,E,k,H);j=D+j|0;c=Z+d|0;c=(j>>>0>>0?c+1|0:c)<<1|j>>>31;D=c;ga=j<<1;j=ga+33554432|0;d=j>>>0<33554432?c+1|0:c;ka=d;R=(d&67108863)<<6|j>>>26;ha=d>>26;c=we(l,ea,v,P);p=Z;q=f;ja=f>>31;f=we(m,F,f,ja);d=f+c|0;c=Z+p|0;c=d>>>0>>0?c+1|0:c;p=we(g,K,n,S);f=p+d|0;d=Z+c|0;d=f>>>0

>>0?d+1|0:d;p=we(h,L,o,I);f=p+f|0;c=Z+d|0;c=f>>>0

>>0?c+1|0:c;p=we(k,H,J,t);f=p+f|0;d=Z+c|0;d=(f>>>0

>>0?d+1|0:d)<<1|f>>>31;c=R;R=f<<1;f=c+R|0;c=d+ha|0;c=f>>>0>>0?c+1|0:c;ha=f;f=f+16777216|0;c=f>>>0<16777216?c+1|0:c;R=f;la=(c&33554431)<<7|f>>>25;p=c>>25;c=we(m,F,J,t);f=Z;q=we(i,E,q,ja);d=q+c|0;c=Z+f|0;l=we(l,ea,u,O);f=l+d|0;d=Z+(d>>>0>>0?c+1|0:c)|0;d=f>>>0>>0?d+1|0:d;l=we(v,P,n,S);f=l+f|0;c=Z+d|0;c=f>>>0>>0?c+1|0:c;d=f;f=we(h,L,w,fa);d=d+f|0;c=Z+c|0;c=d>>>0>>0?c+1|0:c;l=we(k,H,o,I);f=l+d|0;d=Z+c|0;c=(f>>>0>>0?d+1|0:d)<<1|f>>>31;d=f<<1;f=d+la|0;c=c+p|0;q=f;c=d>>>0>f>>>0?c+1|0:c;l=f+33554432|0;f=l>>>0<33554432?c+1|0:c;G[a+128>>2]=q-(l&-67108864);c=we(r,Q,x,X);d=Z;q=we(g,K,o,I);c=q+c|0;d=Z+d|0;d=c>>>0>>0?d+1|0:d;p=we(i,E,u,O);q=p+c|0;c=Z+d|0;c=q>>>0

>>0?c+1|0:c;p=we(m,F,B,aa);q=p+q|0;d=Z+c|0;d=q>>>0

>>0?d+1|0:d;p=we(k,H,z,$);q=p+q|0;c=Z+d|0;d=e>>26;s=(e&67108863)<<6|s>>>26;e=s+(q<<1)|0;c=d+((q>>>0

>>0?c+1|0:c)<<1|q>>>31)|0;c=e>>>0>>0?c+1|0:c;s=e;d=c;c=e+16777216|0;d=c>>>0<16777216?d+1|0:d;q=c;e=d;G[a+148>>2]=s-(c&-33554432);c=we(m,F,C,ca);C=Z;t=we(i,E,J,t);d=t+c|0;c=Z+C|0;c=d>>>0>>0?c+1|0:c;n=we(u,O,n,S);d=n+d|0;c=Z+c|0;c=d>>>0>>0?c+1|0:c;n=we(h,L,v,P);h=n+d|0;d=Z+c|0;d=h>>>0>>0?d+1|0:d;c=h;h=we(k,H,g,K);c=c+h|0;d=Z+d|0;d=(c>>>0>>0?d+1|0:d)<<1;h=c;c=d|c>>>31;d=f>>26;s=h<<1;h=(f&67108863)<<6|l>>>26;f=s+h|0;c=c+d|0;c=f>>>0>>0?c+1|0:c;h=f;d=f+16777216|0;c=d>>>0<16777216?c+1|0:c;n=d;f=c;G[a+132>>2]=h-(d&-33554432);c=we(u,O,r,Q);h=Z;g=we(g,K,g,K);d=g+c|0;c=Z+h|0;c=d>>>0>>0?c+1|0:c;g=we(o,I,v,P);d=g+d|0;c=Z+c|0;c=d>>>0>>0?c+1|0:c;g=we(i,E,A,da);d=g+d|0;c=Z+c|0;c=d>>>0>>0?c+1|0:c;h=we(m,F,z,$);g=h+d|0;d=Z+c|0;d=g>>>0>>0?d+1|0:d;c=g;g=k;k=T;v=k>>31;g=we(g,H,k,v);c=c+g|0;d=Z+d|0;d=(c>>>0>>0?d+1|0:d)<<1;g=c;c=d|c>>>31;d=e>>25;h=g<<1;g=(e&33554431)<<7|q>>>25;e=h+g|0;c=c+d|0;c=e>>>0>>0?c+1|0:c;g=e;d=e+33554432|0;c=d>>>0<33554432?c+1|0:c;h=d;e=c;G[a+152>>2]=g-(d&-67108864);t=N-(_&-33554432)|0;c=V&-67108864;d=ba-c|0;g=U-((c>>>0>ba>>>0)+W|0)|0;c=f>>25;n=(f&33554431)<<7|n>>>25;f=n+d|0;d=c+g|0;g=f;d=f>>>0>>0?d+1|0:d;c=d;f=f+33554432|0;c=f>>>0<33554432?c+1|0:c;c=((c&67108863)<<6|f>>>26)+t|0;G[a+140>>2]=c;G[a+136>>2]=g-(f&-67108864);c=we(o,I,u,O);d=Z;f=we(x,X,w,fa);c=f+c|0;d=Z+d|0;d=c>>>0>>0?d+1|0:d;o=we(r,Q,B,aa);f=o+c|0;c=Z+d|0;c=f>>>0>>0?c+1|0:c;i=we(i,E,z,$);f=i+f|0;d=Z+c|0;d=f>>>0>>0?d+1|0:d;i=we(m,F,k,v);f=i+f|0;c=Z+d|0;c=(f>>>0>>0?c+1|0:c)<<1|f>>>31;d=e>>26;g=f<<1;f=(e&67108863)<<6|h>>>26;e=g+f|0;c=c+d|0;d=e>>>0>>0?c+1|0:c;c=e+16777216|0;d=c>>>0<16777216?d+1|0:d;G[a+156>>2]=e-(c&-33554432);f=ha-(R&-33554432)|0;e=j&-67108864;i=ga-e|0;m=D-((e>>>0>ga>>>0)+ka|0)|0;e=we((d&33554431)<<7|c>>>25,d>>25,19,0);c=e+i|0;d=Z+m|0;d=c>>>0>>0?d+1|0:d;e=c;c=c+33554432|0;d=c>>>0<33554432?d+1|0:d;d=((d&67108863)<<6|c>>>26)+f|0;G[a+124>>2]=d;G[a+120>>2]=e-(c&-67108864);c=G[b+44>>2];d=G[b+48>>2];e=G[b+52>>2];f=G[b+56>>2];i=G[b+60>>2];m=G[b- -64>>2];k=G[b+68>>2];o=G[b+72>>2];g=G[b+40>>2];h=G[b>>2];u=G[b+4>>2];v=G[b+8>>2];r=G[b+12>>2];n=G[b+16>>2];t=G[b+20>>2];x=G[b+24>>2];z=G[b+28>>2];J=G[b+32>>2];G[a+76>>2]=G[b+76>>2]+G[b+36>>2];G[a+72>>2]=o+J;G[a+68>>2]=k+z;J=a- -64|0;G[J>>2]=m+x;G[a+60>>2]=i+t;G[a+56>>2]=f+n;G[a+52>>2]=e+r;G[a+48>>2]=d+v;G[a+44>>2]=c+u;G[a+40>>2]=g+h;ia(y,a+40|0);b=G[a+84>>2];c=G[a+88>>2];d=G[a+92>>2];e=G[a+96>>2];f=G[a+100>>2];i=G[a+104>>2];m=G[a+108>>2];k=G[a+112>>2];o=G[a>>2];g=G[a+80>>2];h=G[a+4>>2];u=G[a+8>>2];v=G[a+12>>2];r=G[a+16>>2];n=G[a+20>>2];t=G[a+24>>2];x=G[a+28>>2];z=G[a+32>>2];B=G[a+116>>2];C=G[a+36>>2];A=B-C|0;G[a+116>>2]=A;l=k-z|0;G[a+112>>2]=l;w=m-x|0;G[a+108>>2]=w;j=i-t|0;G[a+104>>2]=j;T=f-n|0;G[a+100>>2]=T;U=e-r|0;G[a+96>>2]=U;V=d-v|0;G[a+92>>2]=V;W=c-u|0;G[a+88>>2]=W;N=b-h|0;G[a+84>>2]=N;_=g-o|0;G[a+80>>2]=_;B=B+C|0;G[a+76>>2]=B;k=k+z|0;G[a+72>>2]=k;m=m+x|0;G[a+68>>2]=m;i=i+t|0;G[J>>2]=i;f=f+n|0;G[a+60>>2]=f;e=e+r|0;G[a+56>>2]=e;d=d+v|0;G[a+52>>2]=d;c=c+u|0;G[a+48>>2]=c;b=b+h|0;G[a+44>>2]=b;o=g+o|0;G[a+40>>2]=o;g=G[y>>2];h=G[y+4>>2];u=G[y+8>>2];v=G[y+12>>2];r=G[y+16>>2];n=G[y+20>>2];t=G[y+24>>2];x=G[y+28>>2];z=G[y+32>>2];G[a+36>>2]=G[y+36>>2]-B;G[a+32>>2]=z-k;G[a+28>>2]=x-m;G[a+24>>2]=t-i;G[a+20>>2]=n-f;G[a+16>>2]=r-e;G[a+12>>2]=v-d;G[a+8>>2]=u-c;G[a+4>>2]=h-b;G[a>>2]=g-o;b=G[a+124>>2];c=G[a+128>>2];d=G[a+132>>2];e=G[a+136>>2];f=G[a+140>>2];i=G[a+144>>2];m=G[a+148>>2];k=G[a+152>>2];o=G[a+120>>2];G[a+156>>2]=G[a+156>>2]-A;G[a+152>>2]=k-l;G[a+148>>2]=m-w;G[a+144>>2]=i-j;G[a+140>>2]=f-T;G[a+136>>2]=e-U;G[a+132>>2]=d-V;G[a+128>>2]=c-W;G[a+124>>2]=b-N;G[a+120>>2]=o-_;Y=y+48|0}function Da(a,b,c,d,e,f,g,h){var i=0,j=0,k=0,l=0,m=0;i=Y-432|0;Y=i;j=i- -64|0;G[j>>2]=0;G[j+4>>2]=0;G[i+72>>2]=0;G[i+76>>2]=0;G[i+80>>2]=0;G[i+84>>2]=0;G[i+88>>2]=0;G[i+92>>2]=0;G[i+96>>2]=0;G[i+100>>2]=0;G[i+104>>2]=0;G[i+108>>2]=0;G[i+48>>2]=0;G[i+52>>2]=0;G[i+56>>2]=0;G[i+60>>2]=0;E[i+15|0]=1;j=c?c:1792;d=c?d:32;a:{if(d>>>0>=65){c=i+224|0;G[c+80>>2]=1779033703;G[c+84>>2]=-1150833019;G[c+72>>2]=0;G[c+76>>2]=0;G[c+64>>2]=0;G[c+104>>2]=528734635;G[c+108>>2]=1541459225;G[c+96>>2]=1359893119;G[c+100>>2]=-1694144372;G[c+88>>2]=1013904242;G[c+92>>2]=-1521486534;ua(c,j,d);Ea(c,i+48|0);break a}ma(i+48|0,j,d)}c=G[i+108>>2];G[i+280>>2]=G[i+104>>2];G[i+284>>2]=c;c=G[i+100>>2];G[i+272>>2]=G[i+96>>2];G[i+276>>2]=c;c=G[i+92>>2];G[i+264>>2]=G[i+88>>2];G[i+268>>2]=c;c=G[i+84>>2];G[i+256>>2]=G[i+80>>2];G[i+260>>2]=c;c=G[i+76>>2];G[i+248>>2]=G[i+72>>2];G[i+252>>2]=c;c=i- -64|0;d=G[c+4>>2];G[i+240>>2]=G[c>>2];G[i+244>>2]=d;c=G[i+60>>2];G[i+232>>2]=G[i+56>>2];G[i+236>>2]=c;c=G[i+52>>2];G[i+224>>2]=G[i+48>>2];G[i+228>>2]=c;c=0;while(1){d=i+224|0;j=d+c|0;E[j|0]=H[j|0]^54;j=d+(c|1)|0;E[j|0]=H[j|0]^54;j=d+(c|2)|0;E[j|0]=H[j|0]^54;j=d+(c|3)|0;E[j|0]=H[j|0]^54;c=c+4|0;if((c|0)!=64){continue}break}c=i+112|0;G[c+80>>2]=1779033703;G[c+84>>2]=-1150833019;G[c+72>>2]=0;G[c+76>>2]=0;G[c+64>>2]=0;G[c+104>>2]=528734635;G[c+108>>2]=1541459225;G[c+96>>2]=1359893119;G[c+100>>2]=-1694144372;G[c+88>>2]=1013904242;G[c+92>>2]=-1521486534;ua(c,d,64);la(d,64);ua(c,a,b);a=G[i+108>>2];G[i+392>>2]=G[i+104>>2];G[i+396>>2]=a;a=G[i+100>>2];G[i+384>>2]=G[i+96>>2];G[i+388>>2]=a;a=G[i+92>>2];G[i+376>>2]=G[i+88>>2];G[i+380>>2]=a;a=G[i+84>>2];G[i+368>>2]=G[i+80>>2];G[i+372>>2]=a;a=G[i+76>>2];G[i+360>>2]=G[i+72>>2];G[i+364>>2]=a;a=i- -64|0;b=G[a+4>>2];G[i+352>>2]=G[a>>2];G[i+356>>2]=b;a=G[i+60>>2];G[i+344>>2]=G[i+56>>2];G[i+348>>2]=a;a=G[i+52>>2];G[i+336>>2]=G[i+48>>2];G[i+340>>2]=a;c=0;while(1){b=i+336|0;a=b+c|0;E[a|0]=H[a|0]^92;a=b+(c|1)|0;E[a|0]=H[a|0]^92;a=b+(c|2)|0;E[a|0]=H[a|0]^92;a=b+(c|3)|0;E[a|0]=H[a|0]^92;c=c+4|0;if((c|0)!=64){continue}break}Ea(i+112|0,i+400|0);a=i+224|0;G[a+80>>2]=1779033703;G[a+84>>2]=-1150833019;G[a+72>>2]=0;G[a+76>>2]=0;G[a+64>>2]=0;G[a+104>>2]=528734635;G[a+108>>2]=1541459225;G[a+96>>2]=1359893119;G[a+100>>2]=-1694144372;G[a+88>>2]=1013904242;G[a+92>>2]=-1521486534;ua(a,b,96);Ea(a,i+16|0);la(a,112);la(b,96);G[i+80>>2]=0;G[i+84>>2]=0;G[i+88>>2]=0;G[i+92>>2]=0;G[i+96>>2]=0;G[i+100>>2]=0;G[i+104>>2]=0;G[i+108>>2]=0;j=G[i+44>>2];a=G[i+40>>2];G[i+72>>2]=a;G[i+76>>2]=j;k=G[i+36>>2];b=G[i+32>>2];c=i- -64|0;G[c>>2]=b;G[c+4>>2]=k;l=G[i+20>>2];c=G[i+16>>2];G[i+48>>2]=c;G[i+52>>2]=l;m=G[i+28>>2];d=G[i+24>>2];G[i+56>>2]=d;G[i+60>>2]=m;G[i+280>>2]=0;G[i+284>>2]=0;G[i+272>>2]=0;G[i+276>>2]=0;G[i+264>>2]=0;G[i+268>>2]=0;G[i+256>>2]=0;G[i+260>>2]=0;G[i+248>>2]=a;G[i+252>>2]=j;G[i+240>>2]=b;G[i+244>>2]=k;G[i+232>>2]=d;G[i+236>>2]=m;G[i+224>>2]=c;G[i+228>>2]=l;c=0;while(1){b=i+224|0;a=b+c|0;E[a|0]=H[a|0]^54;a=b+(c|1)|0;E[a|0]=H[a|0]^54;a=b+(c|2)|0;E[a|0]=H[a|0]^54;a=b+(c|3)|0;E[a|0]=H[a|0]^54;c=c+4|0;if((c|0)!=64){continue}break}a=i+112|0;G[a+80>>2]=1779033703;G[a+84>>2]=-1150833019;G[a+72>>2]=0;G[a+76>>2]=0;G[a+64>>2]=0;G[a+104>>2]=528734635;G[a+108>>2]=1541459225;G[a+96>>2]=1359893119;G[a+100>>2]=-1694144372;G[a+88>>2]=1013904242;G[a+92>>2]=-1521486534;ua(a,b,64);la(b,64);ua(a,e,f);ua(a,i+15|0,1);a=G[i+108>>2];G[i+392>>2]=G[i+104>>2];G[i+396>>2]=a;a=G[i+100>>2];G[i+384>>2]=G[i+96>>2];G[i+388>>2]=a;a=G[i+92>>2];G[i+376>>2]=G[i+88>>2];G[i+380>>2]=a;a=G[i+84>>2];G[i+368>>2]=G[i+80>>2];G[i+372>>2]=a;a=G[i+76>>2];G[i+360>>2]=G[i+72>>2];G[i+364>>2]=a;a=i- -64|0;b=G[a+4>>2];G[i+352>>2]=G[a>>2];G[i+356>>2]=b;a=G[i+60>>2];G[i+344>>2]=G[i+56>>2];G[i+348>>2]=a;a=G[i+52>>2];G[i+336>>2]=G[i+48>>2];G[i+340>>2]=a;c=0;while(1){b=i+336|0;a=b+c|0;E[a|0]=H[a|0]^92;a=b+(c|1)|0;E[a|0]=H[a|0]^92;a=b+(c|2)|0;E[a|0]=H[a|0]^92;a=b+(c|3)|0;E[a|0]=H[a|0]^92;c=c+4|0;if((c|0)!=64){continue}break}j=i+400|0;Ea(i+112|0,j);a=i+224|0;G[a+80>>2]=1779033703;G[a+84>>2]=-1150833019;G[a+72>>2]=0;G[a+76>>2]=0;G[a+64>>2]=0;G[a+104>>2]=528734635;G[a+108>>2]=1541459225;G[a+96>>2]=1359893119;G[a+100>>2]=-1694144372;G[a+88>>2]=1013904242;G[a+92>>2]=-1521486534;ua(a,b,96);Ea(a,i+16|0);la(a,112);la(b,96);if(h>>>0>=33){while(1){a=G[i+20>>2];b=G[i+16>>2];E[g|0]=b;E[g+1|0]=b>>>8;E[g+2|0]=b>>>16;E[g+3|0]=b>>>24;E[g+4|0]=a;E[g+5|0]=a>>>8;E[g+6|0]=a>>>16;E[g+7|0]=a>>>24;a=G[i+28>>2];b=G[i+24>>2];E[g+8|0]=b;E[g+9|0]=b>>>8;E[g+10|0]=b>>>16;E[g+11|0]=b>>>24;E[g+12|0]=a;E[g+13|0]=a>>>8;E[g+14|0]=a>>>16;E[g+15|0]=a>>>24;a=G[i+44>>2];b=G[i+40>>2];E[g+24|0]=b;E[g+25|0]=b>>>8;E[g+26|0]=b>>>16;E[g+27|0]=b>>>24;E[g+28|0]=a;E[g+29|0]=a>>>8;E[g+30|0]=a>>>16;E[g+31|0]=a>>>24;a=G[i+36>>2];b=G[i+32>>2];E[g+16|0]=b;E[g+17|0]=b>>>8;E[g+18|0]=b>>>16;E[g+19|0]=b>>>24;E[g+20|0]=a;E[g+21|0]=a>>>8;E[g+22|0]=a>>>16;E[g+23|0]=a>>>24;E[i+15|0]=H[i+15|0]+1;a=G[i+108>>2];G[i+280>>2]=G[i+104>>2];G[i+284>>2]=a;a=G[i+100>>2];G[i+272>>2]=G[i+96>>2];G[i+276>>2]=a;a=G[i+92>>2];G[i+264>>2]=G[i+88>>2];G[i+268>>2]=a;a=G[i+84>>2];G[i+256>>2]=G[i+80>>2];G[i+260>>2]=a;a=G[i+76>>2];G[i+248>>2]=G[i+72>>2];G[i+252>>2]=a;d=i- -64|0;a=d;b=G[a+4>>2];G[i+240>>2]=G[a>>2];G[i+244>>2]=b;a=G[i+60>>2];G[i+232>>2]=G[i+56>>2];G[i+236>>2]=a;a=G[i+52>>2];G[i+224>>2]=G[i+48>>2];G[i+228>>2]=a;g=g+32|0;c=0;while(1){b=i+224|0;a=b+c|0;E[a|0]=H[a|0]^54;a=b+(c|1)|0;E[a|0]=H[a|0]^54;a=b+(c|2)|0;E[a|0]=H[a|0]^54;a=b+(c|3)|0;E[a|0]=H[a|0]^54;c=c+4|0;if((c|0)!=64){continue}break}a=i+112|0;G[a+80>>2]=1779033703;G[a+84>>2]=-1150833019;G[a+72>>2]=0;G[a+76>>2]=0;G[a+64>>2]=0;G[a+104>>2]=528734635;G[a+108>>2]=1541459225;G[a+96>>2]=1359893119;G[a+100>>2]=-1694144372;G[a+88>>2]=1013904242;G[a+92>>2]=-1521486534;ua(a,b,64);la(b,64);ua(a,i+16|0,32);ua(a,e,f);ua(a,i+15|0,1);a=G[i+108>>2];G[i+392>>2]=G[i+104>>2];G[i+396>>2]=a;a=G[i+100>>2];G[i+384>>2]=G[i+96>>2];G[i+388>>2]=a;a=G[i+92>>2];G[i+376>>2]=G[i+88>>2];G[i+380>>2]=a;a=G[i+84>>2];G[i+368>>2]=G[i+80>>2];G[i+372>>2]=a;a=G[i+76>>2];G[i+360>>2]=G[i+72>>2];G[i+364>>2]=a;a=G[d+4>>2];G[i+352>>2]=G[d>>2];G[i+356>>2]=a;a=G[i+60>>2];G[i+344>>2]=G[i+56>>2];G[i+348>>2]=a;a=G[i+52>>2];G[i+336>>2]=G[i+48>>2];G[i+340>>2]=a;c=0;while(1){b=i+336|0;a=b+c|0;E[a|0]=H[a|0]^92;a=b+(c|1)|0;E[a|0]=H[a|0]^92;a=b+(c|2)|0;E[a|0]=H[a|0]^92;a=b+(c|3)|0;E[a|0]=H[a|0]^92;c=c+4|0;if((c|0)!=64){continue}break}Ea(i+112|0,j);a=i+224|0;G[a+80>>2]=1779033703;G[a+84>>2]=-1150833019;G[a+72>>2]=0;G[a+76>>2]=0;G[a+64>>2]=0;G[a+104>>2]=528734635;G[a+108>>2]=1541459225;G[a+96>>2]=1359893119;G[a+100>>2]=-1694144372;G[a+88>>2]=1013904242;G[a+92>>2]=-1521486534;ua(a,b,96);Ea(a,i+16|0);la(a,112);la(b,96);h=h-32|0;if(h>>>0>32){continue}break}}a=i+16|0;ma(g,a,h);la(i+112|0,112);la(i+48|0,64);la(a,32);Y=i+432|0}function hc(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=Ub(a,c);m=q+2|0;i=(m>>>0)/3|0;if(((m-M(i,3)|0)+(i<<2)|0)-2>>>0>g>>>0){G[a+3216>>2]=2;return-1}g=q+2|0;m=(g>>>0)/3|0;n=((((g-M(m,3)|0)+(m<<2)|0)-2|0)+f|0)-q|0;p=Y-16|0;Y=p;g=rb(a,c);if(!H[a+3220|0]){g=Bb(g)}a:{b:{if(g>>>0>q>>>0){G[a+3216>>2]=2;break b}m=rb(a,c);g=b;if(!H[a+3220|0]){E[n+1|0]=10;E[n|0]=3;b=n+2|0;E[b|0]=32;b=b+1|0;G[p+8>>2]=b;b=b+32|0;E[b|0]=18;b=b+1|0;E[b|0]=32;b=b+1|0;G[p+4>>2]=b;b=b+32|0;E[b|0]=26;b=b+1|0;E[b|0]=32;b=b+1|0;G[p>>2]=b;b=b+32|0;E[b|0]=34;n=b+1|0;b=m;if(b>>>0>=128){while(1){E[n|0]=b|128;n=n+1|0;i=b>>>0>16383;b=b>>>7|0;if(i){continue}break}}E[n|0]=b;G[p+12>>2]=n+1;i=H[a+3289|0]|H[a+3290|0]<<8|(H[a+3291|0]<<16|H[a+3292|0]<<24);h=G[p+8>>2];b=H[a+3285|0]|H[a+3286|0]<<8|(H[a+3287|0]<<16|H[a+3288|0]<<24);E[h|0]=b;E[h+1|0]=b>>>8;E[h+2|0]=b>>>16;E[h+3|0]=b>>>24;E[h+4|0]=i;E[h+5|0]=i>>>8;E[h+6|0]=i>>>16;E[h+7|0]=i>>>24;b=a+3309|0;i=H[b+4|0]|H[b+5|0]<<8|(H[b+6|0]<<16|H[b+7|0]<<24);b=H[b|0]|H[b+1|0]<<8|(H[b+2|0]<<16|H[b+3|0]<<24);E[h+24|0]=b;E[h+25|0]=b>>>8;E[h+26|0]=b>>>16;E[h+27|0]=b>>>24;E[h+28|0]=i;E[h+29|0]=i>>>8;E[h+30|0]=i>>>16;E[h+31|0]=i>>>24;b=a+3301|0;i=H[b+4|0]|H[b+5|0]<<8|(H[b+6|0]<<16|H[b+7|0]<<24);b=H[b|0]|H[b+1|0]<<8|(H[b+2|0]<<16|H[b+3|0]<<24);E[h+16|0]=b;E[h+17|0]=b>>>8;E[h+18|0]=b>>>16;E[h+19|0]=b>>>24;E[h+20|0]=i;E[h+21|0]=i>>>8;E[h+22|0]=i>>>16;E[h+23|0]=i>>>24;b=a+3293|0;i=H[b+4|0]|H[b+5|0]<<8|(H[b+6|0]<<16|H[b+7|0]<<24);b=H[b|0]|H[b+1|0]<<8|(H[b+2|0]<<16|H[b+3|0]<<24);E[h+8|0]=b;E[h+9|0]=b>>>8;E[h+10|0]=b>>>16;E[h+11|0]=b>>>24;E[h+12|0]=i;E[h+13|0]=i>>>8;E[h+14|0]=i>>>16;E[h+15|0]=i>>>24;i=H[a+3225|0]|H[a+3226|0]<<8|(H[a+3227|0]<<16|H[a+3228|0]<<24);h=G[p>>2];b=H[a+3221|0]|H[a+3222|0]<<8|(H[a+3223|0]<<16|H[a+3224|0]<<24);E[h|0]=b;E[h+1|0]=b>>>8;E[h+2|0]=b>>>16;E[h+3|0]=b>>>24;E[h+4|0]=i;E[h+5|0]=i>>>8;E[h+6|0]=i>>>16;E[h+7|0]=i>>>24;b=a+3229|0;i=H[b+4|0]|H[b+5|0]<<8|(H[b+6|0]<<16|H[b+7|0]<<24);b=H[b|0]|H[b+1|0]<<8|(H[b+2|0]<<16|H[b+3|0]<<24);E[h+8|0]=b;E[h+9|0]=b>>>8;E[h+10|0]=b>>>16;E[h+11|0]=b>>>24;E[h+12|0]=i;E[h+13|0]=i>>>8;E[h+14|0]=i>>>16;E[h+15|0]=i>>>24;b=a+3237|0;i=H[b+4|0]|H[b+5|0]<<8|(H[b+6|0]<<16|H[b+7|0]<<24);b=H[b|0]|H[b+1|0]<<8|(H[b+2|0]<<16|H[b+3|0]<<24);E[h+16|0]=b;E[h+17|0]=b>>>8;E[h+18|0]=b>>>16;E[h+19|0]=b>>>24;E[h+20|0]=i;E[h+21|0]=i>>>8;E[h+22|0]=i>>>16;E[h+23|0]=i>>>24;b=a+3245|0;i=H[b+4|0]|H[b+5|0]<<8|(H[b+6|0]<<16|H[b+7|0]<<24);b=H[b|0]|H[b+1|0]<<8|(H[b+2|0]<<16|H[b+3|0]<<24);E[h+24|0]=b;E[h+25|0]=b>>>8;E[h+26|0]=b>>>16;E[h+27|0]=b>>>24;E[h+28|0]=i;E[h+29|0]=i>>>8;E[h+30|0]=i>>>16;E[h+31|0]=i>>>24;i=H[a+3257|0]|H[a+3258|0]<<8|(H[a+3259|0]<<16|H[a+3260|0]<<24);h=G[p+4>>2];b=H[a+3253|0]|H[a+3254|0]<<8|(H[a+3255|0]<<16|H[a+3256|0]<<24);E[h|0]=b;E[h+1|0]=b>>>8;E[h+2|0]=b>>>16;E[h+3|0]=b>>>24;E[h+4|0]=i;E[h+5|0]=i>>>8;E[h+6|0]=i>>>16;E[h+7|0]=i>>>24;b=a+3261|0;i=H[b+4|0]|H[b+5|0]<<8|(H[b+6|0]<<16|H[b+7|0]<<24);b=H[b|0]|H[b+1|0]<<8|(H[b+2|0]<<16|H[b+3|0]<<24);E[h+8|0]=b;E[h+9|0]=b>>>8;E[h+10|0]=b>>>16;E[h+11|0]=b>>>24;E[h+12|0]=i;E[h+13|0]=i>>>8;E[h+14|0]=i>>>16;E[h+15|0]=i>>>24;b=a+3269|0;i=H[b+4|0]|H[b+5|0]<<8|(H[b+6|0]<<16|H[b+7|0]<<24);b=H[b|0]|H[b+1|0]<<8|(H[b+2|0]<<16|H[b+3|0]<<24);E[h+16|0]=b;E[h+17|0]=b>>>8;E[h+18|0]=b>>>16;E[h+19|0]=b>>>24;E[h+20|0]=i;E[h+21|0]=i>>>8;E[h+22|0]=i>>>16;E[h+23|0]=i>>>24;b=a+3277|0;i=H[b+4|0]|H[b+5|0]<<8|(H[b+6|0]<<16|H[b+7|0]<<24);b=H[b|0]|H[b+1|0]<<8|(H[b+2|0]<<16|H[b+3|0]<<24);E[h+24|0]=b;E[h+25|0]=b>>>8;E[h+26|0]=b>>>16;E[h+27|0]=b>>>24;E[h+28|0]=i;E[h+29|0]=i>>>8;E[h+30|0]=i>>>16;E[h+31|0]=i>>>24;n=G[p+12>>2]}l=Y-96|0;Y=l;h=a+48|0;i=(h|0)!=G[a+44>>2]?G[a+112>>2]:0;b=G[a+4>>2];j=_[G[G[b>>2]+4>>2]](b,c)|0;b=G[a+4>>2];i=Cb(i,j,_[G[G[b>>2]>>2]](b)|0);b=G[a+44>>2];c:{if(!((b|0)!=(h|0)|e>>>0>31)){G[a+8>>2]=1;i=-1;break c}if(i>>>0>m>>>0){G[a+8>>2]=2;i=-1;break c}if((b|0)==(h|0)){G[a+44>>2]=a+148;Ia(d,h);b=G[a>>2];m=l- -64|0;Ca(h,a+152|0,m);Da(m,32,a+12|0,32,G[b+8>>2],G[b+12>>2],l,64);b=G[l+28>>2];G[a+36>>2]=G[l+24>>2];G[a+40>>2]=b;b=G[l+20>>2];G[a+28>>2]=G[l+16>>2];G[a+32>>2]=b;b=G[l+12>>2];G[a+20>>2]=G[l+8>>2];G[a+24>>2]=b;b=G[l+4>>2];G[a+12>>2]=G[l>>2];G[a+16>>2]=b;b=G[l+36>>2];G[a+116>>2]=G[l+32>>2];G[a+120>>2]=b;b=G[l+44>>2];G[a+124>>2]=G[l+40>>2];G[a+128>>2]=b;b=G[l+52>>2];G[a+132>>2]=G[l+48>>2];G[a+136>>2]=b;b=G[l+60>>2];G[a+140>>2]=G[l+56>>2];G[a+144>>2]=b;G[a+112>>2]=0;la(l,64);la(m,32)}b=a+116|0;s=l+4|0;na(b,32,1868,1,s);G[l>>2]=G[a+112>>2];na(b,32,1869,1,b);G[a+112>>2]=G[a+112>>2]+1;b=G[a+4>>2];m=_[G[G[b>>2]+4>>2]](b,c)|0;o=G[l>>2];b=m;E[n+1|0]=10;E[n|0]=3;k=n+2|0;E[k|0]=32;j=l- -64|0;k=k+1|0;G[j>>2]=k;k=k+32|0;E[k|0]=16;r=k+1|0;if(o>>>0>=128){while(1){E[r|0]=o|128;r=r+1|0;k=o>>>0>16383;o=o>>>7|0;if(k){continue}break}}E[r+1|0]=34;E[r|0]=o;o=r+2|0;if(b>>>0>=128){while(1){E[o|0]=b|128;o=o+1|0;k=b>>>0>16383;b=b>>>7|0;if(k){continue}break}}E[o|0]=b;G[j+4>>2]=o+1;k=H[h+4|0]|H[h+5|0]<<8|(H[h+6|0]<<16|H[h+7|0]<<24);j=G[l+64>>2];b=H[h|0]|H[h+1|0]<<8|(H[h+2|0]<<16|H[h+3|0]<<24);E[j|0]=b;E[j+1|0]=b>>>8;E[j+2|0]=b>>>16;E[j+3|0]=b>>>24;E[j+4|0]=k;E[j+5|0]=k>>>8;E[j+6|0]=k>>>16;E[j+7|0]=k>>>24;k=H[h+28|0]|H[h+29|0]<<8|(H[h+30|0]<<16|H[h+31|0]<<24);b=H[h+24|0]|H[h+25|0]<<8|(H[h+26|0]<<16|H[h+27|0]<<24);E[j+24|0]=b;E[j+25|0]=b>>>8;E[j+26|0]=b>>>16;E[j+27|0]=b>>>24;E[j+28|0]=k;E[j+29|0]=k>>>8;E[j+30|0]=k>>>16;E[j+31|0]=k>>>24;k=H[h+20|0]|H[h+21|0]<<8|(H[h+22|0]<<16|H[h+23|0]<<24);b=H[h+16|0]|H[h+17|0]<<8|(H[h+18|0]<<16|H[h+19|0]<<24);E[j+16|0]=b;E[j+17|0]=b>>>8;E[j+18|0]=b>>>16;E[j+19|0]=b>>>24;E[j+20|0]=k;E[j+21|0]=k>>>8;E[j+22|0]=k>>>16;E[j+23|0]=k>>>24;k=H[h+12|0]|H[h+13|0]<<8|(H[h+14|0]<<16|H[h+15|0]<<24);b=H[h+8|0]|H[h+9|0]<<8|(H[h+10|0]<<16|H[h+11|0]<<24);E[j+8|0]=b;E[j+9|0]=b>>>8;E[j+10|0]=b>>>16;E[j+11|0]=b>>>24;E[j+12|0]=k;E[j+13|0]=k>>>8;E[j+14|0]=k>>>16;E[j+15|0]=k>>>24;b=G[a+4>>2];_[G[G[b>>2]+8>>2]](b,s,32,g,c,G[l+68>>2],m,n,i)|0;la(l,36)}Y=l+96|0;b=i;if((b|0)!=-1){break a}G[a+3216>>2]=G[a+8>>2];G[a+8>>2]=0}b=-1}Y=p+16|0;la(d,e);a=-1;if((b|0)!=-1){a=q+2|0;b=(a>>>0)/3|0;a=((a-M(b,3)|0)+(b<<2)|0)-2|0;pa((f+a|0)-q|0,q,f)}return a|0}function ya(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;x=Y-640|0;Y=x;c=a- -64|0;f=G[c>>2];y=G[c+4>>2];h=G[a+56>>2];z=G[a+60>>2];g=G[a+48>>2];r=G[a+52>>2];i=G[a+40>>2];s=G[a+44>>2];p=G[a+32>>2];u=G[a+36>>2];q=G[a+24>>2];v=G[a+28>>2];n=G[a+16>>2];A=G[a+20>>2];m=G[a+8>>2];t=G[a+12>>2];while(1){c=B<<3;k=c+x|0;d=b+c|0;j=H[d|0]|H[d+1|0]<<8|(H[d+2|0]<<16|H[d+3|0]<<24);o=j<<24|(j&65280)<<8;e=j&16711680;l=j&-16777216;w=e<<24|l<<8;C=e>>>8|l>>>24|o;d=H[d+4|0]|H[d+5|0]<<8|(H[d+6|0]<<16|H[d+7|0]<<24);c=d;d=k;G[d>>2]=((c&255)<<24|j>>>8)&-16777216|((c&16777215)<<8|j>>>24)&16711680|(c>>>8&65280|c>>>24)|w;G[d+4>>2]=C;B=B+1|0;if((B|0)!=16){continue}break}b=16;d=G[x>>2];e=G[x+4>>2];while(1){w=(b<<3)+x|0;c=w-56|0;C=G[c>>2];o=G[c+4>>2];c=w-16|0;j=G[c>>2];c=G[c+4>>2];k=c;c=ze(j,c,45);l=Z;B=ze(j,k,3)^c;c=k>>>6|0;k=B^((k&63)<<26|j>>>6);j=k+C|0;c=(c^(Z^l))+o|0;c=(j>>>0>>0?c+1|0:c)+e|0;o=d+j|0;k=o>>>0>>0?c+1|0:c;c=w-120|0;d=G[c>>2];c=G[c+4>>2];e=c;c=ze(d,c,63);j=Z;c=ze(d,e,56)^c;l=Z^j;j=((e&127)<<25|d>>>7)^c;o=j+o|0;c=(e>>>7^l)+k|0;G[w>>2]=o;G[w+4>>2]=j>>>0>o>>>0?c+1|0:c;b=b+1|0;if((b|0)!=80){continue}break}b=0;while(1){w=b<<3;c=w+2080|0;k=G[c>>2];e=G[c+4>>2];d=ze(i,s,50);c=Z;d=ze(i,s,46)^d;c=Z^c;d=f+(ze(i,s,23)^d)|0;c=y+(Z^c)|0;c=(d>>>0>>0?c+1|0:c)+e|0;f=d;d=d+k|0;c=f>>>0>d>>>0?c+1|0:c;f=d;e=w+x|0;d=G[e>>2];f=f+d|0;c=G[e+4>>2]+c|0;c=d>>>0>f>>>0?c+1|0:c;d=h^i&(h^g);f=d+f|0;c=(z^s&(r^z))+c|0;c=d>>>0>f>>>0?c+1|0:c;d=ze(m,t,36);e=Z;d=ze(m,t,30)^d;k=Z^e;e=ze(m,t,25)^d;j=e+f|0;d=c;c=c+(Z^k)|0;c=(v&(t|A)|t&A)+(e>>>0>j>>>0?c+1|0:c)|0;e=q&(m|n)|m&n;l=e+j|0;c=e>>>0>l>>>0?c+1|0:c;e=ze(l,c,36);k=Z;y=c;e=ze(l,c,30)^e;k=Z^k;j=ze(l,c,25)^e;e=n&(m|l)|m&l;j=j+e|0;c=(A&(c|t)|c&t)+(Z^k)|0;C=j;e=e>>>0>j>>>0?c+1|0:c;o=w|8;c=o+2080|0;j=G[c>>2];k=G[c+4>>2];c=d+u|0;d=f+p|0;p=d>>>0

>>0?c+1|0:c;c=z+(r^p&(s^r))|0;u=d;d=h+(g^d&(g^i))|0;c=(d>>>0>>0?c+1|0:c)+k|0;f=d+j|0;c=f>>>0>>0?c+1|0:c;d=ze(u,p,50);h=Z;d=ze(u,p,46)^d;h=Z^h;d=ze(u,p,23)^d;f=d+f|0;c=(Z^h)+c|0;c=d>>>0>f>>>0?c+1|0:c;k=f;f=o+x|0;d=G[f>>2];h=k+d|0;c=G[f+4>>2]+c|0;d=d>>>0>h>>>0?c+1|0:c;c=d+e|0;o=h+C|0;c=o>>>0>>0?c+1|0:c;e=ze(o,c,36);f=Z;z=c;e=ze(o,c,30)^e;f=Z^f;k=ze(o,c,25)^e;e=m&(l|o)|l&o;k=k+e|0;c=(t&(c|y)|c&y)+(Z^f)|0;j=k;f=e>>>0>j>>>0?c+1|0:c;k=w|16;c=k+2080|0;e=G[c>>2];c=r+G[c+4>>2]|0;e=e+g|0;c=e>>>0>>0?c+1|0:c;r=e;g=k+x|0;e=G[g>>2];k=r+e|0;c=G[g+4>>2]+c|0;g=k;e=e>>>0>g>>>0?c+1|0:c;c=d+v|0;d=h+q|0;c=d>>>0>>0?c+1|0:c;v=d;d=i^d&(i^u);g=d+g|0;q=c;c=(s^c&(p^s))+e|0;c=d>>>0>g>>>0?c+1|0:c;d=ze(v,q,50);e=Z;d=ze(v,q,46)^d;e=Z^e;d=ze(v,q,23)^d;h=d+g|0;c=(Z^e)+c|0;d=d>>>0>h>>>0?c+1|0:c;c=d+f|0;r=h+j|0;c=r>>>0>>0?c+1|0:c;e=ze(r,c,36);g=Z;j=c;e=ze(r,c,30)^e;g=Z^g;f=ze(r,c,25)^e;e=l&(o|r)|o&r;f=f+e|0;c=(y&(c|z)|c&z)+(Z^g)|0;k=f;g=e>>>0>f>>>0?c+1|0:c;f=w|24;c=f+2080|0;e=G[c>>2];c=s+G[c+4>>2]|0;e=e+i|0;c=e>>>0>>0?c+1|0:c;i=e;f=f+x|0;e=G[f>>2];i=i+e|0;c=G[f+4>>2]+c|0;f=i;e=e>>>0>f>>>0?c+1|0:c;c=d+A|0;d=h+n|0;c=d>>>0>>0?c+1|0:c;i=d;d=u^d&(u^v);h=d+f|0;n=c;c=(p^c&(q^p))+e|0;c=d>>>0>h>>>0?c+1|0:c;d=ze(i,n,50);e=Z;d=ze(i,n,46)^d;e=Z^e;d=ze(i,n,23)^d;h=d+h|0;c=(Z^e)+c|0;d=d>>>0>h>>>0?c+1|0:c;c=d+g|0;s=h+k|0;c=s>>>0>>0?c+1|0:c;e=ze(s,c,36);g=Z;k=c;e=ze(s,c,30)^e;g=Z^g;f=ze(s,c,25)^e;e=o&(s|r)|s&r;f=f+e|0;c=(z&(c|j)|c&j)+(Z^g)|0;A=f;g=e>>>0>f>>>0?c+1|0:c;f=w|32;c=f+2080|0;e=G[c>>2];c=p+G[c+4>>2]|0;e=e+u|0;c=e>>>0>>0?c+1|0:c;u=e;f=f+x|0;e=G[f>>2];p=u+e|0;c=G[f+4>>2]+c|0;f=p;e=e>>>0>f>>>0?c+1|0:c;c=d+t|0;d=h+m|0;c=d>>>0>>0?c+1|0:c;t=d;d=v^d&(i^v);h=d+f|0;m=c;c=(q^c&(n^q))+e|0;c=d>>>0>h>>>0?c+1|0:c;d=ze(t,m,50);e=Z;d=ze(t,m,46)^d;e=Z^e;d=ze(t,m,23)^d;h=d+h|0;c=(Z^e)+c|0;f=g;g=d>>>0>h>>>0?c+1|0:c;c=f+g|0;p=h+A|0;c=p>>>0>>0?c+1|0:c;d=ze(p,c,36);e=Z;u=c;d=ze(p,c,30)^d;e=Z^e;f=ze(p,c,25)^d;d=r&(p|s)|p&s;f=f+d|0;c=(j&(c|k)|c&k)+(Z^e)|0;A=f;e=d>>>0>f>>>0?c+1|0:c;f=w|40;c=f+2080|0;d=G[c>>2];c=q+G[c+4>>2]|0;d=d+v|0;c=d>>>0>>0?c+1|0:c;v=d;f=f+x|0;d=G[f>>2];q=v+d|0;c=G[f+4>>2]+c|0;d=d>>>0>q>>>0?c+1|0:c;c=g+y|0;f=h+l|0;c=f>>>0>>0?c+1|0:c;g=i^(i^t)&f;h=g+q|0;y=c;c=(n^c&(m^n))+d|0;c=h>>>0>>0?c+1|0:c;d=ze(f,y,50);g=Z;d=ze(f,y,46)^d;g=Z^g;d=ze(f,y,23)^d;h=d+h|0;c=(Z^g)+c|0;g=d>>>0>h>>>0?c+1|0:c;c=g+e|0;q=h+A|0;c=q>>>0>>0?c+1|0:c;d=ze(q,c,36);e=Z;v=c;d=ze(q,c,30)^d;e=Z^e;A=ze(q,c,25)^d;d=s&(q|p)|q&p;l=A+d|0;c=(k&(c|u)|c&u)+(Z^e)|0;A=l;e=d>>>0>l>>>0?c+1|0:c;l=w|48;c=l+2080|0;d=G[c>>2];c=n+G[c+4>>2]|0;d=d+i|0;c=d>>>0>>0?c+1|0:c;i=d;n=l+x|0;d=G[n>>2];i=i+d|0;c=G[n+4>>2]+c|0;d=d>>>0>i>>>0?c+1|0:c;c=g+z|0;h=h+o|0;c=h>>>0>>0?c+1|0:c;g=t^(f^t)&h;i=g+i|0;z=c;c=(m^c&(m^y))+d|0;c=g>>>0>i>>>0?c+1|0:c;d=ze(h,z,50);g=Z;d=ze(h,z,46)^d;n=Z^g;d=ze(h,z,23)^d;g=d+i|0;c=(Z^n)+c|0;i=e;e=d>>>0>g>>>0?c+1|0:c;c=i+e|0;n=g+A|0;c=n>>>0>>0?c+1|0:c;d=ze(n,c,36);i=Z;A=c;d=ze(n,c,30)^d;i=Z^i;l=ze(n,c,25)^d;d=p&(n|q)|n&q;l=l+d|0;c=(u&(c|v)|c&v)+(Z^i)|0;o=l;i=d>>>0>l>>>0?c+1|0:c;l=w|56;c=l+2080|0;d=G[c>>2];c=m+G[c+4>>2]|0;d=d+t|0;c=d>>>0>>0?c+1|0:c;t=d;m=l+x|0;d=G[m>>2];l=t+d|0;c=G[m+4>>2]+c|0;m=l;d=d>>>0>m>>>0?c+1|0:c;c=e+j|0;g=g+r|0;c=g>>>0>>0?c+1|0:c;e=f^(f^h)&g;j=e+m|0;r=c;c=(y^c&(y^z))+d|0;c=e>>>0>j>>>0?c+1|0:c;d=ze(g,r,50);e=Z;d=ze(g,r,46)^d;m=Z^e;d=ze(g,r,23)^d;e=d+j|0;c=(Z^m)+c|0;d=d>>>0>e>>>0?c+1|0:c;c=d+i|0;m=e+o|0;t=m>>>0>>0?c+1|0:c;c=d+k|0;i=e+s|0;s=i>>>0>>0?c+1|0:c;c=b>>>0<72;b=b+8|0;if(c){continue}break}c=G[a+12>>2]+t|0;b=G[a+8>>2];d=b+m|0;G[a+8>>2]=d;G[a+12>>2]=b>>>0>d>>>0?c+1|0:c;c=G[a+20>>2]+A|0;b=G[a+16>>2];d=b+n|0;G[a+16>>2]=d;G[a+20>>2]=b>>>0>d>>>0?c+1|0:c;c=G[a+28>>2]+v|0;b=G[a+24>>2];d=b+q|0;G[a+24>>2]=d;G[a+28>>2]=b>>>0>d>>>0?c+1|0:c;c=G[a+36>>2]+u|0;b=G[a+32>>2];d=b+p|0;G[a+32>>2]=d;G[a+36>>2]=b>>>0>d>>>0?c+1|0:c;c=G[a+44>>2]+s|0;b=G[a+40>>2];d=b+i|0;G[a+40>>2]=d;G[a+44>>2]=b>>>0>d>>>0?c+1|0:c;c=G[a+52>>2]+r|0;b=G[a+48>>2];d=b+g|0;G[a+48>>2]=d;G[a+52>>2]=b>>>0>d>>>0?c+1|0:c;c=G[a+60>>2]+z|0;b=G[a+56>>2];d=b+h|0;G[a+56>>2]=d;G[a+60>>2]=b>>>0>d>>>0?c+1|0:c;c=a- -64|0;d=c;a=G[c>>2];b=a+f|0;c=G[c+4>>2]+y|0;G[d>>2]=b;G[d+4>>2]=a>>>0>b>>>0?c+1|0:c;Y=x+640|0}function Wb(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0;g=Y-208|0;Y=g;db(g+172|0,d,e);a:{b:{f=G[g+176>>2];c:{if(!f){d=(c|f)!=0;break c}d=G[g+180>>2]==32}d:{if(!d){break d}j=G[g+200>>2];if(!j){break d}e=G[g+184>>2];if(!e|G[g+188>>2]!=32){break d}d=G[g+192>>2];if(!d){break d}if(G[g+196>>2]==32){break b}}G[a+3216>>2]=4;a=-1;break a}e:{if(!c|!f){break e}if(!Oa(c,f)){break e}G[a+3216>>2]=6;a=-1;break a}h=H[f+4|0]|H[f+5|0]<<8|(H[f+6|0]<<16|H[f+7|0]<<24);c=H[f|0]|H[f+1|0]<<8|(H[f+2|0]<<16|H[f+3|0]<<24);E[a+3221|0]=c;E[a+3222|0]=c>>>8;E[a+3223|0]=c>>>16;E[a+3224|0]=c>>>24;E[a+3225|0]=h;E[a+3226|0]=h>>>8;E[a+3227|0]=h>>>16;E[a+3228|0]=h>>>24;h=H[f+28|0]|H[f+29|0]<<8|(H[f+30|0]<<16|H[f+31|0]<<24);i=a+3245|0;c=H[f+24|0]|H[f+25|0]<<8|(H[f+26|0]<<16|H[f+27|0]<<24);E[i|0]=c;E[i+1|0]=c>>>8;E[i+2|0]=c>>>16;E[i+3|0]=c>>>24;E[i+4|0]=h;E[i+5|0]=h>>>8;E[i+6|0]=h>>>16;E[i+7|0]=h>>>24;h=H[f+20|0]|H[f+21|0]<<8|(H[f+22|0]<<16|H[f+23|0]<<24);i=a+3237|0;c=H[f+16|0]|H[f+17|0]<<8|(H[f+18|0]<<16|H[f+19|0]<<24);E[i|0]=c;E[i+1|0]=c>>>8;E[i+2|0]=c>>>16;E[i+3|0]=c>>>24;E[i+4|0]=h;E[i+5|0]=h>>>8;E[i+6|0]=h>>>16;E[i+7|0]=h>>>24;h=H[f+12|0]|H[f+13|0]<<8|(H[f+14|0]<<16|H[f+15|0]<<24);i=a+3229|0;c=H[f+8|0]|H[f+9|0]<<8|(H[f+10|0]<<16|H[f+11|0]<<24);E[i|0]=c;E[i+1|0]=c>>>8;E[i+2|0]=c>>>16;E[i+3|0]=c>>>24;E[i+4|0]=h;E[i+5|0]=h>>>8;E[i+6|0]=h>>>16;E[i+7|0]=h>>>24;f=H[e+28|0]|H[e+29|0]<<8|(H[e+30|0]<<16|H[e+31|0]<<24);h=a+3277|0;c=H[e+24|0]|H[e+25|0]<<8|(H[e+26|0]<<16|H[e+27|0]<<24);E[h|0]=c;E[h+1|0]=c>>>8;E[h+2|0]=c>>>16;E[h+3|0]=c>>>24;E[h+4|0]=f;E[h+5|0]=f>>>8;E[h+6|0]=f>>>16;E[h+7|0]=f>>>24;f=H[e+20|0]|H[e+21|0]<<8|(H[e+22|0]<<16|H[e+23|0]<<24);h=a+3269|0;c=H[e+16|0]|H[e+17|0]<<8|(H[e+18|0]<<16|H[e+19|0]<<24);E[h|0]=c;E[h+1|0]=c>>>8;E[h+2|0]=c>>>16;E[h+3|0]=c>>>24;E[h+4|0]=f;E[h+5|0]=f>>>8;E[h+6|0]=f>>>16;E[h+7|0]=f>>>24;f=H[e+12|0]|H[e+13|0]<<8|(H[e+14|0]<<16|H[e+15|0]<<24);h=a+3261|0;c=H[e+8|0]|H[e+9|0]<<8|(H[e+10|0]<<16|H[e+11|0]<<24);E[h|0]=c;E[h+1|0]=c>>>8;E[h+2|0]=c>>>16;E[h+3|0]=c>>>24;E[h+4|0]=f;E[h+5|0]=f>>>8;E[h+6|0]=f>>>16;E[h+7|0]=f>>>24;f=H[e+4|0]|H[e+5|0]<<8|(H[e+6|0]<<16|H[e+7|0]<<24);c=H[e|0]|H[e+1|0]<<8|(H[e+2|0]<<16|H[e+3|0]<<24);E[a+3253|0]=c;E[a+3254|0]=c>>>8;E[a+3255|0]=c>>>16;E[a+3256|0]=c>>>24;E[a+3257|0]=f;E[a+3258|0]=f>>>8;E[a+3259|0]=f>>>16;E[a+3260|0]=f>>>24;e=H[d+28|0]|H[d+29|0]<<8|(H[d+30|0]<<16|H[d+31|0]<<24);f=a+3309|0;c=H[d+24|0]|H[d+25|0]<<8|(H[d+26|0]<<16|H[d+27|0]<<24);E[f|0]=c;E[f+1|0]=c>>>8;E[f+2|0]=c>>>16;E[f+3|0]=c>>>24;E[f+4|0]=e;E[f+5|0]=e>>>8;E[f+6|0]=e>>>16;E[f+7|0]=e>>>24;e=H[d+20|0]|H[d+21|0]<<8|(H[d+22|0]<<16|H[d+23|0]<<24);f=a+3301|0;c=H[d+16|0]|H[d+17|0]<<8|(H[d+18|0]<<16|H[d+19|0]<<24);E[f|0]=c;E[f+1|0]=c>>>8;E[f+2|0]=c>>>16;E[f+3|0]=c>>>24;E[f+4|0]=e;E[f+5|0]=e>>>8;E[f+6|0]=e>>>16;E[f+7|0]=e>>>24;e=H[d+12|0]|H[d+13|0]<<8|(H[d+14|0]<<16|H[d+15|0]<<24);f=a+3293|0;c=H[d+8|0]|H[d+9|0]<<8|(H[d+10|0]<<16|H[d+11|0]<<24);E[f|0]=c;E[f+1|0]=c>>>8;E[f+2|0]=c>>>16;E[f+3|0]=c>>>24;E[f+4|0]=e;E[f+5|0]=e>>>8;E[f+6|0]=e>>>16;E[f+7|0]=e>>>24;e=H[d+4|0]|H[d+5|0]<<8|(H[d+6|0]<<16|H[d+7|0]<<24);c=H[d|0]|H[d+1|0]<<8|(H[d+2|0]<<16|H[d+3|0]<<24);E[a+3285|0]=c;E[a+3286|0]=c>>>8;E[a+3287|0]=c>>>16;E[a+3288|0]=c>>>24;E[a+3289|0]=e;E[a+3290|0]=e>>>8;E[a+3291|0]=e>>>16;E[a+3292|0]=e>>>24;c=G[a+4>>2];hb(g+140|0,j,G[g+204>>2],_[G[G[c>>2]>>2]](c)|0);c=G[g+156>>2];if(!(G[g+160>>2]==32?c:0)){G[a+3216>>2]=4;a=-1;break a}d=H[c+28|0]|H[c+29|0]<<8|(H[c+30|0]<<16|H[c+31|0]<<24);G[g+128>>2]=H[c+24|0]|H[c+25|0]<<8|(H[c+26|0]<<16|H[c+27|0]<<24);G[g+132>>2]=d;d=H[c+20|0]|H[c+21|0]<<8|(H[c+22|0]<<16|H[c+23|0]<<24);G[g+120>>2]=H[c+16|0]|H[c+17|0]<<8|(H[c+18|0]<<16|H[c+19|0]<<24);G[g+124>>2]=d;d=H[c+12|0]|H[c+13|0]<<8|(H[c+14|0]<<16|H[c+15|0]<<24);G[g+112>>2]=H[c+8|0]|H[c+9|0]<<8|(H[c+10|0]<<16|H[c+11|0]<<24);G[g+116>>2]=d;d=H[c+4|0]|H[c+5|0]<<8|(H[c+6|0]<<16|H[c+7|0]<<24);G[g+104>>2]=H[c|0]|H[c+1|0]<<8|(H[c+2|0]<<16|H[c+3|0]<<24);G[g+108>>2]=d;e=a+3285|0;c=b+164|0;d=G[b+160>>2];f:{g:{if((c|0)!=(d|0)){while(1){if(Na(c+5|0,e,32)){break g}c=c+72|0;if((d|0)!=(c|0)){continue}break}}c=0;if(!H[b+7364|0]){break g}d=b+7368|0;if(Na(b+7373|0,e,32)){break f}if(H[b+7364|0]<2){break g}c=Na(b+7445|0,e,32)?b+7440|0:0}d=c}if(!d){G[a+3216>>2]=6;a=-1;break a}c=d+5|0;Ca(c,a+3221|0,g);d=b+96|0;b=a+3253|0;Ca(d,b,g+32|0);Ca(c,b,g- -64|0);d=Y+-64|0;Y=d;b=G[a>>2];Da(g,96,0,0,G[b>>2],G[b+4>>2],d,64);c=G[a+148>>2];if((c|0)!=(a+492|0)){c=c+68|0;G[a+148>>2]=c}c=c-68|0;b=a+152|0;if((c|0)!=(b|0)){while(1){e=c;c=c-68|0;ma(e,c,68);if((b|0)!=(c|0)){continue}break}}G[a+184>>2]=0;c=G[d+28>>2];G[a+36>>2]=G[d+24>>2];G[a+40>>2]=c;c=G[d+20>>2];G[a+28>>2]=G[d+16>>2];G[a+32>>2]=c;c=G[d+12>>2];G[a+20>>2]=G[d+8>>2];G[a+24>>2]=c;c=G[d+4>>2];G[a+12>>2]=G[d>>2];G[a+16>>2]=c;c=G[d+60>>2];G[a+212>>2]=G[d+56>>2];G[a+216>>2]=c;c=G[d+52>>2];G[a+204>>2]=G[d+48>>2];G[a+208>>2]=c;c=G[d+44>>2];G[a+196>>2]=G[d+40>>2];G[a+200>>2]=c;c=G[d+36>>2];G[a+188>>2]=G[d+32>>2];G[a+192>>2]=c;c=H[g+108|0]|H[g+109|0]<<8|(H[g+110|0]<<16|H[g+111|0]<<24);a=H[g+104|0]|H[g+105|0]<<8|(H[g+106|0]<<16|H[g+107|0]<<24);E[b|0]=a;E[b+1|0]=a>>>8;E[b+2|0]=a>>>16;E[b+3|0]=a>>>24;E[b+4|0]=c;E[b+5|0]=c>>>8;E[b+6|0]=c>>>16;E[b+7|0]=c>>>24;c=H[g+116|0]|H[g+117|0]<<8|(H[g+118|0]<<16|H[g+119|0]<<24);a=H[g+112|0]|H[g+113|0]<<8|(H[g+114|0]<<16|H[g+115|0]<<24);E[b+8|0]=a;E[b+9|0]=a>>>8;E[b+10|0]=a>>>16;E[b+11|0]=a>>>24;E[b+12|0]=c;E[b+13|0]=c>>>8;E[b+14|0]=c>>>16;E[b+15|0]=c>>>24;c=H[g+124|0]|H[g+125|0]<<8|(H[g+126|0]<<16|H[g+127|0]<<24);a=H[g+120|0]|H[g+121|0]<<8|(H[g+122|0]<<16|H[g+123|0]<<24);E[b+16|0]=a;E[b+17|0]=a>>>8;E[b+18|0]=a>>>16;E[b+19|0]=a>>>24;E[b+20|0]=c;E[b+21|0]=c>>>8;E[b+22|0]=c>>>16;E[b+23|0]=c>>>24;c=H[g+132|0]|H[g+133|0]<<8|(H[g+134|0]<<16|H[g+135|0]<<24);a=H[g+128|0]|H[g+129|0]<<8|(H[g+130|0]<<16|H[g+131|0]<<24);E[b+24|0]=a;E[b+25|0]=a>>>8;E[b+26|0]=a>>>16;E[b+27|0]=a>>>24;E[b+28|0]=c;E[b+29|0]=c>>>8;E[b+30|0]=c>>>16;E[b+31|0]=c>>>24;la(d,64);Y=d- -64|0;la(g,96);a=0}Y=g+208|0;return a}function rc(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0;k=Y+-64|0;Y=k;a:{b:{if((ra(d)|0)==32){if((ra(f)|0)==32){break b}}G[a+3216>>2]=7;d=-1;break a}i=d;d=k+32|0;va(c,i,d);va(e,f,k);e=Y-224|0;Y=e;c:{if(h>>>0<=63){G[a+3216>>2]=1;d=-1;break c}l=e+160|0;Ia(g,l);c=e+96|0;Ia(g+32|0,c);E[a+3220|0]=0;j=H[b+124|0]|H[b+125|0]<<8|(H[b+126|0]<<16|H[b+127|0]<<24);i=a+3245|0;f=H[b+120|0]|H[b+121|0]<<8|(H[b+122|0]<<16|H[b+123|0]<<24);E[i|0]=f;E[i+1|0]=f>>>8;E[i+2|0]=f>>>16;E[i+3|0]=f>>>24;E[i+4|0]=j;E[i+5|0]=j>>>8;E[i+6|0]=j>>>16;E[i+7|0]=j>>>24;j=H[b+116|0]|H[b+117|0]<<8|(H[b+118|0]<<16|H[b+119|0]<<24);i=a+3237|0;f=H[b+112|0]|H[b+113|0]<<8|(H[b+114|0]<<16|H[b+115|0]<<24);E[i|0]=f;E[i+1|0]=f>>>8;E[i+2|0]=f>>>16;E[i+3|0]=f>>>24;E[i+4|0]=j;E[i+5|0]=j>>>8;E[i+6|0]=j>>>16;E[i+7|0]=j>>>24;j=H[b+108|0]|H[b+109|0]<<8|(H[b+110|0]<<16|H[b+111|0]<<24);i=a+3229|0;f=H[b+104|0]|H[b+105|0]<<8|(H[b+106|0]<<16|H[b+107|0]<<24);E[i|0]=f;E[i+1|0]=f>>>8;E[i+2|0]=f>>>16;E[i+3|0]=f>>>24;E[i+4|0]=j;E[i+5|0]=j>>>8;E[i+6|0]=j>>>16;E[i+7|0]=j>>>24;j=H[b+100|0]|H[b+101|0]<<8|(H[b+102|0]<<16|H[b+103|0]<<24);f=H[b+96|0]|H[b+97|0]<<8|(H[b+98|0]<<16|H[b+99|0]<<24);E[a+3221|0]=f;E[a+3222|0]=f>>>8;E[a+3223|0]=f>>>16;E[a+3224|0]=f>>>24;E[a+3225|0]=j;E[a+3226|0]=j>>>8;E[a+3227|0]=j>>>16;E[a+3228|0]=j>>>24;j=H[e+164|0]|H[e+165|0]<<8|(H[e+166|0]<<16|H[e+167|0]<<24);f=H[e+160|0]|H[e+161|0]<<8|(H[e+162|0]<<16|H[e+163|0]<<24);E[a+3253|0]=f;E[a+3254|0]=f>>>8;E[a+3255|0]=f>>>16;E[a+3256|0]=f>>>24;E[a+3257|0]=j;E[a+3258|0]=j>>>8;E[a+3259|0]=j>>>16;E[a+3260|0]=j>>>24;j=H[e+172|0]|H[e+173|0]<<8|(H[e+174|0]<<16|H[e+175|0]<<24);i=a+3261|0;f=H[e+168|0]|H[e+169|0]<<8|(H[e+170|0]<<16|H[e+171|0]<<24);E[i|0]=f;E[i+1|0]=f>>>8;E[i+2|0]=f>>>16;E[i+3|0]=f>>>24;E[i+4|0]=j;E[i+5|0]=j>>>8;E[i+6|0]=j>>>16;E[i+7|0]=j>>>24;j=H[e+180|0]|H[e+181|0]<<8|(H[e+182|0]<<16|H[e+183|0]<<24);i=a+3269|0;f=H[e+176|0]|H[e+177|0]<<8|(H[e+178|0]<<16|H[e+179|0]<<24);E[i|0]=f;E[i+1|0]=f>>>8;E[i+2|0]=f>>>16;E[i+3|0]=f>>>24;E[i+4|0]=j;E[i+5|0]=j>>>8;E[i+6|0]=j>>>16;E[i+7|0]=j>>>24;j=H[e+188|0]|H[e+189|0]<<8|(H[e+190|0]<<16|H[e+191|0]<<24);i=a+3277|0;f=H[e+184|0]|H[e+185|0]<<8|(H[e+186|0]<<16|H[e+187|0]<<24);E[i|0]=f;E[i+1|0]=f>>>8;E[i+2|0]=f>>>16;E[i+3|0]=f>>>24;E[i+4|0]=j;E[i+5|0]=j>>>8;E[i+6|0]=j>>>16;E[i+7|0]=j>>>24;j=H[k+4|0]|H[k+5|0]<<8|(H[k+6|0]<<16|H[k+7|0]<<24);f=H[k|0]|H[k+1|0]<<8|(H[k+2|0]<<16|H[k+3|0]<<24);E[a+3285|0]=f;E[a+3286|0]=f>>>8;E[a+3287|0]=f>>>16;E[a+3288|0]=f>>>24;E[a+3289|0]=j;E[a+3290|0]=j>>>8;E[a+3291|0]=j>>>16;E[a+3292|0]=j>>>24;j=H[k+12|0]|H[k+13|0]<<8|(H[k+14|0]<<16|H[k+15|0]<<24);i=a+3293|0;f=H[k+8|0]|H[k+9|0]<<8|(H[k+10|0]<<16|H[k+11|0]<<24);E[i|0]=f;E[i+1|0]=f>>>8;E[i+2|0]=f>>>16;E[i+3|0]=f>>>24;E[i+4|0]=j;E[i+5|0]=j>>>8;E[i+6|0]=j>>>16;E[i+7|0]=j>>>24;j=H[k+20|0]|H[k+21|0]<<8|(H[k+22|0]<<16|H[k+23|0]<<24);i=a+3301|0;f=H[k+16|0]|H[k+17|0]<<8|(H[k+18|0]<<16|H[k+19|0]<<24);E[i|0]=f;E[i+1|0]=f>>>8;E[i+2|0]=f>>>16;E[i+3|0]=f>>>24;E[i+4|0]=j;E[i+5|0]=j>>>8;E[i+6|0]=j>>>16;E[i+7|0]=j>>>24;j=H[k+28|0]|H[k+29|0]<<8|(H[k+30|0]<<16|H[k+31|0]<<24);i=a+3309|0;f=H[k+24|0]|H[k+25|0]<<8|(H[k+26|0]<<16|H[k+27|0]<<24);E[i|0]=f;E[i+1|0]=f>>>8;E[i+2|0]=f>>>16;E[i+3|0]=f>>>24;E[i+4|0]=j;E[i+5|0]=j>>>8;E[i+6|0]=j>>>16;E[i+7|0]=j>>>24;Ca(b+96|0,k,e);Ca(l,d,e+32|0);Ca(l,k,e- -64|0);d=Y+-64|0;Y=d;b=G[a>>2];Da(e,96,0,0,G[b>>2],G[b+4>>2],d,64);b=G[a+44>>2];if((b|0)!=(a+148|0)){b=b+100|0;G[a+44>>2]=b}b=b-100|0;f=a+48|0;if((b|0)!=(f|0)){while(1){i=b;b=b-100|0;ma(i,b,100);if((b|0)!=(f|0)){continue}break}}G[a+112>>2]=0;b=G[d+28>>2];G[a+36>>2]=G[d+24>>2];G[a+40>>2]=b;b=G[d+20>>2];G[a+28>>2]=G[d+16>>2];G[a+32>>2]=b;b=G[d+12>>2];G[a+20>>2]=G[d+8>>2];G[a+24>>2]=b;b=G[d+4>>2];G[a+12>>2]=G[d>>2];G[a+16>>2]=b;b=G[d+60>>2];G[a+140>>2]=G[d+56>>2];G[a+144>>2]=b;b=G[d+52>>2];G[a+132>>2]=G[d+48>>2];G[a+136>>2]=b;b=G[d+44>>2];G[a+124>>2]=G[d+40>>2];G[a+128>>2]=b;b=G[d+36>>2];G[a+116>>2]=G[d+32>>2];G[a+120>>2]=b;b=H[c+4|0]|H[c+5|0]<<8|(H[c+6|0]<<16|H[c+7|0]<<24);a=H[c|0]|H[c+1|0]<<8|(H[c+2|0]<<16|H[c+3|0]<<24);E[f|0]=a;E[f+1|0]=a>>>8;E[f+2|0]=a>>>16;E[f+3|0]=a>>>24;E[f+4|0]=b;E[f+5|0]=b>>>8;E[f+6|0]=b>>>16;E[f+7|0]=b>>>24;b=H[c+12|0]|H[c+13|0]<<8|(H[c+14|0]<<16|H[c+15|0]<<24);a=H[c+8|0]|H[c+9|0]<<8|(H[c+10|0]<<16|H[c+11|0]<<24);E[f+8|0]=a;E[f+9|0]=a>>>8;E[f+10|0]=a>>>16;E[f+11|0]=a>>>24;E[f+12|0]=b;E[f+13|0]=b>>>8;E[f+14|0]=b>>>16;E[f+15|0]=b>>>24;b=H[c+20|0]|H[c+21|0]<<8|(H[c+22|0]<<16|H[c+23|0]<<24);a=H[c+16|0]|H[c+17|0]<<8|(H[c+18|0]<<16|H[c+19|0]<<24);E[f+16|0]=a;E[f+17|0]=a>>>8;E[f+18|0]=a>>>16;E[f+19|0]=a>>>24;E[f+20|0]=b;E[f+21|0]=b>>>8;E[f+22|0]=b>>>16;E[f+23|0]=b>>>24;b=H[c+28|0]|H[c+29|0]<<8|(H[c+30|0]<<16|H[c+31|0]<<24);a=H[c+24|0]|H[c+25|0]<<8|(H[c+26|0]<<16|H[c+27|0]<<24);E[f+24|0]=a;E[f+25|0]=a>>>8;E[f+26|0]=a>>>16;E[f+27|0]=a>>>24;E[f+28|0]=b;E[f+29|0]=b>>>8;E[f+30|0]=b>>>16;E[f+31|0]=b>>>24;b=H[c+36|0]|H[c+37|0]<<8|(H[c+38|0]<<16|H[c+39|0]<<24);a=H[c+32|0]|H[c+33|0]<<8|(H[c+34|0]<<16|H[c+35|0]<<24);E[f+32|0]=a;E[f+33|0]=a>>>8;E[f+34|0]=a>>>16;E[f+35|0]=a>>>24;E[f+36|0]=b;E[f+37|0]=b>>>8;E[f+38|0]=b>>>16;E[f+39|0]=b>>>24;b=H[c+44|0]|H[c+45|0]<<8|(H[c+46|0]<<16|H[c+47|0]<<24);a=H[c+40|0]|H[c+41|0]<<8|(H[c+42|0]<<16|H[c+43|0]<<24);E[f+40|0]=a;E[f+41|0]=a>>>8;E[f+42|0]=a>>>16;E[f+43|0]=a>>>24;E[f+44|0]=b;E[f+45|0]=b>>>8;E[f+46|0]=b>>>16;E[f+47|0]=b>>>24;b=H[c+52|0]|H[c+53|0]<<8|(H[c+54|0]<<16|H[c+55|0]<<24);a=H[c+48|0]|H[c+49|0]<<8|(H[c+50|0]<<16|H[c+51|0]<<24);E[f+48|0]=a;E[f+49|0]=a>>>8;E[f+50|0]=a>>>16;E[f+51|0]=a>>>24;E[f+52|0]=b;E[f+53|0]=b>>>8;E[f+54|0]=b>>>16;E[f+55|0]=b>>>24;b=H[c+60|0]|H[c+61|0]<<8|(H[c+62|0]<<16|H[c+63|0]<<24);a=H[c+56|0]|H[c+57|0]<<8|(H[c+58|0]<<16|H[c+59|0]<<24);E[f+56|0]=a;E[f+57|0]=a>>>8;E[f+58|0]=a>>>16;E[f+59|0]=a>>>24;E[f+60|0]=b;E[f+61|0]=b>>>8;E[f+62|0]=b>>>16;E[f+63|0]=b>>>24;la(d,64);Y=d- -64|0;la(l,64);la(c,64);la(e,96);d=0}Y=e+224|0;la(g,h)}Y=k- -64|0;return d|0}function Fb(a,b,c,d,e,f){a=a|0;b=+b;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,w=0,x=0,y=0,z=0,B=0,C=0;n=Y-560|0;Y=n;G[n+44>>2]=0;A(+b);g=v(1)|0;v(0)|0;a:{if((g|0)<0){t=1;x=1034;b=-b;A(+b);g=v(1)|0;v(0)|0;break a}if(e&2048){t=1;x=1037;break a}t=e&1;x=t?1040:1035;z=!t}b:{if((g&2146435072)==2146435072){g=t+3|0;sa(a,32,c,g,e&-65537);qa(a,x,t);d=f&32;qa(a,b!=b?d?1053:1248:d?1057:1321,3);sa(a,32,c,g,e^8192);m=(c|0)<(g|0)?g:c;break b}u=n+16|0;c:{d:{e:{b=Jb(b,n+44|0);b=b+b;if(b!=0){g=G[n+44>>2];G[n+44>>2]=g-1;w=f|32;if((w|0)!=97){break e}break c}w=f|32;if((w|0)==97){break c}k=G[n+44>>2];l=(d|0)<0?6:d;break d}k=g-29|0;G[n+44>>2]=k;b=b*268435456;l=(d|0)<0?6:d}p=(n+48|0)+((k|0)>=0?288:0)|0;h=p;while(1){if(b<4294967296&b>=0){d=~~b>>>0}else{d=0}G[h>>2]=d;h=h+4|0;b=(b-+(d>>>0))*1e9;if(b!=0){continue}break}f:{if((k|0)<=0){d=k;g=h;i=p;break f}i=p;d=k;while(1){j=(d|0)>=29?29:d;g=h-4|0;g:{if(i>>>0>g>>>0){break g}o=0;while(1){d=G[g>>2];m=j&31;y=o;if((j&63)>>>0>=32){o=d<>>32-m;d=d<>>0>m>>>0?o+1|0:o,1e9);B=g,C=m-we(o,Z,1e9,0)|0,G[B>>2]=C;g=g-4|0;if(i>>>0<=g>>>0){continue}break}if(!o){break g}i=i-4|0;G[i>>2]=o}while(1){g=h;if(i>>>0>>0){h=g-4|0;if(!G[h>>2]){continue}}break}d=G[n+44>>2]-j|0;G[n+44>>2]=d;h=g;if((d|0)>0){continue}break}}if((d|0)<0){s=((l+25>>>0)/9|0)+1|0;q=(w|0)==102;while(1){d=0-d|0;m=(d|0)>=9?9:d;h:{if(g>>>0<=i>>>0){h=G[i>>2];break h}o=1e9>>>m|0;j=-1<>2];G[h>>2]=y+(d>>>m|0);d=M(o,d&j);h=h+4|0;if(h>>>0>>0){continue}break}h=G[i>>2];if(!d){break h}G[g>>2]=d;g=g+4|0}d=m+G[n+44>>2]|0;G[n+44>>2]=d;i=(!h<<2)+i|0;h=q?p:i;g=g-h>>2>(s|0)?h+(s<<2)|0:g;if((d|0)<0){continue}break}}d=0;i:{if(g>>>0<=i>>>0){break i}d=M(p-i>>2,9);h=10;j=G[i>>2];if(j>>>0<10){break i}while(1){d=d+1|0;h=M(h,10);if(j>>>0>=h>>>0){continue}break}}h=(l-((w|0)!=102?d:0)|0)-((w|0)==103&(l|0)!=0)|0;if((h|0)<(M(g-p>>2,9)-9|0)){o=h+9216|0;j=(o|0)/9|0;s=((n+48|0)+((k|0)<0?4:292)|0)+(j<<2)|0;k=s-4096|0;h=10;m=o-M(j,9)|0;if((m|0)<=7){while(1){h=M(h,10);m=m+1|0;if((m|0)!=8){continue}break}}q=G[k>>2];o=(q>>>0)/(h>>>0)|0;m=q-M(h,o)|0;j=s-4092|0;j:{if(!m&(j|0)==(g|0)){break j}k:{if(!(o&1)){b=9007199254740992;if(!(E[s-4100|0]&1)|((h|0)!=1e9|i>>>0>=k>>>0)){break k}}b=9007199254740994}r=(g|0)==(j|0)?1:1.5;j=h>>>1|0;r=j>>>0>m>>>0?.5:(j|0)==(m|0)?r:1.5;if(!(H[x|0]!=45|z)){r=-r;b=-b}j=q-m|0;G[k>>2]=j;if(b+r==b){break j}d=h+j|0;G[k>>2]=d;if(d>>>0>=1e9){while(1){G[k>>2]=0;k=k-4|0;if(k>>>0>>0){i=i-4|0;G[i>>2]=0}d=G[k>>2]+1|0;G[k>>2]=d;if(d>>>0>999999999){continue}break}}d=M(p-i>>2,9);h=10;j=G[i>>2];if(j>>>0<10){break j}while(1){d=d+1|0;h=M(h,10);if(j>>>0>=h>>>0){continue}break}}h=k+4|0;g=g>>>0>h>>>0?h:g}while(1){j=g;o=g>>>0<=i>>>0;if(!o){g=g-4|0;if(!G[g>>2]){continue}}break}l:{if((w|0)!=103){k=e&8;break l}h=l?l:1;g=(h|0)>(d|0)&(d|0)>-5;l=(g?d^-1:-1)+h|0;f=(g?-1:-2)+f|0;k=e&8;if(k){break l}g=-9;m:{if(o){break m}k=G[j-4>>2];if(!k){break m}m=10;g=0;if((k>>>0)%10|0){break m}while(1){h=g;g=g+1|0;m=M(m,10);if(!((k>>>0)%(m>>>0)|0)){continue}break}g=h^-1}h=M(j-p>>2,9);if((f&-33)==70){k=0;g=(g+h|0)-9|0;g=(g|0)>0?g:0;l=(g|0)>(l|0)?l:g;break l}k=0;g=((d+h|0)+g|0)-9|0;g=(g|0)>0?g:0;l=(g|0)>(l|0)?l:g}m=-1;o=k|l;if(((o?2147483645:2147483646)|0)<(l|0)){break b}q=(((o|0)!=0)+l|0)+1|0;h=f&-33;n:{if((h|0)==70){if((q^2147483647)<(d|0)){break b}g=(d|0)>0?d:0;break n}g=d>>31;g=Ua((g^d)-g|0,0,u);if((u-g|0)<=1){while(1){g=g-1|0;E[g|0]=48;if((u-g|0)<2){continue}break}}s=g-2|0;E[s|0]=f;E[g-1|0]=(d|0)<0?45:43;g=u-s|0;if((g|0)>(q^2147483647)){break b}}d=g+q|0;if((d|0)>(t^2147483647)){break b}q=d+t|0;sa(a,32,c,q,e);qa(a,x,t);sa(a,48,c,q,e^65536);o:{p:{q:{if((h|0)==70){f=n+16|0;d=f|8;k=f|9;h=i>>>0>p>>>0?p:i;i=h;while(1){g=Ua(G[i>>2],0,k);r:{if((h|0)!=(i|0)){if(n+16>>>0>=g>>>0){break r}while(1){g=g-1|0;E[g|0]=48;if(n+16>>>0>>0){continue}break}break r}if((g|0)!=(k|0)){break r}E[n+24|0]=48;g=d}qa(a,g,k-g|0);i=i+4|0;if(p>>>0>=i>>>0){continue}break}if(o){qa(a,1526,1)}if((l|0)<=0|i>>>0>=j>>>0){break q}while(1){g=Ua(G[i>>2],0,k);if(g>>>0>n+16>>>0){while(1){g=g-1|0;E[g|0]=48;if(n+16>>>0>>0){continue}break}}qa(a,g,(l|0)>=9?9:l);g=l-9|0;i=i+4|0;if(j>>>0<=i>>>0){break p}d=(l|0)>9;l=g;if(d){continue}break}break p}s:{if((l|0)<0){break s}p=i>>>0>>0?j:i+4|0;f=n+16|0;d=f|8;j=f|9;h=i;while(1){g=Ua(G[h>>2],0,j);if((j|0)==(g|0)){E[n+24|0]=48;g=d}t:{if((h|0)!=(i|0)){if(n+16>>>0>=g>>>0){break t}while(1){g=g-1|0;E[g|0]=48;if(n+16>>>0>>0){continue}break}break t}qa(a,g,1);g=g+1|0;if(!(k|l)){break t}qa(a,1526,1)}f=j-g|0;qa(a,g,(f|0)<(l|0)?f:l);l=l-f|0;h=h+4|0;if(p>>>0<=h>>>0){break s}if((l|0)>=0){continue}break}}sa(a,48,l+18|0,18,0);qa(a,s,u-s|0);break o}g=l}sa(a,48,g+9|0,9,0)}sa(a,32,c,q,e^8192);m=(c|0)<(q|0)?q:c;break b}k=(f<<26>>31&9)+x|0;u:{if(d>>>0>11){break u}g=12-d|0;r=16;while(1){r=r*16;g=g-1|0;if(g){continue}break}if(H[k|0]==45){b=-(r+(-b-r));break u}b=b+r-r}g=G[n+44>>2];h=g>>31;g=Ua((g^h)-h|0,0,u);if((u|0)==(g|0)){E[n+15|0]=48;g=n+15|0}p=t|2;i=f&32;h=G[n+44>>2];l=g-2|0;E[l|0]=f+15;E[g-1|0]=(h|0)<0?45:43;g=e&8;h=n+16|0;while(1){f=h;if(O(b)<2147483648){j=~~b}else{j=-2147483648}E[h|0]=i|H[j+5648|0];b=(b-+(j|0))*16;h=f+1|0;if(!(!((d|0)>0|g)&b==0|(h-(n+16|0)|0)!=1)){E[f+1|0]=46;h=f+2|0}if(b!=0){continue}break}m=-1;g=u-l|0;f=g+p|0;if((2147483645-f|0)<(d|0)){break b}j=f;f=n+16|0;i=h-f|0;d=d?(i-2|0)<(d|0)?d+2|0:i:i;h=j+d|0;sa(a,32,c,h,e);qa(a,k,p);sa(a,48,c,h,e^65536);qa(a,f,i);sa(a,48,d-i|0,0,0);qa(a,l,g);sa(a,32,c,h,e^8192);m=(c|0)<(h|0)?h:c}Y=n+560|0;return m|0}function Ib(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;h=Y-80|0;Y=h;G[h+76>>2]=b;w=e-192|0;x=d-384|0;z=h+55|0;q=h+56|0;a:{b:{c:{d:while(1){f=0;e:while(1){i=b;if((o^2147483647)<(f|0)){break c}o=f+o|0;f:{g:{h:{f=b;g=H[f|0];if(g){while(1){i:{b=g&255;j:{if(!b){b=f;break j}if((b|0)!=37){break i}g=f;while(1){if(H[g+1|0]!=37){b=g;break j}f=f+1|0;j=H[g+2|0];b=g+2|0;g=b;if((j|0)==37){continue}break}}f=f-i|0;y=o^2147483647;if((f|0)>(y|0)){break c}if(a){qa(a,i,f)}if(f){continue e}G[h+76>>2]=b;f=b+1|0;n=-1;g=E[b+1|0]-48|0;if(!(H[b+2|0]!=36|g>>>0>=10)){n=g;r=1;f=b+3|0}G[h+76>>2]=f;m=0;g=E[f|0];b=g-32|0;k:{if(b>>>0>31){j=f;break k}j=f;b=1<>2]=j;m=b|m;g=E[f+1|0];b=g-32|0;if(b>>>0>=32){break k}f=j;b=1<>>0>=10)){b=E[g|0];g=j+3|0;r=1;n:{if(!a){G[(b<<2)+w>>2]=10;b=0;break n}b=G[(b<<3)+x>>2]}break m}if(r){break h}if(!a){G[h+76>>2]=g;r=0;p=0;break l}b=G[c>>2];G[c>>2]=b+4;r=0;b=G[b>>2]}G[h+76>>2]=g;p=b;if((b|0)>=0){break l}p=0-b|0;m=m|8192;break l}p=Hb(h+76|0);if((p|0)<0){break c}g=G[h+76>>2]}f=0;k=-1;o:{if(H[g|0]!=46){b=g;u=0;break o}if(H[g+1|0]==42){b=g+2|0;p:{if(!(H[g+3|0]!=36|E[g+2|0]-48>>>0>=10)){b=E[b|0];q:{if(!a){G[(b<<2)+w>>2]=10;k=0;break q}k=G[(b<<3)+x>>2]}b=g+4|0;break p}if(r){break h}if(!a){k=0;break p}g=G[c>>2];G[c>>2]=g+4;k=G[g>>2]}G[h+76>>2]=b;u=(k|0)>=0;break o}G[h+76>>2]=g+1;k=Hb(h+76|0);b=G[h+76>>2];u=1}while(1){s=f;l=28;v=b;g=E[b|0];if(g-123>>>0<4294967238){break b}b=b+1|0;f=H[(g+M(f,58)|0)+5119|0];if(f-1>>>0<8){continue}break}G[h+76>>2]=b;r:{if((f|0)!=27){if(!f){break b}if((n|0)>=0){if(!a){G[(n<<2)+e>>2]=f;continue d}f=(n<<3)+d|0;g=G[f+4>>2];G[h+64>>2]=G[f>>2];G[h+68>>2]=g;break r}if(!a){break f}Gb(h- -64|0,f,c);break r}if((n|0)>=0){break b}f=0;if(!a){continue e}}l=-1;if(H[a|0]&32){break a}g=m&-65537;m=m&8192?g:m;n=0;t=1024;j=q;s:{t:{u:{v:{w:{x:{y:{z:{A:{B:{C:{D:{E:{F:{G:{H:{f=E[v|0];f=s?(f&15)==3?f&-33:f:f;switch(f-88|0){case 11:break s;case 9:case 13:case 14:case 15:break t;case 27:break y;case 12:case 17:break B;case 23:break C;case 0:case 32:break D;case 24:break E;case 22:break F;case 29:break G;case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 10:case 16:case 18:case 19:case 20:case 21:case 25:case 26:case 28:case 30:case 31:break g;default:break H}}I:{switch(f-65|0){case 0:case 4:case 5:case 6:break t;case 2:break w;case 1:case 3:break g;default:break I}}if((f|0)==83){break x}break g}g=G[h+64>>2];l=G[h+68>>2];t=1024;break A}f=0;J:{switch(s&255){case 0:G[G[h+64>>2]>>2]=o;continue e;case 1:G[G[h+64>>2]>>2]=o;continue e;case 2:i=G[h+64>>2];G[i>>2]=o;G[i+4>>2]=o>>31;continue e;case 3:F[G[h+64>>2]>>1]=o;continue e;case 4:E[G[h+64>>2]]=o;continue e;case 6:G[G[h+64>>2]>>2]=o;continue e;case 7:break J;default:continue e}}i=G[h+64>>2];G[i>>2]=o;G[i+4>>2]=o>>31;continue e}k=k>>>0<=8?8:k;m=m|8;f=120}i=q;g=G[h+64>>2];l=G[h+68>>2];if(g|l){v=f&32;while(1){i=i-1|0;E[i|0]=v|H[(g&15)+5648|0];s=!l&g>>>0>15|(l|0)!=0;g=(l&15)<<28|g>>>4;l=l>>>4|0;if(s){continue}break}}if(!(G[h+64>>2]|G[h+68>>2])|!(m&8)){break z}t=(f>>>4|0)+1024|0;n=2;break z}f=q;i=G[h+68>>2];l=i;g=G[h+64>>2];if(i|g){while(1){f=f-1|0;E[f|0]=g&7|48;s=!l&g>>>0>7|(l|0)!=0;g=(l&7)<<29|g>>>3;l=l>>>3|0;if(s){continue}break}}i=f;if(!(m&8)){break z}f=q-f|0;k=(f|0)<(k|0)?k:f+1|0;break z}g=G[h+64>>2];f=G[h+68>>2];l=f;if((f|0)<0){i=0-(f+((g|0)!=0)|0)|0;l=i;g=0-g|0;G[h+64>>2]=g;G[h+68>>2]=i;n=1;t=1024;break A}if(m&2048){n=1;t=1025;break A}n=m&1;t=n?1026:1024}i=Ua(g,l,q)}if((k|0)<0&u){break c}m=u?m&-65537:m;f=G[h+64>>2];g=G[h+68>>2];if(!(k|(f|g)!=0)){i=q;k=0;break g}f=!(f|g)+(q-i|0)|0;k=(f|0)<(k|0)?k:f;break g}l=k>>>0>=2147483647?2147483647:k;j=l;m=(j|0)!=0;f=G[h+64>>2];i=f?f:1528;f=i;K:{L:{M:{N:{if(!(f&3)|!j){break N}while(1){if(!H[f|0]){break M}j=j-1|0;m=(j|0)!=0;f=f+1|0;if(!(f&3)){break N}if(j){continue}break}}if(!m){break L}if(!(!H[f|0]|j>>>0<4)){while(1){m=G[f>>2];if((m^-1)&m-16843009&-2139062144){break M}f=f+4|0;j=j-4|0;if(j>>>0>3){continue}break}}if(!j){break L}}while(1){if(!H[f|0]){break K}f=f+1|0;j=j-1|0;if(j){continue}break}}f=0}f=f?f-i|0:l;j=f+i|0;if((k|0)>=0){m=g;k=f;break g}m=g;k=f;if(H[j|0]){break c}break g}if(k){g=G[h+64>>2];break v}f=0;sa(a,32,p,0,m);break u}G[h+12>>2]=0;G[h+8>>2]=G[h+64>>2];g=h+8|0;G[h+64>>2]=g;k=-1}f=0;O:{while(1){i=G[g>>2];if(!i){break O}i=Db(h+4|0,i);j=(i|0)<0;if(!(j|i>>>0>k-f>>>0)){g=g+4|0;f=f+i|0;if(k>>>0>f>>>0){continue}break O}break}if(j){break a}}l=61;if((f|0)<0){break b}sa(a,32,p,f,m);if(!f){f=0;break u}j=0;g=G[h+64>>2];while(1){i=G[g>>2];if(!i){break u}l=h+4|0;i=Db(l,i);j=i+j|0;if(j>>>0>f>>>0){break u}qa(a,l,i);g=g+4|0;if(f>>>0>j>>>0){continue}break}}sa(a,32,p,f,m^8192);f=(f|0)<(p|0)?p:f;continue e}if((k|0)<0&u){break c}l=61;f=Fb(a,L[h+64>>3],p,k,m,f);if((f|0)>=0){continue e}break b}E[h+55|0]=G[h+64>>2];k=1;i=z;m=g;break g}g=H[f+1|0];f=f+1|0;continue}}l=o;if(a){break a}if(!r){break f}f=1;while(1){a=G[(f<<2)+e>>2];if(a){Gb((f<<3)+d|0,a,c);l=1;f=f+1|0;if((f|0)!=10){continue}break a}break}l=1;if(f>>>0>=10){break a}while(1){if(G[(f<<2)+e>>2]){break h}f=f+1|0;if((f|0)!=10){continue}break}break a}l=28;break b}j=j-i|0;k=(k|0)>(j|0)?k:j;if((k|0)>(n^2147483647)){break c}l=61;g=k+n|0;f=(g|0)<(p|0)?p:g;if((y|0)<(f|0)){break b}sa(a,32,f,g,m);qa(a,t,n);sa(a,48,f,g,m^65536);sa(a,48,k,j,0);qa(a,i,j);sa(a,32,f,g,m^8192);continue}break}break}l=0;break a}l=61}G[9343]=l;l=-1}Y=h+80|0;return l}function Lc(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;i=Tb(a);if(Ga(i)>>>0>e>>>0){G[a+3216>>2]=2;return-1}e=oa(bb(d,i),1);E[e|0]=H[a+3220|0];f=a+3221|0;g=H[f+4|0]|H[f+5|0]<<8|(H[f+6|0]<<16|H[f+7|0]<<24);e=e+1|0;h=H[f|0]|H[f+1|0]<<8|(H[f+2|0]<<16|H[f+3|0]<<24);E[e|0]=h;E[e+1|0]=h>>>8;E[e+2|0]=h>>>16;E[e+3|0]=h>>>24;E[e+4|0]=g;E[e+5|0]=g>>>8;E[e+6|0]=g>>>16;E[e+7|0]=g>>>24;g=H[f+28|0]|H[f+29|0]<<8|(H[f+30|0]<<16|H[f+31|0]<<24);h=H[f+24|0]|H[f+25|0]<<8|(H[f+26|0]<<16|H[f+27|0]<<24);E[e+24|0]=h;E[e+25|0]=h>>>8;E[e+26|0]=h>>>16;E[e+27|0]=h>>>24;E[e+28|0]=g;E[e+29|0]=g>>>8;E[e+30|0]=g>>>16;E[e+31|0]=g>>>24;g=H[f+20|0]|H[f+21|0]<<8|(H[f+22|0]<<16|H[f+23|0]<<24);h=H[f+16|0]|H[f+17|0]<<8|(H[f+18|0]<<16|H[f+19|0]<<24);E[e+16|0]=h;E[e+17|0]=h>>>8;E[e+18|0]=h>>>16;E[e+19|0]=h>>>24;E[e+20|0]=g;E[e+21|0]=g>>>8;E[e+22|0]=g>>>16;E[e+23|0]=g>>>24;g=H[f+12|0]|H[f+13|0]<<8|(H[f+14|0]<<16|H[f+15|0]<<24);f=H[f+8|0]|H[f+9|0]<<8|(H[f+10|0]<<16|H[f+11|0]<<24);E[e+8|0]=f;E[e+9|0]=f>>>8;E[e+10|0]=f>>>16;E[e+11|0]=f>>>24;E[e+12|0]=g;E[e+13|0]=g>>>8;E[e+14|0]=g>>>16;E[e+15|0]=g>>>24;f=a+3253|0;g=H[f+4|0]|H[f+5|0]<<8|(H[f+6|0]<<16|H[f+7|0]<<24);e=e+32|0;h=H[f|0]|H[f+1|0]<<8|(H[f+2|0]<<16|H[f+3|0]<<24);E[e|0]=h;E[e+1|0]=h>>>8;E[e+2|0]=h>>>16;E[e+3|0]=h>>>24;E[e+4|0]=g;E[e+5|0]=g>>>8;E[e+6|0]=g>>>16;E[e+7|0]=g>>>24;g=H[f+28|0]|H[f+29|0]<<8|(H[f+30|0]<<16|H[f+31|0]<<24);h=H[f+24|0]|H[f+25|0]<<8|(H[f+26|0]<<16|H[f+27|0]<<24);E[e+24|0]=h;E[e+25|0]=h>>>8;E[e+26|0]=h>>>16;E[e+27|0]=h>>>24;E[e+28|0]=g;E[e+29|0]=g>>>8;E[e+30|0]=g>>>16;E[e+31|0]=g>>>24;g=H[f+20|0]|H[f+21|0]<<8|(H[f+22|0]<<16|H[f+23|0]<<24);h=H[f+16|0]|H[f+17|0]<<8|(H[f+18|0]<<16|H[f+19|0]<<24);E[e+16|0]=h;E[e+17|0]=h>>>8;E[e+18|0]=h>>>16;E[e+19|0]=h>>>24;E[e+20|0]=g;E[e+21|0]=g>>>8;E[e+22|0]=g>>>16;E[e+23|0]=g>>>24;g=H[f+12|0]|H[f+13|0]<<8|(H[f+14|0]<<16|H[f+15|0]<<24);f=H[f+8|0]|H[f+9|0]<<8|(H[f+10|0]<<16|H[f+11|0]<<24);E[e+8|0]=f;E[e+9|0]=f>>>8;E[e+10|0]=f>>>16;E[e+11|0]=f>>>24;E[e+12|0]=g;E[e+13|0]=g>>>8;E[e+14|0]=g>>>16;E[e+15|0]=g>>>24;f=a+3285|0;g=H[f+4|0]|H[f+5|0]<<8|(H[f+6|0]<<16|H[f+7|0]<<24);e=e+32|0;h=H[f|0]|H[f+1|0]<<8|(H[f+2|0]<<16|H[f+3|0]<<24);E[e|0]=h;E[e+1|0]=h>>>8;E[e+2|0]=h>>>16;E[e+3|0]=h>>>24;E[e+4|0]=g;E[e+5|0]=g>>>8;E[e+6|0]=g>>>16;E[e+7|0]=g>>>24;g=H[f+28|0]|H[f+29|0]<<8|(H[f+30|0]<<16|H[f+31|0]<<24);h=H[f+24|0]|H[f+25|0]<<8|(H[f+26|0]<<16|H[f+27|0]<<24);E[e+24|0]=h;E[e+25|0]=h>>>8;E[e+26|0]=h>>>16;E[e+27|0]=h>>>24;E[e+28|0]=g;E[e+29|0]=g>>>8;E[e+30|0]=g>>>16;E[e+31|0]=g>>>24;g=H[f+20|0]|H[f+21|0]<<8|(H[f+22|0]<<16|H[f+23|0]<<24);h=H[f+16|0]|H[f+17|0]<<8|(H[f+18|0]<<16|H[f+19|0]<<24);E[e+16|0]=h;E[e+17|0]=h>>>8;E[e+18|0]=h>>>16;E[e+19|0]=h>>>24;E[e+20|0]=g;E[e+21|0]=g>>>8;E[e+22|0]=g>>>16;E[e+23|0]=g>>>24;g=H[f+12|0]|H[f+13|0]<<8|(H[f+14|0]<<16|H[f+15|0]<<24);f=H[f+8|0]|H[f+9|0]<<8|(H[f+10|0]<<16|H[f+11|0]<<24);E[e+8|0]=f;E[e+9|0]=f>>>8;E[e+10|0]=f>>>16;E[e+11|0]=f>>>24;E[e+12|0]=g;E[e+13|0]=g>>>8;E[e+14|0]=g>>>16;E[e+15|0]=g>>>24;f=Xa(e+32|0,a+12|0,32);e=a+48|0;f=oa(f,(G[a+44>>2]-e|0)/100|0);g=G[a+44>>2];if((g|0)!=(e|0)){while(1){f=oa(Xa(Pa(f,e),e+68|0,32),G[e+64>>2]);e=e+100|0;if((g|0)!=(e|0)){continue}break}}e=a+152|0;f=oa(f,(G[a+148>>2]-e|0)/68|0);j=G[a+148>>2];if((j|0)!=(e|0)){while(1){g=H[e+4|0]|H[e+5|0]<<8|(H[e+6|0]<<16|H[e+7|0]<<24);h=H[e|0]|H[e+1|0]<<8|(H[e+2|0]<<16|H[e+3|0]<<24);E[f|0]=h;E[f+1|0]=h>>>8;E[f+2|0]=h>>>16;E[f+3|0]=h>>>24;E[f+4|0]=g;E[f+5|0]=g>>>8;E[f+6|0]=g>>>16;E[f+7|0]=g>>>24;g=H[e+28|0]|H[e+29|0]<<8|(H[e+30|0]<<16|H[e+31|0]<<24);h=H[e+24|0]|H[e+25|0]<<8|(H[e+26|0]<<16|H[e+27|0]<<24);E[f+24|0]=h;E[f+25|0]=h>>>8;E[f+26|0]=h>>>16;E[f+27|0]=h>>>24;E[f+28|0]=g;E[f+29|0]=g>>>8;E[f+30|0]=g>>>16;E[f+31|0]=g>>>24;g=H[e+20|0]|H[e+21|0]<<8|(H[e+22|0]<<16|H[e+23|0]<<24);h=H[e+16|0]|H[e+17|0]<<8|(H[e+18|0]<<16|H[e+19|0]<<24);E[f+16|0]=h;E[f+17|0]=h>>>8;E[f+18|0]=h>>>16;E[f+19|0]=h>>>24;E[f+20|0]=g;E[f+21|0]=g>>>8;E[f+22|0]=g>>>16;E[f+23|0]=g>>>24;g=H[e+12|0]|H[e+13|0]<<8|(H[e+14|0]<<16|H[e+15|0]<<24);h=H[e+8|0]|H[e+9|0]<<8|(H[e+10|0]<<16|H[e+11|0]<<24);E[f+8|0]=h;E[f+9|0]=h>>>8;E[f+10|0]=h>>>16;E[f+11|0]=h>>>24;E[f+12|0]=g;E[f+13|0]=g>>>8;E[f+14|0]=g>>>16;E[f+15|0]=g>>>24;f=oa(Xa(f+32|0,e+36|0,32),G[e+32>>2]);e=e+68|0;if((j|0)!=(e|0)){continue}break}}e=a+496|0;f=oa(f,(G[a+492>>2]-e|0)/68|0);h=G[a+492>>2];if((h|0)!=(e|0)){while(1){a=H[e+4|0]|H[e+5|0]<<8|(H[e+6|0]<<16|H[e+7|0]<<24);g=H[e|0]|H[e+1|0]<<8|(H[e+2|0]<<16|H[e+3|0]<<24);E[f|0]=g;E[f+1|0]=g>>>8;E[f+2|0]=g>>>16;E[f+3|0]=g>>>24;E[f+4|0]=a;E[f+5|0]=a>>>8;E[f+6|0]=a>>>16;E[f+7|0]=a>>>24;a=H[e+28|0]|H[e+29|0]<<8|(H[e+30|0]<<16|H[e+31|0]<<24);g=H[e+24|0]|H[e+25|0]<<8|(H[e+26|0]<<16|H[e+27|0]<<24);E[f+24|0]=g;E[f+25|0]=g>>>8;E[f+26|0]=g>>>16;E[f+27|0]=g>>>24;E[f+28|0]=a;E[f+29|0]=a>>>8;E[f+30|0]=a>>>16;E[f+31|0]=a>>>24;a=H[e+20|0]|H[e+21|0]<<8|(H[e+22|0]<<16|H[e+23|0]<<24);g=H[e+16|0]|H[e+17|0]<<8|(H[e+18|0]<<16|H[e+19|0]<<24);E[f+16|0]=g;E[f+17|0]=g>>>8;E[f+18|0]=g>>>16;E[f+19|0]=g>>>24;E[f+20|0]=a;E[f+21|0]=a>>>8;E[f+22|0]=a>>>16;E[f+23|0]=a>>>24;a=H[e+12|0]|H[e+13|0]<<8|(H[e+14|0]<<16|H[e+15|0]<<24);g=H[e+8|0]|H[e+9|0]<<8|(H[e+10|0]<<16|H[e+11|0]<<24);E[f+8|0]=g;E[f+9|0]=g>>>8;E[f+10|0]=g>>>16;E[f+11|0]=g>>>24;E[f+12|0]=a;E[f+13|0]=a>>>8;E[f+14|0]=a>>>16;E[f+15|0]=a>>>24;f=oa(Xa(f+32|0,e+36|0,32),G[e+32>>2]);e=e+68|0;if((h|0)!=(e|0)){continue}break}}return ab(b,c,d,i)|0}function fc(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;h=ra(d);if((h|0)==-1){G[a+3216>>2]=7;return-1}va(c,d,c);l=Y-48|0;Y=l;a:{if((b|0)!=1){db(l+12|0,c,h);c=G[l+40>>2];if(!c){G[a+3216>>2]=4;b=-1;break a}h=G[l+44>>2]}b=-1;g=Y-240|0;Y=g;i=a;a=G[a+4>>2];hb(g+8|0,c,h,_[G[G[a>>2]>>2]](a)|0);b:{c:{d:{if(H[g+8|0]!=3){G[i+8>>2]=3;break d}if(G[g+32>>2]?!H[g+9|0]|!G[g+24>>2]:1){G[i+8>>2]=4;break d}a=G[i+4>>2];if(_[G[G[a>>2]+12>>2]](a,G[g+36>>2])>>>0>f>>>0){G[i+8>>2]=2;break d}if(G[g+28>>2]!=32){G[i+8>>2]=4;break d}e:{f:{a=i+152|0;h=G[i+148>>2];if((a|0)!=(h|0)){d=G[g+24>>2];c=a;while(1){if(!Oa(c,d)){break f}c=c+68|0;if((h|0)!=(c|0)){continue}break}}d=i+48|0;if((d|0)==G[i+44>>2]|J[g+12>>2]>=2001){break e}j=G[g+24>>2];c=H[j+12|0]|H[j+13|0]<<8|(H[j+14|0]<<16|H[j+15|0]<<24);G[g+48>>2]=H[j+8|0]|H[j+9|0]<<8|(H[j+10|0]<<16|H[j+11|0]<<24);G[g+52>>2]=c;c=H[j+20|0]|H[j+21|0]<<8|(H[j+22|0]<<16|H[j+23|0]<<24);G[g+56>>2]=H[j+16|0]|H[j+17|0]<<8|(H[j+18|0]<<16|H[j+19|0]<<24);G[g+60>>2]=c;c=H[j+28|0]|H[j+29|0]<<8|(H[j+30|0]<<16|H[j+31|0]<<24);h=g- -64|0;G[h>>2]=H[j+24|0]|H[j+25|0]<<8|(H[j+26|0]<<16|H[j+27|0]<<24);G[h+4>>2]=c;c=H[j+4|0]|H[j+5|0]<<8|(H[j+6|0]<<16|H[j+7|0]<<24);G[g+40>>2]=H[j|0]|H[j+1|0]<<8|(H[j+2|0]<<16|H[j+3|0]<<24);G[g+44>>2]=c;c=G[i>>2];n=g+40|0;m=g+208|0;Ca(d,n,m);h=i+12|0;k=g+144|0;Da(m,32,h,32,G[c+8>>2],G[c+12>>2],k,64);j=G[g+172>>2];G[g+136>>2]=G[g+168>>2];G[g+140>>2]=j;c=G[g+164>>2];G[g+128>>2]=G[g+160>>2];G[g+132>>2]=c;c=G[g+180>>2];G[g+76>>2]=G[g+176>>2];G[g+80>>2]=c;c=G[g+188>>2];G[g+84>>2]=G[g+184>>2];G[g+88>>2]=c;c=G[g+196>>2];G[g+92>>2]=G[g+192>>2];G[g+96>>2]=c;c=G[g+204>>2];G[g+100>>2]=G[g+200>>2];G[g+104>>2]=c;G[g+72>>2]=0;c=G[g+156>>2];G[g+120>>2]=G[g+152>>2];G[g+124>>2]=c;c=G[g+148>>2];G[g+112>>2]=G[g+144>>2];G[g+116>>2]=c;la(k,64);la(m,32);j=Yb(i,g+72|0,g+8|0,e,f);la(g+112|0,32);la(n,68);if((j|0)==-1){break e}c=i+492|0;e=G[i+148>>2];if((c|0)!=(e|0)){c=e+68|0;G[i+148>>2]=c}c=c-68|0;if((a|0)!=(c|0)){while(1){e=c;c=c-68|0;ma(e,c,68);if((a|0)!=(c|0)){continue}break}}f=G[g+24>>2];e=H[f+4|0]|H[f+5|0]<<8|(H[f+6|0]<<16|H[f+7|0]<<24);c=H[f|0]|H[f+1|0]<<8|(H[f+2|0]<<16|H[f+3|0]<<24);E[a|0]=c;E[a+1|0]=c>>>8;E[a+2|0]=c>>>16;E[a+3|0]=c>>>24;E[a+4|0]=e;E[a+5|0]=e>>>8;E[a+6|0]=e>>>16;E[a+7|0]=e>>>24;e=H[f+28|0]|H[f+29|0]<<8|(H[f+30|0]<<16|H[f+31|0]<<24);c=H[f+24|0]|H[f+25|0]<<8|(H[f+26|0]<<16|H[f+27|0]<<24);E[a+24|0]=c;E[a+25|0]=c>>>8;E[a+26|0]=c>>>16;E[a+27|0]=c>>>24;E[a+28|0]=e;E[a+29|0]=e>>>8;E[a+30|0]=e>>>16;E[a+31|0]=e>>>24;e=H[f+20|0]|H[f+21|0]<<8|(H[f+22|0]<<16|H[f+23|0]<<24);c=H[f+16|0]|H[f+17|0]<<8|(H[f+18|0]<<16|H[f+19|0]<<24);E[a+16|0]=c;E[a+17|0]=c>>>8;E[a+18|0]=c>>>16;E[a+19|0]=c>>>24;E[a+20|0]=e;E[a+21|0]=e>>>8;E[a+22|0]=e>>>16;E[a+23|0]=e>>>24;e=H[f+12|0]|H[f+13|0]<<8|(H[f+14|0]<<16|H[f+15|0]<<24);c=H[f+8|0]|H[f+9|0]<<8|(H[f+10|0]<<16|H[f+11|0]<<24);E[a+8|0]=c;E[a+9|0]=c>>>8;E[a+10|0]=c>>>16;E[a+11|0]=c>>>24;E[a+12|0]=e;E[a+13|0]=e>>>8;E[a+14|0]=e>>>16;E[a+15|0]=e>>>24;e=G[i>>2];c=Y-96|0;Y=c;o=c- -64|0;Ca(d,a,o);Da(o,32,h,32,G[e+8>>2],G[e+12>>2],c,64);f=G[c+28>>2];e=G[c+24>>2];E[h+24|0]=e;E[h+25|0]=e>>>8;E[h+26|0]=e>>>16;E[h+27|0]=e>>>24;E[h+28|0]=f;E[h+29|0]=f>>>8;E[h+30|0]=f>>>16;E[h+31|0]=f>>>24;f=G[c+20>>2];e=G[c+16>>2];E[h+16|0]=e;E[h+17|0]=e>>>8;E[h+18|0]=e>>>16;E[h+19|0]=e>>>24;E[h+20|0]=f;E[h+21|0]=f>>>8;E[h+22|0]=f>>>16;E[h+23|0]=f>>>24;f=G[c+12>>2];e=G[c+8>>2];E[h+8|0]=e;E[h+9|0]=e>>>8;E[h+10|0]=e>>>16;E[h+11|0]=e>>>24;E[h+12|0]=f;E[h+13|0]=f>>>8;E[h+14|0]=f>>>16;E[h+15|0]=f>>>24;f=G[c+4>>2];e=G[c>>2];E[h|0]=e;E[h+1|0]=e>>>8;E[h+2|0]=e>>>16;E[h+3|0]=e>>>24;E[h+4|0]=f;E[h+5|0]=f>>>8;E[h+6|0]=f>>>16;E[h+7|0]=f>>>24;p=G[c+40>>2];q=G[c+44>>2];m=G[c+48>>2];n=G[c+52>>2];k=G[c+56>>2];h=G[c+60>>2];f=G[c+32>>2];e=G[c+36>>2];G[i+184>>2]=0;G[i+212>>2]=k;G[i+216>>2]=h;G[i+204>>2]=m;G[i+208>>2]=n;G[i+196>>2]=p;G[i+200>>2]=q;G[i+188>>2]=f;G[i+192>>2]=e;la(c,64);la(o,32);Y=c+96|0;la(d,100);c=G[i+44>>2]-100|0;G[i+44>>2]=c;if((c|0)!=(d|0)){while(1){c=d;d=d+100|0;ma(c,d,100);if(G[i+44>>2]!=(d|0)){continue}break}}c=a;break c}if(J[c+32>>2]>J[g+12>>2]){d=i+496|0;c=G[i+492>>2];if((d|0)==(c|0)){break e}while(1){g:{if(G[g+12>>2]!=G[d+32>>2]){break g}if(Oa(d,G[g+24>>2])){break g}a=G[i+4>>2];j=_[G[G[a>>2]+16>>2]](a,d+36|0,32,G[g+16>>2],G[g+20>>2],G[g+32>>2],G[g+36>>2],e,f)|0;if((j|0)==-1){break g}la(d,68);a=G[i+492>>2]-68|0;G[i+492>>2]=a;if((a|0)==(d|0)){break b}while(1){a=d;d=d+68|0;ma(a,d,68);if(G[i+492>>2]!=(d|0)){continue}break}break b}d=d+68|0;if((c|0)!=(d|0)){continue}break}break e}j=Yb(i,c+32|0,g+8|0,e,f);if((j|0)!=-1){break c}}G[i+8>>2]=5}j=-1;break b}if(J[c+32>>2]>2]){f=i+532|0;h=c+36|0;a=i+3216|0;k=i+496|0;while(1){d=a;e=G[i+492>>2];if((a|0)!=(e|0)){d=e+68|0;G[i+492>>2]=d}d=d-68|0;if((k|0)!=(d|0)){while(1){e=d;d=d-68|0;ma(e,d,68);if((d|0)!=(k|0)){continue}break}}na(h,32,1868,1,f);G[i+528>>2]=G[c+32>>2];d=G[c+28>>2];G[k+24>>2]=G[c+24>>2];G[k+28>>2]=d;d=G[c+20>>2];G[k+16>>2]=G[c+16>>2];G[k+20>>2]=d;d=G[c+12>>2];G[k+8>>2]=G[c+8>>2];G[k+12>>2]=d;d=G[c+4>>2];G[k>>2]=G[c>>2];G[k+4>>2]=d;na(h,32,1869,1,h);d=G[c+32>>2]+1|0;G[c+32>>2]=d;if(d>>>0>2]){continue}break}}a=c+36|0;na(a,32,1869,1,a);G[c+32>>2]=G[c+32>>2]+1}Y=g+240|0;a=j;if((a|0)==-1){G[i+3216>>2]=G[i+8>>2];G[i+8>>2]=0;break a}E[i+3220|0]=1;b=a}Y=l+48|0;return b|0}function ia(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,H=0,I=0,J=0,K=0,L=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0;L=G[b+12>>2];q=L<<1;u=q>>31;S=L>>31;c=we(q,u,L,S);e=Z;g=G[b+16>>2];v=g>>31;f=G[b+8>>2];x=f<<1;C=x>>31;k=we(g,v,x,C);d=k+c|0;c=Z+e|0;c=d>>>0>>0?c+1|0:c;y=G[b+20>>2];o=y<<1;D=o>>31;h=G[b+4>>2];k=h<<1;r=k>>31;l=we(o,D,k,r);e=l+d|0;d=Z+c|0;d=e>>>0>>0?d+1|0:d;p=G[b+24>>2];z=p>>31;E=G[b>>2];l=E<<1;s=l>>31;i=we(p,z,l,s);e=i+e|0;c=Z+d|0;c=e>>>0>>0?c+1|0:c;d=e;F=G[b+32>>2];m=M(F,19);A=m>>31;P=F>>31;e=we(m,A,F,P);d=d+e|0;c=Z+c|0;c=d>>>0>>0?c+1|0:c;_=G[b+36>>2];i=M(_,38);t=i>>31;H=G[b+28>>2];Q=H<<1;T=Q>>31;e=we(i,t,Q,T);d=e+d|0;b=Z+c|0;B=d;e=d>>>0>>0?b+1|0:b;b=we(k,r,g,v);c=Z;d=we(x,C,L,S);b=d+b|0;c=Z+c|0;c=b>>>0>>0?c+1|0:c;R=y>>31;j=we(y,R,l,s);b=j+b|0;d=Z+c|0;d=b>>>0>>0?d+1|0:d;j=we(m,A,Q,T);b=j+b|0;c=Z+d|0;c=b>>>0>>0?c+1|0:c;d=we(i,t,p,z);b=d+b|0;c=Z+c|0;U=b;n=b>>>0>>0?c+1|0:c;c=we(k,r,q,u);d=Z;b=f;w=b>>31;V=b;f=we(b,w,b,w);c=f+c|0;b=Z+d|0;b=c>>>0>>0?b+1|0:b;f=we(l,s,g,v);d=f+c|0;c=Z+b|0;c=d>>>0>>0?c+1|0:c;j=M(H,38);N=j>>31;W=H>>31;f=we(j,N,H,W);b=f+d|0;d=Z+c|0;d=b>>>0>>0?d+1|0:d;c=b;b=p<<1;f=we(m,A,b,b>>31);b=c+f|0;c=Z+d|0;c=b>>>0>>0?c+1|0:c;d=b;b=we(i,t,o,D);d=d+b|0;c=Z+c|0;$=d;c=b>>>0>d>>>0?c+1|0:c;aa=c;b=c;d=d+33554432|0;b=d>>>0<33554432?b+1|0:b;ba=d;ca=b;c=b>>26;d=(b&67108863)<<6|d>>>26;b=d+U|0;c=c+n|0;U=b;c=b>>>0>>0?c+1|0:c;b=b+16777216|0;d=b>>>0<16777216?c+1|0:c;da=b;c=d>>25;b=(d&33554431)<<7|b>>>25;d=b+B|0;c=c+e|0;b=b>>>0>d>>>0?c+1|0:c;c=d+33554432|0;b=c>>>0<33554432?b+1|0:b;B=c;f=b;G[a+24>>2]=d-(c&-67108864);b=we(l,s,V,w);c=Z;I=h>>31;e=we(k,r,h,I);b=e+b|0;d=Z+c|0;d=b>>>0>>0?d+1|0:d;e=M(p,19);O=e>>31;n=we(e,O,p,z);b=n+b|0;c=Z+d|0;c=b>>>0>>0?c+1|0:c;n=we(o,D,j,N);d=n+b|0;b=Z+c|0;b=d>>>0>>0?b+1|0:b;n=g<<1;X=n>>31;J=we(m,A,n,X);d=J+d|0;c=Z+b|0;c=d>>>0>>0?c+1|0:c;b=d;d=we(i,t,q,u);b=b+d|0;c=Z+c|0;K=b;J=b>>>0>>0?c+1|0:c;b=we(o,D,e,O);c=Z;h=we(l,s,h,I);b=h+b|0;d=Z+c|0;d=b>>>0>>0?d+1|0:d;h=we(g,v,j,N);b=h+b|0;c=Z+d|0;c=b>>>0>>0?c+1|0:c;h=we(m,A,q,u);d=h+b|0;b=Z+c|0;b=d>>>0>>0?b+1|0:b;h=we(i,t,V,w);d=h+d|0;c=Z+b|0;Y=d;I=d>>>0>>0?c+1|0:c;b=M(y,38);d=we(b,b>>31,y,R);h=Z;b=E;c=b>>31;E=d;d=we(b,c,b,c);b=E+d|0;c=Z+h|0;c=b>>>0>>0?c+1|0:c;e=we(e,O,n,X);b=e+b|0;d=Z+c|0;d=b>>>0>>0?d+1|0:d;e=we(q,u,j,N);b=e+b|0;c=Z+d|0;c=b>>>0>>0?c+1|0:c;e=we(m,A,x,C);d=e+b|0;b=Z+c|0;b=d>>>0>>0?b+1|0:b;e=we(k,r,i,t);d=e+d|0;c=Z+b|0;h=d;c=d>>>0>>0?c+1|0:c;E=c;d=d+33554432|0;c=d>>>0<33554432?c+1|0:c;O=d;ea=c;b=c>>26;c=(c&67108863)<<6|d>>>26;e=c+Y|0;d=b+I|0;I=e;c=c>>>0>e>>>0?d+1|0:d;d=e+16777216|0;c=d>>>0<16777216?c+1|0:c;Y=d;e=(c&33554431)<<7|d>>>25;d=e+K|0;c=(c>>25)+J|0;c=d>>>0>>0?c+1|0:c;b=d+33554432|0;c=b>>>0<33554432?c+1|0:c;J=b;e=c;G[a+8>>2]=d-(b&-67108864);b=we(x,C,y,R);c=Z;d=we(g,v,q,u);b=d+b|0;c=Z+c|0;c=b>>>0>>0?c+1|0:c;d=we(k,r,p,z);b=d+b|0;c=Z+c|0;c=b>>>0>>0?c+1|0:c;d=we(l,s,H,W);b=d+b|0;c=Z+c|0;c=b>>>0>>0?c+1|0:c;d=we(i,t,F,P);K=d+b|0;b=Z+c|0;d=d>>>0>K>>>0?b+1|0:b;c=f>>26;f=(f&67108863)<<6|B>>>26;b=f+K|0;d=c+d|0;B=b;c=b>>>0>>0?d+1|0:d;b=b+16777216|0;c=b>>>0<16777216?c+1|0:c;K=b;f=c;G[a+28>>2]=B-(b&-33554432);b=we(l,s,L,S);d=Z;w=we(k,r,V,w);c=w+b|0;b=Z+d|0;b=c>>>0>>0?b+1|0:b;j=we(p,z,j,N);c=j+c|0;d=Z+b|0;m=we(m,A,o,D);b=m+c|0;c=Z+(c>>>0>>0?d+1|0:d)|0;c=b>>>0>>0?c+1|0:c;d=we(i,t,g,v);b=d+b|0;c=Z+c|0;c=b>>>0>>0?c+1|0:c;d=e>>26;B=b;b=(e&67108863)<<6|J>>>26;e=B+b|0;c=c+d|0;d=e;b=d>>>0>>0?c+1|0:c;c=d+16777216|0;b=c>>>0<16777216?b+1|0:b;m=c;e=b;G[a+12>>2]=d-(c&-33554432);b=we(p,z,x,C);c=Z;d=we(g,v,g,v);b=d+b|0;c=Z+c|0;c=b>>>0>>0?c+1|0:c;d=we(q,u,o,D);b=d+b|0;c=Z+c|0;c=b>>>0>>0?c+1|0:c;g=we(k,r,Q,T);d=g+b|0;b=Z+c|0;b=d>>>0>>0?b+1|0:b;g=we(l,s,F,P);c=g+d|0;d=Z+b|0;d=c>>>0>>0?d+1|0:d;b=i;i=_;o=i>>31;g=we(b,t,i,o);b=g+c|0;c=Z+d|0;c=b>>>0>>0?c+1|0:c;d=b;b=f>>25;f=(f&33554431)<<7|K>>>25;d=d+f|0;c=b+c|0;c=d>>>0>>0?c+1|0:c;b=d+33554432|0;c=b>>>0<33554432?c+1|0:c;g=b;f=c;G[a+32>>2]=d-(b&-67108864);j=U-(da&-33554432)|0;c=e>>25;e=(e&33554431)<<7|m>>>25;b=ba&-67108864;d=e+($-b|0)|0;b=c+(aa-((b>>>0>$>>>0)+ca|0)|0)|0;b=d>>>0>>0?b+1|0:b;e=d;d=d+33554432|0;c=d>>>0<33554432?b+1|0:b;b=((c&67108863)<<6|d>>>26)+j|0;G[a+20>>2]=b;G[a+16>>2]=e-(d&-67108864);b=we(q,u,p,z);d=Z;e=we(y,R,n,X);c=e+b|0;b=Z+d|0;b=c>>>0>>0?b+1|0:b;e=we(x,C,H,W);d=e+c|0;c=Z+b|0;c=d>>>0>>0?c+1|0:c;e=we(k,r,F,P);b=e+d|0;d=Z+c|0;d=b>>>0>>0?d+1|0:d;c=b;b=we(l,s,i,o);e=c+b|0;c=Z+d|0;b=b>>>0>e>>>0?c+1|0:c;c=f>>26;f=(f&67108863)<<6|g>>>26;d=f+e|0;c=b+c|0;b=d>>>0>>0?c+1|0:c;c=d+16777216|0;b=c>>>0<16777216?b+1|0:b;G[a+36>>2]=d-(c&-33554432);f=I-(Y&-33554432)|0;d=O&-67108864;e=h-d|0;k=E-((d>>>0>h>>>0)+ea|0)|0;b=we((b&33554431)<<7|c>>>25,b>>25,19,0);d=b+e|0;c=Z+k|0;b=b>>>0>d>>>0?c+1|0:c;c=d+33554432|0;b=c>>>0<33554432?b+1|0:b;b=((b&67108863)<<6|c>>>26)+f|0;G[a+4>>2]=b;G[a>>2]=d-(c&-67108864)}function ja(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,H=0,I=0,J=0;g=Y-160|0;Y=g;o=G[b>>2];f=G[b+8>>2];p=G[b+16>>2];u=p>>31;q=G[b+24>>2];v=q>>31;k=G[b+32>>2];l=G[b+40>>2];h=G[b+72>>2];x=h>>31;r=G[b+48>>2];w=r>>31;c=we(h,x,r,w);d=Z;s=G[b+64>>2];y=s>>31;t=G[b+56>>2];z=t>>31;e=we(s,y,t,z);c=e+c|0;b=Z+d|0;b=c>>>0>>0?b+1|0:b;e=c;m=b;d=c;c=b<<1|c>>>31;G[g+120>>2]=d<<1;G[g+124>>2]=c;A=l>>31;b=we(s,y,l,A);d=Z;i=we(r,w,t,z);c=i+b|0;b=Z+d|0;b=c>>>0>>0?b+1|0:b;B=k>>31;i=we(h,x,k,B);c=i+c|0;d=Z+b|0;d=c>>>0>>0?d+1|0:d;i=c;E=d;G[g+104>>2]=c<<1;G[g+108>>2]=d<<1|c>>>31;b=we(q,v,r,w);d=Z;F=we(l,A,k,B);c=F+b|0;b=Z+d|0;b=c>>>0>>0?b+1|0:b;d=we(p,u,t,z);c=d+c|0;b=Z+b|0;b=c>>>0>>0?b+1|0:b;F=f;C=f>>31;j=we(s,y,f,C);d=j+c|0;c=Z+b|0;c=d>>>0>>0?c+1|0:c;D=o>>31;j=we(h,x,o,D);b=j+d|0;d=Z+c|0;d=b>>>0>>0?d+1|0:d;G[g+72>>2]=b<<1;G[g+76>>2]=d<<1|b>>>31;b=h;d=b>>31;b=we((b&2147483647)<<1,d,b,x);c=Z;H=c;n=b;G[g+144>>2]=b;G[g+148>>2]=c;d=we(k,B,k,B);j=Z;b=we(t,z,f,C);I=Z;J=we(q,v,l,A);c=J+b|0;b=Z+I|0;b=(c>>>0>>0?b+1|0:b)<<2|c>>>30;I=d;d=c<<2;c=I+d|0;b=b+j|0;I=c;d=c>>>0>>0?b+1|0:b;b=we(s,y,o,D);c=Z;j=b;b=we(p,u,r,w);j=j+b|0;c=Z+c|0;b=(b>>>0>j>>>0?c+1|0:c)<<1|j>>>31;j=j<<1;c=j+I|0;d=b+d|0;d=c>>>0>>0?d+1|0:d;n=we(n,H,19,0);c=n+c|0;b=Z+d|0;G[g+64>>2]=c;G[g+68>>2]=c>>>0>>0?b+1|0:b;n=we(e,m,36,0);j=Z;b=we(k,B,f,C);d=Z;H=we(p,u,q,v);c=H+b|0;b=Z+d|0;b=c>>>0>>0?b+1|0:b;H=we(l,A,o,D);d=H+c|0;c=Z+b|0;b=(d>>>0>>0?c+1|0:c)+m|0;c=d+e|0;b=(c>>>0>>0?b+1|0:b)<<1|c>>>31;e=c<<1;c=e+n|0;d=b+j|0;G[g+40>>2]=c;G[g+44>>2]=c>>>0>>0?d+1|0:d;e=we(i,E,36,0);m=Z;b=we(q,v,o,D);c=Z;n=we(p,u,f,C);d=n+b|0;b=Z+c|0;c=(d>>>0>>0?b+1|0:b)+E|0;b=d+i|0;d=(b>>>0>>0?c+1|0:c)<<1|b>>>31;c=e;e=b<<1;c=c+e|0;b=d+m|0;G[g+24>>2]=c;G[g+28>>2]=c>>>0>>0?b+1|0:b;c=s;d=c>>31;d=we(h,x,(c&2147483647)<<1,d);b=Z;m=b;G[g+136>>2]=d;G[g+140>>2]=b;c=b;b=we(p,u,l,A);i=Z;E=we(q,v,k,B);e=E+b|0;b=Z+i|0;b=e>>>0>>0?b+1|0:b;i=we(r,w,f,C);e=i+e|0;b=Z+b|0;b=e>>>0>>0?b+1|0:b;i=we(t,z,o,D);e=i+e|0;b=Z+b|0;b=(e>>>0>>0?b+1|0:b)<<1|e>>>31;i=e<<1;e=i+d|0;c=b+c|0;c=e>>>0>>0?c+1|0:c;b=e;e=we(d,m,18,0);b=b+e|0;d=Z+c|0;G[g+56>>2]=b;G[g+60>>2]=b>>>0>>0?d+1|0:d;b=t;c=b>>30;b=we(h,x,(b&1073741823)<<2,c);d=Z;e=we(s,y,s,y);c=e+b|0;b=Z+d|0;G[g+128>>2]=c;b=c>>>0>>0?b+1|0:b;G[g+132>>2]=b;e=c;m=b;b=we(p,u,k,B);d=Z;i=we(q,v,q,v);c=i+b|0;b=Z+d|0;b=c>>>0>>0?b+1|0:b;d=b;b=c;c=f;n=0;c=we(l,A,(c&2147483647)<<1|n>>>31,c>>31);b=b+c|0;d=Z+d|0;d=b>>>0>>0?d+1|0:d;i=we(r,w,o,D);c=i+b|0;b=Z+d|0;b=(c>>>0>>0?b+1|0:b)<<1|c>>>31;d=c<<1;c=d+e|0;b=b+m|0;b=c>>>0>>0?b+1|0:b;e=we(e,m,18,0);d=e+c|0;c=Z+b|0;G[g+48>>2]=d;G[g+52>>2]=d>>>0>>0?c+1|0:c;b=we(r,w,s,y);c=Z;e=we(t,z,t,z);b=e+b|0;d=Z+c|0;d=b>>>0>>0?d+1|0:d;m=b;b=l;c=b>>31;e=we(h,x,(b&2147483647)<<1,c);c=m+e|0;b=Z+d|0;b=c>>>0>>0?b+1|0:b;e=c;m=b;b=b<<1|c>>>31;c=c<<1;G[g+112>>2]=c;G[g+116>>2]=b;i=c;E=b;b=we(q,v,(f&1073741823)<<2|n>>>30,f>>30);f=Z;d=we(p,u,p,u);c=d+b|0;b=Z+f|0;b=c>>>0>>0?b+1|0:b;f=b;d=c;b=o;c=b>>31;n=(b&2147483647)<<1;j=c;b=we(k,B,n,c);c=d+b|0;d=Z+f|0;b=(b>>>0>c>>>0?d+1|0:d)+E|0;f=c;c=c+i|0;b=f>>>0>c>>>0?b+1|0:b;f=we(e,m,36,0);c=f+c|0;b=Z+b|0;G[g+32>>2]=c;G[g+36>>2]=c>>>0>>0?b+1|0:b;d=k;b=d>>31;b=we(s,y,(d&2147483647)<<1,b);f=Z;d=we(r,w,r,w);c=d+b|0;b=Z+f|0;f=c;d=c>>>0>>0?b+1|0:b;b=we(q,v,h,x);c=Z;e=we(t,z,l,A);b=e+b|0;c=Z+c|0;m=f;f=b;b=(b>>>0>>0?c+1|0:c)<<2|b>>>30;f=f<<2;c=m+f|0;b=b+d|0;G[g+96>>2]=c;b=c>>>0>>0?b+1|0:b;G[g+100>>2]=b;f=b;b=we(p,u,o,D);d=Z;e=b;b=we(F,C,F,C);e=e+b|0;d=Z+d|0;b=(b>>>0>e>>>0?d+1|0:d)<<1|e>>>31;e=e<<1;d=e+c|0;b=b+f|0;b=d>>>0>>0?b+1|0:b;e=d;d=we(c,f,18,0);f=e+d|0;c=Z+b|0;G[g+16>>2]=f;G[g+20>>2]=d>>>0>f>>>0?c+1|0:c;b=we(t,z,k,B);f=Z;d=we(r,w,l,A);c=d+b|0;b=Z+f|0;b=c>>>0>>0?b+1|0:b;f=we(q,v,s,y);c=f+c|0;d=Z+b|0;d=c>>>0>>0?d+1|0:d;f=we(p,u,h,x);c=f+c|0;b=Z+d|0;b=c>>>0>>0?b+1|0:b;f=b;d=g;e=c<<1;G[d+88>>2]=e;b=b<<1|c>>>31;G[d+92>>2]=b;d=e;e=we(F,C,n,j);d=d+e|0;b=Z+b|0;b=d>>>0>>0?b+1|0:b;e=d;d=we(c,f,36,0);f=e+d|0;c=Z+b|0;G[g+8>>2]=f;G[g+12>>2]=d>>>0>f>>>0?c+1|0:c;b=we(h,x,F,C);c=Z;h=we(q,v,t,z);b=h+b|0;d=Z+c|0;c=b;b=(b>>>0>>0?d+1|0:d)<<2|b>>>30;f=c<<2;c=b;b=we(r,w,k,B);k=Z;l=we(l,A,l,A);h=l+b|0;b=Z+k|0;b=h>>>0>>0?b+1|0:b;k=we(p,u,s,y);h=k+h|0;b=Z+b|0;b=(h>>>0>>0?b+1|0:b)<<1|h>>>31;d=f;f=h<<1;h=d+f|0;c=b+c|0;G[g+80>>2]=h;c=f>>>0>h>>>0?c+1|0:c;G[g+84>>2]=c;o=we(o,D,o,D);b=o+h|0;d=Z+c|0;h=we(h,c,18,0);c=h+b|0;b=Z+(b>>>0>>0?d+1|0:d)|0;G[g>>2]=c;G[g+4>>2]=c>>>0>>0?b+1|0:b;za(g);ma(a,g,80);Y=g+160|0}function gb(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0;a:{if(!a|!b){break a}d=G[a+72>>2];if(d>>>0>127){break a}G[a+72>>2]=d+1;c=G[a+4>>2]+(d>>>29|0)|0;h=d<<3;e=h+G[a>>2]|0;G[a>>2]=e;G[a+4>>2]=e>>>0>>0?c+1|0:c;h=a+76|0;E[d+h|0]=128;e=G[a+72>>2];if(e>>>0>=113){b:{if(e>>>0>127){break b}d=e;f=0-d&3;if(f){c=d;while(1){d=c+1|0;G[a+72>>2]=d;E[(a+c|0)+76|0]=0;c=d;g=g+1|0;if((f|0)!=(g|0)){continue}break}}if(e-125>>>0<3){break b}c=a+76|0;while(1){e=d+1|0;G[a+72>>2]=e;E[c+d|0]=0;f=d+2|0;G[a+72>>2]=f;E[c+e|0]=0;e=d+3|0;G[a+72>>2]=e;E[c+f|0]=0;d=d+4|0;G[a+72>>2]=d;E[c+e|0]=0;if((d|0)!=128){continue}break}}ya(a,h);e=0}g=0;d=e;f=0-d&3;if(f){c=d;while(1){d=c+1|0;G[a+72>>2]=d;E[(a+c|0)+76|0]=0;c=d;g=g+1|0;if((f|0)!=(g|0)){continue}break}}if(e-117>>>0>=3){c=a+76|0;while(1){e=d+1|0;G[a+72>>2]=e;E[c+d|0]=0;f=d+2|0;G[a+72>>2]=f;E[c+e|0]=0;e=d+3|0;G[a+72>>2]=e;E[c+f|0]=0;d=d+4|0;G[a+72>>2]=d;E[c+e|0]=0;if((d|0)!=120){continue}break}}e=G[a>>2];f=e&16711680;c=f>>>8|0;i=f<<24;g=e&-16777216;f=g>>>24|0;d=G[a+4>>2];d=i|g<<8|(((d&255)<<24|e>>>8)&-16777216|((d&16777215)<<8|e>>>24)&16711680|(d>>>8&65280|d>>>24));E[a+196|0]=d;E[a+197|0]=d>>>8;E[a+198|0]=d>>>16;E[a+199|0]=d>>>24;d=c|f|(e<<24|(e&65280)<<8);c=0;d=d|(c|c);E[a+200|0]=d;E[a+201|0]=d>>>8;E[a+202|0]=d>>>16;E[a+203|0]=d>>>24;ya(a,h);E[b|0]=H[a+15|0];E[b+1|0]=I[a+14>>1];E[b+2|0]=G[a+12>>2]>>>8;E[b+3|0]=G[a+12>>2];c=G[a+8>>2];E[b+4|0]=(G[a+12>>2]&16777215)<<8|c>>>24;c=G[a+8>>2];E[b+5|0]=(G[a+12>>2]&65535)<<16|c>>>16;c=G[a+8>>2];E[b+6|0]=(G[a+12>>2]&255)<<24|c>>>8;E[b+7|0]=G[a+8>>2];E[b+8|0]=H[a+23|0];E[b+9|0]=I[a+22>>1];E[b+10|0]=G[a+20>>2]>>>8;E[b+11|0]=G[a+20>>2];c=G[a+16>>2];E[b+12|0]=(G[a+20>>2]&16777215)<<8|c>>>24;c=G[a+16>>2];E[b+13|0]=(G[a+20>>2]&65535)<<16|c>>>16;c=G[a+16>>2];E[b+14|0]=(G[a+20>>2]&255)<<24|c>>>8;E[b+15|0]=G[a+16>>2];E[b+16|0]=H[a+31|0];E[b+17|0]=I[a+30>>1];E[b+18|0]=G[a+28>>2]>>>8;E[b+19|0]=G[a+28>>2];c=G[a+24>>2];E[b+20|0]=(G[a+28>>2]&16777215)<<8|c>>>24;c=G[a+24>>2];E[b+21|0]=(G[a+28>>2]&65535)<<16|c>>>16;c=G[a+24>>2];E[b+22|0]=(G[a+28>>2]&255)<<24|c>>>8;E[b+23|0]=G[a+24>>2];E[b+24|0]=H[a+39|0];E[b+25|0]=I[a+38>>1];E[b+26|0]=G[a+36>>2]>>>8;E[b+27|0]=G[a+36>>2];c=G[a+32>>2];E[b+28|0]=(G[a+36>>2]&16777215)<<8|c>>>24;c=G[a+32>>2];E[b+29|0]=(G[a+36>>2]&65535)<<16|c>>>16;c=G[a+32>>2];E[b+30|0]=(G[a+36>>2]&255)<<24|c>>>8;E[b+31|0]=G[a+32>>2];E[b+32|0]=H[a+47|0];E[b+33|0]=I[a+46>>1];E[b+34|0]=G[a+44>>2]>>>8;E[b+35|0]=G[a+44>>2];c=G[a+40>>2];E[b+36|0]=(G[a+44>>2]&16777215)<<8|c>>>24;c=G[a+40>>2];E[b+37|0]=(G[a+44>>2]&65535)<<16|c>>>16;c=G[a+40>>2];E[b+38|0]=(G[a+44>>2]&255)<<24|c>>>8;E[b+39|0]=G[a+40>>2];E[b+40|0]=H[a+55|0];E[b+41|0]=I[a+54>>1];E[b+42|0]=G[a+52>>2]>>>8;E[b+43|0]=G[a+52>>2];c=G[a+48>>2];E[b+44|0]=(G[a+52>>2]&16777215)<<8|c>>>24;c=G[a+48>>2];E[b+45|0]=(G[a+52>>2]&65535)<<16|c>>>16;c=G[a+48>>2];E[b+46|0]=(G[a+52>>2]&255)<<24|c>>>8;E[b+47|0]=G[a+48>>2];E[b+48|0]=H[a+63|0];E[b+49|0]=I[a+62>>1];E[b+50|0]=G[a+60>>2]>>>8;E[b+51|0]=G[a+60>>2];c=G[a+56>>2];E[b+52|0]=(G[a+60>>2]&16777215)<<8|c>>>24;c=G[a+56>>2];E[b+53|0]=(G[a+60>>2]&65535)<<16|c>>>16;c=G[a+56>>2];E[b+54|0]=(G[a+60>>2]&255)<<24|c>>>8;E[b+55|0]=G[a+56>>2];E[b+56|0]=H[a+71|0];E[b+57|0]=I[a+70>>1];d=a- -64|0;E[b+58|0]=G[d+4>>2]>>>8;E[b+59|0]=G[a+68>>2];c=G[d>>2];E[b+60|0]=(G[d+4>>2]&16777215)<<8|c>>>24;c=G[d>>2];E[b+61|0]=(G[d+4>>2]&65535)<<16|c>>>16;c=G[d>>2];E[b+62|0]=(G[d+4>>2]&255)<<24|c>>>8;E[b+63|0]=G[d>>2]}}function db(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0;G[a+4>>2]=0;G[a+8>>2]=0;E[a|0]=0;G[a+12>>2]=0;G[a+16>>2]=0;G[a+20>>2]=0;G[a+24>>2]=0;G[a+28>>2]=0;G[a+32>>2]=0;a:{if(!c){break a}E[a|0]=H[b|0];if((c|0)==1){break a}c=b+c|0;d=b+1|0;while(1){h=d;if(H[d|0]==10){f=d+1|0;b=f;while(1){b:{if((b|0)==(c|0)){g=c;break b}d=E[b|0];g=b+1|0;b=g;if((d|0)<0){continue}}break}c:{if((f|0)==(g|0)){e=0;break c}f=(h^-1)+g|0;i=f&3;d=0;e=0;b=g;if((b-h|0)-2>>>0>=3){j=f&-4;f=0;while(1){e=(H[b-2|0]&127|(e<<14|(H[b-1|0]&127)<<7))<<14|(H[b-3|0]&127)<<7;b=b-4|0;e=e|H[b|0]&127;f=f+4|0;if((j|0)!=(f|0)){continue}break}}if(i){while(1){b=b-1|0;e=H[b|0]&127|e<<7;d=d+1|0;if((i|0)!=(d|0)){continue}break}}if(c-g>>>0>>0){break a}}G[a+24>>2]=e;G[a+20>>2]=g;d=e+g|0}if((c|0)==(d|0)){break a}if(H[d|0]==18){g=d+1|0;b=g;while(1){d:{if((b|0)==(c|0)){f=c;break d}e=E[b|0];f=b+1|0;b=f;if((e|0)<0){continue}}break}e:{if((f|0)==(g|0)){e=0;break e}j=(d^-1)+f|0;i=j&3;g=0;e=0;b=f;if((b-d|0)-2>>>0>=3){j=j&-4;d=0;while(1){e=(H[b-2|0]&127|(e<<14|(H[b-1|0]&127)<<7))<<14|(H[b-3|0]&127)<<7;b=b-4|0;e=e|H[b|0]&127;d=d+4|0;if((j|0)!=(d|0)){continue}break}}if(i){while(1){b=b-1|0;e=H[b|0]&127|e<<7;g=g+1|0;if((i|0)!=(g|0)){continue}break}}if(c-f>>>0>>0){break a}}G[a+16>>2]=e;G[a+12>>2]=f;d=e+f|0}if((c|0)==(d|0)){break a}if(H[d|0]==26){g=d+1|0;b=g;while(1){f:{if((b|0)==(c|0)){f=c;break f}e=E[b|0];f=b+1|0;b=f;if((e|0)<0){continue}}break}g:{if((f|0)==(g|0)){e=0;break g}j=(d^-1)+f|0;i=j&3;g=0;e=0;b=f;if((b-d|0)-2>>>0>=3){j=j&-4;d=0;while(1){e=(H[b-2|0]&127|(e<<14|(H[b-1|0]&127)<<7))<<14|(H[b-3|0]&127)<<7;b=b-4|0;e=e|H[b|0]&127;d=d+4|0;if((j|0)!=(d|0)){continue}break}}if(i){while(1){b=b-1|0;e=H[b|0]&127|e<<7;g=g+1|0;if((i|0)!=(g|0)){continue}break}}if(c-f>>>0>>0){break a}}G[a+8>>2]=e;G[a+4>>2]=f;d=e+f|0}if((c|0)==(d|0)){break a}if(H[d|0]==34){g=d+1|0;b=g;while(1){h:{if((b|0)==(c|0)){f=c;break h}e=E[b|0];f=b+1|0;b=f;if((e|0)<0){continue}}break}i:{if((f|0)==(g|0)){e=0;break i}j=(d^-1)+f|0;i=j&3;g=0;e=0;b=f;if((b-d|0)-2>>>0>=3){j=j&-4;d=0;while(1){e=(H[b-2|0]&127|(e<<14|(H[b-1|0]&127)<<7))<<14|(H[b-3|0]&127)<<7;b=b-4|0;e=e|H[b|0]&127;d=d+4|0;if((j|0)!=(d|0)){continue}break}}if(i){while(1){b=b-1|0;e=H[b|0]&127|e<<7;g=g+1|0;if((i|0)!=(g|0)){continue}break}}if(c-f>>>0>>0){break a}}G[a+32>>2]=e;G[a+28>>2]=f;d=e+f|0}j:{if((c|0)==(d|0)|(d|0)!=(h|0)){break j}k:{switch(H[h|0]&7){case 0:while(1){l:{if((c|0)==(h|0)){b=c;break l}f=E[h|0];b=h+1|0;h=b;if((f|0)<0){continue}}break};while(1){if((b|0)==(c|0)){d=c;break j}f=E[b|0];d=b+1|0;b=d;if((f|0)<0){continue}break};break j;case 2:break k;default:break a}}while(1){m:{if((c|0)==(h|0)){d=c;break m}b=E[h|0];d=h+1|0;h=d;if((b|0)<0){continue}}break}b=d;while(1){n:{if((b|0)==(c|0)){g=c;break n}f=E[b|0];g=b+1|0;b=g;if((f|0)<0){continue}}break}if((d|0)==(g|0)){break j}i=g-d|0;f=i&3;e=0;h=0;b=g;if(b+(d^-1)>>>0>=3){i=i&-4;d=0;while(1){h=(H[b-2|0]&127|(h<<14|(H[b-1|0]&127)<<7))<<14|(H[b-3|0]&127)<<7;b=b-4|0;h=h|H[b|0]&127;d=d+4|0;if((i|0)!=(d|0)){continue}break}}if(f){while(1){b=b-1|0;h=H[b|0]&127|h<<7;e=e+1|0;if((f|0)!=(e|0)){continue}break}}if(c-g>>>0>>0){break a}d=g+h|0}if((c|0)!=(d|0)){continue}break}}}function ub(a,b,c){var d=0,e=0,f=0,g=0;a:{if(!a){break a}d=a+32|0;if(d>>>0>b>>>0){break a}f=H[a+4|0]|H[a+5|0]<<8|(H[a+6|0]<<16|H[a+7|0]<<24);g=H[a|0]|H[a+1|0]<<8|(H[a+2|0]<<16|H[a+3|0]<<24);E[c|0]=g;E[c+1|0]=g>>>8;E[c+2|0]=g>>>16;E[c+3|0]=g>>>24;E[c+4|0]=f;E[c+5|0]=f>>>8;E[c+6|0]=f>>>16;E[c+7|0]=f>>>24;f=H[a+28|0]|H[a+29|0]<<8|(H[a+30|0]<<16|H[a+31|0]<<24);g=H[a+24|0]|H[a+25|0]<<8|(H[a+26|0]<<16|H[a+27|0]<<24);E[c+24|0]=g;E[c+25|0]=g>>>8;E[c+26|0]=g>>>16;E[c+27|0]=g>>>24;E[c+28|0]=f;E[c+29|0]=f>>>8;E[c+30|0]=f>>>16;E[c+31|0]=f>>>24;f=H[a+20|0]|H[a+21|0]<<8|(H[a+22|0]<<16|H[a+23|0]<<24);g=H[a+16|0]|H[a+17|0]<<8|(H[a+18|0]<<16|H[a+19|0]<<24);E[c+16|0]=g;E[c+17|0]=g>>>8;E[c+18|0]=g>>>16;E[c+19|0]=g>>>24;E[c+20|0]=f;E[c+21|0]=f>>>8;E[c+22|0]=f>>>16;E[c+23|0]=f>>>24;f=H[a+12|0]|H[a+13|0]<<8|(H[a+14|0]<<16|H[a+15|0]<<24);g=H[a+8|0]|H[a+9|0]<<8|(H[a+10|0]<<16|H[a+11|0]<<24);E[c+8|0]=g;E[c+9|0]=g>>>8;E[c+10|0]=g>>>16;E[c+11|0]=g>>>24;E[c+12|0]=f;E[c+13|0]=f>>>8;E[c+14|0]=f>>>16;E[c+15|0]=f>>>24;f=b;b=a+96|0;if(f>>>0>>0){break a}a=d;d=H[a+4|0]|H[a+5|0]<<8|(H[a+6|0]<<16|H[a+7|0]<<24);e=H[a|0]|H[a+1|0]<<8|(H[a+2|0]<<16|H[a+3|0]<<24);E[c+32|0]=e;E[c+33|0]=e>>>8;E[c+34|0]=e>>>16;E[c+35|0]=e>>>24;E[c+36|0]=d;E[c+37|0]=d>>>8;E[c+38|0]=d>>>16;E[c+39|0]=d>>>24;d=H[a+60|0]|H[a+61|0]<<8|(H[a+62|0]<<16|H[a+63|0]<<24);e=H[a+56|0]|H[a+57|0]<<8|(H[a+58|0]<<16|H[a+59|0]<<24);E[c+88|0]=e;E[c+89|0]=e>>>8;E[c+90|0]=e>>>16;E[c+91|0]=e>>>24;E[c+92|0]=d;E[c+93|0]=d>>>8;E[c+94|0]=d>>>16;E[c+95|0]=d>>>24;d=H[a+52|0]|H[a+53|0]<<8|(H[a+54|0]<<16|H[a+55|0]<<24);e=H[a+48|0]|H[a+49|0]<<8|(H[a+50|0]<<16|H[a+51|0]<<24);E[c+80|0]=e;E[c+81|0]=e>>>8;E[c+82|0]=e>>>16;E[c+83|0]=e>>>24;E[c+84|0]=d;E[c+85|0]=d>>>8;E[c+86|0]=d>>>16;E[c+87|0]=d>>>24;d=H[a+44|0]|H[a+45|0]<<8|(H[a+46|0]<<16|H[a+47|0]<<24);e=H[a+40|0]|H[a+41|0]<<8|(H[a+42|0]<<16|H[a+43|0]<<24);E[c+72|0]=e;E[c+73|0]=e>>>8;E[c+74|0]=e>>>16;E[c+75|0]=e>>>24;E[c+76|0]=d;E[c+77|0]=d>>>8;E[c+78|0]=d>>>16;E[c+79|0]=d>>>24;e=H[a+36|0]|H[a+37|0]<<8|(H[a+38|0]<<16|H[a+39|0]<<24);d=c- -64|0;f=H[a+32|0]|H[a+33|0]<<8|(H[a+34|0]<<16|H[a+35|0]<<24);E[d|0]=f;E[d+1|0]=f>>>8;E[d+2|0]=f>>>16;E[d+3|0]=f>>>24;E[d+4|0]=e;E[d+5|0]=e>>>8;E[d+6|0]=e>>>16;E[d+7|0]=e>>>24;d=H[a+28|0]|H[a+29|0]<<8|(H[a+30|0]<<16|H[a+31|0]<<24);e=H[a+24|0]|H[a+25|0]<<8|(H[a+26|0]<<16|H[a+27|0]<<24);E[c+56|0]=e;E[c+57|0]=e>>>8;E[c+58|0]=e>>>16;E[c+59|0]=e>>>24;E[c+60|0]=d;E[c+61|0]=d>>>8;E[c+62|0]=d>>>16;E[c+63|0]=d>>>24;d=H[a+20|0]|H[a+21|0]<<8|(H[a+22|0]<<16|H[a+23|0]<<24);e=H[a+16|0]|H[a+17|0]<<8|(H[a+18|0]<<16|H[a+19|0]<<24);E[c+48|0]=e;E[c+49|0]=e>>>8;E[c+50|0]=e>>>16;E[c+51|0]=e>>>24;E[c+52|0]=d;E[c+53|0]=d>>>8;E[c+54|0]=d>>>16;E[c+55|0]=d>>>24;d=H[a+12|0]|H[a+13|0]<<8|(H[a+14|0]<<16|H[a+15|0]<<24);a=H[a+8|0]|H[a+9|0]<<8|(H[a+10|0]<<16|H[a+11|0]<<24);E[c+40|0]=a;E[c+41|0]=a>>>8;E[c+42|0]=a>>>16;E[c+43|0]=a>>>24;E[c+44|0]=d;E[c+45|0]=d>>>8;E[c+46|0]=d>>>16;E[c+47|0]=d>>>24;e=b}return e}function fd(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;a:{if(!a){break a}d=a-8|0;b=G[a-4>>2];a=b&-8;f=d+a|0;b:{if(b&1){break b}if(!(b&3)){break a}b=G[d>>2];d=d-b|0;if(d>>>0>>0<=255){e=b>>>3|0;b=G[d+12>>2];c=G[d+8>>2];if((b|0)==(c|0)){i=37564,j=G[9391]&ye(-2,e),G[i>>2]=j;break b}G[c+12>>2]=b;G[b+8>>2]=c;break b}h=G[d+24>>2];b=G[d+12>>2];if((d|0)!=(b|0)){c=G[d+8>>2];G[c+12>>2]=b;G[b+8>>2]=c;break c}e=d+20|0;c=G[e>>2];if(!c){c=G[d+16>>2];if(!c){break d}e=d+16|0}while(1){g=e;b=c;e=b+20|0;c=G[e>>2];if(c){continue}e=b+16|0;c=G[b+16>>2];if(c){continue}break}G[g>>2]=0;break c}b=G[f+4>>2];if((b&3)!=3){break b}G[9393]=a;G[f+4>>2]=b&-2;G[d+4>>2]=a|1;G[f>>2]=a;return}b=0}if(!h){break b}c=G[d+28>>2];e=(c<<2)+37868|0;e:{if(G[e>>2]==(d|0)){G[e>>2]=b;if(b){break e}i=37568,j=G[9392]&ye(-2,c),G[i>>2]=j;break b}G[h+(G[h+16>>2]==(d|0)?16:20)>>2]=b;if(!b){break b}}G[b+24>>2]=h;c=G[d+16>>2];if(c){G[b+16>>2]=c;G[c+24>>2]=b}c=G[d+20>>2];if(!c){break b}G[b+20>>2]=c;G[c+24>>2]=b}if(d>>>0>=f>>>0){break a}b=G[f+4>>2];if(!(b&1)){break a}f:{g:{h:{i:{if(!(b&2)){if(G[9397]==(f|0)){G[9397]=d;a=G[9394]+a|0;G[9394]=a;G[d+4>>2]=a|1;if(G[9396]!=(d|0)){break a}G[9393]=0;G[9396]=0;return}if(G[9396]==(f|0)){G[9396]=d;a=G[9393]+a|0;G[9393]=a;G[d+4>>2]=a|1;G[a+d>>2]=a;return}a=(b&-8)+a|0;if(b>>>0<=255){e=b>>>3|0;b=G[f+12>>2];c=G[f+8>>2];if((b|0)==(c|0)){i=37564,j=G[9391]&ye(-2,e),G[i>>2]=j;break g}G[c+12>>2]=b;G[b+8>>2]=c;break g}h=G[f+24>>2];b=G[f+12>>2];if((f|0)!=(b|0)){c=G[f+8>>2];G[c+12>>2]=b;G[b+8>>2]=c;break h}e=f+20|0;c=G[e>>2];if(!c){c=G[f+16>>2];if(!c){break i}e=f+16|0}while(1){g=e;b=c;e=b+20|0;c=G[e>>2];if(c){continue}e=b+16|0;c=G[b+16>>2];if(c){continue}break}G[g>>2]=0;break h}G[f+4>>2]=b&-2;G[d+4>>2]=a|1;G[a+d>>2]=a;break f}b=0}if(!h){break g}c=G[f+28>>2];e=(c<<2)+37868|0;j:{if(G[e>>2]==(f|0)){G[e>>2]=b;if(b){break j}i=37568,j=G[9392]&ye(-2,c),G[i>>2]=j;break g}G[h+(G[h+16>>2]==(f|0)?16:20)>>2]=b;if(!b){break g}}G[b+24>>2]=h;c=G[f+16>>2];if(c){G[b+16>>2]=c;G[c+24>>2]=b}c=G[f+20>>2];if(!c){break g}G[b+20>>2]=c;G[c+24>>2]=b}G[d+4>>2]=a|1;G[a+d>>2]=a;if(G[9396]!=(d|0)){break f}G[9393]=a;return}if(a>>>0<=255){b=(a&-8)+37604|0;c=G[9391];a=1<<(a>>>3);k:{if(!(c&a)){G[9391]=a|c;a=b;break k}a=G[b+8>>2]}G[b+8>>2]=d;G[a+12>>2]=d;G[d+12>>2]=b;G[d+8>>2]=a;return}c=31;if(a>>>0<=16777215){b=P(a>>>8|0);c=((a>>>38-b&1)-(b<<1)|0)+62|0}G[d+28>>2]=c;G[d+16>>2]=0;G[d+20>>2]=0;b=(c<<2)+37868|0;l:{m:{e=G[9392];g=1<>2]=d;G[d+24>>2]=b;break n}c=a<<((c|0)!=31?25-(c>>>1|0)|0:0);b=G[b>>2];while(1){e=b;if((G[b+4>>2]&-8)==(a|0)){break m}g=c>>>29|0;c=c<<1;g=b+(g&4)|0;b=G[g+16>>2];if(b){continue}break}G[g+16>>2]=d;G[d+24>>2]=e}G[d+12>>2]=d;G[d+8>>2]=d;break l}a=G[e+8>>2];G[a+12>>2]=d;G[e+8>>2]=d;G[d+24>>2]=0;G[d+12>>2]=e;G[d+8>>2]=a}a=G[9399]-1|0;G[9399]=a?a:-1}}function vb(a,b){var c=0,d=0,e=0;c=H[b+4|0]|H[b+5|0]<<8|(H[b+6|0]<<16|H[b+7|0]<<24);d=H[b|0]|H[b+1|0]<<8|(H[b+2|0]<<16|H[b+3|0]<<24);E[a|0]=d;E[a+1|0]=d>>>8;E[a+2|0]=d>>>16;E[a+3|0]=d>>>24;E[a+4|0]=c;E[a+5|0]=c>>>8;E[a+6|0]=c>>>16;E[a+7|0]=c>>>24;c=H[b+28|0]|H[b+29|0]<<8|(H[b+30|0]<<16|H[b+31|0]<<24);d=H[b+24|0]|H[b+25|0]<<8|(H[b+26|0]<<16|H[b+27|0]<<24);E[a+24|0]=d;E[a+25|0]=d>>>8;E[a+26|0]=d>>>16;E[a+27|0]=d>>>24;E[a+28|0]=c;E[a+29|0]=c>>>8;E[a+30|0]=c>>>16;E[a+31|0]=c>>>24;c=H[b+20|0]|H[b+21|0]<<8|(H[b+22|0]<<16|H[b+23|0]<<24);d=H[b+16|0]|H[b+17|0]<<8|(H[b+18|0]<<16|H[b+19|0]<<24);E[a+16|0]=d;E[a+17|0]=d>>>8;E[a+18|0]=d>>>16;E[a+19|0]=d>>>24;E[a+20|0]=c;E[a+21|0]=c>>>8;E[a+22|0]=c>>>16;E[a+23|0]=c>>>24;c=H[b+12|0]|H[b+13|0]<<8|(H[b+14|0]<<16|H[b+15|0]<<24);d=H[b+8|0]|H[b+9|0]<<8|(H[b+10|0]<<16|H[b+11|0]<<24);E[a+8|0]=d;E[a+9|0]=d>>>8;E[a+10|0]=d>>>16;E[a+11|0]=d>>>24;E[a+12|0]=c;E[a+13|0]=c>>>8;E[a+14|0]=c>>>16;E[a+15|0]=c>>>24;c=H[b+36|0]|H[b+37|0]<<8|(H[b+38|0]<<16|H[b+39|0]<<24);d=H[b+32|0]|H[b+33|0]<<8|(H[b+34|0]<<16|H[b+35|0]<<24);E[a+32|0]=d;E[a+33|0]=d>>>8;E[a+34|0]=d>>>16;E[a+35|0]=d>>>24;E[a+36|0]=c;E[a+37|0]=c>>>8;E[a+38|0]=c>>>16;E[a+39|0]=c>>>24;c=H[b+44|0]|H[b+45|0]<<8|(H[b+46|0]<<16|H[b+47|0]<<24);d=H[b+40|0]|H[b+41|0]<<8|(H[b+42|0]<<16|H[b+43|0]<<24);E[a+40|0]=d;E[a+41|0]=d>>>8;E[a+42|0]=d>>>16;E[a+43|0]=d>>>24;E[a+44|0]=c;E[a+45|0]=c>>>8;E[a+46|0]=c>>>16;E[a+47|0]=c>>>24;c=H[b+52|0]|H[b+53|0]<<8|(H[b+54|0]<<16|H[b+55|0]<<24);d=H[b+48|0]|H[b+49|0]<<8|(H[b+50|0]<<16|H[b+51|0]<<24);E[a+48|0]=d;E[a+49|0]=d>>>8;E[a+50|0]=d>>>16;E[a+51|0]=d>>>24;E[a+52|0]=c;E[a+53|0]=c>>>8;E[a+54|0]=c>>>16;E[a+55|0]=c>>>24;c=H[b+60|0]|H[b+61|0]<<8|(H[b+62|0]<<16|H[b+63|0]<<24);d=H[b+56|0]|H[b+57|0]<<8|(H[b+58|0]<<16|H[b+59|0]<<24);E[a+56|0]=d;E[a+57|0]=d>>>8;E[a+58|0]=d>>>16;E[a+59|0]=d>>>24;E[a+60|0]=c;E[a+61|0]=c>>>8;E[a+62|0]=c>>>16;E[a+63|0]=c>>>24;d=b- -64|0;e=H[d+4|0]|H[d+5|0]<<8|(H[d+6|0]<<16|H[d+7|0]<<24);c=a- -64|0;d=H[d|0]|H[d+1|0]<<8|(H[d+2|0]<<16|H[d+3|0]<<24);E[c|0]=d;E[c+1|0]=d>>>8;E[c+2|0]=d>>>16;E[c+3|0]=d>>>24;E[c+4|0]=e;E[c+5|0]=e>>>8;E[c+6|0]=e>>>16;E[c+7|0]=e>>>24;c=H[b+76|0]|H[b+77|0]<<8|(H[b+78|0]<<16|H[b+79|0]<<24);d=H[b+72|0]|H[b+73|0]<<8|(H[b+74|0]<<16|H[b+75|0]<<24);E[a+72|0]=d;E[a+73|0]=d>>>8;E[a+74|0]=d>>>16;E[a+75|0]=d>>>24;E[a+76|0]=c;E[a+77|0]=c>>>8;E[a+78|0]=c>>>16;E[a+79|0]=c>>>24;c=H[b+84|0]|H[b+85|0]<<8|(H[b+86|0]<<16|H[b+87|0]<<24);d=H[b+80|0]|H[b+81|0]<<8|(H[b+82|0]<<16|H[b+83|0]<<24);E[a+80|0]=d;E[a+81|0]=d>>>8;E[a+82|0]=d>>>16;E[a+83|0]=d>>>24;E[a+84|0]=c;E[a+85|0]=c>>>8;E[a+86|0]=c>>>16;E[a+87|0]=c>>>24;c=H[b+92|0]|H[b+93|0]<<8|(H[b+94|0]<<16|H[b+95|0]<<24);b=H[b+88|0]|H[b+89|0]<<8|(H[b+90|0]<<16|H[b+91|0]<<24);E[a+88|0]=b;E[a+89|0]=b>>>8;E[a+90|0]=b>>>16;E[a+91|0]=b>>>24;E[a+92|0]=c;E[a+93|0]=c>>>8;E[a+94|0]=c>>>16;E[a+95|0]=c>>>24;return a+96|0}function le(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0;j=Y-160|0;Y=j;l=-1;if(!(i>>>0<8|(e&-16)+16>>>0>g>>>0)){g=j+80|0;Da(b,c,0,0,G[a+4>>2],G[a+8>>2],g,80);a=G[j+108>>2];G[j+24>>2]=G[j+104>>2];G[j+28>>2]=a;a=G[j+100>>2];G[j+16>>2]=G[j+96>>2];G[j+20>>2]=a;a=G[j+92>>2];G[j+8>>2]=G[j+88>>2];G[j+12>>2]=a;a=G[j+124>>2];G[j+40>>2]=G[j+120>>2];G[j+44>>2]=a;a=G[j+132>>2];G[j+48>>2]=G[j+128>>2];G[j+52>>2]=a;a=G[j+140>>2];G[j+56>>2]=G[j+136>>2];G[j+60>>2]=a;a=G[j+156>>2];G[j+72>>2]=G[j+152>>2];G[j+76>>2]=a;a=G[j+84>>2];G[j>>2]=G[j+80>>2];G[j+4>>2]=a;a=G[j+116>>2];G[j+32>>2]=G[j+112>>2];G[j+36>>2]=a;a=G[j+148>>2];G[j+64>>2]=G[j+144>>2];G[j+68>>2]=a;la(g,80);l=0;a=Y-256|0;Y=a;Mb(j,a+16|0);b=j- -64|0;c=H[b+12|0]|H[b+13|0]<<8|(H[b+14|0]<<16|H[b+15|0]<<24);G[a+8>>2]=H[b+8|0]|H[b+9|0]<<8|(H[b+10|0]<<16|H[b+11|0]<<24);G[a+12>>2]=c;c=H[b+4|0]|H[b+5|0]<<8|(H[b+6|0]<<16|H[b+7|0]<<24);G[a>>2]=H[b|0]|H[b+1|0]<<8|(H[b+2|0]<<16|H[b+3|0]<<24);G[a+4>>2]=c;if(e>>>0>=16){while(1){E[a|0]=H[a|0]^H[d|0];E[a+1|0]=H[a+1|0]^H[d+1|0];E[a+2|0]=H[a+2|0]^H[d+2|0];E[a+3|0]=H[a+3|0]^H[d+3|0];E[a+4|0]=H[a+4|0]^H[d+4|0];E[a+5|0]=H[a+5|0]^H[d+5|0];E[a+6|0]=H[a+6|0]^H[d+6|0];E[a+7|0]=H[a+7|0]^H[d+7|0];E[a+8|0]=H[a+8|0]^H[d+8|0];E[a+9|0]=H[a+9|0]^H[d+9|0];E[a+10|0]=H[a+10|0]^H[d+10|0];E[a+11|0]=H[a+11|0]^H[d+11|0];E[a+12|0]=H[a+12|0]^H[d+12|0];E[a+13|0]=H[a+13|0]^H[d+13|0];E[a+14|0]=H[a+14|0]^H[d+14|0];E[a+15|0]=H[a+15|0]^H[d+15|0];Nb(a,f,a+16|0);b=H[f+12|0]|H[f+13|0]<<8|(H[f+14|0]<<16|H[f+15|0]<<24);G[a+8>>2]=H[f+8|0]|H[f+9|0]<<8|(H[f+10|0]<<16|H[f+11|0]<<24);G[a+12>>2]=b;b=H[f+4|0]|H[f+5|0]<<8|(H[f+6|0]<<16|H[f+7|0]<<24);G[a>>2]=H[f|0]|H[f+1|0]<<8|(H[f+2|0]<<16|H[f+3|0]<<24);G[a+4>>2]=b;f=f+16|0;d=d+16|0;e=e-16|0;if(e>>>0>15){continue}break}}c=0;a:{if(!e){break a}b=0;if(e>>>0>=4){n=e&-4;c=0;while(1){k=a+b|0;E[k|0]=H[k|0]^H[b+d|0];k=b|1;m=k+a|0;E[m|0]=H[m|0]^H[d+k|0];k=b|2;m=k+a|0;E[m|0]=H[m|0]^H[d+k|0];k=b|3;m=k+a|0;E[m|0]=H[m|0]^H[d+k|0];b=b+4|0;c=c+4|0;if((n|0)!=(c|0)){continue}break}}c=e;n=c&3;if(!n){break a}while(1){c=a+b|0;E[c|0]=H[c|0]^H[b+d|0];b=b+1|0;l=l+1|0;if((n|0)!=(l|0)){continue}break}c=e}d=16-e|0;b=0-e&3;if(b){while(1){l=a+c|0;E[l|0]=d^H[l|0];c=c+1|0;o=o+1|0;if((b|0)!=(o|0)){continue}break}}if(e-13>>>0>=3){while(1){b=a+c|0;E[b|0]=d^H[b|0];E[b+1|0]=d^H[b+1|0];E[b+2|0]=d^H[b+2|0];E[b+3|0]=d^H[b+3|0];c=c+4|0;if((c|0)!=16){continue}break}}b=a+16|0;Nb(a,f,b);la(b,240);la(a,16);Y=a+256|0;a=i-8|0;na(j+32|0,32,h,a,g);b=G[j+84>>2];a=a+h|0;c=G[j+80>>2];E[a|0]=c;E[a+1|0]=c>>>8;E[a+2|0]=c>>>16;E[a+3|0]=c>>>24;E[a+4|0]=b;E[a+5|0]=b>>>8;E[a+6|0]=b>>>16;E[a+7|0]=b>>>24;la(j,80);l=i}Y=j+160|0;return l|0}function hb(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0;G[a+16>>2]=0;G[a+20>>2]=0;G[a+12>>2]=c;G[a+8>>2]=b;G[a+4>>2]=0;F[a>>1]=0;G[a+24>>2]=0;G[a+28>>2]=0;a:{if(c>>>0<=d>>>0){break a}E[a|0]=H[b|0];c=c-d|0;if((c|0)==1){break a}h=b+c|0;c=b+1|0;while(1){d=c;e=c;if(H[c|0]==10){c=c+1|0;b=c;while(1){b:{if((b|0)==(h|0)){g=h;break b}e=E[b|0];g=b+1|0;b=g;if((e|0)<0){continue}}break}c:{if((c|0)==(g|0)){c=0;break c}e=(d^-1)+g|0;i=e&3;f=0;c=0;b=g;if((b-d|0)-2>>>0>=3){j=e&-4;e=0;while(1){c=(H[b-2|0]&127|(c<<14|(H[b-1|0]&127)<<7))<<14|(H[b-3|0]&127)<<7;b=b-4|0;c=c|H[b|0]&127;e=e+4|0;if((j|0)!=(e|0)){continue}break}}if(i){while(1){b=b-1|0;c=H[b|0]&127|c<<7;f=f+1|0;if((i|0)!=(f|0)){continue}break}}if(h-g>>>0>>0){break a}}G[a+20>>2]=c;G[a+16>>2]=g;e=c+g|0}if((e|0)==(h|0)){break a}d:{if(H[e|0]!=16){c=e;break d}g=e+1|0;b=g;while(1){e:{if((b|0)==(h|0)){c=h;break e}f=E[b|0];c=b+1|0;b=c;if((f|0)<0){continue}}break}f:{if((c|0)==(g|0)){f=0;break f}j=(e^-1)+c|0;i=j&3;g=0;f=0;b=c;if((b-e|0)-2>>>0>=3){j=j&-4;e=0;while(1){f=(H[b-2|0]&127|(f<<14|(H[b-1|0]&127)<<7))<<14|(H[b-3|0]&127)<<7;b=b-4|0;f=f|H[b|0]&127;e=e+4|0;if((j|0)!=(e|0)){continue}break}}if(!i){break f}while(1){b=b-1|0;f=H[b|0]&127|f<<7;g=g+1|0;if((i|0)!=(g|0)){continue}break}}E[a+1|0]=1;G[a+4>>2]=f}if((c|0)==(h|0)){break a}if(H[c|0]==34){g=c+1|0;b=g;while(1){g:{if((b|0)==(h|0)){e=h;break g}f=E[b|0];e=b+1|0;b=e;if((f|0)<0){continue}}break}h:{if((e|0)==(g|0)){f=0;break h}j=(c^-1)+e|0;i=j&3;g=0;f=0;b=e;if((b-c|0)-2>>>0>=3){j=j&-4;c=0;while(1){f=(H[b-2|0]&127|(f<<14|(H[b-1|0]&127)<<7))<<14|(H[b-3|0]&127)<<7;b=b-4|0;f=f|H[b|0]&127;c=c+4|0;if((j|0)!=(c|0)){continue}break}}if(i){while(1){b=b-1|0;f=H[b|0]&127|f<<7;g=g+1|0;if((i|0)!=(g|0)){continue}break}}if(h-e>>>0>>0){break a}}G[a+28>>2]=f;G[a+24>>2]=e;c=e+f|0}i:{if((c|0)==(h|0)|(c|0)!=(d|0)){break i}j:{switch(H[d|0]&7){case 0:while(1){k:{if((d|0)==(h|0)){b=h;break k}c=E[d|0];b=d+1|0;d=b;if((c|0)<0){continue}}break};while(1){if((b|0)==(h|0)){c=h;break i}d=E[b|0];c=b+1|0;b=c;if((d|0)<0){continue}break};break i;case 2:break j;default:break a}}while(1){l:{if((d|0)==(h|0)){c=h;break l}b=E[d|0];c=d+1|0;d=c;if((b|0)<0){continue}}break}b=c;while(1){m:{if((b|0)==(h|0)){g=h;break m}d=E[b|0];g=b+1|0;b=g;if((d|0)<0){continue}}break}if((c|0)==(g|0)){break i}i=g-c|0;e=i&3;f=0;d=0;b=g;if(b+(c^-1)>>>0>=3){i=i&-4;c=0;while(1){d=(H[b-2|0]&127|(d<<14|(H[b-1|0]&127)<<7))<<14|(H[b-3|0]&127)<<7;b=b-4|0;d=d|H[b|0]&127;c=c+4|0;if((i|0)!=(c|0)){continue}break}}if(e){while(1){b=b-1|0;d=H[b|0]&127|d<<7;f=f+1|0;if((e|0)!=(f|0)){continue}break}}if(h-g>>>0>>0){break a}c=d+g|0}if((c|0)!=(h|0)){continue}break}}}function za(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0;G[a+80>>2]=0;G[a+84>>2]=0;b=G[a>>2];g=G[a+4>>2];h=g;d=b;b=g;g=b>>31>>>6|0;c=d+g|0;if(g>>>0>c>>>0){b=b+1|0}f=c&-67108864;g=d-f|0;d=h-((d>>>0>>0)+b|0)|0;h=d;G[a>>2]=g;G[a+4>>2]=d;d=b;b=b>>26;c=(d&67108863)<<6|c>>>26;d=c+G[a+8>>2]|0;b=b+G[a+12>>2]|0;b=d>>>0>>0?b+1|0:b;f=b;c=b>>31>>>7|0;e=c;c=d+c|0;b=e>>>0>c>>>0?b+1|0:b;e=c&-33554432;G[a+8>>2]=d-e;G[a+12>>2]=f-((d>>>0>>0)+b|0);d=b;b=b>>25;c=(d&33554431)<<7|c>>>25;d=c+G[a+16>>2]|0;b=b+G[a+20>>2]|0;b=d>>>0>>0?b+1|0:b;f=b;c=b>>31>>>6|0;e=c;c=d+c|0;b=e>>>0>c>>>0?b+1|0:b;e=c&-67108864;G[a+16>>2]=d-e;G[a+20>>2]=f-((d>>>0>>0)+b|0);d=b;b=b>>26;c=(d&67108863)<<6|c>>>26;d=c+G[a+24>>2]|0;b=b+G[a+28>>2]|0;b=d>>>0>>0?b+1|0:b;f=b;c=b>>31>>>7|0;e=c;c=d+c|0;b=e>>>0>c>>>0?b+1|0:b;e=c&-33554432;G[a+24>>2]=d-e;G[a+28>>2]=f-((d>>>0>>0)+b|0);d=b;b=b>>25;c=(d&33554431)<<7|c>>>25;d=c+G[a+32>>2]|0;b=b+G[a+36>>2]|0;b=d>>>0>>0?b+1|0:b;f=b;c=b>>31>>>6|0;e=c;c=d+c|0;b=e>>>0>c>>>0?b+1|0:b;e=c&-67108864;G[a+32>>2]=d-e;G[a+36>>2]=f-((d>>>0>>0)+b|0);d=b;b=b>>26;c=(d&67108863)<<6|c>>>26;d=c+G[a+40>>2]|0;b=b+G[a+44>>2]|0;b=d>>>0>>0?b+1|0:b;f=b;c=b>>31>>>7|0;e=c;c=d+c|0;b=e>>>0>c>>>0?b+1|0:b;e=c&-33554432;G[a+40>>2]=d-e;G[a+44>>2]=f-((d>>>0>>0)+b|0);d=b;b=b>>25;c=(d&33554431)<<7|c>>>25;d=c+G[a+48>>2]|0;b=b+G[a+52>>2]|0;b=d>>>0>>0?b+1|0:b;f=b;c=b>>31>>>6|0;e=c;c=d+c|0;b=e>>>0>c>>>0?b+1|0:b;e=c&-67108864;G[a+48>>2]=d-e;G[a+52>>2]=f-((d>>>0>>0)+b|0);d=b;b=b>>26;c=(d&67108863)<<6|c>>>26;d=c+G[a+56>>2]|0;b=b+G[a+60>>2]|0;b=d>>>0>>0?b+1|0:b;f=b;c=b>>31>>>7|0;e=c;c=d+c|0;b=e>>>0>c>>>0?b+1|0:b;e=c&-33554432;G[a+56>>2]=d-e;G[a+60>>2]=f-((d>>>0>>0)+b|0);d=b;b=b>>25;c=(d&33554431)<<7|c>>>25;d=c+G[a+64>>2]|0;b=b+G[a+68>>2]|0;b=d>>>0>>0?b+1|0:b;f=b;c=b>>31>>>6|0;e=c;c=d+c|0;b=e>>>0>c>>>0?b+1|0:b;e=c&-67108864;G[a+64>>2]=d-e;G[a+68>>2]=f-((d>>>0>>0)+b|0);d=b;b=b>>26;c=(d&67108863)<<6|c>>>26;d=c+G[a+72>>2]|0;b=b+G[a+76>>2]|0;b=d>>>0>>0?b+1|0:b;f=b;c=b>>31>>>7|0;e=c;c=d+c|0;b=e>>>0>c>>>0?b+1|0:b;e=c&-33554432;G[a+72>>2]=d-e;G[a+76>>2]=f-((d>>>0>>0)+b|0);e=G[a+80>>2];d=G[a+84>>2];G[a+80>>2]=0;G[a+84>>2]=0;f=d;d=b;b=b>>25;c=(d&33554431)<<7|c>>>25;d=c+e|0;b=b+f|0;c=d>>>0>>0?b+1|0:b;b=c+h|0;g=d+g|0;b=g>>>0>>0?b+1|0:b;f=g;g=we(d,c,18,0);d=f+g|0;b=Z+b|0;b=d>>>0>>0?b+1|0:b;c=b;g=b>>31>>>6|0;f=g;g=d+g|0;b=f>>>0>g>>>0?b+1|0:b;h=g&-67108864;G[a>>2]=d-h;G[a+4>>2]=c-((d>>>0>>0)+b|0);d=b;b=b>>26;g=(d&67108863)<<6|g>>>26;d=g+G[a+8>>2]|0;b=b+G[a+12>>2]|0;G[a+8>>2]=d;G[a+12>>2]=d>>>0>>0?b+1|0:b}function na(a,b,c,d,e){var f=0,g=0;f=Y-384|0;Y=f;G[f+128>>2]=0;G[f+132>>2]=0;G[f+136>>2]=0;G[f+140>>2]=0;G[f+144>>2]=0;G[f+148>>2]=0;G[f+152>>2]=0;G[f+156>>2]=0;G[f+160>>2]=0;G[f+164>>2]=0;G[f+168>>2]=0;G[f+172>>2]=0;G[f+112>>2]=0;G[f+116>>2]=0;G[f+120>>2]=0;G[f+124>>2]=0;a:{if(b>>>0>=65){g=f+176|0;G[g+80>>2]=1779033703;G[g+84>>2]=-1150833019;G[g+72>>2]=0;G[g+76>>2]=0;G[g+64>>2]=0;G[g+104>>2]=528734635;G[g+108>>2]=1541459225;G[g+96>>2]=1359893119;G[g+100>>2]=-1694144372;G[g+88>>2]=1013904242;G[g+92>>2]=-1521486534;ua(g,a,b);Ea(g,f+112|0);break a}ma(f+112|0,a,b)}a=G[f+172>>2];G[f+232>>2]=G[f+168>>2];G[f+236>>2]=a;a=G[f+164>>2];G[f+224>>2]=G[f+160>>2];G[f+228>>2]=a;a=G[f+156>>2];G[f+216>>2]=G[f+152>>2];G[f+220>>2]=a;a=G[f+148>>2];G[f+208>>2]=G[f+144>>2];G[f+212>>2]=a;a=G[f+140>>2];G[f+200>>2]=G[f+136>>2];G[f+204>>2]=a;a=G[f+132>>2];G[f+192>>2]=G[f+128>>2];G[f+196>>2]=a;a=G[f+124>>2];G[f+184>>2]=G[f+120>>2];G[f+188>>2]=a;a=G[f+116>>2];G[f+176>>2]=G[f+112>>2];G[f+180>>2]=a;b=0;while(1){a=f+176|0;g=a+b|0;E[g|0]=H[g|0]^54;g=a+(b|1)|0;E[g|0]=H[g|0]^54;g=a+(b|2)|0;E[g|0]=H[g|0]^54;g=a+(b|3)|0;E[g|0]=H[g|0]^54;b=b+4|0;if((b|0)!=64){continue}break}G[f+80>>2]=1779033703;G[f+84>>2]=-1150833019;G[f+72>>2]=0;G[f+76>>2]=0;G[f+64>>2]=0;G[f+104>>2]=528734635;G[f+108>>2]=1541459225;G[f+96>>2]=1359893119;G[f+100>>2]=-1694144372;G[f+88>>2]=1013904242;G[f+92>>2]=-1521486534;ua(f,a,64);la(a,64);ua(f,c,d);a=G[f+172>>2];G[f+344>>2]=G[f+168>>2];G[f+348>>2]=a;a=G[f+164>>2];G[f+336>>2]=G[f+160>>2];G[f+340>>2]=a;a=G[f+156>>2];G[f+328>>2]=G[f+152>>2];G[f+332>>2]=a;a=G[f+148>>2];G[f+320>>2]=G[f+144>>2];G[f+324>>2]=a;a=G[f+140>>2];G[f+312>>2]=G[f+136>>2];G[f+316>>2]=a;a=G[f+132>>2];G[f+304>>2]=G[f+128>>2];G[f+308>>2]=a;a=G[f+124>>2];G[f+296>>2]=G[f+120>>2];G[f+300>>2]=a;a=G[f+116>>2];G[f+288>>2]=G[f+112>>2];G[f+292>>2]=a;b=0;while(1){c=f+288|0;a=c+b|0;E[a|0]=H[a|0]^92;a=c+(b|1)|0;E[a|0]=H[a|0]^92;a=c+(b|2)|0;E[a|0]=H[a|0]^92;a=c+(b|3)|0;E[a|0]=H[a|0]^92;b=b+4|0;if((b|0)!=64){continue}break}Ea(f,f+352|0);a=f+176|0;G[a+80>>2]=1779033703;G[a+84>>2]=-1150833019;G[a+72>>2]=0;G[a+76>>2]=0;G[a+64>>2]=0;G[a+104>>2]=528734635;G[a+108>>2]=1541459225;G[a+96>>2]=1359893119;G[a+100>>2]=-1694144372;G[a+88>>2]=1013904242;G[a+92>>2]=-1521486534;ua(a,c,96);Ea(a,e);la(a,112);la(c,96);la(f+112|0,64);la(f,112);Y=f+384|0}function La(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;e=G[b+44>>2];d=G[b+48>>2];g=G[b+52>>2];h=G[b+56>>2];i=G[b+60>>2];f=b- -64|0;j=G[f>>2];k=G[b+68>>2];l=G[b+72>>2];m=G[b+76>>2];n=G[b+4>>2];o=G[b+8>>2];p=G[b+12>>2];q=G[b+16>>2];r=G[b+20>>2];s=G[b+24>>2];t=G[b+28>>2];u=G[b+32>>2];v=G[b+36>>2];G[a>>2]=G[b>>2]+G[b+40>>2];G[a+36>>2]=m+v;G[a+32>>2]=l+u;G[a+28>>2]=k+t;G[a+24>>2]=j+s;G[a+20>>2]=i+r;G[a+16>>2]=h+q;G[a+12>>2]=g+p;G[a+8>>2]=d+o;G[a+4>>2]=e+n;d=G[b+44>>2];g=G[b+48>>2];h=G[b+52>>2];i=G[b+56>>2];j=G[b+60>>2];f=G[f>>2];e=G[b+68>>2];k=G[b+72>>2];l=G[b>>2];m=G[b+40>>2];n=G[b+4>>2];o=G[b+8>>2];p=G[b+12>>2];q=G[b+16>>2];r=G[b+20>>2];s=G[b+24>>2];t=G[b+28>>2];u=G[b+32>>2];G[a+76>>2]=G[b+76>>2]-G[b+36>>2];G[a+72>>2]=k-u;G[a+68>>2]=e-t;e=a- -64|0;G[e>>2]=f-s;G[a+60>>2]=j-r;G[a+56>>2]=i-q;G[a+52>>2]=h-p;G[a+48>>2]=g-o;G[a+44>>2]=d-n;G[a+40>>2]=m-l;ka(a+80|0,a,c);d=a+40|0;ka(d,d,c+40|0);ka(a+120|0,c+120|0,b+120|0);ka(a,b+80|0,c+80|0);b=G[a+44>>2];c=G[a+84>>2];d=G[a+48>>2];g=G[a+88>>2];h=G[a+52>>2];i=G[a+92>>2];f=G[a+56>>2];j=G[a+96>>2];k=G[a+60>>2];l=G[a+100>>2];m=G[e>>2];n=G[a+104>>2];o=G[a+68>>2];p=G[a+108>>2];q=G[a+72>>2];r=G[a+112>>2];u=G[a>>2];v=G[a+4>>2];y=G[a+8>>2];z=G[a+12>>2];A=G[a+16>>2];B=G[a+20>>2];C=G[a+24>>2];D=G[a+28>>2];E=G[a+32>>2];F=G[a+36>>2];s=G[a+40>>2];t=G[a+80>>2];w=G[a+76>>2];x=G[a+116>>2];G[a+76>>2]=w+x;G[a+72>>2]=q+r;G[a+68>>2]=o+p;G[e>>2]=m+n;G[a+60>>2]=k+l;G[a+56>>2]=f+j;G[a+52>>2]=h+i;G[a+48>>2]=d+g;G[a+44>>2]=b+c;G[a+40>>2]=s+t;G[a+36>>2]=x-w;G[a+32>>2]=r-q;G[a+28>>2]=p-o;G[a+24>>2]=n-m;G[a+20>>2]=l-k;G[a+16>>2]=j-f;G[a+12>>2]=i-h;G[a+8>>2]=g-d;G[a+4>>2]=c-b;G[a>>2]=t-s;b=F<<1;c=G[a+156>>2];G[a+156>>2]=b-c;e=E<<1;d=G[a+152>>2];G[a+152>>2]=e-d;g=D<<1;h=G[a+148>>2];G[a+148>>2]=g-h;i=C<<1;f=G[a+144>>2];G[a+144>>2]=i-f;j=B<<1;k=G[a+140>>2];G[a+140>>2]=j-k;l=A<<1;m=G[a+136>>2];G[a+136>>2]=l-m;n=z<<1;o=G[a+132>>2];G[a+132>>2]=n-o;p=y<<1;q=G[a+128>>2];G[a+128>>2]=p-q;r=v<<1;s=G[a+124>>2];G[a+124>>2]=r-s;t=u<<1;u=G[a+120>>2];G[a+120>>2]=t-u;G[a+112>>2]=d+e;G[a+108>>2]=g+h;G[a+104>>2]=i+f;G[a+100>>2]=j+k;G[a+96>>2]=l+m;G[a+92>>2]=n+o;G[a+88>>2]=p+q;G[a+84>>2]=r+s;G[a+80>>2]=t+u;G[a+116>>2]=b+c}function ob(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;e=G[b+44>>2];d=G[b+48>>2];g=G[b+52>>2];h=G[b+56>>2];i=G[b+60>>2];f=b- -64|0;j=G[f>>2];k=G[b+68>>2];l=G[b+72>>2];m=G[b+76>>2];n=G[b+4>>2];o=G[b+8>>2];p=G[b+12>>2];q=G[b+16>>2];r=G[b+20>>2];s=G[b+24>>2];t=G[b+28>>2];u=G[b+32>>2];v=G[b+36>>2];G[a>>2]=G[b>>2]+G[b+40>>2];G[a+36>>2]=m+v;G[a+32>>2]=l+u;G[a+28>>2]=k+t;G[a+24>>2]=j+s;G[a+20>>2]=i+r;G[a+16>>2]=h+q;G[a+12>>2]=g+p;G[a+8>>2]=d+o;G[a+4>>2]=e+n;d=G[b+44>>2];g=G[b+48>>2];h=G[b+52>>2];i=G[b+56>>2];j=G[b+60>>2];f=G[f>>2];e=G[b+68>>2];k=G[b+72>>2];l=G[b>>2];m=G[b+40>>2];n=G[b+4>>2];o=G[b+8>>2];p=G[b+12>>2];q=G[b+16>>2];r=G[b+20>>2];s=G[b+24>>2];t=G[b+28>>2];u=G[b+32>>2];G[a+76>>2]=G[b+76>>2]-G[b+36>>2];G[a+72>>2]=k-u;G[a+68>>2]=e-t;e=a- -64|0;G[e>>2]=f-s;G[a+60>>2]=j-r;G[a+56>>2]=i-q;G[a+52>>2]=h-p;G[a+48>>2]=g-o;G[a+44>>2]=d-n;G[a+40>>2]=m-l;ka(a+80|0,a,c);d=a+40|0;ka(d,d,c+40|0);ka(a+120|0,c+80|0,b+120|0);u=G[b+84>>2];v=G[b+88>>2];y=G[b+92>>2];z=G[b+96>>2];A=G[b+100>>2];B=G[b+104>>2];C=G[b+108>>2];D=G[b+112>>2];E=G[b+116>>2];c=G[a+44>>2];d=G[a+84>>2];g=G[a+48>>2];h=G[a+88>>2];i=G[a+52>>2];f=G[a+92>>2];j=G[a+56>>2];k=G[a+96>>2];l=G[a+60>>2];m=G[a+100>>2];n=G[e>>2];o=G[a+104>>2];p=G[a+68>>2];q=G[a+108>>2];r=G[a+72>>2];s=G[a+112>>2];F=G[b+80>>2];b=G[a+40>>2];t=G[a+80>>2];w=G[a+76>>2];x=G[a+116>>2];G[a+76>>2]=w+x;G[a+72>>2]=r+s;G[a+68>>2]=p+q;G[e>>2]=n+o;G[a+60>>2]=l+m;G[a+56>>2]=j+k;G[a+52>>2]=i+f;G[a+48>>2]=g+h;G[a+44>>2]=c+d;G[a+40>>2]=b+t;G[a+36>>2]=x-w;G[a+32>>2]=s-r;G[a+28>>2]=q-p;G[a+24>>2]=o-n;G[a+20>>2]=m-l;G[a+16>>2]=k-j;G[a+12>>2]=f-i;G[a+8>>2]=h-g;G[a+4>>2]=d-c;G[a>>2]=t-b;b=E<<1;c=G[a+156>>2];G[a+156>>2]=b-c;e=D<<1;d=G[a+152>>2];G[a+152>>2]=e-d;g=C<<1;h=G[a+148>>2];G[a+148>>2]=g-h;i=B<<1;f=G[a+144>>2];G[a+144>>2]=i-f;j=A<<1;k=G[a+140>>2];G[a+140>>2]=j-k;l=z<<1;m=G[a+136>>2];G[a+136>>2]=l-m;n=y<<1;o=G[a+132>>2];G[a+132>>2]=n-o;p=v<<1;q=G[a+128>>2];G[a+128>>2]=p-q;r=u<<1;s=G[a+124>>2];G[a+124>>2]=r-s;t=F<<1;u=G[a+120>>2];G[a+120>>2]=t-u;G[a+112>>2]=d+e;G[a+108>>2]=g+h;G[a+104>>2]=i+f;G[a+100>>2]=j+k;G[a+96>>2]=l+m;G[a+92>>2]=n+o;G[a+88>>2]=p+q;G[a+84>>2]=r+s;G[a+80>>2]=t+u;G[a+116>>2]=b+c}function Sb(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;c=Y-480|0;Y=c;while(1){e=c+288|0;f=e+(d<<1)|0;k=H[b+d|0];E[f+1|0]=k>>>4;E[f|0]=k&15;f=d|1;e=e+(f<<1)|0;f=H[b+f|0];E[e+1|0]=f>>>4;E[e|0]=f&15;d=d+2|0;if((d|0)!=32){continue}break}b=0;while(1){d=b;b=(c+288|0)+h|0;e=d+H[b|0]|0;d=e+8|0;E[b|0]=e-(d&240);e=H[b+1|0]+(d<<24>>24>>4)|0;d=e+8|0;E[b+1|0]=e-(d&240);e=H[b+2|0]+(d<<24>>24>>4)|0;d=e+8|0;E[b+2|0]=e-(d&240);b=d<<24>>24>>4;h=h+3|0;if((h|0)!=63){continue}break}E[c+351|0]=H[c+351|0]+b;G[a+32>>2]=0;G[a+36>>2]=0;G[a+24>>2]=0;G[a+28>>2]=0;G[a+16>>2]=0;G[a+20>>2]=0;G[a+8>>2]=0;G[a+12>>2]=0;G[a>>2]=0;G[a+4>>2]=0;G[a+44>>2]=0;G[a+48>>2]=0;G[a+40>>2]=1;G[a+52>>2]=0;G[a+56>>2]=0;G[a+60>>2]=0;G[a+64>>2]=0;G[a+68>>2]=0;G[a+72>>2]=0;G[a+76>>2]=0;G[a+80>>2]=1;ta(a+84|0,0,76);k=a+120|0;q=a+80|0;r=a+40|0;b=c+208|0;f=c+168|0;h=c+248|0;d=1;while(1){g=c+8|0;Rb(g,d>>>1|0,E[(c+288|0)+d|0]);e=c+128|0;ob(e,a,g);ka(a,e,h);ka(r,f,b);ka(q,b,h);ka(k,e,f);g=d>>>0<62;d=d+2|0;if(g){continue}break}d=G[a>>2];g=G[a+4>>2];i=G[a+8>>2];l=G[a+12>>2];j=G[a+16>>2];m=G[a+20>>2];n=G[a+24>>2];o=G[a+28>>2];p=G[a+36>>2];G[c+392>>2]=G[a+32>>2];G[c+396>>2]=p;G[c+384>>2]=n;G[c+388>>2]=o;G[c+376>>2]=j;G[c+380>>2]=m;G[c+368>>2]=i;G[c+372>>2]=l;G[c+360>>2]=d;G[c+364>>2]=g;d=G[a+48>>2];g=G[a+52>>2];i=G[a+56>>2];l=G[a+60>>2];j=a- -64|0;m=G[j>>2];j=G[j+4>>2];n=G[a+40>>2];o=G[a+44>>2];p=G[a+76>>2];G[c+432>>2]=G[a+72>>2];G[c+436>>2]=p;G[c+424>>2]=m;G[c+428>>2]=j;G[c+416>>2]=i;G[c+420>>2]=l;G[c+408>>2]=d;G[c+412>>2]=g;G[c+400>>2]=n;G[c+404>>2]=o;d=G[a+88>>2];g=G[a+92>>2];i=G[a+96>>2];l=G[a+100>>2];j=G[a+104>>2];m=G[a+108>>2];n=G[a+80>>2];o=G[a+84>>2];p=G[a+116>>2];G[c+472>>2]=G[a+112>>2];G[c+476>>2]=p;G[c+464>>2]=j;G[c+468>>2]=m;G[c+456>>2]=i;G[c+460>>2]=l;G[c+448>>2]=d;G[c+452>>2]=g;G[c+440>>2]=n;G[c+444>>2]=o;d=c+360|0;Va(e,d);ka(d,e,h);g=c+400|0;ka(g,f,b);i=c+440|0;ka(i,b,h);Va(e,d);ka(d,e,h);ka(g,f,b);ka(i,b,h);Va(e,d);ka(d,e,h);ka(g,f,b);ka(i,b,h);Va(e,d);ka(a,e,h);ka(r,f,b);ka(q,b,h);ka(k,e,f);d=0;while(1){g=c+8|0;Rb(g,d>>>1|0,E[(c+288|0)+d|0]);e=c+128|0;ob(e,a,g);ka(a,e,h);ka(r,f,b);ka(q,b,h);ka(k,e,f);e=d>>>0<62;d=d+2|0;if(e){continue}break}Y=c+480|0}function Eb(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;c=b;b=G[b>>2]+7&-8;G[c>>2]=b+16;p=a;a=b;i=G[a>>2];d=G[a+4>>2];c=G[a+8>>2];a=G[a+12>>2];n=a;g=Y-32|0;Y=g;a=a&2147483647;h=a;b=c;e=a-1006698496|0;a=a-1140785152|0;a:{if((e|0)==(a|0)&0|a>>>0>e>>>0){a=b;c=n<<4|a>>>28;b=a<<4|d>>>28;a=c;d=d&268435455;if((d|0)==134217728&(i|0)!=0|d>>>0>134217728){a=a+1073741824|0;b=b+1|0;a=b?a:a+1|0;break a}a=a+1073741824|0;if(i|(d|0)!=134217728){break a}d=b&1;b=d+b|0;a=b>>>0>>0?a+1|0:a;break a}if(!(!b&(h|0)==2147418112?!(d|i):h>>>0<2147418112)){a=c;c=n<<4|a>>>28;b=a<<4|d>>>28;a=c&524287|2146959360;break a}b=0;a=2146435072;if(h>>>0>1140785151){break a}a=0;o=h>>>16|0;if(o>>>0<15249){break a}b=i;a=d;e=n&65535|65536;h=e;l=c;f=c;k=o-15233|0;b:{if(k&64){e=b;a=k+-64|0;c=a&31;if((a&63)>>>0>=32){a=b<>>32-c|d<>>0>=32){c=f<>>32-j|e<>>0>=32){c=0;f=a>>>f|0}else{c=a>>>f|0;f=((1<>>f}f=m|f;e=c|e;m=b;j=k&31;if((k&63)>>>0>=32){c=b<>>32-j|a<>2]=b;G[g+20>>2]=a;G[g+24>>2]=f;G[g+28>>2]=e;b=15361-o|0;c:{if(b&64){d=l;b=b+-64|0;a=b&31;if((b&63)>>>0>=32){c=0;i=h>>>a|0}else{c=h>>>a|0;i=((1<>>a}d=c;l=0;h=0;break c}if(!b){break c}e=l;a=64-b|0;c=a&31;if((a&63)>>>0>=32){a=e<>>32-c|h<>>0>=32){c=0;e=d>>>i|0}else{c=d>>>i|0;e=((1<>>i}i=f|e;d=a|c;e=l;c=b&31;if((b&63)>>>0>=32){a=0;l=h>>>c|0}else{a=h>>>c|0;l=((1<>>c}h=a}G[g>>2]=i;G[g+4>>2]=d;G[g+8>>2]=l;G[g+12>>2]=h;b=G[g+8>>2];a=G[g+12>>2]<<4|b>>>28;b=b<<4;c=G[g>>2];h=G[g+4>>2];b=h>>>28|b;d=h&268435455;c=c|(G[g+16>>2]|G[g+24>>2]|(G[g+20>>2]|G[g+28>>2]))!=0;if((d|0)==134217728&(c|0)!=0|d>>>0>134217728){b=b+1|0;a=b?a:a+1|0;break a}if(c|(d|0)!=134217728){break a}c=b;b=b+(b&1)|0;a=c>>>0>b>>>0?a+1|0:a}Y=g+32|0;x(0,b|0);x(1,n&-2147483648|a);q=p,r=+z(),L[q>>3]=r}function Jc(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;m=a+3216|0;b=$a(b,c,d,e,m);a:{b:{if((b|0)==-1){break b}l=Y-16|0;Y=l;f=b+d|0;b=xa(d,f,l+12|0);c:{if(!b){d=0;break c}d=0;d:{c=G[l+12>>2];if((c|0)!=1){if((c|0)!=-2147483647){break d}o=1}c=a+3220|0;if(!(!b|(b|0)==(f|0))){E[c|0]=H[b|0]!=0;g=b+1|0}if(!g){break c}b=Qa(g,f,a+3221|0);if(!b){break c}b=Qa(b,f,a+3253|0);if(!b){break c}b=Qa(b,f,a+3285|0);if(!b){break c}n=Y-16|0;Y=n;b=Wa(b,f,a+12|0,32);e:{if(!b){break e}d=a;h=a+44|0;i=Y-16|0;Y=i;c=xa(b,f,i+12|0);f:{if(!c){a=0;break f}k=h+4|0;j=h+104|0;while(1){a=G[i+12>>2];G[i+12>>2]=a-1;if((c|0)==(f|0)){a=c;break f}if(!a){a=c;break f}b=k;a=j;g=G[h>>2];if((a|0)!=(g|0)){a=g+100|0;G[h>>2]=a;b=g}a=a-100|0;if((b|0)!=(a|0)){while(1){g=a;a=a-100|0;ma(g,a,100);if((a|0)!=(b|0)){continue}break}}a=0;c=Ma(c,f,b);if(!c){break f}c=Wa(c,f,b+68|0,32);if(!c){break f}c=xa(c,f,b- -64|0);if(c){continue}break}}Y=i+16|0;if(!a){break e}h=d+148|0;i=Y-16|0;Y=i;c=xa(a,f,i+12|0);g:{if(!c){a=0;break g}k=h+276|0;j=h+344|0;while(1){a=G[i+12>>2];G[i+12>>2]=a-1;if((c|0)==(f|0)){a=c;break g}if(!a){a=c;break g}b=k;a=j;g=G[h>>2];if((a|0)!=(g|0)){a=g+68|0;G[h>>2]=a;b=g}a=a-68|0;if((b|0)!=(a|0)){while(1){g=a;a=a-68|0;ma(g,a,68);if((a|0)!=(b|0)){continue}break}}a=0;c=Qa(c,f,b);if(!c){break g}c=Wa(c,f,b+36|0,32);if(!c){break g}c=xa(c,f,b+32|0);if(c){continue}break}}Y=i+16|0;if(!a){break e}j=d+492|0;h=Y-16|0;Y=h;c=xa(a,f,h+12|0);h:{if(!c){a=0;break h}g=j+2656|0;k=j+2724|0;while(1){a=G[h+12>>2];G[h+12>>2]=a-1;if((c|0)==(f|0)){a=c;break h}if(!a){a=c;break h}b=g;a=k;d=G[j>>2];if((a|0)!=(d|0)){a=d+68|0;G[j>>2]=a;b=d}a=a-68|0;if((b|0)!=(a|0)){while(1){d=a;a=a-68|0;ma(d,a,68);if((a|0)!=(b|0)){continue}break}}a=0;c=Qa(c,f,b);if(!c){break h}c=Wa(c,f,b+36|0,32);if(!c){break h}c=xa(c,f,b+32|0);if(c){continue}break}}Y=h+16|0;c=a;if(!a){break e}if(o){c=xa(a,f,n+12|0);if(!c){break e}}p=c}Y=n+16|0;d=p;break c}G[a+3216>>2]=9}Y=l+16|0;i:{if(!d){if(G[m>>2]){break b}a=10;break i}a=17;if((d|0)==(f|0)){break a}}G[m>>2]=a}e=-1}return e|0}function zb(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0;G[d+4>>2]=0;G[d+8>>2]=0;E[d|0]=0;G[d+12>>2]=0;G[d+16>>2]=0;c=c- -64|0;if(c>>>0>>0){E[d|0]=H[a|0];b=b-c|0;if((b|0)!=1){c=a+b|0;a=a+1|0;while(1){g=a;if(H[a|0]==8){h=a+1|0;b=h;while(1){a:{if((b|0)==(c|0)){a=c;break a}e=E[b|0];a=b+1|0;b=a;if((e|0)<0){continue}}break}b:{if((a|0)==(h|0)){f=0;break b}e=(g^-1)+a|0;i=e&3;h=0;f=0;b=a;if((b-g|0)-2>>>0>=3){j=e&-4;e=0;while(1){f=(H[b-2|0]&127|(f<<14|(H[b-1|0]&127)<<7))<<14|(H[b-3|0]&127)<<7;b=b-4|0;f=f|H[b|0]&127;e=e+4|0;if((j|0)!=(e|0)){continue}break}}if(!i){break b}while(1){b=b-1|0;f=H[b|0]&127|f<<7;h=h+1|0;if((i|0)!=(h|0)){continue}break}}G[d+4>>2]=f;j=1}c:{if((a|0)==(c|0)){break c}if(H[a|0]==18){i=a+1|0;b=i;while(1){d:{if((b|0)==(c|0)){e=c;break d}h=E[b|0];e=b+1|0;b=e;if((h|0)<0){continue}}break}e:{if((e|0)==(i|0)){f=0;break e}i=(a^-1)+e|0;k=i&3;h=0;f=0;b=e;if((b-a|0)-2>>>0>=3){i=i&-4;a=0;while(1){f=(H[b-2|0]&127|(f<<14|(H[b-1|0]&127)<<7))<<14|(H[b-3|0]&127)<<7;b=b-4|0;f=f|H[b|0]&127;a=a+4|0;if((i|0)!=(a|0)){continue}break}}if(k){while(1){b=b-1|0;f=H[b|0]&127|f<<7;h=h+1|0;if((k|0)!=(h|0)){continue}break}}if(c-e>>>0>>0){break c}}G[d+16>>2]=f;G[d+12>>2]=e;a=e+f|0}f:{if((a|0)==(c|0)|(a|0)!=(g|0)){break f}g:{switch(H[g|0]&7){case 0:while(1){h:{if((c|0)==(g|0)){b=c;break h}a=E[g|0];b=g+1|0;g=b;if((a|0)<0){continue}}break};while(1){if((b|0)==(c|0)){a=c;break f}e=E[b|0];a=b+1|0;b=a;if((e|0)<0){continue}break};break f;case 2:break g;default:break c}}while(1){i:{if((c|0)==(g|0)){a=c;break i}b=E[g|0];a=g+1|0;g=a;if((b|0)<0){continue}}break}b=a;while(1){j:{if((b|0)==(c|0)){h=c;break j}e=E[b|0];h=b+1|0;b=h;if((e|0)<0){continue}}break}if((a|0)==(h|0)){break f}e=h-a|0;i=e&3;f=0;g=0;b=h;if(b+(a^-1)>>>0>=3){e=e&-4;a=0;while(1){g=(H[b-2|0]&127|(g<<14|(H[b-1|0]&127)<<7))<<14|(H[b-3|0]&127)<<7;b=b-4|0;g=g|H[b|0]&127;a=a+4|0;if((e|0)!=(a|0)){continue}break}}if(i){while(1){b=b-1|0;g=H[b|0]&127|g<<7;f=f+1|0;if((i|0)!=(f|0)){continue}break}}if(c-h>>>0>>0){break c}a=g+h|0}if((a|0)!=(c|0)){continue}}break}}G[d+8>>2]=j}}function Ma(a,b,c){var d=0,e=0,f=0,g=0;a:{if(!a){break a}d=a+32|0;if(d>>>0>b>>>0){break a}f=H[a+4|0]|H[a+5|0]<<8|(H[a+6|0]<<16|H[a+7|0]<<24);g=H[a|0]|H[a+1|0]<<8|(H[a+2|0]<<16|H[a+3|0]<<24);E[c|0]=g;E[c+1|0]=g>>>8;E[c+2|0]=g>>>16;E[c+3|0]=g>>>24;E[c+4|0]=f;E[c+5|0]=f>>>8;E[c+6|0]=f>>>16;E[c+7|0]=f>>>24;f=H[a+28|0]|H[a+29|0]<<8|(H[a+30|0]<<16|H[a+31|0]<<24);g=H[a+24|0]|H[a+25|0]<<8|(H[a+26|0]<<16|H[a+27|0]<<24);E[c+24|0]=g;E[c+25|0]=g>>>8;E[c+26|0]=g>>>16;E[c+27|0]=g>>>24;E[c+28|0]=f;E[c+29|0]=f>>>8;E[c+30|0]=f>>>16;E[c+31|0]=f>>>24;f=H[a+20|0]|H[a+21|0]<<8|(H[a+22|0]<<16|H[a+23|0]<<24);g=H[a+16|0]|H[a+17|0]<<8|(H[a+18|0]<<16|H[a+19|0]<<24);E[c+16|0]=g;E[c+17|0]=g>>>8;E[c+18|0]=g>>>16;E[c+19|0]=g>>>24;E[c+20|0]=f;E[c+21|0]=f>>>8;E[c+22|0]=f>>>16;E[c+23|0]=f>>>24;f=H[a+12|0]|H[a+13|0]<<8|(H[a+14|0]<<16|H[a+15|0]<<24);g=H[a+8|0]|H[a+9|0]<<8|(H[a+10|0]<<16|H[a+11|0]<<24);E[c+8|0]=g;E[c+9|0]=g>>>8;E[c+10|0]=g>>>16;E[c+11|0]=g>>>24;E[c+12|0]=f;E[c+13|0]=f>>>8;E[c+14|0]=f>>>16;E[c+15|0]=f>>>24;a=a- -64|0;if(a>>>0>b>>>0){break a}e=H[d+4|0]|H[d+5|0]<<8|(H[d+6|0]<<16|H[d+7|0]<<24);b=H[d|0]|H[d+1|0]<<8|(H[d+2|0]<<16|H[d+3|0]<<24);E[c+32|0]=b;E[c+33|0]=b>>>8;E[c+34|0]=b>>>16;E[c+35|0]=b>>>24;E[c+36|0]=e;E[c+37|0]=e>>>8;E[c+38|0]=e>>>16;E[c+39|0]=e>>>24;e=H[d+28|0]|H[d+29|0]<<8|(H[d+30|0]<<16|H[d+31|0]<<24);b=H[d+24|0]|H[d+25|0]<<8|(H[d+26|0]<<16|H[d+27|0]<<24);E[c+56|0]=b;E[c+57|0]=b>>>8;E[c+58|0]=b>>>16;E[c+59|0]=b>>>24;E[c+60|0]=e;E[c+61|0]=e>>>8;E[c+62|0]=e>>>16;E[c+63|0]=e>>>24;e=H[d+20|0]|H[d+21|0]<<8|(H[d+22|0]<<16|H[d+23|0]<<24);b=H[d+16|0]|H[d+17|0]<<8|(H[d+18|0]<<16|H[d+19|0]<<24);E[c+48|0]=b;E[c+49|0]=b>>>8;E[c+50|0]=b>>>16;E[c+51|0]=b>>>24;E[c+52|0]=e;E[c+53|0]=e>>>8;E[c+54|0]=e>>>16;E[c+55|0]=e>>>24;e=H[d+12|0]|H[d+13|0]<<8|(H[d+14|0]<<16|H[d+15|0]<<24);b=H[d+8|0]|H[d+9|0]<<8|(H[d+10|0]<<16|H[d+11|0]<<24);E[c+40|0]=b;E[c+41|0]=b>>>8;E[c+42|0]=b>>>16;E[c+43|0]=b>>>24;E[c+44|0]=e;E[c+45|0]=e>>>8;E[c+46|0]=e>>>16;E[c+47|0]=e>>>24;e=a}return e}function Pa(a,b){var c=0,d=0;c=H[b+4|0]|H[b+5|0]<<8|(H[b+6|0]<<16|H[b+7|0]<<24);d=H[b|0]|H[b+1|0]<<8|(H[b+2|0]<<16|H[b+3|0]<<24);E[a|0]=d;E[a+1|0]=d>>>8;E[a+2|0]=d>>>16;E[a+3|0]=d>>>24;E[a+4|0]=c;E[a+5|0]=c>>>8;E[a+6|0]=c>>>16;E[a+7|0]=c>>>24;c=H[b+28|0]|H[b+29|0]<<8|(H[b+30|0]<<16|H[b+31|0]<<24);d=H[b+24|0]|H[b+25|0]<<8|(H[b+26|0]<<16|H[b+27|0]<<24);E[a+24|0]=d;E[a+25|0]=d>>>8;E[a+26|0]=d>>>16;E[a+27|0]=d>>>24;E[a+28|0]=c;E[a+29|0]=c>>>8;E[a+30|0]=c>>>16;E[a+31|0]=c>>>24;c=H[b+20|0]|H[b+21|0]<<8|(H[b+22|0]<<16|H[b+23|0]<<24);d=H[b+16|0]|H[b+17|0]<<8|(H[b+18|0]<<16|H[b+19|0]<<24);E[a+16|0]=d;E[a+17|0]=d>>>8;E[a+18|0]=d>>>16;E[a+19|0]=d>>>24;E[a+20|0]=c;E[a+21|0]=c>>>8;E[a+22|0]=c>>>16;E[a+23|0]=c>>>24;c=H[b+12|0]|H[b+13|0]<<8|(H[b+14|0]<<16|H[b+15|0]<<24);d=H[b+8|0]|H[b+9|0]<<8|(H[b+10|0]<<16|H[b+11|0]<<24);E[a+8|0]=d;E[a+9|0]=d>>>8;E[a+10|0]=d>>>16;E[a+11|0]=d>>>24;E[a+12|0]=c;E[a+13|0]=c>>>8;E[a+14|0]=c>>>16;E[a+15|0]=c>>>24;c=H[b+36|0]|H[b+37|0]<<8|(H[b+38|0]<<16|H[b+39|0]<<24);d=H[b+32|0]|H[b+33|0]<<8|(H[b+34|0]<<16|H[b+35|0]<<24);E[a+32|0]=d;E[a+33|0]=d>>>8;E[a+34|0]=d>>>16;E[a+35|0]=d>>>24;E[a+36|0]=c;E[a+37|0]=c>>>8;E[a+38|0]=c>>>16;E[a+39|0]=c>>>24;c=H[b+44|0]|H[b+45|0]<<8|(H[b+46|0]<<16|H[b+47|0]<<24);d=H[b+40|0]|H[b+41|0]<<8|(H[b+42|0]<<16|H[b+43|0]<<24);E[a+40|0]=d;E[a+41|0]=d>>>8;E[a+42|0]=d>>>16;E[a+43|0]=d>>>24;E[a+44|0]=c;E[a+45|0]=c>>>8;E[a+46|0]=c>>>16;E[a+47|0]=c>>>24;c=H[b+52|0]|H[b+53|0]<<8|(H[b+54|0]<<16|H[b+55|0]<<24);d=H[b+48|0]|H[b+49|0]<<8|(H[b+50|0]<<16|H[b+51|0]<<24);E[a+48|0]=d;E[a+49|0]=d>>>8;E[a+50|0]=d>>>16;E[a+51|0]=d>>>24;E[a+52|0]=c;E[a+53|0]=c>>>8;E[a+54|0]=c>>>16;E[a+55|0]=c>>>24;c=H[b+60|0]|H[b+61|0]<<8|(H[b+62|0]<<16|H[b+63|0]<<24);b=H[b+56|0]|H[b+57|0]<<8|(H[b+58|0]<<16|H[b+59|0]<<24);E[a+56|0]=b;E[a+57|0]=b>>>8;E[a+58|0]=b>>>16;E[a+59|0]=b>>>24;E[a+60|0]=c;E[a+61|0]=c>>>8;E[a+62|0]=c>>>16;E[a+63|0]=c>>>24;return a- -64|0}function oc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;if(c>>>0<43){G[a+3216>>2]=2;return-1}c=Y-96|0;Y=c;d=a+3245|0;e=H[d+4|0]|H[d+5|0]<<8|(H[d+6|0]<<16|H[d+7|0]<<24);G[c+24>>2]=H[d|0]|H[d+1|0]<<8|(H[d+2|0]<<16|H[d+3|0]<<24);G[c+28>>2]=e;d=a+3237|0;e=H[d+4|0]|H[d+5|0]<<8|(H[d+6|0]<<16|H[d+7|0]<<24);G[c+16>>2]=H[d|0]|H[d+1|0]<<8|(H[d+2|0]<<16|H[d+3|0]<<24);G[c+20>>2]=e;d=H[a+3225|0]|H[a+3226|0]<<8|(H[a+3227|0]<<16|H[a+3228|0]<<24);G[c>>2]=H[a+3221|0]|H[a+3222|0]<<8|(H[a+3223|0]<<16|H[a+3224|0]<<24);G[c+4>>2]=d;d=a+3229|0;e=H[d+4|0]|H[d+5|0]<<8|(H[d+6|0]<<16|H[d+7|0]<<24);G[c+8>>2]=H[d|0]|H[d+1|0]<<8|(H[d+2|0]<<16|H[d+3|0]<<24);G[c+12>>2]=e;d=a+3261|0;e=H[d+4|0]|H[d+5|0]<<8|(H[d+6|0]<<16|H[d+7|0]<<24);G[c+40>>2]=H[d|0]|H[d+1|0]<<8|(H[d+2|0]<<16|H[d+3|0]<<24);G[c+44>>2]=e;d=a+3269|0;e=H[d+4|0]|H[d+5|0]<<8|(H[d+6|0]<<16|H[d+7|0]<<24);G[c+48>>2]=H[d|0]|H[d+1|0]<<8|(H[d+2|0]<<16|H[d+3|0]<<24);G[c+52>>2]=e;d=a+3277|0;e=H[d+4|0]|H[d+5|0]<<8|(H[d+6|0]<<16|H[d+7|0]<<24);G[c+56>>2]=H[d|0]|H[d+1|0]<<8|(H[d+2|0]<<16|H[d+3|0]<<24);G[c+60>>2]=e;d=H[a+3257|0]|H[a+3258|0]<<8|(H[a+3259|0]<<16|H[a+3260|0]<<24);G[c+32>>2]=H[a+3253|0]|H[a+3254|0]<<8|(H[a+3255|0]<<16|H[a+3256|0]<<24);G[c+36>>2]=d;d=a+3293|0;e=H[d+4|0]|H[d+5|0]<<8|(H[d+6|0]<<16|H[d+7|0]<<24);G[c+72>>2]=H[d|0]|H[d+1|0]<<8|(H[d+2|0]<<16|H[d+3|0]<<24);G[c+76>>2]=e;d=a+3301|0;e=H[d+4|0]|H[d+5|0]<<8|(H[d+6|0]<<16|H[d+7|0]<<24);G[c+80>>2]=H[d|0]|H[d+1|0]<<8|(H[d+2|0]<<16|H[d+3|0]<<24);G[c+84>>2]=e;d=a+3309|0;e=H[d+4|0]|H[d+5|0]<<8|(H[d+6|0]<<16|H[d+7|0]<<24);G[c+88>>2]=H[d|0]|H[d+1|0]<<8|(H[d+2|0]<<16|H[d+3|0]<<24);G[c+92>>2]=e;d=H[a+3289|0]|H[a+3290|0]<<8|(H[a+3291|0]<<16|H[a+3292|0]<<24);G[c+64>>2]=H[a+3285|0]|H[a+3286|0]<<8|(H[a+3287|0]<<16|H[a+3288|0]<<24);G[c+68>>2]=d;Pb(c,96,b+11|0);Y=c+96|0;pa(b+11|0,32,b);return 43}function Kc(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;k=a+7516|0;b=$a(b,c,d,e,k);a:{b:{if((b|0)==-1){break b}f=a;h=Y-16|0;Y=h;g=b+d|0;a=xa(d,g,h+12|0);c:{if(!a){break c}d:{switch(G[h+12>>2]-1|0){case 0:G[f+7516>>2]=13;break c;default:G[f+7516>>2]=9;break c;case 1:case 2:case 3:break d}}a=ub(a,g,f);if(!a){break c}a=Ma(a,g,f+96|0);if(!a){break c}j=f+160|0;i=Y-16|0;Y=i;b=xa(a,g,i+12|0);e:{if(!b){a=0;break e}m=j+7132|0;n=j+7204|0;while(1){a=G[i+12>>2];G[i+12>>2]=a-1;if((b|0)==(g|0)){a=b;break e}if(!a){a=b;break e}c=m;a=n;d=G[j>>2];if((a|0)!=(d|0)){a=d+72|0;G[j>>2]=a;c=d}a=a-72|0;if((c|0)!=(a|0)){while(1){d=a;a=a-72|0;ma(d,a,72);if((a|0)!=(c|0)){continue}break}}a=0;b=xa(b,g,c);if(!b){break e}d=0;if(!(!b|(b|0)==(g|0))){E[c+4|0]=H[b|0]!=0;d=b+1|0}if(!d){break e}b=Ma(d,g,c+5|0);if(b){continue}break}}Y=i+16|0;if(!a){break c}b=G[h+12>>2];f:{if(b>>>0<=2){E[f+7364|0]=0;break f}g:{if((b|0)==3){a=xa(a,g,f+7368|0);if(!a){break c}b=f+7372|0;c=0;if(!(!a|(a|0)==(g|0))){E[b|0]=H[a|0]!=0;c=a+1|0}if(!c){break c}a=Ma(c,g,f+7373|0);if(!a){break c}a=xa(a,g,f+7440|0);if(!a){break c}d=f+7444|0;c=0;if(!(!a|(a|0)==(g|0))){E[d|0]=H[a|0]!=0;c=a+1|0}if(!c){break c}a=Ma(c,g,f+7445|0);if(!a){break c}if(H[b|0]){if(!H[f+7444|0]){break g}E[f+7364|0]=2;break f}E[f+7364|0]=0;break f}c=f+7364|0;b=0;if(!a|(a|0)==(g|0)){a=b}else{E[c|0]=H[a|0];a=a+1|0}if(!a){break c}if(!H[c|0]){break f}a=yb(a,g,f+7368|0);if(!a){break c}if(H[c|0]<2){break f}a=yb(a,g,f+7440|0);if(!a){break c}if(H[c|0]<3){break f}G[f+7516>>2]=10;break c}E[f+7364|0]=1}l=xa(a,g,f+7512|0)}Y=h+16|0;h:{if(!l){if(G[k>>2]){break b}a=10;break h}a=17;if((g|0)==(l|0)){break a}}G[k>>2]=a}e=-1}return e|0}function Ha(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;o=G[b>>2];d=G[a>>2];p=G[b+4>>2];e=G[a+4>>2];q=G[b+8>>2];f=G[a+8>>2];r=G[b+12>>2];g=G[a+12>>2];s=G[b+16>>2];h=G[a+16>>2];m=G[b+20>>2];i=G[a+20>>2];t=G[b+24>>2];j=G[a+24>>2];u=G[b+28>>2];k=G[a+28>>2];v=G[b+32>>2];l=G[a+32>>2];c=0-c|0;n=G[a+36>>2];G[a+36>>2]=c&(n^G[b+36>>2])^n;G[a+32>>2]=l^c&(l^v);G[a+28>>2]=k^c&(k^u);G[a+24>>2]=j^c&(j^t);G[a+20>>2]=i^c&(i^m);G[a+16>>2]=h^c&(h^s);G[a+12>>2]=g^c&(g^r);G[a+8>>2]=f^c&(f^q);G[a+4>>2]=e^c&(e^p);G[a>>2]=d^c&(d^o);d=G[a+44>>2];o=G[b+44>>2];e=G[a+48>>2];p=G[b+48>>2];f=G[a+52>>2];q=G[b+52>>2];g=G[a+56>>2];r=G[b+56>>2];h=G[a+60>>2];s=G[b+60>>2];m=a- -64|0;i=G[m>>2];t=G[b- -64>>2];j=G[a+68>>2];u=G[b+68>>2];k=G[a+72>>2];v=G[b+72>>2];l=G[a+40>>2];n=G[b+40>>2];w=G[a+76>>2];G[a+76>>2]=w^c&(G[b+76>>2]^w);G[a+72>>2]=k^c&(k^v);G[a+68>>2]=j^c&(j^u);G[m>>2]=i^c&(i^t);G[a+60>>2]=h^c&(h^s);G[a+56>>2]=g^c&(g^r);G[a+52>>2]=f^c&(f^q);G[a+48>>2]=e^c&(e^p);G[a+44>>2]=d^c&(d^o);G[a+40>>2]=l^c&(l^n);d=G[a+84>>2];o=G[b+84>>2];e=G[a+88>>2];p=G[b+88>>2];f=G[a+92>>2];q=G[b+92>>2];g=G[a+96>>2];r=G[b+96>>2];h=G[a+100>>2];s=G[b+100>>2];i=G[a+104>>2];m=G[b+104>>2];j=G[a+108>>2];t=G[b+108>>2];k=G[a+112>>2];u=G[b+112>>2];l=G[a+80>>2];v=G[b+80>>2];n=G[b+116>>2];b=G[a+116>>2];G[a+116>>2]=c&(n^b)^b;G[a+112>>2]=k^c&(k^u);G[a+108>>2]=j^c&(j^t);G[a+104>>2]=i^c&(i^m);G[a+100>>2]=h^c&(h^s);G[a+96>>2]=g^c&(g^r);G[a+92>>2]=f^c&(f^q);G[a+88>>2]=e^c&(e^p);G[a+84>>2]=d^c&(d^o);G[a+80>>2]=l^c&(l^v)}function qb(a,b){var c=0,d=0,e=0;c=Y-192|0;Y=c;e=c+144|0;ia(e,b);d=c+96|0;ia(d,e);ia(d,d);ka(d,b,d);ka(e,e,d);b=c+48|0;ia(b,e);ka(d,d,b);ia(b,d);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ka(d,b,d);ia(b,d);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ka(b,b,d);ia(c,b);ia(c,c);ia(c,c);ia(c,c);ia(c,c);ia(c,c);ia(c,c);ia(c,c);ia(c,c);ia(c,c);ia(c,c);ia(c,c);ia(c,c);ia(c,c);ia(c,c);ia(c,c);ia(c,c);ia(c,c);ia(c,c);ia(c,c);ka(b,c,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ka(d,b,d);ia(b,d);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ka(b,b,d);ia(c,b);b=1;while(1){ia(c,c);b=b+1|0;if((b|0)!=100){continue}break}b=c+48|0;ka(b,c,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);d=c+96|0;ka(d,b,d);ia(d,d);ia(d,d);ia(d,d);ia(d,d);ia(d,d);ka(a,d,c+144|0);Y=c+192|0}function mb(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;h=b+32|0;c=Y-384|0;Y=c;d=c- -64|0;G[d>>2]=327033209;G[d+4>>2]=1541459225;G[c+56>>2]=-79577749;G[c+60>>2]=528734635;G[c+48>>2]=725511199;G[c+52>>2]=-1694144372;l=c+40|0;d=l;G[d>>2]=-1377402159;G[d+4>>2]=1359893119;f=32;G[c+32>>2]=1595750129;G[c+36>>2]=-1521486534;G[c+24>>2]=-23791573;G[c+28>>2]=1013904242;G[c+16>>2]=-2067093701;G[c+20>>2]=-1150833019;G[c+8>>2]=-205731576;G[c+12>>2]=1779033703;G[c>>2]=0;G[c+4>>2]=0;G[c+72>>2]=0;if(a){k=c+76|0;while(1){d=G[c+72>>2];a:{if(!(d|f>>>0<128)){ya(c,a);d=G[c+4>>2];e=G[c>>2]+1024|0;d=e>>>0<1024?d+1|0:d;G[c>>2]=e;G[c+4>>2]=d;f=f-128|0;a=a+128|0;break a}i=128;e=128-d|0;e=e>>>0>f>>>0?f:e;if((d|0)!=128){j=e>>>0<=1?1:e;m=j&3;i=0;d=0;if(e>>>0>=4){n=j&-4;j=0;while(1){E[(G[c+72>>2]+d|0)+k|0]=H[a+d|0];g=d|1;E[(g+G[c+72>>2]|0)+k|0]=H[a+g|0];g=d|2;E[(g+G[c+72>>2]|0)+k|0]=H[a+g|0];g=d|3;E[(g+G[c+72>>2]|0)+k|0]=H[a+g|0];d=d+4|0;j=j+4|0;if((n|0)!=(j|0)){continue}break}}if(m){while(1){E[((G[c+72>>2]+d|0)+c|0)+76|0]=H[a+d|0];d=d+1|0;i=i+1|0;if((m|0)!=(i|0)){continue}break}}i=G[c+72>>2]}f=f-e|0;a=a+e|0;d=e+i|0;G[c+72>>2]=d;if((d|0)!=128){break a}ya(c,k);G[c+72>>2]=0;d=G[c+4>>2];e=G[c>>2]+1024|0;d=e>>>0<1024?d+1|0:d;G[c>>2]=e;G[c+4>>2]=d}if(f){continue}break}gb(c,h)}E[h|0]=H[h|0]&248;E[h+31|0]=H[h+31|0]&63|64;Sb(c,h);a=c+304|0;qb(a,c+80|0);d=c+256|0;ka(d,c,a);f=c+208|0;ka(f,l,a);Ja(b,f);Ja(c+352|0,d);E[b+31|0]=H[b+31|0]^H[c+352|0]<<7;Y=c+384|0}function Sd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=Y-240|0;Y=d;e=ra(c);a:{if((e|0)!=229){c=-1;if((e|0)==-1){G[a+300>>2]=7;break a}G[a+300>>2]=11;break a}Ra(b,c,d);b:{if(H[d|0]==2){c=d|5;b=H[d+1|0]|H[d+2|0]<<8|(H[d+3|0]<<16|H[d+4|0]<<24);b=b<<24|(b&65280)<<8|(b>>>8&65280|b>>>24);cb(a,c,b);cb(a+132|0,c,b);b=H[d+161|0]|H[d+162|0]<<8|(H[d+163|0]<<16|H[d+164|0]<<24);c=H[d+157|0]|H[d+158|0]<<8|(H[d+159|0]<<16|H[d+160|0]<<24);E[a+288|0]=c;E[a+289|0]=c>>>8;E[a+290|0]=c>>>16;E[a+291|0]=c>>>24;E[a+292|0]=b;E[a+293|0]=b>>>8;E[a+294|0]=b>>>16;E[a+295|0]=b>>>24;b=H[d+153|0]|H[d+154|0]<<8|(H[d+155|0]<<16|H[d+156|0]<<24);c=H[d+149|0]|H[d+150|0]<<8|(H[d+151|0]<<16|H[d+152|0]<<24);E[a+280|0]=c;E[a+281|0]=c>>>8;E[a+282|0]=c>>>16;E[a+283|0]=c>>>24;E[a+284|0]=b;E[a+285|0]=b>>>8;E[a+286|0]=b>>>16;E[a+287|0]=b>>>24;b=H[d+145|0]|H[d+146|0]<<8|(H[d+147|0]<<16|H[d+148|0]<<24);c=H[d+141|0]|H[d+142|0]<<8|(H[d+143|0]<<16|H[d+144|0]<<24);E[a+272|0]=c;E[a+273|0]=c>>>8;E[a+274|0]=c>>>16;E[a+275|0]=c>>>24;E[a+276|0]=b;E[a+277|0]=b>>>8;E[a+278|0]=b>>>16;E[a+279|0]=b>>>24;b=H[d+137|0]|H[d+138|0]<<8|(H[d+139|0]<<16|H[d+140|0]<<24);c=H[d+133|0]|H[d+134|0]<<8|(H[d+135|0]<<16|H[d+136|0]<<24);E[a+264|0]=c;E[a+265|0]=c>>>8;E[a+266|0]=c>>>16;E[a+267|0]=c>>>24;E[a+268|0]=b;E[a+269|0]=b>>>8;E[a+270|0]=b>>>16;E[a+271|0]=b>>>24;if(!jb(a+264|0,d,165,d+165|0)){G[a+300>>2]=14;c=-1;break b}G[a+296>>2]=1;c=0;break b}G[a+300>>2]=11;c=-1}la(d,229)}Y=d+240|0;return c|0}function Rb(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;d=Y-128|0;Y=d;G[a+4>>2]=0;G[a+8>>2]=0;G[a>>2]=1;G[a+12>>2]=0;G[a+16>>2]=0;G[a+20>>2]=0;G[a+24>>2]=0;G[a+28>>2]=0;G[a+32>>2]=0;G[a+36>>2]=0;G[a+40>>2]=1;ta(a+44|0,0,76);e=c-((c>>31&c)<<1)|0;g=(e^1)&255;f=M(b,960);Ha(a,f+6640|0,0-!g>>>31|0);b=(e^2)&255;Ha(a,f+6760|0,0-!b>>>31|0);b=(e^3)&255;Ha(a,f+6880|0,0-!b>>>31|0);b=(e^4)&255;Ha(a,f+7e3|0,0-!b>>>31|0);b=(e^5)&255;Ha(a,f+7120|0,0-!b>>>31|0);b=(e^6)&255;Ha(a,f+7240|0,0-!b>>>31|0);b=(e^7)&255;Ha(a,f+7360|0,0-!b>>>31|0);b=(e^8)&255;Ha(a,f+7480|0,0-!b>>>31|0);h=G[a+48>>2];i=G[a+52>>2];j=G[a+56>>2];k=G[a+60>>2];b=a- -64|0;l=G[b>>2];e=G[b+4>>2];f=G[a+40>>2];g=G[a+44>>2];b=G[a+76>>2];G[d+40>>2]=G[a+72>>2];G[d+44>>2]=b;G[d+32>>2]=l;G[d+36>>2]=e;G[d+24>>2]=j;G[d+28>>2]=k;G[d+16>>2]=h;G[d+20>>2]=i;G[d+8>>2]=f;G[d+12>>2]=g;h=G[a>>2];i=G[a+4>>2];j=G[a+8>>2];k=G[a+12>>2];l=G[a+16>>2];e=G[a+20>>2];f=G[a+24>>2];g=G[a+28>>2];b=G[a+36>>2];G[d+80>>2]=G[a+32>>2];G[d+84>>2]=b;G[d+72>>2]=f;G[d+76>>2]=g;b=d- -64|0;G[b>>2]=l;G[b+4>>2]=e;G[d+56>>2]=j;G[d+60>>2]=k;G[d+48>>2]=h;G[d+52>>2]=i;h=G[a+84>>2];i=G[a+88>>2];j=G[a+92>>2];k=G[a+96>>2];l=G[a+100>>2];e=G[a+104>>2];f=G[a+108>>2];g=G[a+112>>2];b=G[a+80>>2];G[d+124>>2]=0-G[a+116>>2];G[d+120>>2]=0-g;G[d+116>>2]=0-f;G[d+112>>2]=0-e;G[d+108>>2]=0-l;G[d+104>>2]=0-k;G[d+100>>2]=0-j;G[d+96>>2]=0-i;G[d+92>>2]=0-h;G[d+88>>2]=0-b;Ha(a,d+8|0,(c&128)>>>7|0);Y=d+128|0}function Id(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;f=Y-144|0;Y=f;a:{if(c>>>0<220){G[a+300>>2]=2;a=-1;break a}b:{c:{if((d-G[a+260>>2]|0)>=0){c=a+132|0;fb(c,d);ma(f+12|0,c,132);break c}if((d-G[a+128>>2]|0)<0){break b}c=f+12|0;ma(c,a,132);fb(c,d)}c=b+220|0;E[c-161|0]=d;E[c-162|0]=d>>>8;E[c-163|0]=d>>>16;E[c-164|0]=d>>>24;g=c-165|0;E[g|0]=1;ma(c-160|0,f+12|0,128);d=H[a+292|0]|H[a+293|0]<<8|(H[a+294|0]<<16|H[a+295|0]<<24);c=c-32|0;e=H[a+288|0]|H[a+289|0]<<8|(H[a+290|0]<<16|H[a+291|0]<<24);E[c+24|0]=e;E[c+25|0]=e>>>8;E[c+26|0]=e>>>16;E[c+27|0]=e>>>24;E[c+28|0]=d;E[c+29|0]=d>>>8;E[c+30|0]=d>>>16;E[c+31|0]=d>>>24;d=H[a+284|0]|H[a+285|0]<<8|(H[a+286|0]<<16|H[a+287|0]<<24);e=H[a+280|0]|H[a+281|0]<<8|(H[a+282|0]<<16|H[a+283|0]<<24);E[c+16|0]=e;E[c+17|0]=e>>>8;E[c+18|0]=e>>>16;E[c+19|0]=e>>>24;E[c+20|0]=d;E[c+21|0]=d>>>8;E[c+22|0]=d>>>16;E[c+23|0]=d>>>24;d=H[a+276|0]|H[a+277|0]<<8|(H[a+278|0]<<16|H[a+279|0]<<24);e=H[a+272|0]|H[a+273|0]<<8|(H[a+274|0]<<16|H[a+275|0]<<24);E[c+8|0]=e;E[c+9|0]=e>>>8;E[c+10|0]=e>>>16;E[c+11|0]=e>>>24;E[c+12|0]=d;E[c+13|0]=d>>>8;E[c+14|0]=d>>>16;E[c+15|0]=d>>>24;d=H[a+268|0]|H[a+269|0]<<8|(H[a+270|0]<<16|H[a+271|0]<<24);a=H[a+264|0]|H[a+265|0]<<8|(H[a+266|0]<<16|H[a+267|0]<<24);E[c|0]=a;E[c+1|0]=a>>>8;E[c+2|0]=a>>>16;E[c+3|0]=a>>>24;E[c+4|0]=d;E[c+5|0]=d>>>8;E[c+6|0]=d>>>16;E[c+7|0]=d>>>24;a=Fa(g,165,b);break a}G[a+300>>2]=12;a=-1}Y=f+144|0;return a|0}function Rd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=Y-176|0;Y=d;e=ra(c);a:{if((e|0)!=165){c=-1;if((e|0)==-1){G[a+300>>2]=7;break a}G[a+300>>2]=11;break a}Ra(b,c,d);b:{if(H[d|0]==1){c=d|5;b=H[d+1|0]|H[d+2|0]<<8|(H[d+3|0]<<16|H[d+4|0]<<24);b=b<<24|(b&65280)<<8|(b>>>8&65280|b>>>24);cb(a,c,b);cb(a+132|0,c,b);b=H[d+161|0]|H[d+162|0]<<8|(H[d+163|0]<<16|H[d+164|0]<<24);c=H[d+157|0]|H[d+158|0]<<8|(H[d+159|0]<<16|H[d+160|0]<<24);E[a+288|0]=c;E[a+289|0]=c>>>8;E[a+290|0]=c>>>16;E[a+291|0]=c>>>24;E[a+292|0]=b;E[a+293|0]=b>>>8;E[a+294|0]=b>>>16;E[a+295|0]=b>>>24;b=H[d+153|0]|H[d+154|0]<<8|(H[d+155|0]<<16|H[d+156|0]<<24);c=H[d+149|0]|H[d+150|0]<<8|(H[d+151|0]<<16|H[d+152|0]<<24);E[a+280|0]=c;E[a+281|0]=c>>>8;E[a+282|0]=c>>>16;E[a+283|0]=c>>>24;E[a+284|0]=b;E[a+285|0]=b>>>8;E[a+286|0]=b>>>16;E[a+287|0]=b>>>24;b=H[d+145|0]|H[d+146|0]<<8|(H[d+147|0]<<16|H[d+148|0]<<24);c=H[d+141|0]|H[d+142|0]<<8|(H[d+143|0]<<16|H[d+144|0]<<24);E[a+272|0]=c;E[a+273|0]=c>>>8;E[a+274|0]=c>>>16;E[a+275|0]=c>>>24;E[a+276|0]=b;E[a+277|0]=b>>>8;E[a+278|0]=b>>>16;E[a+279|0]=b>>>24;b=H[d+137|0]|H[d+138|0]<<8|(H[d+139|0]<<16|H[d+140|0]<<24);c=H[d+133|0]|H[d+134|0]<<8|(H[d+135|0]<<16|H[d+136|0]<<24);E[a+264|0]=c;E[a+265|0]=c>>>8;E[a+266|0]=c>>>16;E[a+267|0]=c>>>24;E[a+268|0]=b;E[a+269|0]=b>>>8;E[a+270|0]=b>>>16;E[a+271|0]=b>>>24;c=0;break b}G[a+300>>2]=11;c=-1}la(d,165)}Y=d+176|0;return c|0}function Ea(a,b){var c=0,d=0,e=0;c=G[a+64>>2];d=c+a|0;E[d|0]=128;a:{if(c>>>0<=55){if((c|0)==55){break a}c=54-c|0;ta(d+1|0,0,(c>>>0<=54?c:0)+1|0);break a}d=c+1|0;if(d>>>0<=63){ta(a+d|0,0,63-c|0)}ib(a,a);G[a+48>>2]=0;G[a+52>>2]=0;G[a+40>>2]=0;G[a+44>>2]=0;G[a+32>>2]=0;G[a+36>>2]=0;G[a+24>>2]=0;G[a+28>>2]=0;G[a+16>>2]=0;G[a+20>>2]=0;G[a+8>>2]=0;G[a+12>>2]=0;G[a>>2]=0;G[a+4>>2]=0}c=G[a+76>>2];e=G[a+64>>2]<<3;d=e+G[a+72>>2]|0;c=d>>>0>>0?c+1|0:c;G[a+72>>2]=d;G[a+76>>2]=c;E[a+63|0]=d;E[a+62|0]=(c&255)<<24|d>>>8;E[a+61|0]=(c&65535)<<16|d>>>16;E[a+60|0]=(c&16777215)<<8|d>>>24;E[a+59|0]=c;E[a+58|0]=c>>>8;E[a+57|0]=c>>>16;E[a+56|0]=c>>>24;ib(a,a);E[b|0]=H[a+83|0];E[b+4|0]=H[a+87|0];E[b+8|0]=H[a+91|0];E[b+12|0]=H[a+95|0];E[b+16|0]=H[a+99|0];E[b+20|0]=H[a+103|0];E[b+24|0]=H[a+107|0];E[b+28|0]=H[a+111|0];E[b+1|0]=I[a+82>>1];E[b+5|0]=I[a+86>>1];E[b+9|0]=I[a+90>>1];E[b+13|0]=I[a+94>>1];E[b+17|0]=I[a+98>>1];E[b+21|0]=I[a+102>>1];E[b+25|0]=I[a+106>>1];E[b+29|0]=I[a+110>>1];E[b+2|0]=G[a+80>>2]>>>8;E[b+6|0]=G[a+84>>2]>>>8;E[b+10|0]=G[a+88>>2]>>>8;E[b+14|0]=G[a+92>>2]>>>8;E[b+18|0]=G[a+96>>2]>>>8;E[b+22|0]=G[a+100>>2]>>>8;E[b+26|0]=G[a+104>>2]>>>8;E[b+30|0]=G[a+108>>2]>>>8;E[b+3|0]=G[a+80>>2];E[b+7|0]=G[a+84>>2];E[b+11|0]=G[a+88>>2];E[b+15|0]=G[a+92>>2];E[b+19|0]=G[a+96>>2];E[b+23|0]=G[a+100>>2];E[b+27|0]=G[a+104>>2];E[b+31|0]=G[a+108>>2]}function td(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;if(c>>>0<306){G[a+228>>2]=2;return-1}f=b+306|0;g=f-229|0;E[g|0]=2;c=f-228|0;d=G[a+128>>2];d=d<<24|(d&65280)<<8|(d>>>8&65280|d>>>24);E[c|0]=d;E[c+1|0]=d>>>8;E[c+2|0]=d>>>16;E[c+3|0]=d>>>24;ma(f-224|0,a,128);d=H[a+160|0]|H[a+161|0]<<8|(H[a+162|0]<<16|H[a+163|0]<<24);c=f-96|0;e=H[a+156|0]|H[a+157|0]<<8|(H[a+158|0]<<16|H[a+159|0]<<24);E[c+24|0]=e;E[c+25|0]=e>>>8;E[c+26|0]=e>>>16;E[c+27|0]=e>>>24;E[c+28|0]=d;E[c+29|0]=d>>>8;E[c+30|0]=d>>>16;E[c+31|0]=d>>>24;d=H[a+152|0]|H[a+153|0]<<8|(H[a+154|0]<<16|H[a+155|0]<<24);e=H[a+148|0]|H[a+149|0]<<8|(H[a+150|0]<<16|H[a+151|0]<<24);E[c+16|0]=e;E[c+17|0]=e>>>8;E[c+18|0]=e>>>16;E[c+19|0]=e>>>24;E[c+20|0]=d;E[c+21|0]=d>>>8;E[c+22|0]=d>>>16;E[c+23|0]=d>>>24;d=H[a+144|0]|H[a+145|0]<<8|(H[a+146|0]<<16|H[a+147|0]<<24);e=H[a+140|0]|H[a+141|0]<<8|(H[a+142|0]<<16|H[a+143|0]<<24);E[c+8|0]=e;E[c+9|0]=e>>>8;E[c+10|0]=e>>>16;E[c+11|0]=e>>>24;E[c+12|0]=d;E[c+13|0]=d>>>8;E[c+14|0]=d>>>16;E[c+15|0]=d>>>24;d=H[a+136|0]|H[a+137|0]<<8|(H[a+138|0]<<16|H[a+139|0]<<24);e=H[a+132|0]|H[a+133|0]<<8|(H[a+134|0]<<16|H[a+135|0]<<24);E[c|0]=e;E[c+1|0]=e>>>8;E[c+2|0]=e>>>16;E[c+3|0]=e>>>24;E[c+4|0]=d;E[c+5|0]=d>>>8;E[c+6|0]=d>>>16;E[c+7|0]=d>>>24;eb(a+132|0,g,165,f+-64|0);return Fa(g,229,b)|0}function Aa(a){var b=0,c=0,d=0,e=0;b=M(H[a+12|0],6);c=M(H[a+8|0],6);d=M(H[a+4|0],6);e=M(H[a|0],6);E[a+12|0]=H[b+3653|0]^(H[c+3650|0]^(H[d+3652|0]^H[e+3651|0]));E[a+8|0]=H[b+3651|0]^(H[c+3653|0]^(H[d+3650|0]^H[e+3652|0]));E[a+4|0]=H[b+3652|0]^(H[c+3651|0]^(H[d+3653|0]^H[e+3650|0]));E[a|0]=H[b+3650|0]^(H[c+3652|0]^(H[d+3651|0]^H[e+3653|0]));b=M(H[a+13|0],6);c=M(H[a+9|0],6);d=M(H[a+5|0],6);e=M(H[a+1|0],6);E[a+1|0]=H[b+3650|0]^(H[c+3652|0]^(H[d+3651|0]^H[e+3653|0]));E[a+5|0]=H[b+3652|0]^(H[c+3651|0]^(H[d+3653|0]^H[e+3650|0]));E[a+9|0]=H[b+3651|0]^(H[c+3653|0]^(H[d+3650|0]^H[e+3652|0]));E[a+13|0]=H[b+3653|0]^(H[c+3650|0]^(H[d+3652|0]^H[e+3651|0]));b=M(H[a+14|0],6);c=M(H[a+10|0],6);d=M(H[a+6|0],6);e=M(H[a+2|0],6);E[a+2|0]=H[b+3650|0]^(H[c+3652|0]^(H[d+3651|0]^H[e+3653|0]));E[a+14|0]=H[b+3653|0]^(H[c+3650|0]^(H[d+3652|0]^H[e+3651|0]));E[a+10|0]=H[b+3651|0]^(H[c+3653|0]^(H[d+3650|0]^H[e+3652|0]));E[a+6|0]=H[b+3652|0]^(H[c+3651|0]^(H[d+3653|0]^H[e+3650|0]));b=M(H[a+15|0],6);c=M(H[a+11|0],6);d=M(H[a+7|0],6);e=M(H[a+3|0],6);E[a+15|0]=H[b+3653|0]^(H[c+3650|0]^(H[d+3652|0]^H[e+3651|0]));E[a+11|0]=H[b+3651|0]^(H[c+3653|0]^(H[d+3650|0]^H[e+3652|0]));E[a+7|0]=H[b+3652|0]^(H[c+3651|0]^(H[d+3653|0]^H[e+3650|0]));E[a+3|0]=H[b+3650|0]^(H[c+3652|0]^(H[d+3651|0]^H[e+3653|0]))}function Mb(a,b){var c=0,d=0;c=H[a|0]|H[a+1|0]<<8|(H[a+2|0]<<16|H[a+3|0]<<24);G[b>>2]=c<<24|(c&65280)<<8|(c>>>8&65280|c>>>24);c=H[a+4|0]|H[a+5|0]<<8|(H[a+6|0]<<16|H[a+7|0]<<24);G[b+4>>2]=c<<24|(c&65280)<<8|(c>>>8&65280|c>>>24);c=H[a+8|0]|H[a+9|0]<<8|(H[a+10|0]<<16|H[a+11|0]<<24);G[b+8>>2]=c<<24|(c&65280)<<8|(c>>>8&65280|c>>>24);c=H[a+12|0]|H[a+13|0]<<8|(H[a+14|0]<<16|H[a+15|0]<<24);G[b+12>>2]=c<<24|(c&65280)<<8|(c>>>8&65280|c>>>24);c=H[a+16|0]|H[a+17|0]<<8|(H[a+18|0]<<16|H[a+19|0]<<24);G[b+16>>2]=c<<24|(c&65280)<<8|(c>>>8&65280|c>>>24);c=H[a+20|0]|H[a+21|0]<<8|(H[a+22|0]<<16|H[a+23|0]<<24);G[b+20>>2]=c<<24|(c&65280)<<8|(c>>>8&65280|c>>>24);c=H[a+24|0]|H[a+25|0]<<8|(H[a+26|0]<<16|H[a+27|0]<<24);G[b+24>>2]=c<<24|(c&65280)<<8|(c>>>8&65280|c>>>24);a=H[a+28|0]|H[a+29|0]<<8|(H[a+30|0]<<16|H[a+31|0]<<24);G[b+28>>2]=a<<24|(a&65280)<<8|(a>>>8&65280|a>>>24);c=G[b+28>>2];a=8;while(1){d=a&7;a:{if(!d){d=G[(a-1>>>3<<2)+3328>>2];c=ye(c,8);c=d^(H[(c>>>8&255)+3072|0]<<8|H[(c&255)+3072|0]|H[(c>>>16&255)+3072|0]<<16|H[(c>>>24|0)+3072|0]<<24);break a}if((d|0)!=4){break a}c=H[(c&255)+3072|0]|H[(c>>>8&255)+3072|0]<<8|H[(c>>>16&255)+3072|0]<<16|H[(c>>>24|0)+3072|0]<<24}c=G[(a-8<<2)+b>>2]^c;G[(a<<2)+b>>2]=c;a=a+1|0;if((a|0)!=60){continue}break}}function Ka(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;d=G[b+44>>2];e=G[b+48>>2];f=G[b+52>>2];g=G[b+56>>2];h=G[b+60>>2];c=b- -64|0;i=G[c>>2];j=G[b+68>>2];k=G[b+72>>2];l=G[b+76>>2];m=G[b+4>>2];n=G[b+8>>2];o=G[b+12>>2];p=G[b+16>>2];q=G[b+20>>2];r=G[b+24>>2];s=G[b+28>>2];t=G[b+32>>2];u=G[b+36>>2];G[a>>2]=G[b>>2]+G[b+40>>2];G[a+36>>2]=l+u;G[a+32>>2]=k+t;G[a+28>>2]=j+s;G[a+24>>2]=i+r;G[a+20>>2]=h+q;G[a+16>>2]=g+p;G[a+12>>2]=f+o;G[a+8>>2]=e+n;G[a+4>>2]=d+m;d=G[b+44>>2];e=G[b+48>>2];f=G[b+52>>2];g=G[b+56>>2];h=G[b+60>>2];c=G[c>>2];i=G[b+68>>2];j=G[b+72>>2];k=G[b>>2];l=G[b+40>>2];m=G[b+4>>2];n=G[b+8>>2];o=G[b+12>>2];p=G[b+16>>2];q=G[b+20>>2];r=G[b+24>>2];s=G[b+28>>2];t=G[b+32>>2];G[a+76>>2]=G[b+76>>2]-G[b+36>>2];G[a+72>>2]=j-t;G[a+68>>2]=i-s;G[a- -64>>2]=c-r;G[a+60>>2]=h-q;G[a+56>>2]=g-p;G[a+52>>2]=f-o;G[a+48>>2]=e-n;G[a+44>>2]=d-m;G[a+40>>2]=l-k;d=G[b+88>>2];e=G[b+92>>2];f=G[b+96>>2];g=G[b+100>>2];h=G[b+104>>2];c=G[b+108>>2];i=G[b+80>>2];j=G[b+84>>2];k=G[b+116>>2];G[a+112>>2]=G[b+112>>2];G[a+116>>2]=k;G[a+104>>2]=h;G[a+108>>2]=c;G[a+96>>2]=f;G[a+100>>2]=g;G[a+88>>2]=d;G[a+92>>2]=e;G[a+80>>2]=i;G[a+84>>2]=j;ka(a+120|0,b+120|0,2032)}function fb(a,b){var c=0,d=0;a:{b:{c:{d:{d=G[a+128>>2];c=(b>>>24)-(d>>>24)&255;switch(c|0){case 1:break b;case 0:break d;default:break c}}c=256;if(b>>>0>=d>>>0){break a}}while(1){na(a,32,37364,1,a);c=c-1|0;if(c>>>0>1){continue}break}}na(a,32,37367,1,a+96|0);na(a,32,37366,1,a- -64|0);na(a,32,37365,1,a+32|0);na(a,32,37364,1,a);d=b&-16777216;G[a+128>>2]=d}e:{f:{g:{h:{c=(b>>>16)-(d>>>16)&255;switch(c|0){case 1:break f;case 0:break h;default:break g}}c=256;if(b>>>0>=d>>>0){break e}}d=a+32|0;while(1){na(d,32,37365,1,d);c=c-1|0;if(c>>>0>1){continue}break}}c=a+32|0;na(c,32,37367,1,a+96|0);na(c,32,37366,1,a- -64|0);na(c,32,37365,1,c);d=b&-65536;G[a+128>>2]=d}i:{j:{k:{l:{c=(b>>>8)-(d>>>8)&255;switch(c|0){case 1:break j;case 0:break l;default:break k}}c=256;if(b>>>0>=d>>>0){break i}}d=a- -64|0;while(1){na(d,32,37366,1,d);c=c-1|0;if(c>>>0>1){continue}break}}c=a- -64|0;na(c,32,37367,1,a+96|0);na(c,32,37366,1,c);d=b&-256;G[a+128>>2]=d}m:{n:{o:{p:{c=b-d&255;switch(c|0){case 1:break n;case 0:break p;default:break o}}c=256;if(b>>>0>=d>>>0){break m}}d=a+96|0;while(1){na(d,32,37367,1,d);c=c-1|0;if(c>>>0>1){continue}break}}c=a+96|0;na(c,32,37367,1,c);G[a+128>>2]=b}}function Pd(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=a+264|0;g=a+132|0;if(Ga(301)>>>0>e>>>0){G[a+300>>2]=2;return-1}e=lb(g,lb(a,oa(bb(d,301),2)));h=H[f+4|0]|H[f+5|0]<<8|(H[f+6|0]<<16|H[f+7|0]<<24);g=H[f|0]|H[f+1|0]<<8|(H[f+2|0]<<16|H[f+3|0]<<24);E[e|0]=g;E[e+1|0]=g>>>8;E[e+2|0]=g>>>16;E[e+3|0]=g>>>24;E[e+4|0]=h;E[e+5|0]=h>>>8;E[e+6|0]=h>>>16;E[e+7|0]=h>>>24;h=H[f+28|0]|H[f+29|0]<<8|(H[f+30|0]<<16|H[f+31|0]<<24);g=H[f+24|0]|H[f+25|0]<<8|(H[f+26|0]<<16|H[f+27|0]<<24);E[e+24|0]=g;E[e+25|0]=g>>>8;E[e+26|0]=g>>>16;E[e+27|0]=g>>>24;E[e+28|0]=h;E[e+29|0]=h>>>8;E[e+30|0]=h>>>16;E[e+31|0]=h>>>24;h=H[f+20|0]|H[f+21|0]<<8|(H[f+22|0]<<16|H[f+23|0]<<24);g=H[f+16|0]|H[f+17|0]<<8|(H[f+18|0]<<16|H[f+19|0]<<24);E[e+16|0]=g;E[e+17|0]=g>>>8;E[e+18|0]=g>>>16;E[e+19|0]=g>>>24;E[e+20|0]=h;E[e+21|0]=h>>>8;E[e+22|0]=h>>>16;E[e+23|0]=h>>>24;g=H[f+12|0]|H[f+13|0]<<8|(H[f+14|0]<<16|H[f+15|0]<<24);f=H[f+8|0]|H[f+9|0]<<8|(H[f+10|0]<<16|H[f+11|0]<<24);E[e+8|0]=f;E[e+9|0]=f>>>8;E[e+10|0]=f>>>16;E[e+11|0]=f>>>24;E[e+12|0]=g;E[e+13|0]=g>>>8;E[e+14|0]=g>>>16;E[e+15|0]=g>>>24;E[e+32|0]=G[a+296>>2]!=0;return ab(b,c,d,301)|0}function ma(a,b,c){var d=0,e=0,f=0;if(c>>>0>=512){X(a|0,b|0,c|0);return a}e=a+c|0;a:{if(!((a^b)&3)){b:{if(!(a&3)){c=a;break b}if(!c){c=a;break b}c=a;while(1){E[c|0]=H[b|0];b=b+1|0;c=c+1|0;if(!(c&3)){break b}if(c>>>0>>0){continue}break}}d=e&-4;c:{if(d>>>0<64){break c}f=d+-64|0;if(f>>>0>>0){break c}while(1){G[c>>2]=G[b>>2];G[c+4>>2]=G[b+4>>2];G[c+8>>2]=G[b+8>>2];G[c+12>>2]=G[b+12>>2];G[c+16>>2]=G[b+16>>2];G[c+20>>2]=G[b+20>>2];G[c+24>>2]=G[b+24>>2];G[c+28>>2]=G[b+28>>2];G[c+32>>2]=G[b+32>>2];G[c+36>>2]=G[b+36>>2];G[c+40>>2]=G[b+40>>2];G[c+44>>2]=G[b+44>>2];G[c+48>>2]=G[b+48>>2];G[c+52>>2]=G[b+52>>2];G[c+56>>2]=G[b+56>>2];G[c+60>>2]=G[b+60>>2];b=b- -64|0;c=c- -64|0;if(f>>>0>=c>>>0){continue}break}}if(c>>>0>=d>>>0){break a}while(1){G[c>>2]=G[b>>2];b=b+4|0;c=c+4|0;if(d>>>0>c>>>0){continue}break}break a}if(e>>>0<4){c=a;break a}d=e-4|0;if(d>>>0>>0){c=a;break a}c=a;while(1){E[c|0]=H[b|0];E[c+1|0]=H[b+1|0];E[c+2|0]=H[b+2|0];E[c+3|0]=H[b+3|0];b=b+4|0;c=c+4|0;if(d>>>0>=c>>>0){continue}break}}if(c>>>0>>0){while(1){E[c|0]=H[b|0];b=b+1|0;c=c+1|0;if((e|0)!=(c|0)){continue}break}}return a}function wd(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;j=Y-16|0;Y=j;g=G[9340];g=_[G[G[g>>2]+4>>2]](g,c)|0;f=G[9340];f=_[G[G[f>>2]>>2]](f)|0;k=Ab(G[a+128>>2],g,f);f=k+2|0;g=(f>>>0)/3|0;a:{if(((f-M(g,3)|0)+(g<<2)|0)-2>>>0>e>>>0){G[a+228>>2]=2;e=-1;break a}e=G[9340];g=_[G[G[e>>2]+4>>2]](e,c)|0;e=G[9340];l=_[G[G[e>>2]>>2]](e)|0;e=G[a+128>>2];h=k+2|0;f=(h>>>0)/3|0;h=((((h-M(f,3)|0)+(f<<2)|0)-2|0)+d|0)-k|0;E[h+1|0]=8;E[h|0]=3;f=h+2|0;if(e>>>0>=128){while(1){E[f|0]=e|128;f=f+1|0;i=e>>>0>16383;e=e>>>7|0;if(i){continue}break}}E[f+1|0]=18;E[f|0]=e;f=f+2|0;b:{if(g>>>0<128){e=g;break b}e=g;while(1){E[f|0]=e|128;f=f+1|0;i=e>>>0>16383;e=e>>>7|0;if(i){continue}break}}E[f|0]=e;f=f+1|0;G[j+12>>2]=f;i=G[9340];m=g;g=((f+g|0)-h|0)+l|0;e=-1;if((_[G[G[i>>2]+8>>2]](i,a,128,b,c,G[j+12>>2],m,h,g)|0)==-1){break a}c=G[a+128>>2]+1|0;G[a+128>>2]=c;b=0;c:{if(!(c&16777215)){break c}b=1;if(!(c&65535)){break c}b=c&255?3:2}c=b;e=(c<<5)+a|0;b=3;while(1){na(e,32,b+37364|0,1,(b<<5)+a|0);f=b>>>0>c>>>0;b=b-1|0;if(f){continue}break}eb(a+132|0,h,g,g+h|0);e=Fa(h,k,d)}Y=j+16|0;return e|0}function Cc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;g=Y-16|0;Y=g;i=c;e=a+164|0;h=G[a+160>>2];if((e|0)==(h|0)){c=17}else{c=1;d=e;while(1){if(!H[d+4|0]){f=f+55|0;c=0}d=d+72|0;if((h|0)!=(d|0)){continue}break}c=(c?17:16)+f|0}a:{if(i>>>0>>0){G[a+7516>>2]=2;a=-1;break a}f=123;E[b|0]=123;d=H[1495]|H[1496]<<8|(H[1497]<<16|H[1498]<<24);c=H[1491]|H[1492]<<8|(H[1493]<<16|H[1494]<<24);E[b+6|0]=c;E[b+7|0]=c>>>8;E[b+8|0]=c>>>16;E[b+9|0]=c>>>24;E[b+10|0]=d;E[b+11|0]=d>>>8;E[b+12|0]=d>>>16;E[b+13|0]=d>>>24;c=H[1490]|H[1491]<<8|(H[1492]<<16|H[1493]<<24);d=H[1486]|H[1487]<<8|(H[1488]<<16|H[1489]<<24);E[b+1|0]=d;E[b+2|0]=d>>>8;E[b+3|0]=d>>>16;E[b+4|0]=d>>>24;E[b+5|0]=c;E[b+6|0]=c>>>8;E[b+7|0]=c>>>16;E[b+8|0]=c>>>24;d=b+14|0;c=G[a+160>>2];b:{if((c|0)!=(e|0)){while(1){if(!H[e+4|0]){E[d+1|0]=34;E[d|0]=f;a=g+12|0;oa(a,G[e>>2]);a=pa(a,4,d+2|0);E[a+2|0]=34;E[a|0]=34;E[a+1|0]=58;a=pa(e+5|0,32,a+3|0);E[a|0]=34;f=44;d=a+1|0}e=e+72|0;if((c|0)!=(e|0)){continue}break}if((f&255)==44){break b}}E[d|0]=f;d=d+1|0}E[d|0]=125;E[d+1|0]=125;a=(d-b|0)+2|0}Y=g+16|0;return a|0}function Ja(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;f=G[b+32>>2];g=G[b+28>>2];h=G[b+24>>2];i=G[b+20>>2];j=G[b+16>>2];k=G[b+12>>2];c=G[b+4>>2];d=G[b>>2];e=G[b+36>>2];b=G[b+8>>2];d=M((f+(g+(h+(i+(j+(k+((c+(d+(M(e,19)+16777216>>25)>>26)>>25)+b>>26)>>25)>>26)>>25)>>26)>>25)>>26)+e>>25,19)+d|0;E[a|0]=d;E[a+2|0]=d>>>16;E[a+1|0]=d>>>8;c=c+(d>>26)|0;E[a+5|0]=c>>>14;E[a+4|0]=c>>>6;E[a+3|0]=d>>>24&3|c<<2;b=b+(c>>25)|0;E[a+8|0]=b>>>13;E[a+7|0]=b>>>5;E[a+6|0]=b<<3|(c&29360128)>>>22;d=(b>>26)+k|0;E[a+11|0]=d>>>11;E[a+10|0]=d>>>3;E[a+9|0]=d<<5|(b&65011712)>>>21;c=(d>>25)+j|0;E[a+15|0]=c>>>18;E[a+14|0]=c>>>10;E[a+13|0]=c>>>2;b=(c>>26)+i|0;E[a+16|0]=b;E[a+12|0]=c<<6|(d&33030144)>>>19;E[a+18|0]=b>>>16;E[a+17|0]=b>>>8;c=(b>>25)+h|0;E[a+21|0]=c>>>15;E[a+20|0]=c>>>7;E[a+19|0]=b>>>24&1|c<<1;b=(c>>26)+g|0;E[a+24|0]=b>>>13;E[a+23|0]=b>>>5;E[a+22|0]=b<<3|(c&58720256)>>>23;c=(b>>25)+f|0;E[a+27|0]=c>>>12;E[a+26|0]=c>>>4;E[a+25|0]=c<<4|(b&31457280)>>>21;b=e+(c>>26)|0;E[a+30|0]=b>>>10;E[a+29|0]=b>>>2;E[a+31|0]=(b&33292288)>>>18;E[a+28|0]=b<<6|(c&66060288)>>>20}function Ba(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0;c=H[a+8|0];b=H[a+4|0];d=H[a|0];f=M(d,6);e=H[a+12|0];g=M(e,6);E[a+12|0]=c^(b^(H[f+3649|0]^H[g+3648|0]));h=M(c,6);E[a+8|0]=b^(d^(H[h+3648|0]^H[g+3649|0]));b=M(b,6);E[a+4|0]=e^(d^(H[b+3648|0]^H[h+3649|0]));E[a|0]=e^(c^(H[b+3649|0]^H[f+3648|0]));c=H[a+13|0];b=H[a+9|0];d=H[a+5|0];f=M(d,6);e=H[a+1|0];g=M(e,6);E[a+1|0]=c^(b^(H[f+3649|0]^H[g+3648|0]));h=H[f+3648|0];f=M(b,6);E[a+5|0]=c^(e^(h^H[f+3649|0]));c=M(c,6);E[a+9|0]=d^(e^(H[f+3648|0]^H[c+3649|0]));E[a+13|0]=b^(d^(H[g+3649|0]^H[c+3648|0]));c=H[a+14|0];b=H[a+10|0];d=H[a+6|0];f=M(d,6);e=H[a+2|0];g=M(e,6);E[a+2|0]=c^(b^(H[f+3649|0]^H[g+3648|0]));h=H[g+3649|0];g=M(c,6);E[a+14|0]=b^(d^(h^H[g+3648|0]));b=M(b,6);E[a+10|0]=d^(e^(H[b+3648|0]^H[g+3649|0]));E[a+6|0]=c^(e^(H[f+3648|0]^H[b+3649|0]));c=H[a+11|0];b=H[a+7|0];d=H[a+3|0];f=M(d,6);e=H[a+15|0];g=M(e,6);E[a+15|0]=c^(b^(H[f+3649|0]^H[g+3648|0]));h=M(c,6);E[a+11|0]=b^(d^(H[h+3648|0]^H[g+3649|0]));b=M(b,6);E[a+7|0]=e^(d^(H[b+3648|0]^H[h+3649|0]));E[a+3|0]=e^(c^(H[b+3649|0]^H[f+3648|0]))}function fe(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if(c>>>0<=31){G[a>>2]=2;return-1}c=H[a+64|0]|H[a+65|0]<<8|(H[a+66|0]<<16|H[a+67|0]<<24);d=H[a+60|0]|H[a+61|0]<<8|(H[a+62|0]<<16|H[a+63|0]<<24);E[b+24|0]=d;E[b+25|0]=d>>>8;E[b+26|0]=d>>>16;E[b+27|0]=d>>>24;E[b+28|0]=c;E[b+29|0]=c>>>8;E[b+30|0]=c>>>16;E[b+31|0]=c>>>24;c=H[a+56|0]|H[a+57|0]<<8|(H[a+58|0]<<16|H[a+59|0]<<24);d=H[a+52|0]|H[a+53|0]<<8|(H[a+54|0]<<16|H[a+55|0]<<24);E[b+16|0]=d;E[b+17|0]=d>>>8;E[b+18|0]=d>>>16;E[b+19|0]=d>>>24;E[b+20|0]=c;E[b+21|0]=c>>>8;E[b+22|0]=c>>>16;E[b+23|0]=c>>>24;c=H[a+48|0]|H[a+49|0]<<8|(H[a+50|0]<<16|H[a+51|0]<<24);d=H[a+44|0]|H[a+45|0]<<8|(H[a+46|0]<<16|H[a+47|0]<<24);E[b+8|0]=d;E[b+9|0]=d>>>8;E[b+10|0]=d>>>16;E[b+11|0]=d>>>24;E[b+12|0]=c;E[b+13|0]=c>>>8;E[b+14|0]=c>>>16;E[b+15|0]=c>>>24;c=H[a+40|0]|H[a+41|0]<<8|(H[a+42|0]<<16|H[a+43|0]<<24);a=H[a+36|0]|H[a+37|0]<<8|(H[a+38|0]<<16|H[a+39|0]<<24);E[b|0]=a;E[b+1|0]=a>>>8;E[b+2|0]=a>>>16;E[b+3|0]=a>>>24;E[b+4|0]=c;E[b+5|0]=c>>>8;E[b+6|0]=c>>>16;E[b+7|0]=c>>>24;return 32}function Qa(a,b,c){var d=0,e=0;a:{if(!a){break a}e=b;b=a+32|0;if(e>>>0>>0){break a}d=H[a+4|0]|H[a+5|0]<<8|(H[a+6|0]<<16|H[a+7|0]<<24);e=H[a|0]|H[a+1|0]<<8|(H[a+2|0]<<16|H[a+3|0]<<24);E[c|0]=e;E[c+1|0]=e>>>8;E[c+2|0]=e>>>16;E[c+3|0]=e>>>24;E[c+4|0]=d;E[c+5|0]=d>>>8;E[c+6|0]=d>>>16;E[c+7|0]=d>>>24;d=H[a+28|0]|H[a+29|0]<<8|(H[a+30|0]<<16|H[a+31|0]<<24);e=H[a+24|0]|H[a+25|0]<<8|(H[a+26|0]<<16|H[a+27|0]<<24);E[c+24|0]=e;E[c+25|0]=e>>>8;E[c+26|0]=e>>>16;E[c+27|0]=e>>>24;E[c+28|0]=d;E[c+29|0]=d>>>8;E[c+30|0]=d>>>16;E[c+31|0]=d>>>24;d=H[a+20|0]|H[a+21|0]<<8|(H[a+22|0]<<16|H[a+23|0]<<24);e=H[a+16|0]|H[a+17|0]<<8|(H[a+18|0]<<16|H[a+19|0]<<24);E[c+16|0]=e;E[c+17|0]=e>>>8;E[c+18|0]=e>>>16;E[c+19|0]=e>>>24;E[c+20|0]=d;E[c+21|0]=d>>>8;E[c+22|0]=d>>>16;E[c+23|0]=d>>>24;d=H[a+12|0]|H[a+13|0]<<8|(H[a+14|0]<<16|H[a+15|0]<<24);a=H[a+8|0]|H[a+9|0]<<8|(H[a+10|0]<<16|H[a+11|0]<<24);E[c+8|0]=a;E[c+9|0]=a>>>8;E[c+10|0]=a>>>16;E[c+11|0]=a>>>24;E[c+12|0]=d;E[c+13|0]=d>>>8;E[c+14|0]=d>>>16;E[c+15|0]=d>>>24;d=b}return d}function Ia(a,b){var c=0,d=0;c=H[a+4|0]|H[a+5|0]<<8|(H[a+6|0]<<16|H[a+7|0]<<24);d=H[a|0]|H[a+1|0]<<8|(H[a+2|0]<<16|H[a+3|0]<<24);E[b+32|0]=d;E[b+33|0]=d>>>8;E[b+34|0]=d>>>16;E[b+35|0]=d>>>24;E[b+36|0]=c;E[b+37|0]=c>>>8;E[b+38|0]=c>>>16;E[b+39|0]=c>>>24;c=H[a+28|0]|H[a+29|0]<<8|(H[a+30|0]<<16|H[a+31|0]<<24);d=H[a+24|0]|H[a+25|0]<<8|(H[a+26|0]<<16|H[a+27|0]<<24);E[b+56|0]=d;E[b+57|0]=d>>>8;E[b+58|0]=d>>>16;E[b+59|0]=d>>>24;E[b+60|0]=c;E[b+61|0]=c>>>8;E[b+62|0]=c>>>16;E[b+63|0]=c>>>24;c=H[a+20|0]|H[a+21|0]<<8|(H[a+22|0]<<16|H[a+23|0]<<24);d=H[a+16|0]|H[a+17|0]<<8|(H[a+18|0]<<16|H[a+19|0]<<24);E[b+48|0]=d;E[b+49|0]=d>>>8;E[b+50|0]=d>>>16;E[b+51|0]=d>>>24;E[b+52|0]=c;E[b+53|0]=c>>>8;E[b+54|0]=c>>>16;E[b+55|0]=c>>>24;c=H[a+12|0]|H[a+13|0]<<8|(H[a+14|0]<<16|H[a+15|0]<<24);a=H[a+8|0]|H[a+9|0]<<8|(H[a+10|0]<<16|H[a+11|0]<<24);E[b+40|0]=a;E[b+41|0]=a>>>8;E[b+42|0]=a>>>16;E[b+43|0]=a>>>24;E[b+44|0]=c;E[b+45|0]=c>>>8;E[b+46|0]=c>>>16;E[b+47|0]=c>>>24;Lb(b,b+32|0,1824)}function ib(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;h=Y-256|0;Y=h;while(1){G[(d<<2)+h>>2]=H[(c|3)+b|0]|(H[(c|1)+b|0]<<16|H[b+c|0]<<24|H[(c|2)+b|0]<<8);c=c+4|0;d=d+1|0;if((d|0)!=16){continue}break}b=16;c=G[h>>2];while(1){e=(b<<2)+h|0;f=G[e-8>>2];f=(G[e-28>>2]+(ye(f,15)^ye(f,13)^f>>>10)|0)+c|0;c=G[e-60>>2];v=e,w=(ye(c,25)^ye(c,14)^c>>>3)+f|0,G[v>>2]=w;b=b+1|0;if((b|0)!=64){continue}break}m=G[a+80>>2];j=m;n=G[a+84>>2];b=n;o=G[a+108>>2];k=o;p=G[a+104>>2];c=p;q=G[a+100>>2];f=q;r=G[a+96>>2];i=r;s=G[a+92>>2];t=s;u=G[a+88>>2];d=u;while(1){e=d;d=b;b=l<<2;g=i;i=(G[b+2816>>2]+((((ye(g,26)^ye(g,21)^ye(g,7))+(f&g)|0)+k|0)+((g^-1)&c)|0)|0)+G[b+h>>2]|0;b=j;j=i+((ye(b,30)^ye(b,19)^ye(b,10))+((d^e)&b^d&e)|0)|0;i=i+t|0;k=c;c=f;f=g;t=e;l=l+1|0;if((l|0)!=64){continue}break}G[a+108>>2]=k+o;G[a+104>>2]=c+p;G[a+100>>2]=g+q;G[a+96>>2]=i+r;G[a+92>>2]=e+s;G[a+88>>2]=d+u;G[a+84>>2]=b+n;G[a+80>>2]=j+m;Y=h+256|0}function nc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;f=Y-48|0;Y=f;a:{if((c|0)<=0){break a}E[b|0]=0;if(c>>>0<23){break a}G[f+32>>2]=G[a+112>>2];g=b+c|0;d=_a(b,c,1535,f+32|0);b:{if((d|0)>(c|0)){break b}if((d|0)<=0){break a}e=b+d|0;b=c-d|0;c=_a(e,b,1462,0);if((b|0)<(c|0)){break b}if((c|0)<=0){break a}b=b-c|0;c=c+e|0;c:{e=a+152|0;if((e|0)!=G[a+148>>2]){d=0;while(1){G[f+16>>2]=G[(M(d,68)+a|0)+184>>2];g=_a(c,b,1068,f+16|0);if((g|0)>(b|0)){break c}if((g|0)<=0){break a}b=b-g|0;c=c+g|0;d=d+1|0;if(d>>>0<(G[a+148>>2]-e|0)/68>>>0){continue}break}}d=_a(c,b,1439,0);if((d|0)>(b|0)){break c}if((d|0)<=0){break a}h=a+496|0;if((h|0)==G[a+492>>2]){break a}c=c+d|0;b=b-d|0;d=0;while(1){G[f>>2]=G[(M(d,68)+a|0)+528>>2];g=b+c|0;e=_a(c,b,1068,f);if((e|0)>(b|0)){break b}if((e|0)<=0){break a}b=b-e|0;c=c+e|0;d=d+1|0;if(d>>>0<(G[a+492>>2]-h|0)/68>>>0){continue}break}break a}g=b+c|0}a=g-4|0;E[a|0]=46;E[a+1|0]=46;E[a+2|0]=46;E[a+3|0]=0}Y=f+48|0}function Gc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;a:{if(c>>>0<116){G[a+7516>>2]=2;a=-1;break a}E[b|0]=123;E[b+14|0]=34;c=H[1490]|H[1491]<<8|(H[1492]<<16|H[1493]<<24);d=H[1486]|H[1487]<<8|(H[1488]<<16|H[1489]<<24);E[b+1|0]=d;E[b+2|0]=d>>>8;E[b+3|0]=d>>>16;E[b+4|0]=d>>>24;E[b+5|0]=c;E[b+6|0]=c>>>8;E[b+7|0]=c>>>16;E[b+8|0]=c>>>24;c=H[1495]|H[1496]<<8|(H[1497]<<16|H[1498]<<24);d=H[1491]|H[1492]<<8|(H[1493]<<16|H[1494]<<24);E[b+6|0]=d;E[b+7|0]=d>>>8;E[b+8|0]=d>>>16;E[b+9|0]=d>>>24;E[b+10|0]=c;E[b+11|0]=c>>>8;E[b+12|0]=c>>>16;E[b+13|0]=c>>>24;c=pa(a+96|0,32,b+15|0);E[c|0]=34;E[c+1|0]=44;E[c+12|0]=34;d=H[1504]|H[1505]<<8|(H[1506]<<16|H[1507]<<24);e=H[1500]|H[1501]<<8|(H[1502]<<16|H[1503]<<24);E[c+2|0]=e;E[c+3|0]=e>>>8;E[c+4|0]=e>>>16;E[c+5|0]=e>>>24;E[c+6|0]=d;E[c+7|0]=d>>>8;E[c+8|0]=d>>>16;E[c+9|0]=d>>>24;d=H[1508]|H[1509]<<8;E[c+10|0]=d;E[c+11|0]=d>>>8;a=pa(a,32,c+13|0);E[a|0]=34;E[a+1|0]=125;a=(a-b|0)+2|0}return a|0}function nb(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;if(!(!a|!b|J[a+72>>2]>128)){if(c){h=a+76|0;while(1){d=G[a+72>>2];a:{if(!(d|c>>>0<128)){ya(a,b);d=G[a+4>>2];e=G[a>>2]+1024|0;d=e>>>0<1024?d+1|0:d;G[a>>2]=e;G[a+4>>2]=d;c=c-128|0;b=b+128|0;break a}e=128-d|0;e=c>>>0>>0?c:e;if((d|0)!=128){g=e>>>0<=1?1:e;j=g&3;i=0;d=0;if(e>>>0>=4){k=g&-4;g=0;while(1){E[(G[a+72>>2]+d|0)+h|0]=H[b+d|0];f=d|1;E[(f+G[a+72>>2]|0)+h|0]=H[b+f|0];f=d|2;E[(f+G[a+72>>2]|0)+h|0]=H[b+f|0];f=d|3;E[(f+G[a+72>>2]|0)+h|0]=H[b+f|0];d=d+4|0;g=g+4|0;if((k|0)!=(g|0)){continue}break}}if(j){while(1){E[((G[a+72>>2]+d|0)+a|0)+76|0]=H[b+d|0];d=d+1|0;i=i+1|0;if((i|0)!=(j|0)){continue}break}}d=G[a+72>>2]}else{d=128}d=d+e|0;G[a+72>>2]=d;c=c-e|0;b=b+e|0;if((d|0)!=128){break a}ya(a,h);G[a+72>>2]=0;d=G[a+4>>2];e=G[a>>2]+1024|0;d=e>>>0<1024?d+1|0:d;G[a>>2]=e;G[a+4>>2]=d}if(c){continue}break}}}}function _a(a,b,c,d){var e=0,f=0,g=0,h=0;h=Y-16|0;Y=h;G[h+12>>2]=d;e=Y-160|0;Y=e;f=b?a:e+158|0;G[e+148>>2]=f;a=-1;g=b-1|0;G[e+152>>2]=b>>>0>=g>>>0?g:0;e=ta(e,0,144);G[e+76>>2]=-1;G[e+36>>2]=8;G[e+80>>2]=-1;G[e+44>>2]=e+159;G[e+84>>2]=e+148;a:{if((b|0)<0){G[9343]=61;break a}E[f|0]=0;f=0;b=Y-208|0;Y=b;G[b+204>>2]=d;a=b+160|0;ta(a,0,40);G[b+200>>2]=G[b+204>>2];b:{if((Ib(0,c,b+200|0,b+80|0,a)|0)<0){c=-1;break b}d=G[e+76>>2]<0;g=G[e>>2];G[e>>2]=g&-33;c:{d:{e:{if(!G[e+48>>2]){G[e+48>>2]=80;G[e+28>>2]=0;G[e+16>>2]=0;G[e+20>>2]=0;f=G[e+44>>2];G[e+44>>2]=b;break e}if(G[e+16>>2]){break d}}a=-1;if(Kb(e)){break c}}a=Ib(e,c,b+200|0,b+80|0,b+160|0)}c=a;if(f){_[G[e+36>>2]](e,0,0)|0;G[e+48>>2]=0;G[e+44>>2]=f;G[e+28>>2]=0;a=G[e+20>>2];G[e+16>>2]=0;G[e+20>>2]=0;c=a?c:-1}a=G[e>>2];G[e>>2]=a|g&32;c=a&32?-1:c;if(d){break b}}Y=b+208|0;a=c}Y=e+160|0;Y=h+16|0;return a}function xe(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;a:{b:{c:{d:{e:{f:{g:{h:{i:{j:{if(b){if(!c){break j}break i}Z=0;a=(a>>>0)/(c>>>0)|0;break a}if(!a){break h}break g}if(!(c-1&c)){break f}f=(P(c)+33|0)-P(b)|0;g=0-f|0;break d}Z=0;a=(b>>>0)/0|0;break a}d=32-P(b)|0;if(d>>>0<31){break e}break c}if((c|0)==1){break b}f=ve(c);c=f&31;if((f&63)>>>0>=32){a=b>>>c|0}else{d=b>>>c|0;a=((1<>>c}Z=d;break a}f=d+1|0;g=63-d|0}d=f&63;e=d&31;if(d>>>0>=32){d=0;h=b>>>e|0}else{d=b>>>e|0;h=((1<>>e}g=g&63;e=g&31;if(g>>>0>=32){b=a<>>32-e|b<>>31;d=h<<1|b>>>31;e=l-(i+(d>>>0>g>>>0)|0)>>31;j=c&e;h=d-j|0;d=i-(d>>>0>>0)|0;b=b<<1|a>>>31;a=k|a<<1;k=e&1;f=f-1|0;if(f){continue}break}}Z=b<<1|a>>>31;a=k|a<<1;break a}a=0;b=0}Z=b}return a}function tc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=Y-16|0;Y=e;d=17;a:{if((H[a+7372|0]|!H[a+7364|0]?d:71)>>>0>c>>>0){G[a+7516>>2]=2;a=-1;break a}E[b|0]=123;E[b+14|0]=123;c=H[1495]|H[1496]<<8|(H[1497]<<16|H[1498]<<24);d=H[1491]|H[1492]<<8|(H[1493]<<16|H[1494]<<24);E[b+6|0]=d;E[b+7|0]=d>>>8;E[b+8|0]=d>>>16;E[b+9|0]=d>>>24;E[b+10|0]=c;E[b+11|0]=c>>>8;E[b+12|0]=c>>>16;E[b+13|0]=c>>>24;c=H[1490]|H[1491]<<8|(H[1492]<<16|H[1493]<<24);d=H[1486]|H[1487]<<8|(H[1488]<<16|H[1489]<<24);E[b+1|0]=d;E[b+2|0]=d>>>8;E[b+3|0]=d>>>16;E[b+4|0]=d>>>24;E[b+5|0]=c;E[b+6|0]=c>>>8;E[b+7|0]=c>>>16;E[b+8|0]=c>>>24;d=b+15|0;if(!(H[a+7372|0]|!H[a+7364|0])){E[b+15|0]=34;c=e+12|0;oa(c,G[a+7368>>2]);c=pa(c,4,b+16|0);E[c+2|0]=34;E[c|0]=34;E[c+1|0]=58;a=pa(a+7373|0,32,c+3|0);E[a|0]=34;d=a+1|0}E[d|0]=125;E[d+1|0]=125;a=(d-b|0)+2|0}Y=e+16|0;return a|0}function Md(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=Y-160|0;Y=h;g=-1;c=Ra(b,c,b);a:{if((c|0)==-1){G[a+300>>2]=7;break a}g=G[9340];zb(b,c,_[G[G[g>>2]>>2]](g)|0,h+140|0);if(H[h+140|0]!=3){G[a+300>>2]=3;g=-1;break a}if(!(G[h+152>>2]?G[h+148>>2]:0)){G[a+300>>2]=4;g=-1;break a}if(f){G[f>>2]=G[h+144>>2]}f=c+-64|0;if(!jb(a+264|0,b,f,b+f|0)){G[a+300>>2]=14;g=-1;break a}c=G[9340];if(_[G[G[c>>2]+12>>2]](c,G[h+156>>2])>>>0>e>>>0){G[a+300>>2]=2;g=-1;break a}b:{c=G[h+144>>2];c:{if((c-G[a+260>>2]|0)>=0){g=a+132|0;fb(g,c);ma(h+8|0,g,132);break c}if((c-G[a+128>>2]|0)<0){break b}g=h+8|0;ma(g,a,132);fb(g,c)}c=G[9340];g=h+8|0;b=_[G[G[c>>2]+16>>2]](c,g,128,b,f,G[h+152>>2],G[h+156>>2],d,e)|0;la(g,132);g=-1;if((b|0)==-1){G[a+300>>2]=5;break a}G[a+296>>2]=1;g=b;break a}G[a+300>>2]=12;g=-1}Y=h+160|0;return g|0}function vc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=Y-16|0;Y=e;a:{if((H[a+7364|0]?71:17)>>>0>c>>>0){G[a+7516>>2]=2;a=-1;break a}E[b|0]=123;E[b+14|0]=123;c=H[1495]|H[1496]<<8|(H[1497]<<16|H[1498]<<24);d=H[1491]|H[1492]<<8|(H[1493]<<16|H[1494]<<24);E[b+6|0]=d;E[b+7|0]=d>>>8;E[b+8|0]=d>>>16;E[b+9|0]=d>>>24;E[b+10|0]=c;E[b+11|0]=c>>>8;E[b+12|0]=c>>>16;E[b+13|0]=c>>>24;c=H[1490]|H[1491]<<8|(H[1492]<<16|H[1493]<<24);d=H[1486]|H[1487]<<8|(H[1488]<<16|H[1489]<<24);E[b+1|0]=d;E[b+2|0]=d>>>8;E[b+3|0]=d>>>16;E[b+4|0]=d>>>24;E[b+5|0]=c;E[b+6|0]=c>>>8;E[b+7|0]=c>>>16;E[b+8|0]=c>>>24;if(H[a+7364|0]){E[b+15|0]=34;c=e+12|0;oa(c,G[a+7368>>2]);c=pa(c,4,b+16|0);E[c+2|0]=34;E[c|0]=34;E[c+1|0]=58;a=pa(a+7373|0,32,c+3|0);E[a|0]=34;a=a+1|0}else{a=b+15|0}E[a|0]=125;E[a+1|0]=125;a=(a-b|0)+2|0}Y=e+16|0;return a|0}function Gb(a,b,c){a:{switch(b-9|0){case 0:b=G[c>>2];G[c>>2]=b+4;G[a>>2]=G[b>>2];return;case 6:b=G[c>>2];G[c>>2]=b+4;b=F[b>>1];G[a>>2]=b;G[a+4>>2]=b>>31;return;case 7:b=G[c>>2];G[c>>2]=b+4;G[a>>2]=I[b>>1];G[a+4>>2]=0;return;case 8:b=G[c>>2];G[c>>2]=b+4;b=E[b|0];G[a>>2]=b;G[a+4>>2]=b>>31;return;case 9:b=G[c>>2];G[c>>2]=b+4;G[a>>2]=H[b|0];G[a+4>>2]=0;return;case 16:b=G[c>>2]+7&-8;G[c>>2]=b+8;L[a>>3]=L[b>>3];return;case 17:Eb(a,c);default:return;case 1:case 4:case 14:b=G[c>>2];G[c>>2]=b+4;b=G[b>>2];G[a>>2]=b;G[a+4>>2]=b>>31;return;case 2:case 5:case 11:case 15:b=G[c>>2];G[c>>2]=b+4;G[a>>2]=G[b>>2];G[a+4>>2]=0;return;case 3:case 10:case 12:case 13:break a}}b=G[c>>2]+7&-8;G[c>>2]=b+8;c=G[b+4>>2];G[a>>2]=G[b>>2];G[a+4>>2]=c}function ta(a,b,c){var d=0,e=0,f=0,g=0;a:{if(!c){break a}E[a|0]=b;d=a+c|0;E[d-1|0]=b;if(c>>>0<3){break a}E[a+2|0]=b;E[a+1|0]=b;E[d-3|0]=b;E[d-2|0]=b;if(c>>>0<7){break a}E[a+3|0]=b;E[d-4|0]=b;if(c>>>0<9){break a}d=0-a&3;e=d+a|0;b=M(b&255,16843009);G[e>>2]=b;d=c-d&-4;c=d+e|0;G[c-4>>2]=b;if(d>>>0<9){break a}G[e+8>>2]=b;G[e+4>>2]=b;G[c-8>>2]=b;G[c-12>>2]=b;if(d>>>0<25){break a}G[e+24>>2]=b;G[e+20>>2]=b;G[e+16>>2]=b;G[e+12>>2]=b;G[c-16>>2]=b;G[c-20>>2]=b;G[c-24>>2]=b;G[c-28>>2]=b;g=e&4|24;c=d-g|0;if(c>>>0<32){break a}d=we(b,0,1,1);f=Z;b=e+g|0;while(1){G[b+24>>2]=d;G[b+28>>2]=f;G[b+16>>2]=d;G[b+20>>2]=f;G[b+8>>2]=d;G[b+12>>2]=f;G[b>>2]=d;G[b+4>>2]=f;b=b+32|0;c=c-32|0;if(c>>>0>31){continue}break}}return a}function Yb(a,b,c,d,e){var f=0,g=0,h=0,i=0;f=Y-80|0;Y=f;g=-1;h=G[b>>2];i=G[c+4>>2];if(!(h>>>0>i>>>0|i-h>>>0>2e3)){G[f+72>>2]=G[b+32>>2];h=G[b+28>>2];g=f- -64|0;G[g>>2]=G[b+24>>2];G[g+4>>2]=h;g=G[b+20>>2];G[f+56>>2]=G[b+16>>2];G[f+60>>2]=g;g=G[b+12>>2];G[f+48>>2]=G[b+8>>2];G[f+52>>2]=g;g=G[b+4>>2];b=G[b>>2];G[f+40>>2]=b;G[f+44>>2]=g;if(b>>>0>>0){b=f+40|4;while(1){na(b,32,1869,1,b);g=G[f+40>>2]+1|0;G[f+40>>2]=g;if(g>>>0>2]){continue}break}}b=f+40|0;g=f+8|0;na(b|4,32,1868,1,g);G[f+4>>2]=G[f+40>>2];a=G[a+4>>2];g=_[G[G[a>>2]+16>>2]](a,g,32,G[c+8>>2],G[c+12>>2],G[c+24>>2],G[c+28>>2],d,e)|0;la(b,36)}Y=f+80|0;return g}function va(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0;d=-1;a:{if((b&3)==1){break a}d=b+2|0;g=((d&3)+M(d>>>2|0,3)|0)-2|0;d=-1;if((g|0)==-1){break a}e=b&-4;b:{if(!e){e=a;break b}e=a+e|0;d=a;while(1){i=H[d|0];f=H[d+1|0];h=H[(H[d+2|0]&127)+1632|0];E[c+2|0]=H[(H[d+3|0]&127)+1632|0]|h<<6;f=H[(f&127)+1632|0]<<6;E[c+1|0]=(f|h)>>>2;E[c|0]=(f|H[(i&127)+1632|0]<<12)>>>10;c=c+3|0;d=d+4|0;if((d|0)!=(e|0)){continue}break}}b=a+b|0;if((b|0)!=(e|0)){a=H[(H[e+1|0]&127)+1632|0]|H[(H[e|0]&127)+1632|0]<<6;if((b-e|0)==3){E[c+1|0]=(H[(H[e+2|0]&127)+1632|0]|a<<6)>>>2}E[c|0]=a>>>4}d=g}return d}function pe(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0;l=Y-112|0;Y=l;m=(_[G[441]](G[1416],c)|0)+2|0;n=(m>>>0)/3|0;a:{b:{c:{if(((m-M(n,3)|0)+(n<<2)|0)-2>>>0>e>>>0){break c}if(_[G[440]](G[1416])>>>0>g>>>0){break c}if(i>>>0>=43){break b}}G[a>>2]=2;c=-1;break a}if(k>>>0<=31){G[a>>2]=1;c=-1;break a}g=l+48|0;Ia(j,g);pa(g,32,h);h=g;g=l+16|0;Ca(h,a+4|0,g);a=_[G[441]](G[1416],c)|0;e=(d+e|0)-a|0;h=b;b=l+8|0;c=_[G[442]](G[1416],g,32,h,c,e,a,b,8)|0;if((c|0)==-1){break a}pa(b,8,f);pa(e,a,d)}Y=l+112|0;return c|0}function Mc(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=Ob(a);if(Ga(g)>>>0>e>>>0){G[a+7516>>2]=2;return-1}e=a+164|0;f=oa(Pa(vb(oa(bb(d,g),4),a),a+96|0),(G[a+160>>2]-e|0)/72|0);h=G[a+160>>2];if((h|0)!=(e|0)){while(1){f=oa(f,G[e>>2]);E[f|0]=H[e+4|0];f=Pa(f+1|0,e+5|0);e=e+72|0;if((h|0)!=(e|0)){continue}break}}E[f|0]=H[a+7364|0];e=f+1|0;a:{if(!H[a+7364|0]){break a}e=oa(e,G[a+7368>>2]);E[e|0]=H[a+7372|0];e=Pa(e+1|0,a+7373|0);if(H[a+7364|0]<2){break a}e=oa(e,G[a+7440>>2]);E[e|0]=H[a+7444|0];e=Pa(e+1|0,a+7445|0)}oa(e,G[a+7512>>2]);return ab(b,c,d,g)|0}function Fa(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0;f=a;e=c;d=(b>>>0)%3|0;if((d|0)!=(b|0)){f=(b-d|0)+a|0;d=a;while(1){g=H[d+1|0];h=H[d|0];i=H[d+2|0];E[e+3|0]=H[(i&63)+1568|0];E[e|0]=H[(h>>>2|0)+1568|0];g=g<<8;E[e+2|0]=H[((g|i)>>>6&63)+1568|0];E[e+1|0]=H[((g|h<<16)>>>12&63)+1568|0];e=e+4|0;d=d+3|0;if((f|0)!=(d|0)){continue}break}}d=a+b|0;if((d|0)!=(f|0)){a=2;b=H[f|0];a:{if((d-f|0)==2){a=H[f+1|0]<<2;E[e+2|0]=H[(a&60)+1568|0];d=(a|b<<10)>>>6|0;a=3;break a}d=b<<4}E[e|0]=H[(d>>>6|0)+1568|0];E[e+1|0]=H[(d&63)+1568|0];e=a+e|0}return e-c|0}function pa(a,b,c){var d=0,e=0,f=0,g=0,h=0;d=(b>>>0)%3|0;a:{if((d|0)==(b|0)){e=a;break a}e=(b-d|0)+a|0;d=a;while(1){f=H[d+1|0];g=H[d|0];h=H[d+2|0];E[c+3|0]=H[(h&63)+1568|0];E[c|0]=H[(g>>>2|0)+1568|0];f=f<<8;E[c+2|0]=H[((f|h)>>>6&63)+1568|0];E[c+1|0]=H[((f|g<<16)>>>12&63)+1568|0];c=c+4|0;d=d+3|0;if((e|0)!=(d|0)){continue}break}}d=a+b|0;if((d|0)!=(e|0)){a=2;b=H[e|0];b:{if((d-e|0)==2){a=H[e+1|0]<<2;E[c+2|0]=H[(a&60)+1568|0];d=(a|b<<10)>>>6|0;a=3;break b}d=b<<4}E[c|0]=H[(d>>>6|0)+1568|0];E[c+1|0]=H[(d&63)+1568|0];c=a+c|0}return c}function Od(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=Y-16|0;Y=f;b=$a(b,c,d,e,a+300|0);a:{if((b|0)!=-1){c=b+d|0;b=xa(d,c,f+12|0);b:{if(!b){d=10;break b}d=9;if(G[f+12>>2]-3>>>0<4294967294){break b}b=kb(a,b,c);if(!b){d=10;break b}b=kb(a+132|0,b,c);if(!b){d=10;break b}b=Qa(b,c,a+264|0);if(!b){d=10;break b}g=a+296|0;c:{if(G[f+12>>2]==1){G[g>>2]=1;break c}d=10;if(!b|(b|0)==(c|0)){b=h}else{E[g|0]=H[b|0]!=0;b=b+1|0}if(!b){break b}}d=17;if((b|0)==(c|0)){break a}}G[a+300>>2]=d}e=-1}Y=f+16|0;return e|0}function kc(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=b+3285|0;b=a+164|0;a:{b:{if((b|0)!=G[a+160>>2]){while(1){d=Na(b+5|0,c,32);e=G[a+160>>2];if(d){d=G[b>>2];c=e-72|0;G[a+160>>2]=c;if((b|0)==(c|0)){break b}while(1){c=b;b=b+72|0;ma(c,b,72);if(G[a+160>>2]!=(b|0)){continue}break}break b}b=b+72|0;if((e|0)!=(b|0)){continue}break}}d=-1;if(!H[a+7364|0]){break b}if(Na(a+7373|0,c,32)){b=G[a+7368>>2];break a}if(H[a+7364|0]<2){break b}if(!Na(a+7445|0,c,32)){break b}d=G[a+7440>>2]}b=d}if((b|0)==-1){G[a+7516>>2]=6}return b|0}function yc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;g=c;e=b;a:{b:{if(b<<5>>>0<=d>>>0){if(b){break b}e=0;break a}G[a+7516>>2]=1;e=-1;break a}j=a+169|0;k=a+7364|0;h=a+164|0;while(1){b=k;f=G[a+160>>2];if((b|0)!=(f|0)){b=f+72|0;G[a+160>>2]=b}b=b-72|0;if((h|0)!=(b|0)){while(1){f=b;b=b-72|0;ma(f,b,72);if((b|0)!=(h|0)){continue}break}}E[a+168|0]=0;b=G[a+7512>>2]+1|0;G[a+164>>2]=b;G[a+7512>>2]=b;Ia(g,j);g=g+32|0;i=i+1|0;if((e|0)!=(i|0)){continue}break}}la(c,d);return e|0}function Db(a,b){if(!a){return 0}a:{b:{if(a){if(b>>>0<=127){break b}c:{if(!G[G[9382]>>2]){if((b&-128)==57216){break b}break c}if(b>>>0<=2047){E[a+1|0]=b&63|128;E[a|0]=b>>>6|192;a=2;break a}if(!((b&-8192)!=57344&b>>>0>=55296)){E[a+2|0]=b&63|128;E[a|0]=b>>>12|224;E[a+1|0]=b>>>6&63|128;a=3;break a}if(b-65536>>>0<=1048575){E[a+3|0]=b&63|128;E[a|0]=b>>>18|240;E[a+2|0]=b>>>6&63|128;E[a+1|0]=b>>>12&63|128;a=4;break a}}G[9343]=25;a=-1}else{a=1}break a}E[a|0]=b;a=1}return a}function gc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=ra(d);if((e|0)==-1){G[a+3216>>2]=7;return-1}va(c,d,c);d=Y-48|0;Y=d;a:{b:{if((b|0)!=1){db(d+12|0,c,e);c=G[d+40>>2];if(!c){G[a+3216>>2]=4;break b}e=G[d+44>>2]}b=Y-32|0;Y=b;f=c;c=G[a+4>>2];hb(b,f,e,_[G[G[c>>2]>>2]](c)|0);c:{if(!G[b+24>>2]){G[a+8>>2]=4;c=-1;break c}c=G[a+4>>2];c=_[G[G[c>>2]+12>>2]](c,G[b+28>>2])|0}Y=b+32|0;if((c|0)!=-1){break a}G[a+3216>>2]=G[a+8>>2];G[a+8>>2]=0}c=-1}Y=d+48|0;return c|0}function Na(a,b,c){var d=0,e=0,f=0,g=0;d=Y-16|0;E[d+15|0]=0;a:{if(!c){break a}f=c&3;b:{if(!f){e=c;break b}e=c;while(1){E[d+15|0]=H[d+15|0]|H[b|0]^H[a|0];b=b+1|0;a=a+1|0;e=e-1|0;g=g+1|0;if((f|0)!=(g|0)){continue}break}}if(c>>>0<4){break a}while(1){E[d+15|0]=H[d+15|0]|H[a|0]^H[b|0];E[d+15|0]=H[d+15|0]|H[a+1|0]^H[b+1|0];E[d+15|0]=H[d+15|0]|H[a+2|0]^H[b+2|0];E[d+15|0]=H[d+15|0]|H[a+3|0]^H[b+3|0];b=b+4|0;a=a+4|0;e=e-4|0;if(e){continue}break}}return!H[d+15|0]}function Vb(a,b,c,d){var e=0,f=0,g=0;e=Y-48|0;Y=e;db(e+12|0,c,d);c=0;d=G[e+16>>2];a:{if(!d){f=(b|d)!=0;break a}f=G[e+20>>2]==32}b:{if(!f|!G[e+40>>2]){break b}f=G[e+24>>2];if(!f|G[e+28>>2]!=32){break b}g=G[e+32>>2];if(!g|G[e+36>>2]!=32){break b}c:{d:{if(d){d=Oa(d,a+3221|0);if(b){if(d){break b}break d}if(!d){break c}break b}if(!b){break c}}if(Oa(b,a+3221|0)){break b}}if(Oa(f,a+3253|0)){break b}c=!Oa(g,a+3285|0)}Y=e+48|0;return c}function ge(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0;j=Y-80|0;Y=j;k=G[443];a:{if(_[k|0](G[1416],ra(g))>>>0>i>>>0){G[a>>2]=2;g=-1;break a}k=ra(g);if(!(!((k|0)==-1|(c|0)!=43)&(e|0)==11)){G[a>>2]=7;g=-1;break a}c=b;b=j+48|0;va(c,43,b);c=b;b=j+16|0;Ca(a+4|0,c,b);c=j+8|0;va(d,11,c);va(f,g,f);g=_[G[444]](G[1416],b,32,c,8,f,k,h,i)|0;if((g|0)!=-1){break a}G[a>>2]=5}Y=j+80|0;return g|0}function ie(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;h=Y-16|0;Y=h;a:{if(!(!f|g>>>0>=43)){G[a>>2]=2;g=-1;break a}g=-1;b=$a(b,c,d,e,a);if((b|0)==-1){break a}b:{b=b+d|0;c=xa(d,b,h+12|0);c:{if(!c){break c}if(G[h+12>>2]!=1){G[a>>2]=9;break c}d=c;c=a+4|0;d=Ma(d,b,c);if(d){break b}}if(G[a>>2]){break a}G[a>>2]=10;break a}if((b|0)!=(d|0)){G[a>>2]=17;break a}if(f){pa(c,32,f)}g=e}Y=h+16|0;return g|0}function Tb(a){var b=0,c=0,d=0,e=0,f=0;b=a+48|0;d=G[a+44>>2];if((b|0)==(d|0)){d=36}else{c=4;while(1){c=c+100|0;b=b+100|0;if((d|0)!=(b|0)){continue}break}d=c+32|0}e=4;c=4;b=a+152|0;f=G[a+148>>2];if((b|0)!=(f|0)){while(1){c=c+68|0;b=b+68|0;if((f|0)!=(b|0)){continue}break}}b=a+496|0;a=G[a+492>>2];if((b|0)!=(a|0)){while(1){e=e+68|0;b=b+68|0;if((a|0)!=(b|0)){continue}break}}return((c+d|0)+e|0)+101|0}function ze(a,b,c){var d=0,e=0,f=0,g=0;g=c&63;f=g;e=f&31;if(f>>>0>=32){f=-1>>>e|0}else{d=-1>>>e|0;f=d|(1<>>0>=32){d=f<>>32-e|d<>>0>=32){d=-1<>>32-d}a=c&a;b=b&d;d=e&31;if(e>>>0>=32){c=0;a=b>>>d|0}else{c=b>>>d|0;a=((1<>>d}a=a|g;Z=c|f;return a} +function qa(a,b,c){var d=0,e=0,f=0;if(!(H[a|0]&32)){a:{d=G[a+16>>2];if(!d){if(Kb(a)){break a}d=G[a+16>>2]}e=G[a+20>>2];if(d-e>>>0>>0){_[G[a+36>>2]](a,b,c)|0;break a}b:{c:{if(!c|G[a+80>>2]<0){break c}d=c;while(1){f=b+d|0;if(H[f-1|0]!=10){d=d-1|0;if(d){continue}break c}break}if(_[G[a+36>>2]](a,b,d)>>>0>>0){break a}c=c-d|0;e=G[a+20>>2];break b}f=b}ma(e,f,c);G[a+20>>2]=G[a+20>>2]+c}}}function hd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;e=G[a+84>>2];f=G[e>>2];d=G[e+4>>2];h=G[a+28>>2];g=G[a+20>>2]-h|0;g=d>>>0>>0?d:g;if(g){ma(f,h,g);f=g+G[e>>2]|0;G[e>>2]=f;d=G[e+4>>2]-g|0;G[e+4>>2]=d}d=c>>>0>d>>>0?d:c;if(d){ma(f,b,d);f=d+G[e>>2]|0;G[e>>2]=f;G[e+4>>2]=G[e+4>>2]-d}E[f|0]=0;b=G[a+44>>2];G[a+28>>2]=b;G[a+20>>2]=b;return c|0}function Ad(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0;f=Y-16|0;Y=f;b=$a(b,c,d,e,a+228|0);a:{if((b|0)!=-1){b=b+d|0;c=xa(d,b,f+12|0);b:{if(!c){d=10;break b}d=9;if(G[f+12>>2]!=1){break b}c=kb(a,c,b);if(!c){d=10;break b}d=10;c=ub(c,b,a+132|0);if(!c){break b}d=17;if((b|0)==(c|0)){break a}}G[a+228>>2]=d}e=-1}Y=f+16|0;return e|0}function Nd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=Y-32|0;Y=d;e=-1;c=Ra(b,c,b);a:{if((c|0)==-1){G[a+300>>2]=7;break a}f=b;b=G[9340];zb(f,c,_[G[G[b>>2]>>2]](b)|0,d+12|0);if(H[d+12|0]!=3){G[a+300>>2]=3;break a}if(!G[d+24>>2]){G[a+300>>2]=4;break a}a=G[9340];e=_[G[G[a>>2]+12>>2]](a,G[d+28>>2])|0}Y=d+32|0;return e|0}function la(a,b){var c=0,d=0,e=0;a:{if(!b){break a}c=a;d=b&7;if(d){while(1){E[c|0]=0;c=c+1|0;e=e+1|0;if((d|0)!=(e|0)){continue}break}}if(b>>>0<8){break a}a=a+b|0;while(1){E[c|0]=0;E[c+1|0]=0;E[c+2|0]=0;E[c+3|0]=0;E[c+4|0]=0;E[c+5|0]=0;E[c+6|0]=0;E[c+7|0]=0;c=c+8|0;if((a|0)!=(c|0)){continue}break}}}function Pb(a,b,c){var d=0;d=Y-112|0;Y=d;G[d+80>>2]=1779033703;G[d+84>>2]=-1150833019;G[d+72>>2]=0;G[d+76>>2]=0;G[d+64>>2]=0;G[d+104>>2]=528734635;G[d+108>>2]=1541459225;G[d+96>>2]=1359893119;G[d+100>>2]=-1694144372;G[d+88>>2]=1013904242;G[d+92>>2]=-1521486534;ua(d,a,b);Ea(d,c);la(d,112);Y=d+112|0}function Oa(a,b){var c=0,d=0,e=0;c=32;a:{b:{if((a|b)&3){break b}while(1){if(G[a>>2]!=G[b>>2]){break b}b=b+4|0;a=a+4|0;c=c-4|0;if(c>>>0>3){continue}break}if(!c){break a}}while(1){d=H[a|0];e=H[b|0];if((d|0)==(e|0)){b=b+1|0;a=a+1|0;c=c-1|0;if(c){continue}break a}break}return d-e|0}return 0}function dc(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;h=Y-32|0;Y=h;a:{if((ra(c)|0)!=32){G[a>>2]=7;c=-1;break a}va(b,c,h);c=-1;b=ra(g);if((b|0)==-1){G[a>>2]=7;break a}va(f,g,f);b:{if(b>>>0>=64){c=0;if(jb(h,d,e,f)){break b}}G[a>>2]=5;c=-1}}Y=h+32|0;return c|0}function ua(a,b,c){var d=0,e=0,f=0;if(c){d=G[a+64>>2];while(1){E[a+d|0]=H[b+e|0];d=G[a+64>>2]+1|0;G[a+64>>2]=d;if((d|0)==64){ib(a,a);G[a+64>>2]=0;d=G[a+76>>2];f=G[a+72>>2]+512|0;d=f>>>0<512?d+1|0:d;G[a+72>>2]=f;G[a+76>>2]=d;d=0}e=e+1|0;if((e|0)!=(c|0)){continue}break}}}function kd(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;h=Y+-64|0;Y=h;a:{if(g>>>0<43){G[a>>2]=2;a=-1;break a}if(!G[a+100>>2]){G[a>>2]=16;a=-1;break a}g=a+68|0;a=h+32|0;Da(g,32,0,0,d,e,a,32);na(a,32,b,c,h);Fa(h,32,f);a=0}Y=h- -64|0;return a|0}function xc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;a:{if(c>>>0<=31){G[a+7516>>2]=1;a=-1;break a}d=H[a+7364|0];if(d>>>0<=1){E[a+7364|0]=d+1}ma(a+7440|0,a+7368|0,72);E[a+7372|0]=0;d=G[a+7512>>2]+1|0;G[a+7368>>2]=d;G[a+7512>>2]=d;Ia(b,a+7373|0);a=1}la(b,c);return a|0}function Ua(a,b,c){var d=0,e=0,f=0,g=0;if(b){while(1){c=c-1|0;e=a;a=xe(a,b,10);d=Z;f=c,g=e-we(a,d,10,0)|48,E[f|0]=g;e=b>>>0>9;b=d;if(e){continue}break}}if(a){while(1){c=c-1|0;b=(a>>>0)/10|0;E[c|0]=a-M(b,10)|48;d=a>>>0>9;a=b;if(d){continue}break}}return c}function id(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;h=Y-256|0;Y=h;a:{if(g>>>0<43){G[a>>2]=2;a=-1;break a}if(!G[a+100>>2]){G[a>>2]=16;a=-1;break a}Da(a+68|0,32,0,0,d,e,h,256);na(h,256,b,c,f);Fa(f,32,f);a=0}Y=h+256|0;return a|0}function jd(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;h=Y-32|0;Y=h;a:{if(g>>>0<43){G[a>>2]=2;a=-1;break a}if(!G[a+100>>2]){G[a>>2]=16;a=-1;break a}Da(a+68|0,32,0,0,d,e,h,32);na(h,32,b,c,f);Fa(f,32,f);a=0}Y=h+32|0;return a|0}function Jb(a,b){var c=0,d=0,e=0;A(+a);d=v(1)|0;e=v(0)|0;c=d>>>20&2047;if((c|0)!=2047){if(!c){if(a==0){c=0}else{a=Jb(a*0x10000000000000000,b);c=G[b>>2]+-64|0}G[b>>2]=c;return a}G[b>>2]=c-1022;x(0,e|0);x(1,d&-2146435073|1071644672);a=+z()}return a}function pc(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0;g=Y-32|0;Y=g;a:{if((ra(d)|0)!=32){G[a+3216>>2]=7;d=-1;break a}va(c,d,g);d=-1;c=ra(f);if((c|0)==-1){G[a+3216>>2]=7;break a}va(e,f,e);d=Wb(a,b,g,e,c)}Y=g+32|0;return d|0}function $a(a,b,c,d,e){var f=0,g=0;f=-1;g=ra(d);a:{b:{if((g|0)==-1){c=7;if(e){break b}break a}Ra(c,d,c);d=a;a=g-(_[G[440]](2804)|0)|0;f=_[G[444]](2804,d,b,c,g,c,a,c,a)|0;if(!e){break a}c=8;if((f|0)!=-1){break a}}G[e>>2]=c;f=-1}return f}function Cb(a,b,c){var d=0,e=0,f=0;e=1;if(a>>>0>=128){while(1){e=e+1|0;d=a>>>0>16383;a=a>>>7|0;if(d){continue}break}}d=1;if(b>>>0>=128){a=b;while(1){d=d+1|0;f=a>>>0>16383;a=a>>>7|0;if(f){continue}break}}return(((b+c|0)+e|0)+d|0)+37|0}function Ab(a,b,c){var d=0,e=0,f=0;d=1;e=1;if(a>>>0>=128){while(1){e=e+1|0;f=a>>>0>16383;a=a>>>7|0;if(f){continue}break}}if(b>>>0>=128){a=b;while(1){d=d+1|0;f=a>>>0>16383;a=a>>>7|0;if(f){continue}break}}return(((b+c|0)+e|0)+d|0)+67|0}function Hb(a){var b=0,c=0,d=0;if(E[G[a>>2]]-48>>>0>=10){return 0}while(1){d=G[a>>2];c=-1;if(b>>>0<=214748364){c=E[d|0]-48|0;b=M(b,10);c=(c|0)>(b^2147483647)?-1:c+b|0}G[a>>2]=d+1;b=c;if(E[d+1|0]-48>>>0<10){continue}break}return b}function Ob(a){var b=0,c=0,d=0;b=4;c=a+164|0;d=G[a+160>>2];if((c|0)!=(d|0)){while(1){b=b+69|0;c=c+72|0;if((d|0)!=(c|0)){continue}break}}b=b+165|0;a=H[a+7364|0];a:{if(!a){break a}b=b+69|0;if(a>>>0<2){break a}b=b+69|0}return b+4|0}function lc(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0;f=Y-32|0;Y=f;a:{if((ra(c)|0)!=32){G[a+3216>>2]=7;c=-1;break a}va(b,c,f);c=-1;b=ra(e);if((b|0)==-1){G[a+3216>>2]=7;break a}va(d,e,d);c=Vb(a,f,d,b)}Y=f+32|0;return c|0}function ab(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0;f=_[G[441]](2804,d)|0;e=f+(_[G[440]](2804)|0)|0;g=e+2|0;h=(g>>>0)/3|0;i=a;j=b;b=((g-M(h,3)|0)+(h<<2)|0)-2|0;a=(b+c|0)-e|0;_[G[442]](2804,i,j,a,d,a,f,a,e)|0;Fa(a,e,c);return b}function we(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0;e=c>>>16|0;f=a>>>16|0;j=M(e,f);g=c&65535;h=a&65535;i=M(g,h);f=(i>>>16|0)+M(f,g)|0;e=(f&65535)+M(e,h)|0;Z=(M(b,c)+j|0)+M(a,d)+(f>>>16)+(e>>>16)|0;return i&65535|e<<16}function xa(a,b,c){var d=0,e=0;G[c>>2]=0;a:{if(!a){break a}e=b;b=a+4|0;if(e>>>0>>0){break a}d=H[a|0]<<8;G[c>>2]=d;d=(d|H[a+1|0])<<8;G[c>>2]=d;d=(d|H[a+2|0])<<8;G[c>>2]=d;G[c>>2]=d|H[a+3|0];d=b}return d}function sa(a,b,c,d,e){var f=0;f=Y-256|0;Y=f;if(!(e&73728|(c|0)<=(d|0))){d=c-d|0;c=d>>>0<256;ta(f,b&255,c?d:256);if(!c){while(1){qa(a,f,256);d=d-256|0;if(d>>>0>255){continue}break}}qa(a,f,d)}Y=f+256|0}function Dc(a){a=a|0;var b=0,c=0,d=0;b=a+164|0;c=G[a+160>>2];if((b|0)==(c|0)){a=17}else{d=1;a=0;while(1){if(!H[b+4|0]){d=0;a=a+55|0}b=b+72|0;if((c|0)!=(b|0)){continue}break}a=(d?17:16)+a|0}return a|0}function Kb(a){var b=0;b=G[a+72>>2];G[a+72>>2]=b-1|b;b=G[a>>2];if(b&8){G[a>>2]=b|32;return-1}G[a+4>>2]=0;G[a+8>>2]=0;b=G[a+44>>2];G[a+28>>2]=b;G[a+20>>2]=b;G[a+16>>2]=b+G[a+48>>2];return 0} +function Bc(a){a=a|0;var b=0,c=0,d=0;b=a+164|0;c=G[a+160>>2];if((b|0)!=(c|0)){while(1){if(!H[b+4|0]){E[b+4|0]=1;d=d+1|0}b=b+72|0;if((c|0)!=(b|0)){continue}break}}E[a+7372|0]=1;return d|0}function xd(a,b){a=a|0;b=b|0;var c=0;c=G[9340];b=_[G[G[c>>2]+4>>2]](c,b)|0;c=G[9340];c=_[G[G[c>>2]>>2]](c)|0;b=Ab(G[a+128>>2],b,c)+2|0;a=(b>>>0)/3|0;return((b-M(a,3)|0)+(a<<2)|0)-2|0}function Ta(a){var b=0,c=0;b=G[9342];c=a+7&-8;a=b+c|0;a:{if(a>>>0<=b>>>0?c:0){break a}if(a>>>0>$()<<16>>>0){if(!(W(a|0)|0)){break a}}G[9342]=a;return b}G[9343]=48;return-1}function Bd(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0;f=a+132|0;if(Ga(232)>>>0>e>>>0){G[a+228>>2]=2;return-1}vb(lb(a,oa(bb(d,232),1)),f);return ab(b,c,d,232)|0}function rb(a,b){var c=0,d=0;d=G[a+44>>2]!=(a+48|0)?G[a+112>>2]:0;c=G[a+4>>2];b=_[G[G[c>>2]+4>>2]](c,b)|0;a=G[a+4>>2];return Cb(d,b,_[G[G[a>>2]>>2]](a)|0)}function ae(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;if(c>>>0<43){G[a>>2]=2;return-1}if(e>>>0<=31){G[a>>2]=15;return-1}a=a+4|0;mb(d,a);pa(a,32,b);return 0}function Zb(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;if(c>>>0<43){G[a>>2]=2;return-1}if(e>>>0<=31){G[a>>2]=15;return-1}a=a+4|0;Ia(d,a);pa(a,32,b);return 0}function nd(a,b,c){a=a|0;b=b|0;c=c|0;if(c>>>0<43){G[a>>2]=15;return-1}if((Ra(b,c,b)|0)==-1){G[a>>2]=7;return-1}Ca(a+4|0,b,a+68|0);G[a+100>>2]=1;return 0}function te(a){a=a|0;la(a,36);G[a+32>>2]=0;G[a+24>>2]=0;G[a+28>>2]=0;G[a+16>>2]=0;G[a+20>>2]=0;G[a+8>>2]=0;G[a+12>>2]=0;G[a>>2]=0;G[a+4>>2]=0;return 36}function je(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0;f=a+4|0;if(Ga(68)>>>0>e>>>0){G[a>>2]=2;return-1}Pa(oa(bb(d,68),1),f);return ab(b,c,d,68)|0}function yb(a,b,c){var d=0,e=0;a=xa(a,b,c);a:{if(!a){break a}if(!(!a|(a|0)==(b|0))){E[c+4|0]=H[a|0]!=0;d=a+1|0}if(!d){break a}e=Ma(d,b,c+5|0)}return e}function Xb(a){G[a+8>>2]=0;G[a+4>>2]=1888;G[a>>2]=1872;G[a+492>>2]=a+496;G[a+148>>2]=a+152;G[a+44>>2]=a+48;E[a+3220|0]=0;G[a+3216>>2]=0;return a}function Bb(a){var b=0,c=0,d=0;b=1;if(a>>>0>=128){c=a;while(1){b=b+1|0;d=c>>>0>16383;c=c>>>7|0;if(d){continue}break}}return(a+b|0)+104|0}function Ec(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;if(e>>>0<86){G[a+7516>>2]=2;return-1}e=a;a=d+22|0;eb(e,b,c,a);pa(a,64,d);return 86}function bb(a,b){var c=0,d=0;c=_[G[441]](2804,b)+_[G[440]](2804)|0;d=c+2|0;b=(d>>>0)/3|0;return((((d-M(b,3)|0)+(b<<2)|0)-2|0)+a|0)-c|0}function _d(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;if(e>>>0<86){G[a>>2]=2;return-1}e=a+4|0;a=d+22|0;eb(e,b,c,a);pa(a,64,d);return 86}function qc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=ra(d);if((e|0)==-1){G[a+3216>>2]=7;return-1}va(c,d,c);return Wb(a,b,0,c,e)|0}function Ic(a,b,c){a=a|0;b=b|0;c=c|0;a:{if(c>>>0<=63){G[a+7516>>2]=1;a=-1;break a}mb(b,a);Ia(b+32|0,a+96|0);a=0}la(b,c);return a|0}function oa(a,b){b=b<<24|(b&65280)<<8|(b>>>8&65280|b>>>24);E[a|0]=b;E[a+1|0]=b>>>8;E[a+2|0]=b>>>16;E[a+3|0]=b>>>24;return a+4|0}function ld(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;if(!G[a+100>>2]){G[a>>2]=16;return-1}Da(a+68|0,32,0,0,b,c,d,e);return 0}function ec(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;if(e>>>0<43){G[a>>2]=2;return-1}a=d+11|0;Pb(b,c,a);pa(a,32,d);return 43}function yd(a,b,c){a=a|0;b=b|0;c=c|0;if(c>>>0<=159){G[a+228>>2]=1;return-1}cb(a,b,0);mb(b+128|0,a+132|0);la(b,c);return 0}function mc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=ra(c);if((d|0)==-1){G[a+3216>>2]=7;return-1}va(b,c,b);return Vb(a,0,b,d)|0}function Ga(a){var b=0;b=(_[G[441]](2804,a)+_[G[440]](2804)|0)+2|0;a=(b>>>0)/3|0;return((b-M(a,3)|0)+(a<<2)|0)-2|0}function Wa(a,b,c,d){var e=0,f=0;a:{if(!a){break a}e=b;b=a+d|0;if(e>>>0>>0){break a}ma(c,a,d);f=b}return f}function re(a,b){a=a|0;b=b|0;b=(_[G[441]](G[1416],b)|0)+2|0;a=(b>>>0)/3|0;return((b-M(a,3)|0)+(a<<2)|0)-2|0}function qe(a){a=a|0;var b=0;b=(_[G[440]](G[1416])|0)+2|0;a=(b>>>0)/3|0;return((b-M(a,3)|0)+(a<<2)|0)-2|0}function Rc(a){a=a|0;la(a,7520);G[a+7512>>2]=0;G[a+7516>>2]=0;E[a+7364|0]=0;G[a+160>>2]=a+164;return 7520}function pd(a,b,c){a=a|0;b=b|0;c=c|0;if(c>>>0<=31){G[a>>2]=1;return-1}Ia(b,a+4|0);G[a+100>>2]=0;return 0}function Uc(a){a=a|0;la(a,7520);G[a+7512>>2]=0;G[a+7516>>2]=0;E[a+7364|0]=0;G[a+160>>2]=a+164;return a|0}function vd(a,b,c){a=a|0;b=b|0;c=c|0;if(c>>>0<43){G[a+228>>2]=2;return-1}return Fa(a+132|0,32,b)|0}function Ld(a,b,c){a=a|0;b=b|0;c=c|0;if(c>>>0<43){G[a+300>>2]=2;return-1}return Fa(a+264|0,32,b)|0}function se(a,b,c){a=a|0;b=b|0;c=c|0;if(c>>>0<43){G[a>>2]=15;return-1}va(b,43,a+4|0);return 0}function od(a,b,c){a=a|0;b=b|0;c=c|0;if(c>>>0<43){G[a>>2]=2;return-1}Fa(a+4|0,32,b);return 0}function Zc(a){a=a|0;a=G[a+3216>>2];if(a>>>0<=17){a=G[(a<<2)+2720>>2]}else{a=1191}return a|0}function $c(a){a=a|0;a=G[a+7516>>2];if(a>>>0<=17){a=G[(a<<2)+2720>>2]}else{a=1191}return a|0}function Ud(a){a=a|0;a=G[a+300>>2];if(a>>>0<=17){a=G[(a<<2)+2720>>2]}else{a=1191}return a|0}function Ed(a){a=a|0;a=G[a+228>>2];if(a>>>0<=17){a=G[(a<<2)+2720>>2]}else{a=1191}return a|0}function ic(a,b){a=a|0;b=b|0;b=Ub(a,b)+2|0;a=(b>>>0)/3|0;return((b-M(a,3)|0)+(a<<2)|0)-2|0}function ye(a,b){var c=0,d=0;c=b&31;d=(-1>>>c&a)<>>a}function Za(a){a=a|0;a=G[a>>2];if(a>>>0<=17){a=G[(a<<2)+2720>>2]}else{a=1191}return a|0}function ra(a){if((a&3)!=1){a=a+2|0;a=((a&3)+M(a>>>2|0,3)|0)-2|0}else{a=-1}return a}function bd(a,b,c){a=a|0;b=b|0;c=c|0;if(a){E[a|0]=3}if(b){E[b|0]=2}if(c){E[c|0]=15}}function kb(a,b,c){b=Wa(b,c,a,128);if(!b){return 0}return xa(b,c,a+128|0)}function sc(a){a=a|0;if(H[a+7364|0]>=2){E[a+7364|0]=1;la(a+7440|0,72)}}function he(a,b){a=a|0;b=b|0;a=G[443];return _[a|0](G[1416],ra(b))|0}function Yd(a){a=a|0;return(a>>>0>17?1191:G[(a<<2)+2720>>2])|0}function uc(a){a=a|0;return(H[a+7372|0]|!H[a+7364|0]?17:71)|0}function Ub(a,b){b=rb(a,b);if(!H[a+3220|0]){b=Bb(b)}return b}function ce(a){a=a|0;la(a,100);ta(a,0,100);return 100}function jc(a){a=a|0;return(G[a+44>>2]==(a+48|0))<<5}function ve(a){if(a){return 31-P(a-1^a)|0}return 32}function lb(a,b){return oa(Xa(b,a,128),G[a+128>>2])}function me(a){a=a|0;la(a,68);ta(a,0,68);return 68}function Sc(a){a=a|0;la(a,4);G[a>>2]=0;return a|0}function Qc(a){a=a|0;la(a,3320);Xb(a);return 3320}function wc(a){a=a|0;return(H[a+7364|0]?71:17)|0}function ue(a,b){a=a|0;b=b|0;return(b&-16)+16|0}function Pc(a){a=a|0;la(a,4);G[a>>2]=0;return 4}function Tc(a){a=a|0;la(a,3320);return Xb(a)|0}function cd(a){a=a|0;a=Y-a&-16;Y=a;return a|0}function cb(a,b,c){G[a+128>>2]=c;ma(a,b,128)}function rd(a){a=a|0;la(a,104);return a|0}function qd(a){a=a|0;la(a,104);return 104}function de(a){a=a|0;la(a,100);return a|0}function Wd(a){a=a|0;la(a,304);return a|0}function Vd(a){a=a|0;la(a,304);return 304}function Gd(a){a=a|0;la(a,232);return a|0}function Fd(a){a=a|0;la(a,232);return 232}function zc(a,b){a=a|0;b=b|0;return b<<5}function ne(a){a=a|0;la(a,68);return a|0}function ac(a){a=a|0;la(a,36);return a|0}function _c(a){a=a|0;return G[a+7516>>2]}function Yc(a){a=a|0;return G[a+3216>>2]}function wb(a){a=a|0;return H[a+3220|0]}function md(a){a=a|0;return G[a+100>>2]}function be(a,b){a=a|0;b=b|0;return b|0}function Xa(a,b,c){return ma(a,b,c)+c|0}function Td(a){a=a|0;return G[a+300>>2]}function Qb(a){a=a|0;return G[a+128>>2]}function Oc(a){a=a|0;return Ga(Ob(a))|0}function Nc(a){a=a|0;return Ga(Tb(a))|0}function Kd(a){a=a|0;return G[a+296>>2]}function Dd(a){a=a|0;return G[a+228>>2]}function $b(){G[9382]=37408;G[9364]=42}function Qd(a){a=a|0;return Ga(301)|0}function Cd(a){a=a|0;return Ga(232)|0}function ke(a){a=a|0;return Ga(68)|0}function Ya(a){a=a|0;return G[a>>2]}function Ra(a,b,c){return va(a,b,c)}function Ca(a,b,c){Lb(c,a+32|0,b)}function zd(a){a=a|0;return 160}function ud(a){a=a|0;return 306}function Jd(a){a=a|0;return 220}function Hc(a){a=a|0;return 116}function Ac(a){a=a|0;return 100}function xb(a){a=a|0;return 64}function tb(a){a=a|0;return 32}function Sa(a){a=a|0;return 43}function Fc(a){a=a|0;return 86}function cc(a){a=a|0;return 8}function Xc(){return 7520}function Wc(){return 3320}function sd(){return 104}function ee(){return 100}function ed(){return Y|0}function dd(a){a=a|0;Y=a}function Xd(){return 304}function Hd(){return 232}function sb(){return 32}function oe(){return 68}function bc(){return 36}function _b(){return 43}function $d(){return 86}function ad(){return-1}function Vc(){return 4} +// EMSCRIPTEN_END_FUNCS +e=H;p(q);var _=c([null,cc,ue,le,be,Zd,Fb,Eb,hd]);function $(){return D.byteLength/65536|0}function ea(fa){fa=fa|0;var aa=$()|0;var ba=aa+fa|0;if(aaa.startsWith("data:application/octet-stream;base64,"),na=a=>a.startsWith("file://"),w;w="olm_legacy.wasm";if(!Ia(w)){var Ja=w;w=c.locateFile?c.locateFile(Ja,l):l+Ja} +function Ka(a){if(a==w&&n)return new Uint8Array(n);if(Ia(a)){var b=a.slice(37);if("undefined"!=typeof ia&&ia)b=Buffer.from(b,"base64"),b=new Uint8Array(b.buffer,b.byteOffset,b.length);else{b=atob(b);for(var d=new Uint8Array(b.length),e=0;e{if(!b.ok)throw"failed to load wasm binary file at '"+a+"'";return b.arrayBuffer()}).catch(()=>Ka(a));if(ka)return new Promise((b,d)=>{ka(a,e=>b(new Uint8Array(e)),d)})}return Promise.resolve().then(()=>Ka(a))}function Ma(a,b,d){return La(a).then(()=>sa(b)).then(e=>e).then(d,e=>{oa(`failed to asynchronously prepare wasm: ${e}`);p(e)})} +function Na(a,b){var d=w;return n||"function"!=typeof WebAssembly.instantiateStreaming||Ia(d)||na(d)||ia||"function"!=typeof fetch?Ma(d,a,b):fetch(d,{credentials:"same-origin"}).then(e=>WebAssembly.instantiateStreaming(e,a).then(b,function(g){oa(`wasm streaming compile failed: ${g}`);oa("falling back to ArrayBuffer instantiation");return Ma(d,a,b)}))}var Oa=a=>{for(;0>0];case "i8":return r[a>>0];case "i16":return va[a>>1];case "i32":return wa[a>>2];case "i64":p("to do getValue(i64) use WASM_BIGINT");case "float":return ya[a>>2];case "double":return za[a>>3];case "*":return xa[a>>2];default:p(`invalid type for getValue: ${b}`)}} +function x(a){var b="i8";b.endsWith("*")&&(b="*");switch(b){case "i1":r[a>>0]=0;break;case "i8":r[a>>0]=0;break;case "i16":va[a>>1]=0;break;case "i32":wa[a>>2]=0;break;case "i64":p("to do setValue(i64) use WASM_BIGINT");case "float":ya[a>>2]=0;break;case "double":za[a>>3]=0;break;case "*":xa[a>>2]=0;break;default:p(`invalid type for setValue: ${b}`)}} +var Qa=(a,b,d)=>{for(var e=0;e>0]=a.charCodeAt(e);d||(r[b>>0]=0)},z=a=>{for(var b=0,d=0;d=e?b++:2047>=e?b+=2:55296<=e&&57343>=e?(b+=4,++d):b+=3}return b},A=(a,b,d,e)=>{if(!(0=m){var v=a.charCodeAt(++h);m=65536+((m&1023)<<10)|v&1023}if(127>=m){if(d>=e)break;b[d++]=m}else{if(2047>=m){if(d+1>=e)break;b[d++]=192|m>>6}else{if(65535>=m){if(d+2>=e)break; +b[d++]=224|m>>12}else{if(d+3>=e)break;b[d++]=240|m>>18;b[d++]=128|m>>12&63}b[d++]=128|m>>6&63}b[d++]=128|m&63}}b[d]=0;return d-g};function Ra(a,b,d){d=Array(0{var d=t,e=a+b;for(b=a;d[b]&&!(b>=e);)++b;if(16g?e+=String.fromCharCode(g):(g-=65536,e+=String.fromCharCode(55296|g>>10,56320|g&1023))}}else e+=String.fromCharCode(g)}return e}, +Ta={c:(a,b,d)=>t.copyWithin(a,b,b+d),b:a=>{var b=t.length;a>>>=0;if(2147483648=d;d*=2){var e=b*(1+.2/d);e=Math.min(e,a+100663296);var g=Math;e=Math.max(a,e);a:{g=(g.min.call(g,2147483648,e+(65536-e%65536)%65536)-q.buffer.byteLength+65535)/65536;try{q.grow(g);Aa();var h=1;break a}catch(m){}h=void 0}if(h)return!0}return!1},a:q},C=function(){function a(d){C=d.exports;Da.unshift(C.d);u--;c.monitorRunDependencies&&c.monitorRunDependencies(u);0==u&&(null!==Ga&&(clearInterval(Ga), +Ga=null),Ha&&(d=Ha,Ha=null,d()));return C}var b={a:Ta};u++;c.monitorRunDependencies&&c.monitorRunDependencies(u);if(c.instantiateWasm)try{return c.instantiateWasm(b,a)}catch(d){oa(`Module.instantiateWasm callback failed with error: ${d}`),ba(d)}Na(b,function(d){a(d.instance)}).catch(ba);return{}}();c._olm_get_library_version=(a,b,d)=>(c._olm_get_library_version=C.f)(a,b,d);c._olm_error=()=>(c._olm_error=C.g)();c._olm_account_last_error=a=>(c._olm_account_last_error=C.h)(a); +c.__olm_error_to_string=a=>(c.__olm_error_to_string=C.i)(a);c._olm_account_last_error_code=a=>(c._olm_account_last_error_code=C.j)(a);c._olm_session_last_error=a=>(c._olm_session_last_error=C.k)(a);c._olm_session_last_error_code=a=>(c._olm_session_last_error_code=C.l)(a);c._olm_utility_last_error=a=>(c._olm_utility_last_error=C.m)(a);c._olm_utility_last_error_code=a=>(c._olm_utility_last_error_code=C.n)(a);c._olm_account_size=()=>(c._olm_account_size=C.o)(); +c._olm_session_size=()=>(c._olm_session_size=C.p)();c._olm_utility_size=()=>(c._olm_utility_size=C.q)();c._olm_account=a=>(c._olm_account=C.r)(a);c._olm_session=a=>(c._olm_session=C.s)(a);c._olm_utility=a=>(c._olm_utility=C.t)(a);c._olm_clear_account=a=>(c._olm_clear_account=C.u)(a);c._olm_clear_session=a=>(c._olm_clear_session=C.v)(a);c._olm_clear_utility=a=>(c._olm_clear_utility=C.w)(a);c._olm_pickle_account_length=a=>(c._olm_pickle_account_length=C.x)(a); +c._olm_pickle_session_length=a=>(c._olm_pickle_session_length=C.y)(a);c._olm_pickle_account=(a,b,d,e,g)=>(c._olm_pickle_account=C.z)(a,b,d,e,g);c._olm_pickle_session=(a,b,d,e,g)=>(c._olm_pickle_session=C.A)(a,b,d,e,g);c._olm_unpickle_account=(a,b,d,e,g)=>(c._olm_unpickle_account=C.B)(a,b,d,e,g);c._olm_unpickle_session=(a,b,d,e,g)=>(c._olm_unpickle_session=C.C)(a,b,d,e,g);c._olm_create_account_random_length=a=>(c._olm_create_account_random_length=C.D)(a); +c._olm_create_account=(a,b,d)=>(c._olm_create_account=C.E)(a,b,d);c._olm_account_identity_keys_length=a=>(c._olm_account_identity_keys_length=C.F)(a);c._olm_account_identity_keys=(a,b,d)=>(c._olm_account_identity_keys=C.G)(a,b,d);c._olm_account_signature_length=a=>(c._olm_account_signature_length=C.H)(a);c._olm_account_sign=(a,b,d,e,g)=>(c._olm_account_sign=C.I)(a,b,d,e,g);c._olm_account_one_time_keys_length=a=>(c._olm_account_one_time_keys_length=C.J)(a); +c._olm_account_one_time_keys=(a,b,d)=>(c._olm_account_one_time_keys=C.K)(a,b,d);c._olm_account_mark_keys_as_published=a=>(c._olm_account_mark_keys_as_published=C.L)(a);c._olm_account_max_number_of_one_time_keys=a=>(c._olm_account_max_number_of_one_time_keys=C.M)(a);c._olm_account_generate_one_time_keys_random_length=(a,b)=>(c._olm_account_generate_one_time_keys_random_length=C.N)(a,b);c._olm_account_generate_one_time_keys=(a,b,d,e)=>(c._olm_account_generate_one_time_keys=C.O)(a,b,d,e); +c._olm_account_generate_fallback_key_random_length=a=>(c._olm_account_generate_fallback_key_random_length=C.P)(a);c._olm_account_generate_fallback_key=(a,b,d)=>(c._olm_account_generate_fallback_key=C.Q)(a,b,d);c._olm_account_fallback_key_length=a=>(c._olm_account_fallback_key_length=C.R)(a);c._olm_account_fallback_key=(a,b,d)=>(c._olm_account_fallback_key=C.S)(a,b,d);c._olm_account_unpublished_fallback_key_length=a=>(c._olm_account_unpublished_fallback_key_length=C.T)(a); +c._olm_account_unpublished_fallback_key=(a,b,d)=>(c._olm_account_unpublished_fallback_key=C.U)(a,b,d);c._olm_account_forget_old_fallback_key=a=>(c._olm_account_forget_old_fallback_key=C.V)(a);c._olm_create_outbound_session_random_length=a=>(c._olm_create_outbound_session_random_length=C.W)(a);c._olm_create_outbound_session=(a,b,d,e,g,h,m,v)=>(c._olm_create_outbound_session=C.X)(a,b,d,e,g,h,m,v);c._olm_create_inbound_session=(a,b,d,e)=>(c._olm_create_inbound_session=C.Y)(a,b,d,e); +c._olm_create_inbound_session_from=(a,b,d,e,g,h)=>(c._olm_create_inbound_session_from=C.Z)(a,b,d,e,g,h);c._olm_session_id_length=a=>(c._olm_session_id_length=C._)(a);c._olm_session_id=(a,b,d)=>(c._olm_session_id=C.$)(a,b,d);c._olm_session_has_received_message=a=>(c._olm_session_has_received_message=C.aa)(a);c._olm_session_describe=(a,b,d)=>(c._olm_session_describe=C.ba)(a,b,d);c._olm_matches_inbound_session=(a,b,d)=>(c._olm_matches_inbound_session=C.ca)(a,b,d); +c._olm_matches_inbound_session_from=(a,b,d,e,g)=>(c._olm_matches_inbound_session_from=C.da)(a,b,d,e,g);c._olm_remove_one_time_keys=(a,b)=>(c._olm_remove_one_time_keys=C.ea)(a,b);c._olm_encrypt_message_type=a=>(c._olm_encrypt_message_type=C.fa)(a);c._olm_encrypt_random_length=a=>(c._olm_encrypt_random_length=C.ga)(a);c._olm_encrypt_message_length=(a,b)=>(c._olm_encrypt_message_length=C.ha)(a,b);c._olm_encrypt=(a,b,d,e,g,h,m)=>(c._olm_encrypt=C.ia)(a,b,d,e,g,h,m); +c._olm_decrypt_max_plaintext_length=(a,b,d,e)=>(c._olm_decrypt_max_plaintext_length=C.ja)(a,b,d,e);c._olm_decrypt=(a,b,d,e,g,h)=>(c._olm_decrypt=C.ka)(a,b,d,e,g,h);c._olm_sha256_length=a=>(c._olm_sha256_length=C.la)(a);c._olm_sha256=(a,b,d,e,g)=>(c._olm_sha256=C.ma)(a,b,d,e,g);c._olm_ed25519_verify=(a,b,d,e,g,h,m)=>(c._olm_ed25519_verify=C.na)(a,b,d,e,g,h,m);c._olm_pk_encryption_last_error=a=>(c._olm_pk_encryption_last_error=C.oa)(a); +c._olm_pk_encryption_last_error_code=a=>(c._olm_pk_encryption_last_error_code=C.pa)(a);c._olm_pk_encryption_size=()=>(c._olm_pk_encryption_size=C.qa)();c._olm_pk_encryption=a=>(c._olm_pk_encryption=C.ra)(a);c._olm_clear_pk_encryption=a=>(c._olm_clear_pk_encryption=C.sa)(a);c._olm_pk_encryption_set_recipient_key=(a,b,d)=>(c._olm_pk_encryption_set_recipient_key=C.ta)(a,b,d);c._olm_pk_key_length=()=>(c._olm_pk_key_length=C.ua)(); +c._olm_pk_ciphertext_length=(a,b)=>(c._olm_pk_ciphertext_length=C.va)(a,b);c._olm_pk_mac_length=a=>(c._olm_pk_mac_length=C.wa)(a);c._olm_pk_encrypt_random_length=a=>(c._olm_pk_encrypt_random_length=C.xa)(a);c._olm_pk_encrypt=(a,b,d,e,g,h,m,v,J,L,y)=>(c._olm_pk_encrypt=C.ya)(a,b,d,e,g,h,m,v,J,L,y);c._olm_pk_decryption_last_error=a=>(c._olm_pk_decryption_last_error=C.za)(a);c._olm_pk_decryption_last_error_code=a=>(c._olm_pk_decryption_last_error_code=C.Aa)(a); +c._olm_pk_decryption_size=()=>(c._olm_pk_decryption_size=C.Ba)();c._olm_pk_decryption=a=>(c._olm_pk_decryption=C.Ca)(a);c._olm_clear_pk_decryption=a=>(c._olm_clear_pk_decryption=C.Da)(a);c._olm_pk_private_key_length=()=>(c._olm_pk_private_key_length=C.Ea)();c._olm_pk_generate_key_random_length=()=>(c._olm_pk_generate_key_random_length=C.Fa)();c._olm_pk_key_from_private=(a,b,d,e,g)=>(c._olm_pk_key_from_private=C.Ga)(a,b,d,e,g); +c._olm_pk_generate_key=(a,b,d,e,g)=>(c._olm_pk_generate_key=C.Ha)(a,b,d,e,g);c._olm_pickle_pk_decryption_length=a=>(c._olm_pickle_pk_decryption_length=C.Ia)(a);c._olm_pickle_pk_decryption=(a,b,d,e,g)=>(c._olm_pickle_pk_decryption=C.Ja)(a,b,d,e,g);c._olm_unpickle_pk_decryption=(a,b,d,e,g,h,m)=>(c._olm_unpickle_pk_decryption=C.Ka)(a,b,d,e,g,h,m);c._olm_pk_max_plaintext_length=(a,b)=>(c._olm_pk_max_plaintext_length=C.La)(a,b); +c._olm_pk_decrypt=(a,b,d,e,g,h,m,v,J)=>(c._olm_pk_decrypt=C.Ma)(a,b,d,e,g,h,m,v,J);c._olm_pk_get_private_key=(a,b,d)=>(c._olm_pk_get_private_key=C.Na)(a,b,d);c._olm_pk_signing_size=()=>(c._olm_pk_signing_size=C.Oa)();c._olm_pk_signing=a=>(c._olm_pk_signing=C.Pa)(a);c._olm_pk_signing_last_error=a=>(c._olm_pk_signing_last_error=C.Qa)(a);c._olm_pk_signing_last_error_code=a=>(c._olm_pk_signing_last_error_code=C.Ra)(a);c._olm_clear_pk_signing=a=>(c._olm_clear_pk_signing=C.Sa)(a); +c._olm_pk_signing_seed_length=()=>(c._olm_pk_signing_seed_length=C.Ta)();c._olm_pk_signing_public_key_length=()=>(c._olm_pk_signing_public_key_length=C.Ua)();c._olm_pk_signing_key_from_seed=(a,b,d,e,g)=>(c._olm_pk_signing_key_from_seed=C.Va)(a,b,d,e,g);c._olm_pk_signature_length=()=>(c._olm_pk_signature_length=C.Wa)();c._olm_pk_sign=(a,b,d,e,g)=>(c._olm_pk_sign=C.Xa)(a,b,d,e,g);c._olm_inbound_group_session_size=()=>(c._olm_inbound_group_session_size=C.Ya)(); +c._olm_inbound_group_session=a=>(c._olm_inbound_group_session=C.Za)(a);c._olm_clear_inbound_group_session=a=>(c._olm_clear_inbound_group_session=C._a)(a);c._olm_inbound_group_session_last_error=a=>(c._olm_inbound_group_session_last_error=C.$a)(a);c._olm_inbound_group_session_last_error_code=a=>(c._olm_inbound_group_session_last_error_code=C.ab)(a);c._olm_init_inbound_group_session=(a,b,d)=>(c._olm_init_inbound_group_session=C.bb)(a,b,d); +c._olm_import_inbound_group_session=(a,b,d)=>(c._olm_import_inbound_group_session=C.cb)(a,b,d);c._olm_pickle_inbound_group_session_length=a=>(c._olm_pickle_inbound_group_session_length=C.db)(a);c._olm_pickle_inbound_group_session=(a,b,d,e,g)=>(c._olm_pickle_inbound_group_session=C.eb)(a,b,d,e,g);c._olm_unpickle_inbound_group_session=(a,b,d,e,g)=>(c._olm_unpickle_inbound_group_session=C.fb)(a,b,d,e,g); +c._olm_group_decrypt_max_plaintext_length=(a,b,d)=>(c._olm_group_decrypt_max_plaintext_length=C.gb)(a,b,d);c._olm_group_decrypt=(a,b,d,e,g,h)=>(c._olm_group_decrypt=C.hb)(a,b,d,e,g,h);c._olm_inbound_group_session_id_length=a=>(c._olm_inbound_group_session_id_length=C.ib)(a);c._olm_inbound_group_session_id=(a,b,d)=>(c._olm_inbound_group_session_id=C.jb)(a,b,d);c._olm_inbound_group_session_first_known_index=a=>(c._olm_inbound_group_session_first_known_index=C.kb)(a); +c._olm_inbound_group_session_is_verified=a=>(c._olm_inbound_group_session_is_verified=C.lb)(a);c._olm_export_inbound_group_session_length=a=>(c._olm_export_inbound_group_session_length=C.mb)(a);c._olm_export_inbound_group_session=(a,b,d,e)=>(c._olm_export_inbound_group_session=C.nb)(a,b,d,e);c._olm_outbound_group_session_size=()=>(c._olm_outbound_group_session_size=C.ob)();c._olm_outbound_group_session=a=>(c._olm_outbound_group_session=C.pb)(a); +c._olm_clear_outbound_group_session=a=>(c._olm_clear_outbound_group_session=C.qb)(a);c._olm_outbound_group_session_last_error=a=>(c._olm_outbound_group_session_last_error=C.rb)(a);c._olm_outbound_group_session_last_error_code=a=>(c._olm_outbound_group_session_last_error_code=C.sb)(a);c._olm_pickle_outbound_group_session_length=a=>(c._olm_pickle_outbound_group_session_length=C.tb)(a);c._olm_pickle_outbound_group_session=(a,b,d,e,g)=>(c._olm_pickle_outbound_group_session=C.ub)(a,b,d,e,g); +c._olm_unpickle_outbound_group_session=(a,b,d,e,g)=>(c._olm_unpickle_outbound_group_session=C.vb)(a,b,d,e,g);c._olm_init_outbound_group_session_random_length=a=>(c._olm_init_outbound_group_session_random_length=C.wb)(a);c._olm_init_outbound_group_session=(a,b,d)=>(c._olm_init_outbound_group_session=C.xb)(a,b,d);c._olm_group_encrypt_message_length=(a,b)=>(c._olm_group_encrypt_message_length=C.yb)(a,b);c._olm_group_encrypt=(a,b,d,e,g)=>(c._olm_group_encrypt=C.zb)(a,b,d,e,g); +c._olm_outbound_group_session_id_length=a=>(c._olm_outbound_group_session_id_length=C.Ab)(a);c._olm_outbound_group_session_id=(a,b,d)=>(c._olm_outbound_group_session_id=C.Bb)(a,b,d);c._olm_outbound_group_session_message_index=a=>(c._olm_outbound_group_session_message_index=C.Cb)(a);c._olm_outbound_group_session_key_length=a=>(c._olm_outbound_group_session_key_length=C.Db)(a);c._olm_outbound_group_session_key=(a,b,d)=>(c._olm_outbound_group_session_key=C.Eb)(a,b,d); +c._olm_sas_last_error=a=>(c._olm_sas_last_error=C.Fb)(a);c._olm_sas_last_error_code=a=>(c._olm_sas_last_error_code=C.Gb)(a);c._olm_sas_size=()=>(c._olm_sas_size=C.Hb)();c._olm_sas=a=>(c._olm_sas=C.Ib)(a);c._olm_clear_sas=a=>(c._olm_clear_sas=C.Jb)(a);c._olm_create_sas_random_length=a=>(c._olm_create_sas_random_length=C.Kb)(a);c._olm_create_sas=(a,b,d)=>(c._olm_create_sas=C.Lb)(a,b,d);c._olm_sas_pubkey_length=a=>(c._olm_sas_pubkey_length=C.Mb)(a); +c._olm_sas_get_pubkey=(a,b,d)=>(c._olm_sas_get_pubkey=C.Nb)(a,b,d);c._olm_sas_set_their_key=(a,b,d)=>(c._olm_sas_set_their_key=C.Ob)(a,b,d);c._olm_sas_is_their_key_set=a=>(c._olm_sas_is_their_key_set=C.Pb)(a);c._olm_sas_generate_bytes=(a,b,d,e,g)=>(c._olm_sas_generate_bytes=C.Qb)(a,b,d,e,g);c._olm_sas_mac_length=a=>(c._olm_sas_mac_length=C.Rb)(a);c._olm_sas_calculate_mac_fixed_base64=(a,b,d,e,g,h,m)=>(c._olm_sas_calculate_mac_fixed_base64=C.Sb)(a,b,d,e,g,h,m); +c._olm_sas_calculate_mac=(a,b,d,e,g,h,m)=>(c._olm_sas_calculate_mac=C.Tb)(a,b,d,e,g,h,m);c._olm_sas_calculate_mac_long_kdf=(a,b,d,e,g,h,m)=>(c._olm_sas_calculate_mac_long_kdf=C.Ub)(a,b,d,e,g,h,m);c._malloc=a=>(c._malloc=C.Vb)(a);c._free=a=>(c._free=C.Wb)(a);var Ua=()=>(Ua=C.Xb)(),Va=a=>(Va=C.Yb)(a),Wa=a=>(Wa=C.Zb)(a);c.UTF8ToString=(a,b)=>a?B(a,b):"";c.stringToUTF8=(a,b,d)=>A(a,t,b,d);c.intArrayFromString=Ra;c.ALLOC_STACK=1;c.writeAsciiToMemory=Qa;var Xa;Ha=function Ya(){Xa||Za();Xa||(Ha=Ya)}; +function Za(){function a(){if(!Xa&&(Xa=!0,c.calledRun=!0,!ua)){Oa(Da);aa(c);if(c.onRuntimeInitialized)c.onRuntimeInitialized();if(c.postRun)for("function"==typeof c.postRun&&(c.postRun=[c.postRun]);c.postRun.length;){var b=c.postRun.shift();Ea.unshift(b)}Oa(Ea)}}if(!(0 Module); +var olmInitPromise; + +olm_exports['init'] = function(opts) { + if (olmInitPromise) return olmInitPromise; + + if (opts) OLM_OPTIONS = opts; + + olmInitPromise = new Promise(function(resolve, reject) { + onInitSuccess = function() { + resolve(); + }; + onInitFail = function(err) { + reject(err); + }; + Module(); + }); + return olmInitPromise; +}; + +return olm_exports; + +})(); + +if (typeof(window) !== 'undefined') { + // We've been imported directly into a browser. Define the global 'Olm' object. + // (we do this even if module.exports was defined, because it's useful to have + // Olm in the global scope for browserified and webpacked apps.) + window["Olm"] = Olm; +} + +if (typeof module === 'object') { + // Emscripten sets the module exports to be its module + // with wrapped c functions. Clobber it with our higher + // level wrapper class. + module.exports = Olm; +} + +// @license-end From 8fc369da00bf63af3cdc886dd8f3a530efac6691 Mon Sep 17 00:00:00 2001 From: td Date: Wed, 31 Jan 2024 19:46:07 +0100 Subject: [PATCH 15/29] chore: gitignore --- web/Imaging.js | 202 ---------------------------------------------- web/Imaging.wasm | Bin 68967 -> 0 bytes web/olm.js | 145 --------------------------------- web/olm.wasm | Bin 149747 -> 0 bytes web/olm_legacy.js | 158 ------------------------------------ 5 files changed, 505 deletions(-) delete mode 100644 web/Imaging.js delete mode 100755 web/Imaging.wasm delete mode 100644 web/olm.js delete mode 100755 web/olm.wasm delete mode 100644 web/olm_legacy.js diff --git a/web/Imaging.js b/web/Imaging.js deleted file mode 100644 index 54e7a0fc2f..0000000000 --- a/web/Imaging.js +++ /dev/null @@ -1,202 +0,0 @@ -var Imaging = (function() { - -var Module = (() => { - var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined; - if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename; - return ( -function(moduleArg = {}) { - -var b=moduleArg,f,k;b.ready=new Promise((a,c)=>{f=a;k=c});var l=Object.assign({},b),n="object"==typeof window,p="function"==typeof importScripts,q="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,r="",t,u,x; -if(q){var fs=require("fs"),y=require("path");r=p?y.dirname(r)+"/":__dirname+"/";t=(a,c)=>{a=a.startsWith("file://")?new URL(a):y.normalize(a);return fs.readFileSync(a,c?void 0:"utf8")};x=a=>{a=t(a,!0);a.buffer||(a=new Uint8Array(a));return a};u=(a,c,d,e=!0)=>{a=a.startsWith("file://")?new URL(a):y.normalize(a);fs.readFile(a,e?void 0:"utf8",(g,h)=>{g?d(g):c(e?h.buffer:h)})};process.argv.slice(2);b.inspect=()=>"[Emscripten Module object]"}else if(n||p)p?r=self.location.href:"undefined"!=typeof document&& -document.currentScript&&(r=document.currentScript.src),_scriptDir&&(r=_scriptDir),0!==r.indexOf("blob:")?r=r.substr(0,r.replace(/[?#].*/,"").lastIndexOf("/")+1):r="",t=a=>{var c=new XMLHttpRequest;c.open("GET",a,!1);c.send(null);return c.responseText},p&&(x=a=>{var c=new XMLHttpRequest;c.open("GET",a,!1);c.responseType="arraybuffer";c.send(null);return new Uint8Array(c.response)}),u=(a,c,d)=>{var e=new XMLHttpRequest;e.open("GET",a,!0);e.responseType="arraybuffer";e.onload=()=>{200==e.status||0== -e.status&&e.response?c(e.response):d()};e.onerror=d;e.send(null)};var aa=b.print||console.log.bind(console),z=b.printErr||console.error.bind(console);Object.assign(b,l);l=null;var A;b.wasmBinary&&(A=b.wasmBinary);var noExitRuntime=b.noExitRuntime||!0;"object"!=typeof WebAssembly&&B("no native wasm support detected");var D,E=!1,F,G; -function H(){var a=D.buffer;b.HEAP8=new Int8Array(a);b.HEAP16=new Int16Array(a);b.HEAPU8=F=new Uint8Array(a);b.HEAPU16=new Uint16Array(a);b.HEAP32=new Int32Array(a);b.HEAPU32=G=new Uint32Array(a);b.HEAPF32=new Float32Array(a);b.HEAPF64=new Float64Array(a)}var J=[],K=[],L=[];function ba(){var a=b.preRun.shift();J.unshift(a)}var M=0,N=null,O=null; -function B(a){if(b.onAbort)b.onAbort(a);a="Aborted("+a+")";z(a);E=!0;a=new WebAssembly.RuntimeError(a+". Build with -sASSERTIONS for more info.");k(a);throw a;}function P(a){return a.startsWith("data:application/octet-stream;base64,")}var Q;Q="Imaging.wasm";if(!P(Q)){var R=Q;Q=b.locateFile?b.locateFile(R,r):r+R}function S(a){if(a==Q&&A)return new Uint8Array(A);if(x)return x(a);throw"both async and sync fetching of the wasm failed";} -function ca(a){if(!A&&(n||p)){if("function"==typeof fetch&&!a.startsWith("file://"))return fetch(a,{credentials:"same-origin"}).then(c=>{if(!c.ok)throw"failed to load wasm binary file at '"+a+"'";return c.arrayBuffer()}).catch(()=>S(a));if(u)return new Promise((c,d)=>{u(a,e=>c(new Uint8Array(e)),d)})}return Promise.resolve().then(()=>S(a))}function T(a,c,d){return ca(a).then(e=>WebAssembly.instantiate(e,c)).then(e=>e).then(d,e=>{z(`failed to asynchronously prepare wasm: ${e}`);B(e)})} -function da(a,c){var d=Q;return A||"function"!=typeof WebAssembly.instantiateStreaming||P(d)||d.startsWith("file://")||q||"function"!=typeof fetch?T(d,a,c):fetch(d,{credentials:"same-origin"}).then(e=>WebAssembly.instantiateStreaming(e,a).then(c,function(g){z(`wasm streaming compile failed: ${g}`);z("falling back to ArrayBuffer instantiation");return T(d,a,c)}))} -var U=a=>{for(;0{var e=c+d;for(d=c;a[d]&&!(d>=e);)++d;if(16g?e+=String.fromCharCode(g):(g-=65536,e+=String.fromCharCode(55296|g>>10,56320|g&1023))}}else e+= -String.fromCharCode(g)}return e},ea=[null,[],[]],fa={e:(a,c,d)=>F.copyWithin(a,c,c+d),c:a=>{var c=F.length;a>>>=0;if(2147483648=d;d*=2){var e=c*(1+.2/d);e=Math.min(e,a+100663296);var g=Math;e=Math.max(a,e);a:{g=(g.min.call(g,2147483648,e+(65536-e%65536)%65536)-D.buffer.byteLength+65535)/65536;try{D.grow(g);H();var h=1;break a}catch(m){}h=void 0}if(h)return!0}return!1},d:()=>52,b:function(){return 70},a:(a,c,d,e)=>{for(var g=0,h=0;h>2],C=G[c+4>>2];c+=8;for(var v= -0;v>2]=g;return 0}},X=function(){function a(d){X=d.exports;D=X.f;H();K.unshift(X.g);M--;b.monitorRunDependencies&&b.monitorRunDependencies(M);0==M&&(null!==N&&(clearInterval(N),N=null),O&&(d=O,O=null,d()));return X}var c={a:fa};M++;b.monitorRunDependencies&&b.monitorRunDependencies(M);if(b.instantiateWasm)try{return b.instantiateWasm(c,a)}catch(d){z(`Module.instantiateWasm callback failed with error: ${d}`), -k(d)}da(c,function(d){a(d.instance)}).catch(k);return{}}();b._ImagingBlend=(a,c,d)=>(b._ImagingBlend=X.h)(a,c,d);b._ImagingBoxBlur=(a,c,d,e)=>(b._ImagingBoxBlur=X.i)(a,c,d,e);b._ImagingGaussianBlur=(a,c,d,e)=>(b._ImagingGaussianBlur=X.j)(a,c,d,e);b._ImagingCopy=a=>(b._ImagingCopy=X.k)(a);b._ImagingCopy2=(a,c)=>(b._ImagingCopy2=X.l)(a,c);b._ImagingSectionEnter=a=>(b._ImagingSectionEnter=X.m)(a);b._ImagingSectionLeave=a=>(b._ImagingSectionLeave=X.n)(a); -b._imageFromRGBA=(a,c,d)=>(b._imageFromRGBA=X.o)(a,c,d);b._imageMode=a=>(b._imageMode=X.p)(a);b._imageWidth=a=>(b._imageWidth=X.q)(a);b._imageHeight=a=>(b._imageHeight=X.r)(a);b._imageLinesize=a=>(b._imageLinesize=X.s)(a);b._imageBlock=a=>(b._imageBlock=X.t)(a);b._blurHashForImage=(a,c,d)=>(b._blurHashForImage=X.u)(a,c,d);b._ImagingFlipLeftRight=(a,c)=>(b._ImagingFlipLeftRight=X.v)(a,c);b._ImagingFlipTopBottom=(a,c)=>(b._ImagingFlipTopBottom=X.w)(a,c); -b._ImagingRotate90=(a,c)=>(b._ImagingRotate90=X.x)(a,c);b._ImagingTranspose=(a,c)=>(b._ImagingTranspose=X.y)(a,c);b._ImagingTransverse=(a,c)=>(b._ImagingTransverse=X.z)(a,c);b._ImagingRotate180=(a,c)=>(b._ImagingRotate180=X.A)(a,c);b._ImagingRotate270=(a,c)=>(b._ImagingRotate270=X.B)(a,c);b._ImagingTransform=(a,c,d,e,g,h,m,C,v,w)=>(b._ImagingTransform=X.C)(a,c,d,e,g,h,m,C,v,w);b._ImagingPaletteNew=a=>(b._ImagingPaletteNew=X.D)(a);b._ImagingPaletteNewBrowser=()=>(b._ImagingPaletteNewBrowser=X.E)(); -b._ImagingPaletteDuplicate=a=>(b._ImagingPaletteDuplicate=X.F)(a);b._ImagingPaletteDelete=a=>(b._ImagingPaletteDelete=X.G)(a);b._ImagingPaletteCacheUpdate=(a,c,d,e)=>(b._ImagingPaletteCacheUpdate=X.H)(a,c,d,e);b._ImagingPaletteCachePrepare=a=>(b._ImagingPaletteCachePrepare=X.I)(a);b._ImagingPaletteCacheDelete=a=>(b._ImagingPaletteCacheDelete=X.J)(a);b._ImagingResample=(a,c,d,e,g)=>(b._ImagingResample=X.K)(a,c,d,e,g); -b._ImagingNewPrologueSubtype=(a,c,d,e)=>(b._ImagingNewPrologueSubtype=X.L)(a,c,d,e);b._ImagingNewPrologue=(a,c,d)=>(b._ImagingNewPrologue=X.M)(a,c,d);b._ImagingDelete=a=>(b._ImagingDelete=X.N)(a);b._ImagingMemorySetBlocksMax=(a,c)=>(b._ImagingMemorySetBlocksMax=X.O)(a,c);b._ImagingMemoryClearCache=(a,c)=>(b._ImagingMemoryClearCache=X.P)(a,c);b._ImagingNew=(a,c,d)=>(b._ImagingNew=X.Q)(a,c,d);b._ImagingNewDirty=(a,c,d)=>(b._ImagingNewDirty=X.R)(a,c,d); -b._ImagingNewBlock=(a,c,d)=>(b._ImagingNewBlock=X.S)(a,c,d);b._ImagingNew2Dirty=(a,c,d)=>(b._ImagingNew2Dirty=X.T)(a,c,d);b._ImagingCopyPalette=(a,c)=>(b._ImagingCopyPalette=X.U)(a,c);b._malloc=a=>(b._malloc=X.V)(a);var Y=()=>(Y=X.W)(),ha=a=>(ha=X.X)(a),ia=a=>(ia=X.Y)(a);b.stackAlloc=ia;b.stackSave=Y;b.stackRestore=ha;b.UTF8ToString=(a,c)=>a?W(F,a,c):"";var Z;O=function ja(){Z||ka();Z||(O=ja)}; -function ka(){function a(){if(!Z&&(Z=!0,b.calledRun=!0,!E)){U(K);f(b);if(b.onRuntimeInitialized)b.onRuntimeInitialized();if(b.postRun)for("function"==typeof b.postRun&&(b.postRun=[b.postRun]);b.postRun.length;){var c=b.postRun.shift();L.unshift(c)}U(L)}}if(!(0 Module); -async function single_init() { -var m = await Module(); - -// Copyright (c) 2020 Famedly GmbH -// SPDX-License-Identifier: AGPL-3.0-or-later - -this.Image = class Image { - constructor(inst) { - this._inst = inst; - } - - static fromRGBA(width, height, data) { - const mem = m._malloc(width * height * 4); - new Uint8ClampedArray(m.HEAPU8.buffer, mem, width * height * 4).set(data); - return new Image(m._imageFromRGBA(width, height, mem)); - } - - free() { - m._ImagingDelete(this._inst); - this._inst = null; - } - - get _mode() { - return m._imageMode(this._inst); - } - - get mode() { - return m.UTF8ToString(this._mode); - } - - get width() { - return m._imageWidth(this._inst); - } - - get height() { - return m._imageHeight(this._inst); - } - - get linesize() { - return m._imageLinesize(this._inst); - } - - get block() { - return new Uint8ClampedArray(m.HEAPU8.buffer, m._imageBlock(this._inst), this.height * this.linesize); - } - - copy() { - return new Image(m._ImagingCopy(this._inst)); - } - - blend(other, alpha) { - return new Image(m._ImagingBlend(this._inst, other._inst, alpha)); - } - - gaussianBlur(radius, passes) { - const out = m._ImagingNewDirty(this._mode, this.width, this.height); - m._ImagingGaussianBlur(out, this._inst, radius, passes); - return new Image(out); - } - - rotate90() { - const out = m._ImagingNewDirty(this._mode, this.height, this.width); - m._ImagingRotate90(out, this._inst); - return new Image(out); - } - - rotate180() { - const out = m._ImagingNewDirty(this._mode, this.width, this.height); - m._ImagingRotate180(out, this._inst); - return new Image(out); - } - - rotate270() { - const out = m._ImagingNewDirty(this._mode, this.height, this.width); - m._ImagingRotate270(out, this._inst); - return new Image(out); - } - - flipLeftRight() { - const out = m._ImagingNewDirty(this._mode, this.width, this.height); - m._ImagingFlipLeftRight(out, this._inst); - return new Image(out); - } - - flipTopBottom() { - const out = m._ImagingNewDirty(this._mode, this.width, this.height); - m._ImagingFlipTopBottom(out, this._inst); - return new Image(out); - } - - transpose() { - const out = m._ImagingNewDirty(this._mode, this.height, this.width); - m._ImagingTranspose(out, this._inst); - return new Image(out); - } - - transverse() { - const out = m._ImagingNewDirty(this._mode, this.height, this.width); - m._ImagingTransverse(out, this._inst); - return new Image(out); - } - - resample(width, height, mode) { - const modeidx = ["nearest", "lanczos", "bilinear", "bicubic", "box", "hamming"].indexOf(mode.toString().split(".").slice(-1)[0]); - const sp = m.stackSave(); - try { - const box = m.stackAlloc(4 * 4); - m.HEAPF32.set([0, 0, this.width, this.height], box / 4); - return new Image(m._ImagingResample(this._inst, width, height, modeidx, box)); - } finally { - m.stackRestore(sp); - } - } - - toBlurhash(xComponents, yComponents) { - return m.UTF8ToString(m._blurHashForImage(this._inst, xComponents, yComponents)); - } - - static async loadEncodedPromise(bytes) { - var url = URL.createObjectURL(new Blob([bytes])); - try { - var img = new window.Image(); - await new Promise(function(resolve, reject) { - img.onload = resolve; - img.onerror = reject; - img.src = url; - }); - var canvas = document.createElement("canvas"); - canvas.width = img.naturalWidth; - canvas.height = img.naturalHeight; - var ctx = canvas.getContext("2d"); - ctx.drawImage(img, 0, 0); - var data = ctx.getImageData(0, 0, canvas.width, canvas.height); - return Image(data.width, data.height, data.data); - } finally { - URL.revokeObjectURL(url); - } - } - - async toJpegPromise(quality) { - const c = document.createElement("canvas"); - c.width = this.width; - c.height = this.height; - const im = new ImageData(this.block, c.width, c.height); - const ctx = c.getContext("2d"); - ctx.putImageData(im, 0, 0); - const blob = await new Promise(function(resolve, reject) { - c.toBlob(resolve, "image/jpeg", {quality: quality / 100}); - }); - const arraybuf = await blob.arrayBuffer(); - return new Uint8Array(arraybuf); - } -} - -} - -var prom; - -return {init() { - if (!prom) prom = single_init.call(this); - return prom; -}}; - -})(); diff --git a/web/Imaging.wasm b/web/Imaging.wasm deleted file mode 100755 index 856e2ad6f8d174fedfe91d5e41394074a0ec439d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68967 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 { - var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined; - if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename; - return ( -function(moduleArg = {}) { - -var b=moduleArg,aa,ba;b.ready=new Promise((a,c)=>{aa=a;ba=c});var f;if("undefined"!==typeof window)f=function(a){window.crypto.getRandomValues(a)};else if(module.exports){var ca=require("crypto");f=function(a){var c=ca.randomBytes(a.length);a.set(c)}}else throw Error("Cannot find global to attach library to");if("undefined"!==typeof OLM_OPTIONS)for(var da in OLM_OPTIONS)OLM_OPTIONS.hasOwnProperty(da)&&(b[da]=OLM_OPTIONS[da]); -b.onRuntimeInitialized=function(){k=b._olm_error();olm_exports.PRIVATE_KEY_LENGTH=b._olm_pk_private_key_length();onInitSuccess&&onInitSuccess()};b.onAbort=function(a){onInitFail&&onInitFail(a)};var ea=Object.assign({},b),fa="object"==typeof window,l="function"==typeof importScripts,ha="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,n="",ia,ja,ka; -if(ha){var fs=require("fs"),la=require("path");n=l?la.dirname(n)+"/":__dirname+"/";ia=(a,c)=>{a=ma(a)?new URL(a):la.normalize(a);return fs.readFileSync(a,c?void 0:"utf8")};ka=a=>{a=ia(a,!0);a.buffer||(a=new Uint8Array(a));return a};ja=(a,c,d,e=!0)=>{a=ma(a)?new URL(a):la.normalize(a);fs.readFile(a,e?void 0:"utf8",(g,h)=>{g?d(g):c(e?h.buffer:h)})};process.argv.slice(2);b.inspect=()=>"[Emscripten Module object]"}else if(fa||l)l?n=self.location.href:"undefined"!=typeof document&&document.currentScript&& -(n=document.currentScript.src),_scriptDir&&(n=_scriptDir),0!==n.indexOf("blob:")?n=n.substr(0,n.replace(/[?#].*/,"").lastIndexOf("/")+1):n="",ia=a=>{var c=new XMLHttpRequest;c.open("GET",a,!1);c.send(null);return c.responseText},l&&(ka=a=>{var c=new XMLHttpRequest;c.open("GET",a,!1);c.responseType="arraybuffer";c.send(null);return new Uint8Array(c.response)}),ja=(a,c,d)=>{var e=new XMLHttpRequest;e.open("GET",a,!0);e.responseType="arraybuffer";e.onload=()=>{200==e.status||0==e.status&&e.response? -c(e.response):d()};e.onerror=d;e.send(null)};b.print||console.log.bind(console);var p=b.printErr||console.error.bind(console);Object.assign(b,ea);ea=null;var na;b.wasmBinary&&(na=b.wasmBinary);"object"!=typeof WebAssembly&&q("no native wasm support detected");var oa,pa=!1,r,t,qa,ra,sa,ta,ua; -function va(){var a=oa.buffer;b.HEAP8=r=new Int8Array(a);b.HEAP16=qa=new Int16Array(a);b.HEAPU8=t=new Uint8Array(a);b.HEAPU16=new Uint16Array(a);b.HEAP32=ra=new Int32Array(a);b.HEAPU32=sa=new Uint32Array(a);b.HEAPF32=ta=new Float32Array(a);b.HEAPF64=ua=new Float64Array(a)}var wa=[],xa=[],za=[];function Aa(){var a=b.preRun.shift();wa.unshift(a)}var u=0,Ba=null,Ca=null; -function q(a){if(b.onAbort)b.onAbort(a);a="Aborted("+a+")";p(a);pa=!0;a=new WebAssembly.RuntimeError(a+". Build with -sASSERTIONS for more info.");ba(a);throw a;}var Da=a=>a.startsWith("data:application/octet-stream;base64,"),ma=a=>a.startsWith("file://"),w;w="olm.wasm?v=3.2.15";if(!Da(w)){var Ea=w;w=b.locateFile?b.locateFile(Ea,n):n+Ea}function Fa(a){if(a==w&&na)return new Uint8Array(na);if(ka)return ka(a);throw"both async and sync fetching of the wasm failed";} -function Ga(a){if(!na&&(fa||l)){if("function"==typeof fetch&&!ma(a))return fetch(a,{credentials:"same-origin"}).then(c=>{if(!c.ok)throw"failed to load wasm binary file at '"+a+"'";return c.arrayBuffer()}).catch(()=>Fa(a));if(ja)return new Promise((c,d)=>{ja(a,e=>c(new Uint8Array(e)),d)})}return Promise.resolve().then(()=>Fa(a))}function Ha(a,c,d){return Ga(a).then(e=>WebAssembly.instantiate(e,c)).then(e=>e).then(d,e=>{p(`failed to asynchronously prepare wasm: ${e}`);q(e)})} -function Ia(a,c){var d=w;return na||"function"!=typeof WebAssembly.instantiateStreaming||Da(d)||ma(d)||ha||"function"!=typeof fetch?Ha(d,a,c):fetch(d,{credentials:"same-origin"}).then(e=>WebAssembly.instantiateStreaming(e,a).then(c,function(g){p(`wasm streaming compile failed: ${g}`);p("falling back to ArrayBuffer instantiation");return Ha(d,a,c)}))}var Ja=a=>{for(;0>0];case "i8":return r[a>>0];case "i16":return qa[a>>1];case "i32":return ra[a>>2];case "i64":q("to do getValue(i64) use WASM_BIGINT");case "float":return ta[a>>2];case "double":return ua[a>>3];case "*":return sa[a>>2];default:q(`invalid type for getValue: ${c}`)}} -function x(a){var c="i8";c.endsWith("*")&&(c="*");switch(c){case "i1":r[a>>0]=0;break;case "i8":r[a>>0]=0;break;case "i16":qa[a>>1]=0;break;case "i32":ra[a>>2]=0;break;case "i64":q("to do setValue(i64) use WASM_BIGINT");case "float":ta[a>>2]=0;break;case "double":ua[a>>3]=0;break;case "*":sa[a>>2]=0;break;default:q(`invalid type for setValue: ${c}`)}} -var La=(a,c,d)=>{for(var e=0;e>0]=a.charCodeAt(e);d||(r[c>>0]=0)},z=a=>{for(var c=0,d=0;d=e?c++:2047>=e?c+=2:55296<=e&&57343>=e?(c+=4,++d):c+=3}return c},A=(a,c,d,e)=>{if(!(0=m){var v=a.charCodeAt(++h);m=65536+((m&1023)<<10)|v&1023}if(127>=m){if(d>=e)break;c[d++]=m}else{if(2047>=m){if(d+1>=e)break;c[d++]=192|m>>6}else{if(65535>=m){if(d+2>=e)break; -c[d++]=224|m>>12}else{if(d+3>=e)break;c[d++]=240|m>>18;c[d++]=128|m>>12&63}c[d++]=128|m>>6&63}c[d++]=128|m&63}}c[d]=0;return d-g};function Ma(a,c,d){d=Array(0{var d=t,e=a+c;for(c=a;d[c]&&!(c>=e);)++c;if(16g?e+=String.fromCharCode(g):(g-=65536,e+=String.fromCharCode(55296|g>>10,56320|g&1023))}}else e+=String.fromCharCode(g)}return e}, -Oa={b:(a,c,d)=>t.copyWithin(a,c,c+d),a:a=>{var c=t.length;a>>>=0;if(2147483648=d;d*=2){var e=c*(1+.2/d);e=Math.min(e,a+100663296);var g=Math;e=Math.max(a,e);a:{g=(g.min.call(g,2147483648,e+(65536-e%65536)%65536)-oa.buffer.byteLength+65535)/65536;try{oa.grow(g);va();var h=1;break a}catch(m){}h=void 0}if(h)return!0}return!1}},C=function(){function a(d){C=d.exports;oa=C.c;va();xa.unshift(C.d);u--;b.monitorRunDependencies&&b.monitorRunDependencies(u);0==u&&(null!==Ba&&(clearInterval(Ba), -Ba=null),Ca&&(d=Ca,Ca=null,d()));return C}var c={a:Oa};u++;b.monitorRunDependencies&&b.monitorRunDependencies(u);if(b.instantiateWasm)try{return b.instantiateWasm(c,a)}catch(d){p(`Module.instantiateWasm callback failed with error: ${d}`),ba(d)}Ia(c,function(d){a(d.instance)}).catch(ba);return{}}();b._olm_get_library_version=(a,c,d)=>(b._olm_get_library_version=C.f)(a,c,d);b._olm_error=()=>(b._olm_error=C.g)();b._olm_account_last_error=a=>(b._olm_account_last_error=C.h)(a); -b.__olm_error_to_string=a=>(b.__olm_error_to_string=C.i)(a);b._olm_account_last_error_code=a=>(b._olm_account_last_error_code=C.j)(a);b._olm_session_last_error=a=>(b._olm_session_last_error=C.k)(a);b._olm_session_last_error_code=a=>(b._olm_session_last_error_code=C.l)(a);b._olm_utility_last_error=a=>(b._olm_utility_last_error=C.m)(a);b._olm_utility_last_error_code=a=>(b._olm_utility_last_error_code=C.n)(a);b._olm_account_size=()=>(b._olm_account_size=C.o)(); -b._olm_session_size=()=>(b._olm_session_size=C.p)();b._olm_utility_size=()=>(b._olm_utility_size=C.q)();b._olm_account=a=>(b._olm_account=C.r)(a);b._olm_session=a=>(b._olm_session=C.s)(a);b._olm_utility=a=>(b._olm_utility=C.t)(a);b._olm_clear_account=a=>(b._olm_clear_account=C.u)(a);b._olm_clear_session=a=>(b._olm_clear_session=C.v)(a);b._olm_clear_utility=a=>(b._olm_clear_utility=C.w)(a);b._olm_pickle_account_length=a=>(b._olm_pickle_account_length=C.x)(a); -b._olm_pickle_session_length=a=>(b._olm_pickle_session_length=C.y)(a);b._olm_pickle_account=(a,c,d,e,g)=>(b._olm_pickle_account=C.z)(a,c,d,e,g);b._olm_pickle_session=(a,c,d,e,g)=>(b._olm_pickle_session=C.A)(a,c,d,e,g);b._olm_unpickle_account=(a,c,d,e,g)=>(b._olm_unpickle_account=C.B)(a,c,d,e,g);b._olm_unpickle_session=(a,c,d,e,g)=>(b._olm_unpickle_session=C.C)(a,c,d,e,g);b._olm_create_account_random_length=a=>(b._olm_create_account_random_length=C.D)(a); -b._olm_create_account=(a,c,d)=>(b._olm_create_account=C.E)(a,c,d);b._olm_account_identity_keys_length=a=>(b._olm_account_identity_keys_length=C.F)(a);b._olm_account_identity_keys=(a,c,d)=>(b._olm_account_identity_keys=C.G)(a,c,d);b._olm_account_signature_length=a=>(b._olm_account_signature_length=C.H)(a);b._olm_account_sign=(a,c,d,e,g)=>(b._olm_account_sign=C.I)(a,c,d,e,g);b._olm_account_one_time_keys_length=a=>(b._olm_account_one_time_keys_length=C.J)(a); -b._olm_account_one_time_keys=(a,c,d)=>(b._olm_account_one_time_keys=C.K)(a,c,d);b._olm_account_mark_keys_as_published=a=>(b._olm_account_mark_keys_as_published=C.L)(a);b._olm_account_max_number_of_one_time_keys=a=>(b._olm_account_max_number_of_one_time_keys=C.M)(a);b._olm_account_generate_one_time_keys_random_length=(a,c)=>(b._olm_account_generate_one_time_keys_random_length=C.N)(a,c);b._olm_account_generate_one_time_keys=(a,c,d,e)=>(b._olm_account_generate_one_time_keys=C.O)(a,c,d,e); -b._olm_account_generate_fallback_key_random_length=a=>(b._olm_account_generate_fallback_key_random_length=C.P)(a);b._olm_account_generate_fallback_key=(a,c,d)=>(b._olm_account_generate_fallback_key=C.Q)(a,c,d);b._olm_account_fallback_key_length=a=>(b._olm_account_fallback_key_length=C.R)(a);b._olm_account_fallback_key=(a,c,d)=>(b._olm_account_fallback_key=C.S)(a,c,d);b._olm_account_unpublished_fallback_key_length=a=>(b._olm_account_unpublished_fallback_key_length=C.T)(a); -b._olm_account_unpublished_fallback_key=(a,c,d)=>(b._olm_account_unpublished_fallback_key=C.U)(a,c,d);b._olm_account_forget_old_fallback_key=a=>(b._olm_account_forget_old_fallback_key=C.V)(a);b._olm_create_outbound_session_random_length=a=>(b._olm_create_outbound_session_random_length=C.W)(a);b._olm_create_outbound_session=(a,c,d,e,g,h,m,v)=>(b._olm_create_outbound_session=C.X)(a,c,d,e,g,h,m,v);b._olm_create_inbound_session=(a,c,d,e)=>(b._olm_create_inbound_session=C.Y)(a,c,d,e); -b._olm_create_inbound_session_from=(a,c,d,e,g,h)=>(b._olm_create_inbound_session_from=C.Z)(a,c,d,e,g,h);b._olm_session_id_length=a=>(b._olm_session_id_length=C._)(a);b._olm_session_id=(a,c,d)=>(b._olm_session_id=C.$)(a,c,d);b._olm_session_has_received_message=a=>(b._olm_session_has_received_message=C.aa)(a);b._olm_session_describe=(a,c,d)=>(b._olm_session_describe=C.ba)(a,c,d);b._olm_matches_inbound_session=(a,c,d)=>(b._olm_matches_inbound_session=C.ca)(a,c,d); -b._olm_matches_inbound_session_from=(a,c,d,e,g)=>(b._olm_matches_inbound_session_from=C.da)(a,c,d,e,g);b._olm_remove_one_time_keys=(a,c)=>(b._olm_remove_one_time_keys=C.ea)(a,c);b._olm_encrypt_message_type=a=>(b._olm_encrypt_message_type=C.fa)(a);b._olm_encrypt_random_length=a=>(b._olm_encrypt_random_length=C.ga)(a);b._olm_encrypt_message_length=(a,c)=>(b._olm_encrypt_message_length=C.ha)(a,c);b._olm_encrypt=(a,c,d,e,g,h,m)=>(b._olm_encrypt=C.ia)(a,c,d,e,g,h,m); -b._olm_decrypt_max_plaintext_length=(a,c,d,e)=>(b._olm_decrypt_max_plaintext_length=C.ja)(a,c,d,e);b._olm_decrypt=(a,c,d,e,g,h)=>(b._olm_decrypt=C.ka)(a,c,d,e,g,h);b._olm_sha256_length=a=>(b._olm_sha256_length=C.la)(a);b._olm_sha256=(a,c,d,e,g)=>(b._olm_sha256=C.ma)(a,c,d,e,g);b._olm_ed25519_verify=(a,c,d,e,g,h,m)=>(b._olm_ed25519_verify=C.na)(a,c,d,e,g,h,m);b._olm_pk_encryption_last_error=a=>(b._olm_pk_encryption_last_error=C.oa)(a); -b._olm_pk_encryption_last_error_code=a=>(b._olm_pk_encryption_last_error_code=C.pa)(a);b._olm_pk_encryption_size=()=>(b._olm_pk_encryption_size=C.qa)();b._olm_pk_encryption=a=>(b._olm_pk_encryption=C.ra)(a);b._olm_clear_pk_encryption=a=>(b._olm_clear_pk_encryption=C.sa)(a);b._olm_pk_encryption_set_recipient_key=(a,c,d)=>(b._olm_pk_encryption_set_recipient_key=C.ta)(a,c,d);b._olm_pk_key_length=()=>(b._olm_pk_key_length=C.ua)(); -b._olm_pk_ciphertext_length=(a,c)=>(b._olm_pk_ciphertext_length=C.va)(a,c);b._olm_pk_mac_length=a=>(b._olm_pk_mac_length=C.wa)(a);b._olm_pk_encrypt_random_length=a=>(b._olm_pk_encrypt_random_length=C.xa)(a);b._olm_pk_encrypt=(a,c,d,e,g,h,m,v,J,L,y)=>(b._olm_pk_encrypt=C.ya)(a,c,d,e,g,h,m,v,J,L,y);b._olm_pk_decryption_last_error=a=>(b._olm_pk_decryption_last_error=C.za)(a);b._olm_pk_decryption_last_error_code=a=>(b._olm_pk_decryption_last_error_code=C.Aa)(a); -b._olm_pk_decryption_size=()=>(b._olm_pk_decryption_size=C.Ba)();b._olm_pk_decryption=a=>(b._olm_pk_decryption=C.Ca)(a);b._olm_clear_pk_decryption=a=>(b._olm_clear_pk_decryption=C.Da)(a);b._olm_pk_private_key_length=()=>(b._olm_pk_private_key_length=C.Ea)();b._olm_pk_generate_key_random_length=()=>(b._olm_pk_generate_key_random_length=C.Fa)();b._olm_pk_key_from_private=(a,c,d,e,g)=>(b._olm_pk_key_from_private=C.Ga)(a,c,d,e,g); -b._olm_pk_generate_key=(a,c,d,e,g)=>(b._olm_pk_generate_key=C.Ha)(a,c,d,e,g);b._olm_pickle_pk_decryption_length=a=>(b._olm_pickle_pk_decryption_length=C.Ia)(a);b._olm_pickle_pk_decryption=(a,c,d,e,g)=>(b._olm_pickle_pk_decryption=C.Ja)(a,c,d,e,g);b._olm_unpickle_pk_decryption=(a,c,d,e,g,h,m)=>(b._olm_unpickle_pk_decryption=C.Ka)(a,c,d,e,g,h,m);b._olm_pk_max_plaintext_length=(a,c)=>(b._olm_pk_max_plaintext_length=C.La)(a,c); -b._olm_pk_decrypt=(a,c,d,e,g,h,m,v,J)=>(b._olm_pk_decrypt=C.Ma)(a,c,d,e,g,h,m,v,J);b._olm_pk_get_private_key=(a,c,d)=>(b._olm_pk_get_private_key=C.Na)(a,c,d);b._olm_pk_signing_size=()=>(b._olm_pk_signing_size=C.Oa)();b._olm_pk_signing=a=>(b._olm_pk_signing=C.Pa)(a);b._olm_pk_signing_last_error=a=>(b._olm_pk_signing_last_error=C.Qa)(a);b._olm_pk_signing_last_error_code=a=>(b._olm_pk_signing_last_error_code=C.Ra)(a);b._olm_clear_pk_signing=a=>(b._olm_clear_pk_signing=C.Sa)(a); -b._olm_pk_signing_seed_length=()=>(b._olm_pk_signing_seed_length=C.Ta)();b._olm_pk_signing_public_key_length=()=>(b._olm_pk_signing_public_key_length=C.Ua)();b._olm_pk_signing_key_from_seed=(a,c,d,e,g)=>(b._olm_pk_signing_key_from_seed=C.Va)(a,c,d,e,g);b._olm_pk_signature_length=()=>(b._olm_pk_signature_length=C.Wa)();b._olm_pk_sign=(a,c,d,e,g)=>(b._olm_pk_sign=C.Xa)(a,c,d,e,g);b._olm_inbound_group_session_size=()=>(b._olm_inbound_group_session_size=C.Ya)(); -b._olm_inbound_group_session=a=>(b._olm_inbound_group_session=C.Za)(a);b._olm_clear_inbound_group_session=a=>(b._olm_clear_inbound_group_session=C._a)(a);b._olm_inbound_group_session_last_error=a=>(b._olm_inbound_group_session_last_error=C.$a)(a);b._olm_inbound_group_session_last_error_code=a=>(b._olm_inbound_group_session_last_error_code=C.ab)(a);b._olm_init_inbound_group_session=(a,c,d)=>(b._olm_init_inbound_group_session=C.bb)(a,c,d); -b._olm_import_inbound_group_session=(a,c,d)=>(b._olm_import_inbound_group_session=C.cb)(a,c,d);b._olm_pickle_inbound_group_session_length=a=>(b._olm_pickle_inbound_group_session_length=C.db)(a);b._olm_pickle_inbound_group_session=(a,c,d,e,g)=>(b._olm_pickle_inbound_group_session=C.eb)(a,c,d,e,g);b._olm_unpickle_inbound_group_session=(a,c,d,e,g)=>(b._olm_unpickle_inbound_group_session=C.fb)(a,c,d,e,g); -b._olm_group_decrypt_max_plaintext_length=(a,c,d)=>(b._olm_group_decrypt_max_plaintext_length=C.gb)(a,c,d);b._olm_group_decrypt=(a,c,d,e,g,h)=>(b._olm_group_decrypt=C.hb)(a,c,d,e,g,h);b._olm_inbound_group_session_id_length=a=>(b._olm_inbound_group_session_id_length=C.ib)(a);b._olm_inbound_group_session_id=(a,c,d)=>(b._olm_inbound_group_session_id=C.jb)(a,c,d);b._olm_inbound_group_session_first_known_index=a=>(b._olm_inbound_group_session_first_known_index=C.kb)(a); -b._olm_inbound_group_session_is_verified=a=>(b._olm_inbound_group_session_is_verified=C.lb)(a);b._olm_export_inbound_group_session_length=a=>(b._olm_export_inbound_group_session_length=C.mb)(a);b._olm_export_inbound_group_session=(a,c,d,e)=>(b._olm_export_inbound_group_session=C.nb)(a,c,d,e);b._olm_outbound_group_session_size=()=>(b._olm_outbound_group_session_size=C.ob)();b._olm_outbound_group_session=a=>(b._olm_outbound_group_session=C.pb)(a); -b._olm_clear_outbound_group_session=a=>(b._olm_clear_outbound_group_session=C.qb)(a);b._olm_outbound_group_session_last_error=a=>(b._olm_outbound_group_session_last_error=C.rb)(a);b._olm_outbound_group_session_last_error_code=a=>(b._olm_outbound_group_session_last_error_code=C.sb)(a);b._olm_pickle_outbound_group_session_length=a=>(b._olm_pickle_outbound_group_session_length=C.tb)(a);b._olm_pickle_outbound_group_session=(a,c,d,e,g)=>(b._olm_pickle_outbound_group_session=C.ub)(a,c,d,e,g); -b._olm_unpickle_outbound_group_session=(a,c,d,e,g)=>(b._olm_unpickle_outbound_group_session=C.vb)(a,c,d,e,g);b._olm_init_outbound_group_session_random_length=a=>(b._olm_init_outbound_group_session_random_length=C.wb)(a);b._olm_init_outbound_group_session=(a,c,d)=>(b._olm_init_outbound_group_session=C.xb)(a,c,d);b._olm_group_encrypt_message_length=(a,c)=>(b._olm_group_encrypt_message_length=C.yb)(a,c);b._olm_group_encrypt=(a,c,d,e,g)=>(b._olm_group_encrypt=C.zb)(a,c,d,e,g); -b._olm_outbound_group_session_id_length=a=>(b._olm_outbound_group_session_id_length=C.Ab)(a);b._olm_outbound_group_session_id=(a,c,d)=>(b._olm_outbound_group_session_id=C.Bb)(a,c,d);b._olm_outbound_group_session_message_index=a=>(b._olm_outbound_group_session_message_index=C.Cb)(a);b._olm_outbound_group_session_key_length=a=>(b._olm_outbound_group_session_key_length=C.Db)(a);b._olm_outbound_group_session_key=(a,c,d)=>(b._olm_outbound_group_session_key=C.Eb)(a,c,d); -b._olm_sas_last_error=a=>(b._olm_sas_last_error=C.Fb)(a);b._olm_sas_last_error_code=a=>(b._olm_sas_last_error_code=C.Gb)(a);b._olm_sas_size=()=>(b._olm_sas_size=C.Hb)();b._olm_sas=a=>(b._olm_sas=C.Ib)(a);b._olm_clear_sas=a=>(b._olm_clear_sas=C.Jb)(a);b._olm_create_sas_random_length=a=>(b._olm_create_sas_random_length=C.Kb)(a);b._olm_create_sas=(a,c,d)=>(b._olm_create_sas=C.Lb)(a,c,d);b._olm_sas_pubkey_length=a=>(b._olm_sas_pubkey_length=C.Mb)(a); -b._olm_sas_get_pubkey=(a,c,d)=>(b._olm_sas_get_pubkey=C.Nb)(a,c,d);b._olm_sas_set_their_key=(a,c,d)=>(b._olm_sas_set_their_key=C.Ob)(a,c,d);b._olm_sas_is_their_key_set=a=>(b._olm_sas_is_their_key_set=C.Pb)(a);b._olm_sas_generate_bytes=(a,c,d,e,g)=>(b._olm_sas_generate_bytes=C.Qb)(a,c,d,e,g);b._olm_sas_mac_length=a=>(b._olm_sas_mac_length=C.Rb)(a);b._olm_sas_calculate_mac_fixed_base64=(a,c,d,e,g,h,m)=>(b._olm_sas_calculate_mac_fixed_base64=C.Sb)(a,c,d,e,g,h,m); -b._olm_sas_calculate_mac=(a,c,d,e,g,h,m)=>(b._olm_sas_calculate_mac=C.Tb)(a,c,d,e,g,h,m);b._olm_sas_calculate_mac_long_kdf=(a,c,d,e,g,h,m)=>(b._olm_sas_calculate_mac_long_kdf=C.Ub)(a,c,d,e,g,h,m);b._malloc=a=>(b._malloc=C.Vb)(a);b._free=a=>(b._free=C.Wb)(a);var Pa=()=>(Pa=C.Xb)(),Qa=a=>(Qa=C.Yb)(a),Ra=a=>(Ra=C.Zb)(a);b.UTF8ToString=(a,c)=>a?B(a,c):"";b.stringToUTF8=(a,c,d)=>A(a,t,c,d);b.intArrayFromString=Ma;b.ALLOC_STACK=1;b.writeAsciiToMemory=La;var Sa;Ca=function Ta(){Sa||Ua();Sa||(Ca=Ta)}; -function Ua(){function a(){if(!Sa&&(Sa=!0,b.calledRun=!0,!pa)){Ja(xa);aa(b);if(b.onRuntimeInitialized)b.onRuntimeInitialized();if(b.postRun)for("function"==typeof b.postRun&&(b.postRun=[b.postRun]);b.postRun.length;){var c=b.postRun.shift();za.unshift(c)}Ja(za)}}if(!(0 Module); -var olmInitPromise; - -olm_exports['init'] = function(opts) { - if (olmInitPromise) return olmInitPromise; - - if (opts) OLM_OPTIONS = opts; - - olmInitPromise = new Promise(function(resolve, reject) { - onInitSuccess = function() { - resolve(); - }; - onInitFail = function(err) { - reject(err); - }; - Module(); - }); - return olmInitPromise; -}; - -return olm_exports; - -})(); - -if (typeof(window) !== 'undefined') { - // We've been imported directly into a browser. Define the global 'Olm' object. - // (we do this even if module.exports was defined, because it's useful to have - // Olm in the global scope for browserified and webpacked apps.) - window["Olm"] = Olm; -} - -if (typeof module === 'object') { - // Emscripten sets the module exports to be its module - // with wrapped c functions. Clobber it with our higher - // level wrapper class. - module.exports = Olm; -} - -// @license-end diff --git a/web/olm.wasm b/web/olm.wasm deleted file mode 100755 index 87fb47c92a6d7bca582f39aa228ffec8c38ecdd1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 149747 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 { - var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined; - if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename; - return ( -function(moduleArg = {}) { - -var c=moduleArg,aa,ba;c.ready=new Promise((a,b)=>{aa=a;ba=b});var f;if("undefined"!==typeof window)f=function(a){window.crypto.getRandomValues(a)};else if(module.exports){var ca=require("crypto");f=function(a){var b=ca.randomBytes(a.length);a.set(b)}}else throw Error("Cannot find global to attach library to");if("undefined"!==typeof OLM_OPTIONS)for(var da in OLM_OPTIONS)OLM_OPTIONS.hasOwnProperty(da)&&(c[da]=OLM_OPTIONS[da]); -c.onRuntimeInitialized=function(){k=c._olm_error();olm_exports.PRIVATE_KEY_LENGTH=c._olm_pk_private_key_length();onInitSuccess&&onInitSuccess()};c.onAbort=function(a){onInitFail&&onInitFail(a)};var ea=Object.assign({},c),fa="object"==typeof window,ha="function"==typeof importScripts,ia="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,l="",ja,ka,la; -if(ia){var fs=require("fs"),ma=require("path");l=ha?ma.dirname(l)+"/":__dirname+"/";ja=(a,b)=>{a=na(a)?new URL(a):ma.normalize(a);return fs.readFileSync(a,b?void 0:"utf8")};la=a=>{a=ja(a,!0);a.buffer||(a=new Uint8Array(a));return a};ka=(a,b,d,e=!0)=>{a=na(a)?new URL(a):ma.normalize(a);fs.readFile(a,e?void 0:"utf8",(g,h)=>{g?d(g):b(e?h.buffer:h)})};process.argv.slice(2);c.inspect=()=>"[Emscripten Module object]"}else if(fa||ha)ha?l=self.location.href:"undefined"!=typeof document&&document.currentScript&& -(l=document.currentScript.src),_scriptDir&&(l=_scriptDir),0!==l.indexOf("blob:")?l=l.substr(0,l.replace(/[?#].*/,"").lastIndexOf("/")+1):l="",ja=a=>{var b=new XMLHttpRequest;b.open("GET",a,!1);b.send(null);return b.responseText},ha&&(la=a=>{var b=new XMLHttpRequest;b.open("GET",a,!1);b.responseType="arraybuffer";b.send(null);return new Uint8Array(b.response)}),ka=(a,b,d)=>{var e=new XMLHttpRequest;e.open("GET",a,!0);e.responseType="arraybuffer";e.onload=()=>{200==e.status||0==e.status&&e.response? -b(e.response):d()};e.onerror=d;e.send(null)};c.print||console.log.bind(console);var oa=c.printErr||console.error.bind(console);Object.assign(c,ea);ea=null;var n;c.wasmBinary&&(n=c.wasmBinary);function pa(){this.buffer=new ArrayBuffer(qa/65536*65536)}function ra(a){this.exports=( -// EMSCRIPTEN_START_ASM -function instantiate(ha){function c(d){d.set=function(a,b){this[a]=b};d.get=function(a){return this[a]};return d}var e;var f=new Uint8Array(123);for(var a=25;a>=0;--a){f[48+a]=52+a;f[65+a]=a;f[97+a]=26+a}f[43]=62;f[47]=63;function l(m,n,o){var g,h,a=0,i=n,j=o.length,k=n+(j*3>>2)-(o[j-2]=="=")-(o[j-1]=="=");for(;a>4;if(i>2;if(i>2]=H[b+24|0]|H[b+25|0]<<8|(H[b+26|0]<<16|H[b+27|0]<<24);G[g+28>>2]=d;d=H[b+20|0]|H[b+21|0]<<8|(H[b+22|0]<<16|H[b+23|0]<<24);G[g+16>>2]=H[b+16|0]|H[b+17|0]<<8|(H[b+18|0]<<16|H[b+19|0]<<24);G[g+20>>2]=d;e=H[b+4|0]|H[b+5|0]<<8|(H[b+6|0]<<16|H[b+7|0]<<24);d=H[b|0]|H[b+1|0]<<8|(H[b+2|0]<<16|H[b+3|0]<<24);G[g>>2]=d;G[g+4>>2]=e;e=H[b+12|0]|H[b+13|0]<<8|(H[b+14|0]<<16|H[b+15|0]<<24);G[g+8>>2]=H[b+8|0]|H[b+9|0]<<8|(H[b+10|0]<<16|H[b+11|0]<<24);G[g+12>>2]=e;E[g|0]=d&248;E[g+31|0]=H[g+31|0]&63|64;b=H[c+3|0];d=b<<24&50331648;b=H[c+2|0];e=b>>>16|0;G[g+112>>2]=d|(H[c|0]|H[c+1|0]<<8|b<<16);G[g+116>>2]=e;G[g+120>>2]=(H[c+3|0]|H[c+4|0]<<8|(H[c+5|0]<<16|H[c+6|0]<<24))>>>2&33554431;G[g+124>>2]=0;G[g+128>>2]=(H[c+6|0]|H[c+7|0]<<8|(H[c+8|0]<<16|H[c+9|0]<<24))>>>3&67108863;G[g+132>>2]=0;G[g+136>>2]=(H[c+9|0]|H[c+10|0]<<8|(H[c+11|0]<<16|H[c+12|0]<<24))>>>5&33554431;G[g+140>>2]=0;G[g+144>>2]=(H[c+12|0]|H[c+13|0]<<8|(H[c+14|0]<<16|H[c+15|0]<<24))>>>6;G[g+148>>2]=0;b=H[c+19|0];d=b<<24&16777216;b=H[c+18|0];e=b>>>16|0;G[g+152>>2]=d|(H[c+16|0]|H[c+17|0]<<8|b<<16);G[g+156>>2]=e;G[g+160>>2]=(H[c+19|0]|H[c+20|0]<<8|(H[c+21|0]<<16|H[c+22|0]<<24))>>>1&67108863;G[g+164>>2]=0;G[g+168>>2]=(H[c+22|0]|H[c+23|0]<<8|(H[c+24|0]<<16|H[c+25|0]<<24))>>>3&33554431;G[g+172>>2]=0;G[g+176>>2]=(H[c+25|0]|H[c+26|0]<<8|(H[c+27|0]<<16|H[c+28|0]<<24))>>>4&67108863;G[g+180>>2]=0;G[g+184>>2]=(H[c+28|0]|H[c+29|0]<<8|(H[c+30|0]<<16|H[c+31|0]<<24))>>>6&33554431;G[g+188>>2]=0;k=g+1152|0;ta(k,0,152);G[g+1152>>2]=1;G[g+1156>>2]=0;c=g+992|0;ta(c,0,152);G[g+992>>2]=1;G[g+996>>2]=0;b=g+832|0;ta(b,0,152);i=g+672|0;ta(i,0,152);l=g+512|0;ta(l,0,152);G[g+512>>2]=1;G[g+516>>2]=0;t=g+352|0;ta(t,0,152);P=g+192|0;ta(P,0,152);G[g+192>>2]=1;G[g+196>>2]=0;ta(g+1392|0,0,72);p=g+1312|0;ma(p,g+112|0,80);Oa=g+2512|0;while(1){va=H[(g-ua|0)+31|0];xa=0;while(1){fa=i;F=va<<24>>24>>7;i=p;d=G[i>>2];e=G[c>>2];f=F&(d^e);h=c;e=e^f;G[c>>2]=e;G[c+4>>2]=e>>31;d=d^f;G[i>>2]=d;G[i+4>>2]=d>>31;d=G[i+8>>2];e=G[c+8>>2];f=F&(d^e);e=e^f;G[c+8>>2]=e;G[c+12>>2]=e>>31;d=d^f;G[i+8>>2]=d;G[i+12>>2]=d>>31;d=G[i+16>>2];e=G[c+16>>2];f=F&(d^e);e=e^f;G[c+16>>2]=e;G[c+20>>2]=e>>31;d=d^f;G[i+16>>2]=d;G[i+20>>2]=d>>31;d=G[i+24>>2];e=G[c+24>>2];f=F&(d^e);e=e^f;G[c+24>>2]=e;G[c+28>>2]=e>>31;d=d^f;G[i+24>>2]=d;G[i+28>>2]=d>>31;d=G[i+32>>2];e=G[c+32>>2];f=F&(d^e);e=e^f;G[c+32>>2]=e;G[c+36>>2]=e>>31;d=d^f;G[i+32>>2]=d;G[i+36>>2]=d>>31;d=G[i+40>>2];e=G[c+40>>2];f=F&(d^e);e=e^f;G[c+40>>2]=e;G[c+44>>2]=e>>31;d=d^f;G[i+40>>2]=d;G[i+44>>2]=d>>31;d=G[i+48>>2];e=G[c+48>>2];f=F&(d^e);e=e^f;G[c+48>>2]=e;G[c+52>>2]=e>>31;d=d^f;G[i+48>>2]=d;G[i+52>>2]=d>>31;d=G[i+56>>2];e=G[c+56>>2];f=F&(d^e);e=e^f;G[c+56>>2]=e;G[c+60>>2]=e>>31;d=d^f;G[i+56>>2]=d;G[i+60>>2]=d>>31;d=G[i+64>>2];e=G[c+64>>2];f=F&(d^e);e=e^f;G[c+64>>2]=e;G[c+68>>2]=e>>31;d=d^f;G[i+64>>2]=d;G[i+68>>2]=d>>31;d=G[i+72>>2];e=G[c+72>>2];f=F&(d^e);e=e^f;G[c+72>>2]=e;G[c+76>>2]=e>>31;d=d^f;G[i+72>>2]=d;G[i+76>>2]=d>>31;j=k;d=G[j>>2];e=G[b>>2];f=F&(d^e);w=b;e=e^f;G[b>>2]=e;G[b+4>>2]=e>>31;d=d^f;G[j>>2]=d;G[j+4>>2]=d>>31;d=G[j+8>>2];e=G[b+8>>2];f=F&(d^e);e=e^f;G[b+8>>2]=e;G[b+12>>2]=e>>31;d=d^f;G[j+8>>2]=d;G[j+12>>2]=d>>31;d=G[j+16>>2];e=G[b+16>>2];f=F&(d^e);e=e^f;G[b+16>>2]=e;G[b+20>>2]=e>>31;d=d^f;G[j+16>>2]=d;G[j+20>>2]=d>>31;d=G[j+24>>2];e=G[b+24>>2];f=F&(d^e);e=e^f;G[b+24>>2]=e;G[b+28>>2]=e>>31;d=d^f;G[j+24>>2]=d;G[j+28>>2]=d>>31;d=G[j+32>>2];e=G[b+32>>2];f=F&(d^e);e=e^f;G[b+32>>2]=e;G[b+36>>2]=e>>31;d=d^f;G[j+32>>2]=d;G[j+36>>2]=d>>31;d=G[j+40>>2];k=G[b+40>>2];B=F&(d^k);d=d^B;G[j+40>>2]=d;G[j+44>>2]=d>>31;d=G[j+48>>2];p=G[b+48>>2];K=F&(d^p);d=d^K;G[j+48>>2]=d;G[j+52>>2]=d>>31;d=G[j+56>>2];I=G[b+56>>2];J=F&(d^I);d=d^J;G[j+56>>2]=d;G[j+60>>2]=d>>31;d=G[j+64>>2];q=G[b+64>>2];L=F&(d^q);d=d^L;G[j+64>>2]=d;G[j+68>>2]=d>>31;d=G[j+72>>2];r=G[b+72>>2];Q=F&(d^r);d=d^Q;G[j+72>>2]=d;G[j+76>>2]=d>>31;C=G[b+4>>2];W=G[c+4>>2];f=C+W|0;v=G[b>>2];m=G[c>>2];d=v+m|0;G[c>>2]=d;G[c+4>>2]=d>>>0>>0?f+1|0:f;S=G[b+12>>2];O=G[c+12>>2];f=S+O|0;z=G[b+8>>2];s=G[c+8>>2];b=z+s|0;G[c+8>>2]=b;G[c+12>>2]=b>>>0>>0?f+1|0:f;_=G[w+20>>2];R=G[c+20>>2];d=_+R|0;u=G[w+16>>2];n=G[c+16>>2];b=u+n|0;G[c+16>>2]=b;G[c+20>>2]=b>>>0>>0?d+1|0:d;X=G[w+28>>2];U=G[c+28>>2];e=X+U|0;A=G[w+24>>2];x=G[c+24>>2];b=A+x|0;G[c+24>>2]=b;G[c+28>>2]=b>>>0>>0?e+1|0:e;o=G[w+32>>2];N=G[w+36>>2];D=G[c+40>>2];b=k^B;c=D+b|0;T=G[h+44>>2];V=b>>31;d=T+V|0;G[h+40>>2]=c;G[h+44>>2]=b>>>0>c>>>0?d+1|0:d;B=G[h+48>>2];c=p^K;d=B+c|0;$=G[h+52>>2];y=c>>31;f=$+y|0;G[h+48>>2]=d;G[h+52>>2]=c>>>0>d>>>0?f+1|0:f;e=I^J;J=G[h+60>>2];aa=e>>31;f=J+aa|0;I=G[h+56>>2];d=e+I|0;f=d>>>0>>0?f+1|0:f;G[h+56>>2]=d;G[h+60>>2]=f;k=q^L;q=G[h+64>>2];f=k+q|0;L=G[h+68>>2];ba=k>>31;d=L+ba|0;G[h+64>>2]=f;G[h+68>>2]=f>>>0>>0?d+1|0:d;f=r^Q;r=G[h+72>>2];d=f;p=r+d|0;Q=G[h+76>>2];ca=d>>31;f=Q+ca|0;G[h+72>>2]=p;G[h+76>>2]=d>>>0>p>>>0?f+1|0:f;da=G[h+36>>2];f=da+N|0;p=G[h+32>>2];K=p+o|0;G[h+32>>2]=K;G[h+36>>2]=p>>>0>K>>>0?f+1|0:f;G[w+72>>2]=r-d;G[w+76>>2]=Q-((d>>>0>r>>>0)+ca|0);G[w+64>>2]=q-k;G[w+68>>2]=L-((k>>>0>q>>>0)+ba|0);G[w+56>>2]=I-e;G[w+60>>2]=J-((e>>>0>I>>>0)+aa|0);G[w+48>>2]=B-c;G[w+52>>2]=$-((c>>>0>B>>>0)+y|0);G[w+40>>2]=D-b;G[w+44>>2]=T-((b>>>0>D>>>0)+V|0);G[w+32>>2]=p-o;G[w+36>>2]=da-((o>>>0>p>>>0)+N|0);G[w+24>>2]=x-A;G[w+28>>2]=U-((x>>>0>>0)+X|0);G[w+16>>2]=n-u;G[w+20>>2]=R-((n>>>0>>0)+_|0);G[w+8>>2]=s-z;G[w+12>>2]=O-((s>>>0>>0)+S|0);G[w>>2]=m-v;G[w+4>>2]=W-((m>>>0>>0)+C|0);J=G[j+4>>2];L=G[i+4>>2];d=J+L|0;p=G[j>>2];b=G[i>>2];c=p+b|0;G[i>>2]=c;G[i+4>>2]=b>>>0>c>>>0?d+1|0:d;Q=G[j+12>>2];N=G[i+12>>2];f=Q+N|0;v=G[j+8>>2];c=G[i+8>>2];d=v+c|0;G[i+8>>2]=d;G[i+12>>2]=c>>>0>d>>>0?f+1|0:f;C=G[j+20>>2];W=G[i+20>>2];e=C+W|0;z=G[j+16>>2];k=G[i+16>>2];d=z+k|0;G[i+16>>2]=d;G[i+20>>2]=d>>>0>>0?e+1|0:e;S=G[j+28>>2];O=G[i+28>>2];d=S+O|0;u=G[j+24>>2];m=G[i+24>>2];e=u+m|0;G[i+24>>2]=e;G[i+28>>2]=e>>>0>>0?d+1|0:d;_=G[j+36>>2];R=G[i+36>>2];f=_+R|0;A=G[j+32>>2];s=G[i+32>>2];d=A+s|0;G[i+32>>2]=d;G[i+36>>2]=d>>>0>>0?f+1|0:f;X=G[j+44>>2];U=G[i+44>>2];d=X+U|0;D=G[j+40>>2];n=G[i+40>>2];e=D+n|0;G[i+40>>2]=e;G[i+44>>2]=e>>>0>>0?d+1|0:d;T=G[j+52>>2];V=G[i+52>>2];f=T+V|0;B=G[j+48>>2];x=G[i+48>>2];d=B+x|0;G[i+48>>2]=d;G[i+52>>2]=d>>>0>>0?f+1|0:f;$=G[j+60>>2];y=G[i+60>>2];e=$+y|0;I=G[j+56>>2];o=G[i+56>>2];d=I+o|0;G[i+56>>2]=d;G[i+60>>2]=d>>>0>>0?e+1|0:e;aa=G[j+68>>2];ba=G[i+68>>2];d=aa+ba|0;q=G[j+64>>2];e=G[i+64>>2];f=q+e|0;G[i+64>>2]=f;G[i+68>>2]=e>>>0>f>>>0?d+1|0:d;ca=G[j+76>>2];da=G[i+76>>2];f=ca+da|0;r=G[j+72>>2];d=G[i+72>>2];K=r+d|0;G[i+72>>2]=K;G[i+76>>2]=d>>>0>K>>>0?f+1|0:f;G[j+72>>2]=d-r;G[j+76>>2]=da-((d>>>0>>0)+ca|0);G[j+64>>2]=e-q;G[j+68>>2]=ba-((e>>>0>>0)+aa|0);G[j+56>>2]=o-I;G[j+60>>2]=y-((o>>>0>>0)+$|0);G[j+48>>2]=x-B;G[j+52>>2]=V-((x>>>0>>0)+T|0);G[j+40>>2]=n-D;G[j+44>>2]=U-((n>>>0>>0)+X|0);G[j+32>>2]=s-A;G[j+36>>2]=R-((s>>>0>>0)+_|0);G[j+24>>2]=m-u;G[j+28>>2]=O-((m>>>0>>0)+S|0);G[j+16>>2]=k-z;G[j+20>>2]=W-((k>>>0>>0)+C|0);G[j+8>>2]=c-v;G[j+12>>2]=N-((c>>>0>>0)+Q|0);G[j>>2]=b-p;G[j+4>>2]=L-((b>>>0

>>0)+J|0);qa=g+1952|0;wa(qa,i,w);ha=g+1792|0;wa(ha,h,j);aa=G[g+2024>>2];ba=G[g+2028>>2];m=G[g+2016>>2];Pa=G[g+2020>>2];s=G[g+2096>>2];Ca=G[g+2100>>2];n=G[g+2008>>2];Qa=G[g+2012>>2];x=G[g+2088>>2];Da=G[g+2092>>2];o=G[g+2e3>>2];Ra=G[g+2004>>2];p=G[g+2080>>2];Ea=G[g+2084>>2];v=G[g+1992>>2];Sa=G[g+1996>>2];z=G[g+2072>>2];Fa=G[g+2076>>2];u=G[g+1984>>2];Ta=G[g+1988>>2];A=G[g+2064>>2];Ga=G[g+2068>>2];D=G[g+1976>>2];Ua=G[g+1980>>2];B=G[g+2056>>2];Ha=G[g+2060>>2];k=G[g+1968>>2];ya=G[g+1972>>2];I=G[g+2048>>2];ia=G[g+2052>>2];q=G[g+1960>>2];Aa=G[g+1964>>2];r=G[g+2040>>2];ka=G[g+2044>>2];K=G[g+1952>>2];Va=G[g+1956>>2];J=G[g+2032>>2];la=G[g+2036>>2];G[g+2032>>2]=0;G[g+2036>>2]=0;ca=G[g+1864>>2];da=G[g+1868>>2];L=G[g+1856>>2];Wa=G[g+1860>>2];Q=G[g+1936>>2];Ia=G[g+1940>>2];N=G[g+1848>>2];Xa=G[g+1852>>2];C=G[g+1928>>2];Ja=G[g+1932>>2];W=G[g+1840>>2];Ya=G[g+1844>>2];S=G[g+1920>>2];Ka=G[g+1924>>2];O=G[g+1832>>2];Za=G[g+1836>>2];_=G[g+1912>>2];La=G[g+1916>>2];R=G[g+1824>>2];_a=G[g+1828>>2];X=G[g+1904>>2];Ma=G[g+1908>>2];U=G[g+1816>>2];$a=G[g+1820>>2];T=G[g+1896>>2];Na=G[g+1900>>2];f=G[g+1808>>2];d=G[g+1812>>2];e=G[g+1888>>2];y=G[g+1892>>2];b=G[g+1800>>2];na=G[g+1804>>2];c=G[g+1880>>2];ea=G[g+1884>>2];V=G[g+1792>>2];oa=G[g+1796>>2];$=G[g+1872>>2];pa=G[g+1876>>2];G[g+1872>>2]=0;G[g+1876>>2]=0;d=d+y|0;ga=f;f=e+f|0;d=ga>>>0>f>>>0?d+1|0:d;y=we(e,y,18,0);e=y+f|0;f=Z+d|0;ga=e;y=e>>>0>>0?f+1|0:f;e=ea+na|0;d=b;b=b+c|0;e=d>>>0>b>>>0?e+1|0:e;c=we(c,ea,18,0);b=c+b|0;d=Z+e|0;ra=b;c=b>>>0>>0?d+1|0:d;f=pa+oa|0;b=V+$|0;f=b>>>0>>0?f+1|0:f;e=we($,pa,18,0);b=e+b|0;d=Z+f|0;V=b;d=b>>>0>>0?d+1|0:d;ea=d;e=d>>31>>>6|0;b=b+e|0;f=e>>>0>b>>>0?d+1|0:d;pa=b;na=f;d=f>>26;f=(f&67108863)<<6|b>>>26;b=f+ra|0;e=c+d|0;$=b;e=b>>>0>>0?e+1|0:e;oa=e;f=e;c=e>>31>>>7|0;b=b+c|0;if(c>>>0>b>>>0){f=e+1|0}ra=b;Ba=f;c=(f&33554431)<<7|b>>>25;b=c+ga|0;d=(f>>25)+y|0;d=b>>>0>>0?d+1|0:d;f=d;c=d>>31>>>6|0;e=b+c|0;d=c>>>0>e>>>0?d+1|0:d;ga=e;c=d;e=e&-67108864;y=b-e|0;b=f-((b>>>0>>0)+d|0)|0;sa=b;e=ia+ya|0;b=k+I|0;e=b>>>0>>0?e+1|0:e;d=we(I,ia,18,0);b=d+b|0;f=Z+e|0;ab=b;k=b>>>0>>0?f+1|0:f;d=ka+Aa|0;b=q+r|0;d=b>>>0>>0?d+1|0:d;e=we(r,ka,18,0);b=e+b|0;d=Z+d|0;d=b>>>0>>0?d+1|0:d;r=b;f=la+Va|0;b=J+K|0;f=b>>>0>>0?f+1|0:f;I=we(J,la,18,0);b=I+b|0;e=Z+f|0;e=b>>>0>>0?e+1|0:e;I=b;K=e;f=e;q=e>>31>>>6|0;b=b+q|0;if(q>>>0>b>>>0){f=e+1|0}J=b;ia=f;e=f>>26;f=(f&67108863)<<6|b>>>26;b=f+r|0;d=d+e|0;q=b;d=b>>>0>>0?d+1|0:d;ka=d;e=d>>31>>>7|0;b=b+e|0;f=e>>>0>b>>>0?d+1|0:d;la=b;ya=f;e=(f&33554431)<<7|b>>>25;b=e+ab|0;d=(f>>25)+k|0;d=b>>>0>>0?d+1|0:d;f=d;e=d;k=d>>31>>>6|0;d=b+k|0;e=k>>>0>d>>>0?e+1|0:e;Aa=d;k=e;d=d&-67108864;r=b-d|0;e=f-((b>>>0>>0)+e|0)|0;d=e+sa|0;b=r;f=b+y|0;d=b>>>0>f>>>0?d+1|0:d;G[g+1968>>2]=f;G[g+1972>>2]=d;G[g+1808>>2]=b-y;G[g+1812>>2]=e-((b>>>0>>0)+sa|0);e=Na+$a|0;b=T+U|0;e=b>>>0>>0?e+1|0:e;f=we(T,Na,18,0);b=f+b|0;d=Z+e|0;d=b>>>0>>0?d+1|0:d;f=c>>26;c=(c&67108863)<<6|ga>>>26;b=c+b|0;f=d+f|0;f=b>>>0>>0?f+1|0:f;d=f;c=d>>31>>>7|0;e=b+c|0;d=c>>>0>e>>>0?d+1|0:d;U=e;c=d;e=e&-33554432;r=b-e|0;b=f-((b>>>0>>0)+d|0)|0;T=b;f=Ha+Ua|0;b=B+D|0;f=b>>>0>>0?f+1|0:f;e=we(B,Ha,18,0);b=e+b|0;d=Z+f|0;d=b>>>0>>0?d+1|0:d;f=(k&67108863)<<6|Aa>>>26;b=f+b|0;d=(k>>26)+d|0;d=b>>>0>>0?d+1|0:d;e=d;k=d>>31>>>7|0;d=b+k|0;f=k>>>0>d>>>0?e+1|0:e;B=d;k=f;D=d&-33554432;d=b-D|0;f=e-((b>>>0>>0)+f|0)|0;e=f+T|0;b=d;d=d+r|0;e=b>>>0>d>>>0?e+1|0:e;G[g+1976>>2]=d;G[g+1980>>2]=e;G[g+1816>>2]=b-r;G[g+1820>>2]=f-((b>>>0>>0)+T|0);f=Ma+_a|0;b=R+X|0;f=b>>>0>>0?f+1|0:f;e=we(X,Ma,18,0);b=e+b|0;d=Z+f|0;e=b>>>0>>0?d+1|0:d;d=c>>25;c=(c&33554431)<<7|U>>>25;b=c+b|0;f=d+e|0;f=b>>>0>>0?f+1|0:f;e=f;c=e>>31>>>6|0;d=b+c|0;e=c>>>0>d>>>0?e+1|0:e;r=d;c=e;d=d&-67108864;D=b-d|0;b=f-((b>>>0>>0)+e|0)|0;R=b;d=Ga+Ta|0;b=u+A|0;d=b>>>0>>0?d+1|0:d;e=we(A,Ga,18,0);b=e+b|0;d=Z+d|0;d=b>>>0>>0?d+1|0:d;f=k>>25;k=(k&33554431)<<7|B>>>25;b=k+b|0;e=d+f|0;e=b>>>0>>0?e+1|0:e;d=e>>31>>>6|0;f=d;d=b+d|0;f=f>>>0>d>>>0?e+1|0:e;A=d;k=f;u=d&-67108864;d=b-u|0;e=e-((b>>>0>>0)+f|0)|0;f=e+R|0;b=d;d=d+D|0;f=b>>>0>d>>>0?f+1|0:f;G[g+1984>>2]=d;G[g+1988>>2]=f;G[g+1824>>2]=b-D;G[g+1828>>2]=e-((b>>>0>>0)+R|0);f=La+Za|0;b=O+_|0;f=b>>>0>>0?f+1|0:f;d=we(_,La,18,0);b=d+b|0;e=Z+f|0;e=b>>>0>>0?e+1|0:e;d=c>>26;c=(c&67108863)<<6|r>>>26;b=c+b|0;d=d+e|0;d=b>>>0>>0?d+1|0:d;e=d;c=d>>31>>>7|0;d=b+c|0;f=c>>>0>d>>>0?e+1|0:e;D=d;c=f;d=d&-33554432;u=b-d|0;b=e-((b>>>0>>0)+f|0)|0;B=b;d=Fa+Sa|0;b=v+z|0;d=b>>>0>>0?d+1|0:d;f=we(z,Fa,18,0);b=f+b|0;e=Z+d|0;e=b>>>0>>0?e+1|0:e;d=(k&67108863)<<6|A>>>26;b=d+b|0;f=(k>>26)+e|0;f=b>>>0>>0?f+1|0:f;d=f;e=d>>31>>>7|0;k=e;e=b+e|0;d=k>>>0>e>>>0?d+1|0:d;z=e;k=d;v=e&-33554432;e=b-v|0;d=f-((b>>>0>>0)+d|0)|0;f=d+B|0;b=e;e=e+u|0;f=b>>>0>e>>>0?f+1|0:f;G[g+1992>>2]=e;G[g+1996>>2]=f;G[g+1832>>2]=b-u;G[g+1836>>2]=d-((b>>>0>>0)+B|0);d=Ka+Ya|0;b=S+W|0;d=b>>>0>>0?d+1|0:d;e=we(S,Ka,18,0);b=e+b|0;f=Z+d|0;f=b>>>0>>0?f+1|0:f;e=c>>25;c=(c&33554431)<<7|D>>>25;b=c+b|0;d=e+f|0;d=b>>>0>>0?d+1|0:d;e=d;c=d>>31>>>6|0;d=b+c|0;f=c>>>0>d>>>0?e+1|0:e;u=d;c=f;d=d&-67108864;v=b-d|0;b=e-((b>>>0>>0)+f|0)|0;A=b;e=Ea+Ra|0;b=o+p|0;e=b>>>0>>0?e+1|0:e;d=we(p,Ea,18,0);b=d+b|0;f=Z+e|0;f=b>>>0>>0?f+1|0:f;e=(k&33554431)<<7|z>>>25;b=e+b|0;f=(k>>25)+f|0;f=b>>>0>>0?f+1|0:f;d=f;e=d>>31>>>6|0;k=e;e=b+e|0;d=k>>>0>e>>>0?d+1|0:d;p=e;k=d;o=e&-67108864;e=b-o|0;f=f-((b>>>0>>0)+d|0)|0;d=f+A|0;b=e;e=e+v|0;d=b>>>0>e>>>0?d+1|0:d;G[g+2e3>>2]=e;G[g+2004>>2]=d;G[g+1840>>2]=b-v;G[g+1844>>2]=f-((b>>>0>>0)+A|0);d=Ja+Xa|0;b=C+N|0;d=b>>>0>>0?d+1|0:d;e=we(C,Ja,18,0);b=e+b|0;f=Z+d|0;d=b>>>0>>0?f+1|0:f;f=c>>26;c=(c&67108863)<<6|u>>>26;b=c+b|0;e=d+f|0;e=b>>>0>>0?e+1|0:e;f=e;d=e;c=d>>31>>>7|0;e=b+c|0;if(c>>>0>e>>>0){d=d+1|0}v=e;c=d;e=e&-33554432;o=b-e|0;b=f-((b>>>0>>0)+d|0)|0;z=b;f=Da+Qa|0;b=n+x|0;f=b>>>0>>0?f+1|0:f;d=we(x,Da,18,0);b=d+b|0;f=Z+f|0;f=b>>>0>>0?f+1|0:f;e=(k&67108863)<<6|p>>>26;b=e+b|0;d=(k>>26)+f|0;d=b>>>0>>0?d+1|0:d;f=d;e=d;k=d>>31>>>7|0;d=b+k|0;e=k>>>0>d>>>0?e+1|0:e;x=d;k=e;d=d&-33554432;n=b-d|0;e=f-((b>>>0>>0)+e|0)|0;d=e+z|0;b=n;f=b+o|0;d=b>>>0>f>>>0?d+1|0:d;G[g+2008>>2]=f;G[g+2012>>2]=d;G[g+1848>>2]=b-o;G[g+1852>>2]=e-((b>>>0>>0)+z|0);e=Ia+Wa|0;b=L+Q|0;e=b>>>0>>0?e+1|0:e;f=we(Q,Ia,18,0);b=f+b|0;d=Z+e|0;d=b>>>0>>0?d+1|0:d;f=c>>25;c=(c&33554431)<<7|v>>>25;b=c+b|0;f=d+f|0;f=b>>>0>>0?f+1|0:f;d=f;c=d>>31>>>6|0;e=b+c|0;d=c>>>0>e>>>0?d+1|0:d;o=e;c=d;e=e&-67108864;n=b-e|0;b=f-((b>>>0>>0)+d|0)|0;p=b;f=Ca+Pa|0;b=m+s|0;f=b>>>0>>0?f+1|0:f;e=we(s,Ca,18,0);b=e+b|0;d=Z+f|0;d=b>>>0>>0?d+1|0:d;f=(k&33554431)<<7|x>>>25;b=f+b|0;d=(k>>25)+d|0;d=b>>>0>>0?d+1|0:d;e=d;k=d>>31>>>6|0;d=b+k|0;f=k>>>0>d>>>0?e+1|0:e;m=d;k=f;s=d&-67108864;d=b-s|0;f=e-((b>>>0>>0)+f|0)|0;e=f+p|0;b=d;d=d+n|0;e=b>>>0>d>>>0?e+1|0:e;G[g+2016>>2]=d;G[g+2020>>2]=e;G[g+1856>>2]=b-n;G[g+1860>>2]=f-((b>>>0>>0)+p|0);f=c>>26;c=(c&67108863)<<6|o>>>26;b=c+ca|0;f=f+da|0;f=b>>>0>>0?f+1|0:f;d=f;c=d>>31>>>7|0;e=b+c|0;d=c>>>0>e>>>0?d+1|0:d;s=e;c=d;n=e&-33554432;e=b-n|0;b=f-((b>>>0>>0)+d|0)|0;n=b;d=k>>26;k=(k&67108863)<<6|m>>>26;b=k+aa|0;f=d+ba|0;f=b>>>0>>0?f+1|0:f;m=f;d=f;f=d>>31>>>7|0;k=f;f=b+f|0;if(k>>>0>f>>>0){d=d+1|0}x=f;k=d;o=f&-33554432;f=b-o|0;m=m-((b>>>0>>0)+d|0)|0;d=m+n|0;b=f;f=b+e|0;d=b>>>0>f>>>0?d+1|0:d;G[g+2024>>2]=f;G[g+2028>>2]=d;G[g+1864>>2]=b-e;G[g+1868>>2]=m-((b>>>0>>0)+n|0);b=ra&-33554432;m=$-b|0;p=oa-((b>>>0>$>>>0)+Ba|0)|0;e=c>>25;b=(c&33554431)<<7|s>>>25;d=pa&-67108864;c=V-d|0;d=(ea-((d>>>0>V>>>0)+na|0)|0)+e|0;f=c;c=b+c|0;d=f>>>0>c>>>0?d+1|0:d;f=c;c=we(b,e,18,0);b=f+c|0;d=Z+d|0;d=b>>>0>>0?d+1|0:d;c=b;s=d;f=d>>31>>>6|0;b=b+f|0;e=f>>>0>b>>>0?d+1|0:d;n=b;o=e;d=e>>26;e=(e&67108863)<<6|b>>>26;b=e+m|0;f=d+p|0;m=b;p=b>>>0>>0?f+1|0:f;b=la&-33554432;u=q-b|0;A=ka-((b>>>0>q>>>0)+ya|0)|0;d=J&-67108864;e=I-d|0;f=k>>25;d=f+(K-((d>>>0>I>>>0)+ia|0)|0)|0;r=e;b=(k&33554431)<<7|x>>>25;e=b+e|0;d=r>>>0>e>>>0?d+1|0:d;k=e;e=we(b,f,18,0);b=k+e|0;d=Z+d|0;k=b;d=b>>>0>>0?d+1|0:d;x=d;e=d>>31>>>6|0;b=b+e|0;f=e>>>0>b>>>0?d+1|0:d;v=b;z=f;d=f>>26;f=(f&67108863)<<6|b>>>26;b=f+u|0;e=d+A|0;e=b>>>0>>0?e+1|0:e;f=b;u=e;d=e+p|0;b=b+m|0;d=f>>>0>b>>>0?d+1|0:d;G[g+1960>>2]=b;G[g+1964>>2]=d;e=n&-67108864;d=c-e|0;n=v&-67108864;b=k-n|0;s=s-((c>>>0>>0)+o|0)|0;k=x-((k>>>0>>0)+z|0)|0;e=s+k|0;c=d;d=d+b|0;e=d>>>0>>0?e+1|0:e;G[g+1952>>2]=d;G[g+1956>>2]=e;G[g+1800>>2]=f-m;G[g+1804>>2]=u-((f>>>0>>0)+p|0);G[g+1792>>2]=b-c;G[g+1796>>2]=k-((b>>>0>>0)+s|0);aa=g+1472|0;ja(aa,qa);ba=g+1632|0;ja(ba,ha);wa(ha,ba,g+112|0);c=G[g+1856>>2];R=G[g+1860>>2];k=G[g+1936>>2];N=G[g+1940>>2];m=G[g+1848>>2];X=G[g+1852>>2];s=G[g+1928>>2];C=G[g+1932>>2];n=G[g+1840>>2];U=G[g+1844>>2];x=G[g+1920>>2];W=G[g+1924>>2];o=G[g+1832>>2];T=G[g+1836>>2];p=G[g+1912>>2];S=G[g+1916>>2];v=G[g+1824>>2];V=G[g+1828>>2];z=G[g+1904>>2];O=G[g+1908>>2];u=G[g+1816>>2];$=G[g+1820>>2];A=G[g+1896>>2];_=G[g+1900>>2];f=G[g+1808>>2];d=G[g+1812>>2];e=G[g+1888>>2];q=G[g+1892>>2];b=G[g+1800>>2];J=G[g+1804>>2];D=G[g+1880>>2];r=G[g+1884>>2];B=G[g+1792>>2];L=G[g+1796>>2];I=G[g+1872>>2];K=G[g+1876>>2];G[g+1872>>2]=0;G[g+1876>>2]=0;d=d+q|0;Q=f;f=e+f|0;d=Q>>>0>f>>>0?d+1|0:d;q=we(e,q,18,0);e=q+f|0;f=Z+d|0;y=e;q=e>>>0>>0?f+1|0:f;e=r+J|0;d=b;b=b+D|0;e=d>>>0>b>>>0?e+1|0:e;f=we(D,r,18,0);b=f+b|0;d=Z+e|0;J=b;e=b>>>0>>0?d+1|0:d;f=K+L|0;b=B+I|0;f=b>>>0>>0?f+1|0:f;D=we(I,K,18,0);b=D+b|0;d=Z+f|0;d=b>>>0>>0?d+1|0:d;D=b;I=d;B=d>>31>>>6|0;b=b+B|0;f=B>>>0>b>>>0?d+1|0:d;r=b;K=f;d=f>>26;f=(f&67108863)<<6|b>>>26;b=f+J|0;e=d+e|0;B=b;e=b>>>0>>0?e+1|0:e;J=e;f=e;d=e>>31>>>7|0;b=b+d|0;if(d>>>0>b>>>0){f=e+1|0}L=b;Q=f;e=f>>25;f=(f&33554431)<<7|b>>>25;b=f+y|0;d=e+q|0;d=b>>>0>>0?d+1|0:d;f=d;e=d>>31>>>6|0;q=e;e=b+e|0;d=q>>>0>e>>>0?d+1|0:d;q=e;e=e&-67108864;G[g+1808>>2]=b-e;G[g+1812>>2]=f-((b>>>0>>0)+d|0);e=_+$|0;b=u+A|0;e=b>>>0>>0?e+1|0:e;u=we(A,_,18,0);b=u+b|0;f=Z+e|0;e=b>>>0>>0?f+1|0:f;u=(d&67108863)<<6|q>>>26;b=u+b|0;d=(d>>26)+e|0;d=b>>>0>>0?d+1|0:d;f=d;e=d>>31>>>7|0;q=e;e=b+e|0;d=q>>>0>e>>>0?d+1|0:d;u=e;e=e&-33554432;G[g+1816>>2]=b-e;G[g+1820>>2]=f-((b>>>0>>0)+d|0);f=O+V|0;b=v+z|0;f=b>>>0>>0?f+1|0:f;e=we(z,O,18,0);b=e+b|0;f=Z+f|0;f=b>>>0>>0?f+1|0:f;v=(d&33554431)<<7|u>>>25;b=v+b|0;d=(d>>25)+f|0;d=b>>>0>>0?d+1|0:d;f=d;e=d>>31>>>6|0;q=e;e=b+e|0;d=q>>>0>e>>>0?d+1|0:d;v=e;e=e&-67108864;G[g+1824>>2]=b-e;G[g+1828>>2]=f-((b>>>0>>0)+d|0);e=T+S|0;b=o+p|0;e=b>>>0>>0?e+1|0:e;o=we(p,S,18,0);b=o+b|0;f=Z+e|0;e=b>>>0>>0?f+1|0:f;o=(d&67108863)<<6|v>>>26;b=o+b|0;d=(d>>26)+e|0;d=b>>>0>>0?d+1|0:d;f=d;e=d>>31>>>7|0;o=e;e=b+e|0;d=o>>>0>e>>>0?d+1|0:d;o=e;e=e&-33554432;G[g+1832>>2]=b-e;G[g+1836>>2]=f-((b>>>0>>0)+d|0);f=U+W|0;b=n+x|0;f=b>>>0>>0?f+1|0:f;e=we(x,W,18,0);b=e+b|0;f=Z+f|0;f=b>>>0>>0?f+1|0:f;n=(d&33554431)<<7|o>>>25;b=n+b|0;d=(d>>25)+f|0;d=b>>>0>>0?d+1|0:d;f=d;e=d>>31>>>6|0;n=e;e=b+e|0;d=n>>>0>e>>>0?d+1|0:d;n=e;e=e&-67108864;G[g+1840>>2]=b-e;G[g+1844>>2]=f-((b>>>0>>0)+d|0);e=C+X|0;b=m+s|0;e=b>>>0>>0?e+1|0:e;m=we(s,C,18,0);b=m+b|0;f=Z+e|0;e=b>>>0>>0?f+1|0:f;m=(d&67108863)<<6|n>>>26;b=m+b|0;d=(d>>26)+e|0;d=b>>>0>>0?d+1|0:d;f=d;e=d>>31>>>7|0;m=e;e=b+e|0;d=m>>>0>e>>>0?d+1|0:d;m=e;e=e&-33554432;G[g+1848>>2]=b-e;G[g+1852>>2]=f-((b>>>0>>0)+d|0);f=R+N|0;b=c+k|0;f=b>>>0>>0?f+1|0:f;c=we(k,N,18,0);b=c+b|0;f=Z+f|0;f=b>>>0>>0?f+1|0:f;c=(d&33554431)<<7|m>>>25;b=c+b|0;d=(d>>25)+f|0;d=b>>>0>>0?d+1|0:d;e=d;c=d>>31>>>6|0;f=c;c=b+c|0;d=f>>>0>c>>>0?d+1|0:d;f=c&-67108864;G[g+1856>>2]=b-f;G[g+1860>>2]=e-((b>>>0>>0)+d|0);c=(d&67108863)<<6|c>>>26;b=c+G[g+1864>>2]|0;e=G[g+1868>>2]+(d>>26)|0;e=b>>>0>>0?e+1|0:e;c=e>>31>>>7|0;d=c;c=b+c|0;f=d>>>0>c>>>0?e+1|0:e;d=c&-33554432;G[g+1864>>2]=b-d;G[g+1868>>2]=e-((b>>>0>>0)+f|0);b=L&-33554432;k=B-b|0;m=J-((b>>>0>B>>>0)+Q|0)|0;b=(f&33554431)<<7|c>>>25;e=r&-67108864;c=D-e|0;d=f>>25;e=d+(I-((e>>>0>D>>>0)+K|0)|0)|0;f=c;c=b+c|0;e=f>>>0>c>>>0?e+1|0:e;f=c;c=we(b,d,18,0);b=f+c|0;f=Z+e|0;f=b>>>0>>0?f+1|0:f;e=f;d=e;c=d>>31>>>6|0;f=c;c=b+c|0;if(f>>>0>c>>>0){d=d+1|0}s=(d&67108863)<<6|c>>>26;k=s+k|0;f=(d>>26)+m|0;G[g+1800>>2]=k;G[g+1804>>2]=k>>>0>>0?f+1|0:f;c=c&-67108864;G[g+1792>>2]=b-c;G[g+1796>>2]=e-((b>>>0>>0)+d|0);p=ma(fa,aa,80);k=l;y=ma(k,ha,80);ca=g+2272|0;ja(ca,h);fa=g+2112|0;ja(fa,w);c=t;wa(c,ca,fa);l=G[c+64>>2];X=G[c+68>>2];t=G[c+144>>2];C=G[c+148>>2];m=G[c+56>>2];U=G[c+60>>2];s=G[c+136>>2];W=G[c+140>>2];n=G[c+48>>2];T=G[c+52>>2];x=G[c+128>>2];S=G[c+132>>2];o=G[c+40>>2];V=G[c+44>>2];v=G[c+120>>2];O=G[c+124>>2];z=G[c+32>>2];$=G[c+36>>2];u=G[c+112>>2];_=G[c+116>>2];A=G[c+24>>2];da=G[c+28>>2];D=G[c+104>>2];R=G[c+108>>2];q=G[c+16>>2];d=G[c+20>>2];f=G[c+96>>2];r=G[c+100>>2];b=G[c+8>>2];L=G[c+12>>2];e=G[c+88>>2];K=G[c+92>>2];B=G[c>>2];Q=G[c+4>>2];I=G[c+80>>2];J=G[c+84>>2];G[c+80>>2]=0;G[c+84>>2]=0;d=d+r|0;N=q;q=f+q|0;d=N>>>0>q>>>0?d+1|0:d;r=we(f,r,18,0);q=r+q|0;f=Z+d|0;ea=q;q=q>>>0>>0?f+1|0:f;f=K+L|0;d=b;b=b+e|0;f=d>>>0>b>>>0?f+1|0:f;e=we(e,K,18,0);b=e+b|0;d=Z+f|0;N=b;r=b>>>0>>0?d+1|0:d;e=J+Q|0;b=B+I|0;e=b>>>0>>0?e+1|0:e;f=we(I,J,18,0);b=f+b|0;d=Z+e|0;B=b;d=b>>>0>>0?d+1|0:d;K=d;e=d>>31>>>6|0;b=b+e|0;f=e>>>0>b>>>0?d+1|0:d;J=b;L=f;e=(f&67108863)<<6|b>>>26;b=e+N|0;f=(f>>26)+r|0;I=b;f=b>>>0>>0?f+1|0:f;r=f;e=f;d=e>>31>>>7|0;b=b+d|0;e=d>>>0>b>>>0?e+1|0:e;Q=b;N=e;f=e>>25;e=(e&33554431)<<7|b>>>25;b=e+ea|0;d=f+q|0;d=b>>>0>>0?d+1|0:d;f=d;e=d>>31>>>6|0;q=e;e=b+e|0;d=q>>>0>e>>>0?d+1|0:d;q=e;e=e&-67108864;G[c+16>>2]=b-e;G[c+20>>2]=f-((b>>>0>>0)+d|0);f=R+da|0;b=A+D|0;f=b>>>0>>0?f+1|0:f;A=we(D,R,18,0);b=A+b|0;e=Z+f|0;e=b>>>0>>0?e+1|0:e;A=(d&67108863)<<6|q>>>26;b=A+b|0;d=(d>>26)+e|0;d=b>>>0>>0?d+1|0:d;f=d;e=d>>31>>>7|0;q=e;e=b+e|0;d=q>>>0>e>>>0?d+1|0:d;A=e;e=e&-33554432;G[c+24>>2]=b-e;G[c+28>>2]=f-((b>>>0>>0)+d|0);f=_+$|0;b=u+z|0;f=b>>>0>>0?f+1|0:f;z=we(u,_,18,0);b=z+b|0;e=Z+f|0;e=b>>>0>>0?e+1|0:e;z=(d&33554431)<<7|A>>>25;b=z+b|0;d=(d>>25)+e|0;d=b>>>0>>0?d+1|0:d;f=d;e=d>>31>>>6|0;q=e;e=b+e|0;d=q>>>0>e>>>0?d+1|0:d;z=e;e=e&-67108864;G[c+32>>2]=b-e;G[c+36>>2]=f-((b>>>0>>0)+d|0);f=O+V|0;b=o+v|0;f=b>>>0>>0?f+1|0:f;o=we(v,O,18,0);b=o+b|0;e=Z+f|0;e=b>>>0>>0?e+1|0:e;o=(d&67108863)<<6|z>>>26;b=o+b|0;d=(d>>26)+e|0;d=b>>>0>>0?d+1|0:d;f=d;e=d>>31>>>7|0;o=e;e=b+e|0;d=o>>>0>e>>>0?d+1|0:d;o=e;e=e&-33554432;G[c+40>>2]=b-e;G[c+44>>2]=f-((b>>>0>>0)+d|0);f=T+S|0;b=n+x|0;f=b>>>0>>0?f+1|0:f;n=we(x,S,18,0);b=n+b|0;e=Z+f|0;e=b>>>0>>0?e+1|0:e;n=(d&33554431)<<7|o>>>25;b=n+b|0;d=(d>>25)+e|0;d=b>>>0>>0?d+1|0:d;f=d;e=d>>31>>>6|0;n=e;e=b+e|0;d=n>>>0>e>>>0?d+1|0:d;n=e;e=e&-67108864;G[c+48>>2]=b-e;G[c+52>>2]=f-((b>>>0>>0)+d|0);f=U+W|0;b=m+s|0;f=b>>>0>>0?f+1|0:f;m=we(s,W,18,0);b=m+b|0;e=Z+f|0;e=b>>>0>>0?e+1|0:e;m=(d&67108863)<<6|n>>>26;b=m+b|0;d=(d>>26)+e|0;d=b>>>0>>0?d+1|0:d;f=d;e=d>>31>>>7|0;m=e;e=b+e|0;d=m>>>0>e>>>0?d+1|0:d;m=e;e=e&-33554432;G[c+56>>2]=b-e;G[c+60>>2]=f-((b>>>0>>0)+d|0);f=C+X|0;b=l+t|0;f=b>>>0>>0?f+1|0:f;l=we(t,C,18,0);b=l+b|0;e=Z+f|0;e=b>>>0>>0?e+1|0:e;l=(d&33554431)<<7|m>>>25;b=l+b|0;d=(d>>25)+e|0;d=b>>>0>>0?d+1|0:d;f=d;e=d>>31>>>6|0;l=e;e=b+e|0;d=l>>>0>e>>>0?d+1|0:d;l=e&-67108864;G[c+64>>2]=b-l;G[c+68>>2]=f-((b>>>0>>0)+d|0);f=d>>26;d=(d&67108863)<<6|e>>>26;b=d+G[c+72>>2]|0;f=f+G[c+76>>2]|0;f=b>>>0>>0?f+1|0:f;e=f;d=e>>31>>>7|0;l=d;d=b+d|0;e=l>>>0>d>>>0?e+1|0:e;l=d&-33554432;G[c+72>>2]=b-l;G[c+76>>2]=f-((b>>>0>>0)+e|0);b=Q&-33554432;m=I-b|0;s=r-((b>>>0>I>>>0)+N|0)|0;b=d;d=e>>25;b=(e&33554431)<<7|b>>>25;f=J&-67108864;e=B-f|0;f=(K-((f>>>0>B>>>0)+L|0)|0)+d|0;l=e;e=b+e|0;f=l>>>0>e>>>0?f+1|0:f;d=we(b,d,18,0);b=d+e|0;f=Z+f|0;f=b>>>0>>0?f+1|0:f;l=f;d=f;e=d>>31>>>6|0;f=e;e=b+e|0;if(f>>>0>e>>>0){d=d+1|0}t=e;n=(d&67108863)<<6|e>>>26;m=n+m|0;e=(d>>26)+s|0;G[c+8>>2]=m;G[c+12>>2]=m>>>0>>0?e+1|0:e;e=t&-67108864;G[c>>2]=b-e;G[c+4>>2]=l-((b>>>0>>0)+d|0);l=G[g+2312>>2];d=G[g+2152>>2];b=l-d|0;A=G[g+2316>>2];d=A-(G[g+2156>>2]+(d>>>0>l>>>0)|0)|0;da=d;D=b;G[g+2152>>2]=b;G[g+2156>>2]=d;t=G[g+2304>>2];d=G[g+2144>>2];b=t-d|0;B=G[g+2308>>2];d=B-(G[g+2148>>2]+(d>>>0>t>>>0)|0)|0;ea=d;I=b;G[g+2144>>2]=b;G[g+2148>>2]=d;m=G[g+2296>>2];d=G[g+2136>>2];b=m-d|0;q=G[g+2300>>2];d=q-(G[g+2140>>2]+(d>>>0>m>>>0)|0)|0;pa=d;r=b;G[g+2136>>2]=b;G[g+2140>>2]=d;b=G[g+2288>>2];e=G[g+2128>>2];f=b-e|0;d=G[g+2292>>2];u=d-(G[g+2132>>2]+(b>>>0>>0)|0)|0;G[g+2128>>2]=f;G[g+2132>>2]=u;v=G[g+2280>>2];e=G[g+2120>>2];R=v-e|0;na=G[g+2284>>2];X=na-(G[g+2124>>2]+(e>>>0>v>>>0)|0)|0;G[g+2120>>2]=R;G[g+2124>>2]=X;z=G[g+2272>>2];e=G[g+2112>>2];U=z-e|0;oa=G[g+2276>>2];T=oa-(G[g+2116>>2]+(e>>>0>z>>>0)|0)|0;G[g+2112>>2]=U;G[g+2116>>2]=T;s=G[g+2320>>2];n=G[g+2160>>2];e=s-n|0;K=G[g+2324>>2];n=K-(G[g+2164>>2]+(n>>>0>s>>>0)|0)|0;ra=n;J=e;G[g+2160>>2]=e;G[g+2164>>2]=n;n=G[g+2328>>2];x=G[g+2168>>2];e=n-x|0;L=G[g+2332>>2];x=L-(G[g+2172>>2]+(n>>>0>>0)|0)|0;Ba=x;Q=e;G[g+2168>>2]=e;G[g+2172>>2]=x;x=G[g+2336>>2];o=G[g+2176>>2];e=x-o|0;N=G[g+2340>>2];o=N-(G[g+2180>>2]+(o>>>0>x>>>0)|0)|0;ga=o;C=e;G[g+2176>>2]=e;G[g+2180>>2]=o;o=G[g+2344>>2];S=G[g+2184>>2];e=o-S|0;W=G[g+2348>>2];O=W-(G[g+2188>>2]+(o>>>0>>0)|0)|0;sa=O;S=e;G[g+2184>>2]=e;G[g+2188>>2]=O;ta(Oa,0,72);O=b;_=d;ia=we(f,u,121665,0);ka=Z;e=we(R,X,121665,0);V=Z;u=we(U,T,121665,0);d=Z;la=d;b=d>>31>>>6|0;f=b;b=b+u|0;d=f>>>0>b>>>0?d+1|0:d;R=b;X=d;f=d>>26;d=(d&67108863)<<6|b>>>26;b=d+e|0;f=f+V|0;U=b;f=b>>>0>>0?f+1|0:f;T=f;d=f;e=d>>31>>>7|0;b=b+e|0;if(e>>>0>b>>>0){d=d+1|0}V=b;$=d;f=d>>25;d=(d&33554431)<<7|b>>>25;b=d+ia|0;e=f+ka|0;d=b>>>0>>0?e+1|0:e;f=d+_|0;e=b+O|0;f=e>>>0>>0?f+1|0:f;O=d>>31>>>6|0;b=b+O|0;d=O>>>0>b>>>0?d+1|0:d;O=b&-67108864;G[g+2448>>2]=e-O;G[g+2452>>2]=f-((e>>>0>>0)+d|0);e=d;d=d>>26;f=(e&67108863)<<6|b>>>26;b=we(r,pa,121665,0)+f|0;e=d+Z|0;e=b>>>0>>0?e+1|0:e;f=e+q|0;d=b+m|0;f=d>>>0>>0?f+1|0:f;m=d;d=f;f=e;e=e>>31>>>7|0;b=b+e|0;if(e>>>0>b>>>0){f=f+1|0}e=b&-33554432;G[g+2456>>2]=m-e;G[g+2460>>2]=d-((e>>>0>m>>>0)+f|0);d=f;f=d>>25;d=(d&33554431)<<7|b>>>25;b=we(I,ea,121665,0)+d|0;e=f+Z|0;e=b>>>0>>0?e+1|0:e;d=e+B|0;f=b+t|0;d=f>>>0>>0?d+1|0:d;t=f;f=e;e=e>>31>>>6|0;b=b+e|0;if(e>>>0>b>>>0){f=f+1|0}e=b&-67108864;G[g+2464>>2]=t-e;G[g+2468>>2]=d-((e>>>0>t>>>0)+f|0);d=f;f=d>>26;d=(d&67108863)<<6|b>>>26;b=we(D,da,121665,0)+d|0;e=f+Z|0;d=b>>>0>>0?e+1|0:e;f=d+A|0;e=b+l|0;f=e>>>0>>0?f+1|0:f;l=d>>31>>>7|0;b=b+l|0;d=l>>>0>b>>>0?d+1|0:d;l=b&-33554432;G[g+2472>>2]=e-l;G[g+2476>>2]=f-((e>>>0>>0)+d|0);e=d;d=d>>25;f=(e&33554431)<<7|b>>>25;b=we(J,ra,121665,0)+f|0;e=d+Z|0;e=b>>>0>>0?e+1|0:e;f=e+K|0;d=b+s|0;f=d>>>0>>0?f+1|0:f;l=d;d=f;f=e;e=e>>31>>>6|0;b=b+e|0;if(e>>>0>b>>>0){f=f+1|0}e=b&-67108864;G[g+2480>>2]=l-e;G[g+2484>>2]=d-((e>>>0>l>>>0)+f|0);d=f;f=d>>26;d=(d&67108863)<<6|b>>>26;b=we(Q,Ba,121665,0)+d|0;e=f+Z|0;e=b>>>0>>0?e+1|0:e;d=e+L|0;f=b+n|0;d=f>>>0>>0?d+1|0:d;l=f;f=e;e=e>>31>>>7|0;b=b+e|0;if(e>>>0>b>>>0){f=f+1|0}e=b&-33554432;G[g+2488>>2]=l-e;G[g+2492>>2]=d-((e>>>0>l>>>0)+f|0);d=f;f=d>>25;d=(d&33554431)<<7|b>>>25;b=we(C,ga,121665,0)+d|0;e=f+Z|0;d=b>>>0>>0?e+1|0:e;f=d+N|0;e=b+x|0;f=e>>>0>>0?f+1|0:f;l=d>>31>>>6|0;b=b+l|0;d=l>>>0>b>>>0?d+1|0:d;l=b&-67108864;G[g+2496>>2]=e-l;G[g+2500>>2]=f-((e>>>0>>0)+d|0);e=d;d=d>>26;f=(e&67108863)<<6|b>>>26;b=we(S,sa,121665,0)+f|0;e=d+Z|0;e=b>>>0>>0?e+1|0:e;f=e+W|0;d=b+o|0;f=d>>>0>>0?f+1|0:f;l=d;d=f;f=e;e=e>>31>>>7|0;b=b+e|0;if(e>>>0>b>>>0){f=f+1|0}e=b&-33554432;G[g+2504>>2]=l-e;G[g+2508>>2]=d-((e>>>0>l>>>0)+f|0);e=T+na|0;d=v+U|0;e=d>>>0>>0?e+1|0:e;l=V&-33554432;m=d-l|0;s=e-((d>>>0>>0)+$|0)|0;e=f>>25;b=(f&33554431)<<7|b>>>25;d=R&-67108864;f=u-d|0;d=(la-((d>>>0>u>>>0)+X|0)|0)+e|0;l=f;f=b+f|0;d=l>>>0>f>>>0?d+1|0:d;e=we(b,e,18,0);b=e+f|0;d=Z+d|0;l=b;d=b>>>0>>0?d+1|0:d;f=d>>31>>>6|0;b=b+f|0;e=f>>>0>b>>>0?d+1|0:d;n=(e&67108863)<<6|b>>>26;m=n+m|0;f=(e>>26)+s|0;G[g+2440>>2]=m;G[g+2444>>2]=m>>>0>>0?f+1|0:f;d=d+oa|0;f=l+z|0;d=f>>>0>>0?d+1|0:d;b=b&-67108864;G[g+2432>>2]=f-b;G[g+2436>>2]=d-((b>>>0>f>>>0)+e|0);b=P;C=g+2432|0;wa(b,fa,C);l=G[b+64>>2];U=G[b+68>>2];t=G[b+144>>2];W=G[b+148>>2];P=G[b+56>>2];T=G[b+60>>2];m=G[b+136>>2];S=G[b+140>>2];s=G[b+48>>2];V=G[b+52>>2];n=G[b+128>>2];O=G[b+132>>2];x=G[b+40>>2];$=G[b+44>>2];o=G[b+120>>2];_=G[b+124>>2];v=G[b+32>>2];da=G[b+36>>2];z=G[b+112>>2];R=G[b+116>>2];u=G[b+24>>2];ea=G[b+28>>2];A=G[b+104>>2];X=G[b+108>>2];f=G[b+16>>2];e=G[b+20>>2];d=G[b+96>>2];r=G[b+100>>2];D=G[b+8>>2];L=G[b+12>>2];B=G[b+88>>2];K=G[b+92>>2];I=G[b>>2];Q=G[b+4>>2];q=G[b+80>>2];J=G[b+84>>2];G[b+80>>2]=0;G[b+84>>2]=0;e=e+r|0;N=f;f=d+f|0;e=N>>>0>f>>>0?e+1|0:e;r=we(d,r,18,0);d=r+f|0;f=Z+e|0;N=d;r=d>>>0>>0?f+1|0:f;d=K+L|0;e=B+D|0;d=e>>>0>>0?d+1|0:d;f=we(B,K,18,0);e=f+e|0;d=Z+d|0;L=e;B=e>>>0>>0?d+1|0:d;f=J+Q|0;d=q+I|0;f=d>>>0>>0?f+1|0:f;D=we(q,J,18,0);d=D+d|0;e=Z+f|0;e=d>>>0>>0?e+1|0:e;D=d;I=e;f=e;q=e>>31>>>6|0;d=d+q|0;if(q>>>0>d>>>0){f=e+1|0}q=d;K=f;e=f>>26;J=(f&67108863)<<6|d>>>26;f=J+L|0;d=e+B|0;B=f;d=f>>>0>>0?d+1|0:d;J=d;e=f;L=d>>31>>>7|0;e=e+L|0;f=L>>>0>e>>>0?d+1|0:d;L=e;Q=f;d=f>>25;f=(f&33554431)<<7|e>>>25;e=f+N|0;d=d+r|0;d=e>>>0>>0?d+1|0:d;r=d;f=e;e=d;N=d>>31>>>6|0;d=f+N|0;e=N>>>0>d>>>0?e+1|0:e;N=d;d=d&-67108864;G[b+16>>2]=f-d;G[b+20>>2]=r-((d>>>0>f>>>0)+e|0);d=X+ea|0;f=u+A|0;d=f>>>0>>0?d+1|0:d;u=we(A,X,18,0);A=u+f|0;f=Z+d|0;u=u>>>0>A>>>0?f+1|0:f;d=A;A=(e&67108863)<<6|N>>>26;d=d+A|0;e=(e>>26)+u|0;e=d>>>0>>0?e+1|0:e;u=e;f=d;d=e;e=d>>31>>>7|0;r=e;e=e+f|0;if(r>>>0>e>>>0){d=d+1|0}A=e;e=e&-33554432;G[b+24>>2]=f-e;G[b+28>>2]=u-((e>>>0>f>>>0)+d|0);f=R+da|0;e=v+z|0;f=e>>>0>>0?f+1|0:f;r=e;e=we(z,R,18,0);v=r+e|0;f=Z+f|0;f=e>>>0>v>>>0?f+1|0:f;e=d;d=d>>25;r=v;v=(e&33554431)<<7|A>>>25;e=r+v|0;d=d+f|0;d=e>>>0>>0?d+1|0:d;v=d;f=e;e=d;z=d>>31>>>6|0;d=f+z|0;e=z>>>0>d>>>0?e+1|0:e;z=d;d=d&-67108864;G[b+32>>2]=f-d;G[b+36>>2]=v-((d>>>0>f>>>0)+e|0);d=_+$|0;f=o+x|0;d=f>>>0>>0?d+1|0:d;x=we(o,_,18,0);o=x+f|0;f=Z+d|0;x=o>>>0>>0?f+1|0:f;d=o;o=(e&67108863)<<6|z>>>26;d=d+o|0;e=(e>>26)+x|0;e=d>>>0>>0?e+1|0:e;x=e;f=d;d=e;e=d>>31>>>7|0;o=e;e=e+f|0;if(o>>>0>e>>>0){d=d+1|0}o=e;e=e&-33554432;G[b+40>>2]=f-e;G[b+44>>2]=x-((e>>>0>f>>>0)+d|0);f=O+V|0;e=n+s|0;f=e>>>0>>0?f+1|0:f;r=e;e=we(n,O,18,0);s=r+e|0;f=Z+f|0;f=e>>>0>s>>>0?f+1|0:f;e=d;d=d>>25;n=s;s=(e&33554431)<<7|o>>>25;e=n+s|0;d=d+f|0;d=e>>>0>>0?d+1|0:d;s=d;f=e;e=d;n=d>>31>>>6|0;d=f+n|0;e=n>>>0>d>>>0?e+1|0:e;n=d;d=d&-67108864;G[b+48>>2]=f-d;G[b+52>>2]=s-((d>>>0>f>>>0)+e|0);d=T+S|0;f=m+P|0;d=f>>>0

>>0?d+1|0:d;P=we(m,S,18,0);m=P+f|0;f=Z+d|0;P=m>>>0

>>0?f+1|0:f;d=m;m=(e&67108863)<<6|n>>>26;d=d+m|0;e=(e>>26)+P|0;e=d>>>0>>0?e+1|0:e;P=e;f=d;d=e;e=d>>31>>>7|0;m=e;e=e+f|0;if(m>>>0>e>>>0){d=d+1|0}m=e;e=e&-33554432;G[b+56>>2]=f-e;G[b+60>>2]=P-((e>>>0>f>>>0)+d|0);f=U+W|0;e=l+t|0;f=e>>>0>>0?f+1|0:f;l=e;e=we(t,W,18,0);l=l+e|0;f=Z+f|0;f=e>>>0>l>>>0?f+1|0:f;e=d;d=d>>25;n=l;l=(e&33554431)<<7|m>>>25;e=n+l|0;d=d+f|0;d=e>>>0>>0?d+1|0:d;l=d;f=e;e=d;t=d>>31>>>6|0;d=f+t|0;e=t>>>0>d>>>0?e+1|0:e;t=d&-67108864;G[b+64>>2]=f-t;G[b+68>>2]=l-((f>>>0>>0)+e|0);f=e>>26;t=(e&67108863)<<6|d>>>26;e=t+G[b+72>>2]|0;d=f+G[b+76>>2]|0;d=e>>>0>>0?d+1|0:d;l=d;f=d;t=d>>31>>>7|0;d=e+t|0;f=t>>>0>d>>>0?f+1|0:f;t=d&-33554432;G[b+72>>2]=e-t;G[b+76>>2]=l-((e>>>0>>0)+f|0);e=L&-33554432;P=B-e|0;m=J-((e>>>0>B>>>0)+Q|0)|0;e=d;d=f>>25;f=(f&33554431)<<7|e>>>25;t=q&-67108864;l=D-t|0;e=d;d=d+(I-((t>>>0>D>>>0)+K|0)|0)|0;n=l;l=f+l|0;d=n>>>0>l>>>0?d+1|0:d;n=l;l=we(f,e,18,0);e=n+l|0;f=Z+d|0;f=e>>>0>>0?f+1|0:f;t=f;d=f;f=d>>31>>>6|0;l=e+f|0;if(f>>>0>l>>>0){d=d+1|0}s=(d&67108863)<<6|l>>>26;P=s+P|0;f=(d>>26)+m|0;G[b+8>>2]=P;G[b+12>>2]=s>>>0>P>>>0?f+1|0:f;f=l&-67108864;G[b>>2]=e-f;G[b+4>>2]=t-((e>>>0>>0)+d|0);d=G[p>>2];e=G[c>>2];f=F&(d^e);e=e^f;G[c>>2]=e;G[c+4>>2]=e>>31;d=d^f;G[p>>2]=d;G[p+4>>2]=d>>31;d=G[p+8>>2];e=G[c+8>>2];f=F&(d^e);e=e^f;G[c+8>>2]=e;G[c+12>>2]=e>>31;d=d^f;G[p+8>>2]=d;G[p+12>>2]=d>>31;d=G[p+16>>2];e=G[c+16>>2];f=F&(d^e);e=e^f;G[c+16>>2]=e;G[c+20>>2]=e>>31;d=d^f;G[p+16>>2]=d;G[p+20>>2]=d>>31;d=G[p+24>>2];e=G[c+24>>2];f=F&(d^e);e=e^f;G[c+24>>2]=e;G[c+28>>2]=e>>31;d=d^f;G[p+24>>2]=d;G[p+28>>2]=d>>31;d=G[p+32>>2];e=G[c+32>>2];f=F&(d^e);e=e^f;G[c+32>>2]=e;G[c+36>>2]=e>>31;d=d^f;G[p+32>>2]=d;G[p+36>>2]=d>>31;d=G[p+40>>2];e=G[c+40>>2];f=F&(d^e);e=e^f;G[c+40>>2]=e;G[c+44>>2]=e>>31;d=d^f;G[p+40>>2]=d;G[p+44>>2]=d>>31;d=G[p+48>>2];e=G[c+48>>2];f=F&(d^e);e=e^f;G[c+48>>2]=e;G[c+52>>2]=e>>31;d=d^f;G[p+48>>2]=d;G[p+52>>2]=d>>31;d=G[p+56>>2];e=G[c+56>>2];f=F&(d^e);e=e^f;G[c+56>>2]=e;G[c+60>>2]=e>>31;d=d^f;G[p+56>>2]=d;G[p+60>>2]=d>>31;d=G[p+64>>2];e=G[c+64>>2];f=F&(d^e);e=e^f;G[c+64>>2]=e;G[c+68>>2]=e>>31;d=d^f;G[p+64>>2]=d;G[p+68>>2]=d>>31;d=G[p+72>>2];e=G[c+72>>2];f=F&(d^e);e=e^f;G[c+72>>2]=e;G[c+76>>2]=e>>31;d=d^f;G[p+72>>2]=d;G[p+76>>2]=d>>31;d=G[y>>2];e=G[b>>2];f=F&(d^e);e=e^f;G[b>>2]=e;G[b+4>>2]=e>>31;d=d^f;G[y>>2]=d;G[y+4>>2]=d>>31;d=G[y+8>>2];e=G[b+8>>2];f=F&(d^e);e=e^f;G[b+8>>2]=e;G[b+12>>2]=e>>31;d=d^f;G[y+8>>2]=d;G[y+12>>2]=d>>31;d=G[y+16>>2];e=G[b+16>>2];f=F&(d^e);e=e^f;G[b+16>>2]=e;G[b+20>>2]=e>>31;d=d^f;G[y+16>>2]=d;G[y+20>>2]=d>>31;d=G[y+24>>2];e=G[b+24>>2];f=F&(d^e);e=e^f;G[b+24>>2]=e;G[b+28>>2]=e>>31;d=d^f;G[y+24>>2]=d;G[y+28>>2]=d>>31;d=G[y+32>>2];e=G[b+32>>2];f=F&(d^e);e=e^f;G[b+32>>2]=e;G[b+36>>2]=e>>31;d=d^f;G[y+32>>2]=d;G[y+36>>2]=d>>31;d=G[y+40>>2];e=G[b+40>>2];f=F&(d^e);e=e^f;G[b+40>>2]=e;G[b+44>>2]=e>>31;d=d^f;G[y+40>>2]=d;G[y+44>>2]=d>>31;d=G[y+48>>2];e=G[b+48>>2];f=F&(d^e);e=e^f;G[b+48>>2]=e;G[b+52>>2]=e>>31;d=d^f;G[y+48>>2]=d;G[y+52>>2]=d>>31;d=G[y+56>>2];e=G[b+56>>2];f=F&(d^e);e=e^f;G[b+56>>2]=e;G[b+60>>2]=e>>31;d=d^f;G[y+56>>2]=d;G[y+60>>2]=d>>31;d=G[y+64>>2];e=G[b+64>>2];f=F&(d^e);e=e^f;G[b+64>>2]=e;G[b+68>>2]=e>>31;d=d^f;G[y+64>>2]=d;G[y+68>>2]=d>>31;d=G[y+72>>2];e=G[b+72>>2];f=F&(d^e);e=e^f;G[b+72>>2]=e;G[b+76>>2]=e>>31;d=d^f;G[y+72>>2]=d;G[y+76>>2]=d>>31;va=va<<1;P=w;t=h;l=j;xa=xa+1|0;if((xa|0)!=8){continue}break}ua=ua+1|0;if((ua|0)!=32){continue}break}ma(g+32|0,c,80);ma(ca,b,80);ja(fa,ca);i=g+672|0;ja(i,fa);c=g+832|0;ja(c,i);wa(C,c,ca);b=G[g+2576>>2];f=G[g+2496>>2];d=b+f|0;h=G[g+2580>>2];e=h+G[g+2500>>2]|0;e=d>>>0>>0?e+1|0:e;f=d;d=we(b,h,18,0);b=f+d|0;f=Z+e|0;G[g+2496>>2]=b;G[g+2500>>2]=b>>>0>>0?f+1|0:f;b=G[g+2568>>2];f=G[g+2488>>2];e=b+f|0;h=G[g+2572>>2];d=h+G[g+2492>>2]|0;d=e>>>0>>0?d+1|0:d;f=e;e=we(b,h,18,0);b=f+e|0;f=Z+d|0;G[g+2488>>2]=b;G[g+2492>>2]=b>>>0>>0?f+1|0:f;b=G[g+2560>>2];f=G[g+2480>>2];e=b+f|0;h=G[g+2564>>2];d=h+G[g+2484>>2]|0;d=e>>>0>>0?d+1|0:d;f=we(b,h,18,0);b=f+e|0;e=Z+d|0;G[g+2480>>2]=b;G[g+2484>>2]=b>>>0>>0?e+1|0:e;b=G[g+2552>>2];e=G[g+2472>>2];d=b+e|0;h=G[g+2556>>2];f=h+G[g+2476>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,h,18,0);b=e+d|0;d=Z+f|0;G[g+2472>>2]=b;G[g+2476>>2]=b>>>0>>0?d+1|0:d;b=G[g+2544>>2];e=G[g+2464>>2];d=b+e|0;h=G[g+2548>>2];f=h+G[g+2468>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,h,18,0);b=e+d|0;d=Z+f|0;G[g+2464>>2]=b;G[g+2468>>2]=b>>>0>>0?d+1|0:d;b=G[g+2536>>2];f=G[g+2456>>2];d=b+f|0;h=G[g+2540>>2];e=h+G[g+2460>>2]|0;e=d>>>0>>0?e+1|0:e;f=d;d=we(b,h,18,0);b=f+d|0;f=Z+e|0;G[g+2456>>2]=b;G[g+2460>>2]=b>>>0>>0?f+1|0:f;b=G[g+2528>>2];f=G[g+2448>>2];e=b+f|0;h=G[g+2532>>2];d=h+G[g+2452>>2]|0;d=e>>>0>>0?d+1|0:d;f=e;e=we(b,h,18,0);b=f+e|0;f=Z+d|0;G[g+2448>>2]=b;G[g+2452>>2]=b>>>0>>0?f+1|0:f;b=G[g+2520>>2];f=G[g+2440>>2];e=b+f|0;h=G[g+2524>>2];d=h+G[g+2444>>2]|0;d=e>>>0>>0?d+1|0:d;f=we(b,h,18,0);b=f+e|0;e=Z+d|0;G[g+2440>>2]=b;G[g+2444>>2]=b>>>0>>0?e+1|0:e;b=G[g+2512>>2];e=G[g+2432>>2];d=b+e|0;h=G[g+2516>>2];f=h+G[g+2436>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,h,18,0);b=e+d|0;d=Z+f|0;G[g+2432>>2]=b;G[g+2436>>2]=b>>>0>>0?d+1|0:d;za(C);ma(qa,C,80);wa(C,qa,fa);b=G[g+2576>>2];e=G[g+2496>>2];d=b+e|0;h=G[g+2580>>2];f=h+G[g+2500>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,h,18,0);b=e+d|0;d=Z+f|0;G[g+2496>>2]=b;G[g+2500>>2]=b>>>0>>0?d+1|0:d;b=G[g+2568>>2];f=G[g+2488>>2];d=b+f|0;h=G[g+2572>>2];e=h+G[g+2492>>2]|0;e=d>>>0>>0?e+1|0:e;f=d;d=we(b,h,18,0);b=f+d|0;f=Z+e|0;G[g+2488>>2]=b;G[g+2492>>2]=b>>>0>>0?f+1|0:f;b=G[g+2560>>2];f=G[g+2480>>2];e=b+f|0;h=G[g+2564>>2];d=h+G[g+2484>>2]|0;d=e>>>0>>0?d+1|0:d;f=e;e=we(b,h,18,0);b=f+e|0;f=Z+d|0;G[g+2480>>2]=b;G[g+2484>>2]=b>>>0>>0?f+1|0:f;b=G[g+2552>>2];f=G[g+2472>>2];e=b+f|0;h=G[g+2556>>2];d=h+G[g+2476>>2]|0;d=e>>>0>>0?d+1|0:d;f=we(b,h,18,0);b=f+e|0;e=Z+d|0;G[g+2472>>2]=b;G[g+2476>>2]=b>>>0>>0?e+1|0:e;b=G[g+2544>>2];e=G[g+2464>>2];d=b+e|0;h=G[g+2548>>2];f=h+G[g+2468>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,h,18,0);b=e+d|0;d=Z+f|0;G[g+2464>>2]=b;G[g+2468>>2]=b>>>0>>0?d+1|0:d;b=G[g+2536>>2];e=G[g+2456>>2];d=b+e|0;h=G[g+2540>>2];f=h+G[g+2460>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,h,18,0);b=e+d|0;d=Z+f|0;G[g+2456>>2]=b;G[g+2460>>2]=b>>>0>>0?d+1|0:d;b=G[g+2528>>2];f=G[g+2448>>2];d=b+f|0;h=G[g+2532>>2];e=h+G[g+2452>>2]|0;e=d>>>0>>0?e+1|0:e;f=d;d=we(b,h,18,0);b=f+d|0;f=Z+e|0;G[g+2448>>2]=b;G[g+2452>>2]=b>>>0>>0?f+1|0:f;b=G[g+2520>>2];f=G[g+2440>>2];e=b+f|0;h=G[g+2524>>2];d=h+G[g+2444>>2]|0;d=e>>>0>>0?d+1|0:d;f=e;e=we(b,h,18,0);b=f+e|0;f=Z+d|0;G[g+2440>>2]=b;G[g+2444>>2]=b>>>0>>0?f+1|0:f;b=G[g+2512>>2];f=G[g+2432>>2];e=b+f|0;h=G[g+2516>>2];d=h+G[g+2436>>2]|0;d=e>>>0>>0?d+1|0:d;f=we(b,h,18,0);b=f+e|0;e=Z+d|0;G[g+2432>>2]=b;G[g+2436>>2]=b>>>0>>0?e+1|0:e;za(C);ma(ha,C,80);ja(c,ha);wa(C,c,qa);b=G[g+2576>>2];e=G[g+2496>>2];d=b+e|0;h=G[g+2580>>2];f=h+G[g+2500>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,h,18,0);b=e+d|0;d=Z+f|0;G[g+2496>>2]=b;G[g+2500>>2]=b>>>0>>0?d+1|0:d;b=G[g+2568>>2];e=G[g+2488>>2];d=b+e|0;h=G[g+2572>>2];f=h+G[g+2492>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,h,18,0);b=e+d|0;d=Z+f|0;G[g+2488>>2]=b;G[g+2492>>2]=b>>>0>>0?d+1|0:d;b=G[g+2560>>2];f=G[g+2480>>2];d=b+f|0;h=G[g+2564>>2];e=h+G[g+2484>>2]|0;e=d>>>0>>0?e+1|0:e;f=d;d=we(b,h,18,0);b=f+d|0;f=Z+e|0;G[g+2480>>2]=b;G[g+2484>>2]=b>>>0>>0?f+1|0:f;b=G[g+2552>>2];f=G[g+2472>>2];e=b+f|0;h=G[g+2556>>2];d=h+G[g+2476>>2]|0;d=e>>>0>>0?d+1|0:d;f=e;e=we(b,h,18,0);b=f+e|0;f=Z+d|0;G[g+2472>>2]=b;G[g+2476>>2]=b>>>0>>0?f+1|0:f;b=G[g+2544>>2];f=G[g+2464>>2];e=b+f|0;h=G[g+2548>>2];d=h+G[g+2468>>2]|0;d=e>>>0>>0?d+1|0:d;f=we(b,h,18,0);b=f+e|0;e=Z+d|0;G[g+2464>>2]=b;G[g+2468>>2]=b>>>0>>0?e+1|0:e;b=G[g+2536>>2];e=G[g+2456>>2];d=b+e|0;h=G[g+2540>>2];f=h+G[g+2460>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,h,18,0);b=e+d|0;d=Z+f|0;G[g+2456>>2]=b;G[g+2460>>2]=b>>>0>>0?d+1|0:d;b=G[g+2528>>2];e=G[g+2448>>2];d=b+e|0;h=G[g+2532>>2];f=h+G[g+2452>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,h,18,0);b=e+d|0;d=Z+f|0;G[g+2448>>2]=b;G[g+2452>>2]=b>>>0>>0?d+1|0:d;b=G[g+2520>>2];f=G[g+2440>>2];d=b+f|0;h=G[g+2524>>2];e=h+G[g+2444>>2]|0;e=d>>>0>>0?e+1|0:e;f=d;d=we(b,h,18,0);b=f+d|0;f=Z+e|0;G[g+2440>>2]=b;G[g+2444>>2]=b>>>0>>0?f+1|0:f;b=G[g+2512>>2];f=G[g+2432>>2];e=b+f|0;h=G[g+2516>>2];d=h+G[g+2436>>2]|0;d=e>>>0>>0?d+1|0:d;f=e;e=we(b,h,18,0);b=f+e|0;f=Z+d|0;G[g+2432>>2]=b;G[g+2436>>2]=b>>>0>>0?f+1|0:f;za(C);ma(ba,C,80);ja(c,ba);ja(i,c);ja(c,i);ja(i,c);ja(c,i);wa(C,c,ba);b=G[g+2576>>2];f=G[g+2496>>2];e=b+f|0;h=G[g+2580>>2];d=h+G[g+2500>>2]|0;d=e>>>0>>0?d+1|0:d;f=we(b,h,18,0);b=f+e|0;e=Z+d|0;G[g+2496>>2]=b;G[g+2500>>2]=b>>>0>>0?e+1|0:e;b=G[g+2568>>2];e=G[g+2488>>2];d=b+e|0;h=G[g+2572>>2];f=h+G[g+2492>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,h,18,0);b=e+d|0;d=Z+f|0;G[g+2488>>2]=b;G[g+2492>>2]=b>>>0>>0?d+1|0:d;b=G[g+2560>>2];e=G[g+2480>>2];d=b+e|0;h=G[g+2564>>2];f=h+G[g+2484>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,h,18,0);b=e+d|0;d=Z+f|0;G[g+2480>>2]=b;G[g+2484>>2]=b>>>0>>0?d+1|0:d;b=G[g+2552>>2];f=G[g+2472>>2];d=b+f|0;h=G[g+2556>>2];e=h+G[g+2476>>2]|0;e=d>>>0>>0?e+1|0:e;f=d;d=we(b,h,18,0);b=f+d|0;f=Z+e|0;G[g+2472>>2]=b;G[g+2476>>2]=b>>>0>>0?f+1|0:f;b=G[g+2544>>2];f=G[g+2464>>2];e=b+f|0;h=G[g+2548>>2];d=h+G[g+2468>>2]|0;d=e>>>0>>0?d+1|0:d;f=e;e=we(b,h,18,0);b=f+e|0;f=Z+d|0;G[g+2464>>2]=b;G[g+2468>>2]=b>>>0>>0?f+1|0:f;b=G[g+2536>>2];f=G[g+2456>>2];e=b+f|0;h=G[g+2540>>2];d=h+G[g+2460>>2]|0;d=e>>>0>>0?d+1|0:d;f=we(b,h,18,0);b=f+e|0;e=Z+d|0;G[g+2456>>2]=b;G[g+2460>>2]=b>>>0>>0?e+1|0:e;b=G[g+2528>>2];e=G[g+2448>>2];d=b+e|0;h=G[g+2532>>2];f=h+G[g+2452>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,h,18,0);b=e+d|0;d=Z+f|0;G[g+2448>>2]=b;G[g+2452>>2]=b>>>0>>0?d+1|0:d;b=G[g+2520>>2];e=G[g+2440>>2];d=b+e|0;h=G[g+2524>>2];f=h+G[g+2444>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,h,18,0);b=e+d|0;d=Z+f|0;G[g+2440>>2]=b;G[g+2444>>2]=b>>>0>>0?d+1|0:d;b=G[g+2512>>2];f=G[g+2432>>2];d=b+f|0;h=G[g+2516>>2];e=h+G[g+2436>>2]|0;e=d>>>0>>0?e+1|0:e;f=d;d=we(b,h,18,0);b=f+d|0;f=Z+e|0;G[g+2432>>2]=b;G[g+2436>>2]=b>>>0>>0?f+1|0:f;za(C);ma(aa,C,80);ja(c,aa);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);wa(C,i,aa);b=G[g+2576>>2];f=G[g+2496>>2];e=b+f|0;h=G[g+2580>>2];d=h+G[g+2500>>2]|0;d=e>>>0>>0?d+1|0:d;f=e;e=we(b,h,18,0);b=f+e|0;f=Z+d|0;G[g+2496>>2]=b;G[g+2500>>2]=b>>>0>>0?f+1|0:f;b=G[g+2568>>2];f=G[g+2488>>2];e=b+f|0;h=G[g+2572>>2];d=h+G[g+2492>>2]|0;d=e>>>0>>0?d+1|0:d;f=we(b,h,18,0);b=f+e|0;e=Z+d|0;G[g+2488>>2]=b;G[g+2492>>2]=b>>>0>>0?e+1|0:e;b=G[g+2560>>2];e=G[g+2480>>2];d=b+e|0;h=G[g+2564>>2];f=h+G[g+2484>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,h,18,0);b=e+d|0;d=Z+f|0;G[g+2480>>2]=b;G[g+2484>>2]=b>>>0>>0?d+1|0:d;b=G[g+2552>>2];e=G[g+2472>>2];d=b+e|0;h=G[g+2556>>2];f=h+G[g+2476>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,h,18,0);b=e+d|0;d=Z+f|0;G[g+2472>>2]=b;G[g+2476>>2]=b>>>0>>0?d+1|0:d;b=G[g+2544>>2];f=G[g+2464>>2];d=b+f|0;h=G[g+2548>>2];e=h+G[g+2468>>2]|0;e=d>>>0>>0?e+1|0:e;f=d;d=we(b,h,18,0);b=f+d|0;f=Z+e|0;G[g+2464>>2]=b;G[g+2468>>2]=b>>>0>>0?f+1|0:f;b=G[g+2536>>2];f=G[g+2456>>2];e=b+f|0;h=G[g+2540>>2];d=h+G[g+2460>>2]|0;d=e>>>0>>0?d+1|0:d;f=e;e=we(b,h,18,0);b=f+e|0;f=Z+d|0;G[g+2456>>2]=b;G[g+2460>>2]=b>>>0>>0?f+1|0:f;b=G[g+2528>>2];f=G[g+2448>>2];e=b+f|0;h=G[g+2532>>2];d=h+G[g+2452>>2]|0;d=e>>>0>>0?d+1|0:d;f=we(b,h,18,0);b=f+e|0;e=Z+d|0;G[g+2448>>2]=b;G[g+2452>>2]=b>>>0>>0?e+1|0:e;b=G[g+2520>>2];e=G[g+2440>>2];d=b+e|0;h=G[g+2524>>2];f=h+G[g+2444>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,h,18,0);b=e+d|0;d=Z+f|0;G[g+2440>>2]=b;G[g+2444>>2]=b>>>0>>0?d+1|0:d;b=G[g+2512>>2];e=G[g+2432>>2];d=b+e|0;h=G[g+2516>>2];f=h+G[g+2436>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,h,18,0);b=e+d|0;d=Z+f|0;G[g+2432>>2]=b;G[g+2436>>2]=b>>>0>>0?d+1|0:d;za(C);b=g+1312|0;ma(b,C,80);ja(c,b);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);wa(C,i,b);b=G[g+2576>>2];f=G[g+2496>>2];d=b+f|0;h=G[g+2580>>2];e=h+G[g+2500>>2]|0;e=d>>>0>>0?e+1|0:e;f=d;d=we(b,h,18,0);b=f+d|0;f=Z+e|0;G[g+2496>>2]=b;G[g+2500>>2]=b>>>0>>0?f+1|0:f;b=G[g+2568>>2];f=G[g+2488>>2];e=b+f|0;h=G[g+2572>>2];d=h+G[g+2492>>2]|0;d=e>>>0>>0?d+1|0:d;f=e;e=we(b,h,18,0);b=f+e|0;f=Z+d|0;G[g+2488>>2]=b;G[g+2492>>2]=b>>>0>>0?f+1|0:f;b=G[g+2560>>2];f=G[g+2480>>2];e=b+f|0;h=G[g+2564>>2];d=h+G[g+2484>>2]|0;d=e>>>0>>0?d+1|0:d;f=we(b,h,18,0);b=f+e|0;e=Z+d|0;G[g+2480>>2]=b;G[g+2484>>2]=b>>>0>>0?e+1|0:e;b=G[g+2552>>2];e=G[g+2472>>2];d=b+e|0;h=G[g+2556>>2];f=h+G[g+2476>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,h,18,0);b=e+d|0;d=Z+f|0;G[g+2472>>2]=b;G[g+2476>>2]=b>>>0>>0?d+1|0:d;b=G[g+2544>>2];e=G[g+2464>>2];d=b+e|0;h=G[g+2548>>2];f=h+G[g+2468>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,h,18,0);b=e+d|0;d=Z+f|0;G[g+2464>>2]=b;G[g+2468>>2]=b>>>0>>0?d+1|0:d;b=G[g+2536>>2];f=G[g+2456>>2];d=b+f|0;h=G[g+2540>>2];e=h+G[g+2460>>2]|0;e=d>>>0>>0?e+1|0:e;f=d;d=we(b,h,18,0);b=f+d|0;f=Z+e|0;G[g+2456>>2]=b;G[g+2460>>2]=b>>>0>>0?f+1|0:f;b=G[g+2528>>2];f=G[g+2448>>2];e=b+f|0;h=G[g+2532>>2];d=h+G[g+2452>>2]|0;d=e>>>0>>0?d+1|0:d;f=e;e=we(b,h,18,0);b=f+e|0;f=Z+d|0;G[g+2448>>2]=b;G[g+2452>>2]=b>>>0>>0?f+1|0:f;b=G[g+2520>>2];f=G[g+2440>>2];e=b+f|0;h=G[g+2524>>2];d=h+G[g+2444>>2]|0;d=e>>>0>>0?d+1|0:d;f=we(b,h,18,0);b=f+e|0;e=Z+d|0;G[g+2440>>2]=b;G[g+2444>>2]=b>>>0>>0?e+1|0:e;b=G[g+2512>>2];e=G[g+2432>>2];d=b+e|0;h=G[g+2516>>2];f=h+G[g+2436>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,h,18,0);b=e+d|0;d=Z+f|0;G[g+2432>>2]=b;G[g+2436>>2]=b>>>0>>0?d+1|0:d;za(C);ma(c,C,80);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);wa(C,c,aa);b=G[g+2576>>2];e=G[g+2496>>2];d=b+e|0;h=G[g+2580>>2];f=h+G[g+2500>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,h,18,0);b=e+d|0;d=Z+f|0;G[g+2496>>2]=b;G[g+2500>>2]=b>>>0>>0?d+1|0:d;b=G[g+2568>>2];f=G[g+2488>>2];d=b+f|0;h=G[g+2572>>2];e=h+G[g+2492>>2]|0;e=d>>>0>>0?e+1|0:e;f=d;d=we(b,h,18,0);b=f+d|0;f=Z+e|0;G[g+2488>>2]=b;G[g+2492>>2]=b>>>0>>0?f+1|0:f;b=G[g+2560>>2];f=G[g+2480>>2];e=b+f|0;h=G[g+2564>>2];d=h+G[g+2484>>2]|0;d=e>>>0>>0?d+1|0:d;f=e;e=we(b,h,18,0);b=f+e|0;f=Z+d|0;G[g+2480>>2]=b;G[g+2484>>2]=b>>>0>>0?f+1|0:f;b=G[g+2552>>2];f=G[g+2472>>2];e=b+f|0;h=G[g+2556>>2];d=h+G[g+2476>>2]|0;d=e>>>0>>0?d+1|0:d;f=we(b,h,18,0);b=f+e|0;e=Z+d|0;G[g+2472>>2]=b;G[g+2476>>2]=b>>>0>>0?e+1|0:e;b=G[g+2544>>2];e=G[g+2464>>2];d=b+e|0;h=G[g+2548>>2];f=h+G[g+2468>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,h,18,0);b=e+d|0;d=Z+f|0;G[g+2464>>2]=b;G[g+2468>>2]=b>>>0>>0?d+1|0:d;b=G[g+2536>>2];e=G[g+2456>>2];d=b+e|0;h=G[g+2540>>2];f=h+G[g+2460>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,h,18,0);b=e+d|0;d=Z+f|0;G[g+2456>>2]=b;G[g+2460>>2]=b>>>0>>0?d+1|0:d;b=G[g+2528>>2];f=G[g+2448>>2];d=b+f|0;h=G[g+2532>>2];e=h+G[g+2452>>2]|0;e=d>>>0>>0?e+1|0:e;f=d;d=we(b,h,18,0);b=f+d|0;f=Z+e|0;G[g+2448>>2]=b;G[g+2452>>2]=b>>>0>>0?f+1|0:f;b=G[g+2520>>2];f=G[g+2440>>2];e=b+f|0;h=G[g+2524>>2];d=h+G[g+2444>>2]|0;d=e>>>0>>0?d+1|0:d;f=e;e=we(b,h,18,0);b=f+e|0;f=Z+d|0;G[g+2440>>2]=b;G[g+2444>>2]=b>>>0>>0?f+1|0:f;b=G[g+2512>>2];f=G[g+2432>>2];e=b+f|0;h=G[g+2516>>2];d=h+G[g+2436>>2]|0;d=e>>>0>>0?d+1|0:d;f=we(b,h,18,0);b=f+e|0;e=Z+d|0;G[g+2432>>2]=b;G[g+2436>>2]=b>>>0>>0?e+1|0:e;za(C);b=g+1152|0;ma(b,C,80);ja(c,b);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);ja(c,i);ja(i,c);wa(C,i,b);b=G[g+2576>>2];e=G[g+2496>>2];d=b+e|0;h=G[g+2580>>2];f=h+G[g+2500>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,h,18,0);b=e+d|0;d=Z+f|0;G[g+2496>>2]=b;G[g+2500>>2]=b>>>0>>0?d+1|0:d;b=G[g+2568>>2];e=G[g+2488>>2];d=b+e|0;h=G[g+2572>>2];f=h+G[g+2492>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,h,18,0);b=e+d|0;d=Z+f|0;G[g+2488>>2]=b;G[g+2492>>2]=b>>>0>>0?d+1|0:d;b=G[g+2560>>2];f=G[g+2480>>2];d=b+f|0;h=G[g+2564>>2];e=h+G[g+2484>>2]|0;e=d>>>0>>0?e+1|0:e;f=d;d=we(b,h,18,0);b=f+d|0;f=Z+e|0;G[g+2480>>2]=b;G[g+2484>>2]=b>>>0>>0?f+1|0:f;b=G[g+2552>>2];f=G[g+2472>>2];e=b+f|0;h=G[g+2556>>2];d=h+G[g+2476>>2]|0;d=e>>>0>>0?d+1|0:d;f=e;e=we(b,h,18,0);b=f+e|0;f=Z+d|0;G[g+2472>>2]=b;G[g+2476>>2]=b>>>0>>0?f+1|0:f;b=G[g+2544>>2];f=G[g+2464>>2];e=b+f|0;h=G[g+2548>>2];d=h+G[g+2468>>2]|0;d=e>>>0>>0?d+1|0:d;f=we(b,h,18,0);b=f+e|0;e=Z+d|0;G[g+2464>>2]=b;G[g+2468>>2]=b>>>0>>0?e+1|0:e;b=G[g+2536>>2];e=G[g+2456>>2];d=b+e|0;h=G[g+2540>>2];f=h+G[g+2460>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,h,18,0);b=e+d|0;d=Z+f|0;G[g+2456>>2]=b;G[g+2460>>2]=b>>>0>>0?d+1|0:d;b=G[g+2528>>2];e=G[g+2448>>2];d=b+e|0;h=G[g+2532>>2];f=h+G[g+2452>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,h,18,0);b=e+d|0;d=Z+f|0;G[g+2448>>2]=b;G[g+2452>>2]=b>>>0>>0?d+1|0:d;b=G[g+2520>>2];f=G[g+2440>>2];d=b+f|0;h=G[g+2524>>2];e=h+G[g+2444>>2]|0;e=d>>>0>>0?e+1|0:e;f=d;d=we(b,h,18,0);b=f+d|0;f=Z+e|0;G[g+2440>>2]=b;G[g+2444>>2]=b>>>0>>0?f+1|0:f;b=G[g+2512>>2];f=G[g+2432>>2];e=b+f|0;h=G[g+2516>>2];d=h+G[g+2436>>2]|0;d=e>>>0>>0?d+1|0:d;f=e;e=we(b,h,18,0);b=f+e|0;f=Z+d|0;G[g+2432>>2]=b;G[g+2436>>2]=b>>>0>>0?f+1|0:f;za(C);b=g+992|0;ma(b,C,80);ja(i,b);ja(c,i);c=2;while(1){b=c>>>0<98;i=g+672|0;h=g+832|0;ja(i,h);ja(h,i);c=c+2|0;if(b){continue}break}c=g+2432|0;wa(c,h,g+992|0);b=G[g+2576>>2];f=G[g+2496>>2];e=b+f|0;j=G[g+2580>>2];d=j+G[g+2500>>2]|0;d=e>>>0>>0?d+1|0:d;f=we(b,j,18,0);b=f+e|0;e=Z+d|0;G[g+2496>>2]=b;G[g+2500>>2]=b>>>0>>0?e+1|0:e;b=G[g+2568>>2];e=G[g+2488>>2];d=b+e|0;j=G[g+2572>>2];f=j+G[g+2492>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,j,18,0);b=e+d|0;d=Z+f|0;G[g+2488>>2]=b;G[g+2492>>2]=b>>>0>>0?d+1|0:d;b=G[g+2560>>2];e=G[g+2480>>2];d=b+e|0;j=G[g+2564>>2];f=j+G[g+2484>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,j,18,0);b=e+d|0;d=Z+f|0;G[g+2480>>2]=b;G[g+2484>>2]=b>>>0>>0?d+1|0:d;b=G[g+2552>>2];f=G[g+2472>>2];d=b+f|0;j=G[g+2556>>2];e=j+G[g+2476>>2]|0;e=d>>>0>>0?e+1|0:e;f=d;d=we(b,j,18,0);b=f+d|0;f=Z+e|0;G[g+2472>>2]=b;G[g+2476>>2]=b>>>0>>0?f+1|0:f;b=G[g+2544>>2];f=G[g+2464>>2];e=b+f|0;j=G[g+2548>>2];d=j+G[g+2468>>2]|0;d=e>>>0>>0?d+1|0:d;f=e;e=we(b,j,18,0);b=f+e|0;f=Z+d|0;G[g+2464>>2]=b;G[g+2468>>2]=b>>>0>>0?f+1|0:f;b=G[g+2536>>2];f=G[g+2456>>2];e=b+f|0;j=G[g+2540>>2];d=j+G[g+2460>>2]|0;d=e>>>0>>0?d+1|0:d;f=we(b,j,18,0);b=f+e|0;e=Z+d|0;G[g+2456>>2]=b;G[g+2460>>2]=b>>>0>>0?e+1|0:e;b=G[g+2528>>2];e=G[g+2448>>2];d=b+e|0;j=G[g+2532>>2];f=j+G[g+2452>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,j,18,0);b=e+d|0;d=Z+f|0;G[g+2448>>2]=b;G[g+2452>>2]=b>>>0>>0?d+1|0:d;b=G[g+2520>>2];e=G[g+2440>>2];d=b+e|0;j=G[g+2524>>2];f=j+G[g+2444>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,j,18,0);b=e+d|0;d=Z+f|0;G[g+2440>>2]=b;G[g+2444>>2]=b>>>0>>0?d+1|0:d;b=G[g+2512>>2];f=G[g+2432>>2];d=b+f|0;j=G[g+2516>>2];e=j+G[g+2436>>2]|0;e=d>>>0>>0?e+1|0:e;f=d;d=we(b,j,18,0);b=f+d|0;f=Z+e|0;G[g+2432>>2]=b;G[g+2436>>2]=b>>>0>>0?f+1|0:f;za(c);ma(i,c,80);ja(h,i);ja(i,h);ja(h,i);ja(i,h);ja(h,i);ja(i,h);ja(h,i);ja(i,h);ja(h,i);ja(i,h);ja(h,i);ja(i,h);ja(h,i);ja(i,h);ja(h,i);ja(i,h);ja(h,i);ja(i,h);ja(h,i);ja(i,h);ja(h,i);ja(i,h);ja(h,i);ja(i,h);ja(h,i);ja(i,h);ja(h,i);ja(i,h);ja(h,i);ja(i,h);ja(h,i);ja(i,h);ja(h,i);ja(i,h);ja(h,i);ja(i,h);ja(h,i);ja(i,h);ja(h,i);ja(i,h);ja(h,i);ja(i,h);ja(h,i);ja(i,h);ja(h,i);ja(i,h);ja(h,i);ja(i,h);ja(h,i);ja(i,h);wa(c,i,g+1152|0);b=G[g+2576>>2];f=G[g+2496>>2];e=b+f|0;j=G[g+2580>>2];d=j+G[g+2500>>2]|0;d=e>>>0>>0?d+1|0:d;f=e;e=we(b,j,18,0);b=f+e|0;f=Z+d|0;G[g+2496>>2]=b;G[g+2500>>2]=b>>>0>>0?f+1|0:f;b=G[g+2568>>2];f=G[g+2488>>2];e=b+f|0;j=G[g+2572>>2];d=j+G[g+2492>>2]|0;d=e>>>0>>0?d+1|0:d;f=we(b,j,18,0);b=f+e|0;e=Z+d|0;G[g+2488>>2]=b;G[g+2492>>2]=b>>>0>>0?e+1|0:e;b=G[g+2560>>2];e=G[g+2480>>2];d=b+e|0;j=G[g+2564>>2];f=j+G[g+2484>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,j,18,0);b=e+d|0;d=Z+f|0;G[g+2480>>2]=b;G[g+2484>>2]=b>>>0>>0?d+1|0:d;b=G[g+2552>>2];e=G[g+2472>>2];d=b+e|0;j=G[g+2556>>2];f=j+G[g+2476>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,j,18,0);b=e+d|0;d=Z+f|0;G[g+2472>>2]=b;G[g+2476>>2]=b>>>0>>0?d+1|0:d;b=G[g+2544>>2];f=G[g+2464>>2];d=b+f|0;j=G[g+2548>>2];e=j+G[g+2468>>2]|0;e=d>>>0>>0?e+1|0:e;f=d;d=we(b,j,18,0);b=f+d|0;f=Z+e|0;G[g+2464>>2]=b;G[g+2468>>2]=b>>>0>>0?f+1|0:f;b=G[g+2536>>2];f=G[g+2456>>2];e=b+f|0;j=G[g+2540>>2];d=j+G[g+2460>>2]|0;d=e>>>0>>0?d+1|0:d;f=e;e=we(b,j,18,0);b=f+e|0;f=Z+d|0;G[g+2456>>2]=b;G[g+2460>>2]=b>>>0>>0?f+1|0:f;b=G[g+2528>>2];f=G[g+2448>>2];e=b+f|0;j=G[g+2532>>2];d=j+G[g+2452>>2]|0;d=e>>>0>>0?d+1|0:d;f=we(b,j,18,0);b=f+e|0;e=Z+d|0;G[g+2448>>2]=b;G[g+2452>>2]=b>>>0>>0?e+1|0:e;b=G[g+2520>>2];e=G[g+2440>>2];d=b+e|0;j=G[g+2524>>2];f=j+G[g+2444>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,j,18,0);b=e+d|0;d=Z+f|0;G[g+2440>>2]=b;G[g+2444>>2]=b>>>0>>0?d+1|0:d;b=G[g+2512>>2];e=G[g+2432>>2];d=b+e|0;j=G[g+2516>>2];f=j+G[g+2436>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,j,18,0);b=e+d|0;d=Z+f|0;G[g+2432>>2]=b;G[g+2436>>2]=b>>>0>>0?d+1|0:d;za(c);ma(h,c,80);ja(i,h);ja(h,i);ja(i,h);ja(h,i);ja(i,h);wa(c,i,g+1792|0);b=G[g+2576>>2];f=G[g+2496>>2];d=b+f|0;i=G[g+2580>>2];e=i+G[g+2500>>2]|0;e=d>>>0>>0?e+1|0:e;f=d;d=we(b,i,18,0);b=f+d|0;f=Z+e|0;G[g+2496>>2]=b;G[g+2500>>2]=b>>>0>>0?f+1|0:f;b=G[g+2568>>2];f=G[g+2488>>2];e=b+f|0;i=G[g+2572>>2];d=i+G[g+2492>>2]|0;d=e>>>0>>0?d+1|0:d;f=e;e=we(b,i,18,0);b=f+e|0;f=Z+d|0;G[g+2488>>2]=b;G[g+2492>>2]=b>>>0>>0?f+1|0:f;b=G[g+2560>>2];f=G[g+2480>>2];e=b+f|0;i=G[g+2564>>2];d=i+G[g+2484>>2]|0;d=e>>>0>>0?d+1|0:d;f=we(b,i,18,0);b=f+e|0;e=Z+d|0;G[g+2480>>2]=b;G[g+2484>>2]=b>>>0>>0?e+1|0:e;b=G[g+2552>>2];e=G[g+2472>>2];d=b+e|0;i=G[g+2556>>2];f=i+G[g+2476>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,i,18,0);b=e+d|0;d=Z+f|0;G[g+2472>>2]=b;G[g+2476>>2]=b>>>0>>0?d+1|0:d;b=G[g+2544>>2];e=G[g+2464>>2];d=b+e|0;i=G[g+2548>>2];f=i+G[g+2468>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,i,18,0);b=e+d|0;d=Z+f|0;G[g+2464>>2]=b;G[g+2468>>2]=b>>>0>>0?d+1|0:d;b=G[g+2536>>2];f=G[g+2456>>2];d=b+f|0;i=G[g+2540>>2];e=i+G[g+2460>>2]|0;e=d>>>0>>0?e+1|0:e;f=d;d=we(b,i,18,0);b=f+d|0;f=Z+e|0;G[g+2456>>2]=b;G[g+2460>>2]=b>>>0>>0?f+1|0:f;b=G[g+2528>>2];f=G[g+2448>>2];e=b+f|0;i=G[g+2532>>2];d=i+G[g+2452>>2]|0;d=e>>>0>>0?d+1|0:d;f=e;e=we(b,i,18,0);b=f+e|0;f=Z+d|0;G[g+2448>>2]=b;G[g+2452>>2]=b>>>0>>0?f+1|0:f;b=G[g+2520>>2];f=G[g+2440>>2];e=b+f|0;i=G[g+2524>>2];d=i+G[g+2444>>2]|0;d=e>>>0>>0?d+1|0:d;f=we(b,i,18,0);b=f+e|0;e=Z+d|0;G[g+2440>>2]=b;G[g+2444>>2]=b>>>0>>0?e+1|0:e;b=G[g+2512>>2];e=G[g+2432>>2];d=b+e|0;i=G[g+2516>>2];f=i+G[g+2436>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,i,18,0);b=e+d|0;d=Z+f|0;G[g+2432>>2]=b;G[g+2436>>2]=b>>>0>>0?d+1|0:d;za(c);b=g+512|0;ma(b,c,80);wa(c,g+32|0,b);b=G[g+2576>>2];e=G[g+2496>>2];d=b+e|0;i=G[g+2580>>2];f=i+G[g+2500>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,i,18,0);b=e+d|0;d=Z+f|0;G[g+2496>>2]=b;G[g+2500>>2]=b>>>0>>0?d+1|0:d;b=G[g+2568>>2];f=G[g+2488>>2];d=b+f|0;i=G[g+2572>>2];e=i+G[g+2492>>2]|0;e=d>>>0>>0?e+1|0:e;f=d;d=we(b,i,18,0);b=f+d|0;f=Z+e|0;G[g+2488>>2]=b;G[g+2492>>2]=b>>>0>>0?f+1|0:f;b=G[g+2560>>2];f=G[g+2480>>2];e=b+f|0;i=G[g+2564>>2];d=i+G[g+2484>>2]|0;d=e>>>0>>0?d+1|0:d;f=e;e=we(b,i,18,0);b=f+e|0;f=Z+d|0;G[g+2480>>2]=b;G[g+2484>>2]=b>>>0>>0?f+1|0:f;b=G[g+2552>>2];f=G[g+2472>>2];e=b+f|0;i=G[g+2556>>2];d=i+G[g+2476>>2]|0;d=e>>>0>>0?d+1|0:d;f=we(b,i,18,0);b=f+e|0;e=Z+d|0;G[g+2472>>2]=b;G[g+2476>>2]=b>>>0>>0?e+1|0:e;b=G[g+2544>>2];e=G[g+2464>>2];d=b+e|0;i=G[g+2548>>2];f=i+G[g+2468>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,i,18,0);b=e+d|0;d=Z+f|0;G[g+2464>>2]=b;G[g+2468>>2]=b>>>0>>0?d+1|0:d;b=G[g+2536>>2];e=G[g+2456>>2];d=b+e|0;i=G[g+2540>>2];f=i+G[g+2460>>2]|0;f=d>>>0>>0?f+1|0:f;e=we(b,i,18,0);b=e+d|0;d=Z+f|0;G[g+2456>>2]=b;G[g+2460>>2]=b>>>0>>0?d+1|0:d;b=G[g+2528>>2];f=G[g+2448>>2];d=b+f|0;i=G[g+2532>>2];e=i+G[g+2452>>2]|0;e=d>>>0>>0?e+1|0:e;f=d;d=we(b,i,18,0);b=f+d|0;f=Z+e|0;G[g+2448>>2]=b;G[g+2452>>2]=b>>>0>>0?f+1|0:f;b=G[g+2520>>2];f=G[g+2440>>2];e=b+f|0;i=G[g+2524>>2];d=i+G[g+2444>>2]|0;d=e>>>0>>0?d+1|0:d;f=e;e=we(b,i,18,0);b=f+e|0;f=Z+d|0;G[g+2440>>2]=b;G[g+2444>>2]=b>>>0>>0?f+1|0:f;b=G[g+2512>>2];f=G[g+2432>>2];e=b+f|0;i=G[g+2516>>2];d=i+G[g+2436>>2]|0;d=e>>>0>>0?d+1|0:d;f=we(b,i,18,0);b=f+e|0;e=Z+d|0;G[g+2432>>2]=b;G[g+2436>>2]=b>>>0>>0?e+1|0:e;za(c);ma(g+2272|0,c,80);b=G[g+2272>>2];k=b>>31&b;c=G[g+2280>>2]+(k>>26)|0;t=c>>31&c;d=G[g+2288>>2]+(t>>25)|0;P=d>>31&d;e=G[g+2296>>2]+(P>>26)|0;m=e>>31&e;f=G[g+2304>>2]+(m>>25)|0;s=f>>31&f;i=G[g+2312>>2]+(s>>26)|0;n=i>>31&i;h=G[g+2320>>2]+(n>>25)|0;x=h>>31&h;j=G[g+2328>>2]+(x>>26)|0;o=j>>31&j;w=G[g+2336>>2]+(o>>25)|0;p=w>>31&w;l=G[g+2344>>2]+(p>>26)|0;v=l>>31&l;b=M(v>>25,19)+(b-(k&-67108864)|0)|0;z=b>>31&b;c=(z>>26)+(c-(t&-33554432)|0)|0;k=c>>31&c;r=c-(k&-33554432)|0;q=l-(v&-33554432)|0;c=(d-(P&-67108864)|0)+(k>>25)|0;l=c>>31&c;d=(e-(m&-33554432)|0)+(l>>26)|0;k=d>>31&d;e=(f-(s&-67108864)|0)+(k>>25)|0;t=e>>31&e;f=(i-(n&-33554432)|0)+(t>>26)|0;P=f>>31&f;i=(h-(x&-67108864)|0)+(P>>25)|0;m=i>>31&i;h=(j-(o&-33554432)|0)+(m>>26)|0;s=h>>31&h;j=(w-(p&-67108864)|0)+(s>>25)|0;n=j>>31&j;w=q+(n>>26)|0;x=w>>31&w;b=(b-(z&-67108864)|0)+M(x>>25,19)|0;o=b>>31&b;o=(r+(o>>26)|0)+(b-(o&-67108864)>>26)|0;c=(o>>25)+(c-(l&-67108864)|0)|0;l=(c>>26)+(d-(k&-33554432)|0)|0;k=(l>>25)+(e-(t&-67108864)|0)|0;t=(k>>26)+(f-(P&-33554432)|0)|0;P=(t>>25)+(i-(m&-67108864)|0)|0;h=(P>>26)+(h-(s&-33554432)|0)|0;j=(h>>25)+(j-(n&-67108864)|0)|0;w=(j>>26)+(w-(x&-33554432)|0)|0;m=M(w>>25,19)+(b&67108863)|0;d=(m>>26)+(o&33554431)|0;e=(d>>25)+(c&67108863)|0;f=(e>>26)+(l&33554431)|0;i=(f>>25)+(k&67108863)|0;b=(i>>26)+(t&33554431)|0;c=w&33554431;l=j&67108863;k=h&33554431;h=(P&67108863)+(b>>25)|0;j=k+(h>>26)|0;w=l+(j>>25)|0;c=c+(w>>26)|0;l=b&33554431;b=(c|-33554432)&(c&w)<<16&(w|-67108864)&((j|-33554432)&j<<16)&((h|-67108864)&h<<16)&((b|-33554432)&b<<16)&((i|-67108864)&i<<16)&((f|-33554432)&f<<16)&((e|-67108864)&e<<16)&((d|-33554432)&d<<16);b=b<<8&b;b=b<<4&b;b=b<<2&b;k=M(c>>25,19)+(m&67108863)|0;t=(b<<1&b)<0&(k|0)>67108844;b=t?33554431:0;l=l-b|0;E[a+16|0]=l;k=k+(t?-67108845:0)|0;E[a|0]=k;c=(c&33554431)-b|0;E[a+31|0]=c>>>18;E[a+30|0]=c>>>10;E[a+29|0]=c>>>2;m=w&67108863;w=t?67108863:0;t=m-w|0;E[a+27|0]=t>>>12;E[a+26|0]=t>>>4;j=(j&33554431)-b|0;E[a+24|0]=j>>>13;E[a+23|0]=j>>>5;h=(h&67108863)-w|0;E[a+21|0]=h>>>15;E[a+20|0]=h>>>7;E[a+18|0]=l>>>16;E[a+17|0]=l>>>8;i=i-w|0;E[a+15|0]=i>>>18;E[a+14|0]=i>>>10;E[a+13|0]=i>>>2;f=(f&33554431)-b|0;E[a+11|0]=f>>>11;E[a+10|0]=f>>>3;e=(e&67108863)-w|0;E[a+8|0]=e>>>13;E[a+7|0]=e>>>5;b=(d&33554431)-b|0;E[a+5|0]=b>>>14;E[a+4|0]=b>>>6;E[a+2|0]=k>>>16;E[a+1|0]=k>>>8;E[a+28|0]=c<<6|t>>>20;E[a+25|0]=t<<4|j>>>21;E[a+22|0]=j<<3|h>>>23;E[a+19|0]=h<<1|l>>>24;E[a+12|0]=i<<6|f>>>19;E[a+9|0]=f<<5|e>>>21;E[a+6|0]=e<<3|b>>>22;E[a+3|0]=b<<2|k>>>24;Y=g+2592|0}function eb(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,F=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0;g=Y-624|0;Y=g;G[g+352>>2]=327033209;G[g+356>>2]=1541459225;G[g+344>>2]=-79577749;G[g+348>>2]=528734635;G[g+336>>2]=725511199;G[g+340>>2]=-1694144372;G[g+328>>2]=-1377402159;G[g+332>>2]=1359893119;k=32;G[g+320>>2]=1595750129;G[g+324>>2]=-1521486534;G[g+312>>2]=-23791573;G[g+316>>2]=1013904242;G[g+304>>2]=-2067093701;G[g+308>>2]=-1150833019;G[g+360>>2]=0;G[g+296>>2]=-205731576;G[g+300>>2]=1779033703;G[g+288>>2]=0;G[g+292>>2]=0;o=a+32|0;i=o+32|0;l=g+364|0;while(1){f=G[g+360>>2];a:{if(!(f|k>>>0<128)){ya(g+288|0,i);e=G[g+292>>2];f=G[g+288>>2]+1024|0;e=f>>>0<1024?e+1|0:e;G[g+288>>2]=f;G[g+292>>2]=e;k=k-128|0;i=i+128|0;break a}s=128;e=128-f|0;m=e>>>0>k>>>0?k:e;if((f|0)!=128){e=m>>>0<=1?1:m;h=e&3;s=0;n=0;if(m>>>0>=4){f=e&-4;p=0;while(1){E[(G[g+360>>2]+n|0)+l|0]=H[i+n|0];e=n|1;E[(e+G[g+360>>2]|0)+l|0]=H[e+i|0];e=n|2;E[(e+G[g+360>>2]|0)+l|0]=H[e+i|0];e=n|3;E[(e+G[g+360>>2]|0)+l|0]=H[e+i|0];n=n+4|0;p=p+4|0;if((f|0)!=(p|0)){continue}break}}if(h){while(1){E[((G[g+360>>2]+n|0)+g|0)+364|0]=H[i+n|0];n=n+1|0;s=s+1|0;if((h|0)!=(s|0)){continue}break}}s=G[g+360>>2]}k=k-m|0;i=i+m|0;e=m+s|0;G[g+360>>2]=e;if((e|0)!=128){break a}ya(g+288|0,l);G[g+360>>2]=0;f=G[g+292>>2];e=G[g+288>>2]+1024|0;f=e>>>0<1024?f+1|0:f;G[g+288>>2]=e;G[g+292>>2]=f}if(k){continue}break}e=g+288|0;nb(e,b,c);f=e;e=g+160|0;gb(f,e);pb(e);Sb(g,e);i=g+224|0;qb(i,g+80|0);f=g+544|0;ka(f,g,i);e=g+496|0;ka(e,g+40|0,i);Ja(d,e);Ja(g+592|0,f);E[d+31|0]=H[d+31|0]^H[g+592|0]<<7;G[g+360>>2]=0;G[g+352>>2]=327033209;G[g+356>>2]=1541459225;G[g+344>>2]=-79577749;G[g+348>>2]=528734635;G[g+336>>2]=725511199;G[g+340>>2]=-1694144372;G[g+328>>2]=-1377402159;G[g+332>>2]=1359893119;G[g+320>>2]=1595750129;G[g+324>>2]=-1521486534;G[g+312>>2]=-23791573;G[g+316>>2]=1013904242;G[g+304>>2]=-2067093701;G[g+308>>2]=-1150833019;G[g+296>>2]=-205731576;G[g+300>>2]=1779033703;G[g+288>>2]=0;G[g+292>>2]=0;k=32;i=d;while(1){f=G[g+360>>2];b:{if(!(f|k>>>0<128)){ya(g+288|0,i);e=G[g+292>>2];f=G[g+288>>2]+1024|0;e=f>>>0<1024?e+1|0:e;G[g+288>>2]=f;G[g+292>>2]=e;k=k-128|0;i=i+128|0;break b}s=128;e=128-f|0;r=e>>>0>k>>>0?k:e;if((f|0)!=128){e=r>>>0<=1?1:r;m=e&3;p=0;n=0;if(r>>>0>=4){f=e&-4;h=0;while(1){s=g+364|0;E[s+(G[g+360>>2]+n|0)|0]=H[i+n|0];e=n|1;E[s+(e+G[g+360>>2]|0)|0]=H[e+i|0];e=n|2;E[s+(e+G[g+360>>2]|0)|0]=H[e+i|0];e=n|3;E[s+(e+G[g+360>>2]|0)|0]=H[e+i|0];n=n+4|0;h=h+4|0;if((f|0)!=(h|0)){continue}break}}if(m){while(1){E[((G[g+360>>2]+n|0)+g|0)+364|0]=H[i+n|0];n=n+1|0;p=p+1|0;if((m|0)!=(p|0)){continue}break}}s=G[g+360>>2]}k=k-r|0;i=i+r|0;e=r+s|0;G[g+360>>2]=e;if((e|0)!=128){break b}ya(g+288|0,l);G[g+360>>2]=0;e=G[g+292>>2];f=G[g+288>>2]+1024|0;e=f>>>0<1024?e+1|0:e;G[g+288>>2]=f;G[g+292>>2]=e}if(k){continue}break}c:{if(!a){break c}n=G[g+360>>2];if(n>>>0>128){break c}k=32;while(1){d:{if(!(k>>>0<128|n)){ya(g+288|0,a);f=G[g+292>>2];e=G[g+288>>2]+1024|0;f=e>>>0<1024?f+1|0:f;G[g+288>>2]=e;G[g+292>>2]=f;k=k-128|0;a=a+128|0;break d}i=128;e=128-n|0;m=e>>>0>k>>>0?k:e;if((n|0)!=128){e=m>>>0<=1?1:m;i=e&3;s=0;n=0;if(m>>>0>=4){f=e&-4;p=0;while(1){h=g+364|0;E[h+(G[g+360>>2]+n|0)|0]=H[a+n|0];e=n|1;E[h+(e+G[g+360>>2]|0)|0]=H[a+e|0];e=n|2;E[h+(e+G[g+360>>2]|0)|0]=H[a+e|0];e=n|3;E[h+(e+G[g+360>>2]|0)|0]=H[a+e|0];n=n+4|0;p=p+4|0;if((f|0)!=(p|0)){continue}break}}if(i){while(1){E[((G[g+360>>2]+n|0)+g|0)+364|0]=H[a+n|0];n=n+1|0;s=s+1|0;if((i|0)!=(s|0)){continue}break}}i=G[g+360>>2]}k=k-m|0;a=a+m|0;e=i+m|0;G[g+360>>2]=e;if((e|0)!=128){break d}ya(g+288|0,l);G[g+360>>2]=0;e=G[g+292>>2];f=G[g+288>>2]+1024|0;e=f>>>0<1024?e+1|0:e;G[g+288>>2]=f;G[g+292>>2]=e}if(!k){break c}n=G[g+360>>2];continue}}a=g+288|0;nb(a,b,c);q=g+224|0;gb(a,q);pb(q);b=H[o+23|0];M=b<<16&2031616|(H[o+21|0]|H[o+22|0]<<8);N=(H[q+28|0]|H[q+29|0]<<8|(H[q+30|0]<<16|H[q+31|0]<<24))>>>7|0;i=we(M,0,N,0);f=Z;a=H[q+27|0];e=a>>>24|0;h=H[q+23|0]|H[q+24|0]<<8|(H[q+25|0]<<16|H[q+26|0]<<24);c=a<<8|h>>>24;b=H[q+28|0];a=b>>>16|0;b=c|b<<16;e=a|e;O=((e&3)<<30|b>>>2)&2097151;c=H[o+23|0]|H[o+24|0]<<8|(H[o+25|0]<<16|H[o+26|0]<<24);P=c>>>5&2097151;a=we(O,0,P,0);i=a+i|0;e=Z+f|0;e=a>>>0>i>>>0?e+1|0:e;b=H[q+23|0];Q=b<<16&2031616|(H[q+21|0]|H[q+22|0]<<8);R=(H[o+28|0]|H[o+29|0]<<8|(H[o+30|0]<<16|H[o+31|0]<<24))>>>7|0;a=we(Q,0,R,0);b=a+i|0;f=Z+e|0;i=b;b=a>>>0>b>>>0?f+1|0:f;a=H[o+27|0];f=a>>>24|0;c=a<<8|c>>>24;a=H[o+28|0];e=a>>>16|0;c=c|a<<16;e=e|f;S=((e&3)<<30|c>>>2)&2097151;T=h>>>5&2097151;a=we(S,0,T,0);c=a+i|0;e=Z+b|0;r=c;c=a>>>0>c>>>0?e+1|0:e;h=we(P,0,T,0);i=Z;a=H[o+19|0];e=a>>>24|0;z=H[o+15|0]|H[o+16|0]<<8|(H[o+17|0]<<16|H[o+18|0]<<24);f=a<<8|z>>>24;b=e;a=H[o+20|0];e=a>>>16|0;a=a<<16;e=b|e;b=a|f;U=(e&7)<<29|b>>>3;s=e>>>3|0;b=we(U,s,N,0);e=b+h|0;a=Z+i|0;a=b>>>0>e>>>0?a+1|0:a;b=we(M,j,O,j);e=b+e|0;f=Z+a|0;h=e;b=b>>>0>e>>>0?f+1|0:f;a=H[q+19|0];f=a>>>24|0;x=H[q+15|0]|H[q+16|0]<<8|(H[q+17|0]<<16|H[q+18|0]<<24);i=a<<8|x>>>24;e=H[q+20|0];a=e>>>16|0;e=i|e<<16;f=a|f;a=f>>>3|0;V=(f&7)<<29|e>>>3;oa=a;a=we(V,a,R,0);f=a+h|0;e=Z+b|0;e=a>>>0>f>>>0?e+1|0:e;a=we(Q,j,S,j);p=a+f|0;e=Z+e|0;e=a>>>0>p>>>0?e+1|0:e;l=e;a=e-((p>>>0<4293918720)-1|0)|0;u=a;e=a>>>21|0;m=p- -1048576|0;a=(a&2097151)<<11|m>>>21;r=a+r|0;f=c+e|0;f=a>>>0>r>>>0?f+1|0:f;h=f;a=f-((r>>>0<4293918720)-1|0)|0;w=a;i=r- -1048576|0;k=(a&2097151)<<11|i>>>21;b=a>>>21|0;a=we(R,0,T,0);c=Z;f=a;a=we(N,0,P,0);f=f+a|0;e=Z+c|0;c=we(O,j,S,j);v=c+f|0;a=Z+(a>>>0>f>>>0?e+1|0:e)|0;a=c>>>0>v>>>0?a+1|0:a;c=v- -1048576|0;e=c&-2097152;n=v-e|0;f=a-((v>>>0<4293918720)-1|0)|0;e=(a-((f&131071)+(e>>>0>v>>>0)|0)|0)+b|0;a=k+n|0;e=a>>>0>>0?e+1|0:e;Aa=e;Ba=a;n=we(a,e,470296,0);k=Z;b=we(N,0,S,j);a=Z;e=b;b=we(O,j,R,0);e=e+b|0;a=Z+a|0;b=b>>>0>e>>>0?a+1|0:a;c=(f&2097151)<<11|c>>>21;e=c+e|0;f=(f>>>21|0)+b|0;f=c>>>0>e>>>0?f+1|0:f;c=f-((e>>>0<4293918720)-1|0)|0;F=c;D=e- -1048576|0;b=D&-2097152;a=e-b|0;f=f-((c&131071)+(b>>>0>e>>>0)|0)|0;Ca=f;c=i&-2097152;b=r-c|0;Da=b;e=h-((c>>>0>r>>>0)+w|0)|0;Ea=e;Fa=a;c=we(a,f,666643,0);f=c+n|0;a=Z+k|0;a=c>>>0>f>>>0?a+1|0:a;b=we(b,e,654183,0);c=b+f|0;e=Z+a|0;A=c;r=b>>>0>c>>>0?e+1|0:e;a=m&-2097152;t=p-a|0;v=l-((a>>>0>p>>>0)+u|0)|0;b=we(O,j,U,s);c=Z;a=b;W=z>>>6&2097151;b=we(W,0,N,0);e=a+b|0;a=Z+c|0;a=b>>>0>e>>>0?a+1|0:a;b=we(P,0,Q,j);c=b+e|0;f=Z+a|0;f=b>>>0>c>>>0?f+1|0:f;a=we(M,j,T,0);b=a+c|0;e=Z+f|0;e=a>>>0>b>>>0?e+1|0:e;a=b;X=x>>>6&2097151;b=we(R,0,X,0);c=a+b|0;a=Z+e|0;a=b>>>0>c>>>0?a+1|0:a;b=we(S,j,V,oa);c=b+c|0;e=Z+a|0;l=c;i=b>>>0>c>>>0?e+1|0:e;a=H[o+14|0];e=a>>>24|0;x=H[o+10|0]|H[o+11|0]<<8|(H[o+12|0]<<16|H[o+13|0]<<24);c=a<<8|x>>>24;b=H[o+15|0];a=b>>>16|0;b=b<<16;e=a|e;a=b|c;_=((e&1)<<31|a>>>1)&2097151;b=we(_,0,N,0);a=Z;c=b;b=we(O,j,W,0);c=c+b|0;a=Z+a|0;a=b>>>0>c>>>0?a+1|0:a;b=we(T,0,U,s);c=b+c|0;f=Z+a|0;f=b>>>0>c>>>0?f+1|0:f;a=we(P,0,V,oa);b=a+c|0;e=Z+f|0;e=a>>>0>b>>>0?e+1|0:e;a=we(M,j,Q,j);b=a+b|0;e=Z+e|0;h=b;c=a>>>0>b>>>0?e+1|0:e;a=H[q+14|0];e=a>>>24|0;u=H[q+10|0]|H[q+11|0]<<8|(H[q+12|0]<<16|H[q+13|0]<<24);f=a<<8|u>>>24;b=e;a=H[q+15|0];e=a>>>16|0;a=a<<16|f;b=b|e;$=((b&1)<<31|a>>>1)&2097151;b=we($,0,R,0);e=b+h|0;a=Z+c|0;a=b>>>0>e>>>0?a+1|0:a;b=we(S,j,X,0);m=b+e|0;a=Z+a|0;a=b>>>0>m>>>0?a+1|0:a;h=a;b=a-((m>>>0<4293918720)-1|0)|0;I=b;a=b>>>21|0;n=m- -1048576|0;b=(b&2097151)<<11|n>>>21;w=b+l|0;f=a+i|0;f=b>>>0>w>>>0?f+1|0:f;k=f;b=f-((w>>>0<4293918720)-1|0)|0;y=b;a=b>>>21|0;p=w- -1048576|0;c=(b&2097151)<<11|p>>>21;b=c+t|0;a=a+v|0;a=b>>>0>>0?a+1|0:a;Ga=a;Ha=b;a=we(b,a,-997805,-1);b=a+A|0;e=Z+r|0;t=b;r=a>>>0>b>>>0?e+1|0:e;K=H[g+183|0]|H[g+184|0]<<8|(H[g+185|0]<<16|H[g+186|0]<<24);v=K>>>5&2097151;a=H[o+2|0];aa=a<<16&2031616|(H[o|0]|H[o+1|0]<<8);c=we(aa,0,T,0);b=Z;l=H[o+2|0]|H[o+3|0]<<8|(H[o+4|0]<<16|H[o+5|0]<<24);ba=l>>>5&2097151;a=we(Q,j,ba,0);c=a+c|0;f=Z+b|0;f=a>>>0>c>>>0?f+1|0:f;ca=(H[o+7|0]|H[o+8|0]<<8|(H[o+9|0]<<16|H[o+10|0]<<24))>>>7&2097151;a=we(ca,0,X,0);b=a+c|0;e=Z+f|0;e=a>>>0>b>>>0?e+1|0:e;a=b;da=x>>>4&2097151;b=we($,j,da,0);c=a+b|0;a=Z+e|0;i=c;c=b>>>0>c>>>0?a+1|0:a;b=H[o+6|0];a=b>>>24|0;f=b<<8|l>>>24;b=a;a=H[o+7|0];e=a>>>16|0;a=a<<16|f;b=b|e;ea=((b&3)<<30|a>>>2)&2097151;b=we(ea,0,V,oa);e=b+i|0;a=Z+c|0;a=b>>>0>e>>>0?a+1|0:a;fa=(H[q+7|0]|H[q+8|0]<<8|(H[q+9|0]<<16|H[q+10|0]<<24))>>>7&2097151;b=we(W,0,fa,0);c=b+e|0;f=Z+a|0;f=b>>>0>c>>>0?f+1|0:f;C=u>>>4&2097151;b=we(_,j,C,0);c=b+c|0;a=Z+f|0;e=b>>>0>c>>>0?a+1|0:a;b=H[q+6|0];a=b>>>24|0;l=H[q+2|0]|H[q+3|0]<<8|(H[q+4|0]<<16|H[q+5|0]<<24);i=b<<8|l>>>24;b=a;a=H[q+7|0];f=a>>>16|0;a=a<<16|i;b=b|f;ga=((b&3)<<30|a>>>2)&2097151;a=we(U,s,ga,0);b=a+c|0;e=Z+e|0;e=a>>>0>b>>>0?e+1|0:e;a=H[q+2|0];c=b;ha=a<<16&2031616|(H[q|0]|H[q+1|0]<<8);b=we(ha,0,P,0);c=c+b|0;a=Z+e|0;a=b>>>0>c>>>0?a+1|0:a;ia=l>>>5&2097151;b=we(M,j,ia,0);c=b+c|0;a=Z+a|0;a=b>>>0>c>>>0?a+1|0:a;b=c+v|0;e=b>>>0>>0?a+1|0:a;u=b;i=e;c=H[g+181|0]|H[g+182|0]<<8;a=we(Q,j,aa,j);b=Z;f=a;a=we(V,oa,ba,0);e=f+a|0;f=Z+b|0;f=a>>>0>e>>>0?f+1|0:f;a=we($,j,ca,0);b=a+e|0;e=Z+f|0;e=a>>>0>b>>>0?e+1|0:e;a=we(da,0,C,0);b=a+b|0;e=Z+e|0;e=a>>>0>b>>>0?e+1|0:e;a=b;b=we(X,0,ea,j);f=a+b|0;a=Z+e|0;a=b>>>0>f>>>0?a+1|0:a;b=we(W,0,ga,j);e=b+f|0;a=Z+a|0;a=b>>>0>e>>>0?a+1|0:a;b=we(_,j,fa,0);e=b+e|0;f=Z+a|0;f=b>>>0>e>>>0?f+1|0:f;a=we(U,s,ia,0);b=a+e|0;e=Z+f|0;e=a>>>0>b>>>0?e+1|0:e;a=we(M,j,ha,j);b=a+b|0;e=Z+e|0;a=a>>>0>b>>>0?e+1|0:e;c=b+c|0;b=c>>>0>>0?a+1|0:a;a=H[g+183|0];e=a<<16&2031616;c=e+c|0;a=b;a=c>>>0>>0?a+1|0:a;b=a;a=a-((c>>>0<4293918720)-1|0)|0;z=a;e=a>>>21|0;l=c- -1048576|0;a=(a&2097151)<<11|l>>>21;f=a+u|0;e=e+i|0;e=a>>>0>f>>>0?e+1|0:e;a=e+r|0;i=f+t|0;a=i>>>0>>0?a+1|0:a;A=f- -1048576|0;f=e-((f>>>0<4293918720)-1|0)|0;o=f;e=A&-2097152;B=i-e|0;q=a-((e>>>0>i>>>0)+f|0)|0;r=c;i=b;a=we(Da,Ea,470296,0);b=Z;c=a;a=we(Ba,Aa,666643,0);c=c+a|0;e=Z+b|0;e=a>>>0>c>>>0?e+1|0:e;b=we(Ha,Ga,654183,0);c=b+c|0;a=Z+e|0;x=c;c=b>>>0>c>>>0?a+1|0:a;b=we(V,oa,aa,j);a=Z;f=b;b=we(X,0,ba,0);e=f+b|0;a=Z+a|0;a=b>>>0>e>>>0?a+1|0:a;b=we(ca,0,C,0);f=b+e|0;e=Z+a|0;e=b>>>0>f>>>0?e+1|0:e;a=we(da,0,fa,0);b=a+f|0;f=Z+e|0;f=a>>>0>b>>>0?f+1|0:f;a=we($,j,ea,j);b=a+b|0;e=Z+f|0;e=a>>>0>b>>>0?e+1|0:e;a=b;b=we(W,0,ia,0);f=a+b|0;a=Z+e|0;a=b>>>0>f>>>0?a+1|0:a;b=we(_,j,ga,j);e=b+f|0;a=Z+a|0;a=b>>>0>e>>>0?a+1|0:a;b=we(U,s,ha,j);f=b+e|0;e=Z+a|0;v=f;b=b>>>0>f>>>0?e+1|0:e;a=H[g+179|0];e=a>>>24|0;t=H[g+175|0]|H[g+176|0]<<8|(H[g+177|0]<<16|H[g+178|0]<<24);u=a<<8|t>>>24;f=H[g+180|0];a=f>>>16|0;f=f<<16;J=a|e;e=f|u;f=(J>>>3|0)+b|0;e=(J&7)<<29|e>>>3;u=e+v|0;v=u;b=e>>>0>u>>>0?f+1|0:f;u=t>>>6&2097151;a=we(X,0,aa,j);e=Z;f=a;a=we($,j,ba,0);f=f+a|0;e=Z+e|0;e=a>>>0>f>>>0?e+1|0:e;a=f;f=we(ca,0,fa,0);t=a+f|0;a=Z+e|0;a=f>>>0>t>>>0?a+1|0:a;f=we(da,0,ga,j);t=f+t|0;e=Z+a|0;e=f>>>0>t>>>0?e+1|0:e;f=we(ea,j,C,0);t=f+t|0;a=Z+e|0;a=f>>>0>t>>>0?a+1|0:a;e=we(W,0,ha,j);t=e+t|0;f=Z+a|0;f=e>>>0>t>>>0?f+1|0:f;a=we(_,j,ia,0);t=a+t|0;e=Z+f|0;a=a>>>0>t>>>0?e+1|0:e;ja=t+u|0;a=ja>>>0>>0?a+1|0:a;sa=a;a=a-((ja>>>0<4293918720)-1|0)|0;Qa=a;qa=ja- -1048576|0;f=(a&2097151)<<11|qa>>>21;L=f+v|0;a=(a>>>21|0)+b|0;a=f>>>0>L>>>0?a+1|0:a;ta=a;a=a-((L>>>0<4293918720)-1|0)|0;Ra=a;la=L- -1048576|0;b=(a&2097151)<<11|la>>>21;f=b+x|0;a=(a>>>21|0)+c|0;e=(b>>>0>f>>>0?a+1|0:a)+i|0;b=f+r|0;e=b>>>0>>0?e+1|0:e;a=l&-2097152;i=b-a|0;a=e-((a>>>0>b>>>0)+z|0)|0;z=a;a=a-((i>>>0<4293918720)-1|0)|0;Sa=a;ra=i- -1048576|0;b=(a&2097151)<<11|ra>>>21;c=b+B|0;a=(a>>21)+q|0;a=b>>>0>c>>>0?a+1|0:a;b=a;a=a-((c>>>0<4293918720)-1|0)|0;Ia=a;x=c- -1048576|0;pa=(a&2097151)<<11|x>>>21;r=a>>21;a=p&-2097152;J=w-a|0;y=k-((a>>>0>w>>>0)+y|0)|0;a=we(N,0,R,0);e=Z;ma=e;B=a;t=a- -1048576|0;e=e-((a>>>0<4293918720)-1|0)|0;na=e;a=e>>>21|0;Ka=a;za=(e&2097151)<<11|t>>>21;a=we(za,a,-683901,-1);f=a+m|0;e=Z+h|0;e=a>>>0>f>>>0?e+1|0:e;a=n&-2097152;p=f-a|0;l=e-((a>>>0>f>>>0)+I|0)|0;e=we(T,0,W,0);a=Z;f=e;e=we(N,0,da,0);f=f+e|0;a=Z+a|0;a=e>>>0>f>>>0?a+1|0:a;e=we(O,j,_,j);f=e+f|0;a=Z+a|0;a=e>>>0>f>>>0?a+1|0:a;e=f;f=we(Q,j,U,s);h=e+f|0;e=Z+a|0;e=f>>>0>h>>>0?e+1|0:e;a=we(P,0,X,0);h=a+h|0;f=Z+e|0;f=a>>>0>h>>>0?f+1|0:f;a=we(M,j,V,oa);h=a+h|0;e=Z+f|0;e=a>>>0>h>>>0?e+1|0:e;f=we(R,0,C,0);h=f+h|0;a=Z+e|0;a=f>>>0>h>>>0?a+1|0:a;e=we(S,j,$,j);f=e+h|0;a=Z+a|0;m=f;h=e>>>0>f>>>0?a+1|0:a;a=we(O,j,da,0);e=Z;f=a;a=we(N,0,ca,0);f=f+a|0;e=Z+e|0;e=a>>>0>f>>>0?e+1|0:e;a=we(Q,j,W,0);k=a+f|0;f=Z+e|0;f=a>>>0>k>>>0?f+1|0:f;a=we(T,0,_,j);k=a+k|0;e=Z+f|0;e=a>>>0>k>>>0?e+1|0:e;f=we(U,s,V,oa);k=f+k|0;a=Z+e|0;a=f>>>0>k>>>0?a+1|0:a;e=we(P,0,$,j);f=e+k|0;a=Z+a|0;a=e>>>0>f>>>0?a+1|0:a;e=f;f=we(M,j,X,0);k=e+f|0;e=Z+a|0;e=f>>>0>k>>>0?e+1|0:e;a=we(R,0,fa,0);k=a+k|0;f=Z+e|0;f=a>>>0>k>>>0?f+1|0:f;a=we(S,j,C,0);v=a+k|0;e=Z+f|0;e=a>>>0>v>>>0?e+1|0:e;u=e;a=e-((v>>>0<4293918720)-1|0)|0;va=a;w=v- -1048576|0;e=(a&2097151)<<11|w>>>21;I=e+m|0;a=(a>>>21|0)+h|0;a=e>>>0>I>>>0?a+1|0:a;n=a;a=a-((I>>>0<4293918720)-1|0)|0;wa=a;f=a>>>21|0;k=I- -1048576|0;a=(a&2097151)<<11|k>>>21;q=a+p|0;e=f+l|0;e=a>>>0>q>>>0?e+1|0:e;p=e;a=e-((q>>>0<4293918720)-1|0)|0;ua=a;l=q- -1048576|0;h=(a&2097151)<<11|l>>>21;e=h+J|0;a=(a>>21)+y|0;a=e>>>0>>0?a+1|0:a;La=a;Ma=e;a=we(e,a,-683901,-1);f=a+pa|0;e=Z+r|0;pa=f;r=a>>>0>f>>>0?e+1|0:e;a=we(O,j,aa,j);e=Z;f=a;a=we(T,0,ba,0);f=f+a|0;e=Z+e|0;e=a>>>0>f>>>0?e+1|0:e;a=f;f=we(V,oa,ca,0);h=a+f|0;a=Z+e|0;a=f>>>0>h>>>0?a+1|0:a;e=we(X,0,da,0);h=e+h|0;f=Z+a|0;f=e>>>0>h>>>0?f+1|0:f;e=we(Q,j,ea,j);h=e+h|0;a=Z+f|0;a=e>>>0>h>>>0?a+1|0:a;f=we(W,0,C,0);h=f+h|0;e=Z+a|0;e=f>>>0>h>>>0?e+1|0:e;a=we(_,j,$,j);f=a+h|0;e=Z+e|0;e=a>>>0>f>>>0?e+1|0:e;a=f;f=we(U,s,fa,0);h=a+f|0;a=Z+e|0;a=f>>>0>h>>>0?a+1|0:a;e=we(P,0,ia,0);h=e+h|0;f=Z+a|0;f=e>>>0>h>>>0?f+1|0:f;e=we(M,j,ga,j);h=e+h|0;a=Z+f|0;a=e>>>0>h>>>0?a+1|0:a;f=we(S,j,ha,j);h=f+h|0;e=Z+a|0;y=h;f=f>>>0>h>>>0?e+1|0:e;a=H[g+187|0];e=a>>>24|0;m=a<<8|K>>>24;h=H[g+188|0];a=h>>>16|0;h=h<<16;e=a|e;a=h|m;h=((e&3)<<30|a>>>2)&2097151;a=h+y|0;e=f;m=a;h=a>>>0>>0?e+1|0:e;J=we(Fa,Ca,470296,0);y=Z;f=(F&2097151)<<11|D>>>21;e=t&-2097152;a=f+(B-e|0)|0;e=ma-((na&524287)+(e>>>0>B>>>0)|0)+(F>>>21)|0;e=a>>>0>>0?e+1|0:e;Na=e;Oa=a;e=we(a,e,666643,0);f=e+J|0;a=Z+y|0;a=e>>>0>f>>>0?a+1|0:a;e=we(Ba,Aa,654183,0);t=e+f|0;f=Z+a|0;f=e>>>0>t>>>0?f+1|0:f;e=we(Da,Ea,-997805,-1);t=e+t|0;a=Z+f|0;a=e>>>0>t>>>0?a+1|0:a;f=we(Ha,Ga,136657,0);t=f+t|0;e=Z+a|0;a=(o&2097151)<<11|A>>>21;A=a+t|0;e=(o>>>21|0)+(f>>>0>t>>>0?e+1|0:e)|0;ma=m- -1048576|0;t=h-((m>>>0<4293918720)-1|0)|0;na=t;a=(a>>>0>A>>>0?e+1|0:e)+h|0;h=m+A|0;a=h>>>0>>0?a+1|0:a;f=ma&-2097152;e=h-f|0;a=a-((f>>>0>h>>>0)+t|0)|0;f=a+r|0;m=e+pa|0;f=m>>>0>>0?f+1|0:f;h=a-((e>>>0<4293918720)-1|0)|0;J=h;y=e- -1048576|0;e=y&-2097152;a=m-e|0;B=f-((e>>>0>m>>>0)+h|0)|0;K=a;m=c;h=b;a=l&-2097152;xa=q-a|0;t=p-((a>>>0>q>>>0)+ua|0)|0;a=we(Oa,Na,-683901,-1);b=Z;c=a;a=we(za,Ka,136657,0);c=c+a|0;f=Z+b|0;e=n+(a>>>0>c>>>0?f+1|0:f)|0;b=c+I|0;e=b>>>0>>0?e+1|0:e;a=k&-2097152;n=b-a|0;k=e-((a>>>0>b>>>0)+wa|0)|0;b=we(za,Ka,-997805,-1);c=b+v|0;a=Z+u|0;a=b>>>0>c>>>0?a+1|0:a;b=we(Oa,Na,136657,0);c=b+c|0;f=Z+a|0;f=b>>>0>c>>>0?f+1|0:f;a=we(Fa,Ca,-683901,-1);b=a+c|0;e=Z+f|0;e=a>>>0>b>>>0?e+1|0:e;a=w&-2097152;p=b-a|0;l=e-((a>>>0>b>>>0)+va|0)|0;b=we(T,0,da,0);a=Z;c=b;b=we(O,j,ca,0);c=c+b|0;a=Z+a|0;a=b>>>0>c>>>0?a+1|0:a;b=we(N,0,ea,j);c=b+c|0;f=Z+a|0;f=b>>>0>c>>>0?f+1|0:f;a=we(V,oa,W,0);b=a+c|0;e=Z+f|0;e=a>>>0>b>>>0?e+1|0:e;a=b;b=we(Q,j,_,j);c=a+b|0;a=Z+e|0;a=b>>>0>c>>>0?a+1|0:a;b=we(U,s,X,0);c=b+c|0;e=Z+a|0;e=b>>>0>c>>>0?e+1|0:e;b=we(P,0,C,0);c=b+c|0;a=Z+e|0;a=b>>>0>c>>>0?a+1|0:a;b=we(M,j,$,j);c=b+c|0;f=Z+a|0;f=b>>>0>c>>>0?f+1|0:f;a=we(R,0,ga,j);b=a+c|0;e=Z+f|0;e=a>>>0>b>>>0?e+1|0:e;a=b;b=we(S,j,fa,0);c=a+b|0;a=Z+e|0;r=c;b=b>>>0>c>>>0?a+1|0:a;a=we(T,0,ca,0);c=Z;f=a;a=we(N,0,ba,0);f=f+a|0;e=Z+c|0;e=a>>>0>f>>>0?e+1|0:e;c=we(Q,j,da,0);f=c+f|0;a=Z+e|0;a=c>>>0>f>>>0?a+1|0:a;c=we(O,j,ea,j);e=c+f|0;f=Z+a|0;f=c>>>0>e>>>0?f+1|0:f;a=we(W,0,X,0);c=a+e|0;e=Z+f|0;e=a>>>0>c>>>0?e+1|0:e;a=c;c=we(V,oa,_,j);f=a+c|0;a=Z+e|0;a=c>>>0>f>>>0?a+1|0:a;c=we(U,s,$,j);f=c+f|0;e=Z+a|0;e=c>>>0>f>>>0?e+1|0:e;c=we(P,0,fa,0);f=c+f|0;a=Z+e|0;a=c>>>0>f>>>0?a+1|0:a;c=we(M,j,C,0);e=c+f|0;f=Z+a|0;f=c>>>0>e>>>0?f+1|0:f;a=we(R,0,ia,0);c=a+e|0;e=Z+f|0;e=a>>>0>c>>>0?e+1|0:e;a=c;c=we(S,j,ga,j);ua=a+c|0;a=Z+e|0;a=c>>>0>ua>>>0?a+1|0:a;q=a;a=a-((ua>>>0<4293918720)-1|0)|0;Va=a;F=ua- -1048576|0;c=(a&2097151)<<11|F>>>21;pa=c+r|0;a=(a>>>21|0)+b|0;a=c>>>0>pa>>>0?a+1|0:a;D=a;a=a-((pa>>>0<4293918720)-1|0)|0;Wa=a;o=pa- -1048576|0;b=(a&2097151)<<11|o>>>21;I=b+p|0;a=(a>>>21|0)+l|0;a=b>>>0>I>>>0?a+1|0:a;A=a;a=a-((I>>>0<4293918720)-1|0)|0;Xa=a;u=I- -1048576|0;b=(a&2097151)<<11|u>>>21;l=b+n|0;a=(a>>21)+k|0;a=b>>>0>l>>>0?a+1|0:a;c=a;a=a-((l>>>0<4293918720)-1|0)|0;p=a;b=l- -1048576|0;r=(a&2097151)<<11|b>>>21;f=r+xa|0;a=(a>>21)+t|0;a=f>>>0>>0?a+1|0:a;va=a;wa=f;a=we(f,a,-683901,-1);e=Z;f=a;a=we(Ma,La,136657,0);f=f+a|0;e=Z+e|0;a=(a>>>0>f>>>0?e+1|0:e)+h|0;e=f;f=f+m|0;a=e>>>0>f>>>0?a+1|0:a;e=x&-2097152;Ta=f-e|0;Ua=a-((e>>>0>f>>>0)+Ia|0)|0;r=i;m=z;f=we(wa,va,136657,0);e=Z;b=b&-2097152;a=l-b|0;xa=a;c=c-((b>>>0>l>>>0)+p|0)|0;Pa=c;b=we(Ma,La,-997805,-1);f=b+f|0;e=Z+e|0;e=b>>>0>f>>>0?e+1|0:e;b=we(a,c,-683901,-1);c=b+f|0;a=Z+e|0;Ia=c;h=b>>>0>c>>>0?a+1|0:a;a=we(Ha,Ga,470296,0);b=Z;c=a;a=we(Da,Ea,666643,0);c=c+a|0;f=Z+b|0;e=ta+(a>>>0>c>>>0?f+1|0:f)|0;a=c+L|0;e=a>>>0>>0?e+1|0:e;t=a;c=e;b=we(Ha,Ga,666643,0);e=b+ja|0;a=Z+sa|0;a=b>>>0>e>>>0?a+1|0:a;b=qa&-2097152;k=e-b|0;v=a-((b>>>0>e>>>0)+Qa|0)|0;b=we($,j,aa,j);a=Z;f=b;b=we(ba,0,C,0);e=f+b|0;a=Z+a|0;a=b>>>0>e>>>0?a+1|0:a;b=we(ca,0,ga,j);f=b+e|0;e=Z+a|0;e=b>>>0>f>>>0?e+1|0:e;b=we(da,0,ia,0);f=b+f|0;a=Z+e|0;a=b>>>0>f>>>0?a+1|0:a;b=we(ea,j,fa,0);e=b+f|0;f=Z+a|0;f=b>>>0>e>>>0?f+1|0:f;a=we(_,j,ha,j);b=a+e|0;e=Z+f|0;l=b;b=a>>>0>b>>>0?e+1|0:e;a=H[g+174|0];e=a>>>24|0;p=H[g+170|0]|H[g+171|0]<<8|(H[g+172|0]<<16|H[g+173|0]<<24);i=a<<8|p>>>24;a=H[g+175|0];f=a>>>16|0;a=i|a<<16;e=e|f;e=((e&1)<<31|a>>>1)&2097151;f=e+l|0;a=b;l=f;b=e>>>0>f>>>0?a+1|0:a;i=p>>>4&2097151;a=we(aa,j,C,0);e=Z;f=a;a=we(ba,0,fa,0);f=f+a|0;e=Z+e|0;e=a>>>0>f>>>0?e+1|0:e;a=we(ca,0,ia,0);f=a+f|0;e=Z+e|0;e=a>>>0>f>>>0?e+1|0:e;a=f;f=we(da,0,ha,j);p=a+f|0;a=Z+e|0;a=f>>>0>p>>>0?a+1|0:a;e=we(ea,j,ga,j);p=e+p|0;f=Z+a|0;f=e>>>0>p>>>0?f+1|0:f;a=f;qa=i+p|0;a=qa>>>0

>>0?a+1|0:a;z=a;a=a-((qa>>>0<4293918720)-1|0)|0;Ya=a;f=a>>>21|0;x=qa- -1048576|0;a=(a&2097151)<<11|x>>>21;ta=a+l|0;e=b+f|0;e=a>>>0>ta>>>0?e+1|0:e;w=e;a=e-((ta>>>0<4293918720)-1|0)|0;Za=a;n=ta- -1048576|0;b=(a&2097151)<<11|n>>>21;k=b+k|0;a=(a>>>21|0)+v|0;a=b>>>0>k>>>0?a+1|0:a;p=a;a=a-((k>>>0<4293918720)-1|0)|0;_a=a;f=a>>21;l=k- -1048576|0;a=(a&2097151)<<11|l>>>21;i=a+t|0;e=c+f|0;e=a>>>0>i>>>0?e+1|0:e;b=la&-2097152;a=i-b|0;b=e-((b>>>0>i>>>0)+Ra|0)|0;Qa=b;la=a;i=a- -1048576|0;a=b-((a>>>0<4293918720)-1|0)|0;Ra=a;e=a>>21;a=(a&2097151)<<11|i>>>21;b=a+Ia|0;f=e+h|0;e=(a>>>0>b>>>0?f+1|0:f)+m|0;c=b+r|0;e=c>>>0>>0?e+1|0:e;b=ra&-2097152;a=c-b|0;b=e-((b>>>0>c>>>0)+Sa|0)|0;ja=b;m=a;c=a- -1048576|0;a=b-((a>>>0<4293918720)-1|0)|0;sa=a;e=a>>21;a=(a&2097151)<<11|c>>>21;h=a+Ta|0;f=e+Ua|0;f=a>>>0>h>>>0?f+1|0:f;a=f-((h>>>0<4293918720)-1|0)|0;ra=a;t=K- -1048576|0;v=B-((K>>>0<4293918720)-1|0)|0;b=h- -1048576|0;r=(a&2097151)<<11|b>>>21;K=r+K|0;a=(a>>21)+B|0;e=t&-2097152;Sa=K-e|0;Ta=(r>>>0>K>>>0?a+1|0:a)-((e>>>0>K>>>0)+v|0)|0;a=b&-2097152;Ua=h-a|0;Ia=f-((a>>>0>h>>>0)+ra|0)|0;a=c&-2097152;L=m-a|0;K=ja-((a>>>0>m>>>0)+sa|0)|0;a=we(wa,va,-997805,-1);b=Z;c=a;a=we(Ma,La,654183,0);c=c+a|0;e=Z+b|0;e=a>>>0>c>>>0?e+1|0:e;b=we(xa,Pa,136657,0);c=b+c|0;a=Z+e|0;e=Qa+(b>>>0>c>>>0?a+1|0:a)|0;b=c+la|0;e=b>>>0>>0?e+1|0:e;a=i&-2097152;ja=b-a|0;sa=e-((a>>>0>b>>>0)+Ra|0)|0;a=u&-2097152;la=I-a|0;B=A-((a>>>0>I>>>0)+Xa|0)|0;b=we(Oa,Na,-997805,-1);a=Z;c=b;b=we(za,Ka,654183,0);c=c+b|0;a=Z+a|0;a=b>>>0>c>>>0?a+1|0:a;b=we(Fa,Ca,136657,0);c=b+c|0;e=Z+a|0;e=b>>>0>c>>>0?e+1|0:e;a=we(Ba,Aa,-683901,-1);b=a+c|0;f=Z+e|0;e=D+(a>>>0>b>>>0?f+1|0:f)|0;b=b+pa|0;e=b>>>0>>0?e+1|0:e;a=o&-2097152;u=b-a|0;A=e-((a>>>0>b>>>0)+Wa|0)|0;b=we(Oa,Na,654183,0);a=Z;c=b;b=we(za,Ka,470296,0);c=c+b|0;a=Z+a|0;a=b>>>0>c>>>0?a+1|0:a;b=we(Fa,Ca,-997805,-1);c=b+c|0;f=Z+a|0;e=q+(b>>>0>c>>>0?f+1|0:f)|0;a=c+ua|0;e=a>>>0>>0?e+1|0:e;b=a;a=we(Ba,Aa,136657,0);b=b+a|0;e=Z+e|0;e=a>>>0>b>>>0?e+1|0:e;a=b;b=we(Da,Ea,-683901,-1);c=a+b|0;a=Z+e|0;a=b>>>0>c>>>0?a+1|0:a;b=F&-2097152;h=c-b|0;i=a-((b>>>0>c>>>0)+Va|0)|0;c=(H[g+188|0]|H[g+189|0]<<8|(H[g+190|0]<<16|H[g+191|0]<<24))>>>7|0;a=we(N,0,aa,j);b=Z;f=a;a=we(O,j,ba,0);e=f+a|0;f=Z+b|0;f=a>>>0>e>>>0?f+1|0:f;a=we(Q,j,ca,0);b=a+e|0;e=Z+f|0;e=a>>>0>b>>>0?e+1|0:e;a=b;b=we(V,oa,da,0);f=a+b|0;a=Z+e|0;a=b>>>0>f>>>0?a+1|0:a;b=we(T,0,ea,j);f=b+f|0;e=Z+a|0;e=b>>>0>f>>>0?e+1|0:e;b=we(W,0,$,j);f=b+f|0;a=Z+e|0;a=b>>>0>f>>>0?a+1|0:a;b=we(X,0,_,j);e=b+f|0;f=Z+a|0;f=b>>>0>e>>>0?f+1|0:f;a=we(U,s,C,0);b=a+e|0;e=Z+f|0;e=a>>>0>b>>>0?e+1|0:e;a=b;b=we(P,0,ga,j);f=a+b|0;a=Z+e|0;a=b>>>0>f>>>0?a+1|0:a;b=we(M,j,fa,0);f=b+f|0;e=Z+a|0;e=b>>>0>f>>>0?e+1|0:e;b=we(R,0,ha,j);f=b+f|0;a=Z+e|0;a=b>>>0>f>>>0?a+1|0:a;b=we(S,j,ia,0);m=b+f|0;f=Z+a|0;f=b>>>0>m>>>0?f+1|0:f;e=f;a=c+m|0;e=a>>>0>>0?e+1|0:e;b=(na&2097151)<<11|ma>>>21;D=b+a|0;a=(na>>>21|0)+e|0;a=b>>>0>D>>>0?a+1|0:a;r=a;b=a-((D>>>0<4293918720)-1|0)|0;ra=b;a=b>>>21|0;s=D- -1048576|0;b=(b&2097151)<<11|s>>>21;o=b+h|0;f=a+i|0;f=b>>>0>o>>>0?f+1|0:f;m=f;b=f-((o>>>0<4293918720)-1|0)|0;ma=b;a=b>>21;h=o- -1048576|0;b=(b&2097151)<<11|h>>>21;u=b+u|0;a=a+A|0;a=b>>>0>u>>>0?a+1|0:a;i=a;b=a-((u>>>0<4293918720)-1|0)|0;F=b;a=b>>21;c=u- -1048576|0;e=(b&2097151)<<11|c>>>21;b=e+la|0;f=a+B|0;f=b>>>0>>0?f+1|0:f;na=f;B=b;a=we(b,f,-683901,-1);b=a+ja|0;e=Z+sa|0;A=b;b=a>>>0>b>>>0?e+1|0:e;e=we(Ma,La,470296,0);k=e+k|0;a=Z+p|0;a=e>>>0>k>>>0?a+1|0:a;e=we(wa,va,654183,0);f=l&-2097152;l=e+(k-f|0)|0;a=Z+(a-((f>>>0>k>>>0)+_a|0)|0)|0;a=e>>>0>l>>>0?a+1|0:a;f=we(xa,Pa,-997805,-1);l=f+l|0;e=Z+a|0;e=f>>>0>l>>>0?e+1|0:e;a=c&-2097152;c=u-a|0;q=c;i=i-((a>>>0>u>>>0)+F|0)|0;C=i;f=we(B,na,136657,0);l=f+l|0;a=Z+e|0;c=we(c,i,-683901,-1);p=c+l|0;e=Z+(f>>>0>l>>>0?a+1|0:a)|0;e=c>>>0>p>>>0?e+1|0:e;i=e;a=e-((p>>>0<4293918720)-1|0)|0;F=a;c=p- -1048576|0;e=(a&2097151)<<11|c>>>21;l=e+A|0;a=(a>>21)+b|0;a=e>>>0>l>>>0?a+1|0:a;e=a-((l>>>0<4293918720)-1|0)|0;u=e;b=l- -1048576|0;k=(e&2097151)<<11|b>>>21;A=k+L|0;e=(e>>21)+K|0;K=A;A=k>>>0>A>>>0?e+1|0:e;b=b&-2097152;ua=l-b|0;pa=a-((b>>>0>l>>>0)+u|0)|0;a=c&-2097152;ja=p-a|0;sa=i-((a>>>0>p>>>0)+F|0)|0;a=we(Ma,La,666643,0);f=w+Z|0;e=a+ta|0;f=e>>>0>>0?f+1|0:f;a=we(wa,va,470296,0);b=n&-2097152;c=a+(e-b|0)|0;e=Z+(f-((b>>>0>e>>>0)+Za|0)|0)|0;e=a>>>0>c>>>0?e+1|0:e;b=we(xa,Pa,654183,0);c=b+c|0;a=Z+e|0;l=c;b=b>>>0>c>>>0?a+1|0:a;a=h&-2097152;h=o-a|0;i=m-((a>>>0>o>>>0)+ma|0)|0;a=we(Oa,Na,470296,0);c=Z;f=a;a=we(za,Ka,666643,0);f=f+a|0;e=Z+c|0;e=a>>>0>f>>>0?e+1|0:e;a=we(Fa,Ca,654183,0);c=a+f|0;e=Z+e|0;e=a>>>0>c>>>0?e+1|0:e;a=c;c=we(Ba,Aa,-997805,-1);f=a+c|0;a=Z+e|0;a=c>>>0>f>>>0?a+1|0:a;c=we(Da,Ea,136657,0);e=c+f|0;a=Z+a|0;a=c>>>0>e>>>0?a+1|0:a;c=we(Ha,Ga,-683901,-1);m=c+e|0;f=Z+a|0;e=r+(c>>>0>m>>>0?f+1|0:f)|0;f=m+D|0;e=f>>>0>>0?e+1|0:e;c=(J&2097151)<<11|y>>>21;a=s&-2097152;o=c+(f-a|0)|0;a=(e-((a>>>0>f>>>0)+ra|0)|0)+(J>>21)|0;a=c>>>0>o>>>0?a+1|0:a;u=a;a=a-((o>>>0<4293918720)-1|0)|0;ma=a;n=o- -1048576|0;f=(a&2097151)<<11|n>>>21;c=f+h|0;a=(a>>21)+i|0;a=c>>>0>>0?a+1|0:a;F=a;D=c;a=we(c,a,-683901,-1);c=a+l|0;e=Z+b|0;e=a>>>0>c>>>0?e+1|0:e;b=we(B,na,-997805,-1);c=b+c|0;a=Z+e|0;a=b>>>0>c>>>0?a+1|0:a;b=we(q,C,136657,0);c=b+c|0;f=Z+a|0;y=c;m=b>>>0>c>>>0?f+1|0:f;a=x&-2097152;l=qa-a|0;r=z-((a>>>0>qa>>>0)+Ya|0)|0;b=we(aa,j,fa,0);a=Z;c=b;b=we(ba,0,ga,j);c=c+b|0;a=Z+a|0;a=b>>>0>c>>>0?a+1|0:a;b=we(ca,0,ha,j);c=b+c|0;a=Z+a|0;a=b>>>0>c>>>0?a+1|0:a;b=we(ea,j,ia,0);c=b+c|0;f=Z+a|0;e=b>>>0>c>>>0?f+1|0:f;a=(H[g+167|0]|H[g+168|0]<<8|(H[g+169|0]<<16|H[g+170|0]<<24))>>>7&2097151;b=a+c|0;s=b;h=a>>>0>b>>>0?e+1|0:e;a=we(aa,j,ga,j);b=Z;c=a;a=we(ba,0,ia,0);c=c+a|0;e=Z+b|0;e=a>>>0>c>>>0?e+1|0:e;b=we(ea,j,ha,j);c=b+c|0;a=Z+e|0;i=c;c=b>>>0>c>>>0?a+1|0:a;b=H[g+166|0];a=b>>>24|0;la=H[g+162|0]|H[g+163|0]<<8|(H[g+164|0]<<16|H[g+165|0]<<24);f=b<<8|la>>>24;b=a;a=H[g+167|0];e=a>>>16|0;a=a<<16|f;b=b|e;a=((b&3)<<30|a>>>2)&2097151;i=a+i|0;f=c;f=a>>>0>i>>>0?f+1|0:f;c=f;a=f-((i>>>0<4293918720)-1|0)|0;I=a;w=i- -1048576|0;b=(a&2097151)<<11|w>>>21;z=b+s|0;a=(a>>>21|0)+h|0;a=b>>>0>z>>>0?a+1|0:a;k=a;a=a-((z>>>0<4293918720)-1|0)|0;ra=a;e=a>>>21|0;p=z- -1048576|0;a=(a&2097151)<<11|p>>>21;b=a+l|0;f=e+r|0;f=a>>>0>b>>>0?f+1|0:f;a=b;b=we(wa,va,666643,0);e=a+b|0;a=Z+f|0;a=b>>>0>e>>>0?a+1|0:a;b=we(xa,Pa,470296,0);e=b+e|0;a=Z+a|0;a=b>>>0>e>>>0?a+1|0:a;b=we(D,F,136657,0);f=b+e|0;e=Z+a|0;e=b>>>0>f>>>0?e+1|0:e;a=we(B,na,654183,0);b=a+f|0;e=Z+e|0;e=a>>>0>b>>>0?e+1|0:e;a=we(q,C,-997805,-1);l=a+b|0;f=Z+e|0;f=a>>>0>l>>>0?f+1|0:f;r=f;a=f-((l>>>0<4293918720)-1|0)|0;J=a;s=l- -1048576|0;f=(a&2097151)<<11|s>>>21;b=f+y|0;a=(a>>21)+m|0;a=b>>>0>>0?a+1|0:a;f=a-((b>>>0<4293918720)-1|0)|0;y=f;m=b- -1048576|0;h=(f&2097151)<<11|m>>>21;x=h+ja|0;f=(f>>21)+sa|0;ja=x;x=h>>>0>x>>>0?f+1|0:f;h=b;e=a;a=n&-2097152;n=(v&2097151)<<11|t>>>21;b=(o-a|0)+n|0;a=(u-((a>>>0>o>>>0)+ma|0)|0)+(v>>21)|0;a=b>>>0>>0?a+1|0:a;t=a;a=a-((b>>>0<4293918720)-1|0)|0;sa=a;f=a>>21;o=f;v=b- -1048576|0;L=(a&2097151)<<11|v>>>21;a=we(L,f,-683901,-1);f=a+h|0;e=Z+e|0;e=a>>>0>f>>>0?e+1|0:e;a=m&-2097152;qa=f-a|0;ta=e-((a>>>0>f>>>0)+y|0)|0;e=we(L,o,136657,0);f=e+l|0;a=Z+r|0;a=e>>>0>f>>>0?a+1|0:a;e=s&-2097152;ma=f-e|0;J=a-((e>>>0>f>>>0)+J|0)|0;e=we(xa,Pa,666643,0);f=p&-2097152;h=e+(z-f|0)|0;a=Z+(k-((f>>>0>z>>>0)+ra|0)|0)|0;a=e>>>0>h>>>0?a+1|0:a;f=we(D,F,-997805,-1);h=f+h|0;e=Z+a|0;e=f>>>0>h>>>0?e+1|0:e;a=we(B,na,470296,0);h=a+h|0;f=Z+e|0;f=a>>>0>h>>>0?f+1|0:f;e=we(q,C,654183,0);h=e+h|0;a=Z+f|0;y=h;r=e>>>0>h>>>0?a+1|0:a;f=c;h=la>>>5&2097151;a=we(aa,j,ia,0);c=Z;e=a;a=we(ba,0,ha,j);m=e+a|0;e=Z+c|0;a=a>>>0>m>>>0?e+1|0:e;c=h+m|0;a=c>>>0>>0?a+1|0:a;m=c;c=a;e=we(aa,j,ha,j);a=H[g+162|0];a=a<<16&2031616|(H[g+160|0]|H[g+161|0]<<8);z=e+a|0;e=Z;e=a>>>0>z>>>0?e+1|0:e;n=e;e=e-((z>>>0<4293918720)-1|0)|0;la=e;a=e>>>21|0;k=z- -1048576|0;e=(e&2097151)<<11|k>>>21;u=e+m|0;a=a+c|0;a=e>>>0>u>>>0?a+1|0:a;p=a;c=a-((u>>>0<4293918720)-1|0)|0;ra=c;a=c>>>21|0;l=u- -1048576|0;c=(c&2097151)<<11|l>>>21;h=c+i|0;e=a+f|0;e=c>>>0>h>>>0?e+1|0:e;c=we(D,F,654183,0);f=w&-2097152;i=c+(h-f|0)|0;a=Z+(e-((f>>>0>h>>>0)+I|0)|0)|0;a=c>>>0>i>>>0?a+1|0:a;c=we(B,na,666643,0);e=c+i|0;a=Z+a|0;a=c>>>0>e>>>0?a+1|0:a;c=we(q,C,470296,0);s=c+e|0;e=Z+a|0;e=c>>>0>s>>>0?e+1|0:e;m=e;c=e-((s>>>0<4293918720)-1|0)|0;B=c;a=c>>21;h=s- -1048576|0;c=(c&2097151)<<11|h>>>21;i=c+y|0;f=a+r|0;f=c>>>0>i>>>0?f+1|0:f;e=f-((i>>>0<4293918720)-1|0)|0;w=e;c=i- -1048576|0;r=(e&2097151)<<11|c>>>21;y=r+ma|0;e=(e>>21)+J|0;ma=y;r=r>>>0>y>>>0?e+1|0:e;a=we(L,o,-997805,-1);i=a+i|0;e=Z+f|0;e=a>>>0>i>>>0?e+1|0:e;a=c&-2097152;na=i-a|0;J=e-((a>>>0>i>>>0)+w|0)|0;c=we(L,o,654183,0);e=c+s|0;a=Z+m|0;a=c>>>0>e>>>0?a+1|0:a;c=h&-2097152;y=e-c|0;B=a-((c>>>0>e>>>0)+B|0)|0;a=we(D,F,470296,0);c=l&-2097152;e=a+(u-c|0)|0;f=Z+(p-((c>>>0>u>>>0)+ra|0)|0)|0;f=a>>>0>e>>>0?f+1|0:f;c=we(q,C,666643,0);e=c+e|0;a=Z+f|0;i=e;c=c>>>0>e>>>0?a+1|0:a;e=we(D,F,666643,0);f=k&-2097152;l=e+(z-f|0)|0;a=Z+(n-((la&4095)+(f>>>0>z>>>0)|0)|0)|0;a=e>>>0>l>>>0?a+1|0:a;s=a;a=a-((l>>>0<4293918720)-1|0)|0;w=a;m=l- -1048576|0;f=(a&2097151)<<11|m>>>21;h=f+i|0;a=(a>>21)+c|0;a=f>>>0>h>>>0?a+1|0:a;f=a;a=a-((h>>>0<4293918720)-1|0)|0;n=a;c=h- -1048576|0;i=(a&2097151)<<11|c>>>21;p=i+y|0;a=(a>>21)+B|0;k=p;i=i>>>0>k>>>0?a+1|0:a;a=we(L,o,470296,0);e=a+h|0;f=Z+f|0;f=a>>>0>e>>>0?f+1|0:f;a=c&-2097152;p=e-a|0;h=f-((a>>>0>e>>>0)+n|0)|0;e=we(L,o,666643,0);f=m&-2097152;c=e+(l-f|0)|0;a=Z+(s-((f>>>0>l>>>0)+w|0)|0)|0;a=c>>>0>>0?a+1|0:a;f=a>>21;a=(a&2097151)<<11|c>>>21;u=a+p|0;e=f+h|0;e=a>>>0>u>>>0?e+1|0:e;a=e>>21;e=(e&2097151)<<11|u>>>21;w=e+k|0;a=a+i|0;a=e>>>0>w>>>0?a+1|0:a;e=a>>21;a=(a&2097151)<<11|w>>>21;i=a+na|0;e=e+J|0;e=a>>>0>i>>>0?e+1|0:e;a=e>>21;e=(e&2097151)<<11|i>>>21;n=e+ma|0;f=a+r|0;f=e>>>0>n>>>0?f+1|0:f;e=f>>21;f=(f&2097151)<<11|n>>>21;k=f+qa|0;a=e+ta|0;a=f>>>0>k>>>0?a+1|0:a;f=a>>21;a=(a&2097151)<<11|k>>>21;p=a+ja|0;e=f+x|0;e=a>>>0>p>>>0?e+1|0:e;a=e>>21;e=(e&2097151)<<11|p>>>21;l=e+ua|0;a=a+pa|0;a=e>>>0>l>>>0?a+1|0:a;e=a>>21;a=(a&2097151)<<11|l>>>21;r=a+K|0;e=e+A|0;e=a>>>0>r>>>0?e+1|0:e;a=e>>21;e=(e&2097151)<<11|r>>>21;s=e+Ua|0;f=a+Ia|0;f=e>>>0>s>>>0?f+1|0:f;e=f>>21;f=(f&2097151)<<11|s>>>21;m=f+Sa|0;a=e+Ta|0;e=v&-2097152;v=b-e|0;a=f>>>0>m>>>0?a+1|0:a;h=v+((a&2097151)<<11|m>>>21)|0;a=(t-((b>>>0>>0)+sa|0)|0)+(a>>21)|0;a=h>>>0>>0?a+1|0:a;x=(a&2097151)<<11|h>>>21;e=a>>21;t=e;b=c&2097151;v=we(x,e,666643,0)+b|0;a=Z;a=b>>>0>v>>>0?a+1|0:a;c=a;E[d+32|0]=v;E[d+33|0]=(a&255)<<24|v>>>8;a=u&2097151;b=we(x,e,470296,0)+a|0;f=Z;f=a>>>0>b>>>0?f+1|0:f;a=b;b=(c&2097151)<<11|v>>>21;u=a+b|0;a=(c>>21)+f|0;a=b>>>0>u>>>0?a+1|0:a;E[d+36|0]=(a&2047)<<21|u>>>11;b=a;f=u;E[d+35|0]=(a&7)<<29|f>>>3;E[d+34|0]=((c&65535)<<16|v>>>16)&31|f<<5;c=w&2097151;e=we(x,e,654183,0)+c|0;a=Z;c=c>>>0>e>>>0?a+1|0:a;a=b>>21;w=(b&2097151)<<11|f>>>21;b=w+e|0;e=a+c|0;e=b>>>0>>0?e+1|0:e;a=e;E[d+38|0]=(a&63)<<26|b>>>6;e=0;E[d+37|0]=e<<13|(f&1572864)>>>19|b<<2;c=i&2097151;f=we(x,t,-997805,-1)+c|0;e=Z;e=c>>>0>f>>>0?e+1|0:e;c=a;a=a>>21;c=(c&2097151)<<11|b>>>21;i=c+f|0;f=a+e|0;f=c>>>0>i>>>0?f+1|0:f;E[d+41|0]=(f&511)<<23|i>>>9;E[d+40|0]=(f&1)<<31|i>>>1;c=0;E[d+39|0]=c<<18|(b&2080768)>>>14|i<<7;b=n&2097151;c=we(x,t,136657,0)+b|0;a=Z;a=b>>>0>c>>>0?a+1|0:a;b=f;f=f>>21;b=(b&2097151)<<11|i>>>21;c=b+c|0;e=a+f|0;e=b>>>0>c>>>0?e+1|0:e;E[d+44|0]=(e&4095)<<20|c>>>12;E[d+43|0]=(e&15)<<28|c>>>4;b=0;E[d+42|0]=b<<15|(i&1966080)>>>17|c<<4;b=k&2097151;f=we(x,t,-683901,-1)+b|0;a=Z;a=b>>>0>f>>>0?a+1|0:a;b=e;e=e>>21;i=f;f=(b&2097151)<<11|c>>>21;b=i+f|0;e=a+e|0;e=b>>>0>>0?e+1|0:e;E[d+46|0]=(e&127)<<25|b>>>7;f=0;E[d+45|0]=f<<12|(c&1048576)>>>20|b<<1;a=e>>21;e=(e&2097151)<<11|b>>>21;c=e+(p&2097151)|0;f=c>>>0>>0?a+1|0:a;E[d+49|0]=(f&1023)<<22|c>>>10;E[d+48|0]=(f&3)<<30|c>>>2;e=0;E[d+47|0]=e<<17|(b&2064384)>>>15|c<<6;e=(f&2097151)<<11|c>>>21;b=e+(l&2097151)|0;a=f>>21;a=b>>>0>>0?a+1|0:a;E[d+52|0]=(a&8191)<<19|b>>>13;E[d+51|0]=(a&31)<<27|b>>>5;i=(a&2097151)<<11|b>>>21;f=i+(r&2097151)|0;e=a>>21;e=f>>>0>>0?e+1|0:e;i=f;E[d+53|0]=f;f=0;E[d+50|0]=f<<14|(c&1835008)>>>18|b<<3;E[d+54|0]=(e&255)<<24|i>>>8;b=(e&2097151)<<11|i>>>21;c=b+(s&2097151)|0;f=e>>21;f=b>>>0>c>>>0?f+1|0:f;E[d+57|0]=(f&2047)<<21|c>>>11;E[d+56|0]=(f&7)<<29|c>>>3;E[d+55|0]=((e&65535)<<16|i>>>16)&31|c<<5;e=(f&2097151)<<11|c>>>21;b=e+(m&2097151)|0;a=f>>21;a=b>>>0>>0?a+1|0:a;E[d+59|0]=(a&63)<<26|b>>>6;e=0;E[d+58|0]=e<<13|(c&1572864)>>>19|b<<2;e=a>>21;c=(a&2097151)<<11|b>>>21;a=c+(h&2097151)|0;e=a>>>0>>0?e+1|0:e;E[d+63|0]=(e&131071)<<15|a>>>17;E[d+62|0]=(e&511)<<23|a>>>9;E[d+61|0]=(e&1)<<31|a>>>1;c=0;E[d+60|0]=c<<18|(b&2080768)>>>14|a<<7;Y=g+624|0}function jb(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,F=0,I=0,J=0,K=0,L=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0;m=Y-768|0;Y=m;a:{if(H[d+63|0]>31){break a}k=Y-272|0;Y=k;S=H[a|0]|H[a+1|0]<<8|(H[a+2|0]<<16|H[a+3|0]<<24);W=H[a+31|0];V=H[a+30|0];U=H[a+29|0];O=H[a+6|0];N=H[a+5|0];n=H[a+4|0];x=H[a+9|0];J=H[a+8|0];A=H[a+7|0];B=H[a+12|0];v=H[a+11|0];w=H[a+10|0];C=H[a+15|0];D=H[a+14|0];F=H[a+13|0];u=H[a+28|0];p=H[a+27|0];s=H[a+26|0];q=H[a+25|0];e=H[a+24|0];j=H[a+23|0];r=m+128|0;Q=r+40|0;g=Q;i=H[a+21|0];f=i>>>17|0;l=i<<15;i=f;h=l;l=H[a+20|0];f=l>>>25|0;l=h|l<<7;K=f|i;f=H[a+22|0];i=f>>>9|0;l=f<<23|l;T=i|K;f=0;R=H[a+16|0]|H[a+17|0]<<8|(H[a+18|0]<<16|H[a+19|0]<<24);P=R+16777216|0;f=P>>>0<16777216?1:f;K=(f&33554431)<<7|P>>>25;l=K+l|0;f=(f>>>25|0)+T|0;f=l>>>0>>0?f+1|0:f;i=l;K=i+33554432|0;l=K>>>0<33554432?f+1|0:f;G[g+24>>2]=i-(K&-67108864);i=j>>>27|0;j=e<<13|j<<5;i=i|e>>>19|q>>>11;e=q<<21|j;l=(l&67108863)<<6|K>>>26;j=e+l|0;l=j;f=i;j=e+16777216|0;i=j>>>0<16777216?f+1|0:f;G[g+28>>2]=l-(j&1040187392);q=p<<12|s<<4;e=p>>>20|s>>>28;j=(i&33554431)<<7|j>>>25;l=j+(u<<20|q)|0;i=(u>>>12|e)+(i>>>25|0)|0;f=j>>>0>l>>>0?i+1|0:i;p=l+33554432|0;j=p>>>0<33554432?f+1|0:f;G[g+32>>2]=l-(p&-67108864);u=R-(P&-33554432)|0;q=D<<10|F<<2|C<<18;e=D>>>22|F>>>30|C>>>14;i=v>>>21|w>>>29|B>>>13;v=v<<11|w<<3|B<<19;s=v+16777216|0;i=s>>>0<16777216?i+1|0:i;f=i>>>25|0;i=(i&33554431)<<7|s>>>25;l=i+q|0;f=e+f|0;f=i>>>0>l>>>0?f+1|0:f;i=l+33554432|0;f=i>>>0<33554432?f+1|0:f;e=((f&67108863)<<6|i>>>26)+u|0;G[g+20>>2]=e;G[g+16>>2]=l-(i&-67108864);e=J<<13|A<<5|x<<21;u=J>>>19|A>>>27|x>>>11;l=N<<14|n<<6;f=N>>>18|n>>>26|O>>>10;i=e;w=O<<22|l;q=w+16777216|0;f=q>>>0<16777216?f+1|0:f;e=(f&33554431)<<7|q>>>25;l=i+e|0;f=(f>>>25|0)+u|0;f=e>>>0>l>>>0?f+1|0:f;i=l;e=i+33554432|0;l=e>>>0<33554432?f+1|0:f;G[g+8>>2]=i-(e&-67108864);i=V>>>22|U>>>30;u=W<<18&33292288|(V<<10|U<<2);j=(j&67108863)<<6|p>>>26;p=u+j|0;f=i;j=u+16777216|0;i=j>>>0<16777216?f+1|0:f;G[g+36>>2]=p-(j&33554432);l=v+((l&67108863)<<6|e>>>26)|0;G[g+12>>2]=l-(s&234881024);e=w-(q&2113929216)|0;i=we((i&33554431)<<7|j>>>25,i>>>25|0,19,0);l=i+S|0;f=Z;f=i>>>0>l>>>0?f+1|0:f;j=l+33554432|0;i=j>>>0<33554432?f+1|0:f;f=j;j=((i&67108863)<<6|f>>>26)+e|0;G[g+4>>2]=j;G[g>>2]=l-(f&-67108864);G[r+84>>2]=0;G[r+88>>2]=0;G[r+80>>2]=1;G[r+92>>2]=0;G[r+96>>2]=0;G[r+100>>2]=0;G[r+104>>2]=0;G[r+108>>2]=0;G[r+112>>2]=0;G[r+116>>2]=0;f=k+192|0;ia(f,g);l=k+144|0;ka(l,f,1936);O=-1;N=G[k+192>>2]-1|0;G[k+192>>2]=N;G[k+144>>2]=G[k+144>>2]+1;n=G[k+196>>2];x=G[k+200>>2];J=G[k+204>>2];A=G[k+208>>2];B=G[k+212>>2];v=G[k+216>>2];w=G[k+220>>2];C=G[k+224>>2];D=G[k+228>>2];i=k+96|0;ia(i,l);ka(i,i,l);ia(r,i);ka(r,r,l);ka(r,r,f);j=Y-144|0;Y=j;g=j+96|0;ia(g,r);e=j+48|0;ia(e,g);ia(e,e);ka(e,r,e);ka(g,g,e);ia(g,g);ka(g,e,g);ia(e,g);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ka(g,e,g);ia(e,g);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ka(e,e,g);ia(j,e);ia(j,j);ia(j,j);ia(j,j);ia(j,j);ia(j,j);ia(j,j);ia(j,j);ia(j,j);ia(j,j);ia(j,j);ia(j,j);ia(j,j);ia(j,j);ia(j,j);ia(j,j);ia(j,j);ia(j,j);ia(j,j);ia(j,j);ka(e,j,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ka(g,e,g);ia(e,g);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ka(e,e,g);ia(j,e);g=1;while(1){ia(j,j);g=g+1|0;if((g|0)!=100){continue}break}e=j+48|0;ka(e,j,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);ia(e,e);g=j+96|0;ka(g,e,g);ia(g,g);ia(g,g);ka(r,g,r);Y=j+144|0;ka(r,r,i);ka(r,r,f);g=k+48|0;ia(g,r);ka(g,g,l);F=G[k+84>>2];G[k+36>>2]=F-D;u=G[k+80>>2];G[k+32>>2]=u-C;p=G[k+76>>2];G[k+28>>2]=p-w;s=G[k+72>>2];G[k+24>>2]=s-v;q=G[k+68>>2];G[k+20>>2]=q-B;e=G[k+64>>2];G[k+16>>2]=e-A;j=G[k+60>>2];G[k+12>>2]=j-J;l=G[k+56>>2];G[k+8>>2]=l-x;i=G[k+52>>2];G[k+4>>2]=i-n;f=G[k+48>>2];G[k>>2]=f-N;g=k+240|0;Ja(g,k);b:{if(H[k+271|0]|(H[k+270|0]|(H[k+269|0]|(H[k+268|0]|(H[k+267|0]|(H[k+266|0]|(H[k+265|0]|(H[k+264|0]|(H[k+263|0]|(H[k+262|0]|(H[k+261|0]|(H[k+260|0]|(H[k+259|0]|(H[k+258|0]|(H[k+257|0]|(H[k+256|0]|(H[k+255|0]|(H[k+254|0]|(H[k+253|0]|(H[k+252|0]|(H[k+251|0]|(H[k+250|0]|(H[k+249|0]|(H[k+248|0]|(H[k+247|0]|(H[k+246|0]|(H[k+245|0]|(H[k+244|0]|(H[k+243|0]|(H[k+242|0]|(H[k+241|0]|H[k+240|0]))))))))))))))))))))))))))))))){G[k+36>>2]=D+F;G[k+32>>2]=u+C;G[k+28>>2]=p+w;G[k+24>>2]=s+v;G[k+20>>2]=q+B;G[k+16>>2]=e+A;G[k+12>>2]=j+J;G[k+8>>2]=l+x;G[k+4>>2]=i+n;G[k>>2]=f+N;Ja(g,k);if(H[k+271|0]|(H[k+270|0]|(H[k+269|0]|(H[k+268|0]|(H[k+267|0]|(H[k+266|0]|(H[k+265|0]|(H[k+264|0]|(H[k+263|0]|(H[k+262|0]|(H[k+261|0]|(H[k+260|0]|(H[k+259|0]|(H[k+258|0]|(H[k+257|0]|(H[k+256|0]|(H[k+255|0]|(H[k+254|0]|(H[k+253|0]|(H[k+252|0]|(H[k+251|0]|(H[k+250|0]|(H[k+249|0]|(H[k+248|0]|(H[k+247|0]|(H[k+246|0]|(H[k+245|0]|(H[k+244|0]|(H[k+243|0]|(H[k+242|0]|(H[k+241|0]|H[k+240|0]))))))))))))))))))))))))))))))){break b}ka(r,r,1984)}Ja(k+240|0,r);if((E[k+240|0]&1)==(H[a+31|0]>>>7|0)){G[r+36>>2]=0-G[r+36>>2];G[r+32>>2]=0-G[r+32>>2];G[r+28>>2]=0-G[r+28>>2];G[r+24>>2]=0-G[r+24>>2];G[r+20>>2]=0-G[r+20>>2];G[r+16>>2]=0-G[r+16>>2];G[r+12>>2]=0-G[r+12>>2];G[r+8>>2]=0-G[r+8>>2];G[r+4>>2]=0-G[r+4>>2];G[r>>2]=0-G[r>>2]}ka(r+120|0,r,Q);O=0}Y=k+272|0;if(O){break a}G[m+352>>2]=327033209;G[m+356>>2]=1541459225;G[m+344>>2]=-79577749;G[m+348>>2]=528734635;G[m+336>>2]=725511199;G[m+340>>2]=-1694144372;G[m+328>>2]=-1377402159;G[m+332>>2]=1359893119;p=32;G[m+320>>2]=1595750129;G[m+324>>2]=-1521486534;G[m+312>>2]=-23791573;G[m+316>>2]=1013904242;G[m+304>>2]=-2067093701;G[m+308>>2]=-1150833019;G[m+296>>2]=-205731576;G[m+300>>2]=1779033703;G[m+288>>2]=0;G[m+292>>2]=0;G[m+360>>2]=0;q=m+364|0;g=d;while(1){i=G[m+360>>2];c:{if(!(i|p>>>0<128)){ya(m+288|0,g);f=G[m+292>>2];i=G[m+288>>2]+1024|0;f=i>>>0<1024?f+1|0:f;G[m+288>>2]=i;G[m+292>>2]=f;p=p-128|0;g=g+128|0;break c}s=128;f=128-i|0;e=f>>>0>p>>>0?p:f;if((i|0)!=128){f=e>>>0<=1?1:e;l=f&3;s=0;t=0;if(e>>>0>=4){i=f&-4;j=0;while(1){E[q+(G[m+360>>2]+t|0)|0]=H[g+t|0];f=t|1;E[q+(f+G[m+360>>2]|0)|0]=H[f+g|0];f=t|2;E[q+(f+G[m+360>>2]|0)|0]=H[f+g|0];f=t|3;E[q+(f+G[m+360>>2]|0)|0]=H[f+g|0];t=t+4|0;j=j+4|0;if((i|0)!=(j|0)){continue}break}}if(l){while(1){E[((G[m+360>>2]+t|0)+m|0)+364|0]=H[g+t|0];t=t+1|0;s=s+1|0;if((l|0)!=(s|0)){continue}break}}s=G[m+360>>2]}p=p-e|0;g=e+g|0;f=e+s|0;G[m+360>>2]=f;if((f|0)!=128){break c}ya(m+288|0,q);G[m+360>>2]=0;f=G[m+292>>2];i=G[m+288>>2]+1024|0;f=i>>>0<1024?f+1|0:f;G[m+288>>2]=i;G[m+292>>2]=f}if(p){continue}break}d:{if(!a){break d}t=G[m+360>>2];if(t>>>0>128){break d}p=32;while(1){e:{if(!(p>>>0<128|t)){ya(m+288|0,a);f=G[m+292>>2];g=G[m+288>>2]+1024|0;f=g>>>0<1024?f+1|0:f;G[m+288>>2]=g;G[m+292>>2]=f;p=p-128|0;a=a+128|0;break e}g=128;f=128-t|0;e=f>>>0>p>>>0?p:f;if((t|0)!=128){g=e>>>0<=1?1:e;i=g&3;s=0;t=0;if(e>>>0>=4){f=g&-4;j=0;while(1){l=m+364|0;E[l+(G[m+360>>2]+t|0)|0]=H[a+t|0];g=t|1;E[l+(g+G[m+360>>2]|0)|0]=H[a+g|0];g=t|2;E[l+(g+G[m+360>>2]|0)|0]=H[a+g|0];g=t|3;E[l+(g+G[m+360>>2]|0)|0]=H[a+g|0];t=t+4|0;j=j+4|0;if((f|0)!=(j|0)){continue}break}}if(i){while(1){E[((G[m+360>>2]+t|0)+m|0)+364|0]=H[a+t|0];t=t+1|0;s=s+1|0;if((i|0)!=(s|0)){continue}break}}g=G[m+360>>2]}p=p-e|0;a=a+e|0;g=e+g|0;G[m+360>>2]=g;if((g|0)!=128){break e}ya(m+288|0,q);G[m+360>>2]=0;f=G[m+292>>2];g=G[m+288>>2]+1024|0;f=g>>>0<1024?f+1|0:f;G[m+288>>2]=g;G[m+292>>2]=f}if(!p){break d}t=G[m+360>>2];continue}}a=m+288|0;nb(a,b,c);i=m+528|0;gb(a,i);pb(i);c=m+8|0;p=m+128|0;e=d+32|0;b=0;a=0;o=Y-2272|0;Y=o;while(1){g=o+2016|0;f=i+(b>>>3|0)|0;E[g+b|0]=H[f|0]>>>(b&6)&1;l=g;g=b|1;E[l+g|0]=H[f|0]>>>(g&7)&1;b=b+2|0;if((b|0)!=256){continue}break}while(1){g=a;a=g+1|0;f:{if(g>>>0>254){break f}b=o+2016|0;q=b+g|0;if(!H[q|0]){break f}l=a+b|0;b=E[l|0];g:{if(!b){break g}i=b<<1;f=E[q|0];b=i+f|0;if((b|0)<=15){E[q|0]=b;E[l|0]=0;break g}b=f-i|0;if((b|0)<-15){break f}E[q|0]=b;b=a;while(1){f=(o+2016|0)+b|0;if(!H[f|0]){E[f|0]=1;break g}E[f|0]=0;f=b>>>0<255;b=b+1|0;if(f){continue}break}}if(g>>>0>253){break f}b=g+2|0;j=b+(o+2016|0)|0;f=E[j|0];h:{if(!f){break h}l=f<<2;i=E[q|0];f=l+i|0;if((f|0)>=16){f=i-l|0;if((f|0)<-15){break f}E[q|0]=f;while(1){f=(o+2016|0)+b|0;if(H[f|0]){E[f|0]=0;f=b>>>0<255;b=b+1|0;if(f){continue}break h}break}E[f|0]=1;break h}E[q|0]=f;E[j|0]=0}if(g>>>0>252){break f}b=g+3|0;j=b+(o+2016|0)|0;f=E[j|0];i:{if(!f){break i}l=f<<3;i=E[q|0];f=l+i|0;if((f|0)>=16){f=i-l|0;if((f|0)<-15){break f}E[q|0]=f;while(1){f=(o+2016|0)+b|0;if(H[f|0]){E[f|0]=0;f=b>>>0<255;b=b+1|0;if(f){continue}break i}break}E[f|0]=1;break i}E[q|0]=f;E[j|0]=0}if(g>>>0>251){break f}b=g+4|0;j=b+(o+2016|0)|0;f=E[j|0];j:{if(!f){break j}l=f<<4;i=E[q|0];f=l+i|0;if((f|0)>=16){f=i-l|0;if((f|0)<-15){break f}E[q|0]=f;while(1){f=(o+2016|0)+b|0;if(H[f|0]){E[f|0]=0;f=b>>>0<255;b=b+1|0;if(f){continue}break j}break}E[f|0]=1;break j}E[q|0]=f;E[j|0]=0}if(g>>>0>250){break f}b=g+5|0;j=b+(o+2016|0)|0;f=E[j|0];k:{if(!f){break k}l=f<<5;i=E[q|0];f=l+i|0;if((f|0)>=16){f=i-l|0;if((f|0)<-15){break f}E[q|0]=f;while(1){f=(o+2016|0)+b|0;if(H[f|0]){E[f|0]=0;f=b>>>0<255;b=b+1|0;if(f){continue}break k}break}E[f|0]=1;break k}E[q|0]=f;E[j|0]=0}if(g>>>0>249){break f}b=g+6|0;l=b+(o+2016|0)|0;g=E[l|0];if(!g){break f}i=g<<6;f=E[q|0];g=i+f|0;if((g|0)>=16){g=f-i|0;if((g|0)<-15){break f}E[q|0]=g;while(1){g=(o+2016|0)+b|0;if(H[g|0]){E[g|0]=0;g=b>>>0<255;b=b+1|0;if(g){continue}break f}break}E[g|0]=1;break f}E[q|0]=g;E[l|0]=0}if((a|0)!=256){continue}break}b=0;while(1){a=o+1760|0;g=e+(b>>>3|0)|0;E[a+b|0]=H[g|0]>>>(b&6)&1;i=a;a=b|1;E[i+a|0]=H[g|0]>>>(a&7)&1;b=b+2|0;if((b|0)!=256){continue}break}a=0;while(1){g=a;a=g+1|0;l:{if(g>>>0>254){break l}b=o+1760|0;e=b+g|0;if(!H[e|0]){break l}l=a+b|0;b=E[l|0];m:{if(!b){break m}i=b<<1;f=E[e|0];b=i+f|0;if((b|0)<=15){E[e|0]=b;E[l|0]=0;break m}b=f-i|0;if((b|0)<-15){break l}E[e|0]=b;b=a;while(1){f=(o+1760|0)+b|0;if(!H[f|0]){E[f|0]=1;break m}E[f|0]=0;f=b>>>0<255;b=b+1|0;if(f){continue}break}}if(g>>>0>253){break l}b=g+2|0;j=b+(o+1760|0)|0;f=E[j|0];n:{if(!f){break n}l=f<<2;i=E[e|0];f=l+i|0;if((f|0)>=16){f=i-l|0;if((f|0)<-15){break l}E[e|0]=f;while(1){f=(o+1760|0)+b|0;if(H[f|0]){E[f|0]=0;f=b>>>0<255;b=b+1|0;if(f){continue}break n}break}E[f|0]=1;break n}E[e|0]=f;E[j|0]=0}if(g>>>0>252){break l}b=g+3|0;j=b+(o+1760|0)|0;f=E[j|0];o:{if(!f){break o}l=f<<3;i=E[e|0];f=l+i|0;if((f|0)>=16){f=i-l|0;if((f|0)<-15){break l}E[e|0]=f;while(1){f=(o+1760|0)+b|0;if(H[f|0]){E[f|0]=0;f=b>>>0<255;b=b+1|0;if(f){continue}break o}break}E[f|0]=1;break o}E[e|0]=f;E[j|0]=0}if(g>>>0>251){break l}b=g+4|0;j=b+(o+1760|0)|0;f=E[j|0];p:{if(!f){break p}l=f<<4;i=E[e|0];f=l+i|0;if((f|0)>=16){f=i-l|0;if((f|0)<-15){break l}E[e|0]=f;while(1){f=(o+1760|0)+b|0;if(H[f|0]){E[f|0]=0;f=b>>>0<255;b=b+1|0;if(f){continue}break p}break}E[f|0]=1;break p}E[e|0]=f;E[j|0]=0}if(g>>>0>250){break l}b=g+5|0;j=b+(o+1760|0)|0;f=E[j|0];q:{if(!f){break q}l=f<<5;i=E[e|0];f=l+i|0;if((f|0)>=16){f=i-l|0;if((f|0)<-15){break l}E[e|0]=f;while(1){f=(o+1760|0)+b|0;if(H[f|0]){E[f|0]=0;f=b>>>0<255;b=b+1|0;if(f){continue}break q}break}E[f|0]=1;break q}E[e|0]=f;E[j|0]=0}if(g>>>0>249){break l}b=g+6|0;l=b+(o+1760|0)|0;g=E[l|0];if(!g){break l}i=g<<6;f=E[e|0];g=i+f|0;if((g|0)>=16){g=f-i|0;if((g|0)<-15){break l}E[e|0]=g;while(1){g=(o+1760|0)+b|0;if(H[g|0]){E[g|0]=0;g=b>>>0<255;b=b+1|0;if(g){continue}break l}break}E[g|0]=1;break l}E[e|0]=g;E[l|0]=0}if((a|0)!=256){continue}break}s=o+480|0;Ka(s,p);q=G[p>>2];e=G[p+4>>2];j=G[p+8>>2];l=G[p+12>>2];i=G[p+16>>2];f=G[p+20>>2];g=G[p+24>>2];b=G[p+28>>2];a=G[p+36>>2];G[o+192>>2]=G[p+32>>2];G[o+196>>2]=a;G[o+184>>2]=g;G[o+188>>2]=b;G[o+176>>2]=i;G[o+180>>2]=f;G[o+168>>2]=j;G[o+172>>2]=l;G[o+160>>2]=q;G[o+164>>2]=e;q=G[p+48>>2];e=G[p+52>>2];j=G[p+56>>2];l=G[p+60>>2];a=p- -64|0;i=G[a>>2];f=G[a+4>>2];g=G[p+40>>2];b=G[p+44>>2];a=G[p+76>>2];G[o+232>>2]=G[p+72>>2];G[o+236>>2]=a;G[o+224>>2]=i;G[o+228>>2]=f;G[o+216>>2]=j;G[o+220>>2]=l;G[o+208>>2]=q;G[o+212>>2]=e;G[o+200>>2]=g;G[o+204>>2]=b;q=G[p+88>>2];e=G[p+92>>2];j=G[p+96>>2];l=G[p+100>>2];i=G[p+104>>2];f=G[p+108>>2];g=G[p+80>>2];b=G[p+84>>2];a=G[p+116>>2];G[o+272>>2]=G[p+112>>2];G[o+276>>2]=a;G[o+264>>2]=i;G[o+268>>2]=f;G[o+256>>2]=j;G[o+260>>2]=l;G[o+248>>2]=q;G[o+252>>2]=e;G[o+240>>2]=g;G[o+244>>2]=b;g=o+320|0;b=o+160|0;Va(g,b);y=o+440|0;ka(o,g,y);I=o+360|0;z=o+400|0;ka(o+40|0,I,z);ka(o+80|0,z,y);ka(o+120|0,g,I);La(g,o,s);ka(b,g,y);L=o+200|0;ka(L,I,z);k=o+240|0;ka(k,z,y);r=o+280|0;ka(r,g,I);a=o+640|0;Ka(a,b);La(g,o,a);ka(b,g,y);ka(L,I,z);ka(k,z,y);ka(r,g,I);a=o+800|0;Ka(a,b);La(g,o,a);ka(b,g,y);ka(L,I,z);ka(k,z,y);ka(r,g,I);a=o+960|0;Ka(a,b);La(g,o,a);ka(b,g,y);ka(L,I,z);ka(k,z,y);ka(r,g,I);a=o+1120|0;Ka(a,b);La(g,o,a);ka(b,g,y);ka(L,I,z);ka(k,z,y);ka(r,g,I);a=o+1280|0;Ka(a,b);La(g,o,a);ka(b,g,y);ka(L,I,z);ka(k,z,y);ka(r,g,I);a=o+1440|0;Ka(a,b);La(g,o,a);ka(b,g,y);ka(L,I,z);ka(k,z,y);ka(r,g,I);Ka(o+1600|0,b);G[c+32>>2]=0;G[c+36>>2]=0;G[c+24>>2]=0;G[c+28>>2]=0;G[c+16>>2]=0;G[c+20>>2]=0;G[c+8>>2]=0;G[c+12>>2]=0;G[c>>2]=0;G[c+4>>2]=0;G[c+44>>2]=0;G[c+48>>2]=0;G[c+40>>2]=1;G[c+52>>2]=0;G[c+56>>2]=0;G[c+60>>2]=0;G[c+64>>2]=0;G[c+68>>2]=0;G[c+72>>2]=0;G[c+84>>2]=0;G[c+88>>2]=0;G[c+76>>2]=0;G[c+80>>2]=1;G[c+92>>2]=0;G[c+96>>2]=0;G[c+100>>2]=0;G[c+104>>2]=0;G[c+108>>2]=0;G[c+112>>2]=0;G[c+116>>2]=0;W=c+80|0;V=c+40|0;a=255;while(1){r:{s:{b=o+2016|0;t:{if(H[b+a|0]){break t}g=o+1760|0;if(H[g+a|0]){break t}i=b;b=a-1|0;if(!(H[i+b|0]|H[b+g|0])){break s}a=b}if((a|0)<0){break r}while(1){g=o+320|0;Va(g,c);b=a;x=E[b+(o+2016|0)|0];u:{if((x|0)>0){a=o+160|0;ka(a,g,y);ka(L,I,z);ka(k,z,y);ka(r,g,I);La(g,a,(o+480|0)+M((x&254)>>>1|0,160)|0);break u}if((x|0)>=0){break u}n=o+160|0;h=o+320|0;ka(n,h,y);ka(L,I,z);ka(k,z,y);ka(r,h,I);A=G[n+44>>2];B=G[n+48>>2];v=G[n+52>>2];w=G[n+56>>2];C=G[n+60>>2];J=n- -64|0;D=G[J>>2];F=G[n+68>>2];u=G[n+72>>2];p=G[n+76>>2];s=G[n+4>>2];q=G[n+8>>2];e=G[n+12>>2];j=G[n+16>>2];l=G[n+20>>2];i=G[n+24>>2];f=G[n+28>>2];g=G[n+32>>2];a=G[n+36>>2];G[h>>2]=G[n>>2]+G[n+40>>2];G[h+36>>2]=a+p;G[h+32>>2]=g+u;G[h+28>>2]=f+F;G[h+24>>2]=i+D;G[h+20>>2]=l+C;G[h+16>>2]=j+w;G[h+12>>2]=e+v;G[h+8>>2]=q+B;G[h+4>>2]=s+A;A=G[n+44>>2];B=G[n+48>>2];v=G[n+52>>2];w=G[n+56>>2];C=G[n+60>>2];D=G[J>>2];F=G[n+68>>2];u=G[n+72>>2];p=G[n>>2];s=G[n+40>>2];q=G[n+4>>2];e=G[n+8>>2];j=G[n+12>>2];l=G[n+16>>2];i=G[n+20>>2];f=G[n+24>>2];g=G[n+28>>2];a=G[n+32>>2];G[h+76>>2]=G[n+76>>2]-G[n+36>>2];G[h+72>>2]=u-a;G[h+68>>2]=F-g;t=h- -64|0;G[t>>2]=D-f;G[h+60>>2]=C-i;G[h+56>>2]=w-l;G[h+52>>2]=v-j;G[h+48>>2]=B-e;G[h+44>>2]=A-q;G[h+40>>2]=s-p;g=(o+480|0)+M((0-x&254)>>>1|0,160)|0;ka(h+80|0,h,g+40|0);a=h+40|0;ka(a,a,g);ka(h+120|0,g+120|0,n+120|0);ka(h,n+80|0,g+80|0);Q=G[h+44>>2];T=G[h+84>>2];S=G[h+48>>2];R=G[h+88>>2];P=G[h+52>>2];K=G[h+92>>2];x=G[h+56>>2];J=G[h+96>>2];A=G[h+60>>2];B=G[h+100>>2];v=G[t>>2];w=G[h+104>>2];C=G[h+68>>2];D=G[h+108>>2];F=G[h+72>>2];u=G[h+112>>2];U=G[h>>2];O=G[h+4>>2];N=G[h+8>>2];n=G[h+12>>2];q=G[h+16>>2];e=G[h+20>>2];j=G[h+24>>2];l=G[h+28>>2];i=G[h+32>>2];f=G[h+36>>2];p=G[h+40>>2];s=G[h+80>>2];g=G[h+76>>2];a=G[h+116>>2];G[h+76>>2]=g+a;G[h+72>>2]=u+F;G[h+68>>2]=C+D;G[t>>2]=v+w;G[h+60>>2]=A+B;G[h+56>>2]=x+J;G[h+52>>2]=K+P;G[h+48>>2]=S+R;G[h+44>>2]=Q+T;G[h+40>>2]=p+s;G[h+36>>2]=a-g;G[h+32>>2]=u-F;G[h+28>>2]=D-C;G[h+24>>2]=w-v;G[h+20>>2]=B-A;G[h+16>>2]=J-x;G[h+12>>2]=K-P;G[h+8>>2]=R-S;G[h+4>>2]=T-Q;G[h>>2]=s-p;x=G[h+156>>2];J=f<<1;G[h+156>>2]=x+J;A=G[h+152>>2];B=i<<1;G[h+152>>2]=A+B;v=G[h+148>>2];w=l<<1;G[h+148>>2]=v+w;C=G[h+144>>2];D=j<<1;G[h+144>>2]=C+D;F=G[h+140>>2];u=e<<1;G[h+140>>2]=F+u;p=G[h+136>>2];s=q<<1;G[h+136>>2]=p+s;q=G[h+132>>2];e=n<<1;G[h+132>>2]=q+e;j=G[h+128>>2];l=N<<1;G[h+128>>2]=j+l;i=G[h+124>>2];f=O<<1;G[h+124>>2]=i+f;g=G[h+120>>2];a=U<<1;G[h+120>>2]=g+a;G[h+112>>2]=B-A;G[h+108>>2]=w-v;G[h+104>>2]=D-C;G[h+100>>2]=u-F;G[h+96>>2]=s-p;G[h+92>>2]=e-q;G[h+88>>2]=l-j;G[h+84>>2]=f-i;G[h+80>>2]=a-g;G[h+116>>2]=J-x}x=E[b+(o+1760|0)|0];v:{if((x|0)>0){a=o+160|0;g=o+320|0;ka(a,g,y);ka(L,I,z);ka(k,z,y);ka(r,g,I);ob(g,a,M((x&254)>>>1|0,120)+5680|0);break v}if((x|0)>=0){break v}n=o+160|0;h=o+320|0;ka(n,h,y);ka(L,I,z);ka(k,z,y);ka(r,h,I);A=G[n+44>>2];B=G[n+48>>2];v=G[n+52>>2];w=G[n+56>>2];C=G[n+60>>2];J=n- -64|0;D=G[J>>2];F=G[n+68>>2];u=G[n+72>>2];p=G[n+76>>2];s=G[n+4>>2];q=G[n+8>>2];e=G[n+12>>2];j=G[n+16>>2];l=G[n+20>>2];i=G[n+24>>2];f=G[n+28>>2];g=G[n+32>>2];a=G[n+36>>2];G[h>>2]=G[n>>2]+G[n+40>>2];G[h+36>>2]=a+p;G[h+32>>2]=g+u;G[h+28>>2]=f+F;G[h+24>>2]=i+D;G[h+20>>2]=l+C;G[h+16>>2]=j+w;G[h+12>>2]=e+v;G[h+8>>2]=q+B;G[h+4>>2]=s+A;A=G[n+44>>2];B=G[n+48>>2];v=G[n+52>>2];w=G[n+56>>2];C=G[n+60>>2];D=G[J>>2];F=G[n+68>>2];u=G[n+72>>2];p=G[n>>2];s=G[n+40>>2];q=G[n+4>>2];e=G[n+8>>2];j=G[n+12>>2];l=G[n+16>>2];i=G[n+20>>2];f=G[n+24>>2];g=G[n+28>>2];a=G[n+32>>2];G[h+76>>2]=G[n+76>>2]-G[n+36>>2];G[h+72>>2]=u-a;G[h+68>>2]=F-g;t=h- -64|0;G[t>>2]=D-f;G[h+60>>2]=C-i;G[h+56>>2]=w-l;G[h+52>>2]=v-j;G[h+48>>2]=B-e;G[h+44>>2]=A-q;G[h+40>>2]=s-p;g=M((0-x&254)>>>1|0,120)+5680|0;ka(h+80|0,h,g+40|0);a=h+40|0;ka(a,a,g);ka(h+120|0,g+80|0,n+120|0);U=G[n+84>>2];O=G[n+88>>2];N=G[n+92>>2];q=G[n+96>>2];e=G[n+100>>2];j=G[n+104>>2];l=G[n+108>>2];i=G[n+112>>2];f=G[n+116>>2];Q=G[h+44>>2];T=G[h+84>>2];S=G[h+48>>2];R=G[h+88>>2];P=G[h+52>>2];K=G[h+92>>2];x=G[h+56>>2];J=G[h+96>>2];A=G[h+60>>2];B=G[h+100>>2];v=G[t>>2];w=G[h+104>>2];C=G[h+68>>2];D=G[h+108>>2];F=G[h+72>>2];u=G[h+112>>2];n=G[n+80>>2];p=G[h+40>>2];s=G[h+80>>2];g=G[h+76>>2];a=G[h+116>>2];G[h+76>>2]=g+a;G[h+72>>2]=u+F;G[h+68>>2]=C+D;G[t>>2]=v+w;G[h+60>>2]=A+B;G[h+56>>2]=x+J;G[h+52>>2]=K+P;G[h+48>>2]=S+R;G[h+44>>2]=Q+T;G[h+40>>2]=p+s;G[h+36>>2]=a-g;G[h+32>>2]=u-F;G[h+28>>2]=D-C;G[h+24>>2]=w-v;G[h+20>>2]=B-A;G[h+16>>2]=J-x;G[h+12>>2]=K-P;G[h+8>>2]=R-S;G[h+4>>2]=T-Q;G[h>>2]=s-p;x=G[h+156>>2];J=f<<1;G[h+156>>2]=x+J;A=G[h+152>>2];B=i<<1;G[h+152>>2]=A+B;v=G[h+148>>2];w=l<<1;G[h+148>>2]=v+w;C=G[h+144>>2];D=j<<1;G[h+144>>2]=C+D;F=G[h+140>>2];u=e<<1;G[h+140>>2]=F+u;p=G[h+136>>2];s=q<<1;G[h+136>>2]=p+s;q=G[h+132>>2];e=N<<1;G[h+132>>2]=q+e;j=G[h+128>>2];l=O<<1;G[h+128>>2]=j+l;i=G[h+124>>2];f=U<<1;G[h+124>>2]=i+f;g=G[h+120>>2];a=n<<1;G[h+120>>2]=g+a;G[h+112>>2]=B-A;G[h+108>>2]=w-v;G[h+104>>2]=D-C;G[h+100>>2]=u-F;G[h+96>>2]=s-p;G[h+92>>2]=e-q;G[h+88>>2]=l-j;G[h+84>>2]=f-i;G[h+80>>2]=a-g;G[h+116>>2]=J-x}ka(c,o+320|0,y);ka(V,I,z);ka(W,z,y);a=b-1|0;if((b|0)>0){continue}break}break r}a=a-2|0;if(b){continue}}break}Y=o+2272|0;g=m+688|0;qb(g,m+88|0);b=m+640|0;ka(b,c,g);a=m+592|0;ka(a,m+48|0,g);Ja(m+496|0,a);Ja(m+736|0,b);t=H[m+496|0]==H[d|0]&H[m+497|0]==H[d+1|0]&H[m+498|0]==H[d+2|0]&H[m+499|0]==H[d+3|0]&H[m+500|0]==H[d+4|0]&H[m+501|0]==H[d+5|0]&H[m+502|0]==H[d+6|0]&H[m+503|0]==H[d+7|0]&H[m+504|0]==H[d+8|0]&H[m+505|0]==H[d+9|0]&H[m+506|0]==H[d+10|0]&H[m+507|0]==H[d+11|0]&H[m+508|0]==H[d+12|0]&H[m+509|0]==H[d+13|0]&H[m+510|0]==H[d+14|0]&H[m+511|0]==H[d+15|0]&H[m+512|0]==H[d+16|0]&H[m+513|0]==H[d+17|0]&H[m+514|0]==H[d+18|0]&H[m+515|0]==H[d+19|0]&H[m+516|0]==H[d+20|0]&H[m+517|0]==H[d+21|0]&H[m+518|0]==H[d+22|0]&H[m+519|0]==H[d+23|0]&H[m+520|0]==H[d+24|0]&H[m+521|0]==H[d+25|0]&H[m+522|0]==H[d+26|0]&H[m+523|0]==H[d+27|0]&H[m+524|0]==H[d+28|0]&H[m+525|0]==H[d+29|0]&H[m+526|0]==H[d+30|0]&H[d+31|0]==(H[m+527|0]^H[m+736|0]<<7&128)}Y=m+768|0;return(t|0)!=0}function pb(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,F=0,G=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0;m=H[a+44|0]|H[a+45|0]<<8|(H[a+46|0]<<16|H[a+47|0]<<24);e=m>>>5&2097151;w=(H[a+60|0]|H[a+61|0]<<8|(H[a+62|0]<<16|H[a+63|0]<<24))>>>3|0;d=we(w,0,-683901,-1);b=H[a+44|0];c=b<<16&2031616|(H[a+42|0]|H[a+43|0]<<8);j=d+c|0;b=Z;b=c>>>0>j>>>0?b+1|0:b;i=b;b=b-((j>>>0<4293918720)-1|0)|0;q=b;d=b>>21;c=e;g=j- -1048576|0;e=(b&2097151)<<11|g>>>21;b=c+e|0;c=d;c=b>>>0>>0?c+1|0:c;F=c;G=b;t=we(b,c,-683901,-1);k=Z;J=(H[a+49|0]|H[a+50|0]<<8|(H[a+51|0]<<16|H[a+52|0]<<24))>>>7&2097151;h=we(J,0,-997805,-1);b=H[a+27|0];d=b>>>24|0;n=H[a+23|0]|H[a+24|0]<<8|(H[a+25|0]<<16|H[a+26|0]<<24);e=b<<8|n>>>24;b=H[a+28|0];c=b>>>16|0;b=e|b<<16;c=c|d;c=((c&3)<<30|b>>>2)&2097151;d=c+h|0;b=Z;b=c>>>0>d>>>0?b+1|0:b;o=H[a+52|0]|H[a+53|0]<<8|(H[a+54|0]<<16|H[a+55|0]<<24);B=o>>>4&2097151;c=we(B,0,654183,0);d=c+d|0;b=Z+b|0;h=d;d=c>>>0>d>>>0?b+1|0:b;c=H[a+48|0];b=c>>>24|0;f=c<<8|m>>>24;c=b;e=H[a+49|0];b=e>>>16|0;e=e<<16;m=b|c;c=e|f;K=((m&3)<<30|c>>>2)&2097151;b=we(K,0,136657,0);c=b+h|0;d=Z+d|0;d=b>>>0>c>>>0?d+1|0:d;L=(H[a+57|0]|H[a+58|0]<<8|(H[a+59|0]<<16|H[a+60|0]<<24))>>>6&2097151;b=we(L,0,666643,0);e=b+c|0;c=Z+d|0;h=e;d=b>>>0>e>>>0?c+1|0:c;b=H[a+56|0];c=b>>>24|0;f=b<<8|o>>>24;e=H[a+57|0];b=e>>>16|0;e=e<<16;o=b|c;c=e|f;M=((o&1)<<31|c>>>1)&2097151;c=we(M,0,470296,0);e=c+h|0;b=Z+d|0;d=e;b=d>>>0>>0?b+1|0:b;c=b+k|0;e=d+t|0;c=d>>>0>e>>>0?c+1|0:c;r=d- -1048576|0;d=b-((d>>>0<4293918720)-1|0)|0;s=d;b=r&-2097152;k=e-b|0;t=c-((b>>>0>e>>>0)+d|0)|0;c=we(J,0,654183,0);d=c+(n>>>5&2097151)|0;b=Z;b=c>>>0>d>>>0?b+1|0:b;c=d;d=we(B,0,470296,0);e=c+d|0;c=Z+b|0;c=d>>>0>e>>>0?c+1|0:c;b=we(K,N,-997805,-1);d=b+e|0;c=Z+c|0;c=b>>>0>d>>>0?c+1|0:c;b=d;d=we(M,O,666643,0);e=b+d|0;b=Z+c|0;f=e;e=d>>>0>e>>>0?b+1|0:b;d=we(J,0,470296,0);b=H[a+23|0];b=b<<16&2031616|(H[a+21|0]|H[a+22|0]<<8);h=d+b|0;d=Z;d=b>>>0>h>>>0?d+1|0:d;c=we(B,0,666643,0);h=c+h|0;b=Z+d|0;d=we(K,N,654183,0);n=d+h|0;c=Z+(c>>>0>h>>>0?b+1|0:b)|0;c=d>>>0>n>>>0?c+1|0:c;o=c;c=c-((n>>>0<4293918720)-1|0)|0;A=c;b=c>>>21|0;h=n- -1048576|0;c=(c&2097151)<<11|h>>>21;f=c+f|0;b=b+e|0;b=c>>>0>f>>>0?b+1|0:b;d=b;c=b-((f>>>0<4293918720)-1|0)|0;l=c;b=k;e=f- -1048576|0;k=(c&2097151)<<11|e>>>21;p=b+k|0;c=(c>>21)+t|0;c=k>>>0>p>>>0?c+1|0:c;k=c-((p>>>0<4293918720)-1|0)|0;m=k;t=p- -1048576|0;b=t&-2097152;C=p-b|0;P=c-((b>>>0>p>>>0)+k|0)|0;b=we(G,F,136657,0);c=b+f|0;d=Z+d|0;d=b>>>0>c>>>0?d+1|0:d;b=e&-2097152;v=c-b|0;D=d-((b>>>0>c>>>0)+l|0)|0;b=g&-2097152;p=j-b|0;q=i-((b>>>0>j>>>0)+q|0)|0;i=we(w,0,136657,0);b=H[a+40|0];c=b>>>24|0;g=H[a+36|0]|H[a+37|0]<<8|(H[a+38|0]<<16|H[a+39|0]<<24);e=b<<8|g>>>24;b=H[a+41|0];d=b>>>16|0;b=e|b<<16;d=c|d;c=d>>>3|0;d=(d&7)<<29|b>>>3;e=d+i|0;b=c+Z|0;b=d>>>0>e>>>0?b+1|0:b;c=we(L,0,-683901,-1);d=c+e|0;b=Z+b|0;b=c>>>0>d>>>0?b+1|0:b;f=d;c=we(w,0,-997805,-1);e=c+(g>>>6&2097151)|0;d=Z;d=c>>>0>e>>>0?d+1|0:d;c=e;e=we(L,0,136657,0);g=c+e|0;c=Z+d|0;d=we(M,O,-683901,-1);x=d+g|0;c=Z+(e>>>0>g>>>0?c+1|0:c)|0;c=d>>>0>x>>>0?c+1|0:c;k=c;d=c-((x>>>0<4293918720)-1|0)|0;S=d;c=d>>21;j=x- -1048576|0;d=(d&2097151)<<11|j>>>21;l=d+f|0;b=b+c|0;b=d>>>0>l>>>0?b+1|0:b;g=b;b=b-((l>>>0<4293918720)-1|0)|0;y=b;c=b>>21;f=l- -1048576|0;d=(b&2097151)<<11|f>>>21;b=d+p|0;c=c+q|0;c=b>>>0>>0?c+1|0:c;I=c;z=b;c=we(b,c,-683901,-1);d=c+v|0;b=Z+D|0;u=d;e=c>>>0>d>>>0?b+1|0:b;b=h&-2097152;D=n-b|0;q=o-((A&4095)+(b>>>0>n>>>0)|0)|0;n=we(J,0,666643,0);c=H[a+19|0];b=c>>>24|0;o=H[a+15|0]|H[a+16|0]<<8|(H[a+17|0]<<16|H[a+18|0]<<24);h=c<<8|o>>>24;d=b;b=H[a+20|0];c=b>>>16|0;b=b<<16;d=c|d;c=b|h;c=(d&7)<<29|c>>>3;h=c+n|0;d=Z+(d>>>3|0)|0;d=c>>>0>h>>>0?d+1|0:d;b=we(K,N,470296,0);h=b+h|0;c=Z+d|0;b=b>>>0>h>>>0?c+1|0:c;d=we(K,N,666643,0);v=d+(o>>>6&2097151)|0;c=Z;c=d>>>0>v>>>0?c+1|0:c;n=c;d=c-((v>>>0<4293918720)-1|0)|0;T=d;c=d>>>21|0;i=v- -1048576|0;d=(d&2097151)<<11|i>>>21;p=d+h|0;b=b+c|0;b=d>>>0>p>>>0?b+1|0:b;o=b;b=b-((p>>>0<4293918720)-1|0)|0;U=b;c=b>>>21|0;h=p- -1048576|0;b=(b&2097151)<<11|h>>>21;d=b+D|0;c=c+q|0;c=b>>>0>d>>>0?c+1|0:c;b=d;d=we(G,F,-997805,-1);q=b+d|0;b=Z+c|0;b=d>>>0>q>>>0?b+1|0:b;d=f&-2097152;c=l-d|0;A=c;f=g-((d>>>0>l>>>0)+y|0)|0;Q=f;d=we(z,I,136657,0);g=d+q|0;b=Z+b|0;b=d>>>0>g>>>0?b+1|0:b;d=we(c,f,-683901,-1);q=d+g|0;c=Z+b|0;c=d>>>0>q>>>0?c+1|0:c;g=c;b=c-((q>>>0<4293918720)-1|0)|0;y=b;f=q- -1048576|0;c=(b&2097151)<<11|f>>>21;l=c+u|0;b=(b>>21)+e|0;b=c>>>0>l>>>0?b+1|0:b;c=b-((l>>>0<4293918720)-1|0)|0;u=c;e=l- -1048576|0;D=(c&2097151)<<11|e>>>21;C=D+C|0;c=(c>>21)+P|0;V=C;D=C>>>0>>0?c+1|0:c;c=e&-2097152;W=l-c|0;X=b-((c>>>0>l>>>0)+u|0)|0;b=f&-2097152;C=q-b|0;P=g-((b>>>0>q>>>0)+y|0)|0;b=we(G,F,654183,0);c=h&-2097152;d=b+(p-c|0)|0;c=Z+(o-((U&2147483647)+(c>>>0>p>>>0)|0)|0)|0;c=b>>>0>d>>>0?c+1|0:c;b=we(z,I,-997805,-1);d=b+d|0;c=Z+c|0;c=b>>>0>d>>>0?c+1|0:c;b=d;d=we(A,Q,136657,0);e=b+d|0;b=Z+c|0;u=e;g=d>>>0>e>>>0?b+1|0:b;b=j&-2097152;p=x-b|0;l=k-((b>>>0>x>>>0)+S|0)|0;o=we(B,0,-683901,-1);c=H[a+35|0];b=c>>>24|0;h=H[a+31|0]|H[a+32|0]<<8|(H[a+33|0]<<16|H[a+34|0]<<24);e=c<<8|h>>>24;d=b;b=H[a+36|0];c=b>>>16|0;b=b<<16|e;c=c|d;b=((c&1)<<31|b>>>1)&2097151;c=b+o|0;d=Z;d=b>>>0>c>>>0?d+1|0:d;b=we(w,0,654183,0);e=b+c|0;c=Z+d|0;c=b>>>0>e>>>0?c+1|0:c;d=we(L,0,-997805,-1);e=d+e|0;b=Z+c|0;b=d>>>0>e>>>0?b+1|0:b;c=we(M,O,136657,0);d=c+e|0;b=Z+b|0;f=d;e=c>>>0>d>>>0?b+1|0:b;b=we(J,0,-683901,-1);d=b+(h>>>4&2097151)|0;c=Z;c=b>>>0>d>>>0?c+1|0:c;b=we(B,0,136657,0);h=b+d|0;d=Z+c|0;d=b>>>0>h>>>0?d+1|0:d;b=we(w,0,470296,0);h=b+h|0;c=Z+d|0;c=b>>>0>h>>>0?c+1|0:c;d=we(L,0,654183,0);h=d+h|0;b=Z+c|0;c=we(M,O,-997805,-1);k=c+h|0;b=Z+(d>>>0>h>>>0?b+1|0:b)|0;b=c>>>0>k>>>0?b+1|0:b;o=b;c=b-((k>>>0<4293918720)-1|0)|0;Y=c;b=c>>21;h=k- -1048576|0;c=(c&2097151)<<11|h>>>21;j=c+f|0;d=b+e|0;d=c>>>0>j>>>0?d+1|0:d;c=d-((j>>>0<4293918720)-1|0)|0;q=c;b=c>>21;f=j- -1048576|0;e=(c&2097151)<<11|f>>>21;c=e+p|0;b=b+l|0;b=c>>>0>>0?b+1|0:b;y=b;e=u;u=c;b=we(c,b,-683901,-1);e=e+b|0;c=Z+g|0;l=e;e=b>>>0>e>>>0?c+1|0:c;b=we(G,F,470296,0);c=i&-2097152;g=b+(v-c|0)|0;c=Z+(n-((T&2047)+(c>>>0>v>>>0)|0)|0)|0;c=b>>>0>g>>>0?c+1|0:c;b=g;g=we(z,I,654183,0);i=b+g|0;b=Z+c|0;b=g>>>0>i>>>0?b+1|0:b;g=we(A,Q,-997805,-1);i=g+i|0;c=Z+b|0;c=g>>>0>i>>>0?c+1|0:c;b=f&-2097152;f=j-b|0;x=f;g=d-((b>>>0>j>>>0)+q|0)|0;R=g;d=we(u,y,136657,0);i=d+i|0;b=Z+c|0;b=d>>>0>i>>>0?b+1|0:b;d=we(f,g,-683901,-1);n=d+i|0;c=Z+b|0;c=d>>>0>n>>>0?c+1|0:c;g=c;b=c-((n>>>0<4293918720)-1|0)|0;q=b;f=n- -1048576|0;c=(b&2097151)<<11|f>>>21;i=c+l|0;b=(b>>21)+e|0;b=c>>>0>i>>>0?b+1|0:b;c=b-((i>>>0<4293918720)-1|0)|0;l=c;e=i- -1048576|0;j=(c&2097151)<<11|e>>>21;p=j+C|0;c=(c>>21)+P|0;S=p;p=j>>>0>p>>>0?c+1|0:c;c=e&-2097152;T=i-c|0;U=b-((c>>>0>i>>>0)+l|0)|0;b=f&-2097152;C=n-b|0;P=g-((b>>>0>n>>>0)+q|0)|0;g=we(G,F,666643,0);c=H[a+14|0];b=c>>>24|0;q=H[a+10|0]|H[a+11|0]<<8|(H[a+12|0]<<16|H[a+13|0]<<24);e=c<<8|q>>>24;d=b;b=H[a+15|0];c=b>>>16|0;b=b<<16|e;c=c|d;b=((c&1)<<31|b>>>1)&2097151;c=b+g|0;d=Z;d=b>>>0>c>>>0?d+1|0:d;b=c;c=we(z,I,470296,0);e=b+c|0;b=Z+d|0;b=c>>>0>e>>>0?b+1|0:b;c=we(A,Q,654183,0);d=c+e|0;b=Z+b|0;b=c>>>0>d>>>0?b+1|0:b;c=d;d=we(u,y,-997805,-1);e=c+d|0;c=Z+b|0;c=d>>>0>e>>>0?c+1|0:c;b=we(x,R,136657,0);d=b+e|0;c=Z+c|0;n=d;e=b>>>0>d>>>0?c+1|0:c;b=h&-2097152;h=k-b|0;g=o-((b>>>0>k>>>0)+Y|0)|0;d=we(J,0,136657,0);b=Z;c=(H[a+28|0]|H[a+29|0]<<8|(H[a+30|0]<<16|H[a+31|0]<<24))>>>7&2097151;d=c+d|0;b=c>>>0>d>>>0?b+1|0:b;c=d;d=we(B,0,-997805,-1);f=c+d|0;c=Z+b|0;c=d>>>0>f>>>0?c+1|0:c;b=we(K,N,-683901,-1);d=b+f|0;c=Z+c|0;c=b>>>0>d>>>0?c+1|0:c;b=we(w,0,666643,0);f=b+d|0;d=Z+c|0;d=b>>>0>f>>>0?d+1|0:d;c=we(L,0,470296,0);f=c+f|0;b=Z+d|0;b=c>>>0>f>>>0?b+1|0:b;c=we(M,O,654183,0);d=c+f|0;b=Z+b|0;f=(s&2097151)<<11|r>>>21;r=f+d|0;c=(s>>21)+(c>>>0>d>>>0?b+1|0:b)|0;c=f>>>0>r>>>0?c+1|0:c;j=c;b=c-((r>>>0<4293918720)-1|0)|0;l=b;i=r- -1048576|0;f=(b&2097151)<<11|i>>>21;c=f+h|0;b=(b>>21)+g|0;b=c>>>0>>0?b+1|0:b;v=b;s=c;c=we(c,b,-683901,-1);d=c+n|0;b=Z+e|0;f=d;e=c>>>0>d>>>0?b+1|0:b;b=we(z,I,666643,0);d=b+(q>>>4&2097151)|0;c=Z;c=b>>>0>d>>>0?c+1|0:c;b=we(A,Q,470296,0);d=b+d|0;c=Z+c|0;c=b>>>0>d>>>0?c+1|0:c;b=we(u,y,654183,0);g=b+d|0;d=Z+c|0;d=b>>>0>g>>>0?d+1|0:d;c=we(x,R,-997805,-1);g=c+g|0;b=Z+d|0;b=c>>>0>g>>>0?b+1|0:b;c=we(s,v,136657,0);k=c+g|0;b=Z+b|0;b=c>>>0>k>>>0?b+1|0:b;o=b;c=b-((k>>>0<4293918720)-1|0)|0;F=c;b=f;h=k- -1048576|0;f=(c&2097151)<<11|h>>>21;d=b+f|0;c=(c>>21)+e|0;c=d>>>0>>0?c+1|0:c;e=c-((d>>>0<4293918720)-1|0)|0;z=e;b=e>>21;g=d- -1048576|0;e=(e&2097151)<<11|g>>>21;f=e+C|0;b=b+P|0;G=f;n=e>>>0>f>>>0?b+1|0:b;f=d;d=c;c=i&-2097152;i=(m&2097151)<<11|t>>>21;e=(r-c|0)+i|0;c=(j-((c>>>0>r>>>0)+l|0)|0)+(m>>21)|0;c=e>>>0>>0?c+1|0:c;q=c;c=c-((e>>>0<4293918720)-1|0)|0;B=c;b=c>>21;t=b;l=e- -1048576|0;w=(c&2097151)<<11|l>>>21;b=we(w,b,-683901,-1);c=b+f|0;d=Z+d|0;d=b>>>0>c>>>0?d+1|0:d;b=g&-2097152;N=c-b|0;O=d-((b>>>0>c>>>0)+z|0)|0;b=we(w,t,136657,0);c=o+Z|0;d=b+k|0;c=d>>>0>>0?c+1|0:c;b=h&-2097152;I=d-b|0;z=c-((b>>>0>d>>>0)+F|0)|0;c=we(A,Q,666643,0);d=Z;b=(H[a+7|0]|H[a+8|0]<<8|(H[a+9|0]<<16|H[a+10|0]<<24))>>>7&2097151;c=b+c|0;d=b>>>0>c>>>0?d+1|0:d;b=we(u,y,470296,0);f=b+c|0;c=Z+d|0;c=b>>>0>f>>>0?c+1|0:c;b=we(x,R,654183,0);d=b+f|0;c=Z+c|0;c=b>>>0>d>>>0?c+1|0:c;b=d;d=we(s,v,-997805,-1);f=b+d|0;b=Z+c|0;i=f;f=d>>>0>f>>>0?b+1|0:b;o=we(u,y,666643,0);c=H[a+6|0];b=c>>>24|0;r=H[a+2|0]|H[a+3|0]<<8|(H[a+4|0]<<16|H[a+5|0]<<24);g=c<<8|r>>>24;d=b;b=H[a+7|0];c=b>>>16|0;b=b<<16|g;c=c|d;c=((c&3)<<30|b>>>2)&2097151;d=c+o|0;b=Z;b=c>>>0>d>>>0?b+1|0:b;c=we(x,R,470296,0);g=c+d|0;d=Z+b|0;d=c>>>0>g>>>0?d+1|0:d;c=we(s,v,654183,0);j=c+g|0;b=Z+d|0;b=c>>>0>j>>>0?b+1|0:b;o=b;b=b-((j>>>0<4293918720)-1|0)|0;m=b;d=b>>21;h=j- -1048576|0;b=(b&2097151)<<11|h>>>21;g=b+i|0;c=d+f|0;c=b>>>0>g>>>0?c+1|0:c;b=c-((g>>>0<4293918720)-1|0)|0;k=b;f=g- -1048576|0;i=(b&2097151)<<11|f>>>21;u=i+I|0;b=(b>>21)+z|0;z=u;i=i>>>0>u>>>0?b+1|0:b;b=we(w,t,-997805,-1);d=b+g|0;c=Z+c|0;c=b>>>0>d>>>0?c+1|0:c;b=f&-2097152;A=d-b|0;y=c-((b>>>0>d>>>0)+k|0)|0;c=we(w,t,654183,0);b=o+Z|0;d=c+j|0;b=d>>>0>>0?b+1|0:b;c=h&-2097152;u=d-c|0;m=b-((c>>>0>d>>>0)+m|0)|0;b=we(x,R,666643,0);d=b+(r>>>5&2097151)|0;c=Z;c=b>>>0>d>>>0?c+1|0:c;b=we(s,v,470296,0);d=b+d|0;c=Z+c|0;g=d;d=b>>>0>d>>>0?c+1|0:c;f=we(s,v,666643,0);b=H[a+2|0];c=b<<16&2031616|(H[a|0]|H[a+1|0]<<8);k=f+c|0;b=Z;b=c>>>0>k>>>0?b+1|0:b;o=b;b=b-((k>>>0<4293918720)-1|0)|0;v=b;h=k- -1048576|0;f=(b&2097151)<<11|h>>>21;j=f+g|0;b=(b>>21)+d|0;b=f>>>0>j>>>0?b+1|0:b;d=b;b=b-((j>>>0<4293918720)-1|0)|0;r=b;g=j- -1048576|0;f=(b&2097151)<<11|g>>>21;s=f+u|0;b=(b>>21)+m|0;m=s;f=f>>>0>m>>>0?b+1|0:b;b=we(w,t,470296,0);d=d+Z|0;c=b+j|0;d=c>>>0>>0?d+1|0:d;b=g&-2097152;j=c-b|0;g=d-((b>>>0>c>>>0)+r|0)|0;c=we(w,t,666643,0);d=h&-2097152;s=c+(k-d|0)|0;b=Z+(o-((d>>>0>k>>>0)+v|0)|0)|0;b=c>>>0>s>>>0?b+1|0:b;d=b>>21;b=(b&2097151)<<11|s>>>21;r=b+j|0;c=d+g|0;c=b>>>0>r>>>0?c+1|0:c;b=c>>21;c=(c&2097151)<<11|r>>>21;m=c+m|0;b=b+f|0;b=c>>>0>m>>>0?b+1|0:b;c=b>>21;b=(b&2097151)<<11|m>>>21;f=b+A|0;c=c+y|0;c=b>>>0>f>>>0?c+1|0:c;b=c>>21;c=(c&2097151)<<11|f>>>21;t=c+z|0;d=b+i|0;d=c>>>0>t>>>0?d+1|0:d;c=d>>21;d=(d&2097151)<<11|t>>>21;k=d+N|0;b=c+O|0;b=d>>>0>k>>>0?b+1|0:b;d=b>>21;b=(b&2097151)<<11|k>>>21;j=b+G|0;c=d+n|0;c=b>>>0>j>>>0?c+1|0:c;b=c>>21;c=(c&2097151)<<11|j>>>21;n=c+T|0;b=b+U|0;b=c>>>0>n>>>0?b+1|0:b;c=b>>21;b=(b&2097151)<<11|n>>>21;i=b+S|0;c=c+p|0;c=b>>>0>i>>>0?c+1|0:c;b=c>>21;c=(c&2097151)<<11|i>>>21;o=c+W|0;d=b+X|0;d=c>>>0>o>>>0?d+1|0:d;c=d>>21;d=(d&2097151)<<11|o>>>21;h=d+V|0;b=c+D|0;c=l&-2097152;l=e-c|0;b=d>>>0>h>>>0?b+1|0:b;g=l+((b&2097151)<<11|h>>>21)|0;b=(q-((c>>>0>e>>>0)+B|0)|0)+(b>>21)|0;b=g>>>0>>0?b+1|0:b;p=(b&2097151)<<11|g>>>21;c=b>>21;l=c;b=we(p,c,666643,0);c=s&2097151;s=b+c|0;b=Z;b=c>>>0>s>>>0?b+1|0:b;e=b;E[a|0]=s;E[a+1|0]=(b&255)<<24|s>>>8;b=r&2097151;c=we(p,l,470296,0)+b|0;d=Z;q=(e&2097151)<<11|s>>>21;r=q+c|0;b=(e>>21)+(b>>>0>c>>>0?d+1|0:d)|0;b=q>>>0>r>>>0?b+1|0:b;E[a+4|0]=(b&2047)<<21|r>>>11;c=b;d=r;E[a+3|0]=(b&7)<<29|d>>>3;E[a+2|0]=((e&65535)<<16|s>>>16)&31|d<<5;e=m&2097151;m=we(p,l,654183,0)+e|0;b=Z;e=e>>>0>m>>>0?b+1|0:b;r=(c&2097151)<<11|d>>>21;m=r+m|0;c=(c>>21)+e|0;c=m>>>0>>0?c+1|0:c;b=c;E[a+6|0]=(b&63)<<26|m>>>6;e=m;m=0;E[a+5|0]=m<<13|(d&1572864)>>>19|e<<2;d=f&2097151;f=we(p,l,-997805,-1)+d|0;c=Z;c=d>>>0>f>>>0?c+1|0:c;d=b;b=b>>21;m=(d&2097151)<<11|e>>>21;f=m+f|0;d=b+c|0;d=f>>>0>>0?d+1|0:d;E[a+9|0]=(d&511)<<23|f>>>9;E[a+8|0]=(d&1)<<31|f>>>1;c=0;E[a+7|0]=c<<18|(e&2080768)>>>14|f<<7;c=t&2097151;e=we(p,l,136657,0)+c|0;b=Z;b=c>>>0>e>>>0?b+1|0:b;c=d;d=c>>21;t=(c&2097151)<<11|f>>>21;e=t+e|0;c=b+d|0;c=e>>>0>>0?c+1|0:c;E[a+12|0]=(c&4095)<<20|e>>>12;d=e;E[a+11|0]=(c&15)<<28|d>>>4;e=0;E[a+10|0]=e<<15|(f&1966080)>>>17|d<<4;e=k&2097151;f=we(p,l,-683901,-1)+e|0;b=Z;b=e>>>0>f>>>0?b+1|0:b;e=c;c=c>>21;u=f;f=(e&2097151)<<11|d>>>21;e=u+f|0;c=b+c|0;c=e>>>0>>0?c+1|0:c;E[a+14|0]=(c&127)<<25|e>>>7;f=0;E[a+13|0]=f<<12|(d&1048576)>>>20|e<<1;b=c>>21;c=(c&2097151)<<11|e>>>21;f=c+(j&2097151)|0;d=c>>>0>f>>>0?b+1|0:b;E[a+17|0]=(d&1023)<<22|f>>>10;E[a+16|0]=(d&3)<<30|f>>>2;c=0;E[a+15|0]=c<<17|(e&2064384)>>>15|f<<6;b=d>>21;c=(d&2097151)<<11|f>>>21;d=c+(n&2097151)|0;b=c>>>0>d>>>0?b+1|0:b;E[a+20|0]=(b&8191)<<19|d>>>13;E[a+19|0]=(b&31)<<27|d>>>5;c=i&2097151;i=(b&2097151)<<11|d>>>21;e=c+i|0;c=b>>21;c=e>>>0>>0?c+1|0:c;i=e;E[a+21|0]=e;n=0;E[a+18|0]=n<<14|(f&1835008)>>>18|d<<3;E[a+22|0]=(c&255)<<24|e>>>8;f=(c&2097151)<<11|e>>>21;e=f+(o&2097151)|0;d=c>>21;d=e>>>0>>0?d+1|0:d;E[a+25|0]=(d&2047)<<21|e>>>11;E[a+24|0]=(d&7)<<29|e>>>3;E[a+23|0]=((c&65535)<<16|i>>>16)&31|e<<5;b=d>>21;c=(d&2097151)<<11|e>>>21;d=c+(h&2097151)|0;b=c>>>0>d>>>0?b+1|0:b;E[a+27|0]=(b&63)<<26|d>>>6;f=0;E[a+26|0]=f<<13|(e&1572864)>>>19|d<<2;c=b>>21;e=(b&2097151)<<11|d>>>21;b=e+(g&2097151)|0;c=b>>>0>>0?c+1|0:c;E[a+31|0]=(c&131071)<<15|b>>>17;E[a+30|0]=(c&511)<<23|b>>>9;E[a+29|0]=(c&1)<<31|b>>>1;e=0;E[a+28|0]=e<<18|(d&2080768)>>>14|b<<7}function Zd(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;k=Y-160|0;Y=k;l=-1;if(!(e>>>0<8|g>>>0>i>>>0)){i=G[a+4>>2];j=G[a+8>>2];a=k+80|0;Da(b,c,0,0,i,j,a,80);b=G[k+108>>2];G[k+24>>2]=G[k+104>>2];G[k+28>>2]=b;b=G[k+100>>2];G[k+16>>2]=G[k+96>>2];G[k+20>>2]=b;b=G[k+92>>2];G[k+8>>2]=G[k+88>>2];G[k+12>>2]=b;b=G[k+124>>2];G[k+40>>2]=G[k+120>>2];G[k+44>>2]=b;b=G[k+132>>2];G[k+48>>2]=G[k+128>>2];G[k+52>>2]=b;b=G[k+140>>2];G[k+56>>2]=G[k+136>>2];G[k+60>>2]=b;b=G[k+156>>2];G[k+72>>2]=G[k+152>>2];G[k+76>>2]=b;b=G[k+84>>2];G[k>>2]=G[k+80>>2];G[k+4>>2]=b;b=G[k+116>>2];G[k+32>>2]=G[k+112>>2];G[k+36>>2]=b;b=G[k+148>>2];G[k+64>>2]=G[k+144>>2];G[k+68>>2]=b;la(a,80);b=e-8|0;na(k+32|0,32,d,b,a);if(Na(b+d|0,a,8)){b=Y-272|0;Y=b;Mb(k,b+32|0);a=k- -64|0;c=H[a+4|0]|H[a+5|0]<<8|(H[a+6|0]<<16|H[a+7|0]<<24);G[b+16>>2]=H[a|0]|H[a+1|0]<<8|(H[a+2|0]<<16|H[a+3|0]<<24);G[b+20>>2]=c;c=H[a+12|0]|H[a+13|0]<<8|(H[a+14|0]<<16|H[a+15|0]<<24);G[b+24>>2]=H[a+8|0]|H[a+9|0]<<8|(H[a+10|0]<<16|H[a+11|0]<<24);G[b+28>>2]=c;if(g){c=0;while(1){d=c+f|0;a=H[d+4|0]|H[d+5|0]<<8|(H[d+6|0]<<16|H[d+7|0]<<24);G[b>>2]=H[d|0]|H[d+1|0]<<8|(H[d+2|0]<<16|H[d+3|0]<<24);G[b+4>>2]=a;a=H[d+12|0]|H[d+13|0]<<8|(H[d+14|0]<<16|H[d+15|0]<<24);G[b+8>>2]=H[d+8|0]|H[d+9|0]<<8|(H[d+10|0]<<16|H[d+11|0]<<24);G[b+12>>2]=a;a=Y-16|0;Y=a;n=H[d+15|0];o=H[d+14|0];p=H[d+13|0];q=H[d+12|0];s=H[d+11|0];r=H[d+10|0];t=H[d+9|0];u=H[d+8|0];m=H[d+6|0];v=H[d+5|0];w=H[d+4|0];x=H[d+3|0];y=H[d+2|0];z=H[d+1|0];A=H[d|0];e=G[b+256>>2];i=G[b+268>>2];l=G[b+264>>2];j=G[b+240>>2];B=H[d+7|0];d=G[b+260>>2];E[a+12|0]=j^H[((B^d)&255)+3392|0];E[a+8|0]=H[((r^l>>>8)&255)+3392|0]^j>>>8;E[a+4|0]=H[((p^i>>>16)&255)+3392|0]^j>>>16;E[a|0]=H[(A^e>>>24)+3392|0]^j>>>24;j=G[b+244>>2];E[a+13|0]=j^H[((l^s)&255)+3392|0];E[a+9|0]=H[((o^i>>>8)&255)+3392|0]^j>>>8;E[a+5|0]=H[((z^e>>>16)&255)+3392|0]^j>>>16;E[a+1|0]=H[(w^d>>>24)+3392|0]^j>>>24;j=G[b+248>>2];E[a+14|0]=j^H[((i^n)&255)+3392|0];E[a+10|0]=H[((y^e>>>8)&255)+3392|0]^j>>>8;E[a+6|0]=H[((v^d>>>16)&255)+3392|0]^j>>>16;E[a+2|0]=H[(u^l>>>24)+3392|0]^j>>>24;j=H[((e^x)&255)+3392|0];e=G[b+252>>2];E[a+15|0]=j^e;E[a+11|0]=H[((m^d>>>8)&255)+3392|0]^e>>>8;E[a+7|0]=H[((t^l>>>16)&255)+3392|0]^e>>>16;E[a+3|0]=H[(q^i>>>24)+3392|0]^e>>>24;Aa(a);e=H[a+3|0];i=H[a+6|0];l=H[a+9|0];j=H[a+12|0];n=H[a+2|0];o=H[a+5|0];p=H[a+8|0];q=H[a+15|0];s=H[a+1|0];r=H[a+4|0];t=H[a+11|0];u=H[a+14|0];m=H[a|0];v=H[a+7|0];w=H[a+10|0];d=G[b+224>>2];E[a+12|0]=d^H[H[a+13|0]+3392|0];E[a+8|0]=H[w+3392|0]^d>>>8;E[a+4|0]=H[v+3392|0]^d>>>16;E[a|0]=H[m+3392|0]^d>>>24;d=G[b+228>>2];E[a+13|0]=d^H[u+3392|0];E[a+9|0]=H[t+3392|0]^d>>>8;E[a+5|0]=H[r+3392|0]^d>>>16;E[a+1|0]=H[s+3392|0]^d>>>24;d=G[b+232>>2];E[a+14|0]=d^H[q+3392|0];E[a+10|0]=H[p+3392|0]^d>>>8;E[a+6|0]=H[o+3392|0]^d>>>16;E[a+2|0]=H[n+3392|0]^d>>>24;d=G[b+236>>2];E[a+15|0]=d^H[j+3392|0];E[a+11|0]=H[l+3392|0]^d>>>8;E[a+7|0]=H[i+3392|0]^d>>>16;E[a+3|0]=H[e+3392|0]^d>>>24;Aa(a);e=H[a+2|0];i=H[a+1|0];l=H[a|0];j=H[a+14|0];n=H[a+12|0];o=H[a+15|0];p=H[a+8|0];q=H[a+10|0];s=H[a+9|0];r=H[a+11|0];t=H[a+4|0];u=H[a+5|0];m=H[a+6|0];v=H[a+7|0];w=H[a+3|0];d=G[b+208>>2];E[a+12|0]=d^H[H[a+13|0]+3392|0];E[a+8|0]=H[q+3392|0]^d>>>8;E[a+4|0]=H[v+3392|0]^d>>>16;E[a|0]=H[l+3392|0]^d>>>24;d=G[b+212>>2];E[a+13|0]=d^H[j+3392|0];E[a+9|0]=H[r+3392|0]^d>>>8;E[a+5|0]=H[t+3392|0]^d>>>16;E[a+1|0]=H[i+3392|0]^d>>>24;d=G[b+216>>2];E[a+14|0]=d^H[o+3392|0];E[a+10|0]=H[p+3392|0]^d>>>8;E[a+6|0]=H[u+3392|0]^d>>>16;E[a+2|0]=H[e+3392|0]^d>>>24;d=G[b+220>>2];E[a+15|0]=d^H[n+3392|0];E[a+11|0]=H[s+3392|0]^d>>>8;E[a+7|0]=H[m+3392|0]^d>>>16;E[a+3|0]=H[w+3392|0]^d>>>24;Aa(a);e=H[a+3|0];i=H[a+6|0];l=H[a+9|0];j=H[a+12|0];n=H[a+2|0];o=H[a+5|0];p=H[a+8|0];q=H[a+15|0];s=H[a+1|0];r=H[a+4|0];t=H[a+11|0];u=H[a+14|0];m=H[a|0];v=H[a+7|0];w=H[a+10|0];d=G[b+192>>2];E[a+12|0]=d^H[H[a+13|0]+3392|0];E[a+8|0]=H[w+3392|0]^d>>>8;E[a+4|0]=H[v+3392|0]^d>>>16;E[a|0]=H[m+3392|0]^d>>>24;d=G[b+196>>2];E[a+13|0]=d^H[u+3392|0];E[a+9|0]=H[t+3392|0]^d>>>8;E[a+5|0]=H[r+3392|0]^d>>>16;E[a+1|0]=H[s+3392|0]^d>>>24;d=G[b+200>>2];E[a+14|0]=d^H[q+3392|0];E[a+10|0]=H[p+3392|0]^d>>>8;E[a+6|0]=H[o+3392|0]^d>>>16;E[a+2|0]=H[n+3392|0]^d>>>24;d=G[b+204>>2];E[a+15|0]=d^H[j+3392|0];E[a+11|0]=H[l+3392|0]^d>>>8;E[a+7|0]=H[i+3392|0]^d>>>16;E[a+3|0]=H[e+3392|0]^d>>>24;Aa(a);e=H[a+2|0];i=H[a+1|0];l=H[a|0];j=H[a+14|0];n=H[a+12|0];o=H[a+15|0];p=H[a+8|0];q=H[a+10|0];s=H[a+9|0];r=H[a+11|0];t=H[a+4|0];u=H[a+5|0];m=H[a+6|0];v=H[a+7|0];w=H[a+3|0];d=G[b+176>>2];E[a+12|0]=d^H[H[a+13|0]+3392|0];E[a+8|0]=H[q+3392|0]^d>>>8;E[a+4|0]=H[v+3392|0]^d>>>16;E[a|0]=H[l+3392|0]^d>>>24;d=G[b+180>>2];E[a+13|0]=d^H[j+3392|0];E[a+9|0]=H[r+3392|0]^d>>>8;E[a+5|0]=H[t+3392|0]^d>>>16;E[a+1|0]=H[i+3392|0]^d>>>24;d=G[b+184>>2];E[a+14|0]=d^H[o+3392|0];E[a+10|0]=H[p+3392|0]^d>>>8;E[a+6|0]=H[u+3392|0]^d>>>16;E[a+2|0]=H[e+3392|0]^d>>>24;d=G[b+188>>2];E[a+15|0]=d^H[n+3392|0];E[a+11|0]=H[s+3392|0]^d>>>8;E[a+7|0]=H[m+3392|0]^d>>>16;E[a+3|0]=H[w+3392|0]^d>>>24;Aa(a);e=H[a+3|0];i=H[a+6|0];l=H[a+9|0];j=H[a+12|0];n=H[a+2|0];o=H[a+5|0];p=H[a+8|0];q=H[a+15|0];s=H[a+1|0];r=H[a+4|0];t=H[a+11|0];u=H[a+14|0];m=H[a|0];v=H[a+7|0];w=H[a+10|0];d=G[b+160>>2];E[a+12|0]=d^H[H[a+13|0]+3392|0];E[a+8|0]=H[w+3392|0]^d>>>8;E[a+4|0]=H[v+3392|0]^d>>>16;E[a|0]=H[m+3392|0]^d>>>24;d=G[b+164>>2];E[a+13|0]=d^H[u+3392|0];E[a+9|0]=H[t+3392|0]^d>>>8;E[a+5|0]=H[r+3392|0]^d>>>16;E[a+1|0]=H[s+3392|0]^d>>>24;d=G[b+168>>2];E[a+14|0]=d^H[q+3392|0];E[a+10|0]=H[p+3392|0]^d>>>8;E[a+6|0]=H[o+3392|0]^d>>>16;E[a+2|0]=H[n+3392|0]^d>>>24;d=G[b+172>>2];E[a+15|0]=d^H[j+3392|0];E[a+11|0]=H[l+3392|0]^d>>>8;E[a+7|0]=H[i+3392|0]^d>>>16;E[a+3|0]=H[e+3392|0]^d>>>24;Aa(a);e=H[a+3|0];i=H[a+6|0];l=H[a+9|0];j=H[a+12|0];n=H[a+2|0];o=H[a+5|0];p=H[a+8|0];q=H[a+15|0];s=H[a+1|0];r=H[a+4|0];t=H[a+11|0];u=H[a+14|0];m=H[a|0];v=H[a+7|0];w=H[a+10|0];d=G[b+144>>2];E[a+12|0]=d^H[H[a+13|0]+3392|0];E[a+8|0]=H[w+3392|0]^d>>>8;E[a+4|0]=H[v+3392|0]^d>>>16;E[a|0]=H[m+3392|0]^d>>>24;d=G[b+148>>2];E[a+13|0]=d^H[u+3392|0];E[a+9|0]=H[t+3392|0]^d>>>8;E[a+5|0]=H[r+3392|0]^d>>>16;E[a+1|0]=H[s+3392|0]^d>>>24;d=G[b+152>>2];E[a+14|0]=d^H[q+3392|0];E[a+10|0]=H[p+3392|0]^d>>>8;E[a+6|0]=H[o+3392|0]^d>>>16;E[a+2|0]=H[n+3392|0]^d>>>24;d=G[b+156>>2];E[a+15|0]=d^H[j+3392|0];E[a+11|0]=H[l+3392|0]^d>>>8;E[a+7|0]=H[i+3392|0]^d>>>16;E[a+3|0]=H[e+3392|0]^d>>>24;Aa(a);e=H[a+3|0];i=H[a+6|0];l=H[a+9|0];j=H[a+12|0];n=H[a+2|0];o=H[a+5|0];p=H[a+8|0];q=H[a+15|0];s=H[a+1|0];r=H[a+4|0];t=H[a+11|0];u=H[a+14|0];m=H[a|0];v=H[a+7|0];w=H[a+10|0];d=G[b+128>>2];E[a+12|0]=d^H[H[a+13|0]+3392|0];E[a+8|0]=H[w+3392|0]^d>>>8;E[a+4|0]=H[v+3392|0]^d>>>16;E[a|0]=H[m+3392|0]^d>>>24;d=G[b+132>>2];E[a+13|0]=d^H[u+3392|0];E[a+9|0]=H[t+3392|0]^d>>>8;E[a+5|0]=H[r+3392|0]^d>>>16;E[a+1|0]=H[s+3392|0]^d>>>24;d=G[b+136>>2];E[a+14|0]=d^H[q+3392|0];E[a+10|0]=H[p+3392|0]^d>>>8;E[a+6|0]=H[o+3392|0]^d>>>16;E[a+2|0]=H[n+3392|0]^d>>>24;d=G[b+140>>2];E[a+15|0]=d^H[j+3392|0];E[a+11|0]=H[l+3392|0]^d>>>8;E[a+7|0]=H[i+3392|0]^d>>>16;E[a+3|0]=H[e+3392|0]^d>>>24;Aa(a);e=H[a+3|0];i=H[a+6|0];l=H[a+9|0];j=H[a+12|0];n=H[a+2|0];o=H[a+5|0];p=H[a+8|0];q=H[a+15|0];s=H[a+1|0];r=H[a+4|0];t=H[a+11|0];u=H[a+14|0];m=H[a|0];v=H[a+7|0];w=H[a+10|0];d=G[b+112>>2];E[a+12|0]=d^H[H[a+13|0]+3392|0];E[a+8|0]=H[w+3392|0]^d>>>8;E[a+4|0]=H[v+3392|0]^d>>>16;E[a|0]=H[m+3392|0]^d>>>24;d=G[b+116>>2];E[a+13|0]=d^H[u+3392|0];E[a+9|0]=H[t+3392|0]^d>>>8;E[a+5|0]=H[r+3392|0]^d>>>16;E[a+1|0]=H[s+3392|0]^d>>>24;d=G[b+120>>2];E[a+14|0]=d^H[q+3392|0];E[a+10|0]=H[p+3392|0]^d>>>8;E[a+6|0]=H[o+3392|0]^d>>>16;E[a+2|0]=H[n+3392|0]^d>>>24;d=G[b+124>>2];E[a+15|0]=d^H[j+3392|0];E[a+11|0]=H[l+3392|0]^d>>>8;E[a+7|0]=H[i+3392|0]^d>>>16;E[a+3|0]=H[e+3392|0]^d>>>24;Aa(a);e=H[a+3|0];i=H[a+6|0];l=H[a+9|0];j=H[a+12|0];n=H[a+2|0];o=H[a+5|0];p=H[a+8|0];q=H[a+15|0];s=H[a+1|0];r=H[a+4|0];t=H[a+11|0];u=H[a+14|0];m=H[a|0];v=H[a+7|0];w=H[a+10|0];d=G[b+96>>2];E[a+12|0]=d^H[H[a+13|0]+3392|0];E[a+8|0]=H[w+3392|0]^d>>>8;E[a+4|0]=H[v+3392|0]^d>>>16;E[a|0]=H[m+3392|0]^d>>>24;d=G[b+100>>2];E[a+13|0]=d^H[u+3392|0];E[a+9|0]=H[t+3392|0]^d>>>8;E[a+5|0]=H[r+3392|0]^d>>>16;E[a+1|0]=H[s+3392|0]^d>>>24;d=G[b+104>>2];E[a+14|0]=d^H[q+3392|0];E[a+10|0]=H[p+3392|0]^d>>>8;E[a+6|0]=H[o+3392|0]^d>>>16;E[a+2|0]=H[n+3392|0]^d>>>24;d=G[b+108>>2];E[a+15|0]=d^H[j+3392|0];E[a+11|0]=H[l+3392|0]^d>>>8;E[a+7|0]=H[i+3392|0]^d>>>16;E[a+3|0]=H[e+3392|0]^d>>>24;Aa(a);e=H[a+7|0];E[a+7|0]=H[H[a+6|0]+3392|0];i=H[H[a+2|0]+3392|0];E[a+2|0]=i;l=H[H[a+1|0]+3392|0];E[a+1|0]=l;j=H[a+9|0];n=H[a+12|0];o=H[a+5|0];p=H[a+8|0];q=H[a+15|0];s=H[a+4|0];r=H[a+11|0];t=H[a+14|0];u=H[a|0];m=H[a+10|0];d=H[a+13|0];E[a+3|0]=H[H[a+3|0]+3392|0];v=H[d+3392|0];d=G[b+80>>2];E[a+12|0]=v^d;E[a+8|0]=H[m+3392|0]^d>>>8;E[a+4|0]=H[e+3392|0]^d>>>16;E[a|0]=H[u+3392|0]^d>>>24;d=G[b+84>>2];E[a+13|0]=d^H[t+3392|0];E[a+1|0]=l^d>>>24;E[a+9|0]=H[r+3392|0]^d>>>8;E[a+5|0]=H[s+3392|0]^d>>>16;d=G[b+88>>2];E[a+14|0]=d^H[q+3392|0];E[a+2|0]=i^d>>>24;E[a+10|0]=H[p+3392|0]^d>>>8;E[a+6|0]=H[o+3392|0]^d>>>16;d=G[b+92>>2];E[a+3|0]=H[a+3|0]^d>>>24;e=H[a+7|0];E[a+15|0]=d^H[n+3392|0];E[a+11|0]=H[j+3392|0]^d>>>8;E[a+7|0]=e^d>>>16;Aa(a);e=H[a+15|0];i=H[a+12|0];E[a+15|0]=i;l=H[H[a+2|0]+3392|0];E[a+2|0]=l;j=H[H[a+1|0]+3392|0];E[a+1|0]=j;n=H[H[a|0]+3392|0];E[a|0]=n;o=H[a+9|0];p=H[a+8|0];q=H[a+4|0];s=H[a+11|0];r=H[a+14|0];t=H[a+7|0];u=H[a+10|0];d=H[a+13|0];m=H[a+5|0];v=H[a+3|0];E[a+7|0]=H[H[a+6|0]+3392|0];E[a+6|0]=H[m+3392|0];E[a+3|0]=H[v+3392|0];m=H[d+3392|0];d=G[b+64>>2];E[a+12|0]=m^d;E[a|0]=n^d>>>24;E[a+8|0]=H[u+3392|0]^d>>>8;E[a+4|0]=H[t+3392|0]^d>>>16;d=G[b+68>>2];E[a+13|0]=d^H[r+3392|0];E[a+1|0]=j^d>>>24;E[a+9|0]=H[s+3392|0]^d>>>8;E[a+5|0]=H[q+3392|0]^d>>>16;d=G[b+72>>2];E[a+2|0]=l^d>>>24;l=H[a+6|0];E[a+14|0]=d^H[e+3392|0];E[a+10|0]=H[p+3392|0]^d>>>8;E[a+6|0]=l^d>>>16;d=G[b+76>>2];E[a+3|0]=H[a+3|0]^d>>>24;e=H[a+7|0];E[a+15|0]=d^H[i+3392|0];E[a+11|0]=H[o+3392|0]^d>>>8;E[a+7|0]=e^d>>>16;Aa(a);e=H[a+15|0];i=H[a+12|0];E[a+15|0]=i;l=H[H[a+2|0]+3392|0];E[a+2|0]=l;j=H[H[a+1|0]+3392|0];E[a+1|0]=j;n=H[H[a|0]+3392|0];E[a|0]=n;o=H[a+9|0];p=H[a+8|0];q=H[a+4|0];s=H[a+11|0];r=H[a+14|0];t=H[a+7|0];u=H[a+10|0];d=H[a+13|0];m=H[a+5|0];v=H[a+3|0];E[a+7|0]=H[H[a+6|0]+3392|0];E[a+6|0]=H[m+3392|0];E[a+3|0]=H[v+3392|0];m=H[d+3392|0];d=G[b+48>>2];E[a+12|0]=m^d;E[a|0]=n^d>>>24;E[a+8|0]=H[u+3392|0]^d>>>8;E[a+4|0]=H[t+3392|0]^d>>>16;d=G[b+52>>2];E[a+13|0]=d^H[r+3392|0];E[a+1|0]=j^d>>>24;E[a+9|0]=H[s+3392|0]^d>>>8;E[a+5|0]=H[q+3392|0]^d>>>16;d=G[b+56>>2];E[a+2|0]=l^d>>>24;l=H[a+6|0];E[a+14|0]=d^H[e+3392|0];E[a+10|0]=H[p+3392|0]^d>>>8;E[a+6|0]=l^d>>>16;d=G[b+60>>2];E[a+3|0]=H[a+3|0]^d>>>24;e=H[a+7|0];E[a+15|0]=d^H[i+3392|0];E[a+11|0]=H[o+3392|0]^d>>>8;E[a+7|0]=e^d>>>16;Aa(a);n=H[a+15|0];j=H[a+12|0];E[a+15|0]=j;o=H[H[a+1|0]+3392|0];E[a+1|0]=o;p=H[H[a+2|0]+3392|0];E[a+2|0]=p;q=H[H[a+3|0]+3392|0];E[a+3|0]=q;s=H[a+7|0];r=H[H[a+6|0]+3392|0];E[a+7|0]=r;e=G[b+32>>2];i=G[b+36>>2];l=G[b+40>>2];t=H[a|0];u=H[a+10|0];m=H[a+4|0];v=H[a+11|0];w=H[a+5|0];x=H[a+8|0];y=H[a+9|0];z=H[a+13|0];A=H[a+14|0];d=c+h|0;B=H[j+3392|0];j=G[b+44>>2];E[d+15|0]=B^j;E[d+11|0]=l^H[n+3392|0];E[d+7|0]=i^H[A+3392|0];E[d+3|0]=e^H[z+3392|0];E[d+14|0]=H[y+3392|0]^j>>>8;E[d+13|0]=r^j>>>16;E[d+12|0]=q^j>>>24;E[d+10|0]=H[x+3392|0]^l>>>8;E[d+9|0]=H[w+3392|0]^l>>>16;E[d+8|0]=p^l>>>24;E[d+6|0]=H[v+3392|0]^i>>>8;E[d+5|0]=H[m+3392|0]^i>>>16;E[d+4|0]=o^i>>>24;E[d+2|0]=H[u+3392|0]^e>>>8;E[d+1|0]=H[s+3392|0]^e>>>16;E[d|0]=H[t+3392|0]^e>>>24;Y=a+16|0;E[d|0]=H[d|0]^H[b+16|0];E[d+1|0]=H[d+1|0]^H[b+17|0];E[d+2|0]=H[d+2|0]^H[b+18|0];E[d+3|0]=H[d+3|0]^H[b+19|0];E[d+4|0]=H[d+4|0]^H[b+20|0];E[d+5|0]=H[d+5|0]^H[b+21|0];E[d+6|0]=H[d+6|0]^H[b+22|0];E[d+7|0]=H[d+7|0]^H[b+23|0];E[d+8|0]=H[d+8|0]^H[b+24|0];E[d+9|0]=H[d+9|0]^H[b+25|0];E[d+10|0]=H[d+10|0]^H[b+26|0];E[d+11|0]=H[d+11|0]^H[b+27|0];E[d+12|0]=H[d+12|0]^H[b+28|0];E[d+13|0]=H[d+13|0]^H[b+29|0];E[d+14|0]=H[d+14|0]^H[b+30|0];E[d+15|0]=H[d+15|0]^H[b+31|0];a=G[b+12>>2];G[b+24>>2]=G[b+8>>2];G[b+28>>2]=a;a=G[b+4>>2];G[b+16>>2]=G[b>>2];G[b+20>>2]=a;c=c+16|0;if(g>>>0>c>>>0){continue}break}}la(b+32|0,240);la(b+16|0,16);la(b,16);Y=b+272|0;a=H[(g+h|0)-1|0];l=a>>>0>g>>>0?-1:g-a|0}la(k,80)}Y=k+160|0;return l|0}function Nb(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;d=Y-16|0;Y=d;h=H[a+14|0];i=H[a+6|0];k=H[a+5|0];s=H[a+9|0];q=H[a+13|0];m=H[a+1|0];n=H[a+10|0];j=H[a+2|0];o=H[a+3|0];l=H[a+7|0];p=H[a+15|0];r=H[a+11|0];t=H[a|0];f=G[c>>2];u=H[a+4|0];e=G[c+4>>2];v=H[a+8|0];g=G[c+8>>2];w=H[a+12|0];a=G[c+12>>2];E[d+3|0]=H[(w^a>>>24)+3072|0];E[d+2|0]=H[(v^g>>>24)+3072|0];E[d+1|0]=H[(u^e>>>24)+3072|0];E[d|0]=H[(t^f>>>24)+3072|0];E[d+15|0]=H[((g^r)&255)+3072|0];E[d+12|0]=H[((a^p)&255)+3072|0];E[d+14|0]=H[((e^l)&255)+3072|0];E[d+13|0]=H[((f^o)&255)+3072|0];E[d+10|0]=H[(j^f>>>8&255)+3072|0];E[d+8|0]=H[(n^g>>>8&255)+3072|0];E[d+7|0]=H[(m^f>>>16&255)+3072|0];E[d+6|0]=H[(q^a>>>16&255)+3072|0];E[d+5|0]=H[(s^g>>>16&255)+3072|0];E[d+4|0]=H[(k^e>>>16&255)+3072|0];E[d+11|0]=H[(i^e>>>8&255)+3072|0];E[d+9|0]=H[(h^a>>>8&255)+3072|0];Ba(d);a=G[c+16>>2];f=G[c+20>>2];e=G[c+24>>2];h=H[d+11|0];i=H[d+9|0];k=H[d+5|0];s=H[d+6|0];q=H[d+7|0];m=H[d+4|0];n=H[d+10|0];j=H[d+8|0];o=H[d+12|0];l=H[d+13|0];p=H[d+15|0];r=H[d+14|0];t=H[d|0];u=H[d+1|0];v=H[d+2|0];g=G[c+28>>2];E[d+3|0]=H[(H[d+3|0]^g>>>24)+3072|0];E[d+2|0]=H[(v^e>>>24)+3072|0];E[d+1|0]=H[(u^f>>>24)+3072|0];E[d|0]=H[(t^a>>>24)+3072|0];E[d+15|0]=H[((e^r)&255)+3072|0];E[d+12|0]=H[((g^p)&255)+3072|0];E[d+14|0]=H[((f^l)&255)+3072|0];E[d+13|0]=H[((a^o)&255)+3072|0];E[d+10|0]=H[(j^a>>>8&255)+3072|0];E[d+8|0]=H[(n^e>>>8&255)+3072|0];E[d+7|0]=H[(m^a>>>16&255)+3072|0];E[d+6|0]=H[(q^g>>>16&255)+3072|0];E[d+5|0]=H[(s^e>>>16&255)+3072|0];E[d+4|0]=H[(k^f>>>16&255)+3072|0];E[d+11|0]=H[(i^f>>>8&255)+3072|0];E[d+9|0]=H[(h^g>>>8&255)+3072|0];Ba(d);a=G[c+32>>2];f=G[c+36>>2];e=G[c+40>>2];h=H[d+11|0];i=H[d+9|0];k=H[d+5|0];s=H[d+6|0];q=H[d+7|0];m=H[d+4|0];n=H[d+10|0];j=H[d+8|0];o=H[d+12|0];l=H[d+13|0];p=H[d+15|0];r=H[d+14|0];t=H[d|0];u=H[d+1|0];v=H[d+2|0];g=G[c+44>>2];E[d+3|0]=H[(H[d+3|0]^g>>>24)+3072|0];E[d+2|0]=H[(v^e>>>24)+3072|0];E[d+1|0]=H[(u^f>>>24)+3072|0];E[d|0]=H[(t^a>>>24)+3072|0];E[d+15|0]=H[((e^r)&255)+3072|0];E[d+12|0]=H[((g^p)&255)+3072|0];E[d+14|0]=H[((f^l)&255)+3072|0];E[d+13|0]=H[((a^o)&255)+3072|0];E[d+10|0]=H[(j^a>>>8&255)+3072|0];E[d+8|0]=H[(n^e>>>8&255)+3072|0];E[d+7|0]=H[(m^a>>>16&255)+3072|0];E[d+6|0]=H[(q^g>>>16&255)+3072|0];E[d+5|0]=H[(s^e>>>16&255)+3072|0];E[d+4|0]=H[(k^f>>>16&255)+3072|0];E[d+11|0]=H[(i^f>>>8&255)+3072|0];E[d+9|0]=H[(h^g>>>8&255)+3072|0];Ba(d);a=G[c+48>>2];f=G[c+52>>2];e=G[c+56>>2];h=H[d+11|0];i=H[d+9|0];k=H[d+5|0];s=H[d+6|0];q=H[d+7|0];m=H[d+4|0];n=H[d+10|0];j=H[d+8|0];o=H[d+12|0];l=H[d+13|0];p=H[d+15|0];r=H[d+14|0];t=H[d|0];u=H[d+1|0];v=H[d+2|0];g=G[c+60>>2];E[d+3|0]=H[(H[d+3|0]^g>>>24)+3072|0];E[d+2|0]=H[(v^e>>>24)+3072|0];E[d+1|0]=H[(u^f>>>24)+3072|0];E[d|0]=H[(t^a>>>24)+3072|0];E[d+15|0]=H[((e^r)&255)+3072|0];E[d+12|0]=H[((g^p)&255)+3072|0];E[d+14|0]=H[((f^l)&255)+3072|0];E[d+13|0]=H[((a^o)&255)+3072|0];E[d+10|0]=H[(j^a>>>8&255)+3072|0];E[d+8|0]=H[(n^e>>>8&255)+3072|0];E[d+7|0]=H[(m^a>>>16&255)+3072|0];E[d+6|0]=H[(q^g>>>16&255)+3072|0];E[d+5|0]=H[(s^e>>>16&255)+3072|0];E[d+4|0]=H[(k^f>>>16&255)+3072|0];E[d+11|0]=H[(i^f>>>8&255)+3072|0];E[d+9|0]=H[(h^g>>>8&255)+3072|0];Ba(d);a=G[c+64>>2];f=G[c+68>>2];e=G[c+72>>2];h=H[d+11|0];i=H[d+9|0];k=H[d+5|0];s=H[d+6|0];q=H[d+7|0];m=H[d+4|0];n=H[d+10|0];j=H[d+8|0];o=H[d+12|0];l=H[d+13|0];p=H[d+15|0];r=H[d+14|0];t=H[d|0];u=H[d+1|0];v=H[d+2|0];g=G[c+76>>2];E[d+3|0]=H[(H[d+3|0]^g>>>24)+3072|0];E[d+2|0]=H[(v^e>>>24)+3072|0];E[d+1|0]=H[(u^f>>>24)+3072|0];E[d|0]=H[(t^a>>>24)+3072|0];E[d+15|0]=H[((e^r)&255)+3072|0];E[d+12|0]=H[((g^p)&255)+3072|0];E[d+14|0]=H[((f^l)&255)+3072|0];E[d+13|0]=H[((a^o)&255)+3072|0];E[d+10|0]=H[(j^a>>>8&255)+3072|0];E[d+8|0]=H[(n^e>>>8&255)+3072|0];E[d+7|0]=H[(m^a>>>16&255)+3072|0];E[d+6|0]=H[(q^g>>>16&255)+3072|0];E[d+5|0]=H[(s^e>>>16&255)+3072|0];E[d+4|0]=H[(k^f>>>16&255)+3072|0];E[d+11|0]=H[(i^f>>>8&255)+3072|0];E[d+9|0]=H[(h^g>>>8&255)+3072|0];Ba(d);a=G[c+80>>2];f=G[c+84>>2];e=G[c+88>>2];h=H[d+11|0];i=H[d+9|0];k=H[d+5|0];s=H[d+6|0];q=H[d+7|0];m=H[d+4|0];n=H[d+10|0];j=H[d+8|0];o=H[d+12|0];l=H[d+13|0];p=H[d+15|0];r=H[d+14|0];t=H[d|0];u=H[d+1|0];v=H[d+2|0];g=G[c+92>>2];E[d+3|0]=H[(H[d+3|0]^g>>>24)+3072|0];E[d+2|0]=H[(v^e>>>24)+3072|0];E[d+1|0]=H[(u^f>>>24)+3072|0];E[d|0]=H[(t^a>>>24)+3072|0];E[d+15|0]=H[((e^r)&255)+3072|0];E[d+12|0]=H[((g^p)&255)+3072|0];E[d+14|0]=H[((f^l)&255)+3072|0];E[d+13|0]=H[((a^o)&255)+3072|0];E[d+10|0]=H[(j^a>>>8&255)+3072|0];E[d+8|0]=H[(n^e>>>8&255)+3072|0];E[d+7|0]=H[(m^a>>>16&255)+3072|0];E[d+6|0]=H[(q^g>>>16&255)+3072|0];E[d+5|0]=H[(s^e>>>16&255)+3072|0];E[d+4|0]=H[(k^f>>>16&255)+3072|0];E[d+11|0]=H[(i^f>>>8&255)+3072|0];E[d+9|0]=H[(h^g>>>8&255)+3072|0];Ba(d);a=G[c+96>>2];f=G[c+100>>2];e=G[c+104>>2];h=H[d+11|0];i=H[d+9|0];k=H[d+5|0];s=H[d+6|0];q=H[d+7|0];m=H[d+4|0];n=H[d+10|0];j=H[d+8|0];o=H[d+12|0];l=H[d+13|0];p=H[d+15|0];r=H[d+14|0];t=H[d|0];u=H[d+1|0];v=H[d+2|0];g=G[c+108>>2];E[d+3|0]=H[(H[d+3|0]^g>>>24)+3072|0];E[d+2|0]=H[(v^e>>>24)+3072|0];E[d+1|0]=H[(u^f>>>24)+3072|0];E[d|0]=H[(t^a>>>24)+3072|0];E[d+15|0]=H[((e^r)&255)+3072|0];E[d+12|0]=H[((g^p)&255)+3072|0];E[d+14|0]=H[((f^l)&255)+3072|0];E[d+13|0]=H[((a^o)&255)+3072|0];E[d+10|0]=H[(j^a>>>8&255)+3072|0];E[d+8|0]=H[(n^e>>>8&255)+3072|0];E[d+7|0]=H[(m^a>>>16&255)+3072|0];E[d+6|0]=H[(q^g>>>16&255)+3072|0];E[d+5|0]=H[(s^e>>>16&255)+3072|0];E[d+4|0]=H[(k^f>>>16&255)+3072|0];E[d+11|0]=H[(i^f>>>8&255)+3072|0];E[d+9|0]=H[(h^g>>>8&255)+3072|0];Ba(d);a=G[c+112>>2];f=G[c+116>>2];e=G[c+120>>2];h=H[d+11|0];i=H[d+9|0];k=H[d+5|0];s=H[d+6|0];q=H[d+7|0];m=H[d+4|0];n=H[d+10|0];j=H[d+8|0];o=H[d+12|0];l=H[d+13|0];p=H[d+15|0];r=H[d+14|0];t=H[d|0];u=H[d+1|0];v=H[d+2|0];g=G[c+124>>2];E[d+3|0]=H[(H[d+3|0]^g>>>24)+3072|0];E[d+2|0]=H[(v^e>>>24)+3072|0];E[d+1|0]=H[(u^f>>>24)+3072|0];E[d|0]=H[(t^a>>>24)+3072|0];E[d+15|0]=H[((e^r)&255)+3072|0];E[d+12|0]=H[((g^p)&255)+3072|0];E[d+14|0]=H[((f^l)&255)+3072|0];E[d+13|0]=H[((a^o)&255)+3072|0];E[d+10|0]=H[(j^a>>>8&255)+3072|0];E[d+8|0]=H[(n^e>>>8&255)+3072|0];E[d+7|0]=H[(m^a>>>16&255)+3072|0];E[d+6|0]=H[(q^g>>>16&255)+3072|0];E[d+5|0]=H[(s^e>>>16&255)+3072|0];E[d+4|0]=H[(k^f>>>16&255)+3072|0];E[d+11|0]=H[(i^f>>>8&255)+3072|0];E[d+9|0]=H[(h^g>>>8&255)+3072|0];Ba(d);a=G[c+128>>2];f=G[c+132>>2];e=G[c+136>>2];h=H[d+11|0];i=H[d+9|0];k=H[d+5|0];s=H[d+6|0];q=H[d+7|0];m=H[d+4|0];n=H[d+10|0];j=H[d+8|0];o=H[d+12|0];l=H[d+13|0];p=H[d+15|0];r=H[d+14|0];t=H[d|0];u=H[d+1|0];v=H[d+2|0];g=G[c+140>>2];E[d+3|0]=H[(H[d+3|0]^g>>>24)+3072|0];E[d+2|0]=H[(v^e>>>24)+3072|0];E[d+1|0]=H[(u^f>>>24)+3072|0];E[d|0]=H[(t^a>>>24)+3072|0];E[d+15|0]=H[((e^r)&255)+3072|0];E[d+12|0]=H[((g^p)&255)+3072|0];E[d+14|0]=H[((f^l)&255)+3072|0];E[d+13|0]=H[((a^o)&255)+3072|0];E[d+10|0]=H[(j^a>>>8&255)+3072|0];E[d+8|0]=H[(n^e>>>8&255)+3072|0];E[d+7|0]=H[(m^a>>>16&255)+3072|0];E[d+6|0]=H[(q^g>>>16&255)+3072|0];E[d+5|0]=H[(s^e>>>16&255)+3072|0];E[d+4|0]=H[(k^f>>>16&255)+3072|0];E[d+11|0]=H[(i^f>>>8&255)+3072|0];E[d+9|0]=H[(h^g>>>8&255)+3072|0];Ba(d);a=G[c+156>>2];h=a^H[d+15|0];f=G[c+152>>2];i=f^H[d+14|0];e=G[c+148>>2];k=e^H[d+13|0];g=G[c+144>>2];s=g^H[d+12|0];q=H[d+11|0]^a>>>8;m=H[d+7|0]^a>>>16;a=H[d+3|0]^a>>>24;n=H[d+10|0]^f>>>8;j=H[d+6|0]^f>>>16;f=H[d+2|0]^f>>>24;o=H[d+9|0]^e>>>8;l=H[d+5|0]^e>>>16;e=H[d+1|0]^e>>>24;p=H[d+8|0]^g>>>8;r=H[d+4|0]^g>>>16;E[d|0]=H[(H[d|0]^g>>>24)+3072|0];E[d+10|0]=H[(p&255)+3072|0];E[d+8|0]=H[(n&255)+3072|0];E[d+7|0]=H[(r&255)+3072|0];E[d+6|0]=H[(m&255)+3072|0];E[d+5|0]=H[(j&255)+3072|0];E[d+4|0]=H[(l&255)+3072|0];E[d+3|0]=H[a+3072|0];E[d+2|0]=H[f+3072|0];E[d+1|0]=H[e+3072|0];E[d+15|0]=H[(i&255)+3072|0];E[d+12|0]=H[(h&255)+3072|0];E[d+11|0]=H[(o&255)+3072|0];E[d+9|0]=H[(q&255)+3072|0];E[d+14|0]=H[(k&255)+3072|0];E[d+13|0]=H[(s&255)+3072|0];Ba(d);f=G[c+160>>2];E[d+12|0]=f^H[d+12|0];E[d+8|0]=H[d+8|0]^f>>>8;e=G[c+164>>2];h=e^H[d+13|0];E[d+13|0]=h;i=H[d+9|0]^e>>>8;E[d+9|0]=i;g=G[c+168>>2];k=g^H[d+14|0];E[d+14|0]=k;a=G[c+172>>2];E[d+1|0]=H[(H[d+1|0]^e>>>24)+3072|0];E[d|0]=H[(H[d|0]^f>>>24)+3072|0];E[d+2|0]=H[(H[d+2|0]^g>>>24)+3072|0];s=H[d+5|0];q=H[d+6|0];m=H[d+4|0];n=H[d+10|0];E[d+3|0]=H[(H[d+3|0]^a>>>24)+3072|0];E[d+6|0]=H[(H[d+7|0]^a>>>16&255)+3072|0];j=H[d+11|0];o=H[d+15|0];l=H[d+12|0];p=H[d+8|0];E[d+8|0]=H[(n^g>>>8&255)+3072|0];E[d+7|0]=H[(m^f>>>16&255)+3072|0];E[d+5|0]=H[(q^g>>>16&255)+3072|0];E[d+4|0]=H[(s^e>>>16&255)+3072|0];E[d+10|0]=H[p+3072|0];E[d+15|0]=H[(k&255)+3072|0];E[d+12|0]=H[((a^o)&255)+3072|0];E[d+11|0]=H[(i&255)+3072|0];E[d+9|0]=H[(j^a>>>8&255)+3072|0];E[d+14|0]=H[(h&255)+3072|0];E[d+13|0]=H[l+3072|0];Ba(d);a=G[c+176>>2];f=G[c+180>>2];e=G[c+184>>2];h=H[d+4|0];i=H[d+5|0];k=H[d+6|0];s=H[d+7|0];q=H[d+8|0];m=H[d+9|0];n=H[d+10|0];j=H[d+11|0];o=H[d+12|0];l=H[d+13|0];p=H[d+14|0];r=H[d+15|0];t=H[d|0];u=H[d+1|0];v=H[d+2|0];g=G[c+188>>2];E[d+3|0]=H[(H[d+3|0]^g>>>24)+3072|0];E[d+2|0]=H[(v^e>>>24)+3072|0];E[d+1|0]=H[(u^f>>>24)+3072|0];E[d|0]=H[(t^a>>>24)+3072|0];r=H[((g^r)&255)+3072|0];p=H[((e^p)&255)+3072|0];l=H[((f^l)&255)+3072|0];o=H[((a^o)&255)+3072|0];j=H[(g>>>8&255^j)+3072|0];n=H[(e>>>8&255^n)+3072|0];m=H[(f>>>8&255^m)+3072|0];g=H[(g>>>16&255^s)+3072|0];e=H[(e>>>16&255^k)+3072|0];f=H[(f>>>16&255^i)+3072|0];h=H[(a>>>16&255^h)+3072|0];E[d+10|0]=H[(a>>>8&255^q)+3072|0];E[d+8|0]=n;E[d+7|0]=h;E[d+6|0]=g;E[d+5|0]=e;E[d+4|0]=f;E[d+15|0]=p;E[d+12|0]=r;E[d+11|0]=m;E[d+9|0]=j;E[d+14|0]=l;E[d+13|0]=o;Ba(d);f=G[c+192>>2];E[d+12|0]=f^H[d+12|0];E[d+8|0]=H[d+8|0]^f>>>8;e=G[c+196>>2];h=e^H[d+13|0];E[d+13|0]=h;i=H[d+9|0]^e>>>8;E[d+9|0]=i;g=G[c+200>>2];k=g^H[d+14|0];E[d+14|0]=k;a=G[c+204>>2];E[d+1|0]=H[(H[d+1|0]^e>>>24)+3072|0];E[d|0]=H[(H[d|0]^f>>>24)+3072|0];E[d+2|0]=H[(H[d+2|0]^g>>>24)+3072|0];s=H[d+5|0];q=H[d+6|0];m=H[d+4|0];n=H[d+10|0];E[d+3|0]=H[(H[d+3|0]^a>>>24)+3072|0];j=H[d+11|0];o=H[d+15|0];l=H[d+7|0];p=H[d+12|0];r=H[d+8|0];E[d+8|0]=H[(n^g>>>8&255)+3072|0];E[d+7|0]=H[(m^f>>>16&255)+3072|0];E[d+6|0]=H[(l^a>>>16&255)+3072|0];E[d+5|0]=H[(q^g>>>16&255)+3072|0];E[d+4|0]=H[(s^e>>>16&255)+3072|0];E[d+10|0]=H[r+3072|0];E[d+15|0]=H[(k&255)+3072|0];E[d+12|0]=H[((a^o)&255)+3072|0];E[d+11|0]=H[(i&255)+3072|0];E[d+9|0]=H[(j^a>>>8&255)+3072|0];E[d+14|0]=H[(h&255)+3072|0];E[d+13|0]=H[p+3072|0];Ba(d);a=G[c+208>>2];E[d+12|0]=a^H[d+12|0];E[d+8|0]=H[d+8|0]^a>>>8;f=G[c+212>>2];k=H[d+9|0]^f>>>8;E[d+9|0]=k;s=f^H[d+13|0];E[d+13|0]=s;e=G[c+216>>2];q=e^H[d+14|0];E[d+14|0]=q;m=H[d+4|0];n=H[d+5|0];j=H[d+10|0];o=H[d+6|0];h=H[d+2|0];i=H[d+1|0];l=H[d|0];p=H[d+15|0];r=H[d+11|0];t=H[d+7|0];g=G[c+220>>2];u=H[(H[d+3|0]^g>>>24)+3072|0];E[d+3|0]=u;l=H[(l^a>>>24)+3072|0];E[d|0]=l;v=H[(i^f>>>24)+3072|0];E[d+1|0]=v;w=H[(h^e>>>24)+3072|0];E[d+2|0]=w;h=G[c+232>>2];t=H[(g>>>16&255^t)+3072|0]^h>>>16;i=G[c+228>>2];r=H[(g>>>8&255^r)+3072|0]^i>>>8;o=H[(e>>>16&255^o)+3072|0]^i>>>16;j=H[(e>>>8&255^j)+3072|0];e=G[c+224>>2];j=j^e>>>8;f=H[(f>>>16&255^n)+3072|0]^e>>>16;n=H[H[d+8|0]+3072|0]^h>>>8;g=e^H[((g^p)&255)+3072|0];p=i^H[H[d+12|0]+3072|0];m=H[(a>>>16&255^m)+3072|0];k=H[(k&255)+3072|0];q=H[(q&255)+3072|0];a=G[c+236>>2];E[b+11|0]=h^H[(s&255)+3072|0];E[b+10|0]=n;E[b+9|0]=t;E[b+8|0]=w^h>>>24;E[b+7|0]=p;E[b+6|0]=r;E[b+5|0]=o;E[b+4|0]=v^i>>>24;E[b+3|0]=g;E[b+2|0]=j;E[b+1|0]=f;E[b|0]=l^e>>>24;E[b+15|0]=a^q;E[b+14|0]=k^a>>>8;E[b+13|0]=m^a>>>16;E[b+12|0]=u^a>>>24;Y=d+16|0}function wa(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;d=G[c>>2];e=d;f=d>>31;d=G[b>>2];k=a,l=we(e,f,d,d>>31),G[k>>2]=l;G[a+4>>2]=Z;d=G[c>>2];e=d;f=d>>31;d=G[b+8>>2];d=we(e,f,d,d>>31);e=Z;f=d;d=G[c+8>>2];h=d;i=d>>31;d=G[b>>2];d=we(h,i,d,d>>31);f=f+d|0;e=Z+e|0;G[a+8>>2]=f;G[a+12>>2]=d>>>0>f>>>0?e+1|0:e;d=G[c+16>>2];e=d;f=d>>31;d=G[b>>2];g=we(e,f,d,d>>31);j=Z;d=G[c+8>>2];h=d;f=d>>31;d=G[b+8>>2];d=we(h,f,(d&2147483647)<<1,d>>31);e=d+g|0;g=Z+j|0;g=d>>>0>e>>>0?g+1|0:g;d=G[c>>2];f=d;h=d>>31;d=G[b+16>>2];d=we(f,h,d,d>>31);e=d+e|0;g=Z+g|0;G[a+16>>2]=e;G[a+20>>2]=d>>>0>e>>>0?g+1|0:g;d=G[c+8>>2];e=d;f=d>>31;d=G[b+16>>2];d=we(e,f,d,d>>31);e=Z;f=d;d=G[c+16>>2];h=d;i=d>>31;d=G[b+8>>2];d=we(h,i,d,d>>31);f=f+d|0;e=Z+e|0;e=d>>>0>f>>>0?e+1|0:e;h=f;d=G[c+24>>2];f=d;i=d>>31;d=G[b>>2];f=we(f,i,d,d>>31);h=h+f|0;d=Z+e|0;d=f>>>0>h>>>0?d+1|0:d;e=G[c>>2];f=e;i=e>>31;e=G[b+24>>2];e=we(f,i,e,e>>31);f=e+h|0;g=Z+d|0;G[a+24>>2]=f;G[a+28>>2]=e>>>0>f>>>0?g+1|0:g;d=G[c+16>>2];e=d;f=d>>31;d=G[b+16>>2];h=we(e,f,d,d>>31);f=Z;d=G[c+8>>2];e=d;i=d>>31;d=G[b+24>>2];d=we(e,i,d,d>>31);e=Z;i=d;d=G[c+24>>2];g=d;j=d>>31;d=G[b+8>>2];d=we(g,j,d,d>>31);j=i+d|0;g=Z+e|0;e=j<<1;h=e+h|0;g=((d>>>0>j>>>0?g+1|0:g)<<1|j>>>31)+f|0;d=G[c+32>>2];f=d;i=d>>31;d=G[b>>2];d=we(f,i,d,d>>31);f=d+h|0;e=Z+(e>>>0>h>>>0?g+1|0:g)|0;e=d>>>0>f>>>0?e+1|0:e;d=G[c>>2];h=d;i=d>>31;d=G[b+32>>2];d=we(h,i,d,d>>31);f=d+f|0;g=Z+e|0;G[a+32>>2]=f;G[a+36>>2]=d>>>0>f>>>0?g+1|0:g;d=G[c+16>>2];e=d;f=d>>31;d=G[b+24>>2];d=we(e,f,d,d>>31);e=Z;f=d;d=G[c+24>>2];h=d;i=d>>31;d=G[b+16>>2];d=we(h,i,d,d>>31);f=f+d|0;g=Z+e|0;g=d>>>0>f>>>0?g+1|0:g;d=G[c+32>>2];e=d;h=d>>31;d=G[b+8>>2];e=we(e,h,d,d>>31);f=e+f|0;d=Z+g|0;d=e>>>0>f>>>0?d+1|0:d;e=G[c+8>>2];h=e;i=e>>31;e=G[b+32>>2];e=we(h,i,e,e>>31);f=e+f|0;g=Z+d|0;g=e>>>0>f>>>0?g+1|0:g;d=G[c+40>>2];e=d;h=d>>31;d=G[b>>2];d=we(e,h,d,d>>31);f=d+f|0;e=Z+g|0;e=d>>>0>f>>>0?e+1|0:e;d=G[c>>2];h=d;i=d>>31;d=G[b+40>>2];d=we(h,i,d,d>>31);f=d+f|0;g=Z+e|0;G[a+40>>2]=f;G[a+44>>2]=d>>>0>f>>>0?g+1|0:g;d=G[c+32>>2];e=d;f=d>>31;d=G[b+16>>2];h=we(e,f,d,d>>31);f=Z;d=G[c+40>>2];e=d;i=d>>31;d=G[b+8>>2];d=we(e,i,d,d>>31);e=Z;i=d;d=G[c+24>>2];g=d;j=d>>31;d=G[b+24>>2];d=we(g,j,d,d>>31);j=i+d|0;g=Z+e|0;g=d>>>0>j>>>0?g+1|0:g;d=G[c+8>>2];e=d;i=d>>31;d=G[b+40>>2];e=we(e,i,d,d>>31);j=e+j|0;d=Z+g|0;g=(e>>>0>j>>>0?d+1|0:d)<<1|j>>>31;d=j<<1;e=d+h|0;g=g+f|0;g=d>>>0>e>>>0?g+1|0:g;d=G[c+16>>2];f=d;h=d>>31;d=G[b+32>>2];d=we(f,h,d,d>>31);f=d+e|0;e=Z+g|0;e=d>>>0>f>>>0?e+1|0:e;d=G[c+48>>2];h=d;i=d>>31;d=G[b>>2];d=we(h,i,d,d>>31);f=d+f|0;g=Z+e|0;g=d>>>0>f>>>0?g+1|0:g;d=G[c>>2];e=d;h=d>>31;d=G[b+48>>2];e=we(e,h,d,d>>31);f=e+f|0;d=Z+g|0;G[a+48>>2]=f;G[a+52>>2]=e>>>0>f>>>0?d+1|0:d;d=G[c+24>>2];e=d;f=d>>31;d=G[b+32>>2];d=we(e,f,d,d>>31);e=Z;f=d;d=G[c+32>>2];h=d;i=d>>31;d=G[b+24>>2];d=we(h,i,d,d>>31);f=f+d|0;g=Z+e|0;g=d>>>0>f>>>0?g+1|0:g;d=G[c+40>>2];e=d;h=d>>31;d=G[b+16>>2];d=we(e,h,d,d>>31);e=d+f|0;g=Z+g|0;g=d>>>0>e>>>0?g+1|0:g;d=G[c+16>>2];f=d;h=d>>31;d=G[b+40>>2];d=we(f,h,d,d>>31);f=d+e|0;e=Z+g|0;e=d>>>0>f>>>0?e+1|0:e;d=G[c+48>>2];h=d;i=d>>31;d=G[b+8>>2];d=we(h,i,d,d>>31);f=d+f|0;g=Z+e|0;g=d>>>0>f>>>0?g+1|0:g;d=G[c+8>>2];e=d;h=d>>31;d=G[b+48>>2];e=we(e,h,d,d>>31);f=e+f|0;d=Z+g|0;d=e>>>0>f>>>0?d+1|0:d;e=G[c+56>>2];h=e;i=e>>31;e=G[b>>2];e=we(h,i,e,e>>31);f=e+f|0;g=Z+d|0;g=e>>>0>f>>>0?g+1|0:g;d=G[c>>2];e=d;h=d>>31;d=G[b+56>>2];d=we(e,h,d,d>>31);e=d+f|0;g=Z+g|0;G[a+56>>2]=e;G[a+60>>2]=d>>>0>e>>>0?g+1|0:g;d=G[c+32>>2];e=d;f=d>>31;d=G[b+32>>2];h=we(e,f,d,d>>31);f=Z;d=G[c+24>>2];e=d;i=d>>31;d=G[b+40>>2];d=we(e,i,d,d>>31);e=Z;i=d;d=G[c+40>>2];g=d;j=d>>31;d=G[b+24>>2];d=we(g,j,d,d>>31);j=i+d|0;e=Z+e|0;e=d>>>0>j>>>0?e+1|0:e;d=G[c+56>>2];i=d;g=d>>31;d=G[b+8>>2];d=we(i,g,d,d>>31);j=d+j|0;g=Z+e|0;g=d>>>0>j>>>0?g+1|0:g;d=G[c+8>>2];e=d;i=d>>31;d=G[b+56>>2];e=we(e,i,d,d>>31);j=e+j|0;d=Z+g|0;e=(e>>>0>j>>>0?d+1|0:d)<<1|j>>>31;d=j<<1;h=d+h|0;g=e+f|0;g=d>>>0>h>>>0?g+1|0:g;d=G[c+48>>2];e=d;f=d>>31;d=G[b+16>>2];d=we(e,f,d,d>>31);e=d+h|0;g=Z+g|0;g=d>>>0>e>>>0?g+1|0:g;d=G[c+16>>2];f=d;h=d>>31;d=G[b+48>>2];d=we(f,h,d,d>>31);e=d+e|0;g=Z+g|0;g=d>>>0>e>>>0?g+1|0:g;f=e;d=G[c+64>>2];e=d;h=d>>31;d=G[b>>2];e=we(e,h,d,d>>31);f=f+e|0;d=Z+g|0;d=e>>>0>f>>>0?d+1|0:d;h=f;e=G[c>>2];f=e;i=e>>31;e=G[b+64>>2];f=we(f,i,e,e>>31);h=h+f|0;e=Z+d|0;G[a+64>>2]=h;G[a+68>>2]=f>>>0>h>>>0?e+1|0:e;d=G[c+32>>2];e=d;f=d>>31;d=G[b+40>>2];d=we(e,f,d,d>>31);e=Z;f=d;d=G[c+40>>2];h=d;i=d>>31;d=G[b+32>>2];d=we(h,i,d,d>>31);f=f+d|0;g=Z+e|0;g=d>>>0>f>>>0?g+1|0:g;d=G[c+48>>2];e=d;h=d>>31;d=G[b+24>>2];d=we(e,h,d,d>>31);e=d+f|0;g=Z+g|0;g=d>>>0>e>>>0?g+1|0:g;d=G[c+24>>2];f=d;h=d>>31;d=G[b+48>>2];d=we(f,h,d,d>>31);e=d+e|0;g=Z+g|0;g=d>>>0>e>>>0?g+1|0:g;f=e;d=G[c+56>>2];e=d;h=d>>31;d=G[b+16>>2];e=we(e,h,d,d>>31);f=f+e|0;d=Z+g|0;d=e>>>0>f>>>0?d+1|0:d;h=f;e=G[c+16>>2];f=e;i=e>>31;e=G[b+56>>2];f=we(f,i,e,e>>31);h=h+f|0;e=Z+d|0;e=f>>>0>h>>>0?e+1|0:e;d=G[c+64>>2];f=d;i=d>>31;d=G[b+8>>2];d=we(f,i,d,d>>31);f=d+h|0;g=Z+e|0;g=d>>>0>f>>>0?g+1|0:g;d=G[c+8>>2];e=d;h=d>>31;d=G[b+64>>2];d=we(e,h,d,d>>31);e=d+f|0;g=Z+g|0;g=d>>>0>e>>>0?g+1|0:g;d=G[c+72>>2];f=d;h=d>>31;d=G[b>>2];d=we(f,h,d,d>>31);e=d+e|0;g=Z+g|0;g=d>>>0>e>>>0?g+1|0:g;f=e;d=G[c>>2];e=d;h=d>>31;d=G[b+72>>2];e=we(e,h,d,d>>31);f=f+e|0;d=Z+g|0;G[a+72>>2]=f;G[a+76>>2]=e>>>0>f>>>0?d+1|0:d;d=G[c+48>>2];e=d;f=d>>31;d=G[b+32>>2];h=we(e,f,d,d>>31);f=Z;d=G[c+56>>2];e=d;i=d>>31;d=G[b+24>>2];d=we(e,i,d,d>>31);e=Z;i=d;d=G[c+40>>2];g=d;j=d>>31;d=G[b+40>>2];d=we(g,j,d,d>>31);j=i+d|0;e=Z+e|0;e=d>>>0>j>>>0?e+1|0:e;d=G[c+24>>2];i=d;g=d>>31;d=G[b+56>>2];d=we(i,g,d,d>>31);j=d+j|0;g=Z+e|0;g=d>>>0>j>>>0?g+1|0:g;d=G[c+72>>2];e=d;i=d>>31;d=G[b+8>>2];d=we(e,i,d,d>>31);e=d+j|0;g=Z+g|0;g=d>>>0>e>>>0?g+1|0:g;i=e;d=G[c+8>>2];e=d;j=d>>31;d=G[b+72>>2];e=we(e,j,d,d>>31);d=i+e|0;g=Z+g|0;g=d>>>0>>0?g+1|0:g;e=d<<1;h=e+h|0;d=(g<<1|d>>>31)+f|0;d=e>>>0>h>>>0?d+1|0:d;e=G[c+32>>2];f=e;i=e>>31;e=G[b+48>>2];f=we(f,i,e,e>>31);h=f+h|0;e=Z+d|0;e=f>>>0>h>>>0?e+1|0:e;d=G[c+64>>2];f=d;i=d>>31;d=G[b+16>>2];d=we(f,i,d,d>>31);f=d+h|0;g=Z+e|0;g=d>>>0>f>>>0?g+1|0:g;d=G[c+16>>2];e=d;h=d>>31;d=G[b+64>>2];d=we(e,h,d,d>>31);e=d+f|0;g=Z+g|0;G[a+80>>2]=e;G[a+84>>2]=d>>>0>e>>>0?g+1|0:g;d=G[c+40>>2];e=d;f=d>>31;d=G[b+48>>2];d=we(e,f,d,d>>31);e=Z;f=d;d=G[c+48>>2];h=d;i=d>>31;d=G[b+40>>2];d=we(h,i,d,d>>31);f=f+d|0;g=Z+e|0;g=d>>>0>f>>>0?g+1|0:g;d=G[c+56>>2];e=d;h=d>>31;d=G[b+32>>2];e=we(e,h,d,d>>31);f=e+f|0;d=Z+g|0;d=e>>>0>f>>>0?d+1|0:d;h=f;e=G[c+32>>2];f=e;i=e>>31;e=G[b+56>>2];f=we(f,i,e,e>>31);h=h+f|0;e=Z+d|0;e=f>>>0>h>>>0?e+1|0:e;d=G[c+64>>2];f=d;i=d>>31;d=G[b+24>>2];d=we(f,i,d,d>>31);f=d+h|0;g=Z+e|0;g=d>>>0>f>>>0?g+1|0:g;d=G[c+24>>2];e=d;h=d>>31;d=G[b+64>>2];d=we(e,h,d,d>>31);e=d+f|0;g=Z+g|0;g=d>>>0>e>>>0?g+1|0:g;d=G[c+72>>2];f=d;h=d>>31;d=G[b+16>>2];d=we(f,h,d,d>>31);e=d+e|0;g=Z+g|0;g=d>>>0>e>>>0?g+1|0:g;f=e;d=G[c+16>>2];e=d;h=d>>31;d=G[b+72>>2];e=we(e,h,d,d>>31);f=f+e|0;d=Z+g|0;G[a+88>>2]=f;G[a+92>>2]=e>>>0>f>>>0?d+1|0:d;d=G[c+48>>2];e=d;f=d>>31;d=G[b+48>>2];h=we(e,f,d,d>>31);f=Z;d=G[c+40>>2];e=d;i=d>>31;d=G[b+56>>2];d=we(e,i,d,d>>31);e=Z;i=d;d=G[c+56>>2];g=d;j=d>>31;d=G[b+40>>2];d=we(g,j,d,d>>31);j=i+d|0;e=Z+e|0;e=d>>>0>j>>>0?e+1|0:e;d=G[c+72>>2];i=d;g=d>>31;d=G[b+24>>2];d=we(i,g,d,d>>31);j=d+j|0;g=Z+e|0;g=d>>>0>j>>>0?g+1|0:g;d=G[c+24>>2];e=d;i=d>>31;d=G[b+72>>2];e=we(e,i,d,d>>31);d=e+j|0;g=Z+g|0;e=(d>>>0>>0?g+1|0:g)<<1|d>>>31;d=d<<1;h=d+h|0;g=e+f|0;g=d>>>0>h>>>0?g+1|0:g;d=G[c+64>>2];e=d;f=d>>31;d=G[b+32>>2];e=we(e,f,d,d>>31);f=e+h|0;d=Z+g|0;d=e>>>0>f>>>0?d+1|0:d;e=G[c+32>>2];h=e;i=e>>31;e=G[b+64>>2];e=we(h,i,e,e>>31);f=e+f|0;g=Z+d|0;G[a+96>>2]=f;G[a+100>>2]=e>>>0>f>>>0?g+1|0:g;d=G[c+48>>2];e=d;f=d>>31;d=G[b+56>>2];d=we(e,f,d,d>>31);e=Z;f=d;d=G[c+56>>2];h=d;i=d>>31;d=G[b+48>>2];d=we(h,i,d,d>>31);f=f+d|0;g=Z+e|0;g=d>>>0>f>>>0?g+1|0:g;d=G[c+64>>2];e=d;h=d>>31;d=G[b+40>>2];d=we(e,h,d,d>>31);f=d+f|0;e=Z+g|0;e=d>>>0>f>>>0?e+1|0:e;d=G[c+40>>2];h=d;i=d>>31;d=G[b+64>>2];d=we(h,i,d,d>>31);f=d+f|0;g=Z+e|0;g=d>>>0>f>>>0?g+1|0:g;d=G[c+72>>2];e=d;h=d>>31;d=G[b+32>>2];e=we(e,h,d,d>>31);f=e+f|0;d=Z+g|0;d=e>>>0>f>>>0?d+1|0:d;e=G[c+32>>2];h=e;i=e>>31;e=G[b+72>>2];e=we(h,i,e,e>>31);f=e+f|0;g=Z+d|0;G[a+104>>2]=f;G[a+108>>2]=e>>>0>f>>>0?g+1|0:g;d=G[c+64>>2];e=d;f=d>>31;d=G[b+48>>2];h=we(e,f,d,d>>31);f=Z;d=G[c+72>>2];e=d;i=d>>31;d=G[b+40>>2];d=we(e,i,d,d>>31);e=Z;i=d;d=G[c+56>>2];g=d;j=d>>31;d=G[b+56>>2];d=we(g,j,d,d>>31);j=i+d|0;g=Z+e|0;g=d>>>0>j>>>0?g+1|0:g;d=G[c+40>>2];e=d;i=d>>31;d=G[b+72>>2];d=we(e,i,d,d>>31);j=d+j|0;e=Z+g|0;g=(d>>>0>j>>>0?e+1|0:e)<<1|j>>>31;d=j<<1;e=d+h|0;g=g+f|0;g=d>>>0>e>>>0?g+1|0:g;f=e;d=G[c+48>>2];e=d;h=d>>31;d=G[b+64>>2];e=we(e,h,d,d>>31);f=f+e|0;d=Z+g|0;G[a+112>>2]=f;G[a+116>>2]=e>>>0>f>>>0?d+1|0:d;d=G[c+56>>2];e=d;f=d>>31;d=G[b+64>>2];d=we(e,f,d,d>>31);e=Z;f=d;d=G[c+64>>2];h=d;i=d>>31;d=G[b+56>>2];d=we(h,i,d,d>>31);f=f+d|0;g=Z+e|0;g=d>>>0>f>>>0?g+1|0:g;d=G[c+72>>2];e=d;h=d>>31;d=G[b+48>>2];d=we(e,h,d,d>>31);f=d+f|0;e=Z+g|0;e=d>>>0>f>>>0?e+1|0:e;d=G[c+48>>2];h=d;i=d>>31;d=G[b+72>>2];d=we(h,i,d,d>>31);f=d+f|0;g=Z+e|0;G[a+120>>2]=f;G[a+124>>2]=d>>>0>f>>>0?g+1|0:g;d=G[c+64>>2];e=d;f=d>>31;d=G[b+64>>2];j=we(e,f,d,d>>31);h=Z;d=G[c+56>>2];e=d;f=d>>31;d=G[b+72>>2];d=we(e,f,d,d>>31);f=Z;i=d;d=G[c+72>>2];e=d;g=d>>31;d=G[b+56>>2];e=we(e,g,d,d>>31);d=i+e|0;g=Z+f|0;f=d<<1;j=f+j|0;d=((d>>>0>>0?g+1|0:g)<<1|d>>>31)+h|0;G[a+128>>2]=j;G[a+132>>2]=f>>>0>j>>>0?d+1|0:d;d=G[c+64>>2];e=d;f=d>>31;d=G[b+72>>2];d=we(e,f,d,d>>31);e=Z;f=d;d=G[c+72>>2];h=d;i=d>>31;d=G[b+64>>2];d=we(h,i,d,d>>31);f=f+d|0;g=Z+e|0;G[a+136>>2]=f;G[a+140>>2]=d>>>0>f>>>0?g+1|0:g;b=G[b+72>>2];e=b;b=0;c=G[c+72>>2];k=a,l=we(c,c>>31,(e&2147483647)<<1|b>>>31,e>>31),G[k+144>>2]=l;G[a+148>>2]=Z}function gd(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;l=Y-16|0;Y=l;a:{b:{c:{d:{e:{f:{g:{h:{i:{j:{k:{l:{m:{n:{if(a>>>0<=244){g=G[9391];h=a>>>0<11?16:a+11&-8;c=h>>>3|0;b=g>>>c|0;if(b&3){c=c+((b^-1)&1)|0;a=c<<3;b=a+37604|0;d=G[a+37612>>2];a=G[d+8>>2];o:{if((b|0)==(a|0)){m=37564,n=ye(-2,c)&g,G[m>>2]=n;break o}G[a+12>>2]=b;G[b+8>>2]=a}a=d+8|0;b=c<<3;G[d+4>>2]=b|3;b=b+d|0;G[b+4>>2]=G[b+4>>2]|1;break a}k=G[9393];if(k>>>0>=h>>>0){break n}if(b){a=2<>2];a=G[e+8>>2];p:{if((b|0)==(a|0)){g=ye(-2,d)&g;G[9391]=g;break p}G[a+12>>2]=b;G[b+8>>2]=a}G[e+4>>2]=h|3;c=e+h|0;a=d<<3;d=a-h|0;G[c+4>>2]=d|1;G[a+e>>2]=d;if(k){b=(k&-8)+37604|0;f=G[9396];a=1<<(k>>>3);q:{if(!(a&g)){G[9391]=a|g;a=b;break q}a=G[b+8>>2]}G[b+8>>2]=f;G[a+12>>2]=f;G[f+12>>2]=b;G[f+8>>2]=a}a=e+8|0;G[9396]=c;G[9393]=d;break a}j=G[9392];if(!j){break n}c=G[(ve(j)<<2)+37868>>2];f=(G[c+4>>2]&-8)-h|0;b=c;while(1){r:{a=G[b+16>>2];if(!a){a=G[b+20>>2];if(!a){break r}}b=(G[a+4>>2]&-8)-h|0;d=b>>>0>>0;f=d?b:f;c=d?a:c;b=a;continue}break}i=G[c+24>>2];d=G[c+12>>2];if((d|0)!=(c|0)){a=G[c+8>>2];G[a+12>>2]=d;G[d+8>>2]=a;break b}b=c+20|0;a=G[b>>2];if(!a){a=G[c+16>>2];if(!a){break m}b=c+16|0}while(1){e=b;d=a;b=a+20|0;a=G[b>>2];if(a){continue}b=d+16|0;a=G[d+16>>2];if(a){continue}break}G[e>>2]=0;break b}h=-1;if(a>>>0>4294967231){break n}a=a+11|0;h=a&-8;j=G[9392];if(!j){break n}f=0-h|0;g=0;s:{if(h>>>0<256){break s}g=31;if(h>>>0>16777215){break s}a=P(a>>>8|0);g=((h>>>38-a&1)-(a<<1)|0)+62|0}b=G[(g<<2)+37868>>2];t:{u:{v:{if(!b){a=0;break v}a=0;c=h<<((g|0)!=31?25-(g>>>1|0)|0:0);while(1){w:{e=(G[b+4>>2]&-8)-h|0;if(e>>>0>=f>>>0){break w}d=b;f=e;if(e){break w}f=0;a=b;break u}e=G[b+20>>2];b=G[((c>>>29&4)+b|0)+16>>2];a=e?(e|0)==(b|0)?a:e:a;c=c<<1;if(b){continue}break}}if(!(a|d)){d=0;a=2<>2]}if(!a){break t}}while(1){b=(G[a+4>>2]&-8)-h|0;c=b>>>0>>0;f=c?b:f;d=c?a:d;b=G[a+16>>2];if(b){a=b}else{a=G[a+20>>2]}if(a){continue}break}}if(!d|G[9393]-h>>>0<=f>>>0){break n}g=G[d+24>>2];c=G[d+12>>2];if((d|0)!=(c|0)){a=G[d+8>>2];G[a+12>>2]=c;G[c+8>>2]=a;break c}b=d+20|0;a=G[b>>2];if(!a){a=G[d+16>>2];if(!a){break l}b=d+16|0}while(1){e=b;c=a;b=a+20|0;a=G[b>>2];if(a){continue}b=c+16|0;a=G[c+16>>2];if(a){continue}break}G[e>>2]=0;break c}a=G[9393];if(a>>>0>=h>>>0){d=G[9396];b=a-h|0;x:{if(b>>>0>=16){c=d+h|0;G[c+4>>2]=b|1;G[a+d>>2]=b;G[d+4>>2]=h|3;break x}G[d+4>>2]=a|3;a=a+d|0;G[a+4>>2]=G[a+4>>2]|1;c=0;b=0}G[9393]=b;G[9396]=c;a=d+8|0;break a}i=G[9394];if(i>>>0>h>>>0){b=i-h|0;G[9394]=b;c=G[9397];a=c+h|0;G[9397]=a;G[a+4>>2]=b|1;G[c+4>>2]=h|3;a=c+8|0;break a}a=0;j=h+47|0;if(G[9509]){c=G[9511]}else{G[9512]=-1;G[9513]=-1;G[9510]=4096;G[9511]=4096;G[9509]=l+12&-16^1431655768;G[9514]=0;G[9502]=0;c=4096}e=j+c|0;f=0-c|0;b=e&f;if(b>>>0<=h>>>0){break a}d=G[9501];if(d){c=G[9499];g=c+b|0;if(d>>>0>>0|c>>>0>=g>>>0){break a}}y:{if(!(H[38008]&4)){z:{A:{B:{C:{d=G[9397];if(d){a=38012;while(1){c=G[a>>2];if(c>>>0<=d>>>0&d>>>0>2]>>>0){break C}a=G[a+8>>2];if(a){continue}break}}c=Ta(0);if((c|0)==-1){break z}g=b;d=G[9510];a=d-1|0;if(a&c){g=(b-c|0)+(a+c&0-d)|0}if(g>>>0<=h>>>0){break z}d=G[9501];if(d){a=G[9499];f=a+g|0;if(d>>>0>>0|a>>>0>=f>>>0){break z}}a=Ta(g);if((c|0)!=(a|0)){break B}break y}g=f&e-i;c=Ta(g);if((c|0)==(G[a>>2]+G[a+4>>2]|0)){break A}a=c}if((a|0)==-1){break z}if(h+48>>>0<=g>>>0){c=a;break y}c=G[9511];c=c+(j-g|0)&0-c;if((Ta(c)|0)==-1){break z}g=c+g|0;c=a;break y}if((c|0)!=-1){break y}}G[9502]=G[9502]|4}c=Ta(b);a=Ta(0);if((c|0)==-1|(a|0)==-1|a>>>0<=c>>>0){break i}g=a-c|0;if(g>>>0<=h+40>>>0){break i}}a=G[9499]+g|0;G[9499]=a;if(a>>>0>J[9500]){G[9500]=a}D:{e=G[9397];if(e){a=38012;while(1){d=G[a>>2];b=G[a+4>>2];if((d+b|0)==(c|0)){break D}a=G[a+8>>2];if(a){continue}break}break k}a=G[9395];if(!(a>>>0<=c>>>0?a:0)){G[9395]=c}a=0;G[9504]=g;G[9503]=c;G[9399]=-1;G[9400]=G[9509];G[9506]=0;while(1){d=a<<3;b=d+37604|0;G[d+37612>>2]=b;G[d+37616>>2]=b;a=a+1|0;if((a|0)!=32){continue}break}d=g-40|0;a=-8-c&7;b=d-a|0;G[9394]=b;a=a+c|0;G[9397]=a;G[a+4>>2]=b|1;G[(c+d|0)+4>>2]=40;G[9398]=G[9513];break j}if(G[a+12>>2]&8|(c>>>0<=e>>>0|d>>>0>e>>>0)){break k}G[a+4>>2]=b+g;a=-8-e&7;c=a+e|0;G[9397]=c;b=G[9394]+g|0;a=b-a|0;G[9394]=a;G[c+4>>2]=a|1;G[(b+e|0)+4>>2]=40;G[9398]=G[9513];break j}d=0;break b}c=0;break c}if(J[9395]>c>>>0){G[9395]=c}b=c+g|0;a=38012;E:{F:{G:{while(1){if((b|0)!=G[a>>2]){a=G[a+8>>2];if(a){continue}break G}break}if(!(H[a+12|0]&8)){break F}}a=38012;while(1){b=G[a>>2];if(b>>>0<=e>>>0){f=b+G[a+4>>2]|0;if(f>>>0>e>>>0){break E}}a=G[a+8>>2];continue}}G[a>>2]=c;G[a+4>>2]=G[a+4>>2]+g;j=(-8-c&7)+c|0;G[j+4>>2]=h|3;g=b+(-8-b&7)|0;i=h+j|0;a=g-i|0;if((e|0)==(g|0)){G[9397]=i;a=G[9394]+a|0;G[9394]=a;G[i+4>>2]=a|1;break d}if(G[9396]==(g|0)){G[9396]=i;a=G[9393]+a|0;G[9393]=a;G[i+4>>2]=a|1;G[a+i>>2]=a;break d}f=G[g+4>>2];if((f&3)!=1){break e}e=f&-8;if(f>>>0<=255){c=G[g+12>>2];b=G[g+8>>2];if((c|0)==(b|0)){m=37564,n=G[9391]&ye(-2,f>>>3|0),G[m>>2]=n;break f}G[b+12>>2]=c;G[c+8>>2]=b;break f}h=G[g+24>>2];c=G[g+12>>2];if((g|0)!=(c|0)){b=G[g+8>>2];G[b+12>>2]=c;G[c+8>>2]=b;break g}b=g+20|0;f=G[b>>2];if(!f){f=G[g+16>>2];if(!f){break h}b=g+16|0}while(1){d=b;c=f;b=c+20|0;f=G[b>>2];if(f){continue}b=c+16|0;f=G[c+16>>2];if(f){continue}break}G[d>>2]=0;break g}d=g-40|0;a=-8-c&7;b=d-a|0;G[9394]=b;a=a+c|0;G[9397]=a;G[a+4>>2]=b|1;G[(c+d|0)+4>>2]=40;G[9398]=G[9513];a=(f+(39-f&7)|0)-47|0;d=a>>>0>>0?e:a;G[d+4>>2]=27;a=G[9506];G[d+16>>2]=G[9505];G[d+20>>2]=a;a=G[9504];G[d+8>>2]=G[9503];G[d+12>>2]=a;G[9505]=d+8;G[9504]=g;G[9503]=c;G[9506]=0;a=d+24|0;while(1){G[a+4>>2]=7;b=a+8|0;a=a+4|0;if(b>>>0>>0){continue}break}if((d|0)==(e|0)){break j}G[d+4>>2]=G[d+4>>2]&-2;f=d-e|0;G[e+4>>2]=f|1;G[d>>2]=f;if(f>>>0<=255){b=(f&-8)+37604|0;c=G[9391];a=1<<(f>>>3);H:{if(!(c&a)){G[9391]=a|c;a=b;break H}a=G[b+8>>2]}G[b+8>>2]=e;G[a+12>>2]=e;G[e+12>>2]=b;G[e+8>>2]=a;break j}a=31;if(f>>>0<=16777215){a=P(f>>>8|0);a=((f>>>38-a&1)-(a<<1)|0)+62|0}G[e+28>>2]=a;G[e+16>>2]=0;G[e+20>>2]=0;b=(a<<2)+37868|0;I:{d=G[9392];c=1<>2]=e;break J}a=f<<((a|0)!=31?25-(a>>>1|0)|0:0);d=G[b>>2];while(1){b=d;if((f|0)==(G[b+4>>2]&-8)){break I}c=a>>>29|0;a=a<<1;c=(c&4)+b|0;d=G[c+16>>2];if(d){continue}break}G[c+16>>2]=e}G[e+24>>2]=b;G[e+12>>2]=e;G[e+8>>2]=e;break j}a=G[b+8>>2];G[a+12>>2]=e;G[b+8>>2]=e;G[e+24>>2]=0;G[e+12>>2]=b;G[e+8>>2]=a}a=G[9394];if(a>>>0<=h>>>0){break i}b=a-h|0;G[9394]=b;c=G[9397];a=c+h|0;G[9397]=a;G[a+4>>2]=b|1;G[c+4>>2]=h|3;a=c+8|0;break a}G[9343]=48;a=0;break a}c=0}if(!h){break f}d=G[g+28>>2];b=(d<<2)+37868|0;K:{if(G[b>>2]==(g|0)){G[b>>2]=c;if(c){break K}m=37568,n=G[9392]&ye(-2,d),G[m>>2]=n;break f}G[h+(G[h+16>>2]==(g|0)?16:20)>>2]=c;if(!c){break f}}G[c+24>>2]=h;b=G[g+16>>2];if(b){G[c+16>>2]=b;G[b+24>>2]=c}b=G[g+20>>2];if(!b){break f}G[c+20>>2]=b;G[b+24>>2]=c}a=a+e|0;g=e+g|0;f=G[g+4>>2]}G[g+4>>2]=f&-2;G[i+4>>2]=a|1;G[a+i>>2]=a;if(a>>>0<=255){b=(a&-8)+37604|0;c=G[9391];a=1<<(a>>>3);L:{if(!(c&a)){G[9391]=a|c;a=b;break L}a=G[b+8>>2]}G[b+8>>2]=i;G[a+12>>2]=i;G[i+12>>2]=b;G[i+8>>2]=a;break d}f=31;if(a>>>0<=16777215){b=P(a>>>8|0);f=((a>>>38-b&1)-(b<<1)|0)+62|0}G[i+28>>2]=f;G[i+16>>2]=0;G[i+20>>2]=0;b=(f<<2)+37868|0;M:{d=G[9392];c=1<>2]=i;break N}f=a<<((f|0)!=31?25-(f>>>1|0)|0:0);c=G[b>>2];while(1){b=c;if((G[c+4>>2]&-8)==(a|0)){break M}d=f>>>29|0;f=f<<1;d=(d&4)+c|0;c=G[d+16>>2];if(c){continue}break}G[d+16>>2]=i}G[i+24>>2]=b;G[i+12>>2]=i;G[i+8>>2]=i;break d}a=G[b+8>>2];G[a+12>>2]=i;G[b+8>>2]=i;G[i+24>>2]=0;G[i+12>>2]=b;G[i+8>>2]=a}a=j+8|0;break a}O:{if(!g){break O}b=G[d+28>>2];a=(b<<2)+37868|0;P:{if(G[a>>2]==(d|0)){G[a>>2]=c;if(c){break P}j=ye(-2,b)&j;G[9392]=j;break O}G[g+(G[g+16>>2]==(d|0)?16:20)>>2]=c;if(!c){break O}}G[c+24>>2]=g;a=G[d+16>>2];if(a){G[c+16>>2]=a;G[a+24>>2]=c}a=G[d+20>>2];if(!a){break O}G[c+20>>2]=a;G[a+24>>2]=c}Q:{if(f>>>0<=15){a=f+h|0;G[d+4>>2]=a|3;a=a+d|0;G[a+4>>2]=G[a+4>>2]|1;break Q}G[d+4>>2]=h|3;e=d+h|0;G[e+4>>2]=f|1;G[e+f>>2]=f;if(f>>>0<=255){b=(f&-8)+37604|0;c=G[9391];a=1<<(f>>>3);R:{if(!(c&a)){G[9391]=a|c;a=b;break R}a=G[b+8>>2]}G[b+8>>2]=e;G[a+12>>2]=e;G[e+12>>2]=b;G[e+8>>2]=a;break Q}a=31;if(f>>>0<=16777215){a=P(f>>>8|0);a=((f>>>38-a&1)-(a<<1)|0)+62|0}G[e+28>>2]=a;G[e+16>>2]=0;G[e+20>>2]=0;b=(a<<2)+37868|0;S:{c=1<>2]=e;break T}a=f<<((a|0)!=31?25-(a>>>1|0)|0:0);h=G[b>>2];while(1){b=h;if((G[b+4>>2]&-8)==(f|0)){break S}c=a>>>29|0;a=a<<1;c=(c&4)+b|0;h=G[c+16>>2];if(h){continue}break}G[c+16>>2]=e}G[e+24>>2]=b;G[e+12>>2]=e;G[e+8>>2]=e;break Q}a=G[b+8>>2];G[a+12>>2]=e;G[b+8>>2]=e;G[e+24>>2]=0;G[e+12>>2]=b;G[e+8>>2]=a}a=d+8|0;break a}U:{if(!i){break U}b=G[c+28>>2];a=(b<<2)+37868|0;V:{if(G[a>>2]==(c|0)){G[a>>2]=d;if(d){break V}m=37568,n=ye(-2,b)&j,G[m>>2]=n;break U}G[i+(G[i+16>>2]==(c|0)?16:20)>>2]=d;if(!d){break U}}G[d+24>>2]=i;a=G[c+16>>2];if(a){G[d+16>>2]=a;G[a+24>>2]=d}a=G[c+20>>2];if(!a){break U}G[d+20>>2]=a;G[a+24>>2]=d}W:{if(f>>>0<=15){a=f+h|0;G[c+4>>2]=a|3;a=a+c|0;G[a+4>>2]=G[a+4>>2]|1;break W}G[c+4>>2]=h|3;d=c+h|0;G[d+4>>2]=f|1;G[d+f>>2]=f;if(k){b=(k&-8)+37604|0;e=G[9396];a=1<<(k>>>3);X:{if(!(a&g)){G[9391]=a|g;a=b;break X}a=G[b+8>>2]}G[b+8>>2]=e;G[a+12>>2]=e;G[e+12>>2]=b;G[e+8>>2]=a}G[9396]=d;G[9393]=f}a=c+8|0}Y=l+16|0;return a|0}function ka(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,H=0,I=0,J=0,K=0,L=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0;s=G[c+4>>2];C=s>>31;K=G[b+20>>2];D=K<<1;ba=D>>31;d=we(s,C,D,ba);f=Z;r=G[c>>2];v=r>>31;t=G[b+24>>2];w=t>>31;p=we(r,v,t,w);e=p+d|0;d=Z+f|0;d=e>>>0

>>0?d+1|0:d;x=G[c+8>>2];H=x>>31;p=G[b+16>>2];y=p>>31;l=we(x,H,p,y);e=l+e|0;f=Z+d|0;f=e>>>0>>0?f+1|0:f;E=G[c+12>>2];L=E>>31;N=G[b+12>>2];U=N<<1;ca=U>>31;l=we(E,L,U,ca);d=l+e|0;e=Z+f|0;e=d>>>0>>0?e+1|0:e;I=G[c+16>>2];V=I>>31;l=G[b+8>>2];z=l>>31;q=we(I,V,l,z);f=q+d|0;d=Z+e|0;d=f>>>0>>0?d+1|0:d;e=f;O=G[c+20>>2];da=O>>31;P=G[b+4>>2];W=P<<1;ea=W>>31;f=we(O,da,W,ea);e=e+f|0;d=Z+d|0;d=e>>>0>>0?d+1|0:d;j=G[c+24>>2];ta=j;pa=j>>31;q=G[b>>2];A=q>>31;m=we(j,pa,q,A);f=m+e|0;e=Z+d|0;e=f>>>0>>0?e+1|0:e;fa=G[c+28>>2];o=M(fa,19);Q=o>>31;R=G[b+36>>2];X=R<<1;ga=X>>31;m=we(o,Q,X,ga);d=m+f|0;f=Z+e|0;f=d>>>0>>0?f+1|0:f;qa=G[c+32>>2];g=M(qa,19);J=g>>31;m=G[b+32>>2];B=m>>31;k=we(g,J,m,B);e=k+d|0;d=Z+f|0;d=e>>>0>>0?d+1|0:d;ua=G[c+36>>2];k=M(ua,19);F=k>>31;S=G[b+28>>2];Y=S<<1;ha=Y>>31;c=we(k,F,Y,ha);b=c+e|0;d=Z+d|0;h=b;c=b>>>0>>0?d+1|0:d;b=we(p,y,s,C);d=Z;ia=K>>31;e=we(r,v,K,ia);b=e+b|0;f=Z+d|0;f=b>>>0>>0?f+1|0:f;ja=N>>31;d=we(x,H,N,ja);b=d+b|0;e=Z+f|0;e=b>>>0>>0?e+1|0:e;f=we(l,z,E,L);b=f+b|0;d=Z+e|0;d=b>>>0>>0?d+1|0:d;ka=P>>31;e=we(I,V,P,ka);b=e+b|0;d=Z+d|0;d=b>>>0>>0?d+1|0:d;e=we(q,A,O,da);b=e+b|0;d=Z+d|0;d=b>>>0>>0?d+1|0:d;j=M(j,19);_=j>>31;la=R>>31;e=we(j,_,R,la);b=e+b|0;f=Z+d|0;f=b>>>0>>0?f+1|0:f;d=we(m,B,o,Q);b=d+b|0;e=Z+f|0;e=b>>>0>>0?e+1|0:e;ma=S>>31;f=we(g,J,S,ma);b=f+b|0;d=Z+e|0;d=b>>>0>>0?d+1|0:d;e=we(k,F,t,w);b=e+b|0;d=Z+d|0;va=b;T=b>>>0>>0?d+1|0:d;b=we(s,C,U,ca);d=Z;e=we(r,v,p,y);b=e+b|0;d=Z+d|0;d=b>>>0>>0?d+1|0:d;e=we(l,z,x,H);b=e+b|0;f=Z+d|0;f=b>>>0>>0?f+1|0:f;d=we(E,L,W,ea);b=d+b|0;e=Z+f|0;e=b>>>0>>0?e+1|0:e;f=we(q,A,I,V);b=f+b|0;d=Z+e|0;d=b>>>0>>0?d+1|0:d;$=M(O,19);na=$>>31;e=we($,na,X,ga);b=e+b|0;d=Z+d|0;d=b>>>0>>0?d+1|0:d;e=we(m,B,j,_);b=e+b|0;d=Z+d|0;d=b>>>0>>0?d+1|0:d;e=we(o,Q,Y,ha);b=e+b|0;f=Z+d|0;f=b>>>0>>0?f+1|0:f;d=we(g,J,t,w);b=d+b|0;e=Z+f|0;e=b>>>0>>0?e+1|0:e;f=we(k,F,D,ba);b=f+b|0;d=Z+e|0;ya=b;d=b>>>0>>0?d+1|0:d;za=d;b=b+33554432|0;d=b>>>0<33554432?d+1|0:d;Aa=b;Ba=d;f=(d&67108863)<<6|b>>>26;b=f+va|0;d=(d>>26)+T|0;va=b;d=b>>>0>>0?d+1|0:d;b=b+16777216|0;f=b>>>0<16777216?d+1|0:d;Ca=b;e=f>>25;f=(f&33554431)<<7|b>>>25;b=f+h|0;d=c+e|0;d=b>>>0>>0?d+1|0:d;e=b;c=e+33554432|0;d=c>>>0<33554432?d+1|0:d;aa=c;b=d;G[a+24>>2]=e-(c&-67108864);c=we(s,C,W,ea);d=Z;e=we(r,v,l,z);c=e+c|0;f=Z+d|0;f=c>>>0>>0?f+1|0:f;d=c;c=we(q,A,x,H);e=d+c|0;d=Z+f|0;d=c>>>0>e>>>0?d+1|0:d;c=M(E,19);oa=c>>31;f=we(c,oa,X,ga);e=f+e|0;d=Z+d|0;d=e>>>0>>0?d+1|0:d;T=M(I,19);ra=T>>31;h=we(m,B,T,ra);f=h+e|0;e=Z+d|0;e=f>>>0>>0?e+1|0:e;h=we(Y,ha,$,na);f=h+f|0;d=Z+e|0;d=f>>>0>>0?d+1|0:d;h=we(t,w,j,_);e=h+f|0;f=Z+d|0;f=e>>>0>>0?f+1|0:f;h=we(o,Q,D,ba);e=h+e|0;d=Z+f|0;d=e>>>0>>0?d+1|0:d;f=we(g,J,p,y);e=f+e|0;d=Z+d|0;d=e>>>0>>0?d+1|0:d;h=we(k,F,U,ca);f=h+e|0;e=Z+d|0;n=f;wa=f>>>0>>0?e+1|0:e;d=we(q,A,s,C);e=Z;h=we(r,v,P,ka);f=h+d|0;d=Z+e|0;d=f>>>0>>0?d+1|0:d;e=M(x,19);h=e;sa=e>>31;i=we(e,sa,R,la);e=i+f|0;f=Z+d|0;f=e>>>0>>0?f+1|0:f;i=we(m,B,c,oa);e=i+e|0;d=Z+f|0;d=e>>>0>>0?d+1|0:d;f=we(T,ra,S,ma);e=f+e|0;d=Z+d|0;d=e>>>0>>0?d+1|0:d;i=we(t,w,$,na);f=i+e|0;e=Z+d|0;e=f>>>0>>0?e+1|0:e;i=we(j,_,K,ia);f=i+f|0;d=Z+e|0;d=f>>>0>>0?d+1|0:d;i=we(p,y,o,Q);e=i+f|0;f=Z+d|0;f=e>>>0>>0?f+1|0:f;i=we(g,J,N,ja);e=i+e|0;d=Z+f|0;d=e>>>0>>0?d+1|0:d;f=we(k,F,l,z);e=f+e|0;d=Z+d|0;xa=e;i=e>>>0>>0?d+1|0:d;d=M(s,19);d=we(d,d>>31,X,ga);e=Z;f=we(r,v,q,A);d=f+d|0;e=Z+e|0;e=d>>>0>>0?e+1|0:e;h=we(m,B,h,sa);f=h+d|0;d=Z+e|0;e=we(c,oa,Y,ha);c=e+f|0;f=Z+(f>>>0>>0?d+1|0:d)|0;f=c>>>0>>0?f+1|0:f;e=we(t,w,T,ra);c=e+c|0;d=Z+f|0;d=c>>>0>>0?d+1|0:d;e=we(D,ba,$,na);c=e+c|0;d=Z+d|0;d=c>>>0>>0?d+1|0:d;f=we(p,y,j,_);c=f+c|0;e=Z+d|0;e=c>>>0>>0?e+1|0:e;f=we(o,Q,U,ca);c=f+c|0;d=Z+e|0;d=c>>>0>>0?d+1|0:d;e=we(g,J,l,z);c=e+c|0;f=Z+d|0;f=c>>>0>>0?f+1|0:f;e=we(k,F,W,ea);c=e+c|0;d=Z+f|0;h=c;d=c>>>0>>0?d+1|0:d;oa=d;c=c+33554432|0;d=c>>>0<33554432?d+1|0:d;sa=c;Da=d;f=d>>26;d=(d&67108863)<<6|c>>>26;c=d+xa|0;e=f+i|0;i=c;d=c>>>0>>0?e+1|0:e;c=c+16777216|0;d=c>>>0<16777216?d+1|0:d;xa=c;e=(d&33554431)<<7|c>>>25;c=e+n|0;d=(d>>25)+wa|0;d=c>>>0>>0?d+1|0:d;f=c;e=f+33554432|0;d=e>>>0<33554432?d+1|0:d;wa=e;c=d;G[a+8>>2]=f-(e&-67108864);d=we(t,w,s,C);f=Z;n=we(r,v,S,ma);e=n+d|0;d=Z+f|0;d=e>>>0>>0?d+1|0:d;f=we(x,H,K,ia);e=f+e|0;d=Z+d|0;d=e>>>0>>0?d+1|0:d;f=we(p,y,E,L);e=f+e|0;d=Z+d|0;d=e>>>0>>0?d+1|0:d;n=we(I,V,N,ja);e=n+e|0;f=Z+d|0;f=e>>>0>>0?f+1|0:f;n=we(l,z,O,da);d=n+e|0;e=Z+f|0;e=d>>>0>>0?e+1|0:e;n=we(P,ka,ta,pa);f=n+d|0;d=Z+e|0;d=f>>>0>>0?d+1|0:d;e=f;n=fa>>31;f=we(q,A,fa,n);e=e+f|0;d=Z+d|0;d=e>>>0>>0?d+1|0:d;f=we(g,J,R,la);e=f+e|0;d=Z+d|0;d=e>>>0>>0?d+1|0:d;u=we(k,F,m,B);e=u+e|0;f=Z+d|0;d=b>>26;aa=(b&67108863)<<6|aa>>>26;b=aa+e|0;e=d+(e>>>0>>0?f+1|0:f)|0;f=b;d=f>>>0>>0?e+1|0:e;e=f+16777216|0;d=e>>>0<16777216?d+1|0:d;aa=e;b=d;G[a+28>>2]=f-(e&-33554432);d=we(l,z,s,C);e=Z;u=we(r,v,N,ja);d=u+d|0;f=Z+e|0;f=d>>>0>>0?f+1|0:f;u=we(x,H,P,ka);d=u+d|0;e=Z+f|0;e=d>>>0>>0?e+1|0:e;u=we(q,A,E,L);f=u+d|0;d=Z+e|0;d=f>>>0>>0?d+1|0:d;e=f;f=we(T,ra,R,la);e=e+f|0;d=Z+d|0;d=e>>>0>>0?d+1|0:d;f=we(m,B,$,na);e=f+e|0;d=Z+d|0;d=e>>>0>>0?d+1|0:d;j=we(j,_,S,ma);e=j+e|0;f=Z+d|0;o=we(t,w,o,Q);d=o+e|0;e=Z+(e>>>0>>0?f+1|0:f)|0;g=we(g,J,K,ia);f=g+d|0;d=Z+(d>>>0>>0?e+1|0:e)|0;d=f>>>0>>0?d+1|0:d;e=f;f=we(k,F,p,y);e=e+f|0;d=Z+d|0;d=e>>>0>>0?d+1|0:d;g=e;e=c>>26;f=(c&67108863)<<6|wa>>>26;c=g+f|0;d=d+e|0;g=c;d=c>>>0>>0?d+1|0:d;e=c+16777216|0;f=e>>>0<16777216?d+1|0:d;o=e;c=f;G[a+12>>2]=g-(e&-33554432);d=we(s,C,Y,ha);f=Z;g=we(r,v,m,B);e=g+d|0;d=Z+f|0;d=e>>>0>>0?d+1|0:d;f=we(t,w,x,H);e=f+e|0;d=Z+d|0;d=e>>>0>>0?d+1|0:d;g=we(E,L,D,ba);e=g+e|0;f=Z+d|0;f=e>>>0>>0?f+1|0:f;g=we(p,y,I,V);d=g+e|0;e=Z+f|0;e=d>>>0>>0?e+1|0:e;g=we(U,ca,O,da);f=g+d|0;d=Z+e|0;d=f>>>0>>0?d+1|0:d;e=f;f=we(l,z,ta,pa);e=e+f|0;d=Z+d|0;d=e>>>0>>0?d+1|0:d;f=we(fa,n,W,ea);e=f+e|0;d=Z+d|0;d=e>>>0>>0?d+1|0:d;g=qa;j=g>>31;D=we(q,A,g,j);e=D+e|0;f=Z+d|0;k=we(k,F,X,ga);d=k+e|0;e=Z+(e>>>0>>0?f+1|0:f)|0;e=d>>>0>>0?e+1|0:e;qa=d;d=b>>25;f=(b&33554431)<<7|aa>>>25;b=qa+f|0;d=d+e|0;d=b>>>0>>0?d+1|0:d;f=b;e=f+33554432|0;d=e>>>0<33554432?d+1|0:d;k=e;b=d;G[a+32>>2]=f-(e&-67108864);f=va-(Ca&-33554432)|0;e=c>>25;o=(c&33554431)<<7|o>>>25;d=Aa&-67108864;c=o+(ya-d|0)|0;d=e+(za-((d>>>0>ya>>>0)+Ba|0)|0)|0;d=c>>>0>>0?d+1|0:d;e=c;c=e+33554432|0;d=c>>>0<33554432?d+1|0:d;d=((d&67108863)<<6|c>>>26)+f|0;G[a+20>>2]=d;G[a+16>>2]=e-(c&-67108864);c=we(m,B,s,C);d=Z;e=we(r,v,R,la);c=e+c|0;d=Z+d|0;d=c>>>0>>0?d+1|0:d;f=we(x,H,S,ma);c=f+c|0;e=Z+d|0;e=c>>>0>>0?e+1|0:e;d=we(t,w,E,L);c=d+c|0;f=Z+e|0;f=c>>>0>>0?f+1|0:f;e=we(I,V,K,ia);c=e+c|0;d=Z+f|0;d=c>>>0>>0?d+1|0:d;e=we(p,y,O,da);c=e+c|0;d=Z+d|0;d=c>>>0>>0?d+1|0:d;e=we(N,ja,ta,pa);c=e+c|0;d=Z+d|0;d=c>>>0>>0?d+1|0:d;f=we(l,z,fa,n);c=f+c|0;e=Z+d|0;e=c>>>0>>0?e+1|0:e;d=we(g,j,P,ka);c=d+c|0;f=Z+e|0;f=c>>>0>>0?f+1|0:f;e=we(q,A,ua,ua>>31);c=e+c|0;d=Z+f|0;d=c>>>0>>0?d+1|0:d;e=b>>26;f=c;c=(b&67108863)<<6|k>>>26;b=f+c|0;d=d+e|0;d=b>>>0>>0?d+1|0:d;c=b;b=c+16777216|0;d=b>>>0<16777216?d+1|0:d;G[a+36>>2]=c-(b&-33554432);f=i-(xa&-33554432)|0;c=sa&-67108864;e=h-c|0;r=oa-((c>>>0>h>>>0)+Da|0)|0;c=d;d=d>>25;c=we((c&33554431)<<7|b>>>25,d,19,0);b=c+e|0;e=Z+r|0;d=b>>>0>>0?e+1|0:e;c=b;b=c+33554432|0;d=b>>>0<33554432?d+1|0:d;d=((d&67108863)<<6|b>>>26)+f|0;G[a+4>>2]=d;G[a>>2]=c-(b&-67108864)}function Va(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,H=0,I=0,J=0,K=0,L=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ja=0,ka=0,la=0;y=Y-48|0;Y=y;ia(a,b);ia(a+80|0,b+40|0);C=G[b+92>>2];o=C<<1;I=o>>31;f=G[b+84>>2];i=f<<1;E=i>>31;c=we(o,I,i,E);e=Z;r=G[b+88>>2];J=r;t=r>>31;m=we(r,t,r,t);d=m+c|0;c=Z+e|0;c=d>>>0>>0?c+1|0:c;g=G[b+96>>2];K=g>>31;l=G[b+80>>2];m=l<<1;F=m>>31;e=we(g,K,m,F);d=e+d|0;c=Z+c|0;c=d>>>0>>0?c+1|0:c;B=G[b+108>>2];n=M(B,38);S=n>>31;aa=B>>31;e=we(n,S,B,aa);d=e+d|0;c=Z+c|0;c=d>>>0>>0?c+1|0:c;e=d;z=G[b+112>>2];h=M(z,19);L=h>>31;u=G[b+104>>2];d=u<<1;k=we(h,L,d,d>>31);e=e+k|0;d=Z+c|0;d=e>>>0>>0?d+1|0:d;T=G[b+116>>2];k=M(T,38);H=k>>31;x=G[b+100>>2];v=x<<1;P=v>>31;c=we(k,H,v,P);e=c+e|0;d=Z+d|0;c=(c>>>0>e>>>0?d+1|0:d)<<1|e>>>31;U=c;ba=e<<1;e=ba+33554432|0;c=e>>>0<33554432?c+1|0:c;V=e;W=c;j=(c&67108863)<<6|e>>>26;w=c>>26;c=we(i,E,g,K);e=Z;r=r<<1;Q=r>>31;ca=C>>31;A=we(r,Q,C,ca);d=A+c|0;c=Z+e|0;c=d>>>0>>0?c+1|0:c;X=x>>31;A=we(x,X,m,F);e=A+d|0;d=Z+c|0;d=e>>>0>>0?d+1|0:d;A=B<<1;da=A>>31;N=we(h,L,A,da);e=N+e|0;c=Z+d|0;c=e>>>0>>0?c+1|0:c;O=u>>31;d=we(k,H,u,O);e=d+e|0;c=Z+c|0;d=(d>>>0>e>>>0?c+1|0:c)<<1|e>>>31;c=e<<1;e=c+j|0;d=d+w|0;N=e;d=c>>>0>e>>>0?d+1|0:d;c=d;e=e+16777216|0;c=e>>>0<16777216?c+1|0:c;_=e;j=(c&33554431)<<7|e>>>25;w=c>>25;c=we(o,I,C,ca);e=Z;s=we(g,K,r,Q);d=s+c|0;c=Z+e|0;c=d>>>0>>0?c+1|0:c;e=we(i,E,v,P);d=e+d|0;c=Z+c|0;c=d>>>0>>0?c+1|0:c;s=we(m,F,u,O);e=s+d|0;d=Z+c|0;d=e>>>0>>0?d+1|0:d;$=z>>31;s=we(h,L,z,$);e=s+e|0;c=Z+d|0;c=e>>>0>>0?c+1|0:c;s=we(k,H,A,da);e=s+e|0;d=Z+c|0;d=(e>>>0>>0?d+1|0:d)<<1|e>>>31;c=j;j=e<<1;e=c+j|0;c=d+w|0;c=e>>>0>>0?c+1|0:c;w=e;d=e+33554432|0;c=d>>>0<33554432?c+1|0:c;s=d;e=c;G[a+144>>2]=w-(d&-67108864);c=M(x,38);w=we(c,c>>31,x,X);j=Z;c=l;d=c>>31;l=we(c,d,c,d);c=l+w|0;d=Z+j|0;d=c>>>0>>0?d+1|0:d;l=M(u,19);ea=l>>31;w=g<<1;fa=w>>31;D=we(l,ea,w,fa);j=D+c|0;c=Z+d|0;c=j>>>0>>0?c+1|0:c;d=j;j=we(o,I,n,S);d=d+j|0;c=Z+c|0;c=d>>>0>>0?c+1|0:c;D=we(h,L,r,Q);j=D+d|0;d=Z+c|0;d=j>>>0>>0?d+1|0:d;D=we(i,E,k,H);j=D+j|0;c=Z+d|0;c=(j>>>0>>0?c+1|0:c)<<1|j>>>31;D=c;ga=j<<1;j=ga+33554432|0;d=j>>>0<33554432?c+1|0:c;ka=d;R=(d&67108863)<<6|j>>>26;ha=d>>26;c=we(l,ea,v,P);p=Z;q=f;ja=f>>31;f=we(m,F,f,ja);d=f+c|0;c=Z+p|0;c=d>>>0>>0?c+1|0:c;p=we(g,K,n,S);f=p+d|0;d=Z+c|0;d=f>>>0

>>0?d+1|0:d;p=we(h,L,o,I);f=p+f|0;c=Z+d|0;c=f>>>0

>>0?c+1|0:c;p=we(k,H,J,t);f=p+f|0;d=Z+c|0;d=(f>>>0

>>0?d+1|0:d)<<1|f>>>31;c=R;R=f<<1;f=c+R|0;c=d+ha|0;c=f>>>0>>0?c+1|0:c;ha=f;f=f+16777216|0;c=f>>>0<16777216?c+1|0:c;R=f;la=(c&33554431)<<7|f>>>25;p=c>>25;c=we(m,F,J,t);f=Z;q=we(i,E,q,ja);d=q+c|0;c=Z+f|0;l=we(l,ea,u,O);f=l+d|0;d=Z+(d>>>0>>0?c+1|0:c)|0;d=f>>>0>>0?d+1|0:d;l=we(v,P,n,S);f=l+f|0;c=Z+d|0;c=f>>>0>>0?c+1|0:c;d=f;f=we(h,L,w,fa);d=d+f|0;c=Z+c|0;c=d>>>0>>0?c+1|0:c;l=we(k,H,o,I);f=l+d|0;d=Z+c|0;c=(f>>>0>>0?d+1|0:d)<<1|f>>>31;d=f<<1;f=d+la|0;c=c+p|0;q=f;c=d>>>0>f>>>0?c+1|0:c;l=f+33554432|0;f=l>>>0<33554432?c+1|0:c;G[a+128>>2]=q-(l&-67108864);c=we(r,Q,x,X);d=Z;q=we(g,K,o,I);c=q+c|0;d=Z+d|0;d=c>>>0>>0?d+1|0:d;p=we(i,E,u,O);q=p+c|0;c=Z+d|0;c=q>>>0

>>0?c+1|0:c;p=we(m,F,B,aa);q=p+q|0;d=Z+c|0;d=q>>>0

>>0?d+1|0:d;p=we(k,H,z,$);q=p+q|0;c=Z+d|0;d=e>>26;s=(e&67108863)<<6|s>>>26;e=s+(q<<1)|0;c=d+((q>>>0

>>0?c+1|0:c)<<1|q>>>31)|0;c=e>>>0>>0?c+1|0:c;s=e;d=c;c=e+16777216|0;d=c>>>0<16777216?d+1|0:d;q=c;e=d;G[a+148>>2]=s-(c&-33554432);c=we(m,F,C,ca);C=Z;t=we(i,E,J,t);d=t+c|0;c=Z+C|0;c=d>>>0>>0?c+1|0:c;n=we(u,O,n,S);d=n+d|0;c=Z+c|0;c=d>>>0>>0?c+1|0:c;n=we(h,L,v,P);h=n+d|0;d=Z+c|0;d=h>>>0>>0?d+1|0:d;c=h;h=we(k,H,g,K);c=c+h|0;d=Z+d|0;d=(c>>>0>>0?d+1|0:d)<<1;h=c;c=d|c>>>31;d=f>>26;s=h<<1;h=(f&67108863)<<6|l>>>26;f=s+h|0;c=c+d|0;c=f>>>0>>0?c+1|0:c;h=f;d=f+16777216|0;c=d>>>0<16777216?c+1|0:c;n=d;f=c;G[a+132>>2]=h-(d&-33554432);c=we(u,O,r,Q);h=Z;g=we(g,K,g,K);d=g+c|0;c=Z+h|0;c=d>>>0>>0?c+1|0:c;g=we(o,I,v,P);d=g+d|0;c=Z+c|0;c=d>>>0>>0?c+1|0:c;g=we(i,E,A,da);d=g+d|0;c=Z+c|0;c=d>>>0>>0?c+1|0:c;h=we(m,F,z,$);g=h+d|0;d=Z+c|0;d=g>>>0>>0?d+1|0:d;c=g;g=k;k=T;v=k>>31;g=we(g,H,k,v);c=c+g|0;d=Z+d|0;d=(c>>>0>>0?d+1|0:d)<<1;g=c;c=d|c>>>31;d=e>>25;h=g<<1;g=(e&33554431)<<7|q>>>25;e=h+g|0;c=c+d|0;c=e>>>0>>0?c+1|0:c;g=e;d=e+33554432|0;c=d>>>0<33554432?c+1|0:c;h=d;e=c;G[a+152>>2]=g-(d&-67108864);t=N-(_&-33554432)|0;c=V&-67108864;d=ba-c|0;g=U-((c>>>0>ba>>>0)+W|0)|0;c=f>>25;n=(f&33554431)<<7|n>>>25;f=n+d|0;d=c+g|0;g=f;d=f>>>0>>0?d+1|0:d;c=d;f=f+33554432|0;c=f>>>0<33554432?c+1|0:c;c=((c&67108863)<<6|f>>>26)+t|0;G[a+140>>2]=c;G[a+136>>2]=g-(f&-67108864);c=we(o,I,u,O);d=Z;f=we(x,X,w,fa);c=f+c|0;d=Z+d|0;d=c>>>0>>0?d+1|0:d;o=we(r,Q,B,aa);f=o+c|0;c=Z+d|0;c=f>>>0>>0?c+1|0:c;i=we(i,E,z,$);f=i+f|0;d=Z+c|0;d=f>>>0>>0?d+1|0:d;i=we(m,F,k,v);f=i+f|0;c=Z+d|0;c=(f>>>0>>0?c+1|0:c)<<1|f>>>31;d=e>>26;g=f<<1;f=(e&67108863)<<6|h>>>26;e=g+f|0;c=c+d|0;d=e>>>0>>0?c+1|0:c;c=e+16777216|0;d=c>>>0<16777216?d+1|0:d;G[a+156>>2]=e-(c&-33554432);f=ha-(R&-33554432)|0;e=j&-67108864;i=ga-e|0;m=D-((e>>>0>ga>>>0)+ka|0)|0;e=we((d&33554431)<<7|c>>>25,d>>25,19,0);c=e+i|0;d=Z+m|0;d=c>>>0>>0?d+1|0:d;e=c;c=c+33554432|0;d=c>>>0<33554432?d+1|0:d;d=((d&67108863)<<6|c>>>26)+f|0;G[a+124>>2]=d;G[a+120>>2]=e-(c&-67108864);c=G[b+44>>2];d=G[b+48>>2];e=G[b+52>>2];f=G[b+56>>2];i=G[b+60>>2];m=G[b- -64>>2];k=G[b+68>>2];o=G[b+72>>2];g=G[b+40>>2];h=G[b>>2];u=G[b+4>>2];v=G[b+8>>2];r=G[b+12>>2];n=G[b+16>>2];t=G[b+20>>2];x=G[b+24>>2];z=G[b+28>>2];J=G[b+32>>2];G[a+76>>2]=G[b+76>>2]+G[b+36>>2];G[a+72>>2]=o+J;G[a+68>>2]=k+z;J=a- -64|0;G[J>>2]=m+x;G[a+60>>2]=i+t;G[a+56>>2]=f+n;G[a+52>>2]=e+r;G[a+48>>2]=d+v;G[a+44>>2]=c+u;G[a+40>>2]=g+h;ia(y,a+40|0);b=G[a+84>>2];c=G[a+88>>2];d=G[a+92>>2];e=G[a+96>>2];f=G[a+100>>2];i=G[a+104>>2];m=G[a+108>>2];k=G[a+112>>2];o=G[a>>2];g=G[a+80>>2];h=G[a+4>>2];u=G[a+8>>2];v=G[a+12>>2];r=G[a+16>>2];n=G[a+20>>2];t=G[a+24>>2];x=G[a+28>>2];z=G[a+32>>2];B=G[a+116>>2];C=G[a+36>>2];A=B-C|0;G[a+116>>2]=A;l=k-z|0;G[a+112>>2]=l;w=m-x|0;G[a+108>>2]=w;j=i-t|0;G[a+104>>2]=j;T=f-n|0;G[a+100>>2]=T;U=e-r|0;G[a+96>>2]=U;V=d-v|0;G[a+92>>2]=V;W=c-u|0;G[a+88>>2]=W;N=b-h|0;G[a+84>>2]=N;_=g-o|0;G[a+80>>2]=_;B=B+C|0;G[a+76>>2]=B;k=k+z|0;G[a+72>>2]=k;m=m+x|0;G[a+68>>2]=m;i=i+t|0;G[J>>2]=i;f=f+n|0;G[a+60>>2]=f;e=e+r|0;G[a+56>>2]=e;d=d+v|0;G[a+52>>2]=d;c=c+u|0;G[a+48>>2]=c;b=b+h|0;G[a+44>>2]=b;o=g+o|0;G[a+40>>2]=o;g=G[y>>2];h=G[y+4>>2];u=G[y+8>>2];v=G[y+12>>2];r=G[y+16>>2];n=G[y+20>>2];t=G[y+24>>2];x=G[y+28>>2];z=G[y+32>>2];G[a+36>>2]=G[y+36>>2]-B;G[a+32>>2]=z-k;G[a+28>>2]=x-m;G[a+24>>2]=t-i;G[a+20>>2]=n-f;G[a+16>>2]=r-e;G[a+12>>2]=v-d;G[a+8>>2]=u-c;G[a+4>>2]=h-b;G[a>>2]=g-o;b=G[a+124>>2];c=G[a+128>>2];d=G[a+132>>2];e=G[a+136>>2];f=G[a+140>>2];i=G[a+144>>2];m=G[a+148>>2];k=G[a+152>>2];o=G[a+120>>2];G[a+156>>2]=G[a+156>>2]-A;G[a+152>>2]=k-l;G[a+148>>2]=m-w;G[a+144>>2]=i-j;G[a+140>>2]=f-T;G[a+136>>2]=e-U;G[a+132>>2]=d-V;G[a+128>>2]=c-W;G[a+124>>2]=b-N;G[a+120>>2]=o-_;Y=y+48|0}function Da(a,b,c,d,e,f,g,h){var i=0,j=0,k=0,l=0,m=0;i=Y-432|0;Y=i;j=i- -64|0;G[j>>2]=0;G[j+4>>2]=0;G[i+72>>2]=0;G[i+76>>2]=0;G[i+80>>2]=0;G[i+84>>2]=0;G[i+88>>2]=0;G[i+92>>2]=0;G[i+96>>2]=0;G[i+100>>2]=0;G[i+104>>2]=0;G[i+108>>2]=0;G[i+48>>2]=0;G[i+52>>2]=0;G[i+56>>2]=0;G[i+60>>2]=0;E[i+15|0]=1;j=c?c:1792;d=c?d:32;a:{if(d>>>0>=65){c=i+224|0;G[c+80>>2]=1779033703;G[c+84>>2]=-1150833019;G[c+72>>2]=0;G[c+76>>2]=0;G[c+64>>2]=0;G[c+104>>2]=528734635;G[c+108>>2]=1541459225;G[c+96>>2]=1359893119;G[c+100>>2]=-1694144372;G[c+88>>2]=1013904242;G[c+92>>2]=-1521486534;ua(c,j,d);Ea(c,i+48|0);break a}ma(i+48|0,j,d)}c=G[i+108>>2];G[i+280>>2]=G[i+104>>2];G[i+284>>2]=c;c=G[i+100>>2];G[i+272>>2]=G[i+96>>2];G[i+276>>2]=c;c=G[i+92>>2];G[i+264>>2]=G[i+88>>2];G[i+268>>2]=c;c=G[i+84>>2];G[i+256>>2]=G[i+80>>2];G[i+260>>2]=c;c=G[i+76>>2];G[i+248>>2]=G[i+72>>2];G[i+252>>2]=c;c=i- -64|0;d=G[c+4>>2];G[i+240>>2]=G[c>>2];G[i+244>>2]=d;c=G[i+60>>2];G[i+232>>2]=G[i+56>>2];G[i+236>>2]=c;c=G[i+52>>2];G[i+224>>2]=G[i+48>>2];G[i+228>>2]=c;c=0;while(1){d=i+224|0;j=d+c|0;E[j|0]=H[j|0]^54;j=d+(c|1)|0;E[j|0]=H[j|0]^54;j=d+(c|2)|0;E[j|0]=H[j|0]^54;j=d+(c|3)|0;E[j|0]=H[j|0]^54;c=c+4|0;if((c|0)!=64){continue}break}c=i+112|0;G[c+80>>2]=1779033703;G[c+84>>2]=-1150833019;G[c+72>>2]=0;G[c+76>>2]=0;G[c+64>>2]=0;G[c+104>>2]=528734635;G[c+108>>2]=1541459225;G[c+96>>2]=1359893119;G[c+100>>2]=-1694144372;G[c+88>>2]=1013904242;G[c+92>>2]=-1521486534;ua(c,d,64);la(d,64);ua(c,a,b);a=G[i+108>>2];G[i+392>>2]=G[i+104>>2];G[i+396>>2]=a;a=G[i+100>>2];G[i+384>>2]=G[i+96>>2];G[i+388>>2]=a;a=G[i+92>>2];G[i+376>>2]=G[i+88>>2];G[i+380>>2]=a;a=G[i+84>>2];G[i+368>>2]=G[i+80>>2];G[i+372>>2]=a;a=G[i+76>>2];G[i+360>>2]=G[i+72>>2];G[i+364>>2]=a;a=i- -64|0;b=G[a+4>>2];G[i+352>>2]=G[a>>2];G[i+356>>2]=b;a=G[i+60>>2];G[i+344>>2]=G[i+56>>2];G[i+348>>2]=a;a=G[i+52>>2];G[i+336>>2]=G[i+48>>2];G[i+340>>2]=a;c=0;while(1){b=i+336|0;a=b+c|0;E[a|0]=H[a|0]^92;a=b+(c|1)|0;E[a|0]=H[a|0]^92;a=b+(c|2)|0;E[a|0]=H[a|0]^92;a=b+(c|3)|0;E[a|0]=H[a|0]^92;c=c+4|0;if((c|0)!=64){continue}break}Ea(i+112|0,i+400|0);a=i+224|0;G[a+80>>2]=1779033703;G[a+84>>2]=-1150833019;G[a+72>>2]=0;G[a+76>>2]=0;G[a+64>>2]=0;G[a+104>>2]=528734635;G[a+108>>2]=1541459225;G[a+96>>2]=1359893119;G[a+100>>2]=-1694144372;G[a+88>>2]=1013904242;G[a+92>>2]=-1521486534;ua(a,b,96);Ea(a,i+16|0);la(a,112);la(b,96);G[i+80>>2]=0;G[i+84>>2]=0;G[i+88>>2]=0;G[i+92>>2]=0;G[i+96>>2]=0;G[i+100>>2]=0;G[i+104>>2]=0;G[i+108>>2]=0;j=G[i+44>>2];a=G[i+40>>2];G[i+72>>2]=a;G[i+76>>2]=j;k=G[i+36>>2];b=G[i+32>>2];c=i- -64|0;G[c>>2]=b;G[c+4>>2]=k;l=G[i+20>>2];c=G[i+16>>2];G[i+48>>2]=c;G[i+52>>2]=l;m=G[i+28>>2];d=G[i+24>>2];G[i+56>>2]=d;G[i+60>>2]=m;G[i+280>>2]=0;G[i+284>>2]=0;G[i+272>>2]=0;G[i+276>>2]=0;G[i+264>>2]=0;G[i+268>>2]=0;G[i+256>>2]=0;G[i+260>>2]=0;G[i+248>>2]=a;G[i+252>>2]=j;G[i+240>>2]=b;G[i+244>>2]=k;G[i+232>>2]=d;G[i+236>>2]=m;G[i+224>>2]=c;G[i+228>>2]=l;c=0;while(1){b=i+224|0;a=b+c|0;E[a|0]=H[a|0]^54;a=b+(c|1)|0;E[a|0]=H[a|0]^54;a=b+(c|2)|0;E[a|0]=H[a|0]^54;a=b+(c|3)|0;E[a|0]=H[a|0]^54;c=c+4|0;if((c|0)!=64){continue}break}a=i+112|0;G[a+80>>2]=1779033703;G[a+84>>2]=-1150833019;G[a+72>>2]=0;G[a+76>>2]=0;G[a+64>>2]=0;G[a+104>>2]=528734635;G[a+108>>2]=1541459225;G[a+96>>2]=1359893119;G[a+100>>2]=-1694144372;G[a+88>>2]=1013904242;G[a+92>>2]=-1521486534;ua(a,b,64);la(b,64);ua(a,e,f);ua(a,i+15|0,1);a=G[i+108>>2];G[i+392>>2]=G[i+104>>2];G[i+396>>2]=a;a=G[i+100>>2];G[i+384>>2]=G[i+96>>2];G[i+388>>2]=a;a=G[i+92>>2];G[i+376>>2]=G[i+88>>2];G[i+380>>2]=a;a=G[i+84>>2];G[i+368>>2]=G[i+80>>2];G[i+372>>2]=a;a=G[i+76>>2];G[i+360>>2]=G[i+72>>2];G[i+364>>2]=a;a=i- -64|0;b=G[a+4>>2];G[i+352>>2]=G[a>>2];G[i+356>>2]=b;a=G[i+60>>2];G[i+344>>2]=G[i+56>>2];G[i+348>>2]=a;a=G[i+52>>2];G[i+336>>2]=G[i+48>>2];G[i+340>>2]=a;c=0;while(1){b=i+336|0;a=b+c|0;E[a|0]=H[a|0]^92;a=b+(c|1)|0;E[a|0]=H[a|0]^92;a=b+(c|2)|0;E[a|0]=H[a|0]^92;a=b+(c|3)|0;E[a|0]=H[a|0]^92;c=c+4|0;if((c|0)!=64){continue}break}j=i+400|0;Ea(i+112|0,j);a=i+224|0;G[a+80>>2]=1779033703;G[a+84>>2]=-1150833019;G[a+72>>2]=0;G[a+76>>2]=0;G[a+64>>2]=0;G[a+104>>2]=528734635;G[a+108>>2]=1541459225;G[a+96>>2]=1359893119;G[a+100>>2]=-1694144372;G[a+88>>2]=1013904242;G[a+92>>2]=-1521486534;ua(a,b,96);Ea(a,i+16|0);la(a,112);la(b,96);if(h>>>0>=33){while(1){a=G[i+20>>2];b=G[i+16>>2];E[g|0]=b;E[g+1|0]=b>>>8;E[g+2|0]=b>>>16;E[g+3|0]=b>>>24;E[g+4|0]=a;E[g+5|0]=a>>>8;E[g+6|0]=a>>>16;E[g+7|0]=a>>>24;a=G[i+28>>2];b=G[i+24>>2];E[g+8|0]=b;E[g+9|0]=b>>>8;E[g+10|0]=b>>>16;E[g+11|0]=b>>>24;E[g+12|0]=a;E[g+13|0]=a>>>8;E[g+14|0]=a>>>16;E[g+15|0]=a>>>24;a=G[i+44>>2];b=G[i+40>>2];E[g+24|0]=b;E[g+25|0]=b>>>8;E[g+26|0]=b>>>16;E[g+27|0]=b>>>24;E[g+28|0]=a;E[g+29|0]=a>>>8;E[g+30|0]=a>>>16;E[g+31|0]=a>>>24;a=G[i+36>>2];b=G[i+32>>2];E[g+16|0]=b;E[g+17|0]=b>>>8;E[g+18|0]=b>>>16;E[g+19|0]=b>>>24;E[g+20|0]=a;E[g+21|0]=a>>>8;E[g+22|0]=a>>>16;E[g+23|0]=a>>>24;E[i+15|0]=H[i+15|0]+1;a=G[i+108>>2];G[i+280>>2]=G[i+104>>2];G[i+284>>2]=a;a=G[i+100>>2];G[i+272>>2]=G[i+96>>2];G[i+276>>2]=a;a=G[i+92>>2];G[i+264>>2]=G[i+88>>2];G[i+268>>2]=a;a=G[i+84>>2];G[i+256>>2]=G[i+80>>2];G[i+260>>2]=a;a=G[i+76>>2];G[i+248>>2]=G[i+72>>2];G[i+252>>2]=a;d=i- -64|0;a=d;b=G[a+4>>2];G[i+240>>2]=G[a>>2];G[i+244>>2]=b;a=G[i+60>>2];G[i+232>>2]=G[i+56>>2];G[i+236>>2]=a;a=G[i+52>>2];G[i+224>>2]=G[i+48>>2];G[i+228>>2]=a;g=g+32|0;c=0;while(1){b=i+224|0;a=b+c|0;E[a|0]=H[a|0]^54;a=b+(c|1)|0;E[a|0]=H[a|0]^54;a=b+(c|2)|0;E[a|0]=H[a|0]^54;a=b+(c|3)|0;E[a|0]=H[a|0]^54;c=c+4|0;if((c|0)!=64){continue}break}a=i+112|0;G[a+80>>2]=1779033703;G[a+84>>2]=-1150833019;G[a+72>>2]=0;G[a+76>>2]=0;G[a+64>>2]=0;G[a+104>>2]=528734635;G[a+108>>2]=1541459225;G[a+96>>2]=1359893119;G[a+100>>2]=-1694144372;G[a+88>>2]=1013904242;G[a+92>>2]=-1521486534;ua(a,b,64);la(b,64);ua(a,i+16|0,32);ua(a,e,f);ua(a,i+15|0,1);a=G[i+108>>2];G[i+392>>2]=G[i+104>>2];G[i+396>>2]=a;a=G[i+100>>2];G[i+384>>2]=G[i+96>>2];G[i+388>>2]=a;a=G[i+92>>2];G[i+376>>2]=G[i+88>>2];G[i+380>>2]=a;a=G[i+84>>2];G[i+368>>2]=G[i+80>>2];G[i+372>>2]=a;a=G[i+76>>2];G[i+360>>2]=G[i+72>>2];G[i+364>>2]=a;a=G[d+4>>2];G[i+352>>2]=G[d>>2];G[i+356>>2]=a;a=G[i+60>>2];G[i+344>>2]=G[i+56>>2];G[i+348>>2]=a;a=G[i+52>>2];G[i+336>>2]=G[i+48>>2];G[i+340>>2]=a;c=0;while(1){b=i+336|0;a=b+c|0;E[a|0]=H[a|0]^92;a=b+(c|1)|0;E[a|0]=H[a|0]^92;a=b+(c|2)|0;E[a|0]=H[a|0]^92;a=b+(c|3)|0;E[a|0]=H[a|0]^92;c=c+4|0;if((c|0)!=64){continue}break}Ea(i+112|0,j);a=i+224|0;G[a+80>>2]=1779033703;G[a+84>>2]=-1150833019;G[a+72>>2]=0;G[a+76>>2]=0;G[a+64>>2]=0;G[a+104>>2]=528734635;G[a+108>>2]=1541459225;G[a+96>>2]=1359893119;G[a+100>>2]=-1694144372;G[a+88>>2]=1013904242;G[a+92>>2]=-1521486534;ua(a,b,96);Ea(a,i+16|0);la(a,112);la(b,96);h=h-32|0;if(h>>>0>32){continue}break}}a=i+16|0;ma(g,a,h);la(i+112|0,112);la(i+48|0,64);la(a,32);Y=i+432|0}function hc(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=Ub(a,c);m=q+2|0;i=(m>>>0)/3|0;if(((m-M(i,3)|0)+(i<<2)|0)-2>>>0>g>>>0){G[a+3216>>2]=2;return-1}g=q+2|0;m=(g>>>0)/3|0;n=((((g-M(m,3)|0)+(m<<2)|0)-2|0)+f|0)-q|0;p=Y-16|0;Y=p;g=rb(a,c);if(!H[a+3220|0]){g=Bb(g)}a:{b:{if(g>>>0>q>>>0){G[a+3216>>2]=2;break b}m=rb(a,c);g=b;if(!H[a+3220|0]){E[n+1|0]=10;E[n|0]=3;b=n+2|0;E[b|0]=32;b=b+1|0;G[p+8>>2]=b;b=b+32|0;E[b|0]=18;b=b+1|0;E[b|0]=32;b=b+1|0;G[p+4>>2]=b;b=b+32|0;E[b|0]=26;b=b+1|0;E[b|0]=32;b=b+1|0;G[p>>2]=b;b=b+32|0;E[b|0]=34;n=b+1|0;b=m;if(b>>>0>=128){while(1){E[n|0]=b|128;n=n+1|0;i=b>>>0>16383;b=b>>>7|0;if(i){continue}break}}E[n|0]=b;G[p+12>>2]=n+1;i=H[a+3289|0]|H[a+3290|0]<<8|(H[a+3291|0]<<16|H[a+3292|0]<<24);h=G[p+8>>2];b=H[a+3285|0]|H[a+3286|0]<<8|(H[a+3287|0]<<16|H[a+3288|0]<<24);E[h|0]=b;E[h+1|0]=b>>>8;E[h+2|0]=b>>>16;E[h+3|0]=b>>>24;E[h+4|0]=i;E[h+5|0]=i>>>8;E[h+6|0]=i>>>16;E[h+7|0]=i>>>24;b=a+3309|0;i=H[b+4|0]|H[b+5|0]<<8|(H[b+6|0]<<16|H[b+7|0]<<24);b=H[b|0]|H[b+1|0]<<8|(H[b+2|0]<<16|H[b+3|0]<<24);E[h+24|0]=b;E[h+25|0]=b>>>8;E[h+26|0]=b>>>16;E[h+27|0]=b>>>24;E[h+28|0]=i;E[h+29|0]=i>>>8;E[h+30|0]=i>>>16;E[h+31|0]=i>>>24;b=a+3301|0;i=H[b+4|0]|H[b+5|0]<<8|(H[b+6|0]<<16|H[b+7|0]<<24);b=H[b|0]|H[b+1|0]<<8|(H[b+2|0]<<16|H[b+3|0]<<24);E[h+16|0]=b;E[h+17|0]=b>>>8;E[h+18|0]=b>>>16;E[h+19|0]=b>>>24;E[h+20|0]=i;E[h+21|0]=i>>>8;E[h+22|0]=i>>>16;E[h+23|0]=i>>>24;b=a+3293|0;i=H[b+4|0]|H[b+5|0]<<8|(H[b+6|0]<<16|H[b+7|0]<<24);b=H[b|0]|H[b+1|0]<<8|(H[b+2|0]<<16|H[b+3|0]<<24);E[h+8|0]=b;E[h+9|0]=b>>>8;E[h+10|0]=b>>>16;E[h+11|0]=b>>>24;E[h+12|0]=i;E[h+13|0]=i>>>8;E[h+14|0]=i>>>16;E[h+15|0]=i>>>24;i=H[a+3225|0]|H[a+3226|0]<<8|(H[a+3227|0]<<16|H[a+3228|0]<<24);h=G[p>>2];b=H[a+3221|0]|H[a+3222|0]<<8|(H[a+3223|0]<<16|H[a+3224|0]<<24);E[h|0]=b;E[h+1|0]=b>>>8;E[h+2|0]=b>>>16;E[h+3|0]=b>>>24;E[h+4|0]=i;E[h+5|0]=i>>>8;E[h+6|0]=i>>>16;E[h+7|0]=i>>>24;b=a+3229|0;i=H[b+4|0]|H[b+5|0]<<8|(H[b+6|0]<<16|H[b+7|0]<<24);b=H[b|0]|H[b+1|0]<<8|(H[b+2|0]<<16|H[b+3|0]<<24);E[h+8|0]=b;E[h+9|0]=b>>>8;E[h+10|0]=b>>>16;E[h+11|0]=b>>>24;E[h+12|0]=i;E[h+13|0]=i>>>8;E[h+14|0]=i>>>16;E[h+15|0]=i>>>24;b=a+3237|0;i=H[b+4|0]|H[b+5|0]<<8|(H[b+6|0]<<16|H[b+7|0]<<24);b=H[b|0]|H[b+1|0]<<8|(H[b+2|0]<<16|H[b+3|0]<<24);E[h+16|0]=b;E[h+17|0]=b>>>8;E[h+18|0]=b>>>16;E[h+19|0]=b>>>24;E[h+20|0]=i;E[h+21|0]=i>>>8;E[h+22|0]=i>>>16;E[h+23|0]=i>>>24;b=a+3245|0;i=H[b+4|0]|H[b+5|0]<<8|(H[b+6|0]<<16|H[b+7|0]<<24);b=H[b|0]|H[b+1|0]<<8|(H[b+2|0]<<16|H[b+3|0]<<24);E[h+24|0]=b;E[h+25|0]=b>>>8;E[h+26|0]=b>>>16;E[h+27|0]=b>>>24;E[h+28|0]=i;E[h+29|0]=i>>>8;E[h+30|0]=i>>>16;E[h+31|0]=i>>>24;i=H[a+3257|0]|H[a+3258|0]<<8|(H[a+3259|0]<<16|H[a+3260|0]<<24);h=G[p+4>>2];b=H[a+3253|0]|H[a+3254|0]<<8|(H[a+3255|0]<<16|H[a+3256|0]<<24);E[h|0]=b;E[h+1|0]=b>>>8;E[h+2|0]=b>>>16;E[h+3|0]=b>>>24;E[h+4|0]=i;E[h+5|0]=i>>>8;E[h+6|0]=i>>>16;E[h+7|0]=i>>>24;b=a+3261|0;i=H[b+4|0]|H[b+5|0]<<8|(H[b+6|0]<<16|H[b+7|0]<<24);b=H[b|0]|H[b+1|0]<<8|(H[b+2|0]<<16|H[b+3|0]<<24);E[h+8|0]=b;E[h+9|0]=b>>>8;E[h+10|0]=b>>>16;E[h+11|0]=b>>>24;E[h+12|0]=i;E[h+13|0]=i>>>8;E[h+14|0]=i>>>16;E[h+15|0]=i>>>24;b=a+3269|0;i=H[b+4|0]|H[b+5|0]<<8|(H[b+6|0]<<16|H[b+7|0]<<24);b=H[b|0]|H[b+1|0]<<8|(H[b+2|0]<<16|H[b+3|0]<<24);E[h+16|0]=b;E[h+17|0]=b>>>8;E[h+18|0]=b>>>16;E[h+19|0]=b>>>24;E[h+20|0]=i;E[h+21|0]=i>>>8;E[h+22|0]=i>>>16;E[h+23|0]=i>>>24;b=a+3277|0;i=H[b+4|0]|H[b+5|0]<<8|(H[b+6|0]<<16|H[b+7|0]<<24);b=H[b|0]|H[b+1|0]<<8|(H[b+2|0]<<16|H[b+3|0]<<24);E[h+24|0]=b;E[h+25|0]=b>>>8;E[h+26|0]=b>>>16;E[h+27|0]=b>>>24;E[h+28|0]=i;E[h+29|0]=i>>>8;E[h+30|0]=i>>>16;E[h+31|0]=i>>>24;n=G[p+12>>2]}l=Y-96|0;Y=l;h=a+48|0;i=(h|0)!=G[a+44>>2]?G[a+112>>2]:0;b=G[a+4>>2];j=_[G[G[b>>2]+4>>2]](b,c)|0;b=G[a+4>>2];i=Cb(i,j,_[G[G[b>>2]>>2]](b)|0);b=G[a+44>>2];c:{if(!((b|0)!=(h|0)|e>>>0>31)){G[a+8>>2]=1;i=-1;break c}if(i>>>0>m>>>0){G[a+8>>2]=2;i=-1;break c}if((b|0)==(h|0)){G[a+44>>2]=a+148;Ia(d,h);b=G[a>>2];m=l- -64|0;Ca(h,a+152|0,m);Da(m,32,a+12|0,32,G[b+8>>2],G[b+12>>2],l,64);b=G[l+28>>2];G[a+36>>2]=G[l+24>>2];G[a+40>>2]=b;b=G[l+20>>2];G[a+28>>2]=G[l+16>>2];G[a+32>>2]=b;b=G[l+12>>2];G[a+20>>2]=G[l+8>>2];G[a+24>>2]=b;b=G[l+4>>2];G[a+12>>2]=G[l>>2];G[a+16>>2]=b;b=G[l+36>>2];G[a+116>>2]=G[l+32>>2];G[a+120>>2]=b;b=G[l+44>>2];G[a+124>>2]=G[l+40>>2];G[a+128>>2]=b;b=G[l+52>>2];G[a+132>>2]=G[l+48>>2];G[a+136>>2]=b;b=G[l+60>>2];G[a+140>>2]=G[l+56>>2];G[a+144>>2]=b;G[a+112>>2]=0;la(l,64);la(m,32)}b=a+116|0;s=l+4|0;na(b,32,1868,1,s);G[l>>2]=G[a+112>>2];na(b,32,1869,1,b);G[a+112>>2]=G[a+112>>2]+1;b=G[a+4>>2];m=_[G[G[b>>2]+4>>2]](b,c)|0;o=G[l>>2];b=m;E[n+1|0]=10;E[n|0]=3;k=n+2|0;E[k|0]=32;j=l- -64|0;k=k+1|0;G[j>>2]=k;k=k+32|0;E[k|0]=16;r=k+1|0;if(o>>>0>=128){while(1){E[r|0]=o|128;r=r+1|0;k=o>>>0>16383;o=o>>>7|0;if(k){continue}break}}E[r+1|0]=34;E[r|0]=o;o=r+2|0;if(b>>>0>=128){while(1){E[o|0]=b|128;o=o+1|0;k=b>>>0>16383;b=b>>>7|0;if(k){continue}break}}E[o|0]=b;G[j+4>>2]=o+1;k=H[h+4|0]|H[h+5|0]<<8|(H[h+6|0]<<16|H[h+7|0]<<24);j=G[l+64>>2];b=H[h|0]|H[h+1|0]<<8|(H[h+2|0]<<16|H[h+3|0]<<24);E[j|0]=b;E[j+1|0]=b>>>8;E[j+2|0]=b>>>16;E[j+3|0]=b>>>24;E[j+4|0]=k;E[j+5|0]=k>>>8;E[j+6|0]=k>>>16;E[j+7|0]=k>>>24;k=H[h+28|0]|H[h+29|0]<<8|(H[h+30|0]<<16|H[h+31|0]<<24);b=H[h+24|0]|H[h+25|0]<<8|(H[h+26|0]<<16|H[h+27|0]<<24);E[j+24|0]=b;E[j+25|0]=b>>>8;E[j+26|0]=b>>>16;E[j+27|0]=b>>>24;E[j+28|0]=k;E[j+29|0]=k>>>8;E[j+30|0]=k>>>16;E[j+31|0]=k>>>24;k=H[h+20|0]|H[h+21|0]<<8|(H[h+22|0]<<16|H[h+23|0]<<24);b=H[h+16|0]|H[h+17|0]<<8|(H[h+18|0]<<16|H[h+19|0]<<24);E[j+16|0]=b;E[j+17|0]=b>>>8;E[j+18|0]=b>>>16;E[j+19|0]=b>>>24;E[j+20|0]=k;E[j+21|0]=k>>>8;E[j+22|0]=k>>>16;E[j+23|0]=k>>>24;k=H[h+12|0]|H[h+13|0]<<8|(H[h+14|0]<<16|H[h+15|0]<<24);b=H[h+8|0]|H[h+9|0]<<8|(H[h+10|0]<<16|H[h+11|0]<<24);E[j+8|0]=b;E[j+9|0]=b>>>8;E[j+10|0]=b>>>16;E[j+11|0]=b>>>24;E[j+12|0]=k;E[j+13|0]=k>>>8;E[j+14|0]=k>>>16;E[j+15|0]=k>>>24;b=G[a+4>>2];_[G[G[b>>2]+8>>2]](b,s,32,g,c,G[l+68>>2],m,n,i)|0;la(l,36)}Y=l+96|0;b=i;if((b|0)!=-1){break a}G[a+3216>>2]=G[a+8>>2];G[a+8>>2]=0}b=-1}Y=p+16|0;la(d,e);a=-1;if((b|0)!=-1){a=q+2|0;b=(a>>>0)/3|0;a=((a-M(b,3)|0)+(b<<2)|0)-2|0;pa((f+a|0)-q|0,q,f)}return a|0}function ya(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;x=Y-640|0;Y=x;c=a- -64|0;f=G[c>>2];y=G[c+4>>2];h=G[a+56>>2];z=G[a+60>>2];g=G[a+48>>2];r=G[a+52>>2];i=G[a+40>>2];s=G[a+44>>2];p=G[a+32>>2];u=G[a+36>>2];q=G[a+24>>2];v=G[a+28>>2];n=G[a+16>>2];A=G[a+20>>2];m=G[a+8>>2];t=G[a+12>>2];while(1){c=B<<3;k=c+x|0;d=b+c|0;j=H[d|0]|H[d+1|0]<<8|(H[d+2|0]<<16|H[d+3|0]<<24);o=j<<24|(j&65280)<<8;e=j&16711680;l=j&-16777216;w=e<<24|l<<8;C=e>>>8|l>>>24|o;d=H[d+4|0]|H[d+5|0]<<8|(H[d+6|0]<<16|H[d+7|0]<<24);c=d;d=k;G[d>>2]=((c&255)<<24|j>>>8)&-16777216|((c&16777215)<<8|j>>>24)&16711680|(c>>>8&65280|c>>>24)|w;G[d+4>>2]=C;B=B+1|0;if((B|0)!=16){continue}break}b=16;d=G[x>>2];e=G[x+4>>2];while(1){w=(b<<3)+x|0;c=w-56|0;C=G[c>>2];o=G[c+4>>2];c=w-16|0;j=G[c>>2];c=G[c+4>>2];k=c;c=ze(j,c,45);l=Z;B=ze(j,k,3)^c;c=k>>>6|0;k=B^((k&63)<<26|j>>>6);j=k+C|0;c=(c^(Z^l))+o|0;c=(j>>>0>>0?c+1|0:c)+e|0;o=d+j|0;k=o>>>0>>0?c+1|0:c;c=w-120|0;d=G[c>>2];c=G[c+4>>2];e=c;c=ze(d,c,63);j=Z;c=ze(d,e,56)^c;l=Z^j;j=((e&127)<<25|d>>>7)^c;o=j+o|0;c=(e>>>7^l)+k|0;G[w>>2]=o;G[w+4>>2]=j>>>0>o>>>0?c+1|0:c;b=b+1|0;if((b|0)!=80){continue}break}b=0;while(1){w=b<<3;c=w+2080|0;k=G[c>>2];e=G[c+4>>2];d=ze(i,s,50);c=Z;d=ze(i,s,46)^d;c=Z^c;d=f+(ze(i,s,23)^d)|0;c=y+(Z^c)|0;c=(d>>>0>>0?c+1|0:c)+e|0;f=d;d=d+k|0;c=f>>>0>d>>>0?c+1|0:c;f=d;e=w+x|0;d=G[e>>2];f=f+d|0;c=G[e+4>>2]+c|0;c=d>>>0>f>>>0?c+1|0:c;d=h^i&(h^g);f=d+f|0;c=(z^s&(r^z))+c|0;c=d>>>0>f>>>0?c+1|0:c;d=ze(m,t,36);e=Z;d=ze(m,t,30)^d;k=Z^e;e=ze(m,t,25)^d;j=e+f|0;d=c;c=c+(Z^k)|0;c=(v&(t|A)|t&A)+(e>>>0>j>>>0?c+1|0:c)|0;e=q&(m|n)|m&n;l=e+j|0;c=e>>>0>l>>>0?c+1|0:c;e=ze(l,c,36);k=Z;y=c;e=ze(l,c,30)^e;k=Z^k;j=ze(l,c,25)^e;e=n&(m|l)|m&l;j=j+e|0;c=(A&(c|t)|c&t)+(Z^k)|0;C=j;e=e>>>0>j>>>0?c+1|0:c;o=w|8;c=o+2080|0;j=G[c>>2];k=G[c+4>>2];c=d+u|0;d=f+p|0;p=d>>>0

>>0?c+1|0:c;c=z+(r^p&(s^r))|0;u=d;d=h+(g^d&(g^i))|0;c=(d>>>0>>0?c+1|0:c)+k|0;f=d+j|0;c=f>>>0>>0?c+1|0:c;d=ze(u,p,50);h=Z;d=ze(u,p,46)^d;h=Z^h;d=ze(u,p,23)^d;f=d+f|0;c=(Z^h)+c|0;c=d>>>0>f>>>0?c+1|0:c;k=f;f=o+x|0;d=G[f>>2];h=k+d|0;c=G[f+4>>2]+c|0;d=d>>>0>h>>>0?c+1|0:c;c=d+e|0;o=h+C|0;c=o>>>0>>0?c+1|0:c;e=ze(o,c,36);f=Z;z=c;e=ze(o,c,30)^e;f=Z^f;k=ze(o,c,25)^e;e=m&(l|o)|l&o;k=k+e|0;c=(t&(c|y)|c&y)+(Z^f)|0;j=k;f=e>>>0>j>>>0?c+1|0:c;k=w|16;c=k+2080|0;e=G[c>>2];c=r+G[c+4>>2]|0;e=e+g|0;c=e>>>0>>0?c+1|0:c;r=e;g=k+x|0;e=G[g>>2];k=r+e|0;c=G[g+4>>2]+c|0;g=k;e=e>>>0>g>>>0?c+1|0:c;c=d+v|0;d=h+q|0;c=d>>>0>>0?c+1|0:c;v=d;d=i^d&(i^u);g=d+g|0;q=c;c=(s^c&(p^s))+e|0;c=d>>>0>g>>>0?c+1|0:c;d=ze(v,q,50);e=Z;d=ze(v,q,46)^d;e=Z^e;d=ze(v,q,23)^d;h=d+g|0;c=(Z^e)+c|0;d=d>>>0>h>>>0?c+1|0:c;c=d+f|0;r=h+j|0;c=r>>>0>>0?c+1|0:c;e=ze(r,c,36);g=Z;j=c;e=ze(r,c,30)^e;g=Z^g;f=ze(r,c,25)^e;e=l&(o|r)|o&r;f=f+e|0;c=(y&(c|z)|c&z)+(Z^g)|0;k=f;g=e>>>0>f>>>0?c+1|0:c;f=w|24;c=f+2080|0;e=G[c>>2];c=s+G[c+4>>2]|0;e=e+i|0;c=e>>>0>>0?c+1|0:c;i=e;f=f+x|0;e=G[f>>2];i=i+e|0;c=G[f+4>>2]+c|0;f=i;e=e>>>0>f>>>0?c+1|0:c;c=d+A|0;d=h+n|0;c=d>>>0>>0?c+1|0:c;i=d;d=u^d&(u^v);h=d+f|0;n=c;c=(p^c&(q^p))+e|0;c=d>>>0>h>>>0?c+1|0:c;d=ze(i,n,50);e=Z;d=ze(i,n,46)^d;e=Z^e;d=ze(i,n,23)^d;h=d+h|0;c=(Z^e)+c|0;d=d>>>0>h>>>0?c+1|0:c;c=d+g|0;s=h+k|0;c=s>>>0>>0?c+1|0:c;e=ze(s,c,36);g=Z;k=c;e=ze(s,c,30)^e;g=Z^g;f=ze(s,c,25)^e;e=o&(s|r)|s&r;f=f+e|0;c=(z&(c|j)|c&j)+(Z^g)|0;A=f;g=e>>>0>f>>>0?c+1|0:c;f=w|32;c=f+2080|0;e=G[c>>2];c=p+G[c+4>>2]|0;e=e+u|0;c=e>>>0>>0?c+1|0:c;u=e;f=f+x|0;e=G[f>>2];p=u+e|0;c=G[f+4>>2]+c|0;f=p;e=e>>>0>f>>>0?c+1|0:c;c=d+t|0;d=h+m|0;c=d>>>0>>0?c+1|0:c;t=d;d=v^d&(i^v);h=d+f|0;m=c;c=(q^c&(n^q))+e|0;c=d>>>0>h>>>0?c+1|0:c;d=ze(t,m,50);e=Z;d=ze(t,m,46)^d;e=Z^e;d=ze(t,m,23)^d;h=d+h|0;c=(Z^e)+c|0;f=g;g=d>>>0>h>>>0?c+1|0:c;c=f+g|0;p=h+A|0;c=p>>>0>>0?c+1|0:c;d=ze(p,c,36);e=Z;u=c;d=ze(p,c,30)^d;e=Z^e;f=ze(p,c,25)^d;d=r&(p|s)|p&s;f=f+d|0;c=(j&(c|k)|c&k)+(Z^e)|0;A=f;e=d>>>0>f>>>0?c+1|0:c;f=w|40;c=f+2080|0;d=G[c>>2];c=q+G[c+4>>2]|0;d=d+v|0;c=d>>>0>>0?c+1|0:c;v=d;f=f+x|0;d=G[f>>2];q=v+d|0;c=G[f+4>>2]+c|0;d=d>>>0>q>>>0?c+1|0:c;c=g+y|0;f=h+l|0;c=f>>>0>>0?c+1|0:c;g=i^(i^t)&f;h=g+q|0;y=c;c=(n^c&(m^n))+d|0;c=h>>>0>>0?c+1|0:c;d=ze(f,y,50);g=Z;d=ze(f,y,46)^d;g=Z^g;d=ze(f,y,23)^d;h=d+h|0;c=(Z^g)+c|0;g=d>>>0>h>>>0?c+1|0:c;c=g+e|0;q=h+A|0;c=q>>>0>>0?c+1|0:c;d=ze(q,c,36);e=Z;v=c;d=ze(q,c,30)^d;e=Z^e;A=ze(q,c,25)^d;d=s&(q|p)|q&p;l=A+d|0;c=(k&(c|u)|c&u)+(Z^e)|0;A=l;e=d>>>0>l>>>0?c+1|0:c;l=w|48;c=l+2080|0;d=G[c>>2];c=n+G[c+4>>2]|0;d=d+i|0;c=d>>>0>>0?c+1|0:c;i=d;n=l+x|0;d=G[n>>2];i=i+d|0;c=G[n+4>>2]+c|0;d=d>>>0>i>>>0?c+1|0:c;c=g+z|0;h=h+o|0;c=h>>>0>>0?c+1|0:c;g=t^(f^t)&h;i=g+i|0;z=c;c=(m^c&(m^y))+d|0;c=g>>>0>i>>>0?c+1|0:c;d=ze(h,z,50);g=Z;d=ze(h,z,46)^d;n=Z^g;d=ze(h,z,23)^d;g=d+i|0;c=(Z^n)+c|0;i=e;e=d>>>0>g>>>0?c+1|0:c;c=i+e|0;n=g+A|0;c=n>>>0>>0?c+1|0:c;d=ze(n,c,36);i=Z;A=c;d=ze(n,c,30)^d;i=Z^i;l=ze(n,c,25)^d;d=p&(n|q)|n&q;l=l+d|0;c=(u&(c|v)|c&v)+(Z^i)|0;o=l;i=d>>>0>l>>>0?c+1|0:c;l=w|56;c=l+2080|0;d=G[c>>2];c=m+G[c+4>>2]|0;d=d+t|0;c=d>>>0>>0?c+1|0:c;t=d;m=l+x|0;d=G[m>>2];l=t+d|0;c=G[m+4>>2]+c|0;m=l;d=d>>>0>m>>>0?c+1|0:c;c=e+j|0;g=g+r|0;c=g>>>0>>0?c+1|0:c;e=f^(f^h)&g;j=e+m|0;r=c;c=(y^c&(y^z))+d|0;c=e>>>0>j>>>0?c+1|0:c;d=ze(g,r,50);e=Z;d=ze(g,r,46)^d;m=Z^e;d=ze(g,r,23)^d;e=d+j|0;c=(Z^m)+c|0;d=d>>>0>e>>>0?c+1|0:c;c=d+i|0;m=e+o|0;t=m>>>0>>0?c+1|0:c;c=d+k|0;i=e+s|0;s=i>>>0>>0?c+1|0:c;c=b>>>0<72;b=b+8|0;if(c){continue}break}c=G[a+12>>2]+t|0;b=G[a+8>>2];d=b+m|0;G[a+8>>2]=d;G[a+12>>2]=b>>>0>d>>>0?c+1|0:c;c=G[a+20>>2]+A|0;b=G[a+16>>2];d=b+n|0;G[a+16>>2]=d;G[a+20>>2]=b>>>0>d>>>0?c+1|0:c;c=G[a+28>>2]+v|0;b=G[a+24>>2];d=b+q|0;G[a+24>>2]=d;G[a+28>>2]=b>>>0>d>>>0?c+1|0:c;c=G[a+36>>2]+u|0;b=G[a+32>>2];d=b+p|0;G[a+32>>2]=d;G[a+36>>2]=b>>>0>d>>>0?c+1|0:c;c=G[a+44>>2]+s|0;b=G[a+40>>2];d=b+i|0;G[a+40>>2]=d;G[a+44>>2]=b>>>0>d>>>0?c+1|0:c;c=G[a+52>>2]+r|0;b=G[a+48>>2];d=b+g|0;G[a+48>>2]=d;G[a+52>>2]=b>>>0>d>>>0?c+1|0:c;c=G[a+60>>2]+z|0;b=G[a+56>>2];d=b+h|0;G[a+56>>2]=d;G[a+60>>2]=b>>>0>d>>>0?c+1|0:c;c=a- -64|0;d=c;a=G[c>>2];b=a+f|0;c=G[c+4>>2]+y|0;G[d>>2]=b;G[d+4>>2]=a>>>0>b>>>0?c+1|0:c;Y=x+640|0}function Wb(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0;g=Y-208|0;Y=g;db(g+172|0,d,e);a:{b:{f=G[g+176>>2];c:{if(!f){d=(c|f)!=0;break c}d=G[g+180>>2]==32}d:{if(!d){break d}j=G[g+200>>2];if(!j){break d}e=G[g+184>>2];if(!e|G[g+188>>2]!=32){break d}d=G[g+192>>2];if(!d){break d}if(G[g+196>>2]==32){break b}}G[a+3216>>2]=4;a=-1;break a}e:{if(!c|!f){break e}if(!Oa(c,f)){break e}G[a+3216>>2]=6;a=-1;break a}h=H[f+4|0]|H[f+5|0]<<8|(H[f+6|0]<<16|H[f+7|0]<<24);c=H[f|0]|H[f+1|0]<<8|(H[f+2|0]<<16|H[f+3|0]<<24);E[a+3221|0]=c;E[a+3222|0]=c>>>8;E[a+3223|0]=c>>>16;E[a+3224|0]=c>>>24;E[a+3225|0]=h;E[a+3226|0]=h>>>8;E[a+3227|0]=h>>>16;E[a+3228|0]=h>>>24;h=H[f+28|0]|H[f+29|0]<<8|(H[f+30|0]<<16|H[f+31|0]<<24);i=a+3245|0;c=H[f+24|0]|H[f+25|0]<<8|(H[f+26|0]<<16|H[f+27|0]<<24);E[i|0]=c;E[i+1|0]=c>>>8;E[i+2|0]=c>>>16;E[i+3|0]=c>>>24;E[i+4|0]=h;E[i+5|0]=h>>>8;E[i+6|0]=h>>>16;E[i+7|0]=h>>>24;h=H[f+20|0]|H[f+21|0]<<8|(H[f+22|0]<<16|H[f+23|0]<<24);i=a+3237|0;c=H[f+16|0]|H[f+17|0]<<8|(H[f+18|0]<<16|H[f+19|0]<<24);E[i|0]=c;E[i+1|0]=c>>>8;E[i+2|0]=c>>>16;E[i+3|0]=c>>>24;E[i+4|0]=h;E[i+5|0]=h>>>8;E[i+6|0]=h>>>16;E[i+7|0]=h>>>24;h=H[f+12|0]|H[f+13|0]<<8|(H[f+14|0]<<16|H[f+15|0]<<24);i=a+3229|0;c=H[f+8|0]|H[f+9|0]<<8|(H[f+10|0]<<16|H[f+11|0]<<24);E[i|0]=c;E[i+1|0]=c>>>8;E[i+2|0]=c>>>16;E[i+3|0]=c>>>24;E[i+4|0]=h;E[i+5|0]=h>>>8;E[i+6|0]=h>>>16;E[i+7|0]=h>>>24;f=H[e+28|0]|H[e+29|0]<<8|(H[e+30|0]<<16|H[e+31|0]<<24);h=a+3277|0;c=H[e+24|0]|H[e+25|0]<<8|(H[e+26|0]<<16|H[e+27|0]<<24);E[h|0]=c;E[h+1|0]=c>>>8;E[h+2|0]=c>>>16;E[h+3|0]=c>>>24;E[h+4|0]=f;E[h+5|0]=f>>>8;E[h+6|0]=f>>>16;E[h+7|0]=f>>>24;f=H[e+20|0]|H[e+21|0]<<8|(H[e+22|0]<<16|H[e+23|0]<<24);h=a+3269|0;c=H[e+16|0]|H[e+17|0]<<8|(H[e+18|0]<<16|H[e+19|0]<<24);E[h|0]=c;E[h+1|0]=c>>>8;E[h+2|0]=c>>>16;E[h+3|0]=c>>>24;E[h+4|0]=f;E[h+5|0]=f>>>8;E[h+6|0]=f>>>16;E[h+7|0]=f>>>24;f=H[e+12|0]|H[e+13|0]<<8|(H[e+14|0]<<16|H[e+15|0]<<24);h=a+3261|0;c=H[e+8|0]|H[e+9|0]<<8|(H[e+10|0]<<16|H[e+11|0]<<24);E[h|0]=c;E[h+1|0]=c>>>8;E[h+2|0]=c>>>16;E[h+3|0]=c>>>24;E[h+4|0]=f;E[h+5|0]=f>>>8;E[h+6|0]=f>>>16;E[h+7|0]=f>>>24;f=H[e+4|0]|H[e+5|0]<<8|(H[e+6|0]<<16|H[e+7|0]<<24);c=H[e|0]|H[e+1|0]<<8|(H[e+2|0]<<16|H[e+3|0]<<24);E[a+3253|0]=c;E[a+3254|0]=c>>>8;E[a+3255|0]=c>>>16;E[a+3256|0]=c>>>24;E[a+3257|0]=f;E[a+3258|0]=f>>>8;E[a+3259|0]=f>>>16;E[a+3260|0]=f>>>24;e=H[d+28|0]|H[d+29|0]<<8|(H[d+30|0]<<16|H[d+31|0]<<24);f=a+3309|0;c=H[d+24|0]|H[d+25|0]<<8|(H[d+26|0]<<16|H[d+27|0]<<24);E[f|0]=c;E[f+1|0]=c>>>8;E[f+2|0]=c>>>16;E[f+3|0]=c>>>24;E[f+4|0]=e;E[f+5|0]=e>>>8;E[f+6|0]=e>>>16;E[f+7|0]=e>>>24;e=H[d+20|0]|H[d+21|0]<<8|(H[d+22|0]<<16|H[d+23|0]<<24);f=a+3301|0;c=H[d+16|0]|H[d+17|0]<<8|(H[d+18|0]<<16|H[d+19|0]<<24);E[f|0]=c;E[f+1|0]=c>>>8;E[f+2|0]=c>>>16;E[f+3|0]=c>>>24;E[f+4|0]=e;E[f+5|0]=e>>>8;E[f+6|0]=e>>>16;E[f+7|0]=e>>>24;e=H[d+12|0]|H[d+13|0]<<8|(H[d+14|0]<<16|H[d+15|0]<<24);f=a+3293|0;c=H[d+8|0]|H[d+9|0]<<8|(H[d+10|0]<<16|H[d+11|0]<<24);E[f|0]=c;E[f+1|0]=c>>>8;E[f+2|0]=c>>>16;E[f+3|0]=c>>>24;E[f+4|0]=e;E[f+5|0]=e>>>8;E[f+6|0]=e>>>16;E[f+7|0]=e>>>24;e=H[d+4|0]|H[d+5|0]<<8|(H[d+6|0]<<16|H[d+7|0]<<24);c=H[d|0]|H[d+1|0]<<8|(H[d+2|0]<<16|H[d+3|0]<<24);E[a+3285|0]=c;E[a+3286|0]=c>>>8;E[a+3287|0]=c>>>16;E[a+3288|0]=c>>>24;E[a+3289|0]=e;E[a+3290|0]=e>>>8;E[a+3291|0]=e>>>16;E[a+3292|0]=e>>>24;c=G[a+4>>2];hb(g+140|0,j,G[g+204>>2],_[G[G[c>>2]>>2]](c)|0);c=G[g+156>>2];if(!(G[g+160>>2]==32?c:0)){G[a+3216>>2]=4;a=-1;break a}d=H[c+28|0]|H[c+29|0]<<8|(H[c+30|0]<<16|H[c+31|0]<<24);G[g+128>>2]=H[c+24|0]|H[c+25|0]<<8|(H[c+26|0]<<16|H[c+27|0]<<24);G[g+132>>2]=d;d=H[c+20|0]|H[c+21|0]<<8|(H[c+22|0]<<16|H[c+23|0]<<24);G[g+120>>2]=H[c+16|0]|H[c+17|0]<<8|(H[c+18|0]<<16|H[c+19|0]<<24);G[g+124>>2]=d;d=H[c+12|0]|H[c+13|0]<<8|(H[c+14|0]<<16|H[c+15|0]<<24);G[g+112>>2]=H[c+8|0]|H[c+9|0]<<8|(H[c+10|0]<<16|H[c+11|0]<<24);G[g+116>>2]=d;d=H[c+4|0]|H[c+5|0]<<8|(H[c+6|0]<<16|H[c+7|0]<<24);G[g+104>>2]=H[c|0]|H[c+1|0]<<8|(H[c+2|0]<<16|H[c+3|0]<<24);G[g+108>>2]=d;e=a+3285|0;c=b+164|0;d=G[b+160>>2];f:{g:{if((c|0)!=(d|0)){while(1){if(Na(c+5|0,e,32)){break g}c=c+72|0;if((d|0)!=(c|0)){continue}break}}c=0;if(!H[b+7364|0]){break g}d=b+7368|0;if(Na(b+7373|0,e,32)){break f}if(H[b+7364|0]<2){break g}c=Na(b+7445|0,e,32)?b+7440|0:0}d=c}if(!d){G[a+3216>>2]=6;a=-1;break a}c=d+5|0;Ca(c,a+3221|0,g);d=b+96|0;b=a+3253|0;Ca(d,b,g+32|0);Ca(c,b,g- -64|0);d=Y+-64|0;Y=d;b=G[a>>2];Da(g,96,0,0,G[b>>2],G[b+4>>2],d,64);c=G[a+148>>2];if((c|0)!=(a+492|0)){c=c+68|0;G[a+148>>2]=c}c=c-68|0;b=a+152|0;if((c|0)!=(b|0)){while(1){e=c;c=c-68|0;ma(e,c,68);if((b|0)!=(c|0)){continue}break}}G[a+184>>2]=0;c=G[d+28>>2];G[a+36>>2]=G[d+24>>2];G[a+40>>2]=c;c=G[d+20>>2];G[a+28>>2]=G[d+16>>2];G[a+32>>2]=c;c=G[d+12>>2];G[a+20>>2]=G[d+8>>2];G[a+24>>2]=c;c=G[d+4>>2];G[a+12>>2]=G[d>>2];G[a+16>>2]=c;c=G[d+60>>2];G[a+212>>2]=G[d+56>>2];G[a+216>>2]=c;c=G[d+52>>2];G[a+204>>2]=G[d+48>>2];G[a+208>>2]=c;c=G[d+44>>2];G[a+196>>2]=G[d+40>>2];G[a+200>>2]=c;c=G[d+36>>2];G[a+188>>2]=G[d+32>>2];G[a+192>>2]=c;c=H[g+108|0]|H[g+109|0]<<8|(H[g+110|0]<<16|H[g+111|0]<<24);a=H[g+104|0]|H[g+105|0]<<8|(H[g+106|0]<<16|H[g+107|0]<<24);E[b|0]=a;E[b+1|0]=a>>>8;E[b+2|0]=a>>>16;E[b+3|0]=a>>>24;E[b+4|0]=c;E[b+5|0]=c>>>8;E[b+6|0]=c>>>16;E[b+7|0]=c>>>24;c=H[g+116|0]|H[g+117|0]<<8|(H[g+118|0]<<16|H[g+119|0]<<24);a=H[g+112|0]|H[g+113|0]<<8|(H[g+114|0]<<16|H[g+115|0]<<24);E[b+8|0]=a;E[b+9|0]=a>>>8;E[b+10|0]=a>>>16;E[b+11|0]=a>>>24;E[b+12|0]=c;E[b+13|0]=c>>>8;E[b+14|0]=c>>>16;E[b+15|0]=c>>>24;c=H[g+124|0]|H[g+125|0]<<8|(H[g+126|0]<<16|H[g+127|0]<<24);a=H[g+120|0]|H[g+121|0]<<8|(H[g+122|0]<<16|H[g+123|0]<<24);E[b+16|0]=a;E[b+17|0]=a>>>8;E[b+18|0]=a>>>16;E[b+19|0]=a>>>24;E[b+20|0]=c;E[b+21|0]=c>>>8;E[b+22|0]=c>>>16;E[b+23|0]=c>>>24;c=H[g+132|0]|H[g+133|0]<<8|(H[g+134|0]<<16|H[g+135|0]<<24);a=H[g+128|0]|H[g+129|0]<<8|(H[g+130|0]<<16|H[g+131|0]<<24);E[b+24|0]=a;E[b+25|0]=a>>>8;E[b+26|0]=a>>>16;E[b+27|0]=a>>>24;E[b+28|0]=c;E[b+29|0]=c>>>8;E[b+30|0]=c>>>16;E[b+31|0]=c>>>24;la(d,64);Y=d- -64|0;la(g,96);a=0}Y=g+208|0;return a}function rc(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0;k=Y+-64|0;Y=k;a:{b:{if((ra(d)|0)==32){if((ra(f)|0)==32){break b}}G[a+3216>>2]=7;d=-1;break a}i=d;d=k+32|0;va(c,i,d);va(e,f,k);e=Y-224|0;Y=e;c:{if(h>>>0<=63){G[a+3216>>2]=1;d=-1;break c}l=e+160|0;Ia(g,l);c=e+96|0;Ia(g+32|0,c);E[a+3220|0]=0;j=H[b+124|0]|H[b+125|0]<<8|(H[b+126|0]<<16|H[b+127|0]<<24);i=a+3245|0;f=H[b+120|0]|H[b+121|0]<<8|(H[b+122|0]<<16|H[b+123|0]<<24);E[i|0]=f;E[i+1|0]=f>>>8;E[i+2|0]=f>>>16;E[i+3|0]=f>>>24;E[i+4|0]=j;E[i+5|0]=j>>>8;E[i+6|0]=j>>>16;E[i+7|0]=j>>>24;j=H[b+116|0]|H[b+117|0]<<8|(H[b+118|0]<<16|H[b+119|0]<<24);i=a+3237|0;f=H[b+112|0]|H[b+113|0]<<8|(H[b+114|0]<<16|H[b+115|0]<<24);E[i|0]=f;E[i+1|0]=f>>>8;E[i+2|0]=f>>>16;E[i+3|0]=f>>>24;E[i+4|0]=j;E[i+5|0]=j>>>8;E[i+6|0]=j>>>16;E[i+7|0]=j>>>24;j=H[b+108|0]|H[b+109|0]<<8|(H[b+110|0]<<16|H[b+111|0]<<24);i=a+3229|0;f=H[b+104|0]|H[b+105|0]<<8|(H[b+106|0]<<16|H[b+107|0]<<24);E[i|0]=f;E[i+1|0]=f>>>8;E[i+2|0]=f>>>16;E[i+3|0]=f>>>24;E[i+4|0]=j;E[i+5|0]=j>>>8;E[i+6|0]=j>>>16;E[i+7|0]=j>>>24;j=H[b+100|0]|H[b+101|0]<<8|(H[b+102|0]<<16|H[b+103|0]<<24);f=H[b+96|0]|H[b+97|0]<<8|(H[b+98|0]<<16|H[b+99|0]<<24);E[a+3221|0]=f;E[a+3222|0]=f>>>8;E[a+3223|0]=f>>>16;E[a+3224|0]=f>>>24;E[a+3225|0]=j;E[a+3226|0]=j>>>8;E[a+3227|0]=j>>>16;E[a+3228|0]=j>>>24;j=H[e+164|0]|H[e+165|0]<<8|(H[e+166|0]<<16|H[e+167|0]<<24);f=H[e+160|0]|H[e+161|0]<<8|(H[e+162|0]<<16|H[e+163|0]<<24);E[a+3253|0]=f;E[a+3254|0]=f>>>8;E[a+3255|0]=f>>>16;E[a+3256|0]=f>>>24;E[a+3257|0]=j;E[a+3258|0]=j>>>8;E[a+3259|0]=j>>>16;E[a+3260|0]=j>>>24;j=H[e+172|0]|H[e+173|0]<<8|(H[e+174|0]<<16|H[e+175|0]<<24);i=a+3261|0;f=H[e+168|0]|H[e+169|0]<<8|(H[e+170|0]<<16|H[e+171|0]<<24);E[i|0]=f;E[i+1|0]=f>>>8;E[i+2|0]=f>>>16;E[i+3|0]=f>>>24;E[i+4|0]=j;E[i+5|0]=j>>>8;E[i+6|0]=j>>>16;E[i+7|0]=j>>>24;j=H[e+180|0]|H[e+181|0]<<8|(H[e+182|0]<<16|H[e+183|0]<<24);i=a+3269|0;f=H[e+176|0]|H[e+177|0]<<8|(H[e+178|0]<<16|H[e+179|0]<<24);E[i|0]=f;E[i+1|0]=f>>>8;E[i+2|0]=f>>>16;E[i+3|0]=f>>>24;E[i+4|0]=j;E[i+5|0]=j>>>8;E[i+6|0]=j>>>16;E[i+7|0]=j>>>24;j=H[e+188|0]|H[e+189|0]<<8|(H[e+190|0]<<16|H[e+191|0]<<24);i=a+3277|0;f=H[e+184|0]|H[e+185|0]<<8|(H[e+186|0]<<16|H[e+187|0]<<24);E[i|0]=f;E[i+1|0]=f>>>8;E[i+2|0]=f>>>16;E[i+3|0]=f>>>24;E[i+4|0]=j;E[i+5|0]=j>>>8;E[i+6|0]=j>>>16;E[i+7|0]=j>>>24;j=H[k+4|0]|H[k+5|0]<<8|(H[k+6|0]<<16|H[k+7|0]<<24);f=H[k|0]|H[k+1|0]<<8|(H[k+2|0]<<16|H[k+3|0]<<24);E[a+3285|0]=f;E[a+3286|0]=f>>>8;E[a+3287|0]=f>>>16;E[a+3288|0]=f>>>24;E[a+3289|0]=j;E[a+3290|0]=j>>>8;E[a+3291|0]=j>>>16;E[a+3292|0]=j>>>24;j=H[k+12|0]|H[k+13|0]<<8|(H[k+14|0]<<16|H[k+15|0]<<24);i=a+3293|0;f=H[k+8|0]|H[k+9|0]<<8|(H[k+10|0]<<16|H[k+11|0]<<24);E[i|0]=f;E[i+1|0]=f>>>8;E[i+2|0]=f>>>16;E[i+3|0]=f>>>24;E[i+4|0]=j;E[i+5|0]=j>>>8;E[i+6|0]=j>>>16;E[i+7|0]=j>>>24;j=H[k+20|0]|H[k+21|0]<<8|(H[k+22|0]<<16|H[k+23|0]<<24);i=a+3301|0;f=H[k+16|0]|H[k+17|0]<<8|(H[k+18|0]<<16|H[k+19|0]<<24);E[i|0]=f;E[i+1|0]=f>>>8;E[i+2|0]=f>>>16;E[i+3|0]=f>>>24;E[i+4|0]=j;E[i+5|0]=j>>>8;E[i+6|0]=j>>>16;E[i+7|0]=j>>>24;j=H[k+28|0]|H[k+29|0]<<8|(H[k+30|0]<<16|H[k+31|0]<<24);i=a+3309|0;f=H[k+24|0]|H[k+25|0]<<8|(H[k+26|0]<<16|H[k+27|0]<<24);E[i|0]=f;E[i+1|0]=f>>>8;E[i+2|0]=f>>>16;E[i+3|0]=f>>>24;E[i+4|0]=j;E[i+5|0]=j>>>8;E[i+6|0]=j>>>16;E[i+7|0]=j>>>24;Ca(b+96|0,k,e);Ca(l,d,e+32|0);Ca(l,k,e- -64|0);d=Y+-64|0;Y=d;b=G[a>>2];Da(e,96,0,0,G[b>>2],G[b+4>>2],d,64);b=G[a+44>>2];if((b|0)!=(a+148|0)){b=b+100|0;G[a+44>>2]=b}b=b-100|0;f=a+48|0;if((b|0)!=(f|0)){while(1){i=b;b=b-100|0;ma(i,b,100);if((b|0)!=(f|0)){continue}break}}G[a+112>>2]=0;b=G[d+28>>2];G[a+36>>2]=G[d+24>>2];G[a+40>>2]=b;b=G[d+20>>2];G[a+28>>2]=G[d+16>>2];G[a+32>>2]=b;b=G[d+12>>2];G[a+20>>2]=G[d+8>>2];G[a+24>>2]=b;b=G[d+4>>2];G[a+12>>2]=G[d>>2];G[a+16>>2]=b;b=G[d+60>>2];G[a+140>>2]=G[d+56>>2];G[a+144>>2]=b;b=G[d+52>>2];G[a+132>>2]=G[d+48>>2];G[a+136>>2]=b;b=G[d+44>>2];G[a+124>>2]=G[d+40>>2];G[a+128>>2]=b;b=G[d+36>>2];G[a+116>>2]=G[d+32>>2];G[a+120>>2]=b;b=H[c+4|0]|H[c+5|0]<<8|(H[c+6|0]<<16|H[c+7|0]<<24);a=H[c|0]|H[c+1|0]<<8|(H[c+2|0]<<16|H[c+3|0]<<24);E[f|0]=a;E[f+1|0]=a>>>8;E[f+2|0]=a>>>16;E[f+3|0]=a>>>24;E[f+4|0]=b;E[f+5|0]=b>>>8;E[f+6|0]=b>>>16;E[f+7|0]=b>>>24;b=H[c+12|0]|H[c+13|0]<<8|(H[c+14|0]<<16|H[c+15|0]<<24);a=H[c+8|0]|H[c+9|0]<<8|(H[c+10|0]<<16|H[c+11|0]<<24);E[f+8|0]=a;E[f+9|0]=a>>>8;E[f+10|0]=a>>>16;E[f+11|0]=a>>>24;E[f+12|0]=b;E[f+13|0]=b>>>8;E[f+14|0]=b>>>16;E[f+15|0]=b>>>24;b=H[c+20|0]|H[c+21|0]<<8|(H[c+22|0]<<16|H[c+23|0]<<24);a=H[c+16|0]|H[c+17|0]<<8|(H[c+18|0]<<16|H[c+19|0]<<24);E[f+16|0]=a;E[f+17|0]=a>>>8;E[f+18|0]=a>>>16;E[f+19|0]=a>>>24;E[f+20|0]=b;E[f+21|0]=b>>>8;E[f+22|0]=b>>>16;E[f+23|0]=b>>>24;b=H[c+28|0]|H[c+29|0]<<8|(H[c+30|0]<<16|H[c+31|0]<<24);a=H[c+24|0]|H[c+25|0]<<8|(H[c+26|0]<<16|H[c+27|0]<<24);E[f+24|0]=a;E[f+25|0]=a>>>8;E[f+26|0]=a>>>16;E[f+27|0]=a>>>24;E[f+28|0]=b;E[f+29|0]=b>>>8;E[f+30|0]=b>>>16;E[f+31|0]=b>>>24;b=H[c+36|0]|H[c+37|0]<<8|(H[c+38|0]<<16|H[c+39|0]<<24);a=H[c+32|0]|H[c+33|0]<<8|(H[c+34|0]<<16|H[c+35|0]<<24);E[f+32|0]=a;E[f+33|0]=a>>>8;E[f+34|0]=a>>>16;E[f+35|0]=a>>>24;E[f+36|0]=b;E[f+37|0]=b>>>8;E[f+38|0]=b>>>16;E[f+39|0]=b>>>24;b=H[c+44|0]|H[c+45|0]<<8|(H[c+46|0]<<16|H[c+47|0]<<24);a=H[c+40|0]|H[c+41|0]<<8|(H[c+42|0]<<16|H[c+43|0]<<24);E[f+40|0]=a;E[f+41|0]=a>>>8;E[f+42|0]=a>>>16;E[f+43|0]=a>>>24;E[f+44|0]=b;E[f+45|0]=b>>>8;E[f+46|0]=b>>>16;E[f+47|0]=b>>>24;b=H[c+52|0]|H[c+53|0]<<8|(H[c+54|0]<<16|H[c+55|0]<<24);a=H[c+48|0]|H[c+49|0]<<8|(H[c+50|0]<<16|H[c+51|0]<<24);E[f+48|0]=a;E[f+49|0]=a>>>8;E[f+50|0]=a>>>16;E[f+51|0]=a>>>24;E[f+52|0]=b;E[f+53|0]=b>>>8;E[f+54|0]=b>>>16;E[f+55|0]=b>>>24;b=H[c+60|0]|H[c+61|0]<<8|(H[c+62|0]<<16|H[c+63|0]<<24);a=H[c+56|0]|H[c+57|0]<<8|(H[c+58|0]<<16|H[c+59|0]<<24);E[f+56|0]=a;E[f+57|0]=a>>>8;E[f+58|0]=a>>>16;E[f+59|0]=a>>>24;E[f+60|0]=b;E[f+61|0]=b>>>8;E[f+62|0]=b>>>16;E[f+63|0]=b>>>24;la(d,64);Y=d- -64|0;la(l,64);la(c,64);la(e,96);d=0}Y=e+224|0;la(g,h)}Y=k- -64|0;return d|0}function Fb(a,b,c,d,e,f){a=a|0;b=+b;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,w=0,x=0,y=0,z=0,B=0,C=0;n=Y-560|0;Y=n;G[n+44>>2]=0;A(+b);g=v(1)|0;v(0)|0;a:{if((g|0)<0){t=1;x=1034;b=-b;A(+b);g=v(1)|0;v(0)|0;break a}if(e&2048){t=1;x=1037;break a}t=e&1;x=t?1040:1035;z=!t}b:{if((g&2146435072)==2146435072){g=t+3|0;sa(a,32,c,g,e&-65537);qa(a,x,t);d=f&32;qa(a,b!=b?d?1053:1248:d?1057:1321,3);sa(a,32,c,g,e^8192);m=(c|0)<(g|0)?g:c;break b}u=n+16|0;c:{d:{e:{b=Jb(b,n+44|0);b=b+b;if(b!=0){g=G[n+44>>2];G[n+44>>2]=g-1;w=f|32;if((w|0)!=97){break e}break c}w=f|32;if((w|0)==97){break c}k=G[n+44>>2];l=(d|0)<0?6:d;break d}k=g-29|0;G[n+44>>2]=k;b=b*268435456;l=(d|0)<0?6:d}p=(n+48|0)+((k|0)>=0?288:0)|0;h=p;while(1){if(b<4294967296&b>=0){d=~~b>>>0}else{d=0}G[h>>2]=d;h=h+4|0;b=(b-+(d>>>0))*1e9;if(b!=0){continue}break}f:{if((k|0)<=0){d=k;g=h;i=p;break f}i=p;d=k;while(1){j=(d|0)>=29?29:d;g=h-4|0;g:{if(i>>>0>g>>>0){break g}o=0;while(1){d=G[g>>2];m=j&31;y=o;if((j&63)>>>0>=32){o=d<>>32-m;d=d<>>0>m>>>0?o+1|0:o,1e9);B=g,C=m-we(o,Z,1e9,0)|0,G[B>>2]=C;g=g-4|0;if(i>>>0<=g>>>0){continue}break}if(!o){break g}i=i-4|0;G[i>>2]=o}while(1){g=h;if(i>>>0>>0){h=g-4|0;if(!G[h>>2]){continue}}break}d=G[n+44>>2]-j|0;G[n+44>>2]=d;h=g;if((d|0)>0){continue}break}}if((d|0)<0){s=((l+25>>>0)/9|0)+1|0;q=(w|0)==102;while(1){d=0-d|0;m=(d|0)>=9?9:d;h:{if(g>>>0<=i>>>0){h=G[i>>2];break h}o=1e9>>>m|0;j=-1<>2];G[h>>2]=y+(d>>>m|0);d=M(o,d&j);h=h+4|0;if(h>>>0>>0){continue}break}h=G[i>>2];if(!d){break h}G[g>>2]=d;g=g+4|0}d=m+G[n+44>>2]|0;G[n+44>>2]=d;i=(!h<<2)+i|0;h=q?p:i;g=g-h>>2>(s|0)?h+(s<<2)|0:g;if((d|0)<0){continue}break}}d=0;i:{if(g>>>0<=i>>>0){break i}d=M(p-i>>2,9);h=10;j=G[i>>2];if(j>>>0<10){break i}while(1){d=d+1|0;h=M(h,10);if(j>>>0>=h>>>0){continue}break}}h=(l-((w|0)!=102?d:0)|0)-((w|0)==103&(l|0)!=0)|0;if((h|0)<(M(g-p>>2,9)-9|0)){o=h+9216|0;j=(o|0)/9|0;s=((n+48|0)+((k|0)<0?4:292)|0)+(j<<2)|0;k=s-4096|0;h=10;m=o-M(j,9)|0;if((m|0)<=7){while(1){h=M(h,10);m=m+1|0;if((m|0)!=8){continue}break}}q=G[k>>2];o=(q>>>0)/(h>>>0)|0;m=q-M(h,o)|0;j=s-4092|0;j:{if(!m&(j|0)==(g|0)){break j}k:{if(!(o&1)){b=9007199254740992;if(!(E[s-4100|0]&1)|((h|0)!=1e9|i>>>0>=k>>>0)){break k}}b=9007199254740994}r=(g|0)==(j|0)?1:1.5;j=h>>>1|0;r=j>>>0>m>>>0?.5:(j|0)==(m|0)?r:1.5;if(!(H[x|0]!=45|z)){r=-r;b=-b}j=q-m|0;G[k>>2]=j;if(b+r==b){break j}d=h+j|0;G[k>>2]=d;if(d>>>0>=1e9){while(1){G[k>>2]=0;k=k-4|0;if(k>>>0>>0){i=i-4|0;G[i>>2]=0}d=G[k>>2]+1|0;G[k>>2]=d;if(d>>>0>999999999){continue}break}}d=M(p-i>>2,9);h=10;j=G[i>>2];if(j>>>0<10){break j}while(1){d=d+1|0;h=M(h,10);if(j>>>0>=h>>>0){continue}break}}h=k+4|0;g=g>>>0>h>>>0?h:g}while(1){j=g;o=g>>>0<=i>>>0;if(!o){g=g-4|0;if(!G[g>>2]){continue}}break}l:{if((w|0)!=103){k=e&8;break l}h=l?l:1;g=(h|0)>(d|0)&(d|0)>-5;l=(g?d^-1:-1)+h|0;f=(g?-1:-2)+f|0;k=e&8;if(k){break l}g=-9;m:{if(o){break m}k=G[j-4>>2];if(!k){break m}m=10;g=0;if((k>>>0)%10|0){break m}while(1){h=g;g=g+1|0;m=M(m,10);if(!((k>>>0)%(m>>>0)|0)){continue}break}g=h^-1}h=M(j-p>>2,9);if((f&-33)==70){k=0;g=(g+h|0)-9|0;g=(g|0)>0?g:0;l=(g|0)>(l|0)?l:g;break l}k=0;g=((d+h|0)+g|0)-9|0;g=(g|0)>0?g:0;l=(g|0)>(l|0)?l:g}m=-1;o=k|l;if(((o?2147483645:2147483646)|0)<(l|0)){break b}q=(((o|0)!=0)+l|0)+1|0;h=f&-33;n:{if((h|0)==70){if((q^2147483647)<(d|0)){break b}g=(d|0)>0?d:0;break n}g=d>>31;g=Ua((g^d)-g|0,0,u);if((u-g|0)<=1){while(1){g=g-1|0;E[g|0]=48;if((u-g|0)<2){continue}break}}s=g-2|0;E[s|0]=f;E[g-1|0]=(d|0)<0?45:43;g=u-s|0;if((g|0)>(q^2147483647)){break b}}d=g+q|0;if((d|0)>(t^2147483647)){break b}q=d+t|0;sa(a,32,c,q,e);qa(a,x,t);sa(a,48,c,q,e^65536);o:{p:{q:{if((h|0)==70){f=n+16|0;d=f|8;k=f|9;h=i>>>0>p>>>0?p:i;i=h;while(1){g=Ua(G[i>>2],0,k);r:{if((h|0)!=(i|0)){if(n+16>>>0>=g>>>0){break r}while(1){g=g-1|0;E[g|0]=48;if(n+16>>>0>>0){continue}break}break r}if((g|0)!=(k|0)){break r}E[n+24|0]=48;g=d}qa(a,g,k-g|0);i=i+4|0;if(p>>>0>=i>>>0){continue}break}if(o){qa(a,1526,1)}if((l|0)<=0|i>>>0>=j>>>0){break q}while(1){g=Ua(G[i>>2],0,k);if(g>>>0>n+16>>>0){while(1){g=g-1|0;E[g|0]=48;if(n+16>>>0>>0){continue}break}}qa(a,g,(l|0)>=9?9:l);g=l-9|0;i=i+4|0;if(j>>>0<=i>>>0){break p}d=(l|0)>9;l=g;if(d){continue}break}break p}s:{if((l|0)<0){break s}p=i>>>0>>0?j:i+4|0;f=n+16|0;d=f|8;j=f|9;h=i;while(1){g=Ua(G[h>>2],0,j);if((j|0)==(g|0)){E[n+24|0]=48;g=d}t:{if((h|0)!=(i|0)){if(n+16>>>0>=g>>>0){break t}while(1){g=g-1|0;E[g|0]=48;if(n+16>>>0>>0){continue}break}break t}qa(a,g,1);g=g+1|0;if(!(k|l)){break t}qa(a,1526,1)}f=j-g|0;qa(a,g,(f|0)<(l|0)?f:l);l=l-f|0;h=h+4|0;if(p>>>0<=h>>>0){break s}if((l|0)>=0){continue}break}}sa(a,48,l+18|0,18,0);qa(a,s,u-s|0);break o}g=l}sa(a,48,g+9|0,9,0)}sa(a,32,c,q,e^8192);m=(c|0)<(q|0)?q:c;break b}k=(f<<26>>31&9)+x|0;u:{if(d>>>0>11){break u}g=12-d|0;r=16;while(1){r=r*16;g=g-1|0;if(g){continue}break}if(H[k|0]==45){b=-(r+(-b-r));break u}b=b+r-r}g=G[n+44>>2];h=g>>31;g=Ua((g^h)-h|0,0,u);if((u|0)==(g|0)){E[n+15|0]=48;g=n+15|0}p=t|2;i=f&32;h=G[n+44>>2];l=g-2|0;E[l|0]=f+15;E[g-1|0]=(h|0)<0?45:43;g=e&8;h=n+16|0;while(1){f=h;if(O(b)<2147483648){j=~~b}else{j=-2147483648}E[h|0]=i|H[j+5648|0];b=(b-+(j|0))*16;h=f+1|0;if(!(!((d|0)>0|g)&b==0|(h-(n+16|0)|0)!=1)){E[f+1|0]=46;h=f+2|0}if(b!=0){continue}break}m=-1;g=u-l|0;f=g+p|0;if((2147483645-f|0)<(d|0)){break b}j=f;f=n+16|0;i=h-f|0;d=d?(i-2|0)<(d|0)?d+2|0:i:i;h=j+d|0;sa(a,32,c,h,e);qa(a,k,p);sa(a,48,c,h,e^65536);qa(a,f,i);sa(a,48,d-i|0,0,0);qa(a,l,g);sa(a,32,c,h,e^8192);m=(c|0)<(h|0)?h:c}Y=n+560|0;return m|0}function Ib(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;h=Y-80|0;Y=h;G[h+76>>2]=b;w=e-192|0;x=d-384|0;z=h+55|0;q=h+56|0;a:{b:{c:{d:while(1){f=0;e:while(1){i=b;if((o^2147483647)<(f|0)){break c}o=f+o|0;f:{g:{h:{f=b;g=H[f|0];if(g){while(1){i:{b=g&255;j:{if(!b){b=f;break j}if((b|0)!=37){break i}g=f;while(1){if(H[g+1|0]!=37){b=g;break j}f=f+1|0;j=H[g+2|0];b=g+2|0;g=b;if((j|0)==37){continue}break}}f=f-i|0;y=o^2147483647;if((f|0)>(y|0)){break c}if(a){qa(a,i,f)}if(f){continue e}G[h+76>>2]=b;f=b+1|0;n=-1;g=E[b+1|0]-48|0;if(!(H[b+2|0]!=36|g>>>0>=10)){n=g;r=1;f=b+3|0}G[h+76>>2]=f;m=0;g=E[f|0];b=g-32|0;k:{if(b>>>0>31){j=f;break k}j=f;b=1<>2]=j;m=b|m;g=E[f+1|0];b=g-32|0;if(b>>>0>=32){break k}f=j;b=1<>>0>=10)){b=E[g|0];g=j+3|0;r=1;n:{if(!a){G[(b<<2)+w>>2]=10;b=0;break n}b=G[(b<<3)+x>>2]}break m}if(r){break h}if(!a){G[h+76>>2]=g;r=0;p=0;break l}b=G[c>>2];G[c>>2]=b+4;r=0;b=G[b>>2]}G[h+76>>2]=g;p=b;if((b|0)>=0){break l}p=0-b|0;m=m|8192;break l}p=Hb(h+76|0);if((p|0)<0){break c}g=G[h+76>>2]}f=0;k=-1;o:{if(H[g|0]!=46){b=g;u=0;break o}if(H[g+1|0]==42){b=g+2|0;p:{if(!(H[g+3|0]!=36|E[g+2|0]-48>>>0>=10)){b=E[b|0];q:{if(!a){G[(b<<2)+w>>2]=10;k=0;break q}k=G[(b<<3)+x>>2]}b=g+4|0;break p}if(r){break h}if(!a){k=0;break p}g=G[c>>2];G[c>>2]=g+4;k=G[g>>2]}G[h+76>>2]=b;u=(k|0)>=0;break o}G[h+76>>2]=g+1;k=Hb(h+76|0);b=G[h+76>>2];u=1}while(1){s=f;l=28;v=b;g=E[b|0];if(g-123>>>0<4294967238){break b}b=b+1|0;f=H[(g+M(f,58)|0)+5119|0];if(f-1>>>0<8){continue}break}G[h+76>>2]=b;r:{if((f|0)!=27){if(!f){break b}if((n|0)>=0){if(!a){G[(n<<2)+e>>2]=f;continue d}f=(n<<3)+d|0;g=G[f+4>>2];G[h+64>>2]=G[f>>2];G[h+68>>2]=g;break r}if(!a){break f}Gb(h- -64|0,f,c);break r}if((n|0)>=0){break b}f=0;if(!a){continue e}}l=-1;if(H[a|0]&32){break a}g=m&-65537;m=m&8192?g:m;n=0;t=1024;j=q;s:{t:{u:{v:{w:{x:{y:{z:{A:{B:{C:{D:{E:{F:{G:{H:{f=E[v|0];f=s?(f&15)==3?f&-33:f:f;switch(f-88|0){case 11:break s;case 9:case 13:case 14:case 15:break t;case 27:break y;case 12:case 17:break B;case 23:break C;case 0:case 32:break D;case 24:break E;case 22:break F;case 29:break G;case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 10:case 16:case 18:case 19:case 20:case 21:case 25:case 26:case 28:case 30:case 31:break g;default:break H}}I:{switch(f-65|0){case 0:case 4:case 5:case 6:break t;case 2:break w;case 1:case 3:break g;default:break I}}if((f|0)==83){break x}break g}g=G[h+64>>2];l=G[h+68>>2];t=1024;break A}f=0;J:{switch(s&255){case 0:G[G[h+64>>2]>>2]=o;continue e;case 1:G[G[h+64>>2]>>2]=o;continue e;case 2:i=G[h+64>>2];G[i>>2]=o;G[i+4>>2]=o>>31;continue e;case 3:F[G[h+64>>2]>>1]=o;continue e;case 4:E[G[h+64>>2]]=o;continue e;case 6:G[G[h+64>>2]>>2]=o;continue e;case 7:break J;default:continue e}}i=G[h+64>>2];G[i>>2]=o;G[i+4>>2]=o>>31;continue e}k=k>>>0<=8?8:k;m=m|8;f=120}i=q;g=G[h+64>>2];l=G[h+68>>2];if(g|l){v=f&32;while(1){i=i-1|0;E[i|0]=v|H[(g&15)+5648|0];s=!l&g>>>0>15|(l|0)!=0;g=(l&15)<<28|g>>>4;l=l>>>4|0;if(s){continue}break}}if(!(G[h+64>>2]|G[h+68>>2])|!(m&8)){break z}t=(f>>>4|0)+1024|0;n=2;break z}f=q;i=G[h+68>>2];l=i;g=G[h+64>>2];if(i|g){while(1){f=f-1|0;E[f|0]=g&7|48;s=!l&g>>>0>7|(l|0)!=0;g=(l&7)<<29|g>>>3;l=l>>>3|0;if(s){continue}break}}i=f;if(!(m&8)){break z}f=q-f|0;k=(f|0)<(k|0)?k:f+1|0;break z}g=G[h+64>>2];f=G[h+68>>2];l=f;if((f|0)<0){i=0-(f+((g|0)!=0)|0)|0;l=i;g=0-g|0;G[h+64>>2]=g;G[h+68>>2]=i;n=1;t=1024;break A}if(m&2048){n=1;t=1025;break A}n=m&1;t=n?1026:1024}i=Ua(g,l,q)}if((k|0)<0&u){break c}m=u?m&-65537:m;f=G[h+64>>2];g=G[h+68>>2];if(!(k|(f|g)!=0)){i=q;k=0;break g}f=!(f|g)+(q-i|0)|0;k=(f|0)<(k|0)?k:f;break g}l=k>>>0>=2147483647?2147483647:k;j=l;m=(j|0)!=0;f=G[h+64>>2];i=f?f:1528;f=i;K:{L:{M:{N:{if(!(f&3)|!j){break N}while(1){if(!H[f|0]){break M}j=j-1|0;m=(j|0)!=0;f=f+1|0;if(!(f&3)){break N}if(j){continue}break}}if(!m){break L}if(!(!H[f|0]|j>>>0<4)){while(1){m=G[f>>2];if((m^-1)&m-16843009&-2139062144){break M}f=f+4|0;j=j-4|0;if(j>>>0>3){continue}break}}if(!j){break L}}while(1){if(!H[f|0]){break K}f=f+1|0;j=j-1|0;if(j){continue}break}}f=0}f=f?f-i|0:l;j=f+i|0;if((k|0)>=0){m=g;k=f;break g}m=g;k=f;if(H[j|0]){break c}break g}if(k){g=G[h+64>>2];break v}f=0;sa(a,32,p,0,m);break u}G[h+12>>2]=0;G[h+8>>2]=G[h+64>>2];g=h+8|0;G[h+64>>2]=g;k=-1}f=0;O:{while(1){i=G[g>>2];if(!i){break O}i=Db(h+4|0,i);j=(i|0)<0;if(!(j|i>>>0>k-f>>>0)){g=g+4|0;f=f+i|0;if(k>>>0>f>>>0){continue}break O}break}if(j){break a}}l=61;if((f|0)<0){break b}sa(a,32,p,f,m);if(!f){f=0;break u}j=0;g=G[h+64>>2];while(1){i=G[g>>2];if(!i){break u}l=h+4|0;i=Db(l,i);j=i+j|0;if(j>>>0>f>>>0){break u}qa(a,l,i);g=g+4|0;if(f>>>0>j>>>0){continue}break}}sa(a,32,p,f,m^8192);f=(f|0)<(p|0)?p:f;continue e}if((k|0)<0&u){break c}l=61;f=Fb(a,L[h+64>>3],p,k,m,f);if((f|0)>=0){continue e}break b}E[h+55|0]=G[h+64>>2];k=1;i=z;m=g;break g}g=H[f+1|0];f=f+1|0;continue}}l=o;if(a){break a}if(!r){break f}f=1;while(1){a=G[(f<<2)+e>>2];if(a){Gb((f<<3)+d|0,a,c);l=1;f=f+1|0;if((f|0)!=10){continue}break a}break}l=1;if(f>>>0>=10){break a}while(1){if(G[(f<<2)+e>>2]){break h}f=f+1|0;if((f|0)!=10){continue}break}break a}l=28;break b}j=j-i|0;k=(k|0)>(j|0)?k:j;if((k|0)>(n^2147483647)){break c}l=61;g=k+n|0;f=(g|0)<(p|0)?p:g;if((y|0)<(f|0)){break b}sa(a,32,f,g,m);qa(a,t,n);sa(a,48,f,g,m^65536);sa(a,48,k,j,0);qa(a,i,j);sa(a,32,f,g,m^8192);continue}break}break}l=0;break a}l=61}G[9343]=l;l=-1}Y=h+80|0;return l}function Lc(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;i=Tb(a);if(Ga(i)>>>0>e>>>0){G[a+3216>>2]=2;return-1}e=oa(bb(d,i),1);E[e|0]=H[a+3220|0];f=a+3221|0;g=H[f+4|0]|H[f+5|0]<<8|(H[f+6|0]<<16|H[f+7|0]<<24);e=e+1|0;h=H[f|0]|H[f+1|0]<<8|(H[f+2|0]<<16|H[f+3|0]<<24);E[e|0]=h;E[e+1|0]=h>>>8;E[e+2|0]=h>>>16;E[e+3|0]=h>>>24;E[e+4|0]=g;E[e+5|0]=g>>>8;E[e+6|0]=g>>>16;E[e+7|0]=g>>>24;g=H[f+28|0]|H[f+29|0]<<8|(H[f+30|0]<<16|H[f+31|0]<<24);h=H[f+24|0]|H[f+25|0]<<8|(H[f+26|0]<<16|H[f+27|0]<<24);E[e+24|0]=h;E[e+25|0]=h>>>8;E[e+26|0]=h>>>16;E[e+27|0]=h>>>24;E[e+28|0]=g;E[e+29|0]=g>>>8;E[e+30|0]=g>>>16;E[e+31|0]=g>>>24;g=H[f+20|0]|H[f+21|0]<<8|(H[f+22|0]<<16|H[f+23|0]<<24);h=H[f+16|0]|H[f+17|0]<<8|(H[f+18|0]<<16|H[f+19|0]<<24);E[e+16|0]=h;E[e+17|0]=h>>>8;E[e+18|0]=h>>>16;E[e+19|0]=h>>>24;E[e+20|0]=g;E[e+21|0]=g>>>8;E[e+22|0]=g>>>16;E[e+23|0]=g>>>24;g=H[f+12|0]|H[f+13|0]<<8|(H[f+14|0]<<16|H[f+15|0]<<24);f=H[f+8|0]|H[f+9|0]<<8|(H[f+10|0]<<16|H[f+11|0]<<24);E[e+8|0]=f;E[e+9|0]=f>>>8;E[e+10|0]=f>>>16;E[e+11|0]=f>>>24;E[e+12|0]=g;E[e+13|0]=g>>>8;E[e+14|0]=g>>>16;E[e+15|0]=g>>>24;f=a+3253|0;g=H[f+4|0]|H[f+5|0]<<8|(H[f+6|0]<<16|H[f+7|0]<<24);e=e+32|0;h=H[f|0]|H[f+1|0]<<8|(H[f+2|0]<<16|H[f+3|0]<<24);E[e|0]=h;E[e+1|0]=h>>>8;E[e+2|0]=h>>>16;E[e+3|0]=h>>>24;E[e+4|0]=g;E[e+5|0]=g>>>8;E[e+6|0]=g>>>16;E[e+7|0]=g>>>24;g=H[f+28|0]|H[f+29|0]<<8|(H[f+30|0]<<16|H[f+31|0]<<24);h=H[f+24|0]|H[f+25|0]<<8|(H[f+26|0]<<16|H[f+27|0]<<24);E[e+24|0]=h;E[e+25|0]=h>>>8;E[e+26|0]=h>>>16;E[e+27|0]=h>>>24;E[e+28|0]=g;E[e+29|0]=g>>>8;E[e+30|0]=g>>>16;E[e+31|0]=g>>>24;g=H[f+20|0]|H[f+21|0]<<8|(H[f+22|0]<<16|H[f+23|0]<<24);h=H[f+16|0]|H[f+17|0]<<8|(H[f+18|0]<<16|H[f+19|0]<<24);E[e+16|0]=h;E[e+17|0]=h>>>8;E[e+18|0]=h>>>16;E[e+19|0]=h>>>24;E[e+20|0]=g;E[e+21|0]=g>>>8;E[e+22|0]=g>>>16;E[e+23|0]=g>>>24;g=H[f+12|0]|H[f+13|0]<<8|(H[f+14|0]<<16|H[f+15|0]<<24);f=H[f+8|0]|H[f+9|0]<<8|(H[f+10|0]<<16|H[f+11|0]<<24);E[e+8|0]=f;E[e+9|0]=f>>>8;E[e+10|0]=f>>>16;E[e+11|0]=f>>>24;E[e+12|0]=g;E[e+13|0]=g>>>8;E[e+14|0]=g>>>16;E[e+15|0]=g>>>24;f=a+3285|0;g=H[f+4|0]|H[f+5|0]<<8|(H[f+6|0]<<16|H[f+7|0]<<24);e=e+32|0;h=H[f|0]|H[f+1|0]<<8|(H[f+2|0]<<16|H[f+3|0]<<24);E[e|0]=h;E[e+1|0]=h>>>8;E[e+2|0]=h>>>16;E[e+3|0]=h>>>24;E[e+4|0]=g;E[e+5|0]=g>>>8;E[e+6|0]=g>>>16;E[e+7|0]=g>>>24;g=H[f+28|0]|H[f+29|0]<<8|(H[f+30|0]<<16|H[f+31|0]<<24);h=H[f+24|0]|H[f+25|0]<<8|(H[f+26|0]<<16|H[f+27|0]<<24);E[e+24|0]=h;E[e+25|0]=h>>>8;E[e+26|0]=h>>>16;E[e+27|0]=h>>>24;E[e+28|0]=g;E[e+29|0]=g>>>8;E[e+30|0]=g>>>16;E[e+31|0]=g>>>24;g=H[f+20|0]|H[f+21|0]<<8|(H[f+22|0]<<16|H[f+23|0]<<24);h=H[f+16|0]|H[f+17|0]<<8|(H[f+18|0]<<16|H[f+19|0]<<24);E[e+16|0]=h;E[e+17|0]=h>>>8;E[e+18|0]=h>>>16;E[e+19|0]=h>>>24;E[e+20|0]=g;E[e+21|0]=g>>>8;E[e+22|0]=g>>>16;E[e+23|0]=g>>>24;g=H[f+12|0]|H[f+13|0]<<8|(H[f+14|0]<<16|H[f+15|0]<<24);f=H[f+8|0]|H[f+9|0]<<8|(H[f+10|0]<<16|H[f+11|0]<<24);E[e+8|0]=f;E[e+9|0]=f>>>8;E[e+10|0]=f>>>16;E[e+11|0]=f>>>24;E[e+12|0]=g;E[e+13|0]=g>>>8;E[e+14|0]=g>>>16;E[e+15|0]=g>>>24;f=Xa(e+32|0,a+12|0,32);e=a+48|0;f=oa(f,(G[a+44>>2]-e|0)/100|0);g=G[a+44>>2];if((g|0)!=(e|0)){while(1){f=oa(Xa(Pa(f,e),e+68|0,32),G[e+64>>2]);e=e+100|0;if((g|0)!=(e|0)){continue}break}}e=a+152|0;f=oa(f,(G[a+148>>2]-e|0)/68|0);j=G[a+148>>2];if((j|0)!=(e|0)){while(1){g=H[e+4|0]|H[e+5|0]<<8|(H[e+6|0]<<16|H[e+7|0]<<24);h=H[e|0]|H[e+1|0]<<8|(H[e+2|0]<<16|H[e+3|0]<<24);E[f|0]=h;E[f+1|0]=h>>>8;E[f+2|0]=h>>>16;E[f+3|0]=h>>>24;E[f+4|0]=g;E[f+5|0]=g>>>8;E[f+6|0]=g>>>16;E[f+7|0]=g>>>24;g=H[e+28|0]|H[e+29|0]<<8|(H[e+30|0]<<16|H[e+31|0]<<24);h=H[e+24|0]|H[e+25|0]<<8|(H[e+26|0]<<16|H[e+27|0]<<24);E[f+24|0]=h;E[f+25|0]=h>>>8;E[f+26|0]=h>>>16;E[f+27|0]=h>>>24;E[f+28|0]=g;E[f+29|0]=g>>>8;E[f+30|0]=g>>>16;E[f+31|0]=g>>>24;g=H[e+20|0]|H[e+21|0]<<8|(H[e+22|0]<<16|H[e+23|0]<<24);h=H[e+16|0]|H[e+17|0]<<8|(H[e+18|0]<<16|H[e+19|0]<<24);E[f+16|0]=h;E[f+17|0]=h>>>8;E[f+18|0]=h>>>16;E[f+19|0]=h>>>24;E[f+20|0]=g;E[f+21|0]=g>>>8;E[f+22|0]=g>>>16;E[f+23|0]=g>>>24;g=H[e+12|0]|H[e+13|0]<<8|(H[e+14|0]<<16|H[e+15|0]<<24);h=H[e+8|0]|H[e+9|0]<<8|(H[e+10|0]<<16|H[e+11|0]<<24);E[f+8|0]=h;E[f+9|0]=h>>>8;E[f+10|0]=h>>>16;E[f+11|0]=h>>>24;E[f+12|0]=g;E[f+13|0]=g>>>8;E[f+14|0]=g>>>16;E[f+15|0]=g>>>24;f=oa(Xa(f+32|0,e+36|0,32),G[e+32>>2]);e=e+68|0;if((j|0)!=(e|0)){continue}break}}e=a+496|0;f=oa(f,(G[a+492>>2]-e|0)/68|0);h=G[a+492>>2];if((h|0)!=(e|0)){while(1){a=H[e+4|0]|H[e+5|0]<<8|(H[e+6|0]<<16|H[e+7|0]<<24);g=H[e|0]|H[e+1|0]<<8|(H[e+2|0]<<16|H[e+3|0]<<24);E[f|0]=g;E[f+1|0]=g>>>8;E[f+2|0]=g>>>16;E[f+3|0]=g>>>24;E[f+4|0]=a;E[f+5|0]=a>>>8;E[f+6|0]=a>>>16;E[f+7|0]=a>>>24;a=H[e+28|0]|H[e+29|0]<<8|(H[e+30|0]<<16|H[e+31|0]<<24);g=H[e+24|0]|H[e+25|0]<<8|(H[e+26|0]<<16|H[e+27|0]<<24);E[f+24|0]=g;E[f+25|0]=g>>>8;E[f+26|0]=g>>>16;E[f+27|0]=g>>>24;E[f+28|0]=a;E[f+29|0]=a>>>8;E[f+30|0]=a>>>16;E[f+31|0]=a>>>24;a=H[e+20|0]|H[e+21|0]<<8|(H[e+22|0]<<16|H[e+23|0]<<24);g=H[e+16|0]|H[e+17|0]<<8|(H[e+18|0]<<16|H[e+19|0]<<24);E[f+16|0]=g;E[f+17|0]=g>>>8;E[f+18|0]=g>>>16;E[f+19|0]=g>>>24;E[f+20|0]=a;E[f+21|0]=a>>>8;E[f+22|0]=a>>>16;E[f+23|0]=a>>>24;a=H[e+12|0]|H[e+13|0]<<8|(H[e+14|0]<<16|H[e+15|0]<<24);g=H[e+8|0]|H[e+9|0]<<8|(H[e+10|0]<<16|H[e+11|0]<<24);E[f+8|0]=g;E[f+9|0]=g>>>8;E[f+10|0]=g>>>16;E[f+11|0]=g>>>24;E[f+12|0]=a;E[f+13|0]=a>>>8;E[f+14|0]=a>>>16;E[f+15|0]=a>>>24;f=oa(Xa(f+32|0,e+36|0,32),G[e+32>>2]);e=e+68|0;if((h|0)!=(e|0)){continue}break}}return ab(b,c,d,i)|0}function fc(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;h=ra(d);if((h|0)==-1){G[a+3216>>2]=7;return-1}va(c,d,c);l=Y-48|0;Y=l;a:{if((b|0)!=1){db(l+12|0,c,h);c=G[l+40>>2];if(!c){G[a+3216>>2]=4;b=-1;break a}h=G[l+44>>2]}b=-1;g=Y-240|0;Y=g;i=a;a=G[a+4>>2];hb(g+8|0,c,h,_[G[G[a>>2]>>2]](a)|0);b:{c:{d:{if(H[g+8|0]!=3){G[i+8>>2]=3;break d}if(G[g+32>>2]?!H[g+9|0]|!G[g+24>>2]:1){G[i+8>>2]=4;break d}a=G[i+4>>2];if(_[G[G[a>>2]+12>>2]](a,G[g+36>>2])>>>0>f>>>0){G[i+8>>2]=2;break d}if(G[g+28>>2]!=32){G[i+8>>2]=4;break d}e:{f:{a=i+152|0;h=G[i+148>>2];if((a|0)!=(h|0)){d=G[g+24>>2];c=a;while(1){if(!Oa(c,d)){break f}c=c+68|0;if((h|0)!=(c|0)){continue}break}}d=i+48|0;if((d|0)==G[i+44>>2]|J[g+12>>2]>=2001){break e}j=G[g+24>>2];c=H[j+12|0]|H[j+13|0]<<8|(H[j+14|0]<<16|H[j+15|0]<<24);G[g+48>>2]=H[j+8|0]|H[j+9|0]<<8|(H[j+10|0]<<16|H[j+11|0]<<24);G[g+52>>2]=c;c=H[j+20|0]|H[j+21|0]<<8|(H[j+22|0]<<16|H[j+23|0]<<24);G[g+56>>2]=H[j+16|0]|H[j+17|0]<<8|(H[j+18|0]<<16|H[j+19|0]<<24);G[g+60>>2]=c;c=H[j+28|0]|H[j+29|0]<<8|(H[j+30|0]<<16|H[j+31|0]<<24);h=g- -64|0;G[h>>2]=H[j+24|0]|H[j+25|0]<<8|(H[j+26|0]<<16|H[j+27|0]<<24);G[h+4>>2]=c;c=H[j+4|0]|H[j+5|0]<<8|(H[j+6|0]<<16|H[j+7|0]<<24);G[g+40>>2]=H[j|0]|H[j+1|0]<<8|(H[j+2|0]<<16|H[j+3|0]<<24);G[g+44>>2]=c;c=G[i>>2];n=g+40|0;m=g+208|0;Ca(d,n,m);h=i+12|0;k=g+144|0;Da(m,32,h,32,G[c+8>>2],G[c+12>>2],k,64);j=G[g+172>>2];G[g+136>>2]=G[g+168>>2];G[g+140>>2]=j;c=G[g+164>>2];G[g+128>>2]=G[g+160>>2];G[g+132>>2]=c;c=G[g+180>>2];G[g+76>>2]=G[g+176>>2];G[g+80>>2]=c;c=G[g+188>>2];G[g+84>>2]=G[g+184>>2];G[g+88>>2]=c;c=G[g+196>>2];G[g+92>>2]=G[g+192>>2];G[g+96>>2]=c;c=G[g+204>>2];G[g+100>>2]=G[g+200>>2];G[g+104>>2]=c;G[g+72>>2]=0;c=G[g+156>>2];G[g+120>>2]=G[g+152>>2];G[g+124>>2]=c;c=G[g+148>>2];G[g+112>>2]=G[g+144>>2];G[g+116>>2]=c;la(k,64);la(m,32);j=Yb(i,g+72|0,g+8|0,e,f);la(g+112|0,32);la(n,68);if((j|0)==-1){break e}c=i+492|0;e=G[i+148>>2];if((c|0)!=(e|0)){c=e+68|0;G[i+148>>2]=c}c=c-68|0;if((a|0)!=(c|0)){while(1){e=c;c=c-68|0;ma(e,c,68);if((a|0)!=(c|0)){continue}break}}f=G[g+24>>2];e=H[f+4|0]|H[f+5|0]<<8|(H[f+6|0]<<16|H[f+7|0]<<24);c=H[f|0]|H[f+1|0]<<8|(H[f+2|0]<<16|H[f+3|0]<<24);E[a|0]=c;E[a+1|0]=c>>>8;E[a+2|0]=c>>>16;E[a+3|0]=c>>>24;E[a+4|0]=e;E[a+5|0]=e>>>8;E[a+6|0]=e>>>16;E[a+7|0]=e>>>24;e=H[f+28|0]|H[f+29|0]<<8|(H[f+30|0]<<16|H[f+31|0]<<24);c=H[f+24|0]|H[f+25|0]<<8|(H[f+26|0]<<16|H[f+27|0]<<24);E[a+24|0]=c;E[a+25|0]=c>>>8;E[a+26|0]=c>>>16;E[a+27|0]=c>>>24;E[a+28|0]=e;E[a+29|0]=e>>>8;E[a+30|0]=e>>>16;E[a+31|0]=e>>>24;e=H[f+20|0]|H[f+21|0]<<8|(H[f+22|0]<<16|H[f+23|0]<<24);c=H[f+16|0]|H[f+17|0]<<8|(H[f+18|0]<<16|H[f+19|0]<<24);E[a+16|0]=c;E[a+17|0]=c>>>8;E[a+18|0]=c>>>16;E[a+19|0]=c>>>24;E[a+20|0]=e;E[a+21|0]=e>>>8;E[a+22|0]=e>>>16;E[a+23|0]=e>>>24;e=H[f+12|0]|H[f+13|0]<<8|(H[f+14|0]<<16|H[f+15|0]<<24);c=H[f+8|0]|H[f+9|0]<<8|(H[f+10|0]<<16|H[f+11|0]<<24);E[a+8|0]=c;E[a+9|0]=c>>>8;E[a+10|0]=c>>>16;E[a+11|0]=c>>>24;E[a+12|0]=e;E[a+13|0]=e>>>8;E[a+14|0]=e>>>16;E[a+15|0]=e>>>24;e=G[i>>2];c=Y-96|0;Y=c;o=c- -64|0;Ca(d,a,o);Da(o,32,h,32,G[e+8>>2],G[e+12>>2],c,64);f=G[c+28>>2];e=G[c+24>>2];E[h+24|0]=e;E[h+25|0]=e>>>8;E[h+26|0]=e>>>16;E[h+27|0]=e>>>24;E[h+28|0]=f;E[h+29|0]=f>>>8;E[h+30|0]=f>>>16;E[h+31|0]=f>>>24;f=G[c+20>>2];e=G[c+16>>2];E[h+16|0]=e;E[h+17|0]=e>>>8;E[h+18|0]=e>>>16;E[h+19|0]=e>>>24;E[h+20|0]=f;E[h+21|0]=f>>>8;E[h+22|0]=f>>>16;E[h+23|0]=f>>>24;f=G[c+12>>2];e=G[c+8>>2];E[h+8|0]=e;E[h+9|0]=e>>>8;E[h+10|0]=e>>>16;E[h+11|0]=e>>>24;E[h+12|0]=f;E[h+13|0]=f>>>8;E[h+14|0]=f>>>16;E[h+15|0]=f>>>24;f=G[c+4>>2];e=G[c>>2];E[h|0]=e;E[h+1|0]=e>>>8;E[h+2|0]=e>>>16;E[h+3|0]=e>>>24;E[h+4|0]=f;E[h+5|0]=f>>>8;E[h+6|0]=f>>>16;E[h+7|0]=f>>>24;p=G[c+40>>2];q=G[c+44>>2];m=G[c+48>>2];n=G[c+52>>2];k=G[c+56>>2];h=G[c+60>>2];f=G[c+32>>2];e=G[c+36>>2];G[i+184>>2]=0;G[i+212>>2]=k;G[i+216>>2]=h;G[i+204>>2]=m;G[i+208>>2]=n;G[i+196>>2]=p;G[i+200>>2]=q;G[i+188>>2]=f;G[i+192>>2]=e;la(c,64);la(o,32);Y=c+96|0;la(d,100);c=G[i+44>>2]-100|0;G[i+44>>2]=c;if((c|0)!=(d|0)){while(1){c=d;d=d+100|0;ma(c,d,100);if(G[i+44>>2]!=(d|0)){continue}break}}c=a;break c}if(J[c+32>>2]>J[g+12>>2]){d=i+496|0;c=G[i+492>>2];if((d|0)==(c|0)){break e}while(1){g:{if(G[g+12>>2]!=G[d+32>>2]){break g}if(Oa(d,G[g+24>>2])){break g}a=G[i+4>>2];j=_[G[G[a>>2]+16>>2]](a,d+36|0,32,G[g+16>>2],G[g+20>>2],G[g+32>>2],G[g+36>>2],e,f)|0;if((j|0)==-1){break g}la(d,68);a=G[i+492>>2]-68|0;G[i+492>>2]=a;if((a|0)==(d|0)){break b}while(1){a=d;d=d+68|0;ma(a,d,68);if(G[i+492>>2]!=(d|0)){continue}break}break b}d=d+68|0;if((c|0)!=(d|0)){continue}break}break e}j=Yb(i,c+32|0,g+8|0,e,f);if((j|0)!=-1){break c}}G[i+8>>2]=5}j=-1;break b}if(J[c+32>>2]>2]){f=i+532|0;h=c+36|0;a=i+3216|0;k=i+496|0;while(1){d=a;e=G[i+492>>2];if((a|0)!=(e|0)){d=e+68|0;G[i+492>>2]=d}d=d-68|0;if((k|0)!=(d|0)){while(1){e=d;d=d-68|0;ma(e,d,68);if((d|0)!=(k|0)){continue}break}}na(h,32,1868,1,f);G[i+528>>2]=G[c+32>>2];d=G[c+28>>2];G[k+24>>2]=G[c+24>>2];G[k+28>>2]=d;d=G[c+20>>2];G[k+16>>2]=G[c+16>>2];G[k+20>>2]=d;d=G[c+12>>2];G[k+8>>2]=G[c+8>>2];G[k+12>>2]=d;d=G[c+4>>2];G[k>>2]=G[c>>2];G[k+4>>2]=d;na(h,32,1869,1,h);d=G[c+32>>2]+1|0;G[c+32>>2]=d;if(d>>>0>2]){continue}break}}a=c+36|0;na(a,32,1869,1,a);G[c+32>>2]=G[c+32>>2]+1}Y=g+240|0;a=j;if((a|0)==-1){G[i+3216>>2]=G[i+8>>2];G[i+8>>2]=0;break a}E[i+3220|0]=1;b=a}Y=l+48|0;return b|0}function ia(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,H=0,I=0,J=0,K=0,L=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0;L=G[b+12>>2];q=L<<1;u=q>>31;S=L>>31;c=we(q,u,L,S);e=Z;g=G[b+16>>2];v=g>>31;f=G[b+8>>2];x=f<<1;C=x>>31;k=we(g,v,x,C);d=k+c|0;c=Z+e|0;c=d>>>0>>0?c+1|0:c;y=G[b+20>>2];o=y<<1;D=o>>31;h=G[b+4>>2];k=h<<1;r=k>>31;l=we(o,D,k,r);e=l+d|0;d=Z+c|0;d=e>>>0>>0?d+1|0:d;p=G[b+24>>2];z=p>>31;E=G[b>>2];l=E<<1;s=l>>31;i=we(p,z,l,s);e=i+e|0;c=Z+d|0;c=e>>>0>>0?c+1|0:c;d=e;F=G[b+32>>2];m=M(F,19);A=m>>31;P=F>>31;e=we(m,A,F,P);d=d+e|0;c=Z+c|0;c=d>>>0>>0?c+1|0:c;_=G[b+36>>2];i=M(_,38);t=i>>31;H=G[b+28>>2];Q=H<<1;T=Q>>31;e=we(i,t,Q,T);d=e+d|0;b=Z+c|0;B=d;e=d>>>0>>0?b+1|0:b;b=we(k,r,g,v);c=Z;d=we(x,C,L,S);b=d+b|0;c=Z+c|0;c=b>>>0>>0?c+1|0:c;R=y>>31;j=we(y,R,l,s);b=j+b|0;d=Z+c|0;d=b>>>0>>0?d+1|0:d;j=we(m,A,Q,T);b=j+b|0;c=Z+d|0;c=b>>>0>>0?c+1|0:c;d=we(i,t,p,z);b=d+b|0;c=Z+c|0;U=b;n=b>>>0>>0?c+1|0:c;c=we(k,r,q,u);d=Z;b=f;w=b>>31;V=b;f=we(b,w,b,w);c=f+c|0;b=Z+d|0;b=c>>>0>>0?b+1|0:b;f=we(l,s,g,v);d=f+c|0;c=Z+b|0;c=d>>>0>>0?c+1|0:c;j=M(H,38);N=j>>31;W=H>>31;f=we(j,N,H,W);b=f+d|0;d=Z+c|0;d=b>>>0>>0?d+1|0:d;c=b;b=p<<1;f=we(m,A,b,b>>31);b=c+f|0;c=Z+d|0;c=b>>>0>>0?c+1|0:c;d=b;b=we(i,t,o,D);d=d+b|0;c=Z+c|0;$=d;c=b>>>0>d>>>0?c+1|0:c;aa=c;b=c;d=d+33554432|0;b=d>>>0<33554432?b+1|0:b;ba=d;ca=b;c=b>>26;d=(b&67108863)<<6|d>>>26;b=d+U|0;c=c+n|0;U=b;c=b>>>0>>0?c+1|0:c;b=b+16777216|0;d=b>>>0<16777216?c+1|0:c;da=b;c=d>>25;b=(d&33554431)<<7|b>>>25;d=b+B|0;c=c+e|0;b=b>>>0>d>>>0?c+1|0:c;c=d+33554432|0;b=c>>>0<33554432?b+1|0:b;B=c;f=b;G[a+24>>2]=d-(c&-67108864);b=we(l,s,V,w);c=Z;I=h>>31;e=we(k,r,h,I);b=e+b|0;d=Z+c|0;d=b>>>0>>0?d+1|0:d;e=M(p,19);O=e>>31;n=we(e,O,p,z);b=n+b|0;c=Z+d|0;c=b>>>0>>0?c+1|0:c;n=we(o,D,j,N);d=n+b|0;b=Z+c|0;b=d>>>0>>0?b+1|0:b;n=g<<1;X=n>>31;J=we(m,A,n,X);d=J+d|0;c=Z+b|0;c=d>>>0>>0?c+1|0:c;b=d;d=we(i,t,q,u);b=b+d|0;c=Z+c|0;K=b;J=b>>>0>>0?c+1|0:c;b=we(o,D,e,O);c=Z;h=we(l,s,h,I);b=h+b|0;d=Z+c|0;d=b>>>0>>0?d+1|0:d;h=we(g,v,j,N);b=h+b|0;c=Z+d|0;c=b>>>0>>0?c+1|0:c;h=we(m,A,q,u);d=h+b|0;b=Z+c|0;b=d>>>0>>0?b+1|0:b;h=we(i,t,V,w);d=h+d|0;c=Z+b|0;Y=d;I=d>>>0>>0?c+1|0:c;b=M(y,38);d=we(b,b>>31,y,R);h=Z;b=E;c=b>>31;E=d;d=we(b,c,b,c);b=E+d|0;c=Z+h|0;c=b>>>0>>0?c+1|0:c;e=we(e,O,n,X);b=e+b|0;d=Z+c|0;d=b>>>0>>0?d+1|0:d;e=we(q,u,j,N);b=e+b|0;c=Z+d|0;c=b>>>0>>0?c+1|0:c;e=we(m,A,x,C);d=e+b|0;b=Z+c|0;b=d>>>0>>0?b+1|0:b;e=we(k,r,i,t);d=e+d|0;c=Z+b|0;h=d;c=d>>>0>>0?c+1|0:c;E=c;d=d+33554432|0;c=d>>>0<33554432?c+1|0:c;O=d;ea=c;b=c>>26;c=(c&67108863)<<6|d>>>26;e=c+Y|0;d=b+I|0;I=e;c=c>>>0>e>>>0?d+1|0:d;d=e+16777216|0;c=d>>>0<16777216?c+1|0:c;Y=d;e=(c&33554431)<<7|d>>>25;d=e+K|0;c=(c>>25)+J|0;c=d>>>0>>0?c+1|0:c;b=d+33554432|0;c=b>>>0<33554432?c+1|0:c;J=b;e=c;G[a+8>>2]=d-(b&-67108864);b=we(x,C,y,R);c=Z;d=we(g,v,q,u);b=d+b|0;c=Z+c|0;c=b>>>0>>0?c+1|0:c;d=we(k,r,p,z);b=d+b|0;c=Z+c|0;c=b>>>0>>0?c+1|0:c;d=we(l,s,H,W);b=d+b|0;c=Z+c|0;c=b>>>0>>0?c+1|0:c;d=we(i,t,F,P);K=d+b|0;b=Z+c|0;d=d>>>0>K>>>0?b+1|0:b;c=f>>26;f=(f&67108863)<<6|B>>>26;b=f+K|0;d=c+d|0;B=b;c=b>>>0>>0?d+1|0:d;b=b+16777216|0;c=b>>>0<16777216?c+1|0:c;K=b;f=c;G[a+28>>2]=B-(b&-33554432);b=we(l,s,L,S);d=Z;w=we(k,r,V,w);c=w+b|0;b=Z+d|0;b=c>>>0>>0?b+1|0:b;j=we(p,z,j,N);c=j+c|0;d=Z+b|0;m=we(m,A,o,D);b=m+c|0;c=Z+(c>>>0>>0?d+1|0:d)|0;c=b>>>0>>0?c+1|0:c;d=we(i,t,g,v);b=d+b|0;c=Z+c|0;c=b>>>0>>0?c+1|0:c;d=e>>26;B=b;b=(e&67108863)<<6|J>>>26;e=B+b|0;c=c+d|0;d=e;b=d>>>0>>0?c+1|0:c;c=d+16777216|0;b=c>>>0<16777216?b+1|0:b;m=c;e=b;G[a+12>>2]=d-(c&-33554432);b=we(p,z,x,C);c=Z;d=we(g,v,g,v);b=d+b|0;c=Z+c|0;c=b>>>0>>0?c+1|0:c;d=we(q,u,o,D);b=d+b|0;c=Z+c|0;c=b>>>0>>0?c+1|0:c;g=we(k,r,Q,T);d=g+b|0;b=Z+c|0;b=d>>>0>>0?b+1|0:b;g=we(l,s,F,P);c=g+d|0;d=Z+b|0;d=c>>>0>>0?d+1|0:d;b=i;i=_;o=i>>31;g=we(b,t,i,o);b=g+c|0;c=Z+d|0;c=b>>>0>>0?c+1|0:c;d=b;b=f>>25;f=(f&33554431)<<7|K>>>25;d=d+f|0;c=b+c|0;c=d>>>0>>0?c+1|0:c;b=d+33554432|0;c=b>>>0<33554432?c+1|0:c;g=b;f=c;G[a+32>>2]=d-(b&-67108864);j=U-(da&-33554432)|0;c=e>>25;e=(e&33554431)<<7|m>>>25;b=ba&-67108864;d=e+($-b|0)|0;b=c+(aa-((b>>>0>$>>>0)+ca|0)|0)|0;b=d>>>0>>0?b+1|0:b;e=d;d=d+33554432|0;c=d>>>0<33554432?b+1|0:b;b=((c&67108863)<<6|d>>>26)+j|0;G[a+20>>2]=b;G[a+16>>2]=e-(d&-67108864);b=we(q,u,p,z);d=Z;e=we(y,R,n,X);c=e+b|0;b=Z+d|0;b=c>>>0>>0?b+1|0:b;e=we(x,C,H,W);d=e+c|0;c=Z+b|0;c=d>>>0>>0?c+1|0:c;e=we(k,r,F,P);b=e+d|0;d=Z+c|0;d=b>>>0>>0?d+1|0:d;c=b;b=we(l,s,i,o);e=c+b|0;c=Z+d|0;b=b>>>0>e>>>0?c+1|0:c;c=f>>26;f=(f&67108863)<<6|g>>>26;d=f+e|0;c=b+c|0;b=d>>>0>>0?c+1|0:c;c=d+16777216|0;b=c>>>0<16777216?b+1|0:b;G[a+36>>2]=d-(c&-33554432);f=I-(Y&-33554432)|0;d=O&-67108864;e=h-d|0;k=E-((d>>>0>h>>>0)+ea|0)|0;b=we((b&33554431)<<7|c>>>25,b>>25,19,0);d=b+e|0;c=Z+k|0;b=b>>>0>d>>>0?c+1|0:c;c=d+33554432|0;b=c>>>0<33554432?b+1|0:b;b=((b&67108863)<<6|c>>>26)+f|0;G[a+4>>2]=b;G[a>>2]=d-(c&-67108864)}function ja(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,H=0,I=0,J=0;g=Y-160|0;Y=g;o=G[b>>2];f=G[b+8>>2];p=G[b+16>>2];u=p>>31;q=G[b+24>>2];v=q>>31;k=G[b+32>>2];l=G[b+40>>2];h=G[b+72>>2];x=h>>31;r=G[b+48>>2];w=r>>31;c=we(h,x,r,w);d=Z;s=G[b+64>>2];y=s>>31;t=G[b+56>>2];z=t>>31;e=we(s,y,t,z);c=e+c|0;b=Z+d|0;b=c>>>0>>0?b+1|0:b;e=c;m=b;d=c;c=b<<1|c>>>31;G[g+120>>2]=d<<1;G[g+124>>2]=c;A=l>>31;b=we(s,y,l,A);d=Z;i=we(r,w,t,z);c=i+b|0;b=Z+d|0;b=c>>>0>>0?b+1|0:b;B=k>>31;i=we(h,x,k,B);c=i+c|0;d=Z+b|0;d=c>>>0>>0?d+1|0:d;i=c;E=d;G[g+104>>2]=c<<1;G[g+108>>2]=d<<1|c>>>31;b=we(q,v,r,w);d=Z;F=we(l,A,k,B);c=F+b|0;b=Z+d|0;b=c>>>0>>0?b+1|0:b;d=we(p,u,t,z);c=d+c|0;b=Z+b|0;b=c>>>0>>0?b+1|0:b;F=f;C=f>>31;j=we(s,y,f,C);d=j+c|0;c=Z+b|0;c=d>>>0>>0?c+1|0:c;D=o>>31;j=we(h,x,o,D);b=j+d|0;d=Z+c|0;d=b>>>0>>0?d+1|0:d;G[g+72>>2]=b<<1;G[g+76>>2]=d<<1|b>>>31;b=h;d=b>>31;b=we((b&2147483647)<<1,d,b,x);c=Z;H=c;n=b;G[g+144>>2]=b;G[g+148>>2]=c;d=we(k,B,k,B);j=Z;b=we(t,z,f,C);I=Z;J=we(q,v,l,A);c=J+b|0;b=Z+I|0;b=(c>>>0>>0?b+1|0:b)<<2|c>>>30;I=d;d=c<<2;c=I+d|0;b=b+j|0;I=c;d=c>>>0>>0?b+1|0:b;b=we(s,y,o,D);c=Z;j=b;b=we(p,u,r,w);j=j+b|0;c=Z+c|0;b=(b>>>0>j>>>0?c+1|0:c)<<1|j>>>31;j=j<<1;c=j+I|0;d=b+d|0;d=c>>>0>>0?d+1|0:d;n=we(n,H,19,0);c=n+c|0;b=Z+d|0;G[g+64>>2]=c;G[g+68>>2]=c>>>0>>0?b+1|0:b;n=we(e,m,36,0);j=Z;b=we(k,B,f,C);d=Z;H=we(p,u,q,v);c=H+b|0;b=Z+d|0;b=c>>>0>>0?b+1|0:b;H=we(l,A,o,D);d=H+c|0;c=Z+b|0;b=(d>>>0>>0?c+1|0:c)+m|0;c=d+e|0;b=(c>>>0>>0?b+1|0:b)<<1|c>>>31;e=c<<1;c=e+n|0;d=b+j|0;G[g+40>>2]=c;G[g+44>>2]=c>>>0>>0?d+1|0:d;e=we(i,E,36,0);m=Z;b=we(q,v,o,D);c=Z;n=we(p,u,f,C);d=n+b|0;b=Z+c|0;c=(d>>>0>>0?b+1|0:b)+E|0;b=d+i|0;d=(b>>>0>>0?c+1|0:c)<<1|b>>>31;c=e;e=b<<1;c=c+e|0;b=d+m|0;G[g+24>>2]=c;G[g+28>>2]=c>>>0>>0?b+1|0:b;c=s;d=c>>31;d=we(h,x,(c&2147483647)<<1,d);b=Z;m=b;G[g+136>>2]=d;G[g+140>>2]=b;c=b;b=we(p,u,l,A);i=Z;E=we(q,v,k,B);e=E+b|0;b=Z+i|0;b=e>>>0>>0?b+1|0:b;i=we(r,w,f,C);e=i+e|0;b=Z+b|0;b=e>>>0>>0?b+1|0:b;i=we(t,z,o,D);e=i+e|0;b=Z+b|0;b=(e>>>0>>0?b+1|0:b)<<1|e>>>31;i=e<<1;e=i+d|0;c=b+c|0;c=e>>>0>>0?c+1|0:c;b=e;e=we(d,m,18,0);b=b+e|0;d=Z+c|0;G[g+56>>2]=b;G[g+60>>2]=b>>>0>>0?d+1|0:d;b=t;c=b>>30;b=we(h,x,(b&1073741823)<<2,c);d=Z;e=we(s,y,s,y);c=e+b|0;b=Z+d|0;G[g+128>>2]=c;b=c>>>0>>0?b+1|0:b;G[g+132>>2]=b;e=c;m=b;b=we(p,u,k,B);d=Z;i=we(q,v,q,v);c=i+b|0;b=Z+d|0;b=c>>>0>>0?b+1|0:b;d=b;b=c;c=f;n=0;c=we(l,A,(c&2147483647)<<1|n>>>31,c>>31);b=b+c|0;d=Z+d|0;d=b>>>0>>0?d+1|0:d;i=we(r,w,o,D);c=i+b|0;b=Z+d|0;b=(c>>>0>>0?b+1|0:b)<<1|c>>>31;d=c<<1;c=d+e|0;b=b+m|0;b=c>>>0>>0?b+1|0:b;e=we(e,m,18,0);d=e+c|0;c=Z+b|0;G[g+48>>2]=d;G[g+52>>2]=d>>>0>>0?c+1|0:c;b=we(r,w,s,y);c=Z;e=we(t,z,t,z);b=e+b|0;d=Z+c|0;d=b>>>0>>0?d+1|0:d;m=b;b=l;c=b>>31;e=we(h,x,(b&2147483647)<<1,c);c=m+e|0;b=Z+d|0;b=c>>>0>>0?b+1|0:b;e=c;m=b;b=b<<1|c>>>31;c=c<<1;G[g+112>>2]=c;G[g+116>>2]=b;i=c;E=b;b=we(q,v,(f&1073741823)<<2|n>>>30,f>>30);f=Z;d=we(p,u,p,u);c=d+b|0;b=Z+f|0;b=c>>>0>>0?b+1|0:b;f=b;d=c;b=o;c=b>>31;n=(b&2147483647)<<1;j=c;b=we(k,B,n,c);c=d+b|0;d=Z+f|0;b=(b>>>0>c>>>0?d+1|0:d)+E|0;f=c;c=c+i|0;b=f>>>0>c>>>0?b+1|0:b;f=we(e,m,36,0);c=f+c|0;b=Z+b|0;G[g+32>>2]=c;G[g+36>>2]=c>>>0>>0?b+1|0:b;d=k;b=d>>31;b=we(s,y,(d&2147483647)<<1,b);f=Z;d=we(r,w,r,w);c=d+b|0;b=Z+f|0;f=c;d=c>>>0>>0?b+1|0:b;b=we(q,v,h,x);c=Z;e=we(t,z,l,A);b=e+b|0;c=Z+c|0;m=f;f=b;b=(b>>>0>>0?c+1|0:c)<<2|b>>>30;f=f<<2;c=m+f|0;b=b+d|0;G[g+96>>2]=c;b=c>>>0>>0?b+1|0:b;G[g+100>>2]=b;f=b;b=we(p,u,o,D);d=Z;e=b;b=we(F,C,F,C);e=e+b|0;d=Z+d|0;b=(b>>>0>e>>>0?d+1|0:d)<<1|e>>>31;e=e<<1;d=e+c|0;b=b+f|0;b=d>>>0>>0?b+1|0:b;e=d;d=we(c,f,18,0);f=e+d|0;c=Z+b|0;G[g+16>>2]=f;G[g+20>>2]=d>>>0>f>>>0?c+1|0:c;b=we(t,z,k,B);f=Z;d=we(r,w,l,A);c=d+b|0;b=Z+f|0;b=c>>>0>>0?b+1|0:b;f=we(q,v,s,y);c=f+c|0;d=Z+b|0;d=c>>>0>>0?d+1|0:d;f=we(p,u,h,x);c=f+c|0;b=Z+d|0;b=c>>>0>>0?b+1|0:b;f=b;d=g;e=c<<1;G[d+88>>2]=e;b=b<<1|c>>>31;G[d+92>>2]=b;d=e;e=we(F,C,n,j);d=d+e|0;b=Z+b|0;b=d>>>0>>0?b+1|0:b;e=d;d=we(c,f,36,0);f=e+d|0;c=Z+b|0;G[g+8>>2]=f;G[g+12>>2]=d>>>0>f>>>0?c+1|0:c;b=we(h,x,F,C);c=Z;h=we(q,v,t,z);b=h+b|0;d=Z+c|0;c=b;b=(b>>>0>>0?d+1|0:d)<<2|b>>>30;f=c<<2;c=b;b=we(r,w,k,B);k=Z;l=we(l,A,l,A);h=l+b|0;b=Z+k|0;b=h>>>0>>0?b+1|0:b;k=we(p,u,s,y);h=k+h|0;b=Z+b|0;b=(h>>>0>>0?b+1|0:b)<<1|h>>>31;d=f;f=h<<1;h=d+f|0;c=b+c|0;G[g+80>>2]=h;c=f>>>0>h>>>0?c+1|0:c;G[g+84>>2]=c;o=we(o,D,o,D);b=o+h|0;d=Z+c|0;h=we(h,c,18,0);c=h+b|0;b=Z+(b>>>0>>0?d+1|0:d)|0;G[g>>2]=c;G[g+4>>2]=c>>>0>>0?b+1|0:b;za(g);ma(a,g,80);Y=g+160|0}function gb(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0;a:{if(!a|!b){break a}d=G[a+72>>2];if(d>>>0>127){break a}G[a+72>>2]=d+1;c=G[a+4>>2]+(d>>>29|0)|0;h=d<<3;e=h+G[a>>2]|0;G[a>>2]=e;G[a+4>>2]=e>>>0>>0?c+1|0:c;h=a+76|0;E[d+h|0]=128;e=G[a+72>>2];if(e>>>0>=113){b:{if(e>>>0>127){break b}d=e;f=0-d&3;if(f){c=d;while(1){d=c+1|0;G[a+72>>2]=d;E[(a+c|0)+76|0]=0;c=d;g=g+1|0;if((f|0)!=(g|0)){continue}break}}if(e-125>>>0<3){break b}c=a+76|0;while(1){e=d+1|0;G[a+72>>2]=e;E[c+d|0]=0;f=d+2|0;G[a+72>>2]=f;E[c+e|0]=0;e=d+3|0;G[a+72>>2]=e;E[c+f|0]=0;d=d+4|0;G[a+72>>2]=d;E[c+e|0]=0;if((d|0)!=128){continue}break}}ya(a,h);e=0}g=0;d=e;f=0-d&3;if(f){c=d;while(1){d=c+1|0;G[a+72>>2]=d;E[(a+c|0)+76|0]=0;c=d;g=g+1|0;if((f|0)!=(g|0)){continue}break}}if(e-117>>>0>=3){c=a+76|0;while(1){e=d+1|0;G[a+72>>2]=e;E[c+d|0]=0;f=d+2|0;G[a+72>>2]=f;E[c+e|0]=0;e=d+3|0;G[a+72>>2]=e;E[c+f|0]=0;d=d+4|0;G[a+72>>2]=d;E[c+e|0]=0;if((d|0)!=120){continue}break}}e=G[a>>2];f=e&16711680;c=f>>>8|0;i=f<<24;g=e&-16777216;f=g>>>24|0;d=G[a+4>>2];d=i|g<<8|(((d&255)<<24|e>>>8)&-16777216|((d&16777215)<<8|e>>>24)&16711680|(d>>>8&65280|d>>>24));E[a+196|0]=d;E[a+197|0]=d>>>8;E[a+198|0]=d>>>16;E[a+199|0]=d>>>24;d=c|f|(e<<24|(e&65280)<<8);c=0;d=d|(c|c);E[a+200|0]=d;E[a+201|0]=d>>>8;E[a+202|0]=d>>>16;E[a+203|0]=d>>>24;ya(a,h);E[b|0]=H[a+15|0];E[b+1|0]=I[a+14>>1];E[b+2|0]=G[a+12>>2]>>>8;E[b+3|0]=G[a+12>>2];c=G[a+8>>2];E[b+4|0]=(G[a+12>>2]&16777215)<<8|c>>>24;c=G[a+8>>2];E[b+5|0]=(G[a+12>>2]&65535)<<16|c>>>16;c=G[a+8>>2];E[b+6|0]=(G[a+12>>2]&255)<<24|c>>>8;E[b+7|0]=G[a+8>>2];E[b+8|0]=H[a+23|0];E[b+9|0]=I[a+22>>1];E[b+10|0]=G[a+20>>2]>>>8;E[b+11|0]=G[a+20>>2];c=G[a+16>>2];E[b+12|0]=(G[a+20>>2]&16777215)<<8|c>>>24;c=G[a+16>>2];E[b+13|0]=(G[a+20>>2]&65535)<<16|c>>>16;c=G[a+16>>2];E[b+14|0]=(G[a+20>>2]&255)<<24|c>>>8;E[b+15|0]=G[a+16>>2];E[b+16|0]=H[a+31|0];E[b+17|0]=I[a+30>>1];E[b+18|0]=G[a+28>>2]>>>8;E[b+19|0]=G[a+28>>2];c=G[a+24>>2];E[b+20|0]=(G[a+28>>2]&16777215)<<8|c>>>24;c=G[a+24>>2];E[b+21|0]=(G[a+28>>2]&65535)<<16|c>>>16;c=G[a+24>>2];E[b+22|0]=(G[a+28>>2]&255)<<24|c>>>8;E[b+23|0]=G[a+24>>2];E[b+24|0]=H[a+39|0];E[b+25|0]=I[a+38>>1];E[b+26|0]=G[a+36>>2]>>>8;E[b+27|0]=G[a+36>>2];c=G[a+32>>2];E[b+28|0]=(G[a+36>>2]&16777215)<<8|c>>>24;c=G[a+32>>2];E[b+29|0]=(G[a+36>>2]&65535)<<16|c>>>16;c=G[a+32>>2];E[b+30|0]=(G[a+36>>2]&255)<<24|c>>>8;E[b+31|0]=G[a+32>>2];E[b+32|0]=H[a+47|0];E[b+33|0]=I[a+46>>1];E[b+34|0]=G[a+44>>2]>>>8;E[b+35|0]=G[a+44>>2];c=G[a+40>>2];E[b+36|0]=(G[a+44>>2]&16777215)<<8|c>>>24;c=G[a+40>>2];E[b+37|0]=(G[a+44>>2]&65535)<<16|c>>>16;c=G[a+40>>2];E[b+38|0]=(G[a+44>>2]&255)<<24|c>>>8;E[b+39|0]=G[a+40>>2];E[b+40|0]=H[a+55|0];E[b+41|0]=I[a+54>>1];E[b+42|0]=G[a+52>>2]>>>8;E[b+43|0]=G[a+52>>2];c=G[a+48>>2];E[b+44|0]=(G[a+52>>2]&16777215)<<8|c>>>24;c=G[a+48>>2];E[b+45|0]=(G[a+52>>2]&65535)<<16|c>>>16;c=G[a+48>>2];E[b+46|0]=(G[a+52>>2]&255)<<24|c>>>8;E[b+47|0]=G[a+48>>2];E[b+48|0]=H[a+63|0];E[b+49|0]=I[a+62>>1];E[b+50|0]=G[a+60>>2]>>>8;E[b+51|0]=G[a+60>>2];c=G[a+56>>2];E[b+52|0]=(G[a+60>>2]&16777215)<<8|c>>>24;c=G[a+56>>2];E[b+53|0]=(G[a+60>>2]&65535)<<16|c>>>16;c=G[a+56>>2];E[b+54|0]=(G[a+60>>2]&255)<<24|c>>>8;E[b+55|0]=G[a+56>>2];E[b+56|0]=H[a+71|0];E[b+57|0]=I[a+70>>1];d=a- -64|0;E[b+58|0]=G[d+4>>2]>>>8;E[b+59|0]=G[a+68>>2];c=G[d>>2];E[b+60|0]=(G[d+4>>2]&16777215)<<8|c>>>24;c=G[d>>2];E[b+61|0]=(G[d+4>>2]&65535)<<16|c>>>16;c=G[d>>2];E[b+62|0]=(G[d+4>>2]&255)<<24|c>>>8;E[b+63|0]=G[d>>2]}}function db(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0;G[a+4>>2]=0;G[a+8>>2]=0;E[a|0]=0;G[a+12>>2]=0;G[a+16>>2]=0;G[a+20>>2]=0;G[a+24>>2]=0;G[a+28>>2]=0;G[a+32>>2]=0;a:{if(!c){break a}E[a|0]=H[b|0];if((c|0)==1){break a}c=b+c|0;d=b+1|0;while(1){h=d;if(H[d|0]==10){f=d+1|0;b=f;while(1){b:{if((b|0)==(c|0)){g=c;break b}d=E[b|0];g=b+1|0;b=g;if((d|0)<0){continue}}break}c:{if((f|0)==(g|0)){e=0;break c}f=(h^-1)+g|0;i=f&3;d=0;e=0;b=g;if((b-h|0)-2>>>0>=3){j=f&-4;f=0;while(1){e=(H[b-2|0]&127|(e<<14|(H[b-1|0]&127)<<7))<<14|(H[b-3|0]&127)<<7;b=b-4|0;e=e|H[b|0]&127;f=f+4|0;if((j|0)!=(f|0)){continue}break}}if(i){while(1){b=b-1|0;e=H[b|0]&127|e<<7;d=d+1|0;if((i|0)!=(d|0)){continue}break}}if(c-g>>>0>>0){break a}}G[a+24>>2]=e;G[a+20>>2]=g;d=e+g|0}if((c|0)==(d|0)){break a}if(H[d|0]==18){g=d+1|0;b=g;while(1){d:{if((b|0)==(c|0)){f=c;break d}e=E[b|0];f=b+1|0;b=f;if((e|0)<0){continue}}break}e:{if((f|0)==(g|0)){e=0;break e}j=(d^-1)+f|0;i=j&3;g=0;e=0;b=f;if((b-d|0)-2>>>0>=3){j=j&-4;d=0;while(1){e=(H[b-2|0]&127|(e<<14|(H[b-1|0]&127)<<7))<<14|(H[b-3|0]&127)<<7;b=b-4|0;e=e|H[b|0]&127;d=d+4|0;if((j|0)!=(d|0)){continue}break}}if(i){while(1){b=b-1|0;e=H[b|0]&127|e<<7;g=g+1|0;if((i|0)!=(g|0)){continue}break}}if(c-f>>>0>>0){break a}}G[a+16>>2]=e;G[a+12>>2]=f;d=e+f|0}if((c|0)==(d|0)){break a}if(H[d|0]==26){g=d+1|0;b=g;while(1){f:{if((b|0)==(c|0)){f=c;break f}e=E[b|0];f=b+1|0;b=f;if((e|0)<0){continue}}break}g:{if((f|0)==(g|0)){e=0;break g}j=(d^-1)+f|0;i=j&3;g=0;e=0;b=f;if((b-d|0)-2>>>0>=3){j=j&-4;d=0;while(1){e=(H[b-2|0]&127|(e<<14|(H[b-1|0]&127)<<7))<<14|(H[b-3|0]&127)<<7;b=b-4|0;e=e|H[b|0]&127;d=d+4|0;if((j|0)!=(d|0)){continue}break}}if(i){while(1){b=b-1|0;e=H[b|0]&127|e<<7;g=g+1|0;if((i|0)!=(g|0)){continue}break}}if(c-f>>>0>>0){break a}}G[a+8>>2]=e;G[a+4>>2]=f;d=e+f|0}if((c|0)==(d|0)){break a}if(H[d|0]==34){g=d+1|0;b=g;while(1){h:{if((b|0)==(c|0)){f=c;break h}e=E[b|0];f=b+1|0;b=f;if((e|0)<0){continue}}break}i:{if((f|0)==(g|0)){e=0;break i}j=(d^-1)+f|0;i=j&3;g=0;e=0;b=f;if((b-d|0)-2>>>0>=3){j=j&-4;d=0;while(1){e=(H[b-2|0]&127|(e<<14|(H[b-1|0]&127)<<7))<<14|(H[b-3|0]&127)<<7;b=b-4|0;e=e|H[b|0]&127;d=d+4|0;if((j|0)!=(d|0)){continue}break}}if(i){while(1){b=b-1|0;e=H[b|0]&127|e<<7;g=g+1|0;if((i|0)!=(g|0)){continue}break}}if(c-f>>>0>>0){break a}}G[a+32>>2]=e;G[a+28>>2]=f;d=e+f|0}j:{if((c|0)==(d|0)|(d|0)!=(h|0)){break j}k:{switch(H[h|0]&7){case 0:while(1){l:{if((c|0)==(h|0)){b=c;break l}f=E[h|0];b=h+1|0;h=b;if((f|0)<0){continue}}break};while(1){if((b|0)==(c|0)){d=c;break j}f=E[b|0];d=b+1|0;b=d;if((f|0)<0){continue}break};break j;case 2:break k;default:break a}}while(1){m:{if((c|0)==(h|0)){d=c;break m}b=E[h|0];d=h+1|0;h=d;if((b|0)<0){continue}}break}b=d;while(1){n:{if((b|0)==(c|0)){g=c;break n}f=E[b|0];g=b+1|0;b=g;if((f|0)<0){continue}}break}if((d|0)==(g|0)){break j}i=g-d|0;f=i&3;e=0;h=0;b=g;if(b+(d^-1)>>>0>=3){i=i&-4;d=0;while(1){h=(H[b-2|0]&127|(h<<14|(H[b-1|0]&127)<<7))<<14|(H[b-3|0]&127)<<7;b=b-4|0;h=h|H[b|0]&127;d=d+4|0;if((i|0)!=(d|0)){continue}break}}if(f){while(1){b=b-1|0;h=H[b|0]&127|h<<7;e=e+1|0;if((f|0)!=(e|0)){continue}break}}if(c-g>>>0>>0){break a}d=g+h|0}if((c|0)!=(d|0)){continue}break}}}function ub(a,b,c){var d=0,e=0,f=0,g=0;a:{if(!a){break a}d=a+32|0;if(d>>>0>b>>>0){break a}f=H[a+4|0]|H[a+5|0]<<8|(H[a+6|0]<<16|H[a+7|0]<<24);g=H[a|0]|H[a+1|0]<<8|(H[a+2|0]<<16|H[a+3|0]<<24);E[c|0]=g;E[c+1|0]=g>>>8;E[c+2|0]=g>>>16;E[c+3|0]=g>>>24;E[c+4|0]=f;E[c+5|0]=f>>>8;E[c+6|0]=f>>>16;E[c+7|0]=f>>>24;f=H[a+28|0]|H[a+29|0]<<8|(H[a+30|0]<<16|H[a+31|0]<<24);g=H[a+24|0]|H[a+25|0]<<8|(H[a+26|0]<<16|H[a+27|0]<<24);E[c+24|0]=g;E[c+25|0]=g>>>8;E[c+26|0]=g>>>16;E[c+27|0]=g>>>24;E[c+28|0]=f;E[c+29|0]=f>>>8;E[c+30|0]=f>>>16;E[c+31|0]=f>>>24;f=H[a+20|0]|H[a+21|0]<<8|(H[a+22|0]<<16|H[a+23|0]<<24);g=H[a+16|0]|H[a+17|0]<<8|(H[a+18|0]<<16|H[a+19|0]<<24);E[c+16|0]=g;E[c+17|0]=g>>>8;E[c+18|0]=g>>>16;E[c+19|0]=g>>>24;E[c+20|0]=f;E[c+21|0]=f>>>8;E[c+22|0]=f>>>16;E[c+23|0]=f>>>24;f=H[a+12|0]|H[a+13|0]<<8|(H[a+14|0]<<16|H[a+15|0]<<24);g=H[a+8|0]|H[a+9|0]<<8|(H[a+10|0]<<16|H[a+11|0]<<24);E[c+8|0]=g;E[c+9|0]=g>>>8;E[c+10|0]=g>>>16;E[c+11|0]=g>>>24;E[c+12|0]=f;E[c+13|0]=f>>>8;E[c+14|0]=f>>>16;E[c+15|0]=f>>>24;f=b;b=a+96|0;if(f>>>0>>0){break a}a=d;d=H[a+4|0]|H[a+5|0]<<8|(H[a+6|0]<<16|H[a+7|0]<<24);e=H[a|0]|H[a+1|0]<<8|(H[a+2|0]<<16|H[a+3|0]<<24);E[c+32|0]=e;E[c+33|0]=e>>>8;E[c+34|0]=e>>>16;E[c+35|0]=e>>>24;E[c+36|0]=d;E[c+37|0]=d>>>8;E[c+38|0]=d>>>16;E[c+39|0]=d>>>24;d=H[a+60|0]|H[a+61|0]<<8|(H[a+62|0]<<16|H[a+63|0]<<24);e=H[a+56|0]|H[a+57|0]<<8|(H[a+58|0]<<16|H[a+59|0]<<24);E[c+88|0]=e;E[c+89|0]=e>>>8;E[c+90|0]=e>>>16;E[c+91|0]=e>>>24;E[c+92|0]=d;E[c+93|0]=d>>>8;E[c+94|0]=d>>>16;E[c+95|0]=d>>>24;d=H[a+52|0]|H[a+53|0]<<8|(H[a+54|0]<<16|H[a+55|0]<<24);e=H[a+48|0]|H[a+49|0]<<8|(H[a+50|0]<<16|H[a+51|0]<<24);E[c+80|0]=e;E[c+81|0]=e>>>8;E[c+82|0]=e>>>16;E[c+83|0]=e>>>24;E[c+84|0]=d;E[c+85|0]=d>>>8;E[c+86|0]=d>>>16;E[c+87|0]=d>>>24;d=H[a+44|0]|H[a+45|0]<<8|(H[a+46|0]<<16|H[a+47|0]<<24);e=H[a+40|0]|H[a+41|0]<<8|(H[a+42|0]<<16|H[a+43|0]<<24);E[c+72|0]=e;E[c+73|0]=e>>>8;E[c+74|0]=e>>>16;E[c+75|0]=e>>>24;E[c+76|0]=d;E[c+77|0]=d>>>8;E[c+78|0]=d>>>16;E[c+79|0]=d>>>24;e=H[a+36|0]|H[a+37|0]<<8|(H[a+38|0]<<16|H[a+39|0]<<24);d=c- -64|0;f=H[a+32|0]|H[a+33|0]<<8|(H[a+34|0]<<16|H[a+35|0]<<24);E[d|0]=f;E[d+1|0]=f>>>8;E[d+2|0]=f>>>16;E[d+3|0]=f>>>24;E[d+4|0]=e;E[d+5|0]=e>>>8;E[d+6|0]=e>>>16;E[d+7|0]=e>>>24;d=H[a+28|0]|H[a+29|0]<<8|(H[a+30|0]<<16|H[a+31|0]<<24);e=H[a+24|0]|H[a+25|0]<<8|(H[a+26|0]<<16|H[a+27|0]<<24);E[c+56|0]=e;E[c+57|0]=e>>>8;E[c+58|0]=e>>>16;E[c+59|0]=e>>>24;E[c+60|0]=d;E[c+61|0]=d>>>8;E[c+62|0]=d>>>16;E[c+63|0]=d>>>24;d=H[a+20|0]|H[a+21|0]<<8|(H[a+22|0]<<16|H[a+23|0]<<24);e=H[a+16|0]|H[a+17|0]<<8|(H[a+18|0]<<16|H[a+19|0]<<24);E[c+48|0]=e;E[c+49|0]=e>>>8;E[c+50|0]=e>>>16;E[c+51|0]=e>>>24;E[c+52|0]=d;E[c+53|0]=d>>>8;E[c+54|0]=d>>>16;E[c+55|0]=d>>>24;d=H[a+12|0]|H[a+13|0]<<8|(H[a+14|0]<<16|H[a+15|0]<<24);a=H[a+8|0]|H[a+9|0]<<8|(H[a+10|0]<<16|H[a+11|0]<<24);E[c+40|0]=a;E[c+41|0]=a>>>8;E[c+42|0]=a>>>16;E[c+43|0]=a>>>24;E[c+44|0]=d;E[c+45|0]=d>>>8;E[c+46|0]=d>>>16;E[c+47|0]=d>>>24;e=b}return e}function fd(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;a:{if(!a){break a}d=a-8|0;b=G[a-4>>2];a=b&-8;f=d+a|0;b:{if(b&1){break b}if(!(b&3)){break a}b=G[d>>2];d=d-b|0;if(d>>>0>>0<=255){e=b>>>3|0;b=G[d+12>>2];c=G[d+8>>2];if((b|0)==(c|0)){i=37564,j=G[9391]&ye(-2,e),G[i>>2]=j;break b}G[c+12>>2]=b;G[b+8>>2]=c;break b}h=G[d+24>>2];b=G[d+12>>2];if((d|0)!=(b|0)){c=G[d+8>>2];G[c+12>>2]=b;G[b+8>>2]=c;break c}e=d+20|0;c=G[e>>2];if(!c){c=G[d+16>>2];if(!c){break d}e=d+16|0}while(1){g=e;b=c;e=b+20|0;c=G[e>>2];if(c){continue}e=b+16|0;c=G[b+16>>2];if(c){continue}break}G[g>>2]=0;break c}b=G[f+4>>2];if((b&3)!=3){break b}G[9393]=a;G[f+4>>2]=b&-2;G[d+4>>2]=a|1;G[f>>2]=a;return}b=0}if(!h){break b}c=G[d+28>>2];e=(c<<2)+37868|0;e:{if(G[e>>2]==(d|0)){G[e>>2]=b;if(b){break e}i=37568,j=G[9392]&ye(-2,c),G[i>>2]=j;break b}G[h+(G[h+16>>2]==(d|0)?16:20)>>2]=b;if(!b){break b}}G[b+24>>2]=h;c=G[d+16>>2];if(c){G[b+16>>2]=c;G[c+24>>2]=b}c=G[d+20>>2];if(!c){break b}G[b+20>>2]=c;G[c+24>>2]=b}if(d>>>0>=f>>>0){break a}b=G[f+4>>2];if(!(b&1)){break a}f:{g:{h:{i:{if(!(b&2)){if(G[9397]==(f|0)){G[9397]=d;a=G[9394]+a|0;G[9394]=a;G[d+4>>2]=a|1;if(G[9396]!=(d|0)){break a}G[9393]=0;G[9396]=0;return}if(G[9396]==(f|0)){G[9396]=d;a=G[9393]+a|0;G[9393]=a;G[d+4>>2]=a|1;G[a+d>>2]=a;return}a=(b&-8)+a|0;if(b>>>0<=255){e=b>>>3|0;b=G[f+12>>2];c=G[f+8>>2];if((b|0)==(c|0)){i=37564,j=G[9391]&ye(-2,e),G[i>>2]=j;break g}G[c+12>>2]=b;G[b+8>>2]=c;break g}h=G[f+24>>2];b=G[f+12>>2];if((f|0)!=(b|0)){c=G[f+8>>2];G[c+12>>2]=b;G[b+8>>2]=c;break h}e=f+20|0;c=G[e>>2];if(!c){c=G[f+16>>2];if(!c){break i}e=f+16|0}while(1){g=e;b=c;e=b+20|0;c=G[e>>2];if(c){continue}e=b+16|0;c=G[b+16>>2];if(c){continue}break}G[g>>2]=0;break h}G[f+4>>2]=b&-2;G[d+4>>2]=a|1;G[a+d>>2]=a;break f}b=0}if(!h){break g}c=G[f+28>>2];e=(c<<2)+37868|0;j:{if(G[e>>2]==(f|0)){G[e>>2]=b;if(b){break j}i=37568,j=G[9392]&ye(-2,c),G[i>>2]=j;break g}G[h+(G[h+16>>2]==(f|0)?16:20)>>2]=b;if(!b){break g}}G[b+24>>2]=h;c=G[f+16>>2];if(c){G[b+16>>2]=c;G[c+24>>2]=b}c=G[f+20>>2];if(!c){break g}G[b+20>>2]=c;G[c+24>>2]=b}G[d+4>>2]=a|1;G[a+d>>2]=a;if(G[9396]!=(d|0)){break f}G[9393]=a;return}if(a>>>0<=255){b=(a&-8)+37604|0;c=G[9391];a=1<<(a>>>3);k:{if(!(c&a)){G[9391]=a|c;a=b;break k}a=G[b+8>>2]}G[b+8>>2]=d;G[a+12>>2]=d;G[d+12>>2]=b;G[d+8>>2]=a;return}c=31;if(a>>>0<=16777215){b=P(a>>>8|0);c=((a>>>38-b&1)-(b<<1)|0)+62|0}G[d+28>>2]=c;G[d+16>>2]=0;G[d+20>>2]=0;b=(c<<2)+37868|0;l:{m:{e=G[9392];g=1<>2]=d;G[d+24>>2]=b;break n}c=a<<((c|0)!=31?25-(c>>>1|0)|0:0);b=G[b>>2];while(1){e=b;if((G[b+4>>2]&-8)==(a|0)){break m}g=c>>>29|0;c=c<<1;g=b+(g&4)|0;b=G[g+16>>2];if(b){continue}break}G[g+16>>2]=d;G[d+24>>2]=e}G[d+12>>2]=d;G[d+8>>2]=d;break l}a=G[e+8>>2];G[a+12>>2]=d;G[e+8>>2]=d;G[d+24>>2]=0;G[d+12>>2]=e;G[d+8>>2]=a}a=G[9399]-1|0;G[9399]=a?a:-1}}function vb(a,b){var c=0,d=0,e=0;c=H[b+4|0]|H[b+5|0]<<8|(H[b+6|0]<<16|H[b+7|0]<<24);d=H[b|0]|H[b+1|0]<<8|(H[b+2|0]<<16|H[b+3|0]<<24);E[a|0]=d;E[a+1|0]=d>>>8;E[a+2|0]=d>>>16;E[a+3|0]=d>>>24;E[a+4|0]=c;E[a+5|0]=c>>>8;E[a+6|0]=c>>>16;E[a+7|0]=c>>>24;c=H[b+28|0]|H[b+29|0]<<8|(H[b+30|0]<<16|H[b+31|0]<<24);d=H[b+24|0]|H[b+25|0]<<8|(H[b+26|0]<<16|H[b+27|0]<<24);E[a+24|0]=d;E[a+25|0]=d>>>8;E[a+26|0]=d>>>16;E[a+27|0]=d>>>24;E[a+28|0]=c;E[a+29|0]=c>>>8;E[a+30|0]=c>>>16;E[a+31|0]=c>>>24;c=H[b+20|0]|H[b+21|0]<<8|(H[b+22|0]<<16|H[b+23|0]<<24);d=H[b+16|0]|H[b+17|0]<<8|(H[b+18|0]<<16|H[b+19|0]<<24);E[a+16|0]=d;E[a+17|0]=d>>>8;E[a+18|0]=d>>>16;E[a+19|0]=d>>>24;E[a+20|0]=c;E[a+21|0]=c>>>8;E[a+22|0]=c>>>16;E[a+23|0]=c>>>24;c=H[b+12|0]|H[b+13|0]<<8|(H[b+14|0]<<16|H[b+15|0]<<24);d=H[b+8|0]|H[b+9|0]<<8|(H[b+10|0]<<16|H[b+11|0]<<24);E[a+8|0]=d;E[a+9|0]=d>>>8;E[a+10|0]=d>>>16;E[a+11|0]=d>>>24;E[a+12|0]=c;E[a+13|0]=c>>>8;E[a+14|0]=c>>>16;E[a+15|0]=c>>>24;c=H[b+36|0]|H[b+37|0]<<8|(H[b+38|0]<<16|H[b+39|0]<<24);d=H[b+32|0]|H[b+33|0]<<8|(H[b+34|0]<<16|H[b+35|0]<<24);E[a+32|0]=d;E[a+33|0]=d>>>8;E[a+34|0]=d>>>16;E[a+35|0]=d>>>24;E[a+36|0]=c;E[a+37|0]=c>>>8;E[a+38|0]=c>>>16;E[a+39|0]=c>>>24;c=H[b+44|0]|H[b+45|0]<<8|(H[b+46|0]<<16|H[b+47|0]<<24);d=H[b+40|0]|H[b+41|0]<<8|(H[b+42|0]<<16|H[b+43|0]<<24);E[a+40|0]=d;E[a+41|0]=d>>>8;E[a+42|0]=d>>>16;E[a+43|0]=d>>>24;E[a+44|0]=c;E[a+45|0]=c>>>8;E[a+46|0]=c>>>16;E[a+47|0]=c>>>24;c=H[b+52|0]|H[b+53|0]<<8|(H[b+54|0]<<16|H[b+55|0]<<24);d=H[b+48|0]|H[b+49|0]<<8|(H[b+50|0]<<16|H[b+51|0]<<24);E[a+48|0]=d;E[a+49|0]=d>>>8;E[a+50|0]=d>>>16;E[a+51|0]=d>>>24;E[a+52|0]=c;E[a+53|0]=c>>>8;E[a+54|0]=c>>>16;E[a+55|0]=c>>>24;c=H[b+60|0]|H[b+61|0]<<8|(H[b+62|0]<<16|H[b+63|0]<<24);d=H[b+56|0]|H[b+57|0]<<8|(H[b+58|0]<<16|H[b+59|0]<<24);E[a+56|0]=d;E[a+57|0]=d>>>8;E[a+58|0]=d>>>16;E[a+59|0]=d>>>24;E[a+60|0]=c;E[a+61|0]=c>>>8;E[a+62|0]=c>>>16;E[a+63|0]=c>>>24;d=b- -64|0;e=H[d+4|0]|H[d+5|0]<<8|(H[d+6|0]<<16|H[d+7|0]<<24);c=a- -64|0;d=H[d|0]|H[d+1|0]<<8|(H[d+2|0]<<16|H[d+3|0]<<24);E[c|0]=d;E[c+1|0]=d>>>8;E[c+2|0]=d>>>16;E[c+3|0]=d>>>24;E[c+4|0]=e;E[c+5|0]=e>>>8;E[c+6|0]=e>>>16;E[c+7|0]=e>>>24;c=H[b+76|0]|H[b+77|0]<<8|(H[b+78|0]<<16|H[b+79|0]<<24);d=H[b+72|0]|H[b+73|0]<<8|(H[b+74|0]<<16|H[b+75|0]<<24);E[a+72|0]=d;E[a+73|0]=d>>>8;E[a+74|0]=d>>>16;E[a+75|0]=d>>>24;E[a+76|0]=c;E[a+77|0]=c>>>8;E[a+78|0]=c>>>16;E[a+79|0]=c>>>24;c=H[b+84|0]|H[b+85|0]<<8|(H[b+86|0]<<16|H[b+87|0]<<24);d=H[b+80|0]|H[b+81|0]<<8|(H[b+82|0]<<16|H[b+83|0]<<24);E[a+80|0]=d;E[a+81|0]=d>>>8;E[a+82|0]=d>>>16;E[a+83|0]=d>>>24;E[a+84|0]=c;E[a+85|0]=c>>>8;E[a+86|0]=c>>>16;E[a+87|0]=c>>>24;c=H[b+92|0]|H[b+93|0]<<8|(H[b+94|0]<<16|H[b+95|0]<<24);b=H[b+88|0]|H[b+89|0]<<8|(H[b+90|0]<<16|H[b+91|0]<<24);E[a+88|0]=b;E[a+89|0]=b>>>8;E[a+90|0]=b>>>16;E[a+91|0]=b>>>24;E[a+92|0]=c;E[a+93|0]=c>>>8;E[a+94|0]=c>>>16;E[a+95|0]=c>>>24;return a+96|0}function le(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0;j=Y-160|0;Y=j;l=-1;if(!(i>>>0<8|(e&-16)+16>>>0>g>>>0)){g=j+80|0;Da(b,c,0,0,G[a+4>>2],G[a+8>>2],g,80);a=G[j+108>>2];G[j+24>>2]=G[j+104>>2];G[j+28>>2]=a;a=G[j+100>>2];G[j+16>>2]=G[j+96>>2];G[j+20>>2]=a;a=G[j+92>>2];G[j+8>>2]=G[j+88>>2];G[j+12>>2]=a;a=G[j+124>>2];G[j+40>>2]=G[j+120>>2];G[j+44>>2]=a;a=G[j+132>>2];G[j+48>>2]=G[j+128>>2];G[j+52>>2]=a;a=G[j+140>>2];G[j+56>>2]=G[j+136>>2];G[j+60>>2]=a;a=G[j+156>>2];G[j+72>>2]=G[j+152>>2];G[j+76>>2]=a;a=G[j+84>>2];G[j>>2]=G[j+80>>2];G[j+4>>2]=a;a=G[j+116>>2];G[j+32>>2]=G[j+112>>2];G[j+36>>2]=a;a=G[j+148>>2];G[j+64>>2]=G[j+144>>2];G[j+68>>2]=a;la(g,80);l=0;a=Y-256|0;Y=a;Mb(j,a+16|0);b=j- -64|0;c=H[b+12|0]|H[b+13|0]<<8|(H[b+14|0]<<16|H[b+15|0]<<24);G[a+8>>2]=H[b+8|0]|H[b+9|0]<<8|(H[b+10|0]<<16|H[b+11|0]<<24);G[a+12>>2]=c;c=H[b+4|0]|H[b+5|0]<<8|(H[b+6|0]<<16|H[b+7|0]<<24);G[a>>2]=H[b|0]|H[b+1|0]<<8|(H[b+2|0]<<16|H[b+3|0]<<24);G[a+4>>2]=c;if(e>>>0>=16){while(1){E[a|0]=H[a|0]^H[d|0];E[a+1|0]=H[a+1|0]^H[d+1|0];E[a+2|0]=H[a+2|0]^H[d+2|0];E[a+3|0]=H[a+3|0]^H[d+3|0];E[a+4|0]=H[a+4|0]^H[d+4|0];E[a+5|0]=H[a+5|0]^H[d+5|0];E[a+6|0]=H[a+6|0]^H[d+6|0];E[a+7|0]=H[a+7|0]^H[d+7|0];E[a+8|0]=H[a+8|0]^H[d+8|0];E[a+9|0]=H[a+9|0]^H[d+9|0];E[a+10|0]=H[a+10|0]^H[d+10|0];E[a+11|0]=H[a+11|0]^H[d+11|0];E[a+12|0]=H[a+12|0]^H[d+12|0];E[a+13|0]=H[a+13|0]^H[d+13|0];E[a+14|0]=H[a+14|0]^H[d+14|0];E[a+15|0]=H[a+15|0]^H[d+15|0];Nb(a,f,a+16|0);b=H[f+12|0]|H[f+13|0]<<8|(H[f+14|0]<<16|H[f+15|0]<<24);G[a+8>>2]=H[f+8|0]|H[f+9|0]<<8|(H[f+10|0]<<16|H[f+11|0]<<24);G[a+12>>2]=b;b=H[f+4|0]|H[f+5|0]<<8|(H[f+6|0]<<16|H[f+7|0]<<24);G[a>>2]=H[f|0]|H[f+1|0]<<8|(H[f+2|0]<<16|H[f+3|0]<<24);G[a+4>>2]=b;f=f+16|0;d=d+16|0;e=e-16|0;if(e>>>0>15){continue}break}}c=0;a:{if(!e){break a}b=0;if(e>>>0>=4){n=e&-4;c=0;while(1){k=a+b|0;E[k|0]=H[k|0]^H[b+d|0];k=b|1;m=k+a|0;E[m|0]=H[m|0]^H[d+k|0];k=b|2;m=k+a|0;E[m|0]=H[m|0]^H[d+k|0];k=b|3;m=k+a|0;E[m|0]=H[m|0]^H[d+k|0];b=b+4|0;c=c+4|0;if((n|0)!=(c|0)){continue}break}}c=e;n=c&3;if(!n){break a}while(1){c=a+b|0;E[c|0]=H[c|0]^H[b+d|0];b=b+1|0;l=l+1|0;if((n|0)!=(l|0)){continue}break}c=e}d=16-e|0;b=0-e&3;if(b){while(1){l=a+c|0;E[l|0]=d^H[l|0];c=c+1|0;o=o+1|0;if((b|0)!=(o|0)){continue}break}}if(e-13>>>0>=3){while(1){b=a+c|0;E[b|0]=d^H[b|0];E[b+1|0]=d^H[b+1|0];E[b+2|0]=d^H[b+2|0];E[b+3|0]=d^H[b+3|0];c=c+4|0;if((c|0)!=16){continue}break}}b=a+16|0;Nb(a,f,b);la(b,240);la(a,16);Y=a+256|0;a=i-8|0;na(j+32|0,32,h,a,g);b=G[j+84>>2];a=a+h|0;c=G[j+80>>2];E[a|0]=c;E[a+1|0]=c>>>8;E[a+2|0]=c>>>16;E[a+3|0]=c>>>24;E[a+4|0]=b;E[a+5|0]=b>>>8;E[a+6|0]=b>>>16;E[a+7|0]=b>>>24;la(j,80);l=i}Y=j+160|0;return l|0}function hb(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0;G[a+16>>2]=0;G[a+20>>2]=0;G[a+12>>2]=c;G[a+8>>2]=b;G[a+4>>2]=0;F[a>>1]=0;G[a+24>>2]=0;G[a+28>>2]=0;a:{if(c>>>0<=d>>>0){break a}E[a|0]=H[b|0];c=c-d|0;if((c|0)==1){break a}h=b+c|0;c=b+1|0;while(1){d=c;e=c;if(H[c|0]==10){c=c+1|0;b=c;while(1){b:{if((b|0)==(h|0)){g=h;break b}e=E[b|0];g=b+1|0;b=g;if((e|0)<0){continue}}break}c:{if((c|0)==(g|0)){c=0;break c}e=(d^-1)+g|0;i=e&3;f=0;c=0;b=g;if((b-d|0)-2>>>0>=3){j=e&-4;e=0;while(1){c=(H[b-2|0]&127|(c<<14|(H[b-1|0]&127)<<7))<<14|(H[b-3|0]&127)<<7;b=b-4|0;c=c|H[b|0]&127;e=e+4|0;if((j|0)!=(e|0)){continue}break}}if(i){while(1){b=b-1|0;c=H[b|0]&127|c<<7;f=f+1|0;if((i|0)!=(f|0)){continue}break}}if(h-g>>>0>>0){break a}}G[a+20>>2]=c;G[a+16>>2]=g;e=c+g|0}if((e|0)==(h|0)){break a}d:{if(H[e|0]!=16){c=e;break d}g=e+1|0;b=g;while(1){e:{if((b|0)==(h|0)){c=h;break e}f=E[b|0];c=b+1|0;b=c;if((f|0)<0){continue}}break}f:{if((c|0)==(g|0)){f=0;break f}j=(e^-1)+c|0;i=j&3;g=0;f=0;b=c;if((b-e|0)-2>>>0>=3){j=j&-4;e=0;while(1){f=(H[b-2|0]&127|(f<<14|(H[b-1|0]&127)<<7))<<14|(H[b-3|0]&127)<<7;b=b-4|0;f=f|H[b|0]&127;e=e+4|0;if((j|0)!=(e|0)){continue}break}}if(!i){break f}while(1){b=b-1|0;f=H[b|0]&127|f<<7;g=g+1|0;if((i|0)!=(g|0)){continue}break}}E[a+1|0]=1;G[a+4>>2]=f}if((c|0)==(h|0)){break a}if(H[c|0]==34){g=c+1|0;b=g;while(1){g:{if((b|0)==(h|0)){e=h;break g}f=E[b|0];e=b+1|0;b=e;if((f|0)<0){continue}}break}h:{if((e|0)==(g|0)){f=0;break h}j=(c^-1)+e|0;i=j&3;g=0;f=0;b=e;if((b-c|0)-2>>>0>=3){j=j&-4;c=0;while(1){f=(H[b-2|0]&127|(f<<14|(H[b-1|0]&127)<<7))<<14|(H[b-3|0]&127)<<7;b=b-4|0;f=f|H[b|0]&127;c=c+4|0;if((j|0)!=(c|0)){continue}break}}if(i){while(1){b=b-1|0;f=H[b|0]&127|f<<7;g=g+1|0;if((i|0)!=(g|0)){continue}break}}if(h-e>>>0>>0){break a}}G[a+28>>2]=f;G[a+24>>2]=e;c=e+f|0}i:{if((c|0)==(h|0)|(c|0)!=(d|0)){break i}j:{switch(H[d|0]&7){case 0:while(1){k:{if((d|0)==(h|0)){b=h;break k}c=E[d|0];b=d+1|0;d=b;if((c|0)<0){continue}}break};while(1){if((b|0)==(h|0)){c=h;break i}d=E[b|0];c=b+1|0;b=c;if((d|0)<0){continue}break};break i;case 2:break j;default:break a}}while(1){l:{if((d|0)==(h|0)){c=h;break l}b=E[d|0];c=d+1|0;d=c;if((b|0)<0){continue}}break}b=c;while(1){m:{if((b|0)==(h|0)){g=h;break m}d=E[b|0];g=b+1|0;b=g;if((d|0)<0){continue}}break}if((c|0)==(g|0)){break i}i=g-c|0;e=i&3;f=0;d=0;b=g;if(b+(c^-1)>>>0>=3){i=i&-4;c=0;while(1){d=(H[b-2|0]&127|(d<<14|(H[b-1|0]&127)<<7))<<14|(H[b-3|0]&127)<<7;b=b-4|0;d=d|H[b|0]&127;c=c+4|0;if((i|0)!=(c|0)){continue}break}}if(e){while(1){b=b-1|0;d=H[b|0]&127|d<<7;f=f+1|0;if((e|0)!=(f|0)){continue}break}}if(h-g>>>0>>0){break a}c=d+g|0}if((c|0)!=(h|0)){continue}break}}}function za(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0;G[a+80>>2]=0;G[a+84>>2]=0;b=G[a>>2];g=G[a+4>>2];h=g;d=b;b=g;g=b>>31>>>6|0;c=d+g|0;if(g>>>0>c>>>0){b=b+1|0}f=c&-67108864;g=d-f|0;d=h-((d>>>0>>0)+b|0)|0;h=d;G[a>>2]=g;G[a+4>>2]=d;d=b;b=b>>26;c=(d&67108863)<<6|c>>>26;d=c+G[a+8>>2]|0;b=b+G[a+12>>2]|0;b=d>>>0>>0?b+1|0:b;f=b;c=b>>31>>>7|0;e=c;c=d+c|0;b=e>>>0>c>>>0?b+1|0:b;e=c&-33554432;G[a+8>>2]=d-e;G[a+12>>2]=f-((d>>>0>>0)+b|0);d=b;b=b>>25;c=(d&33554431)<<7|c>>>25;d=c+G[a+16>>2]|0;b=b+G[a+20>>2]|0;b=d>>>0>>0?b+1|0:b;f=b;c=b>>31>>>6|0;e=c;c=d+c|0;b=e>>>0>c>>>0?b+1|0:b;e=c&-67108864;G[a+16>>2]=d-e;G[a+20>>2]=f-((d>>>0>>0)+b|0);d=b;b=b>>26;c=(d&67108863)<<6|c>>>26;d=c+G[a+24>>2]|0;b=b+G[a+28>>2]|0;b=d>>>0>>0?b+1|0:b;f=b;c=b>>31>>>7|0;e=c;c=d+c|0;b=e>>>0>c>>>0?b+1|0:b;e=c&-33554432;G[a+24>>2]=d-e;G[a+28>>2]=f-((d>>>0>>0)+b|0);d=b;b=b>>25;c=(d&33554431)<<7|c>>>25;d=c+G[a+32>>2]|0;b=b+G[a+36>>2]|0;b=d>>>0>>0?b+1|0:b;f=b;c=b>>31>>>6|0;e=c;c=d+c|0;b=e>>>0>c>>>0?b+1|0:b;e=c&-67108864;G[a+32>>2]=d-e;G[a+36>>2]=f-((d>>>0>>0)+b|0);d=b;b=b>>26;c=(d&67108863)<<6|c>>>26;d=c+G[a+40>>2]|0;b=b+G[a+44>>2]|0;b=d>>>0>>0?b+1|0:b;f=b;c=b>>31>>>7|0;e=c;c=d+c|0;b=e>>>0>c>>>0?b+1|0:b;e=c&-33554432;G[a+40>>2]=d-e;G[a+44>>2]=f-((d>>>0>>0)+b|0);d=b;b=b>>25;c=(d&33554431)<<7|c>>>25;d=c+G[a+48>>2]|0;b=b+G[a+52>>2]|0;b=d>>>0>>0?b+1|0:b;f=b;c=b>>31>>>6|0;e=c;c=d+c|0;b=e>>>0>c>>>0?b+1|0:b;e=c&-67108864;G[a+48>>2]=d-e;G[a+52>>2]=f-((d>>>0>>0)+b|0);d=b;b=b>>26;c=(d&67108863)<<6|c>>>26;d=c+G[a+56>>2]|0;b=b+G[a+60>>2]|0;b=d>>>0>>0?b+1|0:b;f=b;c=b>>31>>>7|0;e=c;c=d+c|0;b=e>>>0>c>>>0?b+1|0:b;e=c&-33554432;G[a+56>>2]=d-e;G[a+60>>2]=f-((d>>>0>>0)+b|0);d=b;b=b>>25;c=(d&33554431)<<7|c>>>25;d=c+G[a+64>>2]|0;b=b+G[a+68>>2]|0;b=d>>>0>>0?b+1|0:b;f=b;c=b>>31>>>6|0;e=c;c=d+c|0;b=e>>>0>c>>>0?b+1|0:b;e=c&-67108864;G[a+64>>2]=d-e;G[a+68>>2]=f-((d>>>0>>0)+b|0);d=b;b=b>>26;c=(d&67108863)<<6|c>>>26;d=c+G[a+72>>2]|0;b=b+G[a+76>>2]|0;b=d>>>0>>0?b+1|0:b;f=b;c=b>>31>>>7|0;e=c;c=d+c|0;b=e>>>0>c>>>0?b+1|0:b;e=c&-33554432;G[a+72>>2]=d-e;G[a+76>>2]=f-((d>>>0>>0)+b|0);e=G[a+80>>2];d=G[a+84>>2];G[a+80>>2]=0;G[a+84>>2]=0;f=d;d=b;b=b>>25;c=(d&33554431)<<7|c>>>25;d=c+e|0;b=b+f|0;c=d>>>0>>0?b+1|0:b;b=c+h|0;g=d+g|0;b=g>>>0>>0?b+1|0:b;f=g;g=we(d,c,18,0);d=f+g|0;b=Z+b|0;b=d>>>0>>0?b+1|0:b;c=b;g=b>>31>>>6|0;f=g;g=d+g|0;b=f>>>0>g>>>0?b+1|0:b;h=g&-67108864;G[a>>2]=d-h;G[a+4>>2]=c-((d>>>0>>0)+b|0);d=b;b=b>>26;g=(d&67108863)<<6|g>>>26;d=g+G[a+8>>2]|0;b=b+G[a+12>>2]|0;G[a+8>>2]=d;G[a+12>>2]=d>>>0>>0?b+1|0:b}function na(a,b,c,d,e){var f=0,g=0;f=Y-384|0;Y=f;G[f+128>>2]=0;G[f+132>>2]=0;G[f+136>>2]=0;G[f+140>>2]=0;G[f+144>>2]=0;G[f+148>>2]=0;G[f+152>>2]=0;G[f+156>>2]=0;G[f+160>>2]=0;G[f+164>>2]=0;G[f+168>>2]=0;G[f+172>>2]=0;G[f+112>>2]=0;G[f+116>>2]=0;G[f+120>>2]=0;G[f+124>>2]=0;a:{if(b>>>0>=65){g=f+176|0;G[g+80>>2]=1779033703;G[g+84>>2]=-1150833019;G[g+72>>2]=0;G[g+76>>2]=0;G[g+64>>2]=0;G[g+104>>2]=528734635;G[g+108>>2]=1541459225;G[g+96>>2]=1359893119;G[g+100>>2]=-1694144372;G[g+88>>2]=1013904242;G[g+92>>2]=-1521486534;ua(g,a,b);Ea(g,f+112|0);break a}ma(f+112|0,a,b)}a=G[f+172>>2];G[f+232>>2]=G[f+168>>2];G[f+236>>2]=a;a=G[f+164>>2];G[f+224>>2]=G[f+160>>2];G[f+228>>2]=a;a=G[f+156>>2];G[f+216>>2]=G[f+152>>2];G[f+220>>2]=a;a=G[f+148>>2];G[f+208>>2]=G[f+144>>2];G[f+212>>2]=a;a=G[f+140>>2];G[f+200>>2]=G[f+136>>2];G[f+204>>2]=a;a=G[f+132>>2];G[f+192>>2]=G[f+128>>2];G[f+196>>2]=a;a=G[f+124>>2];G[f+184>>2]=G[f+120>>2];G[f+188>>2]=a;a=G[f+116>>2];G[f+176>>2]=G[f+112>>2];G[f+180>>2]=a;b=0;while(1){a=f+176|0;g=a+b|0;E[g|0]=H[g|0]^54;g=a+(b|1)|0;E[g|0]=H[g|0]^54;g=a+(b|2)|0;E[g|0]=H[g|0]^54;g=a+(b|3)|0;E[g|0]=H[g|0]^54;b=b+4|0;if((b|0)!=64){continue}break}G[f+80>>2]=1779033703;G[f+84>>2]=-1150833019;G[f+72>>2]=0;G[f+76>>2]=0;G[f+64>>2]=0;G[f+104>>2]=528734635;G[f+108>>2]=1541459225;G[f+96>>2]=1359893119;G[f+100>>2]=-1694144372;G[f+88>>2]=1013904242;G[f+92>>2]=-1521486534;ua(f,a,64);la(a,64);ua(f,c,d);a=G[f+172>>2];G[f+344>>2]=G[f+168>>2];G[f+348>>2]=a;a=G[f+164>>2];G[f+336>>2]=G[f+160>>2];G[f+340>>2]=a;a=G[f+156>>2];G[f+328>>2]=G[f+152>>2];G[f+332>>2]=a;a=G[f+148>>2];G[f+320>>2]=G[f+144>>2];G[f+324>>2]=a;a=G[f+140>>2];G[f+312>>2]=G[f+136>>2];G[f+316>>2]=a;a=G[f+132>>2];G[f+304>>2]=G[f+128>>2];G[f+308>>2]=a;a=G[f+124>>2];G[f+296>>2]=G[f+120>>2];G[f+300>>2]=a;a=G[f+116>>2];G[f+288>>2]=G[f+112>>2];G[f+292>>2]=a;b=0;while(1){c=f+288|0;a=c+b|0;E[a|0]=H[a|0]^92;a=c+(b|1)|0;E[a|0]=H[a|0]^92;a=c+(b|2)|0;E[a|0]=H[a|0]^92;a=c+(b|3)|0;E[a|0]=H[a|0]^92;b=b+4|0;if((b|0)!=64){continue}break}Ea(f,f+352|0);a=f+176|0;G[a+80>>2]=1779033703;G[a+84>>2]=-1150833019;G[a+72>>2]=0;G[a+76>>2]=0;G[a+64>>2]=0;G[a+104>>2]=528734635;G[a+108>>2]=1541459225;G[a+96>>2]=1359893119;G[a+100>>2]=-1694144372;G[a+88>>2]=1013904242;G[a+92>>2]=-1521486534;ua(a,c,96);Ea(a,e);la(a,112);la(c,96);la(f+112|0,64);la(f,112);Y=f+384|0}function La(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;e=G[b+44>>2];d=G[b+48>>2];g=G[b+52>>2];h=G[b+56>>2];i=G[b+60>>2];f=b- -64|0;j=G[f>>2];k=G[b+68>>2];l=G[b+72>>2];m=G[b+76>>2];n=G[b+4>>2];o=G[b+8>>2];p=G[b+12>>2];q=G[b+16>>2];r=G[b+20>>2];s=G[b+24>>2];t=G[b+28>>2];u=G[b+32>>2];v=G[b+36>>2];G[a>>2]=G[b>>2]+G[b+40>>2];G[a+36>>2]=m+v;G[a+32>>2]=l+u;G[a+28>>2]=k+t;G[a+24>>2]=j+s;G[a+20>>2]=i+r;G[a+16>>2]=h+q;G[a+12>>2]=g+p;G[a+8>>2]=d+o;G[a+4>>2]=e+n;d=G[b+44>>2];g=G[b+48>>2];h=G[b+52>>2];i=G[b+56>>2];j=G[b+60>>2];f=G[f>>2];e=G[b+68>>2];k=G[b+72>>2];l=G[b>>2];m=G[b+40>>2];n=G[b+4>>2];o=G[b+8>>2];p=G[b+12>>2];q=G[b+16>>2];r=G[b+20>>2];s=G[b+24>>2];t=G[b+28>>2];u=G[b+32>>2];G[a+76>>2]=G[b+76>>2]-G[b+36>>2];G[a+72>>2]=k-u;G[a+68>>2]=e-t;e=a- -64|0;G[e>>2]=f-s;G[a+60>>2]=j-r;G[a+56>>2]=i-q;G[a+52>>2]=h-p;G[a+48>>2]=g-o;G[a+44>>2]=d-n;G[a+40>>2]=m-l;ka(a+80|0,a,c);d=a+40|0;ka(d,d,c+40|0);ka(a+120|0,c+120|0,b+120|0);ka(a,b+80|0,c+80|0);b=G[a+44>>2];c=G[a+84>>2];d=G[a+48>>2];g=G[a+88>>2];h=G[a+52>>2];i=G[a+92>>2];f=G[a+56>>2];j=G[a+96>>2];k=G[a+60>>2];l=G[a+100>>2];m=G[e>>2];n=G[a+104>>2];o=G[a+68>>2];p=G[a+108>>2];q=G[a+72>>2];r=G[a+112>>2];u=G[a>>2];v=G[a+4>>2];y=G[a+8>>2];z=G[a+12>>2];A=G[a+16>>2];B=G[a+20>>2];C=G[a+24>>2];D=G[a+28>>2];E=G[a+32>>2];F=G[a+36>>2];s=G[a+40>>2];t=G[a+80>>2];w=G[a+76>>2];x=G[a+116>>2];G[a+76>>2]=w+x;G[a+72>>2]=q+r;G[a+68>>2]=o+p;G[e>>2]=m+n;G[a+60>>2]=k+l;G[a+56>>2]=f+j;G[a+52>>2]=h+i;G[a+48>>2]=d+g;G[a+44>>2]=b+c;G[a+40>>2]=s+t;G[a+36>>2]=x-w;G[a+32>>2]=r-q;G[a+28>>2]=p-o;G[a+24>>2]=n-m;G[a+20>>2]=l-k;G[a+16>>2]=j-f;G[a+12>>2]=i-h;G[a+8>>2]=g-d;G[a+4>>2]=c-b;G[a>>2]=t-s;b=F<<1;c=G[a+156>>2];G[a+156>>2]=b-c;e=E<<1;d=G[a+152>>2];G[a+152>>2]=e-d;g=D<<1;h=G[a+148>>2];G[a+148>>2]=g-h;i=C<<1;f=G[a+144>>2];G[a+144>>2]=i-f;j=B<<1;k=G[a+140>>2];G[a+140>>2]=j-k;l=A<<1;m=G[a+136>>2];G[a+136>>2]=l-m;n=z<<1;o=G[a+132>>2];G[a+132>>2]=n-o;p=y<<1;q=G[a+128>>2];G[a+128>>2]=p-q;r=v<<1;s=G[a+124>>2];G[a+124>>2]=r-s;t=u<<1;u=G[a+120>>2];G[a+120>>2]=t-u;G[a+112>>2]=d+e;G[a+108>>2]=g+h;G[a+104>>2]=i+f;G[a+100>>2]=j+k;G[a+96>>2]=l+m;G[a+92>>2]=n+o;G[a+88>>2]=p+q;G[a+84>>2]=r+s;G[a+80>>2]=t+u;G[a+116>>2]=b+c}function ob(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;e=G[b+44>>2];d=G[b+48>>2];g=G[b+52>>2];h=G[b+56>>2];i=G[b+60>>2];f=b- -64|0;j=G[f>>2];k=G[b+68>>2];l=G[b+72>>2];m=G[b+76>>2];n=G[b+4>>2];o=G[b+8>>2];p=G[b+12>>2];q=G[b+16>>2];r=G[b+20>>2];s=G[b+24>>2];t=G[b+28>>2];u=G[b+32>>2];v=G[b+36>>2];G[a>>2]=G[b>>2]+G[b+40>>2];G[a+36>>2]=m+v;G[a+32>>2]=l+u;G[a+28>>2]=k+t;G[a+24>>2]=j+s;G[a+20>>2]=i+r;G[a+16>>2]=h+q;G[a+12>>2]=g+p;G[a+8>>2]=d+o;G[a+4>>2]=e+n;d=G[b+44>>2];g=G[b+48>>2];h=G[b+52>>2];i=G[b+56>>2];j=G[b+60>>2];f=G[f>>2];e=G[b+68>>2];k=G[b+72>>2];l=G[b>>2];m=G[b+40>>2];n=G[b+4>>2];o=G[b+8>>2];p=G[b+12>>2];q=G[b+16>>2];r=G[b+20>>2];s=G[b+24>>2];t=G[b+28>>2];u=G[b+32>>2];G[a+76>>2]=G[b+76>>2]-G[b+36>>2];G[a+72>>2]=k-u;G[a+68>>2]=e-t;e=a- -64|0;G[e>>2]=f-s;G[a+60>>2]=j-r;G[a+56>>2]=i-q;G[a+52>>2]=h-p;G[a+48>>2]=g-o;G[a+44>>2]=d-n;G[a+40>>2]=m-l;ka(a+80|0,a,c);d=a+40|0;ka(d,d,c+40|0);ka(a+120|0,c+80|0,b+120|0);u=G[b+84>>2];v=G[b+88>>2];y=G[b+92>>2];z=G[b+96>>2];A=G[b+100>>2];B=G[b+104>>2];C=G[b+108>>2];D=G[b+112>>2];E=G[b+116>>2];c=G[a+44>>2];d=G[a+84>>2];g=G[a+48>>2];h=G[a+88>>2];i=G[a+52>>2];f=G[a+92>>2];j=G[a+56>>2];k=G[a+96>>2];l=G[a+60>>2];m=G[a+100>>2];n=G[e>>2];o=G[a+104>>2];p=G[a+68>>2];q=G[a+108>>2];r=G[a+72>>2];s=G[a+112>>2];F=G[b+80>>2];b=G[a+40>>2];t=G[a+80>>2];w=G[a+76>>2];x=G[a+116>>2];G[a+76>>2]=w+x;G[a+72>>2]=r+s;G[a+68>>2]=p+q;G[e>>2]=n+o;G[a+60>>2]=l+m;G[a+56>>2]=j+k;G[a+52>>2]=i+f;G[a+48>>2]=g+h;G[a+44>>2]=c+d;G[a+40>>2]=b+t;G[a+36>>2]=x-w;G[a+32>>2]=s-r;G[a+28>>2]=q-p;G[a+24>>2]=o-n;G[a+20>>2]=m-l;G[a+16>>2]=k-j;G[a+12>>2]=f-i;G[a+8>>2]=h-g;G[a+4>>2]=d-c;G[a>>2]=t-b;b=E<<1;c=G[a+156>>2];G[a+156>>2]=b-c;e=D<<1;d=G[a+152>>2];G[a+152>>2]=e-d;g=C<<1;h=G[a+148>>2];G[a+148>>2]=g-h;i=B<<1;f=G[a+144>>2];G[a+144>>2]=i-f;j=A<<1;k=G[a+140>>2];G[a+140>>2]=j-k;l=z<<1;m=G[a+136>>2];G[a+136>>2]=l-m;n=y<<1;o=G[a+132>>2];G[a+132>>2]=n-o;p=v<<1;q=G[a+128>>2];G[a+128>>2]=p-q;r=u<<1;s=G[a+124>>2];G[a+124>>2]=r-s;t=F<<1;u=G[a+120>>2];G[a+120>>2]=t-u;G[a+112>>2]=d+e;G[a+108>>2]=g+h;G[a+104>>2]=i+f;G[a+100>>2]=j+k;G[a+96>>2]=l+m;G[a+92>>2]=n+o;G[a+88>>2]=p+q;G[a+84>>2]=r+s;G[a+80>>2]=t+u;G[a+116>>2]=b+c}function Sb(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;c=Y-480|0;Y=c;while(1){e=c+288|0;f=e+(d<<1)|0;k=H[b+d|0];E[f+1|0]=k>>>4;E[f|0]=k&15;f=d|1;e=e+(f<<1)|0;f=H[b+f|0];E[e+1|0]=f>>>4;E[e|0]=f&15;d=d+2|0;if((d|0)!=32){continue}break}b=0;while(1){d=b;b=(c+288|0)+h|0;e=d+H[b|0]|0;d=e+8|0;E[b|0]=e-(d&240);e=H[b+1|0]+(d<<24>>24>>4)|0;d=e+8|0;E[b+1|0]=e-(d&240);e=H[b+2|0]+(d<<24>>24>>4)|0;d=e+8|0;E[b+2|0]=e-(d&240);b=d<<24>>24>>4;h=h+3|0;if((h|0)!=63){continue}break}E[c+351|0]=H[c+351|0]+b;G[a+32>>2]=0;G[a+36>>2]=0;G[a+24>>2]=0;G[a+28>>2]=0;G[a+16>>2]=0;G[a+20>>2]=0;G[a+8>>2]=0;G[a+12>>2]=0;G[a>>2]=0;G[a+4>>2]=0;G[a+44>>2]=0;G[a+48>>2]=0;G[a+40>>2]=1;G[a+52>>2]=0;G[a+56>>2]=0;G[a+60>>2]=0;G[a+64>>2]=0;G[a+68>>2]=0;G[a+72>>2]=0;G[a+76>>2]=0;G[a+80>>2]=1;ta(a+84|0,0,76);k=a+120|0;q=a+80|0;r=a+40|0;b=c+208|0;f=c+168|0;h=c+248|0;d=1;while(1){g=c+8|0;Rb(g,d>>>1|0,E[(c+288|0)+d|0]);e=c+128|0;ob(e,a,g);ka(a,e,h);ka(r,f,b);ka(q,b,h);ka(k,e,f);g=d>>>0<62;d=d+2|0;if(g){continue}break}d=G[a>>2];g=G[a+4>>2];i=G[a+8>>2];l=G[a+12>>2];j=G[a+16>>2];m=G[a+20>>2];n=G[a+24>>2];o=G[a+28>>2];p=G[a+36>>2];G[c+392>>2]=G[a+32>>2];G[c+396>>2]=p;G[c+384>>2]=n;G[c+388>>2]=o;G[c+376>>2]=j;G[c+380>>2]=m;G[c+368>>2]=i;G[c+372>>2]=l;G[c+360>>2]=d;G[c+364>>2]=g;d=G[a+48>>2];g=G[a+52>>2];i=G[a+56>>2];l=G[a+60>>2];j=a- -64|0;m=G[j>>2];j=G[j+4>>2];n=G[a+40>>2];o=G[a+44>>2];p=G[a+76>>2];G[c+432>>2]=G[a+72>>2];G[c+436>>2]=p;G[c+424>>2]=m;G[c+428>>2]=j;G[c+416>>2]=i;G[c+420>>2]=l;G[c+408>>2]=d;G[c+412>>2]=g;G[c+400>>2]=n;G[c+404>>2]=o;d=G[a+88>>2];g=G[a+92>>2];i=G[a+96>>2];l=G[a+100>>2];j=G[a+104>>2];m=G[a+108>>2];n=G[a+80>>2];o=G[a+84>>2];p=G[a+116>>2];G[c+472>>2]=G[a+112>>2];G[c+476>>2]=p;G[c+464>>2]=j;G[c+468>>2]=m;G[c+456>>2]=i;G[c+460>>2]=l;G[c+448>>2]=d;G[c+452>>2]=g;G[c+440>>2]=n;G[c+444>>2]=o;d=c+360|0;Va(e,d);ka(d,e,h);g=c+400|0;ka(g,f,b);i=c+440|0;ka(i,b,h);Va(e,d);ka(d,e,h);ka(g,f,b);ka(i,b,h);Va(e,d);ka(d,e,h);ka(g,f,b);ka(i,b,h);Va(e,d);ka(a,e,h);ka(r,f,b);ka(q,b,h);ka(k,e,f);d=0;while(1){g=c+8|0;Rb(g,d>>>1|0,E[(c+288|0)+d|0]);e=c+128|0;ob(e,a,g);ka(a,e,h);ka(r,f,b);ka(q,b,h);ka(k,e,f);e=d>>>0<62;d=d+2|0;if(e){continue}break}Y=c+480|0}function Eb(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;c=b;b=G[b>>2]+7&-8;G[c>>2]=b+16;p=a;a=b;i=G[a>>2];d=G[a+4>>2];c=G[a+8>>2];a=G[a+12>>2];n=a;g=Y-32|0;Y=g;a=a&2147483647;h=a;b=c;e=a-1006698496|0;a=a-1140785152|0;a:{if((e|0)==(a|0)&0|a>>>0>e>>>0){a=b;c=n<<4|a>>>28;b=a<<4|d>>>28;a=c;d=d&268435455;if((d|0)==134217728&(i|0)!=0|d>>>0>134217728){a=a+1073741824|0;b=b+1|0;a=b?a:a+1|0;break a}a=a+1073741824|0;if(i|(d|0)!=134217728){break a}d=b&1;b=d+b|0;a=b>>>0>>0?a+1|0:a;break a}if(!(!b&(h|0)==2147418112?!(d|i):h>>>0<2147418112)){a=c;c=n<<4|a>>>28;b=a<<4|d>>>28;a=c&524287|2146959360;break a}b=0;a=2146435072;if(h>>>0>1140785151){break a}a=0;o=h>>>16|0;if(o>>>0<15249){break a}b=i;a=d;e=n&65535|65536;h=e;l=c;f=c;k=o-15233|0;b:{if(k&64){e=b;a=k+-64|0;c=a&31;if((a&63)>>>0>=32){a=b<>>32-c|d<>>0>=32){c=f<>>32-j|e<>>0>=32){c=0;f=a>>>f|0}else{c=a>>>f|0;f=((1<>>f}f=m|f;e=c|e;m=b;j=k&31;if((k&63)>>>0>=32){c=b<>>32-j|a<>2]=b;G[g+20>>2]=a;G[g+24>>2]=f;G[g+28>>2]=e;b=15361-o|0;c:{if(b&64){d=l;b=b+-64|0;a=b&31;if((b&63)>>>0>=32){c=0;i=h>>>a|0}else{c=h>>>a|0;i=((1<>>a}d=c;l=0;h=0;break c}if(!b){break c}e=l;a=64-b|0;c=a&31;if((a&63)>>>0>=32){a=e<>>32-c|h<>>0>=32){c=0;e=d>>>i|0}else{c=d>>>i|0;e=((1<>>i}i=f|e;d=a|c;e=l;c=b&31;if((b&63)>>>0>=32){a=0;l=h>>>c|0}else{a=h>>>c|0;l=((1<>>c}h=a}G[g>>2]=i;G[g+4>>2]=d;G[g+8>>2]=l;G[g+12>>2]=h;b=G[g+8>>2];a=G[g+12>>2]<<4|b>>>28;b=b<<4;c=G[g>>2];h=G[g+4>>2];b=h>>>28|b;d=h&268435455;c=c|(G[g+16>>2]|G[g+24>>2]|(G[g+20>>2]|G[g+28>>2]))!=0;if((d|0)==134217728&(c|0)!=0|d>>>0>134217728){b=b+1|0;a=b?a:a+1|0;break a}if(c|(d|0)!=134217728){break a}c=b;b=b+(b&1)|0;a=c>>>0>b>>>0?a+1|0:a}Y=g+32|0;x(0,b|0);x(1,n&-2147483648|a);q=p,r=+z(),L[q>>3]=r}function Jc(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;m=a+3216|0;b=$a(b,c,d,e,m);a:{b:{if((b|0)==-1){break b}l=Y-16|0;Y=l;f=b+d|0;b=xa(d,f,l+12|0);c:{if(!b){d=0;break c}d=0;d:{c=G[l+12>>2];if((c|0)!=1){if((c|0)!=-2147483647){break d}o=1}c=a+3220|0;if(!(!b|(b|0)==(f|0))){E[c|0]=H[b|0]!=0;g=b+1|0}if(!g){break c}b=Qa(g,f,a+3221|0);if(!b){break c}b=Qa(b,f,a+3253|0);if(!b){break c}b=Qa(b,f,a+3285|0);if(!b){break c}n=Y-16|0;Y=n;b=Wa(b,f,a+12|0,32);e:{if(!b){break e}d=a;h=a+44|0;i=Y-16|0;Y=i;c=xa(b,f,i+12|0);f:{if(!c){a=0;break f}k=h+4|0;j=h+104|0;while(1){a=G[i+12>>2];G[i+12>>2]=a-1;if((c|0)==(f|0)){a=c;break f}if(!a){a=c;break f}b=k;a=j;g=G[h>>2];if((a|0)!=(g|0)){a=g+100|0;G[h>>2]=a;b=g}a=a-100|0;if((b|0)!=(a|0)){while(1){g=a;a=a-100|0;ma(g,a,100);if((a|0)!=(b|0)){continue}break}}a=0;c=Ma(c,f,b);if(!c){break f}c=Wa(c,f,b+68|0,32);if(!c){break f}c=xa(c,f,b- -64|0);if(c){continue}break}}Y=i+16|0;if(!a){break e}h=d+148|0;i=Y-16|0;Y=i;c=xa(a,f,i+12|0);g:{if(!c){a=0;break g}k=h+276|0;j=h+344|0;while(1){a=G[i+12>>2];G[i+12>>2]=a-1;if((c|0)==(f|0)){a=c;break g}if(!a){a=c;break g}b=k;a=j;g=G[h>>2];if((a|0)!=(g|0)){a=g+68|0;G[h>>2]=a;b=g}a=a-68|0;if((b|0)!=(a|0)){while(1){g=a;a=a-68|0;ma(g,a,68);if((a|0)!=(b|0)){continue}break}}a=0;c=Qa(c,f,b);if(!c){break g}c=Wa(c,f,b+36|0,32);if(!c){break g}c=xa(c,f,b+32|0);if(c){continue}break}}Y=i+16|0;if(!a){break e}j=d+492|0;h=Y-16|0;Y=h;c=xa(a,f,h+12|0);h:{if(!c){a=0;break h}g=j+2656|0;k=j+2724|0;while(1){a=G[h+12>>2];G[h+12>>2]=a-1;if((c|0)==(f|0)){a=c;break h}if(!a){a=c;break h}b=g;a=k;d=G[j>>2];if((a|0)!=(d|0)){a=d+68|0;G[j>>2]=a;b=d}a=a-68|0;if((b|0)!=(a|0)){while(1){d=a;a=a-68|0;ma(d,a,68);if((a|0)!=(b|0)){continue}break}}a=0;c=Qa(c,f,b);if(!c){break h}c=Wa(c,f,b+36|0,32);if(!c){break h}c=xa(c,f,b+32|0);if(c){continue}break}}Y=h+16|0;c=a;if(!a){break e}if(o){c=xa(a,f,n+12|0);if(!c){break e}}p=c}Y=n+16|0;d=p;break c}G[a+3216>>2]=9}Y=l+16|0;i:{if(!d){if(G[m>>2]){break b}a=10;break i}a=17;if((d|0)==(f|0)){break a}}G[m>>2]=a}e=-1}return e|0}function zb(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0;G[d+4>>2]=0;G[d+8>>2]=0;E[d|0]=0;G[d+12>>2]=0;G[d+16>>2]=0;c=c- -64|0;if(c>>>0>>0){E[d|0]=H[a|0];b=b-c|0;if((b|0)!=1){c=a+b|0;a=a+1|0;while(1){g=a;if(H[a|0]==8){h=a+1|0;b=h;while(1){a:{if((b|0)==(c|0)){a=c;break a}e=E[b|0];a=b+1|0;b=a;if((e|0)<0){continue}}break}b:{if((a|0)==(h|0)){f=0;break b}e=(g^-1)+a|0;i=e&3;h=0;f=0;b=a;if((b-g|0)-2>>>0>=3){j=e&-4;e=0;while(1){f=(H[b-2|0]&127|(f<<14|(H[b-1|0]&127)<<7))<<14|(H[b-3|0]&127)<<7;b=b-4|0;f=f|H[b|0]&127;e=e+4|0;if((j|0)!=(e|0)){continue}break}}if(!i){break b}while(1){b=b-1|0;f=H[b|0]&127|f<<7;h=h+1|0;if((i|0)!=(h|0)){continue}break}}G[d+4>>2]=f;j=1}c:{if((a|0)==(c|0)){break c}if(H[a|0]==18){i=a+1|0;b=i;while(1){d:{if((b|0)==(c|0)){e=c;break d}h=E[b|0];e=b+1|0;b=e;if((h|0)<0){continue}}break}e:{if((e|0)==(i|0)){f=0;break e}i=(a^-1)+e|0;k=i&3;h=0;f=0;b=e;if((b-a|0)-2>>>0>=3){i=i&-4;a=0;while(1){f=(H[b-2|0]&127|(f<<14|(H[b-1|0]&127)<<7))<<14|(H[b-3|0]&127)<<7;b=b-4|0;f=f|H[b|0]&127;a=a+4|0;if((i|0)!=(a|0)){continue}break}}if(k){while(1){b=b-1|0;f=H[b|0]&127|f<<7;h=h+1|0;if((k|0)!=(h|0)){continue}break}}if(c-e>>>0>>0){break c}}G[d+16>>2]=f;G[d+12>>2]=e;a=e+f|0}f:{if((a|0)==(c|0)|(a|0)!=(g|0)){break f}g:{switch(H[g|0]&7){case 0:while(1){h:{if((c|0)==(g|0)){b=c;break h}a=E[g|0];b=g+1|0;g=b;if((a|0)<0){continue}}break};while(1){if((b|0)==(c|0)){a=c;break f}e=E[b|0];a=b+1|0;b=a;if((e|0)<0){continue}break};break f;case 2:break g;default:break c}}while(1){i:{if((c|0)==(g|0)){a=c;break i}b=E[g|0];a=g+1|0;g=a;if((b|0)<0){continue}}break}b=a;while(1){j:{if((b|0)==(c|0)){h=c;break j}e=E[b|0];h=b+1|0;b=h;if((e|0)<0){continue}}break}if((a|0)==(h|0)){break f}e=h-a|0;i=e&3;f=0;g=0;b=h;if(b+(a^-1)>>>0>=3){e=e&-4;a=0;while(1){g=(H[b-2|0]&127|(g<<14|(H[b-1|0]&127)<<7))<<14|(H[b-3|0]&127)<<7;b=b-4|0;g=g|H[b|0]&127;a=a+4|0;if((e|0)!=(a|0)){continue}break}}if(i){while(1){b=b-1|0;g=H[b|0]&127|g<<7;f=f+1|0;if((i|0)!=(f|0)){continue}break}}if(c-h>>>0>>0){break c}a=g+h|0}if((a|0)!=(c|0)){continue}}break}}G[d+8>>2]=j}}function Ma(a,b,c){var d=0,e=0,f=0,g=0;a:{if(!a){break a}d=a+32|0;if(d>>>0>b>>>0){break a}f=H[a+4|0]|H[a+5|0]<<8|(H[a+6|0]<<16|H[a+7|0]<<24);g=H[a|0]|H[a+1|0]<<8|(H[a+2|0]<<16|H[a+3|0]<<24);E[c|0]=g;E[c+1|0]=g>>>8;E[c+2|0]=g>>>16;E[c+3|0]=g>>>24;E[c+4|0]=f;E[c+5|0]=f>>>8;E[c+6|0]=f>>>16;E[c+7|0]=f>>>24;f=H[a+28|0]|H[a+29|0]<<8|(H[a+30|0]<<16|H[a+31|0]<<24);g=H[a+24|0]|H[a+25|0]<<8|(H[a+26|0]<<16|H[a+27|0]<<24);E[c+24|0]=g;E[c+25|0]=g>>>8;E[c+26|0]=g>>>16;E[c+27|0]=g>>>24;E[c+28|0]=f;E[c+29|0]=f>>>8;E[c+30|0]=f>>>16;E[c+31|0]=f>>>24;f=H[a+20|0]|H[a+21|0]<<8|(H[a+22|0]<<16|H[a+23|0]<<24);g=H[a+16|0]|H[a+17|0]<<8|(H[a+18|0]<<16|H[a+19|0]<<24);E[c+16|0]=g;E[c+17|0]=g>>>8;E[c+18|0]=g>>>16;E[c+19|0]=g>>>24;E[c+20|0]=f;E[c+21|0]=f>>>8;E[c+22|0]=f>>>16;E[c+23|0]=f>>>24;f=H[a+12|0]|H[a+13|0]<<8|(H[a+14|0]<<16|H[a+15|0]<<24);g=H[a+8|0]|H[a+9|0]<<8|(H[a+10|0]<<16|H[a+11|0]<<24);E[c+8|0]=g;E[c+9|0]=g>>>8;E[c+10|0]=g>>>16;E[c+11|0]=g>>>24;E[c+12|0]=f;E[c+13|0]=f>>>8;E[c+14|0]=f>>>16;E[c+15|0]=f>>>24;a=a- -64|0;if(a>>>0>b>>>0){break a}e=H[d+4|0]|H[d+5|0]<<8|(H[d+6|0]<<16|H[d+7|0]<<24);b=H[d|0]|H[d+1|0]<<8|(H[d+2|0]<<16|H[d+3|0]<<24);E[c+32|0]=b;E[c+33|0]=b>>>8;E[c+34|0]=b>>>16;E[c+35|0]=b>>>24;E[c+36|0]=e;E[c+37|0]=e>>>8;E[c+38|0]=e>>>16;E[c+39|0]=e>>>24;e=H[d+28|0]|H[d+29|0]<<8|(H[d+30|0]<<16|H[d+31|0]<<24);b=H[d+24|0]|H[d+25|0]<<8|(H[d+26|0]<<16|H[d+27|0]<<24);E[c+56|0]=b;E[c+57|0]=b>>>8;E[c+58|0]=b>>>16;E[c+59|0]=b>>>24;E[c+60|0]=e;E[c+61|0]=e>>>8;E[c+62|0]=e>>>16;E[c+63|0]=e>>>24;e=H[d+20|0]|H[d+21|0]<<8|(H[d+22|0]<<16|H[d+23|0]<<24);b=H[d+16|0]|H[d+17|0]<<8|(H[d+18|0]<<16|H[d+19|0]<<24);E[c+48|0]=b;E[c+49|0]=b>>>8;E[c+50|0]=b>>>16;E[c+51|0]=b>>>24;E[c+52|0]=e;E[c+53|0]=e>>>8;E[c+54|0]=e>>>16;E[c+55|0]=e>>>24;e=H[d+12|0]|H[d+13|0]<<8|(H[d+14|0]<<16|H[d+15|0]<<24);b=H[d+8|0]|H[d+9|0]<<8|(H[d+10|0]<<16|H[d+11|0]<<24);E[c+40|0]=b;E[c+41|0]=b>>>8;E[c+42|0]=b>>>16;E[c+43|0]=b>>>24;E[c+44|0]=e;E[c+45|0]=e>>>8;E[c+46|0]=e>>>16;E[c+47|0]=e>>>24;e=a}return e}function Pa(a,b){var c=0,d=0;c=H[b+4|0]|H[b+5|0]<<8|(H[b+6|0]<<16|H[b+7|0]<<24);d=H[b|0]|H[b+1|0]<<8|(H[b+2|0]<<16|H[b+3|0]<<24);E[a|0]=d;E[a+1|0]=d>>>8;E[a+2|0]=d>>>16;E[a+3|0]=d>>>24;E[a+4|0]=c;E[a+5|0]=c>>>8;E[a+6|0]=c>>>16;E[a+7|0]=c>>>24;c=H[b+28|0]|H[b+29|0]<<8|(H[b+30|0]<<16|H[b+31|0]<<24);d=H[b+24|0]|H[b+25|0]<<8|(H[b+26|0]<<16|H[b+27|0]<<24);E[a+24|0]=d;E[a+25|0]=d>>>8;E[a+26|0]=d>>>16;E[a+27|0]=d>>>24;E[a+28|0]=c;E[a+29|0]=c>>>8;E[a+30|0]=c>>>16;E[a+31|0]=c>>>24;c=H[b+20|0]|H[b+21|0]<<8|(H[b+22|0]<<16|H[b+23|0]<<24);d=H[b+16|0]|H[b+17|0]<<8|(H[b+18|0]<<16|H[b+19|0]<<24);E[a+16|0]=d;E[a+17|0]=d>>>8;E[a+18|0]=d>>>16;E[a+19|0]=d>>>24;E[a+20|0]=c;E[a+21|0]=c>>>8;E[a+22|0]=c>>>16;E[a+23|0]=c>>>24;c=H[b+12|0]|H[b+13|0]<<8|(H[b+14|0]<<16|H[b+15|0]<<24);d=H[b+8|0]|H[b+9|0]<<8|(H[b+10|0]<<16|H[b+11|0]<<24);E[a+8|0]=d;E[a+9|0]=d>>>8;E[a+10|0]=d>>>16;E[a+11|0]=d>>>24;E[a+12|0]=c;E[a+13|0]=c>>>8;E[a+14|0]=c>>>16;E[a+15|0]=c>>>24;c=H[b+36|0]|H[b+37|0]<<8|(H[b+38|0]<<16|H[b+39|0]<<24);d=H[b+32|0]|H[b+33|0]<<8|(H[b+34|0]<<16|H[b+35|0]<<24);E[a+32|0]=d;E[a+33|0]=d>>>8;E[a+34|0]=d>>>16;E[a+35|0]=d>>>24;E[a+36|0]=c;E[a+37|0]=c>>>8;E[a+38|0]=c>>>16;E[a+39|0]=c>>>24;c=H[b+44|0]|H[b+45|0]<<8|(H[b+46|0]<<16|H[b+47|0]<<24);d=H[b+40|0]|H[b+41|0]<<8|(H[b+42|0]<<16|H[b+43|0]<<24);E[a+40|0]=d;E[a+41|0]=d>>>8;E[a+42|0]=d>>>16;E[a+43|0]=d>>>24;E[a+44|0]=c;E[a+45|0]=c>>>8;E[a+46|0]=c>>>16;E[a+47|0]=c>>>24;c=H[b+52|0]|H[b+53|0]<<8|(H[b+54|0]<<16|H[b+55|0]<<24);d=H[b+48|0]|H[b+49|0]<<8|(H[b+50|0]<<16|H[b+51|0]<<24);E[a+48|0]=d;E[a+49|0]=d>>>8;E[a+50|0]=d>>>16;E[a+51|0]=d>>>24;E[a+52|0]=c;E[a+53|0]=c>>>8;E[a+54|0]=c>>>16;E[a+55|0]=c>>>24;c=H[b+60|0]|H[b+61|0]<<8|(H[b+62|0]<<16|H[b+63|0]<<24);b=H[b+56|0]|H[b+57|0]<<8|(H[b+58|0]<<16|H[b+59|0]<<24);E[a+56|0]=b;E[a+57|0]=b>>>8;E[a+58|0]=b>>>16;E[a+59|0]=b>>>24;E[a+60|0]=c;E[a+61|0]=c>>>8;E[a+62|0]=c>>>16;E[a+63|0]=c>>>24;return a- -64|0}function oc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;if(c>>>0<43){G[a+3216>>2]=2;return-1}c=Y-96|0;Y=c;d=a+3245|0;e=H[d+4|0]|H[d+5|0]<<8|(H[d+6|0]<<16|H[d+7|0]<<24);G[c+24>>2]=H[d|0]|H[d+1|0]<<8|(H[d+2|0]<<16|H[d+3|0]<<24);G[c+28>>2]=e;d=a+3237|0;e=H[d+4|0]|H[d+5|0]<<8|(H[d+6|0]<<16|H[d+7|0]<<24);G[c+16>>2]=H[d|0]|H[d+1|0]<<8|(H[d+2|0]<<16|H[d+3|0]<<24);G[c+20>>2]=e;d=H[a+3225|0]|H[a+3226|0]<<8|(H[a+3227|0]<<16|H[a+3228|0]<<24);G[c>>2]=H[a+3221|0]|H[a+3222|0]<<8|(H[a+3223|0]<<16|H[a+3224|0]<<24);G[c+4>>2]=d;d=a+3229|0;e=H[d+4|0]|H[d+5|0]<<8|(H[d+6|0]<<16|H[d+7|0]<<24);G[c+8>>2]=H[d|0]|H[d+1|0]<<8|(H[d+2|0]<<16|H[d+3|0]<<24);G[c+12>>2]=e;d=a+3261|0;e=H[d+4|0]|H[d+5|0]<<8|(H[d+6|0]<<16|H[d+7|0]<<24);G[c+40>>2]=H[d|0]|H[d+1|0]<<8|(H[d+2|0]<<16|H[d+3|0]<<24);G[c+44>>2]=e;d=a+3269|0;e=H[d+4|0]|H[d+5|0]<<8|(H[d+6|0]<<16|H[d+7|0]<<24);G[c+48>>2]=H[d|0]|H[d+1|0]<<8|(H[d+2|0]<<16|H[d+3|0]<<24);G[c+52>>2]=e;d=a+3277|0;e=H[d+4|0]|H[d+5|0]<<8|(H[d+6|0]<<16|H[d+7|0]<<24);G[c+56>>2]=H[d|0]|H[d+1|0]<<8|(H[d+2|0]<<16|H[d+3|0]<<24);G[c+60>>2]=e;d=H[a+3257|0]|H[a+3258|0]<<8|(H[a+3259|0]<<16|H[a+3260|0]<<24);G[c+32>>2]=H[a+3253|0]|H[a+3254|0]<<8|(H[a+3255|0]<<16|H[a+3256|0]<<24);G[c+36>>2]=d;d=a+3293|0;e=H[d+4|0]|H[d+5|0]<<8|(H[d+6|0]<<16|H[d+7|0]<<24);G[c+72>>2]=H[d|0]|H[d+1|0]<<8|(H[d+2|0]<<16|H[d+3|0]<<24);G[c+76>>2]=e;d=a+3301|0;e=H[d+4|0]|H[d+5|0]<<8|(H[d+6|0]<<16|H[d+7|0]<<24);G[c+80>>2]=H[d|0]|H[d+1|0]<<8|(H[d+2|0]<<16|H[d+3|0]<<24);G[c+84>>2]=e;d=a+3309|0;e=H[d+4|0]|H[d+5|0]<<8|(H[d+6|0]<<16|H[d+7|0]<<24);G[c+88>>2]=H[d|0]|H[d+1|0]<<8|(H[d+2|0]<<16|H[d+3|0]<<24);G[c+92>>2]=e;d=H[a+3289|0]|H[a+3290|0]<<8|(H[a+3291|0]<<16|H[a+3292|0]<<24);G[c+64>>2]=H[a+3285|0]|H[a+3286|0]<<8|(H[a+3287|0]<<16|H[a+3288|0]<<24);G[c+68>>2]=d;Pb(c,96,b+11|0);Y=c+96|0;pa(b+11|0,32,b);return 43}function Kc(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;k=a+7516|0;b=$a(b,c,d,e,k);a:{b:{if((b|0)==-1){break b}f=a;h=Y-16|0;Y=h;g=b+d|0;a=xa(d,g,h+12|0);c:{if(!a){break c}d:{switch(G[h+12>>2]-1|0){case 0:G[f+7516>>2]=13;break c;default:G[f+7516>>2]=9;break c;case 1:case 2:case 3:break d}}a=ub(a,g,f);if(!a){break c}a=Ma(a,g,f+96|0);if(!a){break c}j=f+160|0;i=Y-16|0;Y=i;b=xa(a,g,i+12|0);e:{if(!b){a=0;break e}m=j+7132|0;n=j+7204|0;while(1){a=G[i+12>>2];G[i+12>>2]=a-1;if((b|0)==(g|0)){a=b;break e}if(!a){a=b;break e}c=m;a=n;d=G[j>>2];if((a|0)!=(d|0)){a=d+72|0;G[j>>2]=a;c=d}a=a-72|0;if((c|0)!=(a|0)){while(1){d=a;a=a-72|0;ma(d,a,72);if((a|0)!=(c|0)){continue}break}}a=0;b=xa(b,g,c);if(!b){break e}d=0;if(!(!b|(b|0)==(g|0))){E[c+4|0]=H[b|0]!=0;d=b+1|0}if(!d){break e}b=Ma(d,g,c+5|0);if(b){continue}break}}Y=i+16|0;if(!a){break c}b=G[h+12>>2];f:{if(b>>>0<=2){E[f+7364|0]=0;break f}g:{if((b|0)==3){a=xa(a,g,f+7368|0);if(!a){break c}b=f+7372|0;c=0;if(!(!a|(a|0)==(g|0))){E[b|0]=H[a|0]!=0;c=a+1|0}if(!c){break c}a=Ma(c,g,f+7373|0);if(!a){break c}a=xa(a,g,f+7440|0);if(!a){break c}d=f+7444|0;c=0;if(!(!a|(a|0)==(g|0))){E[d|0]=H[a|0]!=0;c=a+1|0}if(!c){break c}a=Ma(c,g,f+7445|0);if(!a){break c}if(H[b|0]){if(!H[f+7444|0]){break g}E[f+7364|0]=2;break f}E[f+7364|0]=0;break f}c=f+7364|0;b=0;if(!a|(a|0)==(g|0)){a=b}else{E[c|0]=H[a|0];a=a+1|0}if(!a){break c}if(!H[c|0]){break f}a=yb(a,g,f+7368|0);if(!a){break c}if(H[c|0]<2){break f}a=yb(a,g,f+7440|0);if(!a){break c}if(H[c|0]<3){break f}G[f+7516>>2]=10;break c}E[f+7364|0]=1}l=xa(a,g,f+7512|0)}Y=h+16|0;h:{if(!l){if(G[k>>2]){break b}a=10;break h}a=17;if((g|0)==(l|0)){break a}}G[k>>2]=a}e=-1}return e|0}function Ha(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;o=G[b>>2];d=G[a>>2];p=G[b+4>>2];e=G[a+4>>2];q=G[b+8>>2];f=G[a+8>>2];r=G[b+12>>2];g=G[a+12>>2];s=G[b+16>>2];h=G[a+16>>2];m=G[b+20>>2];i=G[a+20>>2];t=G[b+24>>2];j=G[a+24>>2];u=G[b+28>>2];k=G[a+28>>2];v=G[b+32>>2];l=G[a+32>>2];c=0-c|0;n=G[a+36>>2];G[a+36>>2]=c&(n^G[b+36>>2])^n;G[a+32>>2]=l^c&(l^v);G[a+28>>2]=k^c&(k^u);G[a+24>>2]=j^c&(j^t);G[a+20>>2]=i^c&(i^m);G[a+16>>2]=h^c&(h^s);G[a+12>>2]=g^c&(g^r);G[a+8>>2]=f^c&(f^q);G[a+4>>2]=e^c&(e^p);G[a>>2]=d^c&(d^o);d=G[a+44>>2];o=G[b+44>>2];e=G[a+48>>2];p=G[b+48>>2];f=G[a+52>>2];q=G[b+52>>2];g=G[a+56>>2];r=G[b+56>>2];h=G[a+60>>2];s=G[b+60>>2];m=a- -64|0;i=G[m>>2];t=G[b- -64>>2];j=G[a+68>>2];u=G[b+68>>2];k=G[a+72>>2];v=G[b+72>>2];l=G[a+40>>2];n=G[b+40>>2];w=G[a+76>>2];G[a+76>>2]=w^c&(G[b+76>>2]^w);G[a+72>>2]=k^c&(k^v);G[a+68>>2]=j^c&(j^u);G[m>>2]=i^c&(i^t);G[a+60>>2]=h^c&(h^s);G[a+56>>2]=g^c&(g^r);G[a+52>>2]=f^c&(f^q);G[a+48>>2]=e^c&(e^p);G[a+44>>2]=d^c&(d^o);G[a+40>>2]=l^c&(l^n);d=G[a+84>>2];o=G[b+84>>2];e=G[a+88>>2];p=G[b+88>>2];f=G[a+92>>2];q=G[b+92>>2];g=G[a+96>>2];r=G[b+96>>2];h=G[a+100>>2];s=G[b+100>>2];i=G[a+104>>2];m=G[b+104>>2];j=G[a+108>>2];t=G[b+108>>2];k=G[a+112>>2];u=G[b+112>>2];l=G[a+80>>2];v=G[b+80>>2];n=G[b+116>>2];b=G[a+116>>2];G[a+116>>2]=c&(n^b)^b;G[a+112>>2]=k^c&(k^u);G[a+108>>2]=j^c&(j^t);G[a+104>>2]=i^c&(i^m);G[a+100>>2]=h^c&(h^s);G[a+96>>2]=g^c&(g^r);G[a+92>>2]=f^c&(f^q);G[a+88>>2]=e^c&(e^p);G[a+84>>2]=d^c&(d^o);G[a+80>>2]=l^c&(l^v)}function qb(a,b){var c=0,d=0,e=0;c=Y-192|0;Y=c;e=c+144|0;ia(e,b);d=c+96|0;ia(d,e);ia(d,d);ka(d,b,d);ka(e,e,d);b=c+48|0;ia(b,e);ka(d,d,b);ia(b,d);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ka(d,b,d);ia(b,d);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ka(b,b,d);ia(c,b);ia(c,c);ia(c,c);ia(c,c);ia(c,c);ia(c,c);ia(c,c);ia(c,c);ia(c,c);ia(c,c);ia(c,c);ia(c,c);ia(c,c);ia(c,c);ia(c,c);ia(c,c);ia(c,c);ia(c,c);ia(c,c);ia(c,c);ka(b,c,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ka(d,b,d);ia(b,d);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ka(b,b,d);ia(c,b);b=1;while(1){ia(c,c);b=b+1|0;if((b|0)!=100){continue}break}b=c+48|0;ka(b,c,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);ia(b,b);d=c+96|0;ka(d,b,d);ia(d,d);ia(d,d);ia(d,d);ia(d,d);ia(d,d);ka(a,d,c+144|0);Y=c+192|0}function mb(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;h=b+32|0;c=Y-384|0;Y=c;d=c- -64|0;G[d>>2]=327033209;G[d+4>>2]=1541459225;G[c+56>>2]=-79577749;G[c+60>>2]=528734635;G[c+48>>2]=725511199;G[c+52>>2]=-1694144372;l=c+40|0;d=l;G[d>>2]=-1377402159;G[d+4>>2]=1359893119;f=32;G[c+32>>2]=1595750129;G[c+36>>2]=-1521486534;G[c+24>>2]=-23791573;G[c+28>>2]=1013904242;G[c+16>>2]=-2067093701;G[c+20>>2]=-1150833019;G[c+8>>2]=-205731576;G[c+12>>2]=1779033703;G[c>>2]=0;G[c+4>>2]=0;G[c+72>>2]=0;if(a){k=c+76|0;while(1){d=G[c+72>>2];a:{if(!(d|f>>>0<128)){ya(c,a);d=G[c+4>>2];e=G[c>>2]+1024|0;d=e>>>0<1024?d+1|0:d;G[c>>2]=e;G[c+4>>2]=d;f=f-128|0;a=a+128|0;break a}i=128;e=128-d|0;e=e>>>0>f>>>0?f:e;if((d|0)!=128){j=e>>>0<=1?1:e;m=j&3;i=0;d=0;if(e>>>0>=4){n=j&-4;j=0;while(1){E[(G[c+72>>2]+d|0)+k|0]=H[a+d|0];g=d|1;E[(g+G[c+72>>2]|0)+k|0]=H[a+g|0];g=d|2;E[(g+G[c+72>>2]|0)+k|0]=H[a+g|0];g=d|3;E[(g+G[c+72>>2]|0)+k|0]=H[a+g|0];d=d+4|0;j=j+4|0;if((n|0)!=(j|0)){continue}break}}if(m){while(1){E[((G[c+72>>2]+d|0)+c|0)+76|0]=H[a+d|0];d=d+1|0;i=i+1|0;if((m|0)!=(i|0)){continue}break}}i=G[c+72>>2]}f=f-e|0;a=a+e|0;d=e+i|0;G[c+72>>2]=d;if((d|0)!=128){break a}ya(c,k);G[c+72>>2]=0;d=G[c+4>>2];e=G[c>>2]+1024|0;d=e>>>0<1024?d+1|0:d;G[c>>2]=e;G[c+4>>2]=d}if(f){continue}break}gb(c,h)}E[h|0]=H[h|0]&248;E[h+31|0]=H[h+31|0]&63|64;Sb(c,h);a=c+304|0;qb(a,c+80|0);d=c+256|0;ka(d,c,a);f=c+208|0;ka(f,l,a);Ja(b,f);Ja(c+352|0,d);E[b+31|0]=H[b+31|0]^H[c+352|0]<<7;Y=c+384|0}function Sd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=Y-240|0;Y=d;e=ra(c);a:{if((e|0)!=229){c=-1;if((e|0)==-1){G[a+300>>2]=7;break a}G[a+300>>2]=11;break a}Ra(b,c,d);b:{if(H[d|0]==2){c=d|5;b=H[d+1|0]|H[d+2|0]<<8|(H[d+3|0]<<16|H[d+4|0]<<24);b=b<<24|(b&65280)<<8|(b>>>8&65280|b>>>24);cb(a,c,b);cb(a+132|0,c,b);b=H[d+161|0]|H[d+162|0]<<8|(H[d+163|0]<<16|H[d+164|0]<<24);c=H[d+157|0]|H[d+158|0]<<8|(H[d+159|0]<<16|H[d+160|0]<<24);E[a+288|0]=c;E[a+289|0]=c>>>8;E[a+290|0]=c>>>16;E[a+291|0]=c>>>24;E[a+292|0]=b;E[a+293|0]=b>>>8;E[a+294|0]=b>>>16;E[a+295|0]=b>>>24;b=H[d+153|0]|H[d+154|0]<<8|(H[d+155|0]<<16|H[d+156|0]<<24);c=H[d+149|0]|H[d+150|0]<<8|(H[d+151|0]<<16|H[d+152|0]<<24);E[a+280|0]=c;E[a+281|0]=c>>>8;E[a+282|0]=c>>>16;E[a+283|0]=c>>>24;E[a+284|0]=b;E[a+285|0]=b>>>8;E[a+286|0]=b>>>16;E[a+287|0]=b>>>24;b=H[d+145|0]|H[d+146|0]<<8|(H[d+147|0]<<16|H[d+148|0]<<24);c=H[d+141|0]|H[d+142|0]<<8|(H[d+143|0]<<16|H[d+144|0]<<24);E[a+272|0]=c;E[a+273|0]=c>>>8;E[a+274|0]=c>>>16;E[a+275|0]=c>>>24;E[a+276|0]=b;E[a+277|0]=b>>>8;E[a+278|0]=b>>>16;E[a+279|0]=b>>>24;b=H[d+137|0]|H[d+138|0]<<8|(H[d+139|0]<<16|H[d+140|0]<<24);c=H[d+133|0]|H[d+134|0]<<8|(H[d+135|0]<<16|H[d+136|0]<<24);E[a+264|0]=c;E[a+265|0]=c>>>8;E[a+266|0]=c>>>16;E[a+267|0]=c>>>24;E[a+268|0]=b;E[a+269|0]=b>>>8;E[a+270|0]=b>>>16;E[a+271|0]=b>>>24;if(!jb(a+264|0,d,165,d+165|0)){G[a+300>>2]=14;c=-1;break b}G[a+296>>2]=1;c=0;break b}G[a+300>>2]=11;c=-1}la(d,229)}Y=d+240|0;return c|0}function Rb(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;d=Y-128|0;Y=d;G[a+4>>2]=0;G[a+8>>2]=0;G[a>>2]=1;G[a+12>>2]=0;G[a+16>>2]=0;G[a+20>>2]=0;G[a+24>>2]=0;G[a+28>>2]=0;G[a+32>>2]=0;G[a+36>>2]=0;G[a+40>>2]=1;ta(a+44|0,0,76);e=c-((c>>31&c)<<1)|0;g=(e^1)&255;f=M(b,960);Ha(a,f+6640|0,0-!g>>>31|0);b=(e^2)&255;Ha(a,f+6760|0,0-!b>>>31|0);b=(e^3)&255;Ha(a,f+6880|0,0-!b>>>31|0);b=(e^4)&255;Ha(a,f+7e3|0,0-!b>>>31|0);b=(e^5)&255;Ha(a,f+7120|0,0-!b>>>31|0);b=(e^6)&255;Ha(a,f+7240|0,0-!b>>>31|0);b=(e^7)&255;Ha(a,f+7360|0,0-!b>>>31|0);b=(e^8)&255;Ha(a,f+7480|0,0-!b>>>31|0);h=G[a+48>>2];i=G[a+52>>2];j=G[a+56>>2];k=G[a+60>>2];b=a- -64|0;l=G[b>>2];e=G[b+4>>2];f=G[a+40>>2];g=G[a+44>>2];b=G[a+76>>2];G[d+40>>2]=G[a+72>>2];G[d+44>>2]=b;G[d+32>>2]=l;G[d+36>>2]=e;G[d+24>>2]=j;G[d+28>>2]=k;G[d+16>>2]=h;G[d+20>>2]=i;G[d+8>>2]=f;G[d+12>>2]=g;h=G[a>>2];i=G[a+4>>2];j=G[a+8>>2];k=G[a+12>>2];l=G[a+16>>2];e=G[a+20>>2];f=G[a+24>>2];g=G[a+28>>2];b=G[a+36>>2];G[d+80>>2]=G[a+32>>2];G[d+84>>2]=b;G[d+72>>2]=f;G[d+76>>2]=g;b=d- -64|0;G[b>>2]=l;G[b+4>>2]=e;G[d+56>>2]=j;G[d+60>>2]=k;G[d+48>>2]=h;G[d+52>>2]=i;h=G[a+84>>2];i=G[a+88>>2];j=G[a+92>>2];k=G[a+96>>2];l=G[a+100>>2];e=G[a+104>>2];f=G[a+108>>2];g=G[a+112>>2];b=G[a+80>>2];G[d+124>>2]=0-G[a+116>>2];G[d+120>>2]=0-g;G[d+116>>2]=0-f;G[d+112>>2]=0-e;G[d+108>>2]=0-l;G[d+104>>2]=0-k;G[d+100>>2]=0-j;G[d+96>>2]=0-i;G[d+92>>2]=0-h;G[d+88>>2]=0-b;Ha(a,d+8|0,(c&128)>>>7|0);Y=d+128|0}function Id(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;f=Y-144|0;Y=f;a:{if(c>>>0<220){G[a+300>>2]=2;a=-1;break a}b:{c:{if((d-G[a+260>>2]|0)>=0){c=a+132|0;fb(c,d);ma(f+12|0,c,132);break c}if((d-G[a+128>>2]|0)<0){break b}c=f+12|0;ma(c,a,132);fb(c,d)}c=b+220|0;E[c-161|0]=d;E[c-162|0]=d>>>8;E[c-163|0]=d>>>16;E[c-164|0]=d>>>24;g=c-165|0;E[g|0]=1;ma(c-160|0,f+12|0,128);d=H[a+292|0]|H[a+293|0]<<8|(H[a+294|0]<<16|H[a+295|0]<<24);c=c-32|0;e=H[a+288|0]|H[a+289|0]<<8|(H[a+290|0]<<16|H[a+291|0]<<24);E[c+24|0]=e;E[c+25|0]=e>>>8;E[c+26|0]=e>>>16;E[c+27|0]=e>>>24;E[c+28|0]=d;E[c+29|0]=d>>>8;E[c+30|0]=d>>>16;E[c+31|0]=d>>>24;d=H[a+284|0]|H[a+285|0]<<8|(H[a+286|0]<<16|H[a+287|0]<<24);e=H[a+280|0]|H[a+281|0]<<8|(H[a+282|0]<<16|H[a+283|0]<<24);E[c+16|0]=e;E[c+17|0]=e>>>8;E[c+18|0]=e>>>16;E[c+19|0]=e>>>24;E[c+20|0]=d;E[c+21|0]=d>>>8;E[c+22|0]=d>>>16;E[c+23|0]=d>>>24;d=H[a+276|0]|H[a+277|0]<<8|(H[a+278|0]<<16|H[a+279|0]<<24);e=H[a+272|0]|H[a+273|0]<<8|(H[a+274|0]<<16|H[a+275|0]<<24);E[c+8|0]=e;E[c+9|0]=e>>>8;E[c+10|0]=e>>>16;E[c+11|0]=e>>>24;E[c+12|0]=d;E[c+13|0]=d>>>8;E[c+14|0]=d>>>16;E[c+15|0]=d>>>24;d=H[a+268|0]|H[a+269|0]<<8|(H[a+270|0]<<16|H[a+271|0]<<24);a=H[a+264|0]|H[a+265|0]<<8|(H[a+266|0]<<16|H[a+267|0]<<24);E[c|0]=a;E[c+1|0]=a>>>8;E[c+2|0]=a>>>16;E[c+3|0]=a>>>24;E[c+4|0]=d;E[c+5|0]=d>>>8;E[c+6|0]=d>>>16;E[c+7|0]=d>>>24;a=Fa(g,165,b);break a}G[a+300>>2]=12;a=-1}Y=f+144|0;return a|0}function Rd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=Y-176|0;Y=d;e=ra(c);a:{if((e|0)!=165){c=-1;if((e|0)==-1){G[a+300>>2]=7;break a}G[a+300>>2]=11;break a}Ra(b,c,d);b:{if(H[d|0]==1){c=d|5;b=H[d+1|0]|H[d+2|0]<<8|(H[d+3|0]<<16|H[d+4|0]<<24);b=b<<24|(b&65280)<<8|(b>>>8&65280|b>>>24);cb(a,c,b);cb(a+132|0,c,b);b=H[d+161|0]|H[d+162|0]<<8|(H[d+163|0]<<16|H[d+164|0]<<24);c=H[d+157|0]|H[d+158|0]<<8|(H[d+159|0]<<16|H[d+160|0]<<24);E[a+288|0]=c;E[a+289|0]=c>>>8;E[a+290|0]=c>>>16;E[a+291|0]=c>>>24;E[a+292|0]=b;E[a+293|0]=b>>>8;E[a+294|0]=b>>>16;E[a+295|0]=b>>>24;b=H[d+153|0]|H[d+154|0]<<8|(H[d+155|0]<<16|H[d+156|0]<<24);c=H[d+149|0]|H[d+150|0]<<8|(H[d+151|0]<<16|H[d+152|0]<<24);E[a+280|0]=c;E[a+281|0]=c>>>8;E[a+282|0]=c>>>16;E[a+283|0]=c>>>24;E[a+284|0]=b;E[a+285|0]=b>>>8;E[a+286|0]=b>>>16;E[a+287|0]=b>>>24;b=H[d+145|0]|H[d+146|0]<<8|(H[d+147|0]<<16|H[d+148|0]<<24);c=H[d+141|0]|H[d+142|0]<<8|(H[d+143|0]<<16|H[d+144|0]<<24);E[a+272|0]=c;E[a+273|0]=c>>>8;E[a+274|0]=c>>>16;E[a+275|0]=c>>>24;E[a+276|0]=b;E[a+277|0]=b>>>8;E[a+278|0]=b>>>16;E[a+279|0]=b>>>24;b=H[d+137|0]|H[d+138|0]<<8|(H[d+139|0]<<16|H[d+140|0]<<24);c=H[d+133|0]|H[d+134|0]<<8|(H[d+135|0]<<16|H[d+136|0]<<24);E[a+264|0]=c;E[a+265|0]=c>>>8;E[a+266|0]=c>>>16;E[a+267|0]=c>>>24;E[a+268|0]=b;E[a+269|0]=b>>>8;E[a+270|0]=b>>>16;E[a+271|0]=b>>>24;c=0;break b}G[a+300>>2]=11;c=-1}la(d,165)}Y=d+176|0;return c|0}function Ea(a,b){var c=0,d=0,e=0;c=G[a+64>>2];d=c+a|0;E[d|0]=128;a:{if(c>>>0<=55){if((c|0)==55){break a}c=54-c|0;ta(d+1|0,0,(c>>>0<=54?c:0)+1|0);break a}d=c+1|0;if(d>>>0<=63){ta(a+d|0,0,63-c|0)}ib(a,a);G[a+48>>2]=0;G[a+52>>2]=0;G[a+40>>2]=0;G[a+44>>2]=0;G[a+32>>2]=0;G[a+36>>2]=0;G[a+24>>2]=0;G[a+28>>2]=0;G[a+16>>2]=0;G[a+20>>2]=0;G[a+8>>2]=0;G[a+12>>2]=0;G[a>>2]=0;G[a+4>>2]=0}c=G[a+76>>2];e=G[a+64>>2]<<3;d=e+G[a+72>>2]|0;c=d>>>0>>0?c+1|0:c;G[a+72>>2]=d;G[a+76>>2]=c;E[a+63|0]=d;E[a+62|0]=(c&255)<<24|d>>>8;E[a+61|0]=(c&65535)<<16|d>>>16;E[a+60|0]=(c&16777215)<<8|d>>>24;E[a+59|0]=c;E[a+58|0]=c>>>8;E[a+57|0]=c>>>16;E[a+56|0]=c>>>24;ib(a,a);E[b|0]=H[a+83|0];E[b+4|0]=H[a+87|0];E[b+8|0]=H[a+91|0];E[b+12|0]=H[a+95|0];E[b+16|0]=H[a+99|0];E[b+20|0]=H[a+103|0];E[b+24|0]=H[a+107|0];E[b+28|0]=H[a+111|0];E[b+1|0]=I[a+82>>1];E[b+5|0]=I[a+86>>1];E[b+9|0]=I[a+90>>1];E[b+13|0]=I[a+94>>1];E[b+17|0]=I[a+98>>1];E[b+21|0]=I[a+102>>1];E[b+25|0]=I[a+106>>1];E[b+29|0]=I[a+110>>1];E[b+2|0]=G[a+80>>2]>>>8;E[b+6|0]=G[a+84>>2]>>>8;E[b+10|0]=G[a+88>>2]>>>8;E[b+14|0]=G[a+92>>2]>>>8;E[b+18|0]=G[a+96>>2]>>>8;E[b+22|0]=G[a+100>>2]>>>8;E[b+26|0]=G[a+104>>2]>>>8;E[b+30|0]=G[a+108>>2]>>>8;E[b+3|0]=G[a+80>>2];E[b+7|0]=G[a+84>>2];E[b+11|0]=G[a+88>>2];E[b+15|0]=G[a+92>>2];E[b+19|0]=G[a+96>>2];E[b+23|0]=G[a+100>>2];E[b+27|0]=G[a+104>>2];E[b+31|0]=G[a+108>>2]}function td(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;if(c>>>0<306){G[a+228>>2]=2;return-1}f=b+306|0;g=f-229|0;E[g|0]=2;c=f-228|0;d=G[a+128>>2];d=d<<24|(d&65280)<<8|(d>>>8&65280|d>>>24);E[c|0]=d;E[c+1|0]=d>>>8;E[c+2|0]=d>>>16;E[c+3|0]=d>>>24;ma(f-224|0,a,128);d=H[a+160|0]|H[a+161|0]<<8|(H[a+162|0]<<16|H[a+163|0]<<24);c=f-96|0;e=H[a+156|0]|H[a+157|0]<<8|(H[a+158|0]<<16|H[a+159|0]<<24);E[c+24|0]=e;E[c+25|0]=e>>>8;E[c+26|0]=e>>>16;E[c+27|0]=e>>>24;E[c+28|0]=d;E[c+29|0]=d>>>8;E[c+30|0]=d>>>16;E[c+31|0]=d>>>24;d=H[a+152|0]|H[a+153|0]<<8|(H[a+154|0]<<16|H[a+155|0]<<24);e=H[a+148|0]|H[a+149|0]<<8|(H[a+150|0]<<16|H[a+151|0]<<24);E[c+16|0]=e;E[c+17|0]=e>>>8;E[c+18|0]=e>>>16;E[c+19|0]=e>>>24;E[c+20|0]=d;E[c+21|0]=d>>>8;E[c+22|0]=d>>>16;E[c+23|0]=d>>>24;d=H[a+144|0]|H[a+145|0]<<8|(H[a+146|0]<<16|H[a+147|0]<<24);e=H[a+140|0]|H[a+141|0]<<8|(H[a+142|0]<<16|H[a+143|0]<<24);E[c+8|0]=e;E[c+9|0]=e>>>8;E[c+10|0]=e>>>16;E[c+11|0]=e>>>24;E[c+12|0]=d;E[c+13|0]=d>>>8;E[c+14|0]=d>>>16;E[c+15|0]=d>>>24;d=H[a+136|0]|H[a+137|0]<<8|(H[a+138|0]<<16|H[a+139|0]<<24);e=H[a+132|0]|H[a+133|0]<<8|(H[a+134|0]<<16|H[a+135|0]<<24);E[c|0]=e;E[c+1|0]=e>>>8;E[c+2|0]=e>>>16;E[c+3|0]=e>>>24;E[c+4|0]=d;E[c+5|0]=d>>>8;E[c+6|0]=d>>>16;E[c+7|0]=d>>>24;eb(a+132|0,g,165,f+-64|0);return Fa(g,229,b)|0}function Aa(a){var b=0,c=0,d=0,e=0;b=M(H[a+12|0],6);c=M(H[a+8|0],6);d=M(H[a+4|0],6);e=M(H[a|0],6);E[a+12|0]=H[b+3653|0]^(H[c+3650|0]^(H[d+3652|0]^H[e+3651|0]));E[a+8|0]=H[b+3651|0]^(H[c+3653|0]^(H[d+3650|0]^H[e+3652|0]));E[a+4|0]=H[b+3652|0]^(H[c+3651|0]^(H[d+3653|0]^H[e+3650|0]));E[a|0]=H[b+3650|0]^(H[c+3652|0]^(H[d+3651|0]^H[e+3653|0]));b=M(H[a+13|0],6);c=M(H[a+9|0],6);d=M(H[a+5|0],6);e=M(H[a+1|0],6);E[a+1|0]=H[b+3650|0]^(H[c+3652|0]^(H[d+3651|0]^H[e+3653|0]));E[a+5|0]=H[b+3652|0]^(H[c+3651|0]^(H[d+3653|0]^H[e+3650|0]));E[a+9|0]=H[b+3651|0]^(H[c+3653|0]^(H[d+3650|0]^H[e+3652|0]));E[a+13|0]=H[b+3653|0]^(H[c+3650|0]^(H[d+3652|0]^H[e+3651|0]));b=M(H[a+14|0],6);c=M(H[a+10|0],6);d=M(H[a+6|0],6);e=M(H[a+2|0],6);E[a+2|0]=H[b+3650|0]^(H[c+3652|0]^(H[d+3651|0]^H[e+3653|0]));E[a+14|0]=H[b+3653|0]^(H[c+3650|0]^(H[d+3652|0]^H[e+3651|0]));E[a+10|0]=H[b+3651|0]^(H[c+3653|0]^(H[d+3650|0]^H[e+3652|0]));E[a+6|0]=H[b+3652|0]^(H[c+3651|0]^(H[d+3653|0]^H[e+3650|0]));b=M(H[a+15|0],6);c=M(H[a+11|0],6);d=M(H[a+7|0],6);e=M(H[a+3|0],6);E[a+15|0]=H[b+3653|0]^(H[c+3650|0]^(H[d+3652|0]^H[e+3651|0]));E[a+11|0]=H[b+3651|0]^(H[c+3653|0]^(H[d+3650|0]^H[e+3652|0]));E[a+7|0]=H[b+3652|0]^(H[c+3651|0]^(H[d+3653|0]^H[e+3650|0]));E[a+3|0]=H[b+3650|0]^(H[c+3652|0]^(H[d+3651|0]^H[e+3653|0]))}function Mb(a,b){var c=0,d=0;c=H[a|0]|H[a+1|0]<<8|(H[a+2|0]<<16|H[a+3|0]<<24);G[b>>2]=c<<24|(c&65280)<<8|(c>>>8&65280|c>>>24);c=H[a+4|0]|H[a+5|0]<<8|(H[a+6|0]<<16|H[a+7|0]<<24);G[b+4>>2]=c<<24|(c&65280)<<8|(c>>>8&65280|c>>>24);c=H[a+8|0]|H[a+9|0]<<8|(H[a+10|0]<<16|H[a+11|0]<<24);G[b+8>>2]=c<<24|(c&65280)<<8|(c>>>8&65280|c>>>24);c=H[a+12|0]|H[a+13|0]<<8|(H[a+14|0]<<16|H[a+15|0]<<24);G[b+12>>2]=c<<24|(c&65280)<<8|(c>>>8&65280|c>>>24);c=H[a+16|0]|H[a+17|0]<<8|(H[a+18|0]<<16|H[a+19|0]<<24);G[b+16>>2]=c<<24|(c&65280)<<8|(c>>>8&65280|c>>>24);c=H[a+20|0]|H[a+21|0]<<8|(H[a+22|0]<<16|H[a+23|0]<<24);G[b+20>>2]=c<<24|(c&65280)<<8|(c>>>8&65280|c>>>24);c=H[a+24|0]|H[a+25|0]<<8|(H[a+26|0]<<16|H[a+27|0]<<24);G[b+24>>2]=c<<24|(c&65280)<<8|(c>>>8&65280|c>>>24);a=H[a+28|0]|H[a+29|0]<<8|(H[a+30|0]<<16|H[a+31|0]<<24);G[b+28>>2]=a<<24|(a&65280)<<8|(a>>>8&65280|a>>>24);c=G[b+28>>2];a=8;while(1){d=a&7;a:{if(!d){d=G[(a-1>>>3<<2)+3328>>2];c=ye(c,8);c=d^(H[(c>>>8&255)+3072|0]<<8|H[(c&255)+3072|0]|H[(c>>>16&255)+3072|0]<<16|H[(c>>>24|0)+3072|0]<<24);break a}if((d|0)!=4){break a}c=H[(c&255)+3072|0]|H[(c>>>8&255)+3072|0]<<8|H[(c>>>16&255)+3072|0]<<16|H[(c>>>24|0)+3072|0]<<24}c=G[(a-8<<2)+b>>2]^c;G[(a<<2)+b>>2]=c;a=a+1|0;if((a|0)!=60){continue}break}}function Ka(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;d=G[b+44>>2];e=G[b+48>>2];f=G[b+52>>2];g=G[b+56>>2];h=G[b+60>>2];c=b- -64|0;i=G[c>>2];j=G[b+68>>2];k=G[b+72>>2];l=G[b+76>>2];m=G[b+4>>2];n=G[b+8>>2];o=G[b+12>>2];p=G[b+16>>2];q=G[b+20>>2];r=G[b+24>>2];s=G[b+28>>2];t=G[b+32>>2];u=G[b+36>>2];G[a>>2]=G[b>>2]+G[b+40>>2];G[a+36>>2]=l+u;G[a+32>>2]=k+t;G[a+28>>2]=j+s;G[a+24>>2]=i+r;G[a+20>>2]=h+q;G[a+16>>2]=g+p;G[a+12>>2]=f+o;G[a+8>>2]=e+n;G[a+4>>2]=d+m;d=G[b+44>>2];e=G[b+48>>2];f=G[b+52>>2];g=G[b+56>>2];h=G[b+60>>2];c=G[c>>2];i=G[b+68>>2];j=G[b+72>>2];k=G[b>>2];l=G[b+40>>2];m=G[b+4>>2];n=G[b+8>>2];o=G[b+12>>2];p=G[b+16>>2];q=G[b+20>>2];r=G[b+24>>2];s=G[b+28>>2];t=G[b+32>>2];G[a+76>>2]=G[b+76>>2]-G[b+36>>2];G[a+72>>2]=j-t;G[a+68>>2]=i-s;G[a- -64>>2]=c-r;G[a+60>>2]=h-q;G[a+56>>2]=g-p;G[a+52>>2]=f-o;G[a+48>>2]=e-n;G[a+44>>2]=d-m;G[a+40>>2]=l-k;d=G[b+88>>2];e=G[b+92>>2];f=G[b+96>>2];g=G[b+100>>2];h=G[b+104>>2];c=G[b+108>>2];i=G[b+80>>2];j=G[b+84>>2];k=G[b+116>>2];G[a+112>>2]=G[b+112>>2];G[a+116>>2]=k;G[a+104>>2]=h;G[a+108>>2]=c;G[a+96>>2]=f;G[a+100>>2]=g;G[a+88>>2]=d;G[a+92>>2]=e;G[a+80>>2]=i;G[a+84>>2]=j;ka(a+120|0,b+120|0,2032)}function fb(a,b){var c=0,d=0;a:{b:{c:{d:{d=G[a+128>>2];c=(b>>>24)-(d>>>24)&255;switch(c|0){case 1:break b;case 0:break d;default:break c}}c=256;if(b>>>0>=d>>>0){break a}}while(1){na(a,32,37364,1,a);c=c-1|0;if(c>>>0>1){continue}break}}na(a,32,37367,1,a+96|0);na(a,32,37366,1,a- -64|0);na(a,32,37365,1,a+32|0);na(a,32,37364,1,a);d=b&-16777216;G[a+128>>2]=d}e:{f:{g:{h:{c=(b>>>16)-(d>>>16)&255;switch(c|0){case 1:break f;case 0:break h;default:break g}}c=256;if(b>>>0>=d>>>0){break e}}d=a+32|0;while(1){na(d,32,37365,1,d);c=c-1|0;if(c>>>0>1){continue}break}}c=a+32|0;na(c,32,37367,1,a+96|0);na(c,32,37366,1,a- -64|0);na(c,32,37365,1,c);d=b&-65536;G[a+128>>2]=d}i:{j:{k:{l:{c=(b>>>8)-(d>>>8)&255;switch(c|0){case 1:break j;case 0:break l;default:break k}}c=256;if(b>>>0>=d>>>0){break i}}d=a- -64|0;while(1){na(d,32,37366,1,d);c=c-1|0;if(c>>>0>1){continue}break}}c=a- -64|0;na(c,32,37367,1,a+96|0);na(c,32,37366,1,c);d=b&-256;G[a+128>>2]=d}m:{n:{o:{p:{c=b-d&255;switch(c|0){case 1:break n;case 0:break p;default:break o}}c=256;if(b>>>0>=d>>>0){break m}}d=a+96|0;while(1){na(d,32,37367,1,d);c=c-1|0;if(c>>>0>1){continue}break}}c=a+96|0;na(c,32,37367,1,c);G[a+128>>2]=b}}function Pd(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=a+264|0;g=a+132|0;if(Ga(301)>>>0>e>>>0){G[a+300>>2]=2;return-1}e=lb(g,lb(a,oa(bb(d,301),2)));h=H[f+4|0]|H[f+5|0]<<8|(H[f+6|0]<<16|H[f+7|0]<<24);g=H[f|0]|H[f+1|0]<<8|(H[f+2|0]<<16|H[f+3|0]<<24);E[e|0]=g;E[e+1|0]=g>>>8;E[e+2|0]=g>>>16;E[e+3|0]=g>>>24;E[e+4|0]=h;E[e+5|0]=h>>>8;E[e+6|0]=h>>>16;E[e+7|0]=h>>>24;h=H[f+28|0]|H[f+29|0]<<8|(H[f+30|0]<<16|H[f+31|0]<<24);g=H[f+24|0]|H[f+25|0]<<8|(H[f+26|0]<<16|H[f+27|0]<<24);E[e+24|0]=g;E[e+25|0]=g>>>8;E[e+26|0]=g>>>16;E[e+27|0]=g>>>24;E[e+28|0]=h;E[e+29|0]=h>>>8;E[e+30|0]=h>>>16;E[e+31|0]=h>>>24;h=H[f+20|0]|H[f+21|0]<<8|(H[f+22|0]<<16|H[f+23|0]<<24);g=H[f+16|0]|H[f+17|0]<<8|(H[f+18|0]<<16|H[f+19|0]<<24);E[e+16|0]=g;E[e+17|0]=g>>>8;E[e+18|0]=g>>>16;E[e+19|0]=g>>>24;E[e+20|0]=h;E[e+21|0]=h>>>8;E[e+22|0]=h>>>16;E[e+23|0]=h>>>24;g=H[f+12|0]|H[f+13|0]<<8|(H[f+14|0]<<16|H[f+15|0]<<24);f=H[f+8|0]|H[f+9|0]<<8|(H[f+10|0]<<16|H[f+11|0]<<24);E[e+8|0]=f;E[e+9|0]=f>>>8;E[e+10|0]=f>>>16;E[e+11|0]=f>>>24;E[e+12|0]=g;E[e+13|0]=g>>>8;E[e+14|0]=g>>>16;E[e+15|0]=g>>>24;E[e+32|0]=G[a+296>>2]!=0;return ab(b,c,d,301)|0}function ma(a,b,c){var d=0,e=0,f=0;if(c>>>0>=512){X(a|0,b|0,c|0);return a}e=a+c|0;a:{if(!((a^b)&3)){b:{if(!(a&3)){c=a;break b}if(!c){c=a;break b}c=a;while(1){E[c|0]=H[b|0];b=b+1|0;c=c+1|0;if(!(c&3)){break b}if(c>>>0>>0){continue}break}}d=e&-4;c:{if(d>>>0<64){break c}f=d+-64|0;if(f>>>0>>0){break c}while(1){G[c>>2]=G[b>>2];G[c+4>>2]=G[b+4>>2];G[c+8>>2]=G[b+8>>2];G[c+12>>2]=G[b+12>>2];G[c+16>>2]=G[b+16>>2];G[c+20>>2]=G[b+20>>2];G[c+24>>2]=G[b+24>>2];G[c+28>>2]=G[b+28>>2];G[c+32>>2]=G[b+32>>2];G[c+36>>2]=G[b+36>>2];G[c+40>>2]=G[b+40>>2];G[c+44>>2]=G[b+44>>2];G[c+48>>2]=G[b+48>>2];G[c+52>>2]=G[b+52>>2];G[c+56>>2]=G[b+56>>2];G[c+60>>2]=G[b+60>>2];b=b- -64|0;c=c- -64|0;if(f>>>0>=c>>>0){continue}break}}if(c>>>0>=d>>>0){break a}while(1){G[c>>2]=G[b>>2];b=b+4|0;c=c+4|0;if(d>>>0>c>>>0){continue}break}break a}if(e>>>0<4){c=a;break a}d=e-4|0;if(d>>>0>>0){c=a;break a}c=a;while(1){E[c|0]=H[b|0];E[c+1|0]=H[b+1|0];E[c+2|0]=H[b+2|0];E[c+3|0]=H[b+3|0];b=b+4|0;c=c+4|0;if(d>>>0>=c>>>0){continue}break}}if(c>>>0>>0){while(1){E[c|0]=H[b|0];b=b+1|0;c=c+1|0;if((e|0)!=(c|0)){continue}break}}return a}function wd(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;j=Y-16|0;Y=j;g=G[9340];g=_[G[G[g>>2]+4>>2]](g,c)|0;f=G[9340];f=_[G[G[f>>2]>>2]](f)|0;k=Ab(G[a+128>>2],g,f);f=k+2|0;g=(f>>>0)/3|0;a:{if(((f-M(g,3)|0)+(g<<2)|0)-2>>>0>e>>>0){G[a+228>>2]=2;e=-1;break a}e=G[9340];g=_[G[G[e>>2]+4>>2]](e,c)|0;e=G[9340];l=_[G[G[e>>2]>>2]](e)|0;e=G[a+128>>2];h=k+2|0;f=(h>>>0)/3|0;h=((((h-M(f,3)|0)+(f<<2)|0)-2|0)+d|0)-k|0;E[h+1|0]=8;E[h|0]=3;f=h+2|0;if(e>>>0>=128){while(1){E[f|0]=e|128;f=f+1|0;i=e>>>0>16383;e=e>>>7|0;if(i){continue}break}}E[f+1|0]=18;E[f|0]=e;f=f+2|0;b:{if(g>>>0<128){e=g;break b}e=g;while(1){E[f|0]=e|128;f=f+1|0;i=e>>>0>16383;e=e>>>7|0;if(i){continue}break}}E[f|0]=e;f=f+1|0;G[j+12>>2]=f;i=G[9340];m=g;g=((f+g|0)-h|0)+l|0;e=-1;if((_[G[G[i>>2]+8>>2]](i,a,128,b,c,G[j+12>>2],m,h,g)|0)==-1){break a}c=G[a+128>>2]+1|0;G[a+128>>2]=c;b=0;c:{if(!(c&16777215)){break c}b=1;if(!(c&65535)){break c}b=c&255?3:2}c=b;e=(c<<5)+a|0;b=3;while(1){na(e,32,b+37364|0,1,(b<<5)+a|0);f=b>>>0>c>>>0;b=b-1|0;if(f){continue}break}eb(a+132|0,h,g,g+h|0);e=Fa(h,k,d)}Y=j+16|0;return e|0}function Cc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;g=Y-16|0;Y=g;i=c;e=a+164|0;h=G[a+160>>2];if((e|0)==(h|0)){c=17}else{c=1;d=e;while(1){if(!H[d+4|0]){f=f+55|0;c=0}d=d+72|0;if((h|0)!=(d|0)){continue}break}c=(c?17:16)+f|0}a:{if(i>>>0>>0){G[a+7516>>2]=2;a=-1;break a}f=123;E[b|0]=123;d=H[1495]|H[1496]<<8|(H[1497]<<16|H[1498]<<24);c=H[1491]|H[1492]<<8|(H[1493]<<16|H[1494]<<24);E[b+6|0]=c;E[b+7|0]=c>>>8;E[b+8|0]=c>>>16;E[b+9|0]=c>>>24;E[b+10|0]=d;E[b+11|0]=d>>>8;E[b+12|0]=d>>>16;E[b+13|0]=d>>>24;c=H[1490]|H[1491]<<8|(H[1492]<<16|H[1493]<<24);d=H[1486]|H[1487]<<8|(H[1488]<<16|H[1489]<<24);E[b+1|0]=d;E[b+2|0]=d>>>8;E[b+3|0]=d>>>16;E[b+4|0]=d>>>24;E[b+5|0]=c;E[b+6|0]=c>>>8;E[b+7|0]=c>>>16;E[b+8|0]=c>>>24;d=b+14|0;c=G[a+160>>2];b:{if((c|0)!=(e|0)){while(1){if(!H[e+4|0]){E[d+1|0]=34;E[d|0]=f;a=g+12|0;oa(a,G[e>>2]);a=pa(a,4,d+2|0);E[a+2|0]=34;E[a|0]=34;E[a+1|0]=58;a=pa(e+5|0,32,a+3|0);E[a|0]=34;f=44;d=a+1|0}e=e+72|0;if((c|0)!=(e|0)){continue}break}if((f&255)==44){break b}}E[d|0]=f;d=d+1|0}E[d|0]=125;E[d+1|0]=125;a=(d-b|0)+2|0}Y=g+16|0;return a|0}function Ja(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;f=G[b+32>>2];g=G[b+28>>2];h=G[b+24>>2];i=G[b+20>>2];j=G[b+16>>2];k=G[b+12>>2];c=G[b+4>>2];d=G[b>>2];e=G[b+36>>2];b=G[b+8>>2];d=M((f+(g+(h+(i+(j+(k+((c+(d+(M(e,19)+16777216>>25)>>26)>>25)+b>>26)>>25)>>26)>>25)>>26)>>25)>>26)+e>>25,19)+d|0;E[a|0]=d;E[a+2|0]=d>>>16;E[a+1|0]=d>>>8;c=c+(d>>26)|0;E[a+5|0]=c>>>14;E[a+4|0]=c>>>6;E[a+3|0]=d>>>24&3|c<<2;b=b+(c>>25)|0;E[a+8|0]=b>>>13;E[a+7|0]=b>>>5;E[a+6|0]=b<<3|(c&29360128)>>>22;d=(b>>26)+k|0;E[a+11|0]=d>>>11;E[a+10|0]=d>>>3;E[a+9|0]=d<<5|(b&65011712)>>>21;c=(d>>25)+j|0;E[a+15|0]=c>>>18;E[a+14|0]=c>>>10;E[a+13|0]=c>>>2;b=(c>>26)+i|0;E[a+16|0]=b;E[a+12|0]=c<<6|(d&33030144)>>>19;E[a+18|0]=b>>>16;E[a+17|0]=b>>>8;c=(b>>25)+h|0;E[a+21|0]=c>>>15;E[a+20|0]=c>>>7;E[a+19|0]=b>>>24&1|c<<1;b=(c>>26)+g|0;E[a+24|0]=b>>>13;E[a+23|0]=b>>>5;E[a+22|0]=b<<3|(c&58720256)>>>23;c=(b>>25)+f|0;E[a+27|0]=c>>>12;E[a+26|0]=c>>>4;E[a+25|0]=c<<4|(b&31457280)>>>21;b=e+(c>>26)|0;E[a+30|0]=b>>>10;E[a+29|0]=b>>>2;E[a+31|0]=(b&33292288)>>>18;E[a+28|0]=b<<6|(c&66060288)>>>20}function Ba(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0;c=H[a+8|0];b=H[a+4|0];d=H[a|0];f=M(d,6);e=H[a+12|0];g=M(e,6);E[a+12|0]=c^(b^(H[f+3649|0]^H[g+3648|0]));h=M(c,6);E[a+8|0]=b^(d^(H[h+3648|0]^H[g+3649|0]));b=M(b,6);E[a+4|0]=e^(d^(H[b+3648|0]^H[h+3649|0]));E[a|0]=e^(c^(H[b+3649|0]^H[f+3648|0]));c=H[a+13|0];b=H[a+9|0];d=H[a+5|0];f=M(d,6);e=H[a+1|0];g=M(e,6);E[a+1|0]=c^(b^(H[f+3649|0]^H[g+3648|0]));h=H[f+3648|0];f=M(b,6);E[a+5|0]=c^(e^(h^H[f+3649|0]));c=M(c,6);E[a+9|0]=d^(e^(H[f+3648|0]^H[c+3649|0]));E[a+13|0]=b^(d^(H[g+3649|0]^H[c+3648|0]));c=H[a+14|0];b=H[a+10|0];d=H[a+6|0];f=M(d,6);e=H[a+2|0];g=M(e,6);E[a+2|0]=c^(b^(H[f+3649|0]^H[g+3648|0]));h=H[g+3649|0];g=M(c,6);E[a+14|0]=b^(d^(h^H[g+3648|0]));b=M(b,6);E[a+10|0]=d^(e^(H[b+3648|0]^H[g+3649|0]));E[a+6|0]=c^(e^(H[f+3648|0]^H[b+3649|0]));c=H[a+11|0];b=H[a+7|0];d=H[a+3|0];f=M(d,6);e=H[a+15|0];g=M(e,6);E[a+15|0]=c^(b^(H[f+3649|0]^H[g+3648|0]));h=M(c,6);E[a+11|0]=b^(d^(H[h+3648|0]^H[g+3649|0]));b=M(b,6);E[a+7|0]=e^(d^(H[b+3648|0]^H[h+3649|0]));E[a+3|0]=e^(c^(H[b+3649|0]^H[f+3648|0]))}function fe(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if(c>>>0<=31){G[a>>2]=2;return-1}c=H[a+64|0]|H[a+65|0]<<8|(H[a+66|0]<<16|H[a+67|0]<<24);d=H[a+60|0]|H[a+61|0]<<8|(H[a+62|0]<<16|H[a+63|0]<<24);E[b+24|0]=d;E[b+25|0]=d>>>8;E[b+26|0]=d>>>16;E[b+27|0]=d>>>24;E[b+28|0]=c;E[b+29|0]=c>>>8;E[b+30|0]=c>>>16;E[b+31|0]=c>>>24;c=H[a+56|0]|H[a+57|0]<<8|(H[a+58|0]<<16|H[a+59|0]<<24);d=H[a+52|0]|H[a+53|0]<<8|(H[a+54|0]<<16|H[a+55|0]<<24);E[b+16|0]=d;E[b+17|0]=d>>>8;E[b+18|0]=d>>>16;E[b+19|0]=d>>>24;E[b+20|0]=c;E[b+21|0]=c>>>8;E[b+22|0]=c>>>16;E[b+23|0]=c>>>24;c=H[a+48|0]|H[a+49|0]<<8|(H[a+50|0]<<16|H[a+51|0]<<24);d=H[a+44|0]|H[a+45|0]<<8|(H[a+46|0]<<16|H[a+47|0]<<24);E[b+8|0]=d;E[b+9|0]=d>>>8;E[b+10|0]=d>>>16;E[b+11|0]=d>>>24;E[b+12|0]=c;E[b+13|0]=c>>>8;E[b+14|0]=c>>>16;E[b+15|0]=c>>>24;c=H[a+40|0]|H[a+41|0]<<8|(H[a+42|0]<<16|H[a+43|0]<<24);a=H[a+36|0]|H[a+37|0]<<8|(H[a+38|0]<<16|H[a+39|0]<<24);E[b|0]=a;E[b+1|0]=a>>>8;E[b+2|0]=a>>>16;E[b+3|0]=a>>>24;E[b+4|0]=c;E[b+5|0]=c>>>8;E[b+6|0]=c>>>16;E[b+7|0]=c>>>24;return 32}function Qa(a,b,c){var d=0,e=0;a:{if(!a){break a}e=b;b=a+32|0;if(e>>>0>>0){break a}d=H[a+4|0]|H[a+5|0]<<8|(H[a+6|0]<<16|H[a+7|0]<<24);e=H[a|0]|H[a+1|0]<<8|(H[a+2|0]<<16|H[a+3|0]<<24);E[c|0]=e;E[c+1|0]=e>>>8;E[c+2|0]=e>>>16;E[c+3|0]=e>>>24;E[c+4|0]=d;E[c+5|0]=d>>>8;E[c+6|0]=d>>>16;E[c+7|0]=d>>>24;d=H[a+28|0]|H[a+29|0]<<8|(H[a+30|0]<<16|H[a+31|0]<<24);e=H[a+24|0]|H[a+25|0]<<8|(H[a+26|0]<<16|H[a+27|0]<<24);E[c+24|0]=e;E[c+25|0]=e>>>8;E[c+26|0]=e>>>16;E[c+27|0]=e>>>24;E[c+28|0]=d;E[c+29|0]=d>>>8;E[c+30|0]=d>>>16;E[c+31|0]=d>>>24;d=H[a+20|0]|H[a+21|0]<<8|(H[a+22|0]<<16|H[a+23|0]<<24);e=H[a+16|0]|H[a+17|0]<<8|(H[a+18|0]<<16|H[a+19|0]<<24);E[c+16|0]=e;E[c+17|0]=e>>>8;E[c+18|0]=e>>>16;E[c+19|0]=e>>>24;E[c+20|0]=d;E[c+21|0]=d>>>8;E[c+22|0]=d>>>16;E[c+23|0]=d>>>24;d=H[a+12|0]|H[a+13|0]<<8|(H[a+14|0]<<16|H[a+15|0]<<24);a=H[a+8|0]|H[a+9|0]<<8|(H[a+10|0]<<16|H[a+11|0]<<24);E[c+8|0]=a;E[c+9|0]=a>>>8;E[c+10|0]=a>>>16;E[c+11|0]=a>>>24;E[c+12|0]=d;E[c+13|0]=d>>>8;E[c+14|0]=d>>>16;E[c+15|0]=d>>>24;d=b}return d}function Ia(a,b){var c=0,d=0;c=H[a+4|0]|H[a+5|0]<<8|(H[a+6|0]<<16|H[a+7|0]<<24);d=H[a|0]|H[a+1|0]<<8|(H[a+2|0]<<16|H[a+3|0]<<24);E[b+32|0]=d;E[b+33|0]=d>>>8;E[b+34|0]=d>>>16;E[b+35|0]=d>>>24;E[b+36|0]=c;E[b+37|0]=c>>>8;E[b+38|0]=c>>>16;E[b+39|0]=c>>>24;c=H[a+28|0]|H[a+29|0]<<8|(H[a+30|0]<<16|H[a+31|0]<<24);d=H[a+24|0]|H[a+25|0]<<8|(H[a+26|0]<<16|H[a+27|0]<<24);E[b+56|0]=d;E[b+57|0]=d>>>8;E[b+58|0]=d>>>16;E[b+59|0]=d>>>24;E[b+60|0]=c;E[b+61|0]=c>>>8;E[b+62|0]=c>>>16;E[b+63|0]=c>>>24;c=H[a+20|0]|H[a+21|0]<<8|(H[a+22|0]<<16|H[a+23|0]<<24);d=H[a+16|0]|H[a+17|0]<<8|(H[a+18|0]<<16|H[a+19|0]<<24);E[b+48|0]=d;E[b+49|0]=d>>>8;E[b+50|0]=d>>>16;E[b+51|0]=d>>>24;E[b+52|0]=c;E[b+53|0]=c>>>8;E[b+54|0]=c>>>16;E[b+55|0]=c>>>24;c=H[a+12|0]|H[a+13|0]<<8|(H[a+14|0]<<16|H[a+15|0]<<24);a=H[a+8|0]|H[a+9|0]<<8|(H[a+10|0]<<16|H[a+11|0]<<24);E[b+40|0]=a;E[b+41|0]=a>>>8;E[b+42|0]=a>>>16;E[b+43|0]=a>>>24;E[b+44|0]=c;E[b+45|0]=c>>>8;E[b+46|0]=c>>>16;E[b+47|0]=c>>>24;Lb(b,b+32|0,1824)}function ib(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;h=Y-256|0;Y=h;while(1){G[(d<<2)+h>>2]=H[(c|3)+b|0]|(H[(c|1)+b|0]<<16|H[b+c|0]<<24|H[(c|2)+b|0]<<8);c=c+4|0;d=d+1|0;if((d|0)!=16){continue}break}b=16;c=G[h>>2];while(1){e=(b<<2)+h|0;f=G[e-8>>2];f=(G[e-28>>2]+(ye(f,15)^ye(f,13)^f>>>10)|0)+c|0;c=G[e-60>>2];v=e,w=(ye(c,25)^ye(c,14)^c>>>3)+f|0,G[v>>2]=w;b=b+1|0;if((b|0)!=64){continue}break}m=G[a+80>>2];j=m;n=G[a+84>>2];b=n;o=G[a+108>>2];k=o;p=G[a+104>>2];c=p;q=G[a+100>>2];f=q;r=G[a+96>>2];i=r;s=G[a+92>>2];t=s;u=G[a+88>>2];d=u;while(1){e=d;d=b;b=l<<2;g=i;i=(G[b+2816>>2]+((((ye(g,26)^ye(g,21)^ye(g,7))+(f&g)|0)+k|0)+((g^-1)&c)|0)|0)+G[b+h>>2]|0;b=j;j=i+((ye(b,30)^ye(b,19)^ye(b,10))+((d^e)&b^d&e)|0)|0;i=i+t|0;k=c;c=f;f=g;t=e;l=l+1|0;if((l|0)!=64){continue}break}G[a+108>>2]=k+o;G[a+104>>2]=c+p;G[a+100>>2]=g+q;G[a+96>>2]=i+r;G[a+92>>2]=e+s;G[a+88>>2]=d+u;G[a+84>>2]=b+n;G[a+80>>2]=j+m;Y=h+256|0}function nc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;f=Y-48|0;Y=f;a:{if((c|0)<=0){break a}E[b|0]=0;if(c>>>0<23){break a}G[f+32>>2]=G[a+112>>2];g=b+c|0;d=_a(b,c,1535,f+32|0);b:{if((d|0)>(c|0)){break b}if((d|0)<=0){break a}e=b+d|0;b=c-d|0;c=_a(e,b,1462,0);if((b|0)<(c|0)){break b}if((c|0)<=0){break a}b=b-c|0;c=c+e|0;c:{e=a+152|0;if((e|0)!=G[a+148>>2]){d=0;while(1){G[f+16>>2]=G[(M(d,68)+a|0)+184>>2];g=_a(c,b,1068,f+16|0);if((g|0)>(b|0)){break c}if((g|0)<=0){break a}b=b-g|0;c=c+g|0;d=d+1|0;if(d>>>0<(G[a+148>>2]-e|0)/68>>>0){continue}break}}d=_a(c,b,1439,0);if((d|0)>(b|0)){break c}if((d|0)<=0){break a}h=a+496|0;if((h|0)==G[a+492>>2]){break a}c=c+d|0;b=b-d|0;d=0;while(1){G[f>>2]=G[(M(d,68)+a|0)+528>>2];g=b+c|0;e=_a(c,b,1068,f);if((e|0)>(b|0)){break b}if((e|0)<=0){break a}b=b-e|0;c=c+e|0;d=d+1|0;if(d>>>0<(G[a+492>>2]-h|0)/68>>>0){continue}break}break a}g=b+c|0}a=g-4|0;E[a|0]=46;E[a+1|0]=46;E[a+2|0]=46;E[a+3|0]=0}Y=f+48|0}function Gc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;a:{if(c>>>0<116){G[a+7516>>2]=2;a=-1;break a}E[b|0]=123;E[b+14|0]=34;c=H[1490]|H[1491]<<8|(H[1492]<<16|H[1493]<<24);d=H[1486]|H[1487]<<8|(H[1488]<<16|H[1489]<<24);E[b+1|0]=d;E[b+2|0]=d>>>8;E[b+3|0]=d>>>16;E[b+4|0]=d>>>24;E[b+5|0]=c;E[b+6|0]=c>>>8;E[b+7|0]=c>>>16;E[b+8|0]=c>>>24;c=H[1495]|H[1496]<<8|(H[1497]<<16|H[1498]<<24);d=H[1491]|H[1492]<<8|(H[1493]<<16|H[1494]<<24);E[b+6|0]=d;E[b+7|0]=d>>>8;E[b+8|0]=d>>>16;E[b+9|0]=d>>>24;E[b+10|0]=c;E[b+11|0]=c>>>8;E[b+12|0]=c>>>16;E[b+13|0]=c>>>24;c=pa(a+96|0,32,b+15|0);E[c|0]=34;E[c+1|0]=44;E[c+12|0]=34;d=H[1504]|H[1505]<<8|(H[1506]<<16|H[1507]<<24);e=H[1500]|H[1501]<<8|(H[1502]<<16|H[1503]<<24);E[c+2|0]=e;E[c+3|0]=e>>>8;E[c+4|0]=e>>>16;E[c+5|0]=e>>>24;E[c+6|0]=d;E[c+7|0]=d>>>8;E[c+8|0]=d>>>16;E[c+9|0]=d>>>24;d=H[1508]|H[1509]<<8;E[c+10|0]=d;E[c+11|0]=d>>>8;a=pa(a,32,c+13|0);E[a|0]=34;E[a+1|0]=125;a=(a-b|0)+2|0}return a|0}function nb(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;if(!(!a|!b|J[a+72>>2]>128)){if(c){h=a+76|0;while(1){d=G[a+72>>2];a:{if(!(d|c>>>0<128)){ya(a,b);d=G[a+4>>2];e=G[a>>2]+1024|0;d=e>>>0<1024?d+1|0:d;G[a>>2]=e;G[a+4>>2]=d;c=c-128|0;b=b+128|0;break a}e=128-d|0;e=c>>>0>>0?c:e;if((d|0)!=128){g=e>>>0<=1?1:e;j=g&3;i=0;d=0;if(e>>>0>=4){k=g&-4;g=0;while(1){E[(G[a+72>>2]+d|0)+h|0]=H[b+d|0];f=d|1;E[(f+G[a+72>>2]|0)+h|0]=H[b+f|0];f=d|2;E[(f+G[a+72>>2]|0)+h|0]=H[b+f|0];f=d|3;E[(f+G[a+72>>2]|0)+h|0]=H[b+f|0];d=d+4|0;g=g+4|0;if((k|0)!=(g|0)){continue}break}}if(j){while(1){E[((G[a+72>>2]+d|0)+a|0)+76|0]=H[b+d|0];d=d+1|0;i=i+1|0;if((i|0)!=(j|0)){continue}break}}d=G[a+72>>2]}else{d=128}d=d+e|0;G[a+72>>2]=d;c=c-e|0;b=b+e|0;if((d|0)!=128){break a}ya(a,h);G[a+72>>2]=0;d=G[a+4>>2];e=G[a>>2]+1024|0;d=e>>>0<1024?d+1|0:d;G[a>>2]=e;G[a+4>>2]=d}if(c){continue}break}}}}function _a(a,b,c,d){var e=0,f=0,g=0,h=0;h=Y-16|0;Y=h;G[h+12>>2]=d;e=Y-160|0;Y=e;f=b?a:e+158|0;G[e+148>>2]=f;a=-1;g=b-1|0;G[e+152>>2]=b>>>0>=g>>>0?g:0;e=ta(e,0,144);G[e+76>>2]=-1;G[e+36>>2]=8;G[e+80>>2]=-1;G[e+44>>2]=e+159;G[e+84>>2]=e+148;a:{if((b|0)<0){G[9343]=61;break a}E[f|0]=0;f=0;b=Y-208|0;Y=b;G[b+204>>2]=d;a=b+160|0;ta(a,0,40);G[b+200>>2]=G[b+204>>2];b:{if((Ib(0,c,b+200|0,b+80|0,a)|0)<0){c=-1;break b}d=G[e+76>>2]<0;g=G[e>>2];G[e>>2]=g&-33;c:{d:{e:{if(!G[e+48>>2]){G[e+48>>2]=80;G[e+28>>2]=0;G[e+16>>2]=0;G[e+20>>2]=0;f=G[e+44>>2];G[e+44>>2]=b;break e}if(G[e+16>>2]){break d}}a=-1;if(Kb(e)){break c}}a=Ib(e,c,b+200|0,b+80|0,b+160|0)}c=a;if(f){_[G[e+36>>2]](e,0,0)|0;G[e+48>>2]=0;G[e+44>>2]=f;G[e+28>>2]=0;a=G[e+20>>2];G[e+16>>2]=0;G[e+20>>2]=0;c=a?c:-1}a=G[e>>2];G[e>>2]=a|g&32;c=a&32?-1:c;if(d){break b}}Y=b+208|0;a=c}Y=e+160|0;Y=h+16|0;return a}function xe(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;a:{b:{c:{d:{e:{f:{g:{h:{i:{j:{if(b){if(!c){break j}break i}Z=0;a=(a>>>0)/(c>>>0)|0;break a}if(!a){break h}break g}if(!(c-1&c)){break f}f=(P(c)+33|0)-P(b)|0;g=0-f|0;break d}Z=0;a=(b>>>0)/0|0;break a}d=32-P(b)|0;if(d>>>0<31){break e}break c}if((c|0)==1){break b}f=ve(c);c=f&31;if((f&63)>>>0>=32){a=b>>>c|0}else{d=b>>>c|0;a=((1<>>c}Z=d;break a}f=d+1|0;g=63-d|0}d=f&63;e=d&31;if(d>>>0>=32){d=0;h=b>>>e|0}else{d=b>>>e|0;h=((1<>>e}g=g&63;e=g&31;if(g>>>0>=32){b=a<>>32-e|b<>>31;d=h<<1|b>>>31;e=l-(i+(d>>>0>g>>>0)|0)>>31;j=c&e;h=d-j|0;d=i-(d>>>0>>0)|0;b=b<<1|a>>>31;a=k|a<<1;k=e&1;f=f-1|0;if(f){continue}break}}Z=b<<1|a>>>31;a=k|a<<1;break a}a=0;b=0}Z=b}return a}function tc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=Y-16|0;Y=e;d=17;a:{if((H[a+7372|0]|!H[a+7364|0]?d:71)>>>0>c>>>0){G[a+7516>>2]=2;a=-1;break a}E[b|0]=123;E[b+14|0]=123;c=H[1495]|H[1496]<<8|(H[1497]<<16|H[1498]<<24);d=H[1491]|H[1492]<<8|(H[1493]<<16|H[1494]<<24);E[b+6|0]=d;E[b+7|0]=d>>>8;E[b+8|0]=d>>>16;E[b+9|0]=d>>>24;E[b+10|0]=c;E[b+11|0]=c>>>8;E[b+12|0]=c>>>16;E[b+13|0]=c>>>24;c=H[1490]|H[1491]<<8|(H[1492]<<16|H[1493]<<24);d=H[1486]|H[1487]<<8|(H[1488]<<16|H[1489]<<24);E[b+1|0]=d;E[b+2|0]=d>>>8;E[b+3|0]=d>>>16;E[b+4|0]=d>>>24;E[b+5|0]=c;E[b+6|0]=c>>>8;E[b+7|0]=c>>>16;E[b+8|0]=c>>>24;d=b+15|0;if(!(H[a+7372|0]|!H[a+7364|0])){E[b+15|0]=34;c=e+12|0;oa(c,G[a+7368>>2]);c=pa(c,4,b+16|0);E[c+2|0]=34;E[c|0]=34;E[c+1|0]=58;a=pa(a+7373|0,32,c+3|0);E[a|0]=34;d=a+1|0}E[d|0]=125;E[d+1|0]=125;a=(d-b|0)+2|0}Y=e+16|0;return a|0}function Md(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=Y-160|0;Y=h;g=-1;c=Ra(b,c,b);a:{if((c|0)==-1){G[a+300>>2]=7;break a}g=G[9340];zb(b,c,_[G[G[g>>2]>>2]](g)|0,h+140|0);if(H[h+140|0]!=3){G[a+300>>2]=3;g=-1;break a}if(!(G[h+152>>2]?G[h+148>>2]:0)){G[a+300>>2]=4;g=-1;break a}if(f){G[f>>2]=G[h+144>>2]}f=c+-64|0;if(!jb(a+264|0,b,f,b+f|0)){G[a+300>>2]=14;g=-1;break a}c=G[9340];if(_[G[G[c>>2]+12>>2]](c,G[h+156>>2])>>>0>e>>>0){G[a+300>>2]=2;g=-1;break a}b:{c=G[h+144>>2];c:{if((c-G[a+260>>2]|0)>=0){g=a+132|0;fb(g,c);ma(h+8|0,g,132);break c}if((c-G[a+128>>2]|0)<0){break b}g=h+8|0;ma(g,a,132);fb(g,c)}c=G[9340];g=h+8|0;b=_[G[G[c>>2]+16>>2]](c,g,128,b,f,G[h+152>>2],G[h+156>>2],d,e)|0;la(g,132);g=-1;if((b|0)==-1){G[a+300>>2]=5;break a}G[a+296>>2]=1;g=b;break a}G[a+300>>2]=12;g=-1}Y=h+160|0;return g|0}function vc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=Y-16|0;Y=e;a:{if((H[a+7364|0]?71:17)>>>0>c>>>0){G[a+7516>>2]=2;a=-1;break a}E[b|0]=123;E[b+14|0]=123;c=H[1495]|H[1496]<<8|(H[1497]<<16|H[1498]<<24);d=H[1491]|H[1492]<<8|(H[1493]<<16|H[1494]<<24);E[b+6|0]=d;E[b+7|0]=d>>>8;E[b+8|0]=d>>>16;E[b+9|0]=d>>>24;E[b+10|0]=c;E[b+11|0]=c>>>8;E[b+12|0]=c>>>16;E[b+13|0]=c>>>24;c=H[1490]|H[1491]<<8|(H[1492]<<16|H[1493]<<24);d=H[1486]|H[1487]<<8|(H[1488]<<16|H[1489]<<24);E[b+1|0]=d;E[b+2|0]=d>>>8;E[b+3|0]=d>>>16;E[b+4|0]=d>>>24;E[b+5|0]=c;E[b+6|0]=c>>>8;E[b+7|0]=c>>>16;E[b+8|0]=c>>>24;if(H[a+7364|0]){E[b+15|0]=34;c=e+12|0;oa(c,G[a+7368>>2]);c=pa(c,4,b+16|0);E[c+2|0]=34;E[c|0]=34;E[c+1|0]=58;a=pa(a+7373|0,32,c+3|0);E[a|0]=34;a=a+1|0}else{a=b+15|0}E[a|0]=125;E[a+1|0]=125;a=(a-b|0)+2|0}Y=e+16|0;return a|0}function Gb(a,b,c){a:{switch(b-9|0){case 0:b=G[c>>2];G[c>>2]=b+4;G[a>>2]=G[b>>2];return;case 6:b=G[c>>2];G[c>>2]=b+4;b=F[b>>1];G[a>>2]=b;G[a+4>>2]=b>>31;return;case 7:b=G[c>>2];G[c>>2]=b+4;G[a>>2]=I[b>>1];G[a+4>>2]=0;return;case 8:b=G[c>>2];G[c>>2]=b+4;b=E[b|0];G[a>>2]=b;G[a+4>>2]=b>>31;return;case 9:b=G[c>>2];G[c>>2]=b+4;G[a>>2]=H[b|0];G[a+4>>2]=0;return;case 16:b=G[c>>2]+7&-8;G[c>>2]=b+8;L[a>>3]=L[b>>3];return;case 17:Eb(a,c);default:return;case 1:case 4:case 14:b=G[c>>2];G[c>>2]=b+4;b=G[b>>2];G[a>>2]=b;G[a+4>>2]=b>>31;return;case 2:case 5:case 11:case 15:b=G[c>>2];G[c>>2]=b+4;G[a>>2]=G[b>>2];G[a+4>>2]=0;return;case 3:case 10:case 12:case 13:break a}}b=G[c>>2]+7&-8;G[c>>2]=b+8;c=G[b+4>>2];G[a>>2]=G[b>>2];G[a+4>>2]=c}function ta(a,b,c){var d=0,e=0,f=0,g=0;a:{if(!c){break a}E[a|0]=b;d=a+c|0;E[d-1|0]=b;if(c>>>0<3){break a}E[a+2|0]=b;E[a+1|0]=b;E[d-3|0]=b;E[d-2|0]=b;if(c>>>0<7){break a}E[a+3|0]=b;E[d-4|0]=b;if(c>>>0<9){break a}d=0-a&3;e=d+a|0;b=M(b&255,16843009);G[e>>2]=b;d=c-d&-4;c=d+e|0;G[c-4>>2]=b;if(d>>>0<9){break a}G[e+8>>2]=b;G[e+4>>2]=b;G[c-8>>2]=b;G[c-12>>2]=b;if(d>>>0<25){break a}G[e+24>>2]=b;G[e+20>>2]=b;G[e+16>>2]=b;G[e+12>>2]=b;G[c-16>>2]=b;G[c-20>>2]=b;G[c-24>>2]=b;G[c-28>>2]=b;g=e&4|24;c=d-g|0;if(c>>>0<32){break a}d=we(b,0,1,1);f=Z;b=e+g|0;while(1){G[b+24>>2]=d;G[b+28>>2]=f;G[b+16>>2]=d;G[b+20>>2]=f;G[b+8>>2]=d;G[b+12>>2]=f;G[b>>2]=d;G[b+4>>2]=f;b=b+32|0;c=c-32|0;if(c>>>0>31){continue}break}}return a}function Yb(a,b,c,d,e){var f=0,g=0,h=0,i=0;f=Y-80|0;Y=f;g=-1;h=G[b>>2];i=G[c+4>>2];if(!(h>>>0>i>>>0|i-h>>>0>2e3)){G[f+72>>2]=G[b+32>>2];h=G[b+28>>2];g=f- -64|0;G[g>>2]=G[b+24>>2];G[g+4>>2]=h;g=G[b+20>>2];G[f+56>>2]=G[b+16>>2];G[f+60>>2]=g;g=G[b+12>>2];G[f+48>>2]=G[b+8>>2];G[f+52>>2]=g;g=G[b+4>>2];b=G[b>>2];G[f+40>>2]=b;G[f+44>>2]=g;if(b>>>0>>0){b=f+40|4;while(1){na(b,32,1869,1,b);g=G[f+40>>2]+1|0;G[f+40>>2]=g;if(g>>>0>2]){continue}break}}b=f+40|0;g=f+8|0;na(b|4,32,1868,1,g);G[f+4>>2]=G[f+40>>2];a=G[a+4>>2];g=_[G[G[a>>2]+16>>2]](a,g,32,G[c+8>>2],G[c+12>>2],G[c+24>>2],G[c+28>>2],d,e)|0;la(b,36)}Y=f+80|0;return g}function va(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0;d=-1;a:{if((b&3)==1){break a}d=b+2|0;g=((d&3)+M(d>>>2|0,3)|0)-2|0;d=-1;if((g|0)==-1){break a}e=b&-4;b:{if(!e){e=a;break b}e=a+e|0;d=a;while(1){i=H[d|0];f=H[d+1|0];h=H[(H[d+2|0]&127)+1632|0];E[c+2|0]=H[(H[d+3|0]&127)+1632|0]|h<<6;f=H[(f&127)+1632|0]<<6;E[c+1|0]=(f|h)>>>2;E[c|0]=(f|H[(i&127)+1632|0]<<12)>>>10;c=c+3|0;d=d+4|0;if((d|0)!=(e|0)){continue}break}}b=a+b|0;if((b|0)!=(e|0)){a=H[(H[e+1|0]&127)+1632|0]|H[(H[e|0]&127)+1632|0]<<6;if((b-e|0)==3){E[c+1|0]=(H[(H[e+2|0]&127)+1632|0]|a<<6)>>>2}E[c|0]=a>>>4}d=g}return d}function pe(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0;l=Y-112|0;Y=l;m=(_[G[441]](G[1416],c)|0)+2|0;n=(m>>>0)/3|0;a:{b:{c:{if(((m-M(n,3)|0)+(n<<2)|0)-2>>>0>e>>>0){break c}if(_[G[440]](G[1416])>>>0>g>>>0){break c}if(i>>>0>=43){break b}}G[a>>2]=2;c=-1;break a}if(k>>>0<=31){G[a>>2]=1;c=-1;break a}g=l+48|0;Ia(j,g);pa(g,32,h);h=g;g=l+16|0;Ca(h,a+4|0,g);a=_[G[441]](G[1416],c)|0;e=(d+e|0)-a|0;h=b;b=l+8|0;c=_[G[442]](G[1416],g,32,h,c,e,a,b,8)|0;if((c|0)==-1){break a}pa(b,8,f);pa(e,a,d)}Y=l+112|0;return c|0}function Mc(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=Ob(a);if(Ga(g)>>>0>e>>>0){G[a+7516>>2]=2;return-1}e=a+164|0;f=oa(Pa(vb(oa(bb(d,g),4),a),a+96|0),(G[a+160>>2]-e|0)/72|0);h=G[a+160>>2];if((h|0)!=(e|0)){while(1){f=oa(f,G[e>>2]);E[f|0]=H[e+4|0];f=Pa(f+1|0,e+5|0);e=e+72|0;if((h|0)!=(e|0)){continue}break}}E[f|0]=H[a+7364|0];e=f+1|0;a:{if(!H[a+7364|0]){break a}e=oa(e,G[a+7368>>2]);E[e|0]=H[a+7372|0];e=Pa(e+1|0,a+7373|0);if(H[a+7364|0]<2){break a}e=oa(e,G[a+7440>>2]);E[e|0]=H[a+7444|0];e=Pa(e+1|0,a+7445|0)}oa(e,G[a+7512>>2]);return ab(b,c,d,g)|0}function Fa(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0;f=a;e=c;d=(b>>>0)%3|0;if((d|0)!=(b|0)){f=(b-d|0)+a|0;d=a;while(1){g=H[d+1|0];h=H[d|0];i=H[d+2|0];E[e+3|0]=H[(i&63)+1568|0];E[e|0]=H[(h>>>2|0)+1568|0];g=g<<8;E[e+2|0]=H[((g|i)>>>6&63)+1568|0];E[e+1|0]=H[((g|h<<16)>>>12&63)+1568|0];e=e+4|0;d=d+3|0;if((f|0)!=(d|0)){continue}break}}d=a+b|0;if((d|0)!=(f|0)){a=2;b=H[f|0];a:{if((d-f|0)==2){a=H[f+1|0]<<2;E[e+2|0]=H[(a&60)+1568|0];d=(a|b<<10)>>>6|0;a=3;break a}d=b<<4}E[e|0]=H[(d>>>6|0)+1568|0];E[e+1|0]=H[(d&63)+1568|0];e=a+e|0}return e-c|0}function pa(a,b,c){var d=0,e=0,f=0,g=0,h=0;d=(b>>>0)%3|0;a:{if((d|0)==(b|0)){e=a;break a}e=(b-d|0)+a|0;d=a;while(1){f=H[d+1|0];g=H[d|0];h=H[d+2|0];E[c+3|0]=H[(h&63)+1568|0];E[c|0]=H[(g>>>2|0)+1568|0];f=f<<8;E[c+2|0]=H[((f|h)>>>6&63)+1568|0];E[c+1|0]=H[((f|g<<16)>>>12&63)+1568|0];c=c+4|0;d=d+3|0;if((e|0)!=(d|0)){continue}break}}d=a+b|0;if((d|0)!=(e|0)){a=2;b=H[e|0];b:{if((d-e|0)==2){a=H[e+1|0]<<2;E[c+2|0]=H[(a&60)+1568|0];d=(a|b<<10)>>>6|0;a=3;break b}d=b<<4}E[c|0]=H[(d>>>6|0)+1568|0];E[c+1|0]=H[(d&63)+1568|0];c=a+c|0}return c}function Od(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=Y-16|0;Y=f;b=$a(b,c,d,e,a+300|0);a:{if((b|0)!=-1){c=b+d|0;b=xa(d,c,f+12|0);b:{if(!b){d=10;break b}d=9;if(G[f+12>>2]-3>>>0<4294967294){break b}b=kb(a,b,c);if(!b){d=10;break b}b=kb(a+132|0,b,c);if(!b){d=10;break b}b=Qa(b,c,a+264|0);if(!b){d=10;break b}g=a+296|0;c:{if(G[f+12>>2]==1){G[g>>2]=1;break c}d=10;if(!b|(b|0)==(c|0)){b=h}else{E[g|0]=H[b|0]!=0;b=b+1|0}if(!b){break b}}d=17;if((b|0)==(c|0)){break a}}G[a+300>>2]=d}e=-1}Y=f+16|0;return e|0}function kc(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=b+3285|0;b=a+164|0;a:{b:{if((b|0)!=G[a+160>>2]){while(1){d=Na(b+5|0,c,32);e=G[a+160>>2];if(d){d=G[b>>2];c=e-72|0;G[a+160>>2]=c;if((b|0)==(c|0)){break b}while(1){c=b;b=b+72|0;ma(c,b,72);if(G[a+160>>2]!=(b|0)){continue}break}break b}b=b+72|0;if((e|0)!=(b|0)){continue}break}}d=-1;if(!H[a+7364|0]){break b}if(Na(a+7373|0,c,32)){b=G[a+7368>>2];break a}if(H[a+7364|0]<2){break b}if(!Na(a+7445|0,c,32)){break b}d=G[a+7440>>2]}b=d}if((b|0)==-1){G[a+7516>>2]=6}return b|0}function yc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;g=c;e=b;a:{b:{if(b<<5>>>0<=d>>>0){if(b){break b}e=0;break a}G[a+7516>>2]=1;e=-1;break a}j=a+169|0;k=a+7364|0;h=a+164|0;while(1){b=k;f=G[a+160>>2];if((b|0)!=(f|0)){b=f+72|0;G[a+160>>2]=b}b=b-72|0;if((h|0)!=(b|0)){while(1){f=b;b=b-72|0;ma(f,b,72);if((b|0)!=(h|0)){continue}break}}E[a+168|0]=0;b=G[a+7512>>2]+1|0;G[a+164>>2]=b;G[a+7512>>2]=b;Ia(g,j);g=g+32|0;i=i+1|0;if((e|0)!=(i|0)){continue}break}}la(c,d);return e|0}function Db(a,b){if(!a){return 0}a:{b:{if(a){if(b>>>0<=127){break b}c:{if(!G[G[9382]>>2]){if((b&-128)==57216){break b}break c}if(b>>>0<=2047){E[a+1|0]=b&63|128;E[a|0]=b>>>6|192;a=2;break a}if(!((b&-8192)!=57344&b>>>0>=55296)){E[a+2|0]=b&63|128;E[a|0]=b>>>12|224;E[a+1|0]=b>>>6&63|128;a=3;break a}if(b-65536>>>0<=1048575){E[a+3|0]=b&63|128;E[a|0]=b>>>18|240;E[a+2|0]=b>>>6&63|128;E[a+1|0]=b>>>12&63|128;a=4;break a}}G[9343]=25;a=-1}else{a=1}break a}E[a|0]=b;a=1}return a}function gc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=ra(d);if((e|0)==-1){G[a+3216>>2]=7;return-1}va(c,d,c);d=Y-48|0;Y=d;a:{b:{if((b|0)!=1){db(d+12|0,c,e);c=G[d+40>>2];if(!c){G[a+3216>>2]=4;break b}e=G[d+44>>2]}b=Y-32|0;Y=b;f=c;c=G[a+4>>2];hb(b,f,e,_[G[G[c>>2]>>2]](c)|0);c:{if(!G[b+24>>2]){G[a+8>>2]=4;c=-1;break c}c=G[a+4>>2];c=_[G[G[c>>2]+12>>2]](c,G[b+28>>2])|0}Y=b+32|0;if((c|0)!=-1){break a}G[a+3216>>2]=G[a+8>>2];G[a+8>>2]=0}c=-1}Y=d+48|0;return c|0}function Na(a,b,c){var d=0,e=0,f=0,g=0;d=Y-16|0;E[d+15|0]=0;a:{if(!c){break a}f=c&3;b:{if(!f){e=c;break b}e=c;while(1){E[d+15|0]=H[d+15|0]|H[b|0]^H[a|0];b=b+1|0;a=a+1|0;e=e-1|0;g=g+1|0;if((f|0)!=(g|0)){continue}break}}if(c>>>0<4){break a}while(1){E[d+15|0]=H[d+15|0]|H[a|0]^H[b|0];E[d+15|0]=H[d+15|0]|H[a+1|0]^H[b+1|0];E[d+15|0]=H[d+15|0]|H[a+2|0]^H[b+2|0];E[d+15|0]=H[d+15|0]|H[a+3|0]^H[b+3|0];b=b+4|0;a=a+4|0;e=e-4|0;if(e){continue}break}}return!H[d+15|0]}function Vb(a,b,c,d){var e=0,f=0,g=0;e=Y-48|0;Y=e;db(e+12|0,c,d);c=0;d=G[e+16>>2];a:{if(!d){f=(b|d)!=0;break a}f=G[e+20>>2]==32}b:{if(!f|!G[e+40>>2]){break b}f=G[e+24>>2];if(!f|G[e+28>>2]!=32){break b}g=G[e+32>>2];if(!g|G[e+36>>2]!=32){break b}c:{d:{if(d){d=Oa(d,a+3221|0);if(b){if(d){break b}break d}if(!d){break c}break b}if(!b){break c}}if(Oa(b,a+3221|0)){break b}}if(Oa(f,a+3253|0)){break b}c=!Oa(g,a+3285|0)}Y=e+48|0;return c}function ge(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0;j=Y-80|0;Y=j;k=G[443];a:{if(_[k|0](G[1416],ra(g))>>>0>i>>>0){G[a>>2]=2;g=-1;break a}k=ra(g);if(!(!((k|0)==-1|(c|0)!=43)&(e|0)==11)){G[a>>2]=7;g=-1;break a}c=b;b=j+48|0;va(c,43,b);c=b;b=j+16|0;Ca(a+4|0,c,b);c=j+8|0;va(d,11,c);va(f,g,f);g=_[G[444]](G[1416],b,32,c,8,f,k,h,i)|0;if((g|0)!=-1){break a}G[a>>2]=5}Y=j+80|0;return g|0}function ie(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;h=Y-16|0;Y=h;a:{if(!(!f|g>>>0>=43)){G[a>>2]=2;g=-1;break a}g=-1;b=$a(b,c,d,e,a);if((b|0)==-1){break a}b:{b=b+d|0;c=xa(d,b,h+12|0);c:{if(!c){break c}if(G[h+12>>2]!=1){G[a>>2]=9;break c}d=c;c=a+4|0;d=Ma(d,b,c);if(d){break b}}if(G[a>>2]){break a}G[a>>2]=10;break a}if((b|0)!=(d|0)){G[a>>2]=17;break a}if(f){pa(c,32,f)}g=e}Y=h+16|0;return g|0}function Tb(a){var b=0,c=0,d=0,e=0,f=0;b=a+48|0;d=G[a+44>>2];if((b|0)==(d|0)){d=36}else{c=4;while(1){c=c+100|0;b=b+100|0;if((d|0)!=(b|0)){continue}break}d=c+32|0}e=4;c=4;b=a+152|0;f=G[a+148>>2];if((b|0)!=(f|0)){while(1){c=c+68|0;b=b+68|0;if((f|0)!=(b|0)){continue}break}}b=a+496|0;a=G[a+492>>2];if((b|0)!=(a|0)){while(1){e=e+68|0;b=b+68|0;if((a|0)!=(b|0)){continue}break}}return((c+d|0)+e|0)+101|0}function ze(a,b,c){var d=0,e=0,f=0,g=0;g=c&63;f=g;e=f&31;if(f>>>0>=32){f=-1>>>e|0}else{d=-1>>>e|0;f=d|(1<>>0>=32){d=f<>>32-e|d<>>0>=32){d=-1<>>32-d}a=c&a;b=b&d;d=e&31;if(e>>>0>=32){c=0;a=b>>>d|0}else{c=b>>>d|0;a=((1<>>d}a=a|g;Z=c|f;return a} -function qa(a,b,c){var d=0,e=0,f=0;if(!(H[a|0]&32)){a:{d=G[a+16>>2];if(!d){if(Kb(a)){break a}d=G[a+16>>2]}e=G[a+20>>2];if(d-e>>>0>>0){_[G[a+36>>2]](a,b,c)|0;break a}b:{c:{if(!c|G[a+80>>2]<0){break c}d=c;while(1){f=b+d|0;if(H[f-1|0]!=10){d=d-1|0;if(d){continue}break c}break}if(_[G[a+36>>2]](a,b,d)>>>0>>0){break a}c=c-d|0;e=G[a+20>>2];break b}f=b}ma(e,f,c);G[a+20>>2]=G[a+20>>2]+c}}}function hd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;e=G[a+84>>2];f=G[e>>2];d=G[e+4>>2];h=G[a+28>>2];g=G[a+20>>2]-h|0;g=d>>>0>>0?d:g;if(g){ma(f,h,g);f=g+G[e>>2]|0;G[e>>2]=f;d=G[e+4>>2]-g|0;G[e+4>>2]=d}d=c>>>0>d>>>0?d:c;if(d){ma(f,b,d);f=d+G[e>>2]|0;G[e>>2]=f;G[e+4>>2]=G[e+4>>2]-d}E[f|0]=0;b=G[a+44>>2];G[a+28>>2]=b;G[a+20>>2]=b;return c|0}function Ad(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0;f=Y-16|0;Y=f;b=$a(b,c,d,e,a+228|0);a:{if((b|0)!=-1){b=b+d|0;c=xa(d,b,f+12|0);b:{if(!c){d=10;break b}d=9;if(G[f+12>>2]!=1){break b}c=kb(a,c,b);if(!c){d=10;break b}d=10;c=ub(c,b,a+132|0);if(!c){break b}d=17;if((b|0)==(c|0)){break a}}G[a+228>>2]=d}e=-1}Y=f+16|0;return e|0}function Nd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=Y-32|0;Y=d;e=-1;c=Ra(b,c,b);a:{if((c|0)==-1){G[a+300>>2]=7;break a}f=b;b=G[9340];zb(f,c,_[G[G[b>>2]>>2]](b)|0,d+12|0);if(H[d+12|0]!=3){G[a+300>>2]=3;break a}if(!G[d+24>>2]){G[a+300>>2]=4;break a}a=G[9340];e=_[G[G[a>>2]+12>>2]](a,G[d+28>>2])|0}Y=d+32|0;return e|0}function la(a,b){var c=0,d=0,e=0;a:{if(!b){break a}c=a;d=b&7;if(d){while(1){E[c|0]=0;c=c+1|0;e=e+1|0;if((d|0)!=(e|0)){continue}break}}if(b>>>0<8){break a}a=a+b|0;while(1){E[c|0]=0;E[c+1|0]=0;E[c+2|0]=0;E[c+3|0]=0;E[c+4|0]=0;E[c+5|0]=0;E[c+6|0]=0;E[c+7|0]=0;c=c+8|0;if((a|0)!=(c|0)){continue}break}}}function Pb(a,b,c){var d=0;d=Y-112|0;Y=d;G[d+80>>2]=1779033703;G[d+84>>2]=-1150833019;G[d+72>>2]=0;G[d+76>>2]=0;G[d+64>>2]=0;G[d+104>>2]=528734635;G[d+108>>2]=1541459225;G[d+96>>2]=1359893119;G[d+100>>2]=-1694144372;G[d+88>>2]=1013904242;G[d+92>>2]=-1521486534;ua(d,a,b);Ea(d,c);la(d,112);Y=d+112|0}function Oa(a,b){var c=0,d=0,e=0;c=32;a:{b:{if((a|b)&3){break b}while(1){if(G[a>>2]!=G[b>>2]){break b}b=b+4|0;a=a+4|0;c=c-4|0;if(c>>>0>3){continue}break}if(!c){break a}}while(1){d=H[a|0];e=H[b|0];if((d|0)==(e|0)){b=b+1|0;a=a+1|0;c=c-1|0;if(c){continue}break a}break}return d-e|0}return 0}function dc(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;h=Y-32|0;Y=h;a:{if((ra(c)|0)!=32){G[a>>2]=7;c=-1;break a}va(b,c,h);c=-1;b=ra(g);if((b|0)==-1){G[a>>2]=7;break a}va(f,g,f);b:{if(b>>>0>=64){c=0;if(jb(h,d,e,f)){break b}}G[a>>2]=5;c=-1}}Y=h+32|0;return c|0}function ua(a,b,c){var d=0,e=0,f=0;if(c){d=G[a+64>>2];while(1){E[a+d|0]=H[b+e|0];d=G[a+64>>2]+1|0;G[a+64>>2]=d;if((d|0)==64){ib(a,a);G[a+64>>2]=0;d=G[a+76>>2];f=G[a+72>>2]+512|0;d=f>>>0<512?d+1|0:d;G[a+72>>2]=f;G[a+76>>2]=d;d=0}e=e+1|0;if((e|0)!=(c|0)){continue}break}}}function kd(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;h=Y+-64|0;Y=h;a:{if(g>>>0<43){G[a>>2]=2;a=-1;break a}if(!G[a+100>>2]){G[a>>2]=16;a=-1;break a}g=a+68|0;a=h+32|0;Da(g,32,0,0,d,e,a,32);na(a,32,b,c,h);Fa(h,32,f);a=0}Y=h- -64|0;return a|0}function xc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;a:{if(c>>>0<=31){G[a+7516>>2]=1;a=-1;break a}d=H[a+7364|0];if(d>>>0<=1){E[a+7364|0]=d+1}ma(a+7440|0,a+7368|0,72);E[a+7372|0]=0;d=G[a+7512>>2]+1|0;G[a+7368>>2]=d;G[a+7512>>2]=d;Ia(b,a+7373|0);a=1}la(b,c);return a|0}function Ua(a,b,c){var d=0,e=0,f=0,g=0;if(b){while(1){c=c-1|0;e=a;a=xe(a,b,10);d=Z;f=c,g=e-we(a,d,10,0)|48,E[f|0]=g;e=b>>>0>9;b=d;if(e){continue}break}}if(a){while(1){c=c-1|0;b=(a>>>0)/10|0;E[c|0]=a-M(b,10)|48;d=a>>>0>9;a=b;if(d){continue}break}}return c}function id(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;h=Y-256|0;Y=h;a:{if(g>>>0<43){G[a>>2]=2;a=-1;break a}if(!G[a+100>>2]){G[a>>2]=16;a=-1;break a}Da(a+68|0,32,0,0,d,e,h,256);na(h,256,b,c,f);Fa(f,32,f);a=0}Y=h+256|0;return a|0}function jd(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;h=Y-32|0;Y=h;a:{if(g>>>0<43){G[a>>2]=2;a=-1;break a}if(!G[a+100>>2]){G[a>>2]=16;a=-1;break a}Da(a+68|0,32,0,0,d,e,h,32);na(h,32,b,c,f);Fa(f,32,f);a=0}Y=h+32|0;return a|0}function Jb(a,b){var c=0,d=0,e=0;A(+a);d=v(1)|0;e=v(0)|0;c=d>>>20&2047;if((c|0)!=2047){if(!c){if(a==0){c=0}else{a=Jb(a*0x10000000000000000,b);c=G[b>>2]+-64|0}G[b>>2]=c;return a}G[b>>2]=c-1022;x(0,e|0);x(1,d&-2146435073|1071644672);a=+z()}return a}function pc(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0;g=Y-32|0;Y=g;a:{if((ra(d)|0)!=32){G[a+3216>>2]=7;d=-1;break a}va(c,d,g);d=-1;c=ra(f);if((c|0)==-1){G[a+3216>>2]=7;break a}va(e,f,e);d=Wb(a,b,g,e,c)}Y=g+32|0;return d|0}function $a(a,b,c,d,e){var f=0,g=0;f=-1;g=ra(d);a:{b:{if((g|0)==-1){c=7;if(e){break b}break a}Ra(c,d,c);d=a;a=g-(_[G[440]](2804)|0)|0;f=_[G[444]](2804,d,b,c,g,c,a,c,a)|0;if(!e){break a}c=8;if((f|0)!=-1){break a}}G[e>>2]=c;f=-1}return f}function Cb(a,b,c){var d=0,e=0,f=0;e=1;if(a>>>0>=128){while(1){e=e+1|0;d=a>>>0>16383;a=a>>>7|0;if(d){continue}break}}d=1;if(b>>>0>=128){a=b;while(1){d=d+1|0;f=a>>>0>16383;a=a>>>7|0;if(f){continue}break}}return(((b+c|0)+e|0)+d|0)+37|0}function Ab(a,b,c){var d=0,e=0,f=0;d=1;e=1;if(a>>>0>=128){while(1){e=e+1|0;f=a>>>0>16383;a=a>>>7|0;if(f){continue}break}}if(b>>>0>=128){a=b;while(1){d=d+1|0;f=a>>>0>16383;a=a>>>7|0;if(f){continue}break}}return(((b+c|0)+e|0)+d|0)+67|0}function Hb(a){var b=0,c=0,d=0;if(E[G[a>>2]]-48>>>0>=10){return 0}while(1){d=G[a>>2];c=-1;if(b>>>0<=214748364){c=E[d|0]-48|0;b=M(b,10);c=(c|0)>(b^2147483647)?-1:c+b|0}G[a>>2]=d+1;b=c;if(E[d+1|0]-48>>>0<10){continue}break}return b}function Ob(a){var b=0,c=0,d=0;b=4;c=a+164|0;d=G[a+160>>2];if((c|0)!=(d|0)){while(1){b=b+69|0;c=c+72|0;if((d|0)!=(c|0)){continue}break}}b=b+165|0;a=H[a+7364|0];a:{if(!a){break a}b=b+69|0;if(a>>>0<2){break a}b=b+69|0}return b+4|0}function lc(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0;f=Y-32|0;Y=f;a:{if((ra(c)|0)!=32){G[a+3216>>2]=7;c=-1;break a}va(b,c,f);c=-1;b=ra(e);if((b|0)==-1){G[a+3216>>2]=7;break a}va(d,e,d);c=Vb(a,f,d,b)}Y=f+32|0;return c|0}function ab(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0;f=_[G[441]](2804,d)|0;e=f+(_[G[440]](2804)|0)|0;g=e+2|0;h=(g>>>0)/3|0;i=a;j=b;b=((g-M(h,3)|0)+(h<<2)|0)-2|0;a=(b+c|0)-e|0;_[G[442]](2804,i,j,a,d,a,f,a,e)|0;Fa(a,e,c);return b}function we(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0;e=c>>>16|0;f=a>>>16|0;j=M(e,f);g=c&65535;h=a&65535;i=M(g,h);f=(i>>>16|0)+M(f,g)|0;e=(f&65535)+M(e,h)|0;Z=(M(b,c)+j|0)+M(a,d)+(f>>>16)+(e>>>16)|0;return i&65535|e<<16}function xa(a,b,c){var d=0,e=0;G[c>>2]=0;a:{if(!a){break a}e=b;b=a+4|0;if(e>>>0>>0){break a}d=H[a|0]<<8;G[c>>2]=d;d=(d|H[a+1|0])<<8;G[c>>2]=d;d=(d|H[a+2|0])<<8;G[c>>2]=d;G[c>>2]=d|H[a+3|0];d=b}return d}function sa(a,b,c,d,e){var f=0;f=Y-256|0;Y=f;if(!(e&73728|(c|0)<=(d|0))){d=c-d|0;c=d>>>0<256;ta(f,b&255,c?d:256);if(!c){while(1){qa(a,f,256);d=d-256|0;if(d>>>0>255){continue}break}}qa(a,f,d)}Y=f+256|0}function Dc(a){a=a|0;var b=0,c=0,d=0;b=a+164|0;c=G[a+160>>2];if((b|0)==(c|0)){a=17}else{d=1;a=0;while(1){if(!H[b+4|0]){d=0;a=a+55|0}b=b+72|0;if((c|0)!=(b|0)){continue}break}a=(d?17:16)+a|0}return a|0}function Kb(a){var b=0;b=G[a+72>>2];G[a+72>>2]=b-1|b;b=G[a>>2];if(b&8){G[a>>2]=b|32;return-1}G[a+4>>2]=0;G[a+8>>2]=0;b=G[a+44>>2];G[a+28>>2]=b;G[a+20>>2]=b;G[a+16>>2]=b+G[a+48>>2];return 0} -function Bc(a){a=a|0;var b=0,c=0,d=0;b=a+164|0;c=G[a+160>>2];if((b|0)!=(c|0)){while(1){if(!H[b+4|0]){E[b+4|0]=1;d=d+1|0}b=b+72|0;if((c|0)!=(b|0)){continue}break}}E[a+7372|0]=1;return d|0}function xd(a,b){a=a|0;b=b|0;var c=0;c=G[9340];b=_[G[G[c>>2]+4>>2]](c,b)|0;c=G[9340];c=_[G[G[c>>2]>>2]](c)|0;b=Ab(G[a+128>>2],b,c)+2|0;a=(b>>>0)/3|0;return((b-M(a,3)|0)+(a<<2)|0)-2|0}function Ta(a){var b=0,c=0;b=G[9342];c=a+7&-8;a=b+c|0;a:{if(a>>>0<=b>>>0?c:0){break a}if(a>>>0>$()<<16>>>0){if(!(W(a|0)|0)){break a}}G[9342]=a;return b}G[9343]=48;return-1}function Bd(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0;f=a+132|0;if(Ga(232)>>>0>e>>>0){G[a+228>>2]=2;return-1}vb(lb(a,oa(bb(d,232),1)),f);return ab(b,c,d,232)|0}function rb(a,b){var c=0,d=0;d=G[a+44>>2]!=(a+48|0)?G[a+112>>2]:0;c=G[a+4>>2];b=_[G[G[c>>2]+4>>2]](c,b)|0;a=G[a+4>>2];return Cb(d,b,_[G[G[a>>2]>>2]](a)|0)}function ae(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;if(c>>>0<43){G[a>>2]=2;return-1}if(e>>>0<=31){G[a>>2]=15;return-1}a=a+4|0;mb(d,a);pa(a,32,b);return 0}function Zb(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;if(c>>>0<43){G[a>>2]=2;return-1}if(e>>>0<=31){G[a>>2]=15;return-1}a=a+4|0;Ia(d,a);pa(a,32,b);return 0}function nd(a,b,c){a=a|0;b=b|0;c=c|0;if(c>>>0<43){G[a>>2]=15;return-1}if((Ra(b,c,b)|0)==-1){G[a>>2]=7;return-1}Ca(a+4|0,b,a+68|0);G[a+100>>2]=1;return 0}function te(a){a=a|0;la(a,36);G[a+32>>2]=0;G[a+24>>2]=0;G[a+28>>2]=0;G[a+16>>2]=0;G[a+20>>2]=0;G[a+8>>2]=0;G[a+12>>2]=0;G[a>>2]=0;G[a+4>>2]=0;return 36}function je(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0;f=a+4|0;if(Ga(68)>>>0>e>>>0){G[a>>2]=2;return-1}Pa(oa(bb(d,68),1),f);return ab(b,c,d,68)|0}function yb(a,b,c){var d=0,e=0;a=xa(a,b,c);a:{if(!a){break a}if(!(!a|(a|0)==(b|0))){E[c+4|0]=H[a|0]!=0;d=a+1|0}if(!d){break a}e=Ma(d,b,c+5|0)}return e}function Xb(a){G[a+8>>2]=0;G[a+4>>2]=1888;G[a>>2]=1872;G[a+492>>2]=a+496;G[a+148>>2]=a+152;G[a+44>>2]=a+48;E[a+3220|0]=0;G[a+3216>>2]=0;return a}function Bb(a){var b=0,c=0,d=0;b=1;if(a>>>0>=128){c=a;while(1){b=b+1|0;d=c>>>0>16383;c=c>>>7|0;if(d){continue}break}}return(a+b|0)+104|0}function Ec(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;if(e>>>0<86){G[a+7516>>2]=2;return-1}e=a;a=d+22|0;eb(e,b,c,a);pa(a,64,d);return 86}function bb(a,b){var c=0,d=0;c=_[G[441]](2804,b)+_[G[440]](2804)|0;d=c+2|0;b=(d>>>0)/3|0;return((((d-M(b,3)|0)+(b<<2)|0)-2|0)+a|0)-c|0}function _d(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;if(e>>>0<86){G[a>>2]=2;return-1}e=a+4|0;a=d+22|0;eb(e,b,c,a);pa(a,64,d);return 86}function qc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=ra(d);if((e|0)==-1){G[a+3216>>2]=7;return-1}va(c,d,c);return Wb(a,b,0,c,e)|0}function Ic(a,b,c){a=a|0;b=b|0;c=c|0;a:{if(c>>>0<=63){G[a+7516>>2]=1;a=-1;break a}mb(b,a);Ia(b+32|0,a+96|0);a=0}la(b,c);return a|0}function oa(a,b){b=b<<24|(b&65280)<<8|(b>>>8&65280|b>>>24);E[a|0]=b;E[a+1|0]=b>>>8;E[a+2|0]=b>>>16;E[a+3|0]=b>>>24;return a+4|0}function ld(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;if(!G[a+100>>2]){G[a>>2]=16;return-1}Da(a+68|0,32,0,0,b,c,d,e);return 0}function ec(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;if(e>>>0<43){G[a>>2]=2;return-1}a=d+11|0;Pb(b,c,a);pa(a,32,d);return 43}function yd(a,b,c){a=a|0;b=b|0;c=c|0;if(c>>>0<=159){G[a+228>>2]=1;return-1}cb(a,b,0);mb(b+128|0,a+132|0);la(b,c);return 0}function mc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=ra(c);if((d|0)==-1){G[a+3216>>2]=7;return-1}va(b,c,b);return Vb(a,0,b,d)|0}function Ga(a){var b=0;b=(_[G[441]](2804,a)+_[G[440]](2804)|0)+2|0;a=(b>>>0)/3|0;return((b-M(a,3)|0)+(a<<2)|0)-2|0}function Wa(a,b,c,d){var e=0,f=0;a:{if(!a){break a}e=b;b=a+d|0;if(e>>>0>>0){break a}ma(c,a,d);f=b}return f}function re(a,b){a=a|0;b=b|0;b=(_[G[441]](G[1416],b)|0)+2|0;a=(b>>>0)/3|0;return((b-M(a,3)|0)+(a<<2)|0)-2|0}function qe(a){a=a|0;var b=0;b=(_[G[440]](G[1416])|0)+2|0;a=(b>>>0)/3|0;return((b-M(a,3)|0)+(a<<2)|0)-2|0}function Rc(a){a=a|0;la(a,7520);G[a+7512>>2]=0;G[a+7516>>2]=0;E[a+7364|0]=0;G[a+160>>2]=a+164;return 7520}function pd(a,b,c){a=a|0;b=b|0;c=c|0;if(c>>>0<=31){G[a>>2]=1;return-1}Ia(b,a+4|0);G[a+100>>2]=0;return 0}function Uc(a){a=a|0;la(a,7520);G[a+7512>>2]=0;G[a+7516>>2]=0;E[a+7364|0]=0;G[a+160>>2]=a+164;return a|0}function vd(a,b,c){a=a|0;b=b|0;c=c|0;if(c>>>0<43){G[a+228>>2]=2;return-1}return Fa(a+132|0,32,b)|0}function Ld(a,b,c){a=a|0;b=b|0;c=c|0;if(c>>>0<43){G[a+300>>2]=2;return-1}return Fa(a+264|0,32,b)|0}function se(a,b,c){a=a|0;b=b|0;c=c|0;if(c>>>0<43){G[a>>2]=15;return-1}va(b,43,a+4|0);return 0}function od(a,b,c){a=a|0;b=b|0;c=c|0;if(c>>>0<43){G[a>>2]=2;return-1}Fa(a+4|0,32,b);return 0}function Zc(a){a=a|0;a=G[a+3216>>2];if(a>>>0<=17){a=G[(a<<2)+2720>>2]}else{a=1191}return a|0}function $c(a){a=a|0;a=G[a+7516>>2];if(a>>>0<=17){a=G[(a<<2)+2720>>2]}else{a=1191}return a|0}function Ud(a){a=a|0;a=G[a+300>>2];if(a>>>0<=17){a=G[(a<<2)+2720>>2]}else{a=1191}return a|0}function Ed(a){a=a|0;a=G[a+228>>2];if(a>>>0<=17){a=G[(a<<2)+2720>>2]}else{a=1191}return a|0}function ic(a,b){a=a|0;b=b|0;b=Ub(a,b)+2|0;a=(b>>>0)/3|0;return((b-M(a,3)|0)+(a<<2)|0)-2|0}function ye(a,b){var c=0,d=0;c=b&31;d=(-1>>>c&a)<>>a}function Za(a){a=a|0;a=G[a>>2];if(a>>>0<=17){a=G[(a<<2)+2720>>2]}else{a=1191}return a|0}function ra(a){if((a&3)!=1){a=a+2|0;a=((a&3)+M(a>>>2|0,3)|0)-2|0}else{a=-1}return a}function bd(a,b,c){a=a|0;b=b|0;c=c|0;if(a){E[a|0]=3}if(b){E[b|0]=2}if(c){E[c|0]=15}}function kb(a,b,c){b=Wa(b,c,a,128);if(!b){return 0}return xa(b,c,a+128|0)}function sc(a){a=a|0;if(H[a+7364|0]>=2){E[a+7364|0]=1;la(a+7440|0,72)}}function he(a,b){a=a|0;b=b|0;a=G[443];return _[a|0](G[1416],ra(b))|0}function Yd(a){a=a|0;return(a>>>0>17?1191:G[(a<<2)+2720>>2])|0}function uc(a){a=a|0;return(H[a+7372|0]|!H[a+7364|0]?17:71)|0}function Ub(a,b){b=rb(a,b);if(!H[a+3220|0]){b=Bb(b)}return b}function ce(a){a=a|0;la(a,100);ta(a,0,100);return 100}function jc(a){a=a|0;return(G[a+44>>2]==(a+48|0))<<5}function ve(a){if(a){return 31-P(a-1^a)|0}return 32}function lb(a,b){return oa(Xa(b,a,128),G[a+128>>2])}function me(a){a=a|0;la(a,68);ta(a,0,68);return 68}function Sc(a){a=a|0;la(a,4);G[a>>2]=0;return a|0}function Qc(a){a=a|0;la(a,3320);Xb(a);return 3320}function wc(a){a=a|0;return(H[a+7364|0]?71:17)|0}function ue(a,b){a=a|0;b=b|0;return(b&-16)+16|0}function Pc(a){a=a|0;la(a,4);G[a>>2]=0;return 4}function Tc(a){a=a|0;la(a,3320);return Xb(a)|0}function cd(a){a=a|0;a=Y-a&-16;Y=a;return a|0}function cb(a,b,c){G[a+128>>2]=c;ma(a,b,128)}function rd(a){a=a|0;la(a,104);return a|0}function qd(a){a=a|0;la(a,104);return 104}function de(a){a=a|0;la(a,100);return a|0}function Wd(a){a=a|0;la(a,304);return a|0}function Vd(a){a=a|0;la(a,304);return 304}function Gd(a){a=a|0;la(a,232);return a|0}function Fd(a){a=a|0;la(a,232);return 232}function zc(a,b){a=a|0;b=b|0;return b<<5}function ne(a){a=a|0;la(a,68);return a|0}function ac(a){a=a|0;la(a,36);return a|0}function _c(a){a=a|0;return G[a+7516>>2]}function Yc(a){a=a|0;return G[a+3216>>2]}function wb(a){a=a|0;return H[a+3220|0]}function md(a){a=a|0;return G[a+100>>2]}function be(a,b){a=a|0;b=b|0;return b|0}function Xa(a,b,c){return ma(a,b,c)+c|0}function Td(a){a=a|0;return G[a+300>>2]}function Qb(a){a=a|0;return G[a+128>>2]}function Oc(a){a=a|0;return Ga(Ob(a))|0}function Nc(a){a=a|0;return Ga(Tb(a))|0}function Kd(a){a=a|0;return G[a+296>>2]}function Dd(a){a=a|0;return G[a+228>>2]}function $b(){G[9382]=37408;G[9364]=42}function Qd(a){a=a|0;return Ga(301)|0}function Cd(a){a=a|0;return Ga(232)|0}function ke(a){a=a|0;return Ga(68)|0}function Ya(a){a=a|0;return G[a>>2]}function Ra(a,b,c){return va(a,b,c)}function Ca(a,b,c){Lb(c,a+32|0,b)}function zd(a){a=a|0;return 160}function ud(a){a=a|0;return 306}function Jd(a){a=a|0;return 220}function Hc(a){a=a|0;return 116}function Ac(a){a=a|0;return 100}function xb(a){a=a|0;return 64}function tb(a){a=a|0;return 32}function Sa(a){a=a|0;return 43}function Fc(a){a=a|0;return 86}function cc(a){a=a|0;return 8}function Xc(){return 7520}function Wc(){return 3320}function sd(){return 104}function ee(){return 100}function ed(){return Y|0}function dd(a){a=a|0;Y=a}function Xd(){return 304}function Hd(){return 232}function sb(){return 32}function oe(){return 68}function bc(){return 36}function _b(){return 43}function $d(){return 86}function ad(){return-1}function Vc(){return 4} -// EMSCRIPTEN_END_FUNCS -e=H;p(q);var _=c([null,cc,ue,le,be,Zd,Fb,Eb,hd]);function $(){return D.byteLength/65536|0}function ea(fa){fa=fa|0;var aa=$()|0;var ba=aa+fa|0;if(aaa.startsWith("data:application/octet-stream;base64,"),na=a=>a.startsWith("file://"),w;w="olm_legacy.wasm";if(!Ia(w)){var Ja=w;w=c.locateFile?c.locateFile(Ja,l):l+Ja} -function Ka(a){if(a==w&&n)return new Uint8Array(n);if(Ia(a)){var b=a.slice(37);if("undefined"!=typeof ia&&ia)b=Buffer.from(b,"base64"),b=new Uint8Array(b.buffer,b.byteOffset,b.length);else{b=atob(b);for(var d=new Uint8Array(b.length),e=0;e{if(!b.ok)throw"failed to load wasm binary file at '"+a+"'";return b.arrayBuffer()}).catch(()=>Ka(a));if(ka)return new Promise((b,d)=>{ka(a,e=>b(new Uint8Array(e)),d)})}return Promise.resolve().then(()=>Ka(a))}function Ma(a,b,d){return La(a).then(()=>sa(b)).then(e=>e).then(d,e=>{oa(`failed to asynchronously prepare wasm: ${e}`);p(e)})} -function Na(a,b){var d=w;return n||"function"!=typeof WebAssembly.instantiateStreaming||Ia(d)||na(d)||ia||"function"!=typeof fetch?Ma(d,a,b):fetch(d,{credentials:"same-origin"}).then(e=>WebAssembly.instantiateStreaming(e,a).then(b,function(g){oa(`wasm streaming compile failed: ${g}`);oa("falling back to ArrayBuffer instantiation");return Ma(d,a,b)}))}var Oa=a=>{for(;0>0];case "i8":return r[a>>0];case "i16":return va[a>>1];case "i32":return wa[a>>2];case "i64":p("to do getValue(i64) use WASM_BIGINT");case "float":return ya[a>>2];case "double":return za[a>>3];case "*":return xa[a>>2];default:p(`invalid type for getValue: ${b}`)}} -function x(a){var b="i8";b.endsWith("*")&&(b="*");switch(b){case "i1":r[a>>0]=0;break;case "i8":r[a>>0]=0;break;case "i16":va[a>>1]=0;break;case "i32":wa[a>>2]=0;break;case "i64":p("to do setValue(i64) use WASM_BIGINT");case "float":ya[a>>2]=0;break;case "double":za[a>>3]=0;break;case "*":xa[a>>2]=0;break;default:p(`invalid type for setValue: ${b}`)}} -var Qa=(a,b,d)=>{for(var e=0;e>0]=a.charCodeAt(e);d||(r[b>>0]=0)},z=a=>{for(var b=0,d=0;d=e?b++:2047>=e?b+=2:55296<=e&&57343>=e?(b+=4,++d):b+=3}return b},A=(a,b,d,e)=>{if(!(0=m){var v=a.charCodeAt(++h);m=65536+((m&1023)<<10)|v&1023}if(127>=m){if(d>=e)break;b[d++]=m}else{if(2047>=m){if(d+1>=e)break;b[d++]=192|m>>6}else{if(65535>=m){if(d+2>=e)break; -b[d++]=224|m>>12}else{if(d+3>=e)break;b[d++]=240|m>>18;b[d++]=128|m>>12&63}b[d++]=128|m>>6&63}b[d++]=128|m&63}}b[d]=0;return d-g};function Ra(a,b,d){d=Array(0{var d=t,e=a+b;for(b=a;d[b]&&!(b>=e);)++b;if(16g?e+=String.fromCharCode(g):(g-=65536,e+=String.fromCharCode(55296|g>>10,56320|g&1023))}}else e+=String.fromCharCode(g)}return e}, -Ta={c:(a,b,d)=>t.copyWithin(a,b,b+d),b:a=>{var b=t.length;a>>>=0;if(2147483648=d;d*=2){var e=b*(1+.2/d);e=Math.min(e,a+100663296);var g=Math;e=Math.max(a,e);a:{g=(g.min.call(g,2147483648,e+(65536-e%65536)%65536)-q.buffer.byteLength+65535)/65536;try{q.grow(g);Aa();var h=1;break a}catch(m){}h=void 0}if(h)return!0}return!1},a:q},C=function(){function a(d){C=d.exports;Da.unshift(C.d);u--;c.monitorRunDependencies&&c.monitorRunDependencies(u);0==u&&(null!==Ga&&(clearInterval(Ga), -Ga=null),Ha&&(d=Ha,Ha=null,d()));return C}var b={a:Ta};u++;c.monitorRunDependencies&&c.monitorRunDependencies(u);if(c.instantiateWasm)try{return c.instantiateWasm(b,a)}catch(d){oa(`Module.instantiateWasm callback failed with error: ${d}`),ba(d)}Na(b,function(d){a(d.instance)}).catch(ba);return{}}();c._olm_get_library_version=(a,b,d)=>(c._olm_get_library_version=C.f)(a,b,d);c._olm_error=()=>(c._olm_error=C.g)();c._olm_account_last_error=a=>(c._olm_account_last_error=C.h)(a); -c.__olm_error_to_string=a=>(c.__olm_error_to_string=C.i)(a);c._olm_account_last_error_code=a=>(c._olm_account_last_error_code=C.j)(a);c._olm_session_last_error=a=>(c._olm_session_last_error=C.k)(a);c._olm_session_last_error_code=a=>(c._olm_session_last_error_code=C.l)(a);c._olm_utility_last_error=a=>(c._olm_utility_last_error=C.m)(a);c._olm_utility_last_error_code=a=>(c._olm_utility_last_error_code=C.n)(a);c._olm_account_size=()=>(c._olm_account_size=C.o)(); -c._olm_session_size=()=>(c._olm_session_size=C.p)();c._olm_utility_size=()=>(c._olm_utility_size=C.q)();c._olm_account=a=>(c._olm_account=C.r)(a);c._olm_session=a=>(c._olm_session=C.s)(a);c._olm_utility=a=>(c._olm_utility=C.t)(a);c._olm_clear_account=a=>(c._olm_clear_account=C.u)(a);c._olm_clear_session=a=>(c._olm_clear_session=C.v)(a);c._olm_clear_utility=a=>(c._olm_clear_utility=C.w)(a);c._olm_pickle_account_length=a=>(c._olm_pickle_account_length=C.x)(a); -c._olm_pickle_session_length=a=>(c._olm_pickle_session_length=C.y)(a);c._olm_pickle_account=(a,b,d,e,g)=>(c._olm_pickle_account=C.z)(a,b,d,e,g);c._olm_pickle_session=(a,b,d,e,g)=>(c._olm_pickle_session=C.A)(a,b,d,e,g);c._olm_unpickle_account=(a,b,d,e,g)=>(c._olm_unpickle_account=C.B)(a,b,d,e,g);c._olm_unpickle_session=(a,b,d,e,g)=>(c._olm_unpickle_session=C.C)(a,b,d,e,g);c._olm_create_account_random_length=a=>(c._olm_create_account_random_length=C.D)(a); -c._olm_create_account=(a,b,d)=>(c._olm_create_account=C.E)(a,b,d);c._olm_account_identity_keys_length=a=>(c._olm_account_identity_keys_length=C.F)(a);c._olm_account_identity_keys=(a,b,d)=>(c._olm_account_identity_keys=C.G)(a,b,d);c._olm_account_signature_length=a=>(c._olm_account_signature_length=C.H)(a);c._olm_account_sign=(a,b,d,e,g)=>(c._olm_account_sign=C.I)(a,b,d,e,g);c._olm_account_one_time_keys_length=a=>(c._olm_account_one_time_keys_length=C.J)(a); -c._olm_account_one_time_keys=(a,b,d)=>(c._olm_account_one_time_keys=C.K)(a,b,d);c._olm_account_mark_keys_as_published=a=>(c._olm_account_mark_keys_as_published=C.L)(a);c._olm_account_max_number_of_one_time_keys=a=>(c._olm_account_max_number_of_one_time_keys=C.M)(a);c._olm_account_generate_one_time_keys_random_length=(a,b)=>(c._olm_account_generate_one_time_keys_random_length=C.N)(a,b);c._olm_account_generate_one_time_keys=(a,b,d,e)=>(c._olm_account_generate_one_time_keys=C.O)(a,b,d,e); -c._olm_account_generate_fallback_key_random_length=a=>(c._olm_account_generate_fallback_key_random_length=C.P)(a);c._olm_account_generate_fallback_key=(a,b,d)=>(c._olm_account_generate_fallback_key=C.Q)(a,b,d);c._olm_account_fallback_key_length=a=>(c._olm_account_fallback_key_length=C.R)(a);c._olm_account_fallback_key=(a,b,d)=>(c._olm_account_fallback_key=C.S)(a,b,d);c._olm_account_unpublished_fallback_key_length=a=>(c._olm_account_unpublished_fallback_key_length=C.T)(a); -c._olm_account_unpublished_fallback_key=(a,b,d)=>(c._olm_account_unpublished_fallback_key=C.U)(a,b,d);c._olm_account_forget_old_fallback_key=a=>(c._olm_account_forget_old_fallback_key=C.V)(a);c._olm_create_outbound_session_random_length=a=>(c._olm_create_outbound_session_random_length=C.W)(a);c._olm_create_outbound_session=(a,b,d,e,g,h,m,v)=>(c._olm_create_outbound_session=C.X)(a,b,d,e,g,h,m,v);c._olm_create_inbound_session=(a,b,d,e)=>(c._olm_create_inbound_session=C.Y)(a,b,d,e); -c._olm_create_inbound_session_from=(a,b,d,e,g,h)=>(c._olm_create_inbound_session_from=C.Z)(a,b,d,e,g,h);c._olm_session_id_length=a=>(c._olm_session_id_length=C._)(a);c._olm_session_id=(a,b,d)=>(c._olm_session_id=C.$)(a,b,d);c._olm_session_has_received_message=a=>(c._olm_session_has_received_message=C.aa)(a);c._olm_session_describe=(a,b,d)=>(c._olm_session_describe=C.ba)(a,b,d);c._olm_matches_inbound_session=(a,b,d)=>(c._olm_matches_inbound_session=C.ca)(a,b,d); -c._olm_matches_inbound_session_from=(a,b,d,e,g)=>(c._olm_matches_inbound_session_from=C.da)(a,b,d,e,g);c._olm_remove_one_time_keys=(a,b)=>(c._olm_remove_one_time_keys=C.ea)(a,b);c._olm_encrypt_message_type=a=>(c._olm_encrypt_message_type=C.fa)(a);c._olm_encrypt_random_length=a=>(c._olm_encrypt_random_length=C.ga)(a);c._olm_encrypt_message_length=(a,b)=>(c._olm_encrypt_message_length=C.ha)(a,b);c._olm_encrypt=(a,b,d,e,g,h,m)=>(c._olm_encrypt=C.ia)(a,b,d,e,g,h,m); -c._olm_decrypt_max_plaintext_length=(a,b,d,e)=>(c._olm_decrypt_max_plaintext_length=C.ja)(a,b,d,e);c._olm_decrypt=(a,b,d,e,g,h)=>(c._olm_decrypt=C.ka)(a,b,d,e,g,h);c._olm_sha256_length=a=>(c._olm_sha256_length=C.la)(a);c._olm_sha256=(a,b,d,e,g)=>(c._olm_sha256=C.ma)(a,b,d,e,g);c._olm_ed25519_verify=(a,b,d,e,g,h,m)=>(c._olm_ed25519_verify=C.na)(a,b,d,e,g,h,m);c._olm_pk_encryption_last_error=a=>(c._olm_pk_encryption_last_error=C.oa)(a); -c._olm_pk_encryption_last_error_code=a=>(c._olm_pk_encryption_last_error_code=C.pa)(a);c._olm_pk_encryption_size=()=>(c._olm_pk_encryption_size=C.qa)();c._olm_pk_encryption=a=>(c._olm_pk_encryption=C.ra)(a);c._olm_clear_pk_encryption=a=>(c._olm_clear_pk_encryption=C.sa)(a);c._olm_pk_encryption_set_recipient_key=(a,b,d)=>(c._olm_pk_encryption_set_recipient_key=C.ta)(a,b,d);c._olm_pk_key_length=()=>(c._olm_pk_key_length=C.ua)(); -c._olm_pk_ciphertext_length=(a,b)=>(c._olm_pk_ciphertext_length=C.va)(a,b);c._olm_pk_mac_length=a=>(c._olm_pk_mac_length=C.wa)(a);c._olm_pk_encrypt_random_length=a=>(c._olm_pk_encrypt_random_length=C.xa)(a);c._olm_pk_encrypt=(a,b,d,e,g,h,m,v,J,L,y)=>(c._olm_pk_encrypt=C.ya)(a,b,d,e,g,h,m,v,J,L,y);c._olm_pk_decryption_last_error=a=>(c._olm_pk_decryption_last_error=C.za)(a);c._olm_pk_decryption_last_error_code=a=>(c._olm_pk_decryption_last_error_code=C.Aa)(a); -c._olm_pk_decryption_size=()=>(c._olm_pk_decryption_size=C.Ba)();c._olm_pk_decryption=a=>(c._olm_pk_decryption=C.Ca)(a);c._olm_clear_pk_decryption=a=>(c._olm_clear_pk_decryption=C.Da)(a);c._olm_pk_private_key_length=()=>(c._olm_pk_private_key_length=C.Ea)();c._olm_pk_generate_key_random_length=()=>(c._olm_pk_generate_key_random_length=C.Fa)();c._olm_pk_key_from_private=(a,b,d,e,g)=>(c._olm_pk_key_from_private=C.Ga)(a,b,d,e,g); -c._olm_pk_generate_key=(a,b,d,e,g)=>(c._olm_pk_generate_key=C.Ha)(a,b,d,e,g);c._olm_pickle_pk_decryption_length=a=>(c._olm_pickle_pk_decryption_length=C.Ia)(a);c._olm_pickle_pk_decryption=(a,b,d,e,g)=>(c._olm_pickle_pk_decryption=C.Ja)(a,b,d,e,g);c._olm_unpickle_pk_decryption=(a,b,d,e,g,h,m)=>(c._olm_unpickle_pk_decryption=C.Ka)(a,b,d,e,g,h,m);c._olm_pk_max_plaintext_length=(a,b)=>(c._olm_pk_max_plaintext_length=C.La)(a,b); -c._olm_pk_decrypt=(a,b,d,e,g,h,m,v,J)=>(c._olm_pk_decrypt=C.Ma)(a,b,d,e,g,h,m,v,J);c._olm_pk_get_private_key=(a,b,d)=>(c._olm_pk_get_private_key=C.Na)(a,b,d);c._olm_pk_signing_size=()=>(c._olm_pk_signing_size=C.Oa)();c._olm_pk_signing=a=>(c._olm_pk_signing=C.Pa)(a);c._olm_pk_signing_last_error=a=>(c._olm_pk_signing_last_error=C.Qa)(a);c._olm_pk_signing_last_error_code=a=>(c._olm_pk_signing_last_error_code=C.Ra)(a);c._olm_clear_pk_signing=a=>(c._olm_clear_pk_signing=C.Sa)(a); -c._olm_pk_signing_seed_length=()=>(c._olm_pk_signing_seed_length=C.Ta)();c._olm_pk_signing_public_key_length=()=>(c._olm_pk_signing_public_key_length=C.Ua)();c._olm_pk_signing_key_from_seed=(a,b,d,e,g)=>(c._olm_pk_signing_key_from_seed=C.Va)(a,b,d,e,g);c._olm_pk_signature_length=()=>(c._olm_pk_signature_length=C.Wa)();c._olm_pk_sign=(a,b,d,e,g)=>(c._olm_pk_sign=C.Xa)(a,b,d,e,g);c._olm_inbound_group_session_size=()=>(c._olm_inbound_group_session_size=C.Ya)(); -c._olm_inbound_group_session=a=>(c._olm_inbound_group_session=C.Za)(a);c._olm_clear_inbound_group_session=a=>(c._olm_clear_inbound_group_session=C._a)(a);c._olm_inbound_group_session_last_error=a=>(c._olm_inbound_group_session_last_error=C.$a)(a);c._olm_inbound_group_session_last_error_code=a=>(c._olm_inbound_group_session_last_error_code=C.ab)(a);c._olm_init_inbound_group_session=(a,b,d)=>(c._olm_init_inbound_group_session=C.bb)(a,b,d); -c._olm_import_inbound_group_session=(a,b,d)=>(c._olm_import_inbound_group_session=C.cb)(a,b,d);c._olm_pickle_inbound_group_session_length=a=>(c._olm_pickle_inbound_group_session_length=C.db)(a);c._olm_pickle_inbound_group_session=(a,b,d,e,g)=>(c._olm_pickle_inbound_group_session=C.eb)(a,b,d,e,g);c._olm_unpickle_inbound_group_session=(a,b,d,e,g)=>(c._olm_unpickle_inbound_group_session=C.fb)(a,b,d,e,g); -c._olm_group_decrypt_max_plaintext_length=(a,b,d)=>(c._olm_group_decrypt_max_plaintext_length=C.gb)(a,b,d);c._olm_group_decrypt=(a,b,d,e,g,h)=>(c._olm_group_decrypt=C.hb)(a,b,d,e,g,h);c._olm_inbound_group_session_id_length=a=>(c._olm_inbound_group_session_id_length=C.ib)(a);c._olm_inbound_group_session_id=(a,b,d)=>(c._olm_inbound_group_session_id=C.jb)(a,b,d);c._olm_inbound_group_session_first_known_index=a=>(c._olm_inbound_group_session_first_known_index=C.kb)(a); -c._olm_inbound_group_session_is_verified=a=>(c._olm_inbound_group_session_is_verified=C.lb)(a);c._olm_export_inbound_group_session_length=a=>(c._olm_export_inbound_group_session_length=C.mb)(a);c._olm_export_inbound_group_session=(a,b,d,e)=>(c._olm_export_inbound_group_session=C.nb)(a,b,d,e);c._olm_outbound_group_session_size=()=>(c._olm_outbound_group_session_size=C.ob)();c._olm_outbound_group_session=a=>(c._olm_outbound_group_session=C.pb)(a); -c._olm_clear_outbound_group_session=a=>(c._olm_clear_outbound_group_session=C.qb)(a);c._olm_outbound_group_session_last_error=a=>(c._olm_outbound_group_session_last_error=C.rb)(a);c._olm_outbound_group_session_last_error_code=a=>(c._olm_outbound_group_session_last_error_code=C.sb)(a);c._olm_pickle_outbound_group_session_length=a=>(c._olm_pickle_outbound_group_session_length=C.tb)(a);c._olm_pickle_outbound_group_session=(a,b,d,e,g)=>(c._olm_pickle_outbound_group_session=C.ub)(a,b,d,e,g); -c._olm_unpickle_outbound_group_session=(a,b,d,e,g)=>(c._olm_unpickle_outbound_group_session=C.vb)(a,b,d,e,g);c._olm_init_outbound_group_session_random_length=a=>(c._olm_init_outbound_group_session_random_length=C.wb)(a);c._olm_init_outbound_group_session=(a,b,d)=>(c._olm_init_outbound_group_session=C.xb)(a,b,d);c._olm_group_encrypt_message_length=(a,b)=>(c._olm_group_encrypt_message_length=C.yb)(a,b);c._olm_group_encrypt=(a,b,d,e,g)=>(c._olm_group_encrypt=C.zb)(a,b,d,e,g); -c._olm_outbound_group_session_id_length=a=>(c._olm_outbound_group_session_id_length=C.Ab)(a);c._olm_outbound_group_session_id=(a,b,d)=>(c._olm_outbound_group_session_id=C.Bb)(a,b,d);c._olm_outbound_group_session_message_index=a=>(c._olm_outbound_group_session_message_index=C.Cb)(a);c._olm_outbound_group_session_key_length=a=>(c._olm_outbound_group_session_key_length=C.Db)(a);c._olm_outbound_group_session_key=(a,b,d)=>(c._olm_outbound_group_session_key=C.Eb)(a,b,d); -c._olm_sas_last_error=a=>(c._olm_sas_last_error=C.Fb)(a);c._olm_sas_last_error_code=a=>(c._olm_sas_last_error_code=C.Gb)(a);c._olm_sas_size=()=>(c._olm_sas_size=C.Hb)();c._olm_sas=a=>(c._olm_sas=C.Ib)(a);c._olm_clear_sas=a=>(c._olm_clear_sas=C.Jb)(a);c._olm_create_sas_random_length=a=>(c._olm_create_sas_random_length=C.Kb)(a);c._olm_create_sas=(a,b,d)=>(c._olm_create_sas=C.Lb)(a,b,d);c._olm_sas_pubkey_length=a=>(c._olm_sas_pubkey_length=C.Mb)(a); -c._olm_sas_get_pubkey=(a,b,d)=>(c._olm_sas_get_pubkey=C.Nb)(a,b,d);c._olm_sas_set_their_key=(a,b,d)=>(c._olm_sas_set_their_key=C.Ob)(a,b,d);c._olm_sas_is_their_key_set=a=>(c._olm_sas_is_their_key_set=C.Pb)(a);c._olm_sas_generate_bytes=(a,b,d,e,g)=>(c._olm_sas_generate_bytes=C.Qb)(a,b,d,e,g);c._olm_sas_mac_length=a=>(c._olm_sas_mac_length=C.Rb)(a);c._olm_sas_calculate_mac_fixed_base64=(a,b,d,e,g,h,m)=>(c._olm_sas_calculate_mac_fixed_base64=C.Sb)(a,b,d,e,g,h,m); -c._olm_sas_calculate_mac=(a,b,d,e,g,h,m)=>(c._olm_sas_calculate_mac=C.Tb)(a,b,d,e,g,h,m);c._olm_sas_calculate_mac_long_kdf=(a,b,d,e,g,h,m)=>(c._olm_sas_calculate_mac_long_kdf=C.Ub)(a,b,d,e,g,h,m);c._malloc=a=>(c._malloc=C.Vb)(a);c._free=a=>(c._free=C.Wb)(a);var Ua=()=>(Ua=C.Xb)(),Va=a=>(Va=C.Yb)(a),Wa=a=>(Wa=C.Zb)(a);c.UTF8ToString=(a,b)=>a?B(a,b):"";c.stringToUTF8=(a,b,d)=>A(a,t,b,d);c.intArrayFromString=Ra;c.ALLOC_STACK=1;c.writeAsciiToMemory=Qa;var Xa;Ha=function Ya(){Xa||Za();Xa||(Ha=Ya)}; -function Za(){function a(){if(!Xa&&(Xa=!0,c.calledRun=!0,!ua)){Oa(Da);aa(c);if(c.onRuntimeInitialized)c.onRuntimeInitialized();if(c.postRun)for("function"==typeof c.postRun&&(c.postRun=[c.postRun]);c.postRun.length;){var b=c.postRun.shift();Ea.unshift(b)}Oa(Ea)}}if(!(0 Module); -var olmInitPromise; - -olm_exports['init'] = function(opts) { - if (olmInitPromise) return olmInitPromise; - - if (opts) OLM_OPTIONS = opts; - - olmInitPromise = new Promise(function(resolve, reject) { - onInitSuccess = function() { - resolve(); - }; - onInitFail = function(err) { - reject(err); - }; - Module(); - }); - return olmInitPromise; -}; - -return olm_exports; - -})(); - -if (typeof(window) !== 'undefined') { - // We've been imported directly into a browser. Define the global 'Olm' object. - // (we do this even if module.exports was defined, because it's useful to have - // Olm in the global scope for browserified and webpacked apps.) - window["Olm"] = Olm; -} - -if (typeof module === 'object') { - // Emscripten sets the module exports to be its module - // with wrapped c functions. Clobber it with our higher - // level wrapper class. - module.exports = Olm; -} - -// @license-end From 1264ab846f32298500bf3b3d50ae5bcf35779e38 Mon Sep 17 00:00:00 2001 From: td Date: Wed, 31 Jan 2024 19:46:55 +0100 Subject: [PATCH 16/29] chore: workers --- .gitignore | 5 +++++ web/index.html | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index f48b787a57..72a3d7b9e2 100644 --- a/.gitignore +++ b/.gitignore @@ -62,3 +62,8 @@ ios/Runner.ipa olm web/*.dart.js* +web/Imaging.js +web/Imaging.wasm +web/olm.js +web/olm.wasm +web/olm_legacy.js diff --git a/web/index.html b/web/index.html index 5ebd1f3da1..ef27ed8665 100644 --- a/web/index.html +++ b/web/index.html @@ -41,7 +41,7 @@ - + From 50e5096261c463f80adeeac929f91479d07795cb Mon Sep 17 00:00:00 2001 From: td Date: Wed, 31 Jan 2024 19:50:56 +0100 Subject: [PATCH 17/29] chore: fix web --- scripts/prepare-web.sh | 5 ----- 1 file changed, 5 deletions(-) diff --git a/scripts/prepare-web.sh b/scripts/prepare-web.sh index 8fa8c9b300..d615262b39 100755 --- a/scripts/prepare-web.sh +++ b/scripts/prepare-web.sh @@ -29,11 +29,6 @@ rmdir js rm native_imaging.zip -cd .. -flutter pub get -dart compile js ./web/worker.dart -o ./web/worker.js -m -dart compile js ./web/native_executor.dart -o ./web/native_executor.js -m - # e2ee worker for livekit. cd web git clone https://github.com/flutter-webrtc/dart-webrtc.git -b e2ee/improvements From 60fe9b6ebbfc8edb2fd5bdfee64ed3960b8160fa Mon Sep 17 00:00:00 2001 From: td Date: Wed, 31 Jan 2024 19:52:31 +0100 Subject: [PATCH 18/29] chore: fix path --- scripts/prepare-web.sh | 2 -- 1 file changed, 2 deletions(-) diff --git a/scripts/prepare-web.sh b/scripts/prepare-web.sh index d615262b39..f6b6f2df15 100755 --- a/scripts/prepare-web.sh +++ b/scripts/prepare-web.sh @@ -29,8 +29,6 @@ rmdir js rm native_imaging.zip -# e2ee worker for livekit. -cd web git clone https://github.com/flutter-webrtc/dart-webrtc.git -b e2ee/improvements cd dart-webrtc dart pub get From acaca54252a106b8f86556becfa9f536698ee782 Mon Sep 17 00:00:00 2001 From: td Date: Wed, 31 Jan 2024 20:36:09 +0100 Subject: [PATCH 19/29] chore: reduce logs --- lib/pages/voip/group_call_view/group_call_view.dart | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/pages/voip/group_call_view/group_call_view.dart b/lib/pages/voip/group_call_view/group_call_view.dart index 6e0a77e747..4d1548e77a 100644 --- a/lib/pages/voip/group_call_view/group_call_view.dart +++ b/lib/pages/voip/group_call_view/group_call_view.dart @@ -158,10 +158,10 @@ class GroupCallViewState extends State { Widget build(BuildContext context) { Logs().d('[GroupCallView] rebuilding callgrid children'); - groupCall.encryptionKeysMap.forEach((key, value) { - Logs().e(key.userId.toString()); - Logs().e(value.values.map((e) => base64Encode(e).toString()).toString()); - }); + // groupCall.encryptionKeysMap.forEach((key, value) { + // Logs().i(key.userId.toString()); + // Logs().i(value.values.map((e) => base64Encode(e).toString()).toString()); + // }); userMediaStreams = List.from(widget.call.userMediaStreams); screenSharingStreams = List.from(widget.call.screenSharingStreams); From 6817cd4b3a00a44851facddacdb8a3bc428c0bab Mon Sep 17 00:00:00 2001 From: td Date: Wed, 31 Jan 2024 20:49:58 +0100 Subject: [PATCH 20/29] chore: pass e2ee flag to sdk --- lib/config/app_config.dart | 2 +- .../voip/group_call_onboarding/group_call_onboarding_view.dart | 1 + lib/utils/voip/livekit_group_call_session_state.dart | 2 +- pubspec.lock | 2 +- 4 files changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/config/app_config.dart b/lib/config/app_config.dart index b41918c042..4c988a7b54 100644 --- a/lib/config/app_config.dart +++ b/lib/config/app_config.dart @@ -53,7 +53,7 @@ abstract class AppConfig { static bool livekitEnabledCalls = true; // static const livekitServiceUrl = 'https://famedly-livekit-server.teedee.dev'; static const livekitServiceUrl = 'https://livekit-jwt.call.element.dev'; - + static const enableLivekitE2EE = false; static const bool hideTypingUsernames = false; static const bool hideAllStateEvents = false; static const String inviteLinkPrefix = 'https://matrix.to/#/'; diff --git a/lib/pages/voip/group_call_onboarding/group_call_onboarding_view.dart b/lib/pages/voip/group_call_onboarding/group_call_onboarding_view.dart index 9314e62526..c47a9af55f 100644 --- a/lib/pages/voip/group_call_onboarding/group_call_onboarding_view.dart +++ b/lib/pages/voip/group_call_onboarding/group_call_onboarding_view.dart @@ -301,6 +301,7 @@ class _GroupCallOnboardingViewState extends State { ], 'm.call', 'm.room', + e2ee: AppConfig.enableLivekitE2EE, ); final voipPlugin = Matrix.of(context).voipPlugin; final groupCallProxy = groupCallSession!.isLivekitCall diff --git a/lib/utils/voip/livekit_group_call_session_state.dart b/lib/utils/voip/livekit_group_call_session_state.dart index db024c3ddd..574fe471d1 100644 --- a/lib/utils/voip/livekit_group_call_session_state.dart +++ b/lib/utils/voip/livekit_group_call_session_state.dart @@ -124,7 +124,7 @@ class LiveKitGroupCallSessionState implements CallStateProxy { } await join( groupCall: _groupCall, - enableE2EE: false, + enableE2EE: AppConfig.enableLivekitE2EE, sfuConfig: sfuConfig, stream: stream, ); diff --git a/pubspec.lock b/pubspec.lock index d24c33b6f0..08ce621578 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1218,7 +1218,7 @@ packages: description: path: "." ref: "td/fosdemDemoFork" - resolved-ref: ab629bb44715ed3a476b0a2409f43731741712ce + resolved-ref: "807bae2a9bda1ae74cf5b62397aa67975acd932f" url: "https://github.com/famedly/matrix-dart-sdk.git" source: git version: "0.25.6" From 84f8206848641085b989c7ce41cc3b08822d25b8 Mon Sep 17 00:00:00 2001 From: td Date: Thu, 1 Feb 2024 11:33:49 +0100 Subject: [PATCH 21/29] chore: bump sdk --- lib/pages/voip/group_call_view/group_call_view.dart | 2 -- pubspec.lock | 10 +++++----- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/lib/pages/voip/group_call_view/group_call_view.dart b/lib/pages/voip/group_call_view/group_call_view.dart index 4d1548e77a..1effc240f7 100644 --- a/lib/pages/voip/group_call_view/group_call_view.dart +++ b/lib/pages/voip/group_call_view/group_call_view.dart @@ -1,5 +1,3 @@ -import 'dart:convert'; - import 'package:flutter/material.dart'; import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart'; diff --git a/pubspec.lock b/pubspec.lock index 08ce621578..a76bba697c 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1193,10 +1193,10 @@ packages: dependency: transitive description: name: markdown - sha256: acf35edccc0463a9d7384e437c015a3535772e09714cf60e07eeef3a15870dcd + sha256: "1b134d9f8ff2da15cb298efe6cd8b7d2a78958c1b00384ebcbdf13fe340a6c90" url: "https://pub.dev" source: hosted - version: "7.1.1" + version: "7.2.1" matcher: dependency: transitive description: @@ -1218,7 +1218,7 @@ packages: description: path: "." ref: "td/fosdemDemoFork" - resolved-ref: "807bae2a9bda1ae74cf5b62397aa67975acd932f" + resolved-ref: a1d50a5 url: "https://github.com/famedly/matrix-dart-sdk.git" source: git version: "0.25.6" @@ -1226,10 +1226,10 @@ packages: dependency: transitive description: name: matrix_api_lite - sha256: "62bdd1dffb956e956863ba21e52109157502342b749e4728f4105f0c6d73a254" + sha256: "0e92d3402b4cbb8ab9283fd2fbe44147facf6f73de88f5adf0b3123bc5114bc1" url: "https://pub.dev" source: hosted - version: "1.7.2" + version: "1.7.3" meta: dependency: transitive description: From 5c5a8f45f402329a8909c86f521b921e62d12b4b Mon Sep 17 00:00:00 2001 From: td Date: Fri, 2 Feb 2024 16:45:14 +0100 Subject: [PATCH 22/29] chore: bump sdk, dont clear expired events --- .../livekit_group_call_session_state.dart | 2 +- macos/Podfile.lock | 19 ++++++++++++++++++- pubspec.lock | 2 +- pubspec.yaml | 1 - 4 files changed, 20 insertions(+), 4 deletions(-) diff --git a/lib/utils/voip/livekit_group_call_session_state.dart b/lib/utils/voip/livekit_group_call_session_state.dart index 574fe471d1..a3d089fc73 100644 --- a/lib/utils/voip/livekit_group_call_session_state.dart +++ b/lib/utils/voip/livekit_group_call_session_state.dart @@ -129,7 +129,7 @@ class LiveKitGroupCallSessionState implements CallStateProxy { stream: stream, ); } catch (e) { - Logs().e('Failed to get SFU config for group call', e); + Logs().e('Failed to join SFU for group call', e); return; } } diff --git a/macos/Podfile.lock b/macos/Podfile.lock index 221a217551..2cebe7c7df 100644 --- a/macos/Podfile.lock +++ b/macos/Podfile.lock @@ -3,6 +3,9 @@ PODS: - FlutterMacOS - audio_session (0.0.1): - FlutterMacOS + - connectivity_plus (0.0.1): + - FlutterMacOS + - ReachabilitySwift - desktop_drop (0.0.1): - FlutterMacOS - device_info_plus (0.0.1): @@ -34,6 +37,9 @@ PODS: - FlutterMacOS - just_audio (0.0.1): - FlutterMacOS + - livekit_client (1.5.6): + - FlutterMacOS + - WebRTC-SDK (= 114.5735.08) - macos_ui (0.1.0): - FlutterMacOS - macos_window_utils (1.0.0): @@ -45,6 +51,7 @@ PODS: - path_provider_foundation (0.0.1): - Flutter - FlutterMacOS + - ReachabilitySwift (5.0.0) - record_macos (0.2.0): - FlutterMacOS - share_plus (0.0.1): @@ -80,6 +87,7 @@ PODS: DEPENDENCIES: - appkit_ui_element_colors (from `Flutter/ephemeral/.symlinks/plugins/appkit_ui_element_colors/macos`) - audio_session (from `Flutter/ephemeral/.symlinks/plugins/audio_session/macos`) + - connectivity_plus (from `Flutter/ephemeral/.symlinks/plugins/connectivity_plus/macos`) - desktop_drop (from `Flutter/ephemeral/.symlinks/plugins/desktop_drop/macos`) - device_info_plus (from `Flutter/ephemeral/.symlinks/plugins/device_info_plus/macos`) - dynamic_color (from `Flutter/ephemeral/.symlinks/plugins/dynamic_color/macos`) @@ -93,6 +101,7 @@ DEPENDENCIES: - FlutterMacOS (from `Flutter/ephemeral`) - geolocator_apple (from `Flutter/ephemeral/.symlinks/plugins/geolocator_apple/macos`) - just_audio (from `Flutter/ephemeral/.symlinks/plugins/just_audio/macos`) + - livekit_client (from `Flutter/ephemeral/.symlinks/plugins/livekit_client/macos`) - macos_ui (from `Flutter/ephemeral/.symlinks/plugins/macos_ui/macos`) - macos_window_utils (from `Flutter/ephemeral/.symlinks/plugins/macos_window_utils/macos`) - package_info_plus (from `Flutter/ephemeral/.symlinks/plugins/package_info_plus/macos`) @@ -112,6 +121,7 @@ DEPENDENCIES: SPEC REPOS: trunk: - FMDB + - ReachabilitySwift - SQLCipher - WebRTC-SDK @@ -120,6 +130,8 @@ EXTERNAL SOURCES: :path: Flutter/ephemeral/.symlinks/plugins/appkit_ui_element_colors/macos audio_session: :path: Flutter/ephemeral/.symlinks/plugins/audio_session/macos + connectivity_plus: + :path: Flutter/ephemeral/.symlinks/plugins/connectivity_plus/macos desktop_drop: :path: Flutter/ephemeral/.symlinks/plugins/desktop_drop/macos device_info_plus: @@ -146,6 +158,8 @@ EXTERNAL SOURCES: :path: Flutter/ephemeral/.symlinks/plugins/geolocator_apple/macos just_audio: :path: Flutter/ephemeral/.symlinks/plugins/just_audio/macos + livekit_client: + :path: Flutter/ephemeral/.symlinks/plugins/livekit_client/macos macos_ui: :path: Flutter/ephemeral/.symlinks/plugins/macos_ui/macos macos_window_utils: @@ -180,6 +194,7 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: appkit_ui_element_colors: 39bb2d80be3f19b152ccf4c70d5bbe6cba43d74a audio_session: dea1f41890dbf1718f04a56f1d6150fd50039b72 + connectivity_plus: 18d3c32514c886e046de60e9c13895109866c747 desktop_drop: 69eeff437544aa619c8db7f4481b3a65f7696898 device_info_plus: 5401765fde0b8d062a2f8eb65510fb17e77cf07f dynamic_color: 2eaa27267de1ca20d879fbd6e01259773fb1670f @@ -194,11 +209,13 @@ SPEC CHECKSUMS: FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a geolocator_apple: 821be05bbdb1b49500e029ebcbf2d6acf2dfb966 just_audio: 9b67ca7b97c61cfc9784ea23cd8cc55eb226d489 + livekit_client: 741fe5ed70d6de06aed4e5d8423903e422b0ec18 macos_ui: 6229a8922cd97bafb7d9636c8eb8dfb0744183ca macos_window_utils: 933f91f64805e2eb91a5bd057cf97cd097276663 package_info_plus: 02d7a575e80f194102bef286361c6c326e4c29ce pasteboard: 9b69dba6fedbb04866be632205d532fe2f6b1d99 path_provider_foundation: 29f094ae23ebbca9d3d0cec13889cd9060c0e943 + ReachabilitySwift: 985039c6f7b23a1da463388634119492ff86c825 record_macos: 937889e0f2a7a12b6fc14e97a3678e5a18943de6 share_plus: 76dd39142738f7a68dd57b05093b5e8193f220f7 shared_preferences_foundation: 5b919d13b803cadd15ed2dc053125c68730e5126 @@ -214,4 +231,4 @@ SPEC CHECKSUMS: PODFILE CHECKSUM: d0975b16fbdecb73b109d8fbc88aa77ffe4c7a8d -COCOAPODS: 1.14.3 +COCOAPODS: 1.15.0 diff --git a/pubspec.lock b/pubspec.lock index a76bba697c..aa0b642b9f 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1218,7 +1218,7 @@ packages: description: path: "." ref: "td/fosdemDemoFork" - resolved-ref: a1d50a5 + resolved-ref: a41e93d39ed990651f8715be06b4b5fadb13611a url: "https://github.com/famedly/matrix-dart-sdk.git" source: git version: "0.25.6" diff --git a/pubspec.yaml b/pubspec.yaml index 8009fa5fa6..1605dbbbae 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -176,4 +176,3 @@ dependency_overrides: url: https://github.com/chandrabezzo/wakelock.git ref: main path: wakelock_windows/ - From 7fe77ed7f941ab1c33e5bd0dae6b52e60142553e Mon Sep 17 00:00:00 2001 From: td Date: Fri, 2 Feb 2024 17:09:25 +0100 Subject: [PATCH 23/29] fix: ui bug --- .gitignore | 1 + lib/pages/voip/calling_page.dart | 1 + 2 files changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 72a3d7b9e2..b98863b03b 100644 --- a/.gitignore +++ b/.gitignore @@ -67,3 +67,4 @@ web/Imaging.wasm web/olm.js web/olm.wasm web/olm_legacy.js +libolm.3.dylib diff --git a/lib/pages/voip/calling_page.dart b/lib/pages/voip/calling_page.dart index 69fc47acba..60a2d936b5 100644 --- a/lib/pages/voip/calling_page.dart +++ b/lib/pages/voip/calling_page.dart @@ -740,6 +740,7 @@ class CallerId extends StatelessWidget { .textTheme .titleMedium! .copyWith(color: Colors.white), + maxLines: 1, ), CallTimer( voipPlugin: voipPlugin, From 0b45b6914008651d8629634a06f867e4e0a937e2 Mon Sep 17 00:00:00 2001 From: td Date: Sat, 3 Feb 2024 13:11:00 +0100 Subject: [PATCH 24/29] chore: unique id, why is this broken on macos --- .gitignore | 1 + lib/pages/voip/group_call_view/group_call_view.dart | 10 +++++++--- pubspec.lock | 2 +- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index b98863b03b..c6e2902313 100644 --- a/.gitignore +++ b/.gitignore @@ -68,3 +68,4 @@ web/olm.js web/olm.wasm web/olm_legacy.js libolm.3.dylib +libcrypto.1.1.dylib diff --git a/lib/pages/voip/group_call_view/group_call_view.dart b/lib/pages/voip/group_call_view/group_call_view.dart index 1effc240f7..6a6bbc47a4 100644 --- a/lib/pages/voip/group_call_view/group_call_view.dart +++ b/lib/pages/voip/group_call_view/group_call_view.dart @@ -5,6 +5,7 @@ import 'package:matrix/matrix.dart'; import 'package:fluffychat/config/themes.dart'; import 'package:fluffychat/widgets/fluffy_chat_app.dart'; +import 'package:uuid/uuid.dart'; import '../../../utils/voip/call_state_proxy.dart'; import '../widgets/stream_view.dart'; import 'widgets/grid_definitions.dart'; @@ -89,8 +90,9 @@ class GroupCallViewState extends State { final List ptiles = []; for (final stream in getStreamOfTileType(tileType) .where((element) => element.participant == p)) { + final streamUuid = const Uuid().v4().toString(); final tile = InkWell( - key: ValueKey(stream.id), + key: ValueKey(stream.id + streamUuid), onTap: () => togglePinned(stream), child: IgnorePointer( child: SizedBox( @@ -154,6 +156,7 @@ class GroupCallViewState extends State { @override Widget build(BuildContext context) { + final focusedStreamUuid = const Uuid().v4().toString(); Logs().d('[GroupCallView] rebuilding callgrid children'); // groupCall.encryptionKeysMap.forEach((key, value) { @@ -298,13 +301,14 @@ class GroupCallViewState extends State { ), ] .where( - (element) => element.key != ValueKey(focusedStream.id), + (element) => + element.key != ValueKey(focusedStream.id + focusedStreamUuid), ) .toList(); final List tilesWhileScreenSharing = [ InkWell( - key: ValueKey(focusedStream.id), + key: ValueKey(focusedStream.id + focusedStreamUuid), onTap: () => togglePinned(focusedStream), child: IgnorePointer( child: SizedBox( diff --git a/pubspec.lock b/pubspec.lock index aa0b642b9f..8ff15b81df 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1218,7 +1218,7 @@ packages: description: path: "." ref: "td/fosdemDemoFork" - resolved-ref: a41e93d39ed990651f8715be06b4b5fadb13611a + resolved-ref: "9469bb8898125fbed42163d64d276064d07f5db6" url: "https://github.com/famedly/matrix-dart-sdk.git" source: git version: "0.25.6" From c311418718e46590e4b44882b6dab91b730d59f2 Mon Sep 17 00:00:00 2001 From: td Date: Sun, 4 Feb 2024 02:55:25 +0100 Subject: [PATCH 25/29] chore: lock file update? --- .../voip/group_call_view/group_call_view.dart | 2 +- pubspec.lock | 268 +++++++++--------- 2 files changed, 135 insertions(+), 135 deletions(-) diff --git a/lib/pages/voip/group_call_view/group_call_view.dart b/lib/pages/voip/group_call_view/group_call_view.dart index 6a6bbc47a4..e7cb0f7044 100644 --- a/lib/pages/voip/group_call_view/group_call_view.dart +++ b/lib/pages/voip/group_call_view/group_call_view.dart @@ -2,10 +2,10 @@ import 'package:flutter/material.dart'; import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart'; import 'package:matrix/matrix.dart'; +import 'package:uuid/uuid.dart'; import 'package:fluffychat/config/themes.dart'; import 'package:fluffychat/widgets/fluffy_chat_app.dart'; -import 'package:uuid/uuid.dart'; import '../../../utils/voip/call_state_proxy.dart'; import '../widgets/stream_view.dart'; import 'widgets/grid_definitions.dart'; diff --git a/pubspec.lock b/pubspec.lock index 8ff15b81df..d971564391 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -45,10 +45,10 @@ packages: dependency: "direct main" description: name: animations - sha256: ef57563eed3620bd5d75ad96189846aca1e033c0c45fc9a7d26e80ab02b88a70 + sha256: d3d6dcfb218225bbe68e87ccf6378bbb2e32a94900722c5f81611dad089911cb url: "https://pub.dev" source: hosted - version: "2.0.8" + version: "2.0.11" ansicolor: dependency: transitive description: @@ -69,10 +69,10 @@ packages: dependency: "direct main" description: name: archive - sha256: "7b875fd4a20b165a3084bd2d210439b22ebc653f21cea4842729c0c30c82596b" + sha256: "22600aa1e926be775fa5fe7e6894e7fb3df9efda8891c73f70fb3262399a432d" url: "https://pub.dev" source: hosted - version: "3.4.9" + version: "3.4.10" args: dependency: transitive description: @@ -173,18 +173,18 @@ packages: dependency: "direct main" description: name: chewie - sha256: ccfce3350ae9fd419cd336cdf3380f77a08e45171e1e3cb3d499d204de5e7ea8 + sha256: "3427e469d7cc99536ac4fbaa069b3352c21760263e65ffb4f0e1c054af43a73e" url: "https://pub.dev" source: hosted - version: "1.7.1" + version: "1.7.4" cli_util: dependency: transitive description: name: cli_util - sha256: b8db3080e59b2503ca9e7922c3df2072cf13992354d5e944074ffa836fba43b7 + sha256: c05b7406fdabc7a49a3929d4af76bcaccbbffcbcdcf185b082e1ae07da323d19 url: "https://pub.dev" source: hosted - version: "0.4.0" + version: "0.4.1" clock: dependency: transitive description: @@ -237,10 +237,10 @@ packages: dependency: transitive description: name: cross_file - sha256: "2f9d2cbccb76127ba28528cb3ae2c2326a122446a83de5a056aaa3880d3882c5" + sha256: fedaadfa3a6996f75211d835aaeb8fede285dae94262485698afd832371b9a5e url: "https://pub.dev" source: hosted - version: "0.3.3+7" + version: "0.3.3+8" crypto: dependency: transitive description: @@ -341,10 +341,10 @@ packages: dependency: "direct main" description: name: device_info_plus - sha256: "0042cb3b2a76413ea5f8a2b40cec2a33e01d0c937e91f0f7c211fde4f7739ba6" + sha256: "77f757b789ff68e4eaf9c56d1752309bd9f7ad557cb105b938a7f8eb89e59110" url: "https://pub.dev" source: hosted - version: "9.1.1" + version: "9.1.2" device_info_plus_platform_interface: dependency: transitive description: @@ -365,18 +365,18 @@ packages: dependency: "direct main" description: name: dynamic_color - sha256: "8b8bd1d798bd393e11eddeaa8ae95b12ff028bf7d5998fc5d003488cd5f4ce2f" + sha256: a866f1f8947bfdaf674d7928e769eac7230388a2e7a2542824fad4bb5b87be3b url: "https://pub.dev" source: hosted - version: "1.6.8" + version: "1.6.9" emoji_picker_flutter: dependency: "direct main" description: name: emoji_picker_flutter - sha256: "009c51efc763d5a6ba05a5628b8b2184c327cd117d66ea9c3e7edf2ff269c423" + sha256: "8506341d62efd116d6fb1481450bffdbac659d3d90d46d9cc610bfae5f33cc54" url: "https://pub.dev" source: hosted - version: "1.6.3" + version: "1.6.4" emoji_proposal: dependency: "direct main" description: @@ -461,10 +461,10 @@ packages: dependency: transitive description: name: file_selector_platform_interface - sha256: "0aa47a725c346825a2bd396343ce63ac00bda6eff2fbc43eabe99737dede8262" + sha256: a3994c26f10378a039faa11de174d7b78eb8f79e4dd0af2a451410c1a5c3f66b url: "https://pub.dev" source: hosted - version: "2.6.1" + version: "2.6.2" file_selector_windows: dependency: transitive description: @@ -631,10 +631,10 @@ packages: dependency: "direct main" description: name: flutter_local_notifications - sha256: bb5cd63ff7c91d6efe452e41d0d0ae6348925c82eafd10ce170ef585ea04776e + sha256: c18f1de98fe0bb9dd5ba91e1330d4febc8b6a7de6aae3ffe475ef423723e72f3 url: "https://pub.dev" source: hosted - version: "16.2.0" + version: "16.3.2" flutter_local_notifications_linux: dependency: transitive description: @@ -676,10 +676,10 @@ packages: dependency: "direct dev" description: name: flutter_native_splash - sha256: c4d899312b36e7454bedfd0a4740275837b99e532d81c8477579d8183db1de6c + sha256: "558f10070f03ee71f850a78f7136ab239a67636a294a44a06b6b7345178edb1e" url: "https://pub.dev" source: hosted - version: "2.3.6" + version: "2.3.10" flutter_olm: dependency: "direct main" description: @@ -793,18 +793,18 @@ packages: dependency: "direct main" description: name: flutter_web_auth_2 - sha256: ea57000909d0002824179f1e4907c074f39538e86a9e4d93a74b7c37dbaee242 + sha256: "3ea3a0cc539ca74319f4f2f7484f62742fe5b2ff9a0fca37575426d6e6f07901" url: "https://pub.dev" source: hosted - version: "3.0.4" + version: "3.1.1" flutter_web_auth_2_platform_interface: dependency: transitive description: name: flutter_web_auth_2_platform_interface - sha256: "9124824cbd21e12680bf58190e27b77f251c897e80ec81cd557ec1fde9aecabf" + sha256: e8669e262005a8354389ba2971f0fc1c36188481234ff50d013aaf993f30f739 url: "https://pub.dev" source: hosted - version: "3.0.0" + version: "3.1.0" flutter_web_plugins: dependency: transitive description: flutter @@ -875,10 +875,10 @@ packages: dependency: transitive description: name: get_it - sha256: f79870884de16d689cf9a7d15eedf31ed61d750e813c538a6efb92660fea83c3 + sha256: e6017ce7fdeaf218dc51a100344d8cb70134b80e28b760f8bb23c242437bafd7 url: "https://pub.dev" source: hosted - version: "7.6.4" + version: "7.6.7" glob: dependency: transitive description: @@ -891,10 +891,10 @@ packages: dependency: "direct main" description: name: go_router - sha256: c247a4f76071c3b97bb5ae8912968870d5565644801c5e09f3bc961b4d874895 + sha256: c5fa45fa502ee880839e3b2152d987c44abae26d064a2376d4aad434cf0f7b15 url: "https://pub.dev" source: hosted - version: "12.1.1" + version: "12.1.3" gradient_borders: dependency: transitive description: @@ -963,42 +963,42 @@ packages: dependency: transitive description: name: image - sha256: "028f61960d56f26414eb616b48b04eb37d700cbe477b7fb09bf1d7ce57fd9271" + sha256: "49a0d4b0c12402853d3f227fe7c315601b238d126aa4caa5dbb2dcf99421aa4a" url: "https://pub.dev" source: hosted - version: "4.1.3" + version: "4.1.6" image_picker: dependency: "direct main" description: name: image_picker - sha256: "7d7f2768df2a8b0a3cefa5ef4f84636121987d403130e70b17ef7e2cf650ba84" + sha256: "26222b01a0c9a2c8fe02fc90b8208bd3325da5ed1f4a2acabf75939031ac0bdd" url: "https://pub.dev" source: hosted - version: "1.0.4" + version: "1.0.7" image_picker_android: dependency: transitive description: name: image_picker_android - sha256: d6a6e78821086b0b737009b09363018309bbc6de3fd88cc5c26bc2bb44a4957f + sha256: "39f2bfe497e495450c81abcd44b62f56c2a36a37a175da7d137b4454977b51b1" url: "https://pub.dev" source: hosted - version: "0.8.8+2" + version: "0.8.9+3" image_picker_for_web: dependency: transitive description: name: image_picker_for_web - sha256: "50bc9ae6a77eea3a8b11af5eb6c661eeb858fdd2f734c2a4fd17086922347ef7" + sha256: e2423c53a68b579a7c37a1eda967b8ae536c3d98518e5db95ca1fe5719a730a3 url: "https://pub.dev" source: hosted - version: "3.0.1" + version: "3.0.2" image_picker_ios: dependency: transitive description: name: image_picker_ios - sha256: "76ec722aeea419d03aa915c2c96bf5b47214b053899088c9abb4086ceecf97a7" + sha256: fadafce49e8569257a0cad56d24438a6fa1f0cbd7ee0af9b631f7492818a4ca3 url: "https://pub.dev" source: hosted - version: "0.8.8+4" + version: "0.8.9+1" image_picker_linux: dependency: transitive description: @@ -1019,10 +1019,10 @@ packages: dependency: transitive description: name: image_picker_platform_interface - sha256: ed9b00e63977c93b0d2d2b343685bed9c324534ba5abafbb3dfbd6a780b1b514 + sha256: fa4e815e6fcada50e35718727d83ba1c92f1edf95c0b4436554cec301b56233b url: "https://pub.dev" source: hosted - version: "2.9.1" + version: "2.9.3" image_picker_windows: dependency: transitive description: @@ -1177,10 +1177,10 @@ packages: dependency: transitive description: name: macos_ui - sha256: cc499122655c61728185561e9006af4b239f9526f98d7b2cbf42124e9044a0ff + sha256: d351f0bada7e5b0cee8cf394299878a6c04e5cfcd784fa1d40e44299501124d8 url: "https://pub.dev" source: hosted - version: "2.0.2" + version: "2.0.5" macos_window_utils: dependency: transitive description: @@ -1250,18 +1250,18 @@ packages: dependency: transitive description: name: mime - sha256: e4ff8e8564c03f255408decd16e7899da1733852a9110a58fe6d1b817684a63e + sha256: "2e123074287cc9fd6c09de8336dae606d1ddb88d9ac47358826db698c176a1f2" url: "https://pub.dev" source: hosted - version: "1.0.4" + version: "1.0.5" msix: dependency: "direct dev" description: name: msix - sha256: "957d04eee260e4bd15bec1fdb988dfc73718285e201cf89d97ef01ef38e66d4c" + sha256: "519b183d15dc9f9c594f247e2d2339d855cf0eaacc30e19b128e14f3ecc62047" url: "https://pub.dev" source: hosted - version: "3.16.6" + version: "3.16.7" native_imaging: dependency: "direct main" description: @@ -1346,26 +1346,26 @@ packages: dependency: "direct main" description: name: path_provider - sha256: a1aa8aaa2542a6bc57e381f132af822420216c80d4781f7aa085ca3229208aaa + sha256: b27217933eeeba8ff24845c34003b003b2b22151de3c908d0e679e8fe1aa078b url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.2" path_provider_android: dependency: transitive description: name: path_provider_android - sha256: e595b98692943b4881b219f0a9e3945118d3c16bd7e2813f98ec6e532d905f72 + sha256: "477184d672607c0a3bf68fbbf601805f92ef79c82b64b4d6eb318cbca4c48668" url: "https://pub.dev" source: hosted - version: "2.2.1" + version: "2.2.2" path_provider_foundation: dependency: transitive description: name: path_provider_foundation - sha256: "19314d595120f82aca0ba62787d58dde2cc6b5df7d2f0daf72489e38d1b57f2d" + sha256: "5a7999be66e000916500be4f15a3633ebceb8302719b47b9cc49ce924125350f" url: "https://pub.dev" source: hosted - version: "2.3.1" + version: "2.3.2" path_provider_linux: dependency: transitive description: @@ -1378,10 +1378,10 @@ packages: dependency: transitive description: name: path_provider_platform_interface - sha256: "94b1e0dd80970c1ce43d5d4e050a9918fce4f4a775e6142424c30a29a363265c" + sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334" url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.2" path_provider_windows: dependency: transitive description: @@ -1394,58 +1394,58 @@ packages: dependency: "direct main" description: name: permission_handler - sha256: "860c6b871c94c78e202dc69546d4d8fd84bd59faeb36f8fb9888668a53ff4f78" + sha256: "45ff3fbcb99040fde55c528d5e3e6ca29171298a85436274d49c6201002087d6" url: "https://pub.dev" source: hosted - version: "11.1.0" + version: "11.2.0" permission_handler_android: dependency: transitive description: name: permission_handler_android - sha256: "2f1bec180ee2f5665c22faada971a8f024761f632e93ddc23310487df52dcfa6" + sha256: "758284a0976772f9c744d6384fc5dc4834aa61e3f7aa40492927f244767374eb" url: "https://pub.dev" source: hosted - version: "12.0.1" + version: "12.0.3" permission_handler_apple: dependency: transitive description: name: permission_handler_apple - sha256: "1a816084338ada8d574b1cb48390e6e8b19305d5120fe3a37c98825bacc78306" + sha256: c6bf440f80acd2a873d3d91a699e4cc770f86e7e6b576dda98759e8b92b39830 url: "https://pub.dev" source: hosted - version: "9.2.0" + version: "9.3.0" permission_handler_html: dependency: transitive description: name: permission_handler_html - sha256: d96ff56a757b7f04fa825c469d296c5aebc55f743e87bd639fef91a466a24da8 + sha256: "54bf176b90f6eddd4ece307e2c06cf977fb3973719c35a93b85cc7093eb6070d" url: "https://pub.dev" source: hosted - version: "0.1.0+1" + version: "0.1.1" permission_handler_platform_interface: dependency: transitive description: name: permission_handler_platform_interface - sha256: d87349312f7eaf6ce0adaf668daf700ac5b06af84338bd8b8574dfbd93ffe1a1 + sha256: "5c43148f2bfb6d14c5a8162c0a712afe891f2d847f35fcff29c406b37da43c3c" url: "https://pub.dev" source: hosted - version: "4.0.2" + version: "4.1.0" permission_handler_windows: dependency: transitive description: name: permission_handler_windows - sha256: "1e8640c1e39121128da6b816d236e714d2cf17fac5a105dd6acdd3403a628004" + sha256: "1a790728016f79a41216d88672dbc5df30e686e811ad4e698bfc51f76ad91f1e" url: "https://pub.dev" source: hosted - version: "0.2.0" + version: "0.2.1" petitparser: dependency: transitive description: name: petitparser - sha256: eeb2d1428ee7f4170e2bd498827296a18d4e7fc462b71727d111c0ac7707cfa6 + sha256: c15605cd28af66339f8eb6fbe0e541bfe2d1b72d5825efc6598f3e0a31b9ad27 url: "https://pub.dev" source: hosted - version: "6.0.1" + version: "6.0.2" platform: dependency: transitive description: @@ -1466,10 +1466,10 @@ packages: dependency: transitive description: name: plugin_platform_interface - sha256: f4f88d4a900933e7267e2b353594774fc0d07fb072b47eedcd5b54e1ea3269f8 + sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02" url: "https://pub.dev" source: hosted - version: "2.1.7" + version: "2.1.8" pointer_interceptor: dependency: transitive description: @@ -1482,10 +1482,10 @@ packages: dependency: transitive description: name: pointycastle - sha256: "7c1e5f0d23c9016c5bbd8b1473d0d3fb3fc851b876046039509e18e0c7485f2c" + sha256: "43ac87de6e10afabc85c445745a7b799e04de84cebaa4fd7bf55a5e1e9604d29" url: "https://pub.dev" source: hosted - version: "3.7.3" + version: "3.7.4" polylabel: dependency: transitive description: @@ -1602,10 +1602,10 @@ packages: dependency: "direct main" description: name: receive_sharing_intent - sha256: "912bebb551bce75a14098891fd750305b30d53eba0d61cc70cd9973be9866e8d" + sha256: "8fdf5927934041264becf65199ef8057b8b176e879d95ffa0420cd2a6219c0fd" url: "https://pub.dev" source: hosted - version: "1.4.5" + version: "1.6.7" record: dependency: "direct main" description: @@ -1698,10 +1698,10 @@ packages: dependency: "direct main" description: name: share_plus - sha256: f74fc3f1cbd99f39760182e176802f693fa0ec9625c045561cfad54681ea93dd + sha256: "3ef39599b00059db0990ca2e30fca0a29d8b37aae924d60063f8e0184cf20900" url: "https://pub.dev" source: hosted - version: "7.2.1" + version: "7.2.2" share_plus_platform_interface: dependency: transitive description: @@ -1730,10 +1730,10 @@ packages: dependency: transitive description: name: shared_preferences_foundation - sha256: "7bf53a9f2d007329ee6f3df7268fd498f8373602f943c975598bbb34649b62a7" + sha256: "7708d83064f38060c7b39db12aefe449cb8cdc031d6062280087bc4cdb988f5c" url: "https://pub.dev" source: hosted - version: "2.3.4" + version: "2.3.5" shared_preferences_linux: dependency: transitive description: @@ -1746,10 +1746,10 @@ packages: dependency: transitive description: name: shared_preferences_platform_interface - sha256: d4ec5fc9ebb2f2e056c617112aa75dcf92fc2e4faaf2ae999caa297473f75d8a + sha256: "22e2ecac9419b4246d7c22bfbbda589e3acf5c0351137d87dd2939d984d37c3b" url: "https://pub.dev" source: hosted - version: "2.3.1" + version: "2.3.2" shared_preferences_web: dependency: transitive description: @@ -1799,26 +1799,26 @@ packages: dependency: "direct main" description: name: sqflite - sha256: "591f1602816e9c31377d5f008c2d9ef7b8aca8941c3f89cc5fd9d84da0c38a9a" + sha256: a9016f495c927cb90557c909ff26a6d92d9bd54fc42ba92e19d4e79d61e798c6 url: "https://pub.dev" source: hosted - version: "2.3.0" + version: "2.3.2" sqflite_common: dependency: transitive description: name: sqflite_common - sha256: bb4738f15b23352822f4c42a531677e5c6f522e079461fd240ead29d8d8a54a6 + sha256: "28d8c66baee4968519fb8bd6cdbedad982d6e53359091f0b74544a9f32ec72d5" url: "https://pub.dev" source: hosted - version: "2.5.0+2" + version: "2.5.3" sqflite_common_ffi: dependency: "direct main" description: name: sqflite_common_ffi - sha256: "35d2fce1e971707c227cc4775cc017d5eafe06c2654c3435ebd5c3ad6c170f5f" + sha256: "754927d82de369a6b9e760fb60640aa81da650f35ffd468d5a992814d6022908" url: "https://pub.dev" source: hosted - version: "2.3.0+4" + version: "2.3.2+1" sqflite_sqlcipher: dependency: "direct main" description: @@ -1831,10 +1831,10 @@ packages: dependency: transitive description: name: sqlite3 - sha256: db65233e6b99e99b2548932f55a987961bc06d82a31a0665451fa0b4fff4c3fb + sha256: c4a4c5a4b2a32e2d0f6837b33d7c91a67903891a5b7dbe706cf4b1f6b0c798c5 url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.3.0" stack_trace: dependency: transitive description: @@ -1879,10 +1879,10 @@ packages: dependency: transitive description: name: synchronized - sha256: "5fcbd27688af6082f5abd611af56ee575342c30e87541d0245f7ff99faa02c60" + sha256: "539ef412b170d65ecdafd780f924e5be3f60032a1128df156adad6c5b373d558" url: "https://pub.dev" source: hosted - version: "3.1.0" + version: "3.1.0+1" term_glyph: dependency: transitive description: @@ -1991,10 +1991,10 @@ packages: dependency: transitive description: name: unifiedpush_android - sha256: "19fcdd2671c46bd074efbb80c43cedd0bcddd1fc0cfd3e2f74aec03fb0659d58" + sha256: "610ad746294541f56d632adf9afba5d1c164c44e23ec0dd2162a41a6ff00a00e" url: "https://pub.dev" source: hosted - version: "2.2.0" + version: "2.2.3" unifiedpush_platform_interface: dependency: transitive description: @@ -2031,34 +2031,34 @@ packages: dependency: "direct main" description: name: url_launcher - sha256: b1c9e98774adf8820c96fbc7ae3601231d324a7d5ebd8babe27b6dfac91357ba + sha256: c512655380d241a337521703af62d2c122bf7b77a46ff7dd750092aa9433499c url: "https://pub.dev" source: hosted - version: "6.2.1" + version: "6.2.4" url_launcher_android: dependency: transitive description: name: url_launcher_android - sha256: "31222ffb0063171b526d3e569079cf1f8b294075ba323443fdc690842bfd4def" + sha256: "507dc655b1d9cb5ebc756032eb785f114e415f91557b73bf60b7e201dfedeb2f" url: "https://pub.dev" source: hosted - version: "6.2.0" + version: "6.2.2" url_launcher_ios: dependency: transitive description: name: url_launcher_ios - sha256: bba3373219b7abb6b5e0d071b0fe66dfbe005d07517a68e38d4fc3638f35c6d3 + sha256: "75bb6fe3f60070407704282a2d295630cab232991eb52542b18347a8a941df03" url: "https://pub.dev" source: hosted - version: "6.2.1" + version: "6.2.4" url_launcher_linux: dependency: transitive description: name: url_launcher_linux - sha256: "9f2d390e096fdbe1e6e6256f97851e51afc2d9c423d3432f1d6a02a8a9a8b9fd" + sha256: ab360eb661f8879369acac07b6bb3ff09d9471155357da8443fd5d3cf7363811 url: "https://pub.dev" source: hosted - version: "3.1.0" + version: "3.1.1" url_launcher_macos: dependency: transitive description: @@ -2071,26 +2071,26 @@ packages: dependency: transitive description: name: url_launcher_platform_interface - sha256: "980e8d9af422f477be6948bdfb68df8433be71f5743a188968b0c1b887807e50" + sha256: a932c3a8082e118f80a475ce692fde89dc20fddb24c57360b96bc56f7035de1f url: "https://pub.dev" source: hosted - version: "2.2.0" + version: "2.3.1" url_launcher_web: dependency: transitive description: name: url_launcher_web - sha256: "138bd45b3a456dcfafc46d1a146787424f8d2edfbf2809c9324361e58f851cf7" + sha256: fff0932192afeedf63cdd50ecbb1bc825d31aed259f02bb8dba0f3b729a5e88b url: "https://pub.dev" source: hosted - version: "2.2.1" + version: "2.2.3" url_launcher_windows: dependency: transitive description: name: url_launcher_windows - sha256: "7754a1ad30ee896b265f8d14078b0513a4dba28d358eabb9d5f339886f4a1adc" + sha256: ecf9725510600aa2bb6d7ddabe16357691b6d2805f66216a97d1b881e21beff7 url: "https://pub.dev" source: hosted - version: "3.1.0" + version: "3.1.1" uuid: dependency: "direct main" description: @@ -2103,26 +2103,26 @@ packages: dependency: transitive description: name: vector_graphics - sha256: "0f0c746dd2d6254a0057218ff980fc7f5670fd0fcf5e4db38a490d31eed4ad43" + sha256: "18f6690295af52d081f6808f2f7c69f0eed6d7e23a71539d75f4aeb8f0062172" url: "https://pub.dev" source: hosted - version: "1.1.9+1" + version: "1.1.9+2" vector_graphics_codec: dependency: transitive description: name: vector_graphics_codec - sha256: "0edf6d630d1bfd5589114138ed8fada3234deacc37966bec033d3047c29248b7" + sha256: "531d20465c10dfac7f5cd90b60bbe4dd9921f1ec4ca54c83ebb176dbacb7bb2d" url: "https://pub.dev" source: hosted - version: "1.1.9+1" + version: "1.1.9+2" vector_graphics_compiler: dependency: transitive description: name: vector_graphics_compiler - sha256: d24333727332d9bd20990f1483af4e09abdb9b1fc7c3db940b56ab5c42790c26 + sha256: "03012b0a33775c5530576b70240308080e1d5050f0faf000118c20e6463bc0ad" url: "https://pub.dev" source: hosted - version: "1.1.9+1" + version: "1.1.9+2" vector_math: dependency: transitive description: @@ -2135,10 +2135,10 @@ packages: dependency: "direct main" description: name: vibration - sha256: "63d4f6b03e38d106599da18e786d5edcd02354433a4ed478fccbbcfc347193ab" + sha256: "778ace40e84852e6cf6017cdbaf6790a837d73ff3dd50b27da9ac232a19de8fc" url: "https://pub.dev" source: hosted - version: "1.8.3" + version: "1.8.4" video_compress: dependency: "direct main" description: @@ -2151,42 +2151,42 @@ packages: dependency: "direct main" description: name: video_player - sha256: e16f0a83601a78d165dabc17e4dac50997604eb9e4cc76e10fa219046b70cef3 + sha256: fbf28ce8bcfe709ad91b5789166c832cb7a684d14f571a81891858fefb5bb1c2 url: "https://pub.dev" source: hosted - version: "2.8.1" + version: "2.8.2" video_player_android: dependency: transitive description: name: video_player_android - sha256: "3fe89ab07fdbce786e7eb25b58532d6eaf189ceddc091cb66cba712f8d9e8e55" + sha256: "7f8f25d7ad56819a82b2948357f3c3af071f6a678db33833b26ec36bbc221316" url: "https://pub.dev" source: hosted - version: "2.4.10" + version: "2.4.11" video_player_avfoundation: dependency: transitive description: name: video_player_avfoundation - sha256: bc923884640d6dc403050586eb40713cdb8d1d84e6886d8aca50ab04c59124c2 + sha256: "309e3962795e761be010869bae65c0b0e45b5230c5cee1bec72197ca7db040ed" url: "https://pub.dev" source: hosted - version: "2.5.2" + version: "2.5.6" video_player_platform_interface: dependency: transitive description: name: video_player_platform_interface - sha256: be72301bf2c0150ab35a8c34d66e5a99de525f6de1e8d27c0672b836fe48f73a + sha256: "236454725fafcacf98f0f39af0d7c7ab2ce84762e3b63f2cbb3ef9a7e0550bc6" url: "https://pub.dev" source: hosted - version: "6.2.1" + version: "6.2.2" video_player_web: dependency: transitive description: name: video_player_web - sha256: ab7a462b07d9ca80bed579e30fb3bce372468f1b78642e0911b10600f2c5cb5b + sha256: "34beb3a07d4331a24f7e7b2f75b8e2b103289038e07e65529699a671b6a6e2cb" url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.1.3" visibility_detector: dependency: transitive description: @@ -2215,10 +2215,10 @@ packages: dependency: "direct main" description: name: wakelock_plus - sha256: f45a6c03aa3f8322e0a9d7f4a0482721c8789cb41d555407367650b8f9c26018 + sha256: f268ca2116db22e57577fb99d52515a24bdc1d570f12ac18bb762361d43b043d url: "https://pub.dev" source: hosted - version: "1.1.3" + version: "1.1.4" wakelock_plus_platform_interface: dependency: transitive description: @@ -2272,10 +2272,10 @@ packages: dependency: transitive description: name: win32 - sha256: "7c99c0e1e2fa190b48d25c81ca5e42036d5cac81430ef249027d97b0935c553f" + sha256: "464f5674532865248444b4c3daca12bd9bf2d7c47f759ce2617986e7229494a8" url: "https://pub.dev" source: hosted - version: "5.1.0" + version: "5.2.0" win32_registry: dependency: transitive description: @@ -2304,18 +2304,18 @@ packages: dependency: transitive description: name: xdg_directories - sha256: "589ada45ba9e39405c198fe34eb0f607cddb2108527e658136120892beac46d2" + sha256: faea9dee56b520b55a566385b84f2e8de55e7496104adada9962e0bd11bcff1d url: "https://pub.dev" source: hosted - version: "1.0.3" + version: "1.0.4" xml: dependency: transitive description: name: xml - sha256: af5e77e9b83f2f4adc5d3f0a4ece1c7f45a2467b695c2540381bac793e34e556 + sha256: b015a8ad1c488f66851d762d3090a21c600e479dc75e68328c52774040cf9226 url: "https://pub.dev" source: hosted - version: "6.4.2" + version: "6.5.0" yaml: dependency: transitive description: From 8ec4de911fb2f513c3c5a011b50e12ffbfef9b4e Mon Sep 17 00:00:00 2001 From: td Date: Sun, 4 Feb 2024 03:00:36 +0100 Subject: [PATCH 26/29] chore: bump sdk --- pubspec.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pubspec.lock b/pubspec.lock index d971564391..b105bc55ee 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1218,7 +1218,7 @@ packages: description: path: "." ref: "td/fosdemDemoFork" - resolved-ref: "9469bb8898125fbed42163d64d276064d07f5db6" + resolved-ref: bee59c1508caac8189fa47f38fd15991e286010b url: "https://github.com/famedly/matrix-dart-sdk.git" source: git version: "0.25.6" From 6e09421891ba4555261b77bffd8bfcc634ba63ce Mon Sep 17 00:00:00 2001 From: td Date: Sun, 4 Feb 2024 03:03:49 +0100 Subject: [PATCH 27/29] chore: deps --- scripts/prepare-web.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/prepare-web.sh b/scripts/prepare-web.sh index f6b6f2df15..d8adceb77f 100755 --- a/scripts/prepare-web.sh +++ b/scripts/prepare-web.sh @@ -33,4 +33,5 @@ git clone https://github.com/flutter-webrtc/dart-webrtc.git -b e2ee/improvements cd dart-webrtc dart pub get dart compile js lib/src/e2ee.worker/e2ee.worker.dart -o ../e2ee.worker.dart.js -m -cd .. && rm -rf dart-webrtc \ No newline at end of file +cd .. && rm -rf dart-webrtc && cd .. +flutter pub get \ No newline at end of file From d9837088096fbb52f462b8bfbc2139e2679e5457 Mon Sep 17 00:00:00 2001 From: td Date: Sun, 4 Feb 2024 03:08:21 +0100 Subject: [PATCH 28/29] chore: sdk --- pubspec.lock | 272 +++++++++++++++++++++++++-------------------------- 1 file changed, 136 insertions(+), 136 deletions(-) diff --git a/pubspec.lock b/pubspec.lock index b105bc55ee..943b9c4f33 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -45,10 +45,10 @@ packages: dependency: "direct main" description: name: animations - sha256: d3d6dcfb218225bbe68e87ccf6378bbb2e32a94900722c5f81611dad089911cb + sha256: ef57563eed3620bd5d75ad96189846aca1e033c0c45fc9a7d26e80ab02b88a70 url: "https://pub.dev" source: hosted - version: "2.0.11" + version: "2.0.8" ansicolor: dependency: transitive description: @@ -69,10 +69,10 @@ packages: dependency: "direct main" description: name: archive - sha256: "22600aa1e926be775fa5fe7e6894e7fb3df9efda8891c73f70fb3262399a432d" + sha256: "7b875fd4a20b165a3084bd2d210439b22ebc653f21cea4842729c0c30c82596b" url: "https://pub.dev" source: hosted - version: "3.4.10" + version: "3.4.9" args: dependency: transitive description: @@ -173,18 +173,18 @@ packages: dependency: "direct main" description: name: chewie - sha256: "3427e469d7cc99536ac4fbaa069b3352c21760263e65ffb4f0e1c054af43a73e" + sha256: ccfce3350ae9fd419cd336cdf3380f77a08e45171e1e3cb3d499d204de5e7ea8 url: "https://pub.dev" source: hosted - version: "1.7.4" + version: "1.7.1" cli_util: dependency: transitive description: name: cli_util - sha256: c05b7406fdabc7a49a3929d4af76bcaccbbffcbcdcf185b082e1ae07da323d19 + sha256: b8db3080e59b2503ca9e7922c3df2072cf13992354d5e944074ffa836fba43b7 url: "https://pub.dev" source: hosted - version: "0.4.1" + version: "0.4.0" clock: dependency: transitive description: @@ -237,10 +237,10 @@ packages: dependency: transitive description: name: cross_file - sha256: fedaadfa3a6996f75211d835aaeb8fede285dae94262485698afd832371b9a5e + sha256: "2f9d2cbccb76127ba28528cb3ae2c2326a122446a83de5a056aaa3880d3882c5" url: "https://pub.dev" source: hosted - version: "0.3.3+8" + version: "0.3.3+7" crypto: dependency: transitive description: @@ -341,10 +341,10 @@ packages: dependency: "direct main" description: name: device_info_plus - sha256: "77f757b789ff68e4eaf9c56d1752309bd9f7ad557cb105b938a7f8eb89e59110" + sha256: "0042cb3b2a76413ea5f8a2b40cec2a33e01d0c937e91f0f7c211fde4f7739ba6" url: "https://pub.dev" source: hosted - version: "9.1.2" + version: "9.1.1" device_info_plus_platform_interface: dependency: transitive description: @@ -365,18 +365,18 @@ packages: dependency: "direct main" description: name: dynamic_color - sha256: a866f1f8947bfdaf674d7928e769eac7230388a2e7a2542824fad4bb5b87be3b + sha256: "8b8bd1d798bd393e11eddeaa8ae95b12ff028bf7d5998fc5d003488cd5f4ce2f" url: "https://pub.dev" source: hosted - version: "1.6.9" + version: "1.6.8" emoji_picker_flutter: dependency: "direct main" description: name: emoji_picker_flutter - sha256: "8506341d62efd116d6fb1481450bffdbac659d3d90d46d9cc610bfae5f33cc54" + sha256: "009c51efc763d5a6ba05a5628b8b2184c327cd117d66ea9c3e7edf2ff269c423" url: "https://pub.dev" source: hosted - version: "1.6.4" + version: "1.6.3" emoji_proposal: dependency: "direct main" description: @@ -461,10 +461,10 @@ packages: dependency: transitive description: name: file_selector_platform_interface - sha256: a3994c26f10378a039faa11de174d7b78eb8f79e4dd0af2a451410c1a5c3f66b + sha256: "0aa47a725c346825a2bd396343ce63ac00bda6eff2fbc43eabe99737dede8262" url: "https://pub.dev" source: hosted - version: "2.6.2" + version: "2.6.1" file_selector_windows: dependency: transitive description: @@ -631,10 +631,10 @@ packages: dependency: "direct main" description: name: flutter_local_notifications - sha256: c18f1de98fe0bb9dd5ba91e1330d4febc8b6a7de6aae3ffe475ef423723e72f3 + sha256: bb5cd63ff7c91d6efe452e41d0d0ae6348925c82eafd10ce170ef585ea04776e url: "https://pub.dev" source: hosted - version: "16.3.2" + version: "16.2.0" flutter_local_notifications_linux: dependency: transitive description: @@ -676,10 +676,10 @@ packages: dependency: "direct dev" description: name: flutter_native_splash - sha256: "558f10070f03ee71f850a78f7136ab239a67636a294a44a06b6b7345178edb1e" + sha256: c4d899312b36e7454bedfd0a4740275837b99e532d81c8477579d8183db1de6c url: "https://pub.dev" source: hosted - version: "2.3.10" + version: "2.3.6" flutter_olm: dependency: "direct main" description: @@ -793,18 +793,18 @@ packages: dependency: "direct main" description: name: flutter_web_auth_2 - sha256: "3ea3a0cc539ca74319f4f2f7484f62742fe5b2ff9a0fca37575426d6e6f07901" + sha256: ea57000909d0002824179f1e4907c074f39538e86a9e4d93a74b7c37dbaee242 url: "https://pub.dev" source: hosted - version: "3.1.1" + version: "3.0.4" flutter_web_auth_2_platform_interface: dependency: transitive description: name: flutter_web_auth_2_platform_interface - sha256: e8669e262005a8354389ba2971f0fc1c36188481234ff50d013aaf993f30f739 + sha256: "9124824cbd21e12680bf58190e27b77f251c897e80ec81cd557ec1fde9aecabf" url: "https://pub.dev" source: hosted - version: "3.1.0" + version: "3.0.0" flutter_web_plugins: dependency: transitive description: flutter @@ -875,10 +875,10 @@ packages: dependency: transitive description: name: get_it - sha256: e6017ce7fdeaf218dc51a100344d8cb70134b80e28b760f8bb23c242437bafd7 + sha256: f79870884de16d689cf9a7d15eedf31ed61d750e813c538a6efb92660fea83c3 url: "https://pub.dev" source: hosted - version: "7.6.7" + version: "7.6.4" glob: dependency: transitive description: @@ -891,10 +891,10 @@ packages: dependency: "direct main" description: name: go_router - sha256: c5fa45fa502ee880839e3b2152d987c44abae26d064a2376d4aad434cf0f7b15 + sha256: c247a4f76071c3b97bb5ae8912968870d5565644801c5e09f3bc961b4d874895 url: "https://pub.dev" source: hosted - version: "12.1.3" + version: "12.1.1" gradient_borders: dependency: transitive description: @@ -963,42 +963,42 @@ packages: dependency: transitive description: name: image - sha256: "49a0d4b0c12402853d3f227fe7c315601b238d126aa4caa5dbb2dcf99421aa4a" + sha256: "028f61960d56f26414eb616b48b04eb37d700cbe477b7fb09bf1d7ce57fd9271" url: "https://pub.dev" source: hosted - version: "4.1.6" + version: "4.1.3" image_picker: dependency: "direct main" description: name: image_picker - sha256: "26222b01a0c9a2c8fe02fc90b8208bd3325da5ed1f4a2acabf75939031ac0bdd" + sha256: "7d7f2768df2a8b0a3cefa5ef4f84636121987d403130e70b17ef7e2cf650ba84" url: "https://pub.dev" source: hosted - version: "1.0.7" + version: "1.0.4" image_picker_android: dependency: transitive description: name: image_picker_android - sha256: "39f2bfe497e495450c81abcd44b62f56c2a36a37a175da7d137b4454977b51b1" + sha256: d6a6e78821086b0b737009b09363018309bbc6de3fd88cc5c26bc2bb44a4957f url: "https://pub.dev" source: hosted - version: "0.8.9+3" + version: "0.8.8+2" image_picker_for_web: dependency: transitive description: name: image_picker_for_web - sha256: e2423c53a68b579a7c37a1eda967b8ae536c3d98518e5db95ca1fe5719a730a3 + sha256: "50bc9ae6a77eea3a8b11af5eb6c661eeb858fdd2f734c2a4fd17086922347ef7" url: "https://pub.dev" source: hosted - version: "3.0.2" + version: "3.0.1" image_picker_ios: dependency: transitive description: name: image_picker_ios - sha256: fadafce49e8569257a0cad56d24438a6fa1f0cbd7ee0af9b631f7492818a4ca3 + sha256: "76ec722aeea419d03aa915c2c96bf5b47214b053899088c9abb4086ceecf97a7" url: "https://pub.dev" source: hosted - version: "0.8.9+1" + version: "0.8.8+4" image_picker_linux: dependency: transitive description: @@ -1019,10 +1019,10 @@ packages: dependency: transitive description: name: image_picker_platform_interface - sha256: fa4e815e6fcada50e35718727d83ba1c92f1edf95c0b4436554cec301b56233b + sha256: ed9b00e63977c93b0d2d2b343685bed9c324534ba5abafbb3dfbd6a780b1b514 url: "https://pub.dev" source: hosted - version: "2.9.3" + version: "2.9.1" image_picker_windows: dependency: transitive description: @@ -1177,10 +1177,10 @@ packages: dependency: transitive description: name: macos_ui - sha256: d351f0bada7e5b0cee8cf394299878a6c04e5cfcd784fa1d40e44299501124d8 + sha256: cc499122655c61728185561e9006af4b239f9526f98d7b2cbf42124e9044a0ff url: "https://pub.dev" source: hosted - version: "2.0.5" + version: "2.0.2" macos_window_utils: dependency: transitive description: @@ -1193,10 +1193,10 @@ packages: dependency: transitive description: name: markdown - sha256: "1b134d9f8ff2da15cb298efe6cd8b7d2a78958c1b00384ebcbdf13fe340a6c90" + sha256: acf35edccc0463a9d7384e437c015a3535772e09714cf60e07eeef3a15870dcd url: "https://pub.dev" source: hosted - version: "7.2.1" + version: "7.1.1" matcher: dependency: transitive description: @@ -1250,18 +1250,18 @@ packages: dependency: transitive description: name: mime - sha256: "2e123074287cc9fd6c09de8336dae606d1ddb88d9ac47358826db698c176a1f2" + sha256: e4ff8e8564c03f255408decd16e7899da1733852a9110a58fe6d1b817684a63e url: "https://pub.dev" source: hosted - version: "1.0.5" + version: "1.0.4" msix: dependency: "direct dev" description: name: msix - sha256: "519b183d15dc9f9c594f247e2d2339d855cf0eaacc30e19b128e14f3ecc62047" + sha256: "957d04eee260e4bd15bec1fdb988dfc73718285e201cf89d97ef01ef38e66d4c" url: "https://pub.dev" source: hosted - version: "3.16.7" + version: "3.16.6" native_imaging: dependency: "direct main" description: @@ -1346,26 +1346,26 @@ packages: dependency: "direct main" description: name: path_provider - sha256: b27217933eeeba8ff24845c34003b003b2b22151de3c908d0e679e8fe1aa078b + sha256: a1aa8aaa2542a6bc57e381f132af822420216c80d4781f7aa085ca3229208aaa url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.1.1" path_provider_android: dependency: transitive description: name: path_provider_android - sha256: "477184d672607c0a3bf68fbbf601805f92ef79c82b64b4d6eb318cbca4c48668" + sha256: e595b98692943b4881b219f0a9e3945118d3c16bd7e2813f98ec6e532d905f72 url: "https://pub.dev" source: hosted - version: "2.2.2" + version: "2.2.1" path_provider_foundation: dependency: transitive description: name: path_provider_foundation - sha256: "5a7999be66e000916500be4f15a3633ebceb8302719b47b9cc49ce924125350f" + sha256: "19314d595120f82aca0ba62787d58dde2cc6b5df7d2f0daf72489e38d1b57f2d" url: "https://pub.dev" source: hosted - version: "2.3.2" + version: "2.3.1" path_provider_linux: dependency: transitive description: @@ -1378,10 +1378,10 @@ packages: dependency: transitive description: name: path_provider_platform_interface - sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334" + sha256: "94b1e0dd80970c1ce43d5d4e050a9918fce4f4a775e6142424c30a29a363265c" url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.1.1" path_provider_windows: dependency: transitive description: @@ -1394,58 +1394,58 @@ packages: dependency: "direct main" description: name: permission_handler - sha256: "45ff3fbcb99040fde55c528d5e3e6ca29171298a85436274d49c6201002087d6" + sha256: "860c6b871c94c78e202dc69546d4d8fd84bd59faeb36f8fb9888668a53ff4f78" url: "https://pub.dev" source: hosted - version: "11.2.0" + version: "11.1.0" permission_handler_android: dependency: transitive description: name: permission_handler_android - sha256: "758284a0976772f9c744d6384fc5dc4834aa61e3f7aa40492927f244767374eb" + sha256: "2f1bec180ee2f5665c22faada971a8f024761f632e93ddc23310487df52dcfa6" url: "https://pub.dev" source: hosted - version: "12.0.3" + version: "12.0.1" permission_handler_apple: dependency: transitive description: name: permission_handler_apple - sha256: c6bf440f80acd2a873d3d91a699e4cc770f86e7e6b576dda98759e8b92b39830 + sha256: "1a816084338ada8d574b1cb48390e6e8b19305d5120fe3a37c98825bacc78306" url: "https://pub.dev" source: hosted - version: "9.3.0" + version: "9.2.0" permission_handler_html: dependency: transitive description: name: permission_handler_html - sha256: "54bf176b90f6eddd4ece307e2c06cf977fb3973719c35a93b85cc7093eb6070d" + sha256: d96ff56a757b7f04fa825c469d296c5aebc55f743e87bd639fef91a466a24da8 url: "https://pub.dev" source: hosted - version: "0.1.1" + version: "0.1.0+1" permission_handler_platform_interface: dependency: transitive description: name: permission_handler_platform_interface - sha256: "5c43148f2bfb6d14c5a8162c0a712afe891f2d847f35fcff29c406b37da43c3c" + sha256: d87349312f7eaf6ce0adaf668daf700ac5b06af84338bd8b8574dfbd93ffe1a1 url: "https://pub.dev" source: hosted - version: "4.1.0" + version: "4.0.2" permission_handler_windows: dependency: transitive description: name: permission_handler_windows - sha256: "1a790728016f79a41216d88672dbc5df30e686e811ad4e698bfc51f76ad91f1e" + sha256: "1e8640c1e39121128da6b816d236e714d2cf17fac5a105dd6acdd3403a628004" url: "https://pub.dev" source: hosted - version: "0.2.1" + version: "0.2.0" petitparser: dependency: transitive description: name: petitparser - sha256: c15605cd28af66339f8eb6fbe0e541bfe2d1b72d5825efc6598f3e0a31b9ad27 + sha256: eeb2d1428ee7f4170e2bd498827296a18d4e7fc462b71727d111c0ac7707cfa6 url: "https://pub.dev" source: hosted - version: "6.0.2" + version: "6.0.1" platform: dependency: transitive description: @@ -1466,10 +1466,10 @@ packages: dependency: transitive description: name: plugin_platform_interface - sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02" + sha256: f4f88d4a900933e7267e2b353594774fc0d07fb072b47eedcd5b54e1ea3269f8 url: "https://pub.dev" source: hosted - version: "2.1.8" + version: "2.1.7" pointer_interceptor: dependency: transitive description: @@ -1482,10 +1482,10 @@ packages: dependency: transitive description: name: pointycastle - sha256: "43ac87de6e10afabc85c445745a7b799e04de84cebaa4fd7bf55a5e1e9604d29" + sha256: "7c1e5f0d23c9016c5bbd8b1473d0d3fb3fc851b876046039509e18e0c7485f2c" url: "https://pub.dev" source: hosted - version: "3.7.4" + version: "3.7.3" polylabel: dependency: transitive description: @@ -1602,10 +1602,10 @@ packages: dependency: "direct main" description: name: receive_sharing_intent - sha256: "8fdf5927934041264becf65199ef8057b8b176e879d95ffa0420cd2a6219c0fd" + sha256: "912bebb551bce75a14098891fd750305b30d53eba0d61cc70cd9973be9866e8d" url: "https://pub.dev" source: hosted - version: "1.6.7" + version: "1.4.5" record: dependency: "direct main" description: @@ -1698,10 +1698,10 @@ packages: dependency: "direct main" description: name: share_plus - sha256: "3ef39599b00059db0990ca2e30fca0a29d8b37aae924d60063f8e0184cf20900" + sha256: f74fc3f1cbd99f39760182e176802f693fa0ec9625c045561cfad54681ea93dd url: "https://pub.dev" source: hosted - version: "7.2.2" + version: "7.2.1" share_plus_platform_interface: dependency: transitive description: @@ -1730,10 +1730,10 @@ packages: dependency: transitive description: name: shared_preferences_foundation - sha256: "7708d83064f38060c7b39db12aefe449cb8cdc031d6062280087bc4cdb988f5c" + sha256: "7bf53a9f2d007329ee6f3df7268fd498f8373602f943c975598bbb34649b62a7" url: "https://pub.dev" source: hosted - version: "2.3.5" + version: "2.3.4" shared_preferences_linux: dependency: transitive description: @@ -1746,10 +1746,10 @@ packages: dependency: transitive description: name: shared_preferences_platform_interface - sha256: "22e2ecac9419b4246d7c22bfbbda589e3acf5c0351137d87dd2939d984d37c3b" + sha256: d4ec5fc9ebb2f2e056c617112aa75dcf92fc2e4faaf2ae999caa297473f75d8a url: "https://pub.dev" source: hosted - version: "2.3.2" + version: "2.3.1" shared_preferences_web: dependency: transitive description: @@ -1799,26 +1799,26 @@ packages: dependency: "direct main" description: name: sqflite - sha256: a9016f495c927cb90557c909ff26a6d92d9bd54fc42ba92e19d4e79d61e798c6 + sha256: "591f1602816e9c31377d5f008c2d9ef7b8aca8941c3f89cc5fd9d84da0c38a9a" url: "https://pub.dev" source: hosted - version: "2.3.2" + version: "2.3.0" sqflite_common: dependency: transitive description: name: sqflite_common - sha256: "28d8c66baee4968519fb8bd6cdbedad982d6e53359091f0b74544a9f32ec72d5" + sha256: bb4738f15b23352822f4c42a531677e5c6f522e079461fd240ead29d8d8a54a6 url: "https://pub.dev" source: hosted - version: "2.5.3" + version: "2.5.0+2" sqflite_common_ffi: dependency: "direct main" description: name: sqflite_common_ffi - sha256: "754927d82de369a6b9e760fb60640aa81da650f35ffd468d5a992814d6022908" + sha256: "35d2fce1e971707c227cc4775cc017d5eafe06c2654c3435ebd5c3ad6c170f5f" url: "https://pub.dev" source: hosted - version: "2.3.2+1" + version: "2.3.0+4" sqflite_sqlcipher: dependency: "direct main" description: @@ -1831,10 +1831,10 @@ packages: dependency: transitive description: name: sqlite3 - sha256: c4a4c5a4b2a32e2d0f6837b33d7c91a67903891a5b7dbe706cf4b1f6b0c798c5 + sha256: db65233e6b99e99b2548932f55a987961bc06d82a31a0665451fa0b4fff4c3fb url: "https://pub.dev" source: hosted - version: "2.3.0" + version: "2.1.0" stack_trace: dependency: transitive description: @@ -1879,10 +1879,10 @@ packages: dependency: transitive description: name: synchronized - sha256: "539ef412b170d65ecdafd780f924e5be3f60032a1128df156adad6c5b373d558" + sha256: "5fcbd27688af6082f5abd611af56ee575342c30e87541d0245f7ff99faa02c60" url: "https://pub.dev" source: hosted - version: "3.1.0+1" + version: "3.1.0" term_glyph: dependency: transitive description: @@ -1991,10 +1991,10 @@ packages: dependency: transitive description: name: unifiedpush_android - sha256: "610ad746294541f56d632adf9afba5d1c164c44e23ec0dd2162a41a6ff00a00e" + sha256: "19fcdd2671c46bd074efbb80c43cedd0bcddd1fc0cfd3e2f74aec03fb0659d58" url: "https://pub.dev" source: hosted - version: "2.2.3" + version: "2.2.0" unifiedpush_platform_interface: dependency: transitive description: @@ -2031,34 +2031,34 @@ packages: dependency: "direct main" description: name: url_launcher - sha256: c512655380d241a337521703af62d2c122bf7b77a46ff7dd750092aa9433499c + sha256: b1c9e98774adf8820c96fbc7ae3601231d324a7d5ebd8babe27b6dfac91357ba url: "https://pub.dev" source: hosted - version: "6.2.4" + version: "6.2.1" url_launcher_android: dependency: transitive description: name: url_launcher_android - sha256: "507dc655b1d9cb5ebc756032eb785f114e415f91557b73bf60b7e201dfedeb2f" + sha256: "31222ffb0063171b526d3e569079cf1f8b294075ba323443fdc690842bfd4def" url: "https://pub.dev" source: hosted - version: "6.2.2" + version: "6.2.0" url_launcher_ios: dependency: transitive description: name: url_launcher_ios - sha256: "75bb6fe3f60070407704282a2d295630cab232991eb52542b18347a8a941df03" + sha256: bba3373219b7abb6b5e0d071b0fe66dfbe005d07517a68e38d4fc3638f35c6d3 url: "https://pub.dev" source: hosted - version: "6.2.4" + version: "6.2.1" url_launcher_linux: dependency: transitive description: name: url_launcher_linux - sha256: ab360eb661f8879369acac07b6bb3ff09d9471155357da8443fd5d3cf7363811 + sha256: "9f2d390e096fdbe1e6e6256f97851e51afc2d9c423d3432f1d6a02a8a9a8b9fd" url: "https://pub.dev" source: hosted - version: "3.1.1" + version: "3.1.0" url_launcher_macos: dependency: transitive description: @@ -2071,26 +2071,26 @@ packages: dependency: transitive description: name: url_launcher_platform_interface - sha256: a932c3a8082e118f80a475ce692fde89dc20fddb24c57360b96bc56f7035de1f + sha256: "980e8d9af422f477be6948bdfb68df8433be71f5743a188968b0c1b887807e50" url: "https://pub.dev" source: hosted - version: "2.3.1" + version: "2.2.0" url_launcher_web: dependency: transitive description: name: url_launcher_web - sha256: fff0932192afeedf63cdd50ecbb1bc825d31aed259f02bb8dba0f3b729a5e88b + sha256: "138bd45b3a456dcfafc46d1a146787424f8d2edfbf2809c9324361e58f851cf7" url: "https://pub.dev" source: hosted - version: "2.2.3" + version: "2.2.1" url_launcher_windows: dependency: transitive description: name: url_launcher_windows - sha256: ecf9725510600aa2bb6d7ddabe16357691b6d2805f66216a97d1b881e21beff7 + sha256: "7754a1ad30ee896b265f8d14078b0513a4dba28d358eabb9d5f339886f4a1adc" url: "https://pub.dev" source: hosted - version: "3.1.1" + version: "3.1.0" uuid: dependency: "direct main" description: @@ -2103,26 +2103,26 @@ packages: dependency: transitive description: name: vector_graphics - sha256: "18f6690295af52d081f6808f2f7c69f0eed6d7e23a71539d75f4aeb8f0062172" + sha256: "0f0c746dd2d6254a0057218ff980fc7f5670fd0fcf5e4db38a490d31eed4ad43" url: "https://pub.dev" source: hosted - version: "1.1.9+2" + version: "1.1.9+1" vector_graphics_codec: dependency: transitive description: name: vector_graphics_codec - sha256: "531d20465c10dfac7f5cd90b60bbe4dd9921f1ec4ca54c83ebb176dbacb7bb2d" + sha256: "0edf6d630d1bfd5589114138ed8fada3234deacc37966bec033d3047c29248b7" url: "https://pub.dev" source: hosted - version: "1.1.9+2" + version: "1.1.9+1" vector_graphics_compiler: dependency: transitive description: name: vector_graphics_compiler - sha256: "03012b0a33775c5530576b70240308080e1d5050f0faf000118c20e6463bc0ad" + sha256: d24333727332d9bd20990f1483af4e09abdb9b1fc7c3db940b56ab5c42790c26 url: "https://pub.dev" source: hosted - version: "1.1.9+2" + version: "1.1.9+1" vector_math: dependency: transitive description: @@ -2135,10 +2135,10 @@ packages: dependency: "direct main" description: name: vibration - sha256: "778ace40e84852e6cf6017cdbaf6790a837d73ff3dd50b27da9ac232a19de8fc" + sha256: "63d4f6b03e38d106599da18e786d5edcd02354433a4ed478fccbbcfc347193ab" url: "https://pub.dev" source: hosted - version: "1.8.4" + version: "1.8.3" video_compress: dependency: "direct main" description: @@ -2151,42 +2151,42 @@ packages: dependency: "direct main" description: name: video_player - sha256: fbf28ce8bcfe709ad91b5789166c832cb7a684d14f571a81891858fefb5bb1c2 + sha256: e16f0a83601a78d165dabc17e4dac50997604eb9e4cc76e10fa219046b70cef3 url: "https://pub.dev" source: hosted - version: "2.8.2" + version: "2.8.1" video_player_android: dependency: transitive description: name: video_player_android - sha256: "7f8f25d7ad56819a82b2948357f3c3af071f6a678db33833b26ec36bbc221316" + sha256: "3fe89ab07fdbce786e7eb25b58532d6eaf189ceddc091cb66cba712f8d9e8e55" url: "https://pub.dev" source: hosted - version: "2.4.11" + version: "2.4.10" video_player_avfoundation: dependency: transitive description: name: video_player_avfoundation - sha256: "309e3962795e761be010869bae65c0b0e45b5230c5cee1bec72197ca7db040ed" + sha256: bc923884640d6dc403050586eb40713cdb8d1d84e6886d8aca50ab04c59124c2 url: "https://pub.dev" source: hosted - version: "2.5.6" + version: "2.5.2" video_player_platform_interface: dependency: transitive description: name: video_player_platform_interface - sha256: "236454725fafcacf98f0f39af0d7c7ab2ce84762e3b63f2cbb3ef9a7e0550bc6" + sha256: be72301bf2c0150ab35a8c34d66e5a99de525f6de1e8d27c0672b836fe48f73a url: "https://pub.dev" source: hosted - version: "6.2.2" + version: "6.2.1" video_player_web: dependency: transitive description: name: video_player_web - sha256: "34beb3a07d4331a24f7e7b2f75b8e2b103289038e07e65529699a671b6a6e2cb" + sha256: ab7a462b07d9ca80bed579e30fb3bce372468f1b78642e0911b10600f2c5cb5b url: "https://pub.dev" source: hosted - version: "2.1.3" + version: "2.1.2" visibility_detector: dependency: transitive description: @@ -2215,10 +2215,10 @@ packages: dependency: "direct main" description: name: wakelock_plus - sha256: f268ca2116db22e57577fb99d52515a24bdc1d570f12ac18bb762361d43b043d + sha256: f45a6c03aa3f8322e0a9d7f4a0482721c8789cb41d555407367650b8f9c26018 url: "https://pub.dev" source: hosted - version: "1.1.4" + version: "1.1.3" wakelock_plus_platform_interface: dependency: transitive description: @@ -2272,10 +2272,10 @@ packages: dependency: transitive description: name: win32 - sha256: "464f5674532865248444b4c3daca12bd9bf2d7c47f759ce2617986e7229494a8" + sha256: "7c99c0e1e2fa190b48d25c81ca5e42036d5cac81430ef249027d97b0935c553f" url: "https://pub.dev" source: hosted - version: "5.2.0" + version: "5.1.0" win32_registry: dependency: transitive description: @@ -2304,18 +2304,18 @@ packages: dependency: transitive description: name: xdg_directories - sha256: faea9dee56b520b55a566385b84f2e8de55e7496104adada9962e0bd11bcff1d + sha256: "589ada45ba9e39405c198fe34eb0f607cddb2108527e658136120892beac46d2" url: "https://pub.dev" source: hosted - version: "1.0.4" + version: "1.0.3" xml: dependency: transitive description: name: xml - sha256: b015a8ad1c488f66851d762d3090a21c600e479dc75e68328c52774040cf9226 + sha256: af5e77e9b83f2f4adc5d3f0a4ece1c7f45a2467b695c2540381bac793e34e556 url: "https://pub.dev" source: hosted - version: "6.5.0" + version: "6.4.2" yaml: dependency: transitive description: From ee64dc14f2f778a0dbacf83ae7f32d05a1dbc879 Mon Sep 17 00:00:00 2001 From: td Date: Sun, 4 Feb 2024 03:09:45 +0100 Subject: [PATCH 29/29] chore: disable cache for build_web --- .github/workflows/integrate.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/integrate.yaml b/.github/workflows/integrate.yaml index cda849f728..3138775f9e 100644 --- a/.github/workflows/integrate.yaml +++ b/.github/workflows/integrate.yaml @@ -50,7 +50,7 @@ jobs: - uses: subosito/flutter-action@v2 with: flutter-version: ${{ env.FLUTTER_VERSION }} - cache: true + cache: false - name: Install dependencies run: sudo apt-get update && sudo apt-get install nodejs -y - name: Remove Emoji Font